67.12. 限制 LVM 设备可见性和用法


您可以通过控制 LVM 可扫描的设备来限制逻辑卷管理器(LVM)可用的设备。

要调整 LVM 设备扫描的配置,请编辑 /etc/lvm/lvm.conf 文件中的 LVM 设备过滤器设置。lvm.conf 文件中的过滤器由一系列简单的正则表达式组成。系统会将这些表达式应用于 /dev 目录中的每个设备名称,以确定是否接受或拒绝每个检测到的块设备。

67.12.1. LVM 过滤的持久性标识符

传统的 Linux 设备名称(如 /dev/sda )可能会在系统修改和重启过程中改变。持久性命名属性(PNA),如全球识别符(WWID)、通用唯一标识符(UUID))和路径名称都基于存储设备的唯一特征,并对硬件配置中的更改有弹性。这使得它们在系统重启后更稳定和可预测。

在 LVM 过滤中持久设备标识符的实现可增强 LVM 配置的稳定性和可靠性。它还降低了与设备名称的动态性质关联的系统引导失败的风险。

67.12.2. LVM 设备过滤器

Logical Volume Manager (LVM)设备过滤器是设备名称模式列表。您可以用它来指定系统可以评估设备的一组强制标准,并将其视为可以有效地与 LVM 一起使用。LVM 设备过滤器可让您控制 LVM 使用哪个设备。这有助于防止意外数据丢失或未授权访问存储设备。

67.12.2.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-*

默认设备过滤器接受所有连接到系统的设备。理想的用户配置的设备过滤器接受一个或多个模式,并拒绝所有其他模式。例如,模式列表以 r|.*| 结尾。

您可以在 lvm.conf 文件的 devices/filterdevices/global_filter 配置字段中找到 LVM 设备过滤器配置。devices/filterdevices/global_filter 配置字段是等同的。

其它资源

  • 在您的系统中的 lvm.conf (5) 手册页

67.12.2.2. LVM 设备过滤器配置示例

以下示例显示了过滤配置,以控制 LVM 扫描并稍后使用的设备。要在 lvm.conf 文件中配置设备过滤器,请参阅

注意

在处理复制或克隆的 PV 时,您可能会遇到重复的物理卷(PV)警告。您可以设置过滤器来解决这个问题。请参阅 防止重复 PV 警告的 LVM 设备过滤器示例 中的过滤器配置示例。

  • 要扫描所有设备,请输入:

    filter = [ "a|.*|" ]
  • 要删除 cdrom 设备以避免驱动器中无介质时的延迟,请输入:

    filter = [ "r|^/dev/cdrom$|" ]
  • 要添加所有 loop 设备,并删除所有其他设备,请输入:

    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) 手册页

67.12.2.3. 应用 LVM 设备过滤器配置

您可以通过在 lvm.conf 配置文件中设置过滤器来控制 LVM 扫描哪个设备。

先决条件

  • 您已准备了要使用的设备过滤器模式。

流程

  1. 使用以下命令测试设备过滤器模式,而不实际修改 /etc/lvm/lvm.conf 文件。以下包括一个过滤器配置示例。

    # lvs --config 'devices{ filter = [ "a|/dev/emcpower.|", "r|.|" ] }'
  2. /etc/lvm/lvm.conf 文件的配置部分 devices 中添加设备过滤器模式:

    filter = [ "a|/dev/emcpower.*|", "r|*.|" ]
  3. 重启时只扫描所需的设备:

    # dracut --force --verbose

    这个命令重建 initramfs 文件系统,以便 LVM 在重启时只扫描必要的设备。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.