我的服务器是hp刀片(x64)上的Oracle Enterprise Linux 5.4(RHEL5),qlogic HBA连接到EMC clariion SAN。
我们正从多path转移到powerpath,因为emc和公司存储团队不会支持多path。
目前,我的3个lvm卷组正在使用设备映射器/多path创build的/ dev / dm-X设备:
(实验1)我closuresmultipathd并在检查configuration中禁用它,然后将以下filter添加到lvm.conf 。
filter = [ "a|/dev/emc.*|", "a|/dev/cciss.*|", "r/.*/" ]
当我重新启动时:
vg01在其emcpower磁盘上未被检测到,尽pipe我可以在dd上看到lvm头文件。 其他两个VG检测得很好。 所有的dm-X设备仍然在/ dev /中。
(2)所以我删除filter,并启用multipath.conf的所有黑名单:
blacklist { devnode "*" }
现在在重新启动时,在/ dev /中没有更多的dm-X设备,并且在emcpower设备上find了vg02和vg03,但vg01仍然无法检测到。
(3)我重新启动filter和黑名单,结果是vg01是无法检测,但vg02和vg03罚款。
任何人都可以帮我找出为什么这个卷组似乎没有设备映射/多path检测不到?
有人可以解释一下lvm,device-mapper和multipath之间的关系是什么?
我目前无法使用EMC设备来validation这一点,但是我必须在以前的几个工作中进行设置。 如果我没有记错的话,你必须使用这个过滤行:filter = [“r / sd。/”,“a /。/”]这将删除所有sd设备(sda,sdb等) 当然,如果你从一个显示为/ dev / sda的内部磁盘启动,那么你必须指定:filter = [“r / sd [bz]。/ ”,“a /。/”]类似。
编辑:我在我的旧笔记中find一个configuration行(我认为这是用于RHEL 4,但应该仍然工作); 此filter适用于从内部RAID控制器(cciss)启动的HP服务器,并且具有用于数据驱动器的Powerpath:
filter = [ "a|^/dev/cciss/.*|", "a|^/dev/emcpower.*|", "a|^/dev/loop.*|", "r /.*/" ]
所以这接受西西设备,emcpower,任何回送设备,并拒绝其他一切(正则expression式规则在这里适用)。
要回答您的问题的最后一部分,LVM执行扫描时,会在/ proc / partitions中查找与其接受/拒绝filter匹配的任何设备,并扫描这些块设备的LVM标头。 它为特定的LVM卷头find的第一个块设备是使用的那个块设备。 现在使用SAN,/ dev / sda和/ dev / sdg(例如)都映射到相同的数据,而/ dev / emcpowera(“powermt display all”命令也会给出适当的映射)。 希望这有助于。