我们有两台类似的 SLES10SP2 服务器,它们都在同一存储阵列的同一设备上使用多路径。
在一台服务器上,/dev/disk/by-id/scsi-* 设备正确指向多路径设备:
server1:/dev/disk/by-id # ls -l scsi-* | awk '{print $9,$10,$11;}'
scsi-3600a0b80005047d80000050c4933f22c -> ../../dm-1
scsi-3600a0b80005047d80000050c4933f22c-part1 -> ../../dm-2
scsi-3600a0b80005047d80000050c4933f22c-part2 -> ../../dm-3
scsi-3600a0b80005047d80000b0a14dbb20e4 -> ../../dm-0
另一方面,/dev/disk/by-id/scsi-* 磁盘设备指向其中一条路径,而不是多路径 dm 设备:
server2:/dev/disk/by-id # ls -l scsi-* | awk '{print $9,$10,$11;}'
scsi-3600a0b80005047d80000a3464a07f6ee -> ../../dm-1
scsi-3600a0b8000505008000004f84933e183 -> ../../sda
scsi-3600a0b8000505008000004f84933e183-part1 -> ../../dm-4
scsi-3600a0b8000505008000004f84933e183-part2 -> ../../dm-5
scsi-3600a0b80005050080000057749352a81 -> ../../sdd
scsi-3600a0b80005050080000057749352a81-part1 -> ../../dm-6
scsi-3600a0b80005050080000a7cd4dbb2498 -> ../../sdg
这会导致问题,因为某些磁盘配置为使用整个磁盘作为 pv。
我们需要在 server2 上进行哪些更改才能让系统设置所有 scsi-* 链接指向多路径设备而不是单一路径?
答案1
来自文档:
在 SUSE Linux Enterprise Server 10 中,/etc/init.d/boot.multipath 中使用 kpartx 软件将符号链接添加到 multipath.conf 配置文件中任何新创建的分区的 /dev/dm-* 行,而无需重新启动。这会触发 udevd 填充 /dev/disk/by-* 符号链接。
所以,我会
- 检查第二台服务器上是否运行了 boot.multipath
- 检查两台服务器上的 udev 配置是否相同
- 检查udevd在第二台服务器上运行
如果所有这些都是真的,您可以尝试kpartx -a
在多路径设备上运行,以查看/dev/磁盘/按 ID/已更新。
理顺这些之后,你仍然需要编辑 lvm.conf。同样,从文档:
默认情况下,LVM2 不识别多路径设备。要使 LVM2 将多路径设备识别为可能的物理卷,您必须修改 /etc/lvm/lvm.conf。修改它很重要,以便它不扫描和使用物理路径,而只通过多路径 I/O 层访问多路径 I/O 存储。如果您使用用户友好的名称,请确保指定路径,以便它仅扫描设备的设备映射器名称(/dev/disk/by-id/dm-uuid-。-mpath-。) 配置多路径后。
答案2
事实证明,这是 SLES10SP2 中的一个已知问题。
这个问题在 SLES10SP3 中通过软件包得到修复udev-085-30.58.3.6.x86_64.rpm
。
答案3
我将设置过滤规则lvm.conf
filter =[ "a|/dev/dm|", "a|^/dev/sda2$|", "r|/dev/sd|"]
在此示例中,lvm 使用所有 /dev/md* /dev/sda2 并删除所有其他 /dev/sd* 设备。