10.3. LVM 设备过滤器
Logical Volume Manager (LVM)设备过滤器是设备名称模式列表。您可以使用它来指定一组强制标准,系统可以使用它来评估设备,并将其视为可以有效地与 LVM 一起使用。LVM 设备过滤器可让您控制 LVM 可以使用哪个设备。这有助于防止意外数据丢失或未授权访问存储设备。
10.3.1. LVM 设备过滤器模式特征
LVM 设备过滤器的模式采用正则表达式的形式。正则表达式用一个字符分隔,前面是 a
表示接受,或 r
表示拒绝。匹配设备的列表中的第一个正则表达式决定了 LVM 接受还是拒绝(忽略)一个特定设备。然后,LVM 会在与设备路径匹配的列表中查找初始正则表达式。LVM 使用这个正则表达式来确定是否应该使用 a
结果批准该设备,或使用r
结果拒绝该设备。
如果单个设备有多个路径名称,LVM 会根据列出的顺序访问这些路径名称。在任何 r
模式之前,如果至少有一个路径名称与 a
模式匹配 ,则 LVM 会批准该设备。但是,如果 a
模式发现之前,所有路径名称都与 r
模式一致,则设备将被拒绝。
与模式不匹配的路径名称不会影响设备的批准状态。如果没有路径名称与设备的模式对应,则 LVM 仍然会批准该设备。
对于系统上的每个设备,udev
规则会生成多个符号链接。目录包含符号链接,如 /dev/disk/by-id/
、/dev/disk/by-uuid/
、/dev/disk/by-path/
,以确保系统上的每个设备都可以通过多个路径名称访问。
要拒绝过滤器中的设备,与该特定设备关联的所有路径名称必须与相应的拒绝 r
表达式匹配。但是,识别要拒绝的所有可能路径名称可能会是一个挑战。因此,最好创建专门接受某些路径,而拒绝所有其他路径的过滤器,使用一系列特定的 a
表达式,后跟一个拒绝所有其它任何东西的 r|.*|
表达式。
在过滤器中定义特定设备时,为该设备使用符号链接名称,而不是内核名称。设备的内核名称可能会改变,如 /dev/sda
,而某些符号链接名称不会改变,如 /dev/disk/by-id/wwn the
。
默认设备过滤器接受所有连接到系统的设备。理想的用户配置的设备过滤器接受一个或多个模式,并拒绝所有其他模式。例如,以 r|114|
结尾的模式列表。
您可以在 lvm.conf
文件的 devices/filter
和 devices/global_filter
配置字段中找到 LVM 设备过滤器配置。devices/filter
和 devices/global_filter
配置字段是等同的。
在 Red Hat Enterprise Linux 9 中,默认启用 /etc/lvm/devices/system.devices
文件。当禁用 system.devices
文件时,系统会自动启用 LVM 设备过滤器。
其他资源
-
在您的系统中的
lvm.conf (5)
手册页
10.3.2. LVM 设备过滤器配置示例
以下示例显示了过滤配置,以控制 LVM 扫描并稍后使用的设备。要在 lvm.conf
文件中配置设备过滤器,请参阅
在处理复制或克隆的 PV 时,您可能会遇到重复的物理卷(PV)警告。您可以设置过滤器来解决这个问题。请参阅 防止重复 PV 警告的 LVM 设备过滤器示例 中的过滤器配置示例。
要扫描所有设备,请输入:
filter = [ "a|.*|" ]
要删除
cdrom
设备,以避免在驱动器不包含介质时的延迟,请输入:filter = [ "r|^/dev/cdrom$|" ]
要添加所有循环设备并删除所有其他设备,请输入:
filter = [ "a|loop|", "r|.*|" ]
要添加所有循环和 SCSI 设备,并删除所有其他块设备,请输入:
filter = [ "a|loop|", "a|/dev/sd.*|", "r|.*|" ]
要只在第一个 SCSI 驱动器上添加分区 8 ,并删除所有其他块设备,请输入:
filter = [ "a|^/dev/sda8$|", "r|.*|" ]
要从 WWID 标识的特定设备和所有多路径设备添加所有分区,请输入:
filter = [ "a|/dev/disk/by-id/<disk-id>.|", "a|/dev/mapper/mpath.|", "r|.*|" ]
命令还会删除任何其他块设备。
其他资源
-
在您的系统中的
lvm.conf (5)
手册页
10.3.3. 应用 LVM 设备过滤器配置
您可以通过在 lvm.conf
配置文件中设置过滤器来控制 LVM 扫描哪个设备。
先决条件
-
您已禁用了
system.devices
文件功能。 - 您已准备了要使用的设备过滤器模式。
流程
使用以下命令来测试设备过滤器模式,而不是实际修改
/etc/lvm/lvm.conf
文件。以下包括一个示例过滤器配置。# lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
在
/etc/lvm/lvm.conf
文件的配置部分devices
中添加设备过滤器模式:filter = [ "a|/dev/emcpower.*|", "r|*.|" ]
在重启时仅扫描所需的设备:
# dracut --force --verbose
这个命令重建
initramfs
文件系统,以便 LVM 在重启时只扫描必要的设备。