Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.5. 使用过滤器控制 LVM 设备扫描

在启动时,会运行 vgscan 命令扫描系统上的块设备查找 LVM 标签,以确定哪些是物理卷,读取元数据并构建卷组列表。物理卷的名称存储在系统中每个节点的 LVM 缓存文件中,即 /etc/lvm/cache/.cache。后续命令可以读取该文件以避免重新扫描。
您可以通过在 lvm.conf 配置文件中设置过滤器来控制 LVM 扫描哪些设备。lvm.conf 文件中的过滤器由一系列简单的正则表达式组成,这些表达式应用到 /dev 目录中的设备名称,以决定是否接受或拒绝找到的每个块设备。
下面的例子显示使用过滤器控制 LVM 扫描设备的过滤器。请注意,其中一些示例不一定代表推荐的做法,因为正则表达式可以自由匹配完整的路径名。例如,a/loop/ 等同于 a/ normalloop mdadm/,并匹配 /dev/solooperation/lvol1
下面的过滤器会添加所有发现的设备,这是默认行为,因为配置文件中没有配置过滤器:
filter = [ "a/.*/" ]
以下过滤器删除了 cdrom 设备,以避免在驱动器没有介质时的延迟:
filter = [ "r|/dev/cdrom|" ]
下面的过滤器添加了所有 loop,并删除了所有其他块设备:
filter = [ "a/loop.*/", "r/.*/" ]
下面的过滤器添加了所有 loop 和 IDE,并删除了所有其他块设备:
filter =[ "a|loop.*|", "a|/dev/hd.*|", "r|.*|" ]
下面的过滤器只添加第一个 IDE 驱动器中的分区 8,同时删除所有其它块设备:
filter = [ "a|^/dev/hda8$|", "r/.*/" ]
注意
lvmetad 守护进程运行时,/etc/lvm/lvm.conf 文件中的 filter = 设置不会在执行 pvscan --cache device 命令时应用。要过滤设备,您需要使用 global_filter = 设置。未通过全局筛选,且不会被 LVM 打开的设备,永远不会被扫描。例如,您可能需要使用全局过滤器,例如,当在虚拟机中使用 LVM 设备,且您不希望虚拟机中设备的内容被物理主机扫描时。
有关 lvm.conf 文件的详情,请参考 附录 B, LVM 配置文件lvm.conf(5) man page。