为 Ubuntu 加载新硬盘

Thanks for: http://www.111cn.net/sys/Ubuntu/73675.htm
用 vagrant 本地虚拟了一个 Ubuntu,想把数据放到单独的磁盘里,查阅资料,下面把日志记录下来。

虚拟机里的新加磁盘类型是 VMDK ,动态分配大小,大小20G。

运行:

vagrant up
vagrant ssh

进入虚拟机!

一、查询现有硬盘情况

运行: sudo fdisk -l

运行 ll -h /dev/sd* 测试linux系统是否能找到挂载的未分区硬盘:

得到:

brw-rw---- 1 root disk 8,  0  4月 19 05:15 /dev/sda
brw-rw---- 1 root disk 8,  1  4月 19 05:15 /dev/sda1
brw-rw---- 1 root disk 8, 16  4月 19 05:15 /dev/sdb

Linux 硬盘识别:

2.6 kernel以后,linux会将识别到的硬件设备,在/dev/下建立相应的设备文件.
如:
sda 表示第1块SCSI硬盘,第二块是sdb,以此类推
hda 表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上)
scd0 表示第1个USB光驱.
当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.cciss的硬盘是个例外,它的
设备文件在/dev/cciss/目录下.

二、挂载硬盘

1. 创建未被挂载的磁盘分区

fdisk /dev/sdb

此时会进入到 Command 的状态,大概是这么操作的:

  • 输入 m 查看帮助
  • 输入 p 查看 /dev/sdb 分区的状态
  • 输入 n 创建sdb这块硬盘的分区
    • p primary =>输入 p
    • Partition number =>分一个区所以输入 1
    • 其他的默认即可
  • 输入 w 保存并退出 Command 状态。

下面全是命令行下的操作过程:

# 查看帮助信息
Command (m for help): m
Command action

a toggle a bootable flag 将分区设置为启动区
b edit bsd disklabel 编辑bsd的disklabel
c toggle the dos compatibility flag 设置该分区为dos分区
d delete a partition 删除分区
l list known partition types 列出已知的分区类型
m print this menu 打印帮助列表
n add a new partition 创建新分区
o create a new empty DOS partition table
p print the partition table查看分区信息
q quit without saving changes 退出不保存
s create a new empty Sun disklabel
t change a partition's system id改变分区类型
u change display/entry units
v verify the partition table
w write table to disk and exit 保存退出
x extra functionality (experts only)

# 查看sdb这块硬盘的分区

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf74052cc

   Device Boot      Start         End      Blocks   Id  System


# 创建sdb这块硬盘的分区

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

#查看创建sdb硬盘的分区
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf74052cc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

#保存退出,分区创建结束
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

fdisk的操作告一段落,现在可以再用 sudo fdisk -l 查看硬盘信息就可以看到sdb1新分区了:

vagrant@vagrant-ubuntu-trusty-64:~$ sudo fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes
4 heads, 32 sectors/track, 655360 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000020ea

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    83886079    41942016   83  Linux

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
213 heads, 34 sectors/track, 5791 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf74052cc

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux

2. 格式化未被挂载的磁盘

sudo mkfs.ext3 /dev/sdb1

下面是具体过程:

vagrant@vagrant-ubuntu-trusty-64:~$ sudo mkfs.ext3 /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

3. 创建目录并挂载

sudo mkdir /data1
sudo mount /dev/sdb1 /data1

三、开机自动挂载

因为mount挂载在重启服务器后会失效,所以需要将分区信息写到/etc/fstab文件中让它永久挂载:

e2label /dev/hda6  先查看需要挂载硬盘分区的labl
/home
e2label /dev/hda6 home1  因为系统中已经有个/home的label了,所以这里要重新把/dev/hda6的label设置为home1
 vi /etc/fstab

在尾部加上

/dev/sdb1               /home                   ext3    defaults        0 0

表示把新的硬盘分区挂载到 /home 这个目录
在修改 /etc/fstab 文件后,运行 mount -a 命令验证一下配置是否正确,否则错误配置 fstab 文件导致系统无法正常启动。如果系统无法正常启动,则输入root密码进入修复模式,关键的一步是重新 mount /(mount -n -o remount,rw /) 。如果没有此步操作,则文件系统处于只读状态,导致不能修改配置文件并保存,修复存在的问题。

重启系统

四、其他可能会用到的命令

sudo vi /etc/fstab
sudo umount /data1 #卸载磁盘到/data1的映射
sudo dd if=/dev/zero of=/dev/sdb 填零/dev/sdb
cat /proc/mounts 查看映射信息