我正在设置具有大量磁盘的 ZFS 存储系统。我想使用 WWN 编号来识别设备(在 vdev_id.conf 中别名),但在尝试获取 WWN 编号时,我注意到 LSI 控制器(LSI MegaRAID SAS 9380-8e,所有磁盘均处于 JBOD 模式)报告的 WWN 与 /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
,这与马修给出的建议解释一致。
答案1
对于您正在使用的双端口 SAS 驱动器(多路径),您有一个传输地址和单独的端口标识符。一个 WWN,多个端口标识符。
更好的例子是检查输出:
multipath -l
,lsscsi --wwn
和lsscsi --transport
喜欢:
# lsscsi --transport
[0:0:0:0] disk sas:0x5000c50023601236 /dev/sdb
[0:0:1:0] disk sas:0x5000c50023614aee /dev/sdc
[0:0:2:0] disk sas:0x5000c5007772e5fe /dev/sdd
[0:0:4:0] disk sas:0x5000c5002362f346 /dev/sdf
# lsscsi --wwn
[0:0:0:0] disk /dev/sdb
[0:0:1:0] disk 0x5000c50023614aef /dev/sdc
[0:0:2:0] disk /dev/sdd
[0:0:4:0] disk 0x5000c5002362f347 /dev/sdf
# multipath -ll | grep 3500
35000c50023614aef dm-6 HP ,EF0450FARMV
35000c5002362f347 dm-3 HP ,EF0450FARMV
就您的目的而言,请使用 WWN。如果这是 ZFS,请详细说明您的控制器和 JBOD 解决方案。如果是 Linux,您应该使用 DM Multipath 并使用 DM 设备构建池。另请参阅:https://github.com/ewwhite/zfs-ha/wiki
答案2
为了完善其他答案,每个 SAS 驱动器都有一个 LUN(LUN 0)和四个地址:
- 基准目标地址,可被四整除,通常作为 WWN 打印在驱动器标签上(例如
0x5000c5008472696c
) - baseline+1:第一个端口的地址(例如
0x5000c5008472696d
) - baseline+2:第二个端口的地址(例如
0x5000c5008472696e
) - 基线+3:LUN 0 地址(例如
0x5000c5008472696f
)
尽管所有四个地址都指向同一个驱动器,但 Linux 将 LUN 0 地址显示为 WWN。它是最可移植的,而且 — — 正如 ewwhite 所说 — — 您应该将它用于 ZFS。
(h/t至这对 r/zfs 的评论帮助我理解了这一点)
答案3
这仅仅是对你的一个条目的观察,但是
0x5000c5008472696d & 0x5000c5008472696e = 0x5000c5008472696c
0x5000c5008472696d | 0x5000c5008472696e = 0x5000c5008472696f
每个系统计算 WWN 的位运算方式可能有所不同。
您还有其他例子吗?
如果这是正确的(我只是猜测),我只能假设不存在标准方法,并且 raid 控制器和内核实现都选择不同的方法。