我想要让 24 磁盘 SAS 机柜中的故障设备闪烁。
我发现sg_ses --index 7 --set=locate /dev/sg24
它应该识别插槽 7。
但我如何找出哪个槽/索引/dev/sdh
呢?
这并不明显,因为 Linux 不是在插槽之后命名 /dev/sdX,而是在检测到的序列之后命名 /dev/sdX。想象一下如果插槽 1 在启动时为空,但稍后被填充,会发生什么情况。
编辑:
控制器是SAS2008。
答案1
在 /sys 周围循环了一段时间后,我找到了这个解决方案:
# echo /sys/class/enclosure/*/*/device/block/sdaa
/sys/class/enclosure/2:0:35:0/Slot 15/device/block/sdaa
# echo 1 > '/sys/class/enclosure/2:0:35:0/Slot 15/locate'
或者:
# echo 1 > /sys/class/enclosure/*/*/device/block/sdaa/../../enclosure*/locate
要使所有检测到的设备闪烁:
parallel echo 1 \> ::: /sys/class/enclosure/*/*/device/block/sd*/../../enclosure*/locate
如果您的驱动器损坏严重以至于 Linux 无法检测到(例如,它无法启动),这会很有用。
编辑:
我制作了一个小工具(称为眨眼)来闪烁插槽。https://gitlab.com/ole.tange/tangetools/tree/master/blink
答案2
这个丑陋的脚本将外壳和插槽信息添加到lsblk
输出中:
lsblk -d -o VENDOR,MODEL,SERIAL,HCTL,NAME | sed -e "`ls -1d /sys/class/enclosure/*/*/device/block/*|sed "s+.*enclosure/\(.*\)/device/block/\(.*\)+s-\2\\$-\2 \1-+"`"
(您可以更改列列表,但最后一列应该是NAME
)
答案3
检查/sys/class/block/sdh
链接到什么。您可以通过这种方式查看主机、目标和 LUN。通常这足以查明设备的硬件地址。
答案4
有一个很好的工具(可在https://github.com/amarao/sdled)来管理您的外壳 LED。
您应该能够像这样使用它(尽管未经测试):
encled /dev/sgh fault
来自自述文件:
故障 - 将 LED 指示灯设置为“故障”。这不会使设备出现故障,只需将外壳设置为“故障”状态即可。