Eil*_*Eil 15 linux hard-drive lvm kvm-virtualization
我们正在一些项目中评估用于 Linux 虚拟化的 KVM。到目前为止一切进展顺利。但我们的要求之一是能够为正在运行的来宾添加磁盘空间而无需重新启动或使其脱机。这可以用 KVM 实现吗?
到目前为止,我唯一发现的(但尚未测试)是能够将磁盘热插拔到机器中。如果我走这条路,那么我总是可以将新磁盘添加到来宾上的 LVM 卷组,然后扩展所选的逻辑卷。这种方法的最大缺点是,随着时间的推移,我们最终可能会导致客户拥有可变数量的虚拟磁盘。“真正的”磁盘空间将通过 SAN 提供给主机,因此我们可以随时向主机添加更多空间。
小智 19
我知道这是一个老问题,但我在谷歌搜索解决方案时找到了它,希望它可以帮助其他人。
至于今天,它是可以调整机器上的硬盘驱动器。我在这里找到了一种工作方式:
https://bugzilla.redhat.com/show_bug.cgi?id=648594
必须执行以下步骤:
找出要调整大小的硬盘驱动器的文件名和 KVM 设备名称:
root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
Found 2 nodes in stdin:
-- NODE --
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" />
<source file="/data/test.img" />
<backingStore />
<target dev="vda" bus="virtio" />
<alias name="virtio-disk0" />
<address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
</disk>
-- NODE --
<disk type="file" device="cdrom">
<driver name="qemu" type="raw" />
<source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
<backingStore />
<target dev="hda" bus="ide" />
<readonly />
<alias name="ide0-1-1" />
<address type="drive" controller="0" bus="1" target="0" unit="1" />
</disk>
Run Code Online (Sandbox Code Playgroud)对我们来说有趣的是磁盘。你应该寻找source并alias阻止。对我来说文件名是test.img,别名是virtio-disk0. 对于此名称,您需要预先drive-获取 qemu 驱动器名称。
现在我们实际上使用 qemu monitor 调整驱动器的大小:
virsh qemu-monitor-command test block_resize drive-virtio-disk0 100G --hmp
Run Code Online (Sandbox Code Playgroud)请注意,使用的文件名没有 .img 扩展名,并且驱动器 - 被添加到磁盘别名。100G 是我们想要的驱动器的最终大小
登录机器并检查实际尺寸是否已更改:
root@test:~# fdisk -l
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 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
Disklabel type: dos
Disk identifier: 0x7e6e7f71
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 499711 497664 243M 83 Linux
/dev/vda2 501758 167770111 167268354 79.8G 5 Extended
/dev/vda5 501760 167770111 167268352 79.8G 8e Linux LVM
Run Code Online (Sandbox Code Playgroud)就是这样!现在您可以创建新分区或调整现有分区的大小。
我认为如果你想在不关闭机器的情况下完成你提到的事情,你就会被困住。
为什么不直接为虚拟机提供 SAN 的 LUN 并管理那里的空间呢?如果您无论如何都想使用实时迁移等功能,那么这会更有效。
KVM 基于 QEMU,因此它的所有图像格式支持都来自该项目。这里有一个很好的方法来调整Qemu/KVM 支持的各种格式的大小。但如果您在这里没有得到任何可靠的答案,Qemu 论坛将是一个提出这个问题的好地方。
另一个可能不理想的选择是为驱动器使用非常大的 qcow2 或其他稀疏映像格式。因此,您可以为每台机器提供一个用于操作系统的小型驱动器和一个用于 LVM 下数据的大型稀疏映像。这至少会保留您必须管理的虚拟驱动器/映像的数量。但是,如果您对 1000 台机器执行此操作,并且每个人都占用您看到的可用空间,则这种精简配置可能会出现问题。
我认为 XEN 目前也有同样的限制。