我们有几十个 Ubuntu 节点,我必须将硬盘驱动器调整为不同的大小。目前,我正在手动执行以下所有步骤:
- 增加 VMware vCenter 中每个节点的虚拟硬盘的大小。
- 更改 DVD 驱动器的配置,挂载 GParted ISO,从 BIOS 启动,并更改启动顺序。
- 启动进入 GParted,手动增加
/dev/sda2
和/dev/sda5
。 - 停止虚拟机,禁用 DVD 驱动器,然后启动虚拟机。
- 用于
lvextend -r /dev/ubuntu/root /dev/sda5
扩展 LVM 并将分区大小调整为最大可能大小。 - 选修的:检查
df -h
一切是否正常。
我希望能够自动完成这个过程,最好是提供节点名称和相应大小的列表,然后让工具完成它的工作。如果没有可用的自动化解决方案,我希望了解每个步骤的微优化,以便让我繁琐的工作变得更轻松。
我们已经使用 Chef 自动配置我们的节点以及硬盘大小为 16 GB 的 VM 模板。
有什么好主意吗?
答案1
无需重新启动或执行繁琐的 DVD 步骤即可完成...
首先,在 vCenter/vSphere 级别扩展磁盘。您知道如何操作。它也可以自动化或编写脚本。
显示您当前的块设备大小...
# fdisk -l
重新扫描虚拟机内的 SCSI 总线以了解新的驱动器大小。
# echo 1 > /sys/class/scsi_disk/0:0:0:0/device/rescan
(注意:磁盘标识符可能会有所不同,但往往与虚拟机的 SCSI 设备节点相对应. 你可能会看到0:0:0:0对于您正在处理的根卷。)
dmesg | tail
用或其他方式验证fdisk -l
继续你的 LVM 魔法......
这样就能解决一切问题了。
答案2
正如@ewwhite 所写,您需要重新扫描总线以使用有关新磁盘大小的信息来更新操作系统。
但接下来你需要做的是输入 fdisk,也许这违反直觉删除分区,这很重要重新创造一个新的,有相同的开始,但有新的结局保存分区表之前。
通过运行来更新分区信息partx /dev/sda[n]
最后,我们使用pvresize
、lvextend
和的适当实现*_growfs
来得到新的根文件系统大小。
与往常一样:除非您做错了什么,否则这不太可能破坏任何东西,但是在修改重要计算机上的分区信息之前,请务必进行工作备份。
(以下是该过程更详细的描述链接我不久前就这么做了。)