2012年11月21日水曜日

ディスクのシリアル番号

Cです。お久しぶりです。
生きていました。

Linuxのディスク認識についてちょっと書く。
新仮想化基盤サーバ構築中に気になったものでね。

下記のような理想のように素直に認識してくれればいいのだが、
実際には入れ違っちゃうこともある、SATA3(接続コネクタポート名)以降は
もうぐっちゃぐちゃになることがおおい。SATAポート増設とかすると特に

■理想
SATA1 = /dev/sda
SATA2 = /dev/sdb
SATA3 = /dev/sdc
SATA4 = /dev/sdd
SATA5 = /dev/sde
SATA6 = /dev/sdf
SATA7 = /dev/sdg
SATA8 = /dev/sdh
SATA9 = /dev/sdi
SATA10 = /dev/sdj

■現実
SATA1 = /dev/sda
SATA2 = /dev/sdb
SATA4 = /dev/sdc
SATA3 = /dev/sdd
SATA7 = /dev/sde
SATA8 = /dev/sdf
SATA9 = /dev/sdg
SATA10 = /dev/sdh
SATA5 = /dev/sdi
SATA6 = /dev/sdj
↑実際はどのSATAコネクタなのかわからない。

これはものすごい困る。別に動いてるぶんにはいいんだけど、
HDDが壊れたときにどのディスクを交換すればいいのかわからない。

■解決法
まずはHDD固体のシリアルちゃんと管理しとこう。
物理固体にはシリアルが書いてないことがあるのでこうしよう。
1個だけHDDがつながってる状態にして「hdparmコマンド」でシリアルをとっとこう。


# echo "/dev/sda 右だよ " > disk_management.txt
# hdparm -I /dev/sda | grep "Serial Number" >> disk_management.txt


ほかにもシリアルナンバーを取得する方法はある。


# scsi_id --page=0x83 -whitelisted --device=/dev/sda


これでもいけるな。


# udevadm info -q all -n /dev/sda | grep D_SERIAL_SHORT


そして2個目をつないでまた同じことを繰り返していく。
これでシリアルと場所とデバイス名を管理できる。

/etc/fstab もUUIDで書いておくと何とかなるだろう。
ほんとはudevで固定したかったんだけど、やり方がわからなかった

/etc/udev/rules.d/10-local.rules を作成して下記のように指定したが
思うようには動きやがらんです。

SUBSYSTEM=="block", ENV{ID_BUS}=="ata", ENV{ID_MODEL}=="SPCC_Solid_State_DiskB28", ENV{ID_TYPE}=="disk", ENV{ID_SERIAL_SHORT}=="120614271030000000D8", NAME="sda%n"

やり方を知っている人がいたら教えてくれ。

0 件のコメント:

コメントを投稿