LVM通过修改/etc/lvm/lvm.conf的filter规则可精准控制设备扫描,规则按顺序匹配,以a|...|或r|...|开头并以|结尾,命中即终止;典型配置如filter=["a|/dev/mapper/mpath.|","a|/dev/sda|","r|/dev/sdc|","r|/dev/nvme0n1|","r|.|"],保存后需执行pvscan --cache刷新并用pvs验证。

在 LVM 中,通过修改 /etc/lvm/lvm.conf 的 filter 设置,可以精准控制哪些物理设备被 LVM 扫描和识别,从而避免误用本地盘、重复路径或多路径被动路径,防止 PV 冲突或启动异常。
理解 filter 规则语法
filter 是一个正则表达式列表,按顺序逐条匹配设备路径(如 /dev/sda、/dev/mapper/mpatha)。每条规则以 a|...|(accept)或 r|...|(reject)开头,末尾必须是竖线 |。匹配过程从上到下,一旦命中即停止判断。
-
a|/dev/mapper/mpath.*|:接受所有多路径设备(推荐优先放前面) -
a|/dev/sda|:仅接受系统盘sda(若 root 在 sda,需显式放行) -
r|/dev/sdb|:明确拒绝某块业务盘(如未用于 LVM 的 SSD) -
r|.*|:兜底拒绝其余所有设备(必须放在最后)
屏蔽特定物理盘的典型配置
假设你想屏蔽 /dev/sdc 和 /dev/nvme0n1,但保留 /dev/mapper/mpath* 和系统盘 /dev/sda:
- 编辑
/etc/lvm/lvm.conf,找到filter = [ ... ]行(默认可能是filter = [ "a/.*/" ]) - 替换为:
filter = ["a|/dev/mapper/mpath.*|", "a|/dev/sda|", "r|/dev/sdc|", "r|/dev/nvme0n1|", "r|.*|"] - 保存后执行
pvscan --cache刷新设备缓存,再用pvs验证是否已不显示被屏蔽的盘
使用持久标识符更稳妥(尤其对 NVMe 或动态设备名)
传统设备名(如 /dev/sdc)可能因插拔或重启变化,建议结合 WWID 或 UUID 做过滤:
- 先查目标盘的 WWID:
scsi_id -g -u -d /dev/sdc或ls -l /dev/disk/by-id/ - 在
filter中使用路径匹配,例如:a|/dev/disk/by-id/scsi-3600508b400105e2100009000004c0000| - 这样即使设备名变成
sdd,只要 WWID 不变,LVM 仍能稳定识别或屏蔽
验证与调试技巧
改完 filter 后务必验证,避免误拒关键设备导致无法启动:
- 运行
vgscan -vv查看详细扫描过程,确认哪些设备被 accept/reject - 检查
pvscan -d输出,确认 PV 是否正常发现 - 若系统盘被意外拒绝,会导致 root VG 无法激活——可临时加
rd.lvm=0进 rescue 模式修复 - 备份原
lvm.conf,改错后可快速回退

















