Red Hat Training

A Red Hat training course is available for RHEL 8

17.14. 对多路径 LVM 设备进行重复的物理卷警告进行故障排除

当将 LVM 与多路径存储搭配使用时,列出卷组或者逻辑卷的 LVM 命令可能会显示如下信息:

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/dm-5 not /dev/sdd
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowerb not /dev/sde
Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sddlmab not /dev/sdf

您可以排除这些警告来了解 LVM 显示它们的原因,或者隐藏警告信息。

17.14.1. 重复 PV 警告的根本原因

当设备映射器多路径(DM 多路径)、EMC PowerPath 或 Hitachi Dynamic Link Manager (HDLM)等多路径软件管理系统上的存储设备时,每个路径都会作为不同的 SCSI 设备注册。

然后多路径软件会创建一个映射到这些独立路径的新设备。因为每个 LUN 在 /dev 目录中有多个指向同一底层数据的设备节点,所以所有设备节点都包含相同的 LVM 元数据。

表 17.1. 不同多路径软件的设备映射示例

多路径软件到 LUN 的 SCSI 路径多路径设备映射到路径

DM Multipath

/dev/sdb/dev/sdc

/dev/mapper/mpath1/dev/mapper/mpatha

EMC PowerPath

/dev/emcpowera

HDLM

/dev/sddlmab

由于多个设备节点,LVM 工具会多次查找相同的元数据,并将其作为重复报告。

17.14.2. 重复 PV 警告的情况

LVM 在以下任一情况下显示重复的 PV 警告:

指向同一设备的单路径

输出中显示的两个设备都是指向同一设备的单一路径。

以下示例显示一个重复的 PV 警告,在该示例中重复的设备是同一设备的单一路径。

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/sdd not /dev/sdf

如果您使用 multipath -ll 命令列出当前的 DM 多路径拓扑,您可以在相同的多路径映射中找到 /dev/sdd/dev/sdf

这些重复的信息只是警告,并不意味着 LVM 操作失败。相反,它们会提醒您 LVM 只使用其中一个设备作为物理卷,并忽略其它设备。

如果消息表示 LVM 选择了不正确的设备,或者警告是否对用户造成破坏,您可以应用过滤器。过滤器将 LVM 配置为只搜索物理卷所需的设备,并将任何基本路径留给多路径设备。因此,不再会出现警告。

多路径映射

输出中显示的两个设备都是多路径映射。

以下示例显示两个设备都有重复的 PV 警告,它们是多路径映射。重复的物理卷位于两个不同的设备中,而不是位于同一设备的两个不同路径中。

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/mapper/mpatha not /dev/mapper/mpathc

Found duplicate PV GDjTZf7Y03GJHjteqOwrye2dcSCjdaUi: using /dev/emcpowera not /dev/emcpowerh

对于同一设备上的单一路径的设备来说,这种情形比重复的警告更为严重。这些警告通常意味着机器正在访问它不应该访问的设备:例如: LUN 克隆或镜像(mirror)。

除非您明确知道您应该从机器中删除哪些设备,否则这个情况可能无法恢复。红帽建议联系红帽技术支持来解决这个问题。

17.14.3. 防止重复 PV 警告的 LVM 设备过滤器示例

以下示例显示 LVM 设备过滤器,它避免了由单一逻辑单元(LUN)由多个存储路径导致的重复物理卷警告。

您可以为逻辑卷管理器(LVM)配置过滤器来检查所有设备的元数据。元数据包括其上有根卷组的本地硬盘,以及任何多路径设备。通过拒绝到多路径设备的底层路径(如 /dev/sdb/dev/sdd),您可以避免这些重复的 PV 警告,因为 LVM 在多路径设备上只查找每个唯一元数据区域一次。

  • 要接受第一块硬盘上的第二个分区以及任何设备映射器(DM)多路径设备,并拒绝任何其它设备,请输入:

    filter = [ "a|/dev/sda2$|", "a|/dev/mapper/mpath.*|", "r|.*|" ]
  • 要接受所有 HP SmartArray 控制器和任何 EMC PowerPath 设备,请输入:

    filter = [ "a|/dev/cciss/.*|", "a|/dev/emcpower.*|", "r|.*|" ]
  • 要接受第一个 IDE 驱动器上的任何分区,以及任何多路径设备,请输入:

    filter = [ "a|/dev/hda.*|", "a|/dev/mapper/mpath.*|", "r|.*|" ]

17.14.4. 其他资源