如何对硬盘进行扩容?

硬盘有 disk size 和 partition size 两个概念。通过新智云控制台或 API 扩容只是扩大了硬盘的物理空间,即 disk size 。 在加载到主机后还需要手动扩大 partition size。


有很多工具可以做到调整分区大小、而不损坏数据,比如 Windows 上有 pqmagic, Linux 上也有这样的工具,如 parted,fdisk,图形界面下可以用 gparted, 命令行下,得看您的分区是什么文件系统,如果是 ext2/ext3/ext4 的话,就用 resize2fs 来扩容。


警告 建议在扩容前先对硬盘做一次备份,万一操作失误还可以回滚。 如果硬盘容量大于1TB,不要用 fdisk,可使用 parted 工具进行分区。

下面以 CentOS Linux 为例,假设主机上已挂载一块 10GB 的硬盘,分区为 “/dev/sdc1” (有些磁盘的分区可能是 /dev/vd*),文件系统格式为 “ext3”,挂载位置是 “/mnt/sdc”,现在需要扩容到 20GB 。步骤如下 (需要 root 权限):


[第一步] 先在主机内部卸载硬盘:


umount /mnt/sdc

[第二步] 在控制台将硬盘从主机解绑,点右键将硬盘进行扩容后再重新绑定到主机。


[第三步] 开始扩大分区:


使用 fdisk 扩大分区


通过 “fdisk -l” 查看硬盘分区号,假设还是 “/dev/sdc1”,你的显示内容可能有些区别,比如units是sector而不是下面显示的cylinder。


# 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)要牢记, 后面重新分区时要用到。

我们开始对 sdc 重新分区(不会损失数据):


# fdisk /dev/sdc

输入 d 删除 sdc1 分区,之后依次输入 n, p, 1 建立新分区。在输入新分区起始磁柱(First cylinder)或者是起始扇区(First sector)时,依然选择之前的数字 1024 ,这样可以防止数据丢失。设定好后输入 wq 使分区表生效。


使用 parted 扩大分区


通过 “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)要牢记, 后面重新分区时要用到。

我们开始对 sdc 重新分区(不会损失数据):


# 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” 指令即可查看扩容后的分区大小。


您的联系方式发送成功

我们会尽快给您回电