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がそれを検出できない場合(たとえば、起動しないなど)に役立ちます。
編集する:
私はスロットをフラッシュするための小さなツール(点滅と呼ばれる)を作成しました。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インジケーターを「エラー」に設定します。これにより、デバイスが誤動作することはなく、シェルを「失敗」状態に設定するだけです。