SASエンクロージャ内のディスクの位置を特定する

SASエンクロージャ内のディスクの位置を特定する

24 ディスク SAS エンクロージャ内の障害のあるデバイスを点滅させたい。

sg_ses --index 7 --set=locate /dev/sg24スロット 7 を識別するものを見つけました。

しかし、どのスロット/インデックスがどれであるかをどうやって確認すればよいのでしょうか/dev/sdh?

Linux はスロット名ではなく、検出されたシーケンス名にちなんで /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 でも検出されない場合 (たとえば、回転しない) に役立ちます。

編集:

スロットを点滅させるための小さなツール (blink と呼ばれます) を作成しました。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

READMEより:

障害 - LED インジケータを「障害あり」に設定します。これによりデバイスが障害になるわけではなく、エンクロージャの LED が「障害あり」ステータスに設定されるだけです。

関連情報