首先,我是 Linux 的绝对新手,但我的任务是自动调整 RHEL 6.5 上的分区大小。该服务器作为虚拟机驻留在 VMWare 中,我们正在尝试协调一项活动,通过该活动扩展现有的 VMDK 文件并自动调整该 VMDK 上的分区大小。
作为测试用例,VMDK 在系统上显示为 /dev/sdb。其大小为 5GB。现在,我在其上有两个分区,/dev/sdb1、/dev/sdb2,sdb1 占用 1GB,sdb2 占用 5GB
如果有人现在将 VMDK 的大小从 5GB 增加到 10GB,并指定额外的空间应该分配给 /dev/sdb1,我该怎么做?到目前为止,我已经成功创建了一个过程,其中最后一个分区可以毫无问题地调整大小(即 /dev/sdb2),但由于起始和结束块号,任何先前的分区都无法调整大小。
我的过程如下:
1) 增加 VMDK 大小 2) 运行 echo "1" > /sys/class/scsi_device/0:0:0:0/device/rescan 以获取调整大小的驱动器 3) 使用 fdisk,删除分区并重新创建它
如果修改的分区是最后一个分区,则此方法可行,但如果是第一个或第二个分区,则分区将按原样重新创建。是否有某种工具可以智能地执行此操作?
这是我的环境中的 fdisk 输出:
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
67 heads, 62 sectors/track, 5048 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf3405e93
Device Boot Start End Blocks Id System
/dev/sdb1 1 510 1059239 83 Linux
/dev/sdb2 511 2524 4183078 83 Linux
如您所见,sdb1 占用 1GB,SDB2 占用 4GB,但磁盘上有大约 5GB 的“空闲”空间。现在,我该如何更改此设置,以便 sdb1 占用剩余空间?如果我删除 sdb1 并重新创建它,它会生成相同的分区。我可以轻松创建一个新分区来占用该空间,甚至可以更改 sdb2 以占用剩余空间(只需删除 sdb2 并使用 fdisk 重新创建它),但问题是我该如何修改 sdb1 以占用该空间?
希望我的问题清楚,提前谢谢
答案1
您可以将第二个分区 sdb2 移动到“磁盘”的末尾,然后重新创建第一个分区,到那时您将能够重新创建具有“完整”大小的第一个分区。
但是,根据您的文件系统,您不需要删除它,而是“仅”卸载它,然后resize2fs
在完成上述移动后执行(至少对于 ext2/3/4)。
此举本身可以通过 来完成parted
。
有关如何执行此操作,请参阅以下链接:
Parted 用户手册 gnu.org和linuxquestions.org
类似这样的方法可能会有效(你需要改变你的数字:
parted move 2 -125 -0
parted resize 1 0.063 -125
但是在 2.4 版本之后parted
不再包含,move
所以你可能需要另一个工具(或者它被重命名为我没有找到的另一个函数)
引用 gnu.org 的手册
注意,在 2.4 版本之后,以下命令被删除:check、cp、mkfs、mkpartfs、move、resize。
答案2
我能体会你的痛苦,我也是 Linux 新手,所以我理解你的痛苦。LVM 是可行的方法,它们可以轻松扩展。如果您已注册 Red Hat,则可以安装 GUI(yum -y install system-config-lvm)。安装后,在 CMD 行上运行“system-config-lvm”,这将启动 GUI,然后您可以查看各种磁盘/分区并进行更改,或者在命令行上,您必须经历三个步骤。所以我只使用 GUI,它快速而简单。希望这能有所帮助