我正在使用 QEMU/KVM 运行 libvirt,并且我在 LVM 逻辑卷中有 VM 的磁盘映像。当然,许多来宾 VM 也将 LVM 用于其磁盘。
我partprobe
在我的虚拟机管理程序上运行,它检测到所有 VM 来宾分区,所以现在 LVM 工具(pvs
、vgs
、lvs
等)列出了所有来宾的 LVM 实体以及主机的实体。
有没有办法从主机的知识中删除所有这些 LVM 物理卷(当然,不影响来宾)?重新启动主机不是一种选择;其中一些虚拟机需要保持运行。
万一它有帮助,这就是LVM层的样子,或多或少:
/dev/sdb1 - host PV
|
vg_hostname_vms - host VG
|
+-lv_vm1 - host LV, used as a disk image for vm1
| +-part1 - vm1 boot partition
| +-part2 - vm1 PV
| |
| vg_vm1 - vm1 VG
| +-lv_root - vm1 LV - /
| +-lv_swap - vm1 LV - swap
|
+-lv_vm2 - host LV, used as a disk image for vm2
+-part1 - vm1 boot partition
+-part2 - vm2 PV
|
vg_vm2
+-lv_root - vm2 LV - /
+-lv_swap - vm2 LV - swap
+-lv_home - vm2 LV - /home
现在,当我运行时vgs
,这是我看到的:
VG #PV #LV #SN Attr VSize VFree
vg_hostname_vms 1 2 0 wz--n- 10.91t 9.53t
vg_vm1 1 2 0 wz--n- 9.76g 0
vg_vm2 1 3 0 wz--n- 97.16g 0
我只想查看主机的卷组(以及它的物理卷和逻辑卷)。
我在 Scientific Linux 6.5 主机上运行所有这些。来宾操作系统各不相同。
您应该在主机上设置一个 LVM 过滤器,以过滤掉检测到的不需要的 LVM 设备。这是官方文档的链接:
http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/lvm_filters.html
像
filter = [ "r|/dev/VM_related_VG/*|" ]
应该工作的东西您可以使用低级
dmsetup
命令摆脱来宾 PV。要删除与 vm1 磁盘映像上的分区 2 关联的设备,请运行:
这将导致 vm1 的 PV、VG 和 LV 从主机的 LVM 工具中消失。
我有一个类似的问题,并使用
devices
LVM 配置文件部分中定义的 LVM 过滤器解决了它/etc/lvm/lvm.conf
:在我的情况下,我想允许其设备路径名以
/dev/sd
或以开头的 PV,/dev/nvme
并最终拒绝所有其余的。为了确保过滤器始终适用,我使用
global_filter
了而不是。filter