Linux で SATA ドライブのシリアル番号を表示するスクリプト
仕事柄、ストレージを扱うことが多いのですが、SATAドライブのシリアル番号を調べる必要がありました。
サーバーのSATAポートに直接接続されているものであれば hdparm で調べられますが、LSI のSAS-HBA に接続されているドライブには hdparm は使用できません。
こんなときは sg3_utils を使用することで SAS-HBA 越しの SATA ドライブのシリアル番号を取得できます。
sg_sat_identify DEVICE
と指定すればドライブの IDENTIFY DEVICE DATA を見ることができます。しかしさすがに見づらいのでスクリプトと od で整形して表示するようにしました。
いががでしょうか。
sg_sat_identify がエラーを返したとき終了ステータスを取得する方法がわかりません・・・
サーバーのSATAポートに直接接続されているものであれば hdparm で調べられますが、LSI のSAS-HBA に接続されているドライブには hdparm は使用できません。
こんなときは sg3_utils を使用することで SAS-HBA 越しの SATA ドライブのシリアル番号を取得できます。
sg_sat_identify DEVICE
と指定すればドライブの IDENTIFY DEVICE DATA を見ることができます。しかしさすがに見づらいのでスクリプトと od で整形して表示するようにしました。
# シリアル番号の取得 # 入力: # $1 デバイスファイル get_serial_number() { local a=(`sg_sat_identify --raw $1 | od -j 20 -N 20 -t a -A n`) for i in `seq 0 2 18` do if [ "${a[$i + 1]}" != "sp" ] then ser="$ser${a[$i + 1]}" fi if [ "${a[$i]}" != "sp" ] then ser="$ser${a[$i]}" fi done echo $ser }
いががでしょうか。
sg_sat_identify がエラーを返したとき終了ステータスを取得する方法がわかりません・・・
コメント
コメントを投稿