Libvirt 没有看到更新的 LVM 卷

Libvirt 没有看到更新的 LVM 卷

所有虚拟机均在 LVM 池中运行。

我调整了其中一个 LVM 卷的大小以增加虚拟机驱动器容量。像lvextend往常一样调整了它的大小。一切都成功并lvs显示新的大小。

但是 Libvirt 看不到新的大小。我尝试刷新 - 没有成功。它仍然显示旧容量。

在卷上运行virsh vol-info会在容量条目中显示旧大小,在分配条目中显示新大小。为什么会这样?以前从来没有这样过。增加 LVM 卷会传播并在刷新后可见。

现在,将新大小添加到虚拟机的唯一方法是重新启动,这是不可能的。我怎样才能使新大小可见?

编辑

操作系统:Arch Libvirt:1.3.0 Qemu:2.4.1

重新启动 libvirt 服务也无济于事。卷在 libvirt 中仍然显示旧大小。

lvs

...      
  sswus00-vd0     vga  -wi-a----- 200.00g
...

virsh vol-info --pool pool sswus00-vd0

Name:           sswus00-vd0
Type:           block
Capacity:       100.00 GiB
Allocation:     200.00 GiB

因此容量仍为原有的大小,这就是 VM 所获得的。

编辑2

这真是很奇怪。

lsblk显示此 lvm 卷的旧磁盘大小 - 100G 但lvs显示新大小 - 200g

逻辑卷组的后端是 iSCSI。因此,我认为重新扫描 scsi 总线可能会有所帮助。

两者都不echo "- - -" > echo "- - -" > /sys/devices/platform/host2/scsi_host/host2/scan

或者iscsiadm -m node -R

有任何区别

有什么想法吗?我该如何让内核知道新的大小?最重要的是它为什么这样做?

答案1

您可以向虚拟机的 qemu 进程发送 qemu 监控命令,使其识别块设备的新大小。例如:

virsh qemu-monitor-command vmname --hmp "block_resize drive/virtio-disk0 200G"

请注意,这drive/virtio-disk0指的是 qemu 对驱动器的看法,这将根据所使用的驱动程序(例如 virtio 或 virtio-scsi)以及按顺序排列的虚拟驱动器而有所不同(0 将更改为 1、2 等)。对于 SCSI 驱动器,您将看到类似这样的内容,drive-scsi0-0-0-0其中数字指的是 libvirt XML 中定义的虚拟控制器、总线、目标和 LUN。

相关内容