我正在设置具有大量磁盘的 ZFS 存储系统。我想使用 WWN 编号来识别设备(在 vdev_id.conf 中具有别名),但是在尝试获取 WWN 编号时,我注意到 LSI 控制器报告的 WWN 之间的转换(LSI MegaRAID SAS 9380-8e,所有磁盘都在 JBOD 中模式)和 /dev/disk/by-id 中显示的 WWN:
$ storcli64 /c0/e72/s0 show all | grep 5008472696
WWN = 5000C5008472696C
0 Active 6.0Gb/s 0x5000c5008472696d
1 Active 6.0Gb/s 0x5000c5008472696e
$ ll /dev/disk/by-id/wwn-0x* | grep 5008472696
/dev/disk/by-id/wwn-0x5000c5008472696f -> ../../sdn
在这组硬件(磁盘、JBOD、控制器)上,模式似乎是一致的(移动了 3 个)。
我有一种“感觉”,这是由双链接引起的,但我找不到这种行为的合适解释。任何建议将不胜感激。
编辑:
另一个样本是
WWN = 5000C50084726B78
0 Active 6.0Gb/s 0x5000c50084726b79
1 Active 6.0Gb/s 0x5000c50084726b7a
控制器报告0x5000c50084726b7b
,这与 Matthew 给出的建议解释一致。
您拥有正在使用的双端口 SAS 驱动器的传输地址和单独的端口标识符(多路径)。一个 WWN,多个端口标识符。
一个更好的例子是检查以下输出:
multipath -l
,lsscsi --wwn
和lsscsi --transport
喜欢:
出于您的目的,请使用 WWN。如果这是 ZFS,请详细说明您的控制器和 JBOD 解决方案。如果是 Linux,您应该使用 DM Multipath 并使用 DM 设备构建池。另见:https ://github.com/ewwhite/zfs-ha/wiki
这纯粹是对您的一个条目的观察,但是
每个系统如何计算 WWN 的按位运算可能有所不同。
你还有其他例子吗?
如果这是正确的(我只是在猜测),我只能假设不存在标准方法,并且 raid 控制器和内核实现都选择不同的方法。
为了完善其他答案,每个 SAS 驱动器都有一个 LUN (LUN 0) 和四个地址:
0x5000c5008472696c
)0x5000c5008472696d
)0x5000c5008472696e
)0x5000c5008472696f
)尽管所有四个地址都指向同一个驱动器,但 LUN 0 地址是 Linux 显示为 WWN 的地址。它是最便携的,而且——正如 ewwhite 所说——你应该在 ZFS 中使用它。
(h/t对 r/zfs 的评论,这帮助我理解了它)