我怎样才能告诉 Linux 忽略已经发现的磁盘分区?

我怎样才能告诉 Linux 忽略已经发现的磁盘分区?

我正在使用 QEMU/KVM 运行 libvirt,并且我在 LVM 逻辑卷中拥有虚拟机的磁盘映像。当然,许多客户虚拟机也使用 LVM 作为其磁盘。

partprobe在我的虚拟机管理程序上运行它,它检测到了所有的 VM 客户分区,所以现在 LVM 工具(、、pvs等)列出了所有客户的 LVM 实体以及主机的 LVM 实体。vgslvs

有没有办法从主机中删除所有这些 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 主机上运行所有这些。客户操作系统各不相同。

答案1

您应该在主机上设置 LVM 过滤器,以过滤掉检测到的不需要的 LVM 设备。以下是官方文档的链接:

http://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/lvm_filters.html

类似filter = [ "r|/dev/VM_related_VG/*|" ]应该工作

答案2

您可以使用低级dmsetup命令摆脱客户 PV。

要删除与 vm1 磁盘映像上分区 2 关联的设备,请运行:

dmsetup remove /dev/mapper/vg_hostname_vms-lv_vm1p2

这会导致 vm1 的 PV、VG 和 LV 从主机的 LVM 工具中消失。

答案3

我遇到了类似的问题,并使用devicesLVM 配置文件部分中定义的 LVM 过滤器解决了该问题/etc/lvm/lvm.conf

global_filter = [ "a|^/dev/sd|", "a|^/dev/nvme|", "r|.*|" ]

就我而言,我想允许设备路径名以/dev/sd或开头的 PV /dev/nvme,并最终拒绝所有其余的。

我已经使用了global_filter而不是filter以确保过滤器始终适用。

相关内容