云服务器

加载硬盘了之后如何使用?

2017-09-08 14:30:57 0
  1. 如何分区格式化?

硬盘有 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"

  1. 如何自动挂载?

如果你需要在系统启动时自动挂载,不要在 /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

  1. 如何对硬盘进行扩容?

硬盘有 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

先删除 sdc1 分区

(parted) rm 1

建立新分区。起始位置(Start)依然选择之前的值: 1049k

(parted) mkpart primary 1049k -1

(parted) quit

分区扩大后我们还要通过 resize2fs 调整 sdc1 的文件系统大小

e2fsck -f /dev/sdc1

resize2fs /dev/sdc1

最后重新挂载硬盘:

mount -t ext3 -o barrier=1 /dev/sdc1 /mnt/sdc

这时通过 "df -h" 指令即可查看扩容后的分区大小

 

微信关注

获取更多技术咨询