KVM主机,添加LV到guest

KVM主机,添加LV到guest

我有一台带有软件 RAID 10 阵列的 KVM 主机。软件 RAID 10 阵列是主机上的一个 PV,并且有一个 VG。

我有几个在主机级别使用的 LV(KVM 来宾.img文件的数据存储)。

通常,当向来宾添加新磁盘时,我在主机上创建 LV,然后将其添加到来宾的配置中。然后pvcreate直接在块设备上(无分区),vgcreate以及lvcreatemkfs来宾内的新块设备上。

我之前没有费心对块设备进行分区,pvcreate因为在调整主机上的 LV 大小时,这少了一步。我意识到缺点是理论上某些系统可能会决定自动对未分区的块设备进行分区,因为它们无法识别 LVM 元数据,尽管我在实践中从未见过这种情况发生。

当调整主机上 LV 的大小时,PV 中的可用空间会被占用,我必须这样做vgextendlvextend并且resize2fs在来宾中也是如此。
我不认为有一种方法可以跳过在来宾中运行 LVM,然后只lvextend在主机上运行,​​然后resize2fs在来宾中运行?

答案1

我不认为有一种方法可以跳过在来宾中运行 LVM,而只在主机上进行 lvextend,然后在来宾中调整 size2fs?

绝对没有要求在 guest 虚拟机中使用 LVM。直接使用块设备即可。使用LVM里面来宾几乎无法为您带来任何好处(因为您已经在主机上使用 LVM 来管理您的空间)。

如果“KVM”指的是“libvirt”,那么在调整块设备大小后,您可以使用该virsh blockresize命令让您的客户机识别额外的空间。也就是说,如果我有一位带有附加 LV 的客人:

</disk><disk type="block" device="disk">
  <driver name="qemu" type="raw"/>
  <source dev="/dev/tank/foobar"/>
  <backingStore/>
  <target dev="vdb" bus="virtio"/>
  <alias name="virtio-disk1"/></disk>

在哪里:

# lvs
  foobar                                      tank           -wi-ao----   4.00g                                                              

我可以向主机上的 LV 添加空间:

# lvresize -L +2G /dev/tank/foobar

告诉 libvirt 更新大小:

# virsh blockresize myguest /dev/tank/foobar --size 0

然后在来宾内部,调整文件干的大小:

guest# resize2fs 1.42.12 (29-Aug-2014)
Resizing the filesystem on /dev/vdb to 1572864 (4k) blocks.
The filesystem on /dev/vdb is now 1572864 (4k) blocks long.

相关内容