加载硬盘了之后如何使用?
- 如何分区格式化?
硬盘有 disk size 和 partition size 两个概念。
如果你的硬盘是第一次加载的硬盘,就需要进行分区、格式化,和 mount 操作。如果是老硬盘,且没有扩容,就不用再分区、格式化了,直接 mount 就行。
警告:如果硬盘容量大于1TB,建议使用 parted 工具进行分区。
以 ubuntu linux 为例,以下操作需要 root 权限。第一步我们先为磁盘分区
通过 fdisk -l 命令查看挂载的硬盘,假设为 /dev/sdc
# fdisk -l
...
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders, total 20971520
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: 0x00000000
Disk /dev/sdc doesn't contain a valid partition table
对硬盘进行分区:
# fdisk /dev/sdc
然后根据提示,依次输入 n, p, 1, 以及两次回车,然后是 wq,完成保存。 这样再次通过 fdisk -l 查看时,你可以看到新建的分区/dev/sdc1
# fdisk -l...
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders, total 20971520
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: 0x17adb4cb
Device Boot Start End Blocks Id System
/dev/sdc1 2048 20971519 10484736 83 Linux
通过 parted -l 命令查看新挂载的硬盘,假设为 /dev/sdc
# parted -l
...
错误: /dev/sdc: unrecognised disk label
对硬盘进行分区:
# parted /dev/sdc
然后创建新分区:
(parted) mklabel gpt
(parted) mkpart primary 1049K -1
(parted) quit
这时再查看硬盘信息时会看到 /dev/sdc1
# parted -l
...
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdc: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 10.7GB 10.7GB primary
区后要进行格式化,例如格式化为 ext4 格式
# mkfs -t ext4 /dev/sdc1
最后挂载硬盘:
# mkdir -p /mnt/sdc && mount -t ext4 /dev/sdc1 /mnt/sdc
警告:为了防止宿主机在突然断电时可能对数据带来的风险,如果文件系统是ext3, 则需要在mount的时候显式的指定"barrier=1"选项,例如"mount -t ext3 -o barrier=1 /dev/sdc1 /mnt/point"
- 如何自动挂载?
如果你需要在系统启动时自动挂载,不要在 /etc/fstab 直接指定 /dev/sdc1 这样的写法, 因为在云中设备的顺序编码在关机、开机过程中可能发生改变,推荐使用 UUID 或者 LABEL 的方式来指定:
如果使用 UUID,则先通过 "blkid /dev/sdc1" 命令,得到磁盘的 UUID,例如:
/dev/sdc1: UUID="185dc58b-3f12-4e90-952e-7acfa3e0b6fb"
TYPE="ext4"
然后在 /etc/fstab 里面,加入:
UUID=185dc58b-3f12-4e90-952e-7acfa3e0b6fb /mnt/mydisk ext4
defaults 0 2
如果使用 LABEL,则在格式化硬盘时,需要指定 LABEL,例如:
mkfs -t ext4 -L MY_DISK_LABEL /dev/sdc1
然后在 /etc/fstab 里面,加入:
LABEL=MY_DISK_LABEL /mnt/mydisk ext4 defaults 0 2
- 如何对硬盘进行扩容?
硬盘有 disk size 和 partition size 两个概念。通过睿江云控制台或 API 扩容只是扩大了硬盘的物理空间,即 disk size 。 在加载到主机后还需要手动扩大 partition size。
有很多工具可以做到调整分区大小、而不损坏数据,比如 windows 上有 pqmagic, linux 上也有这样的工具,如 parted,fdisk,图形界面下可以用 gparted, 命令行下,得看您的分区是什么文件系统,如果是 ext2/ext3/ext4 的话,就用 resize2fs 来扩容。
警告:如果硬盘容量大于1TB,建议使用 parted 工具进行分区。
下面以 centos linux 为例,假设主机上已挂载一块 10GB 的硬盘,分区为 "/dev/sdc1" (有些磁盘的分区可能是 /dev/vd*),文件系统格式为 "ext3",挂载位置是 "/mnt/sdc",现在需要扩容到 20GB 。步骤如下 (需要 root 权限):先在主机内部卸载硬盘:
umount /mnt/sdc
之后在控制台将硬盘从主机解绑,将硬盘进行扩容后再重新绑定到主机。
下面开始扩大分区:
通过 "fdisk -l" 查看硬盘分区号,假设还是 "/dev/sdc1",
# fdisk -l
...
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x56250342
Device Boot Start End Blocks Id System
/dev/sdc1 1024 10240 9438208 83 Linux
这时可以看到 Disk /dev/sdc 的物理容量已是 20GB,不过 sdc1 还是原来的大小, 磁柱是从 1024 到 10240。
警告:其中的起始磁柱位置(Start 对应的数字,此例中是 1024)要牢记, 后面重新分区时要用到。
我们开始对 sdc1 重新分区(不会损失数据):
# fdisk /dev/sdc
输入 d 删除 sdc1 分区。之后依次输入 n, p, 1 建立新分区。在输入新分区起始磁柱(First cylinder)时,依然选择之前的数字 1024 ,这样可以防止数据丢失。设定好后输入 wq 使分区表生效。
通过 "parted -l" 查看硬盘分区号,假设还是 "/dev/sdc1",
# parted -l
...
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 1049kB 10.7GB 10.7GB ext3 primary
这时可以看到 Disk /dev/sdc 的物理容量已扩大,不过 sdc1 还是原来的大小,磁柱是从 1049k 到 10.7GB。
警告:其中的起始位置(Start 对应的值,此例中是 1049k)要牢记,后面重新分区时要用到。
我们开始对 sdc1 重新分区(不会损失数据):
# parted /dev/sdc
(parted) rm 1
(parted) mkpart primary 1049k -1
(parted) quit
e2fsck -f /dev/sdc1
resize2fs /dev/sdc1
mount -t ext3 -o barrier=1 /dev/sdc1 /mnt/sdc