我有一台 HP MSA P2000 FC,配有双控制器、双 HP SAN 交换机和几台带有 QLogic“基于 ISP2532”的 8G 双端口卡的服务器。所有设备都以“一对一”的方式连接。操作系统实际上是连接到集群的 Proxmox VE,所有这些都由 qla2xxx 驱动程序支持,每个节点都可以看到每个 HP 卷的 4 个副本。它们组合成多路径设备,用作虚拟机的 LVM PV。
这是一种相当直接的做事方式。我还配置了多路径,使其仅映射在 /etc/multipath.conf 中指定的设备,其他设备均被列入黑名单。如果没有这个,多路径会通过自身接触和映射本地 RAID,这不是很方便。
我现在需要做的是禁止系统使用原始组件作为 LVM PV,以防它未被映射。虽然 Red Hat 手册中介绍了这一点(这个至少),该手册对我来说并不适用。
我的 PVE 节点从本地 RAID 卡启动,该卡被视为 /dev/sda。它包含一个有效的 LVM 组,其中包含 pve 根卷、本地数据等。这意味着我无法过滤掉所有 /dev/sdX。我可以只启用 /dev/sda 并过滤掉所有其他,但我也不确定它是否会一直保留为 /dev/sda。还有一种可能性是其他本地设备似乎会托管私有 LVM PV,而且没人知道它们会有什么名字。
系统查看设备型号(multipath -ll 显示“HP,P2000 G3 FC”)。
问题是:是否可以根据 SCSI 设备在系统中的显示方式来过滤 LVM?理想的通用过滤器应该是这样的:允许 LVM 照常查看其 PV,但通过 QLogic 卡出现的设备除外,或者来自 HP MSA 阵列的设备除外,因为这些设备只能是多路径组件,并且只能在多路径映射时使用。如何实现这一点?