无需添加更多分区/磁盘即可“实时”扩展磁盘/卷

无需添加更多分区/磁盘即可“实时”扩展磁盘/卷

我们在工作中管理越来越多的基于 Linux(Ubuntu)的虚拟机,但我开始为一些简单的事情而苦恼,例如扩展现有虚拟机的磁盘,对于我们的 Windows 虚拟机来说,这实际上只需几秒钟即可完成(虚拟机属性->输入新大小->确定,然后 diskpart,重新扫描,sel vol 0,扩展,全部完成)。

但是当查看 Linux 下的选项时,似乎可以归结为以下解决方案之一,具体取决于您是否使用 LVM。

  1. LVM -> 添加新的虚拟磁盘,在磁盘上添加分区,使用新分区进行扩展

  2. LVM -> 增加现有磁盘,在现有磁盘上添加分区,使用新分区进行扩展。

  3. 启动 GParted LiveCD ISO 并执行以上操作,或者增加现有分区的大小。

我无法利用上述方法有几个原因:

  1. 你最终会得到一大堆额外的硬盘,而且 SCSI 设备的次要设备号似乎有 16 个限制(http://gparted.sourceforge.net/faq.php#faq-8)?,因此当你将磁盘增加 16 倍后,你就倒霉了。

  2. 与上面类似,如果不是 GPT,情况会更糟,那么假设磁盘上没有其他分区,我们只能扩展 3 次。

  3. 有些内容无法轻易脱机,因此无法重新启动到 Live CD。

当我们的公司政策阻止我们使用精简配置时,情况会变得更加糟糕,并且虚拟机存储在存储昂贵的所有闪存 SAN 阵列上,因此我们不能只添加 500GB 并完成它,我们必须将浪费的空间保持在最多 20-30GB。

我是否错过了其他选择?其他人在生产中如何处理这个问题?我们的大部分东西都在 Ubuntu 16.04 上(我们尝试保持当前 LTS 版本的更新),因此对于可以在其上工作的任何事物都持开放态度,我们目前正在使用 ext4,但这不是必需的,但日志文件系统是首选。

我一直在认真考虑是否要使用 NFS 和 NetAPP 或者类似的东西来管理我们的 Linux VM,因为目前我还没有其他的想法,所以只能把所有的东西都放到 nfs 挂载点上。

答案1

这是我在多次尝试后想到的办法,并在 ESXi 6.0 主机上使用运行带有 ext4 的 Ubuntu 16.04(不使用 LVM,也不尝试增加根磁盘,只是一个附加磁盘)的 VM 进行了测试。

只是扩展了虚拟机上的磁盘大小,没有执行任何操作,dmesg也没有提到发生了任何变化。

所以:

  1. echo 1 > /sys/class/scsi_device/2\0:0\0:/device/rescan

  2. dmesg 现在提到容量已从旧大小变为新大小

  3. 此时运行 resize2fs/parted/partprobe,仍然完全不知道添加了新磁盘,fdisk F 可以看到额外的空白空间,但无法真正将其添加到现有分区

  4. 运行fdisk并删除分区(是的,这需要发生),然后创建一个新的分区,它将选择适当的大小。

  5. 运行resize2fs以增大 ext4 文件系统。

我希望有一天 Linux 能获得适当的存储管理支持。在 2017 年,必须删除分区才能扩展磁盘大小真是太荒谬了。

答案2

这是我使用测试机器到目前为止得到的结果

  • 在后端即 vsphere hyperv 中扩展硬盘

  • 首先创建快照

  • 使用 fdisk 删除分区并创建一个新分区。确保为 LVM 使用 8e 系统 ID

  • pvresize /dev/sda2 --> 这是安装“/”的分区。

  • lvextend -l +100%免费 /dev/vg1/lv1

  • xfs_growfs /dev/vg1/lv1 --> 这是用于 XFS 文件系统的。如果适用,请使用 resize2fs

相关内容