/ dev / sdデバイスをそれらが表すハードウェアに関連付けるにはどうすればよいですか?


35

ドライブが故障し始めており、/dev/sdbデバイスファイルの指定によってのみデバイスを知っています。そのデバイスファイルを実際のハードウェアデバイスに関連付けて、どのドライブを物理的に交換するかを知るために使用できる方法は何ですか?

ボーナス:/dev/disk/このインストールにサブディレクトリがない場合はどうなりますか?(悲しいことに、私はしません)


RAIDコントローラはありませんか?
ewwhite

@ewwhiteこの質問の目的ではありません。=)
ウェズリー

ところで。/dev/disk/ディレクトリがない場合は、おそらくudevがないでしょう。
ウルリッヒダンゲル

@UlrichDangelとても用心深いのは...私にはudevがないからです。=(
ウェズリー

回答:


21

あなたが見ることができます/sys/block

-bash-3.2$ ls -ld /sys/block/sd*/device
lrwxrwxrwx 1 root root 0 Jun  8 21:09 /sys/block/sda/device -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdb/device -> ../../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdc/device -> ../../devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdd/device -> ../../devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0

または、お持ちでない場合は/sys、次をご覧ください/proc/scsi/scsi

-bash-3.2$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: PepperC  Model: Virtual Disc 1   Rev: 0.01
  Type:   CD-ROM                           ANSI SCSI revision: 03

素晴らしい、/sys/(同様に/proc/)たくさんの素晴らしい情報があります。まだ消費しています。
ウェスリー

また、/ dev / disk / by-pathを見てください(udevがサポートしていると仮定)。もちろん、OPはそうではないので
...-derobert

14
hdparm -i /dev/sdb

ドライブのモデルとシリアル番号が表示されます。


これはほとんどの状況で機能すると思います。ただし、何らかの理由でこのサーバーのコントローラーは不完全です。このコマンドを実行すると、次のことがHDIO_GET_IDENTITY failed: Invalid argument
ウェズリー

1
smartctl -i試してみる価値もあります。SCSIドライブで動作しますが、hdparmは動作しません。
デロバート

USBのdricesでは動作しません
マッズSkjern

12

彼ののこの回答で言及さた比類のないGillesのよう、カーネルが使用udevする場合、udevadmコマンドを使用してデバイスに問い合わせることができます:

udevadm info -n /dev/sda -a

(残念なことに、場合によっては[この場合本当かどうか分からないことですが] udevが使用されていないか、udevadmが利用できません。)


8

ドライブのLEDを見ることができるか、ディスクノイズを聞くことができる場合、実行できます

sudo cat /dev/sdb >/dev/null

どのドライブが突然連続的にアクティブになるかを確認します。または、騒音で行く場合は、

sudo find /mount/point >/dev/null

これにより、ヘッドがさらに移動します(障害が発生したディスクでは移動せず、代わりに他のディスクで消去プロセスを使用する方が良い場合があります)。


2
私は明かりを瞬きさせる方法を考えていたので、これは私の好奇心への答えです。=)
ウェズリー

1
一部のドライブにはこのための追加のLEDがありますが、通常はエンタープライズグレードのドライブにしか見られません(比較的低い容量で奇妙に高価なものを読んでください)。これらのLEDの動作方法はわかりませんが、dd通常、このトリックは十分に機能します。
ジッピー

@WesleyDavid LEDがなくても、ノイズを聞くことは最後の手段です。ddここで(またはほとんどの状況で)使用する必要catはありません。または、ファイルから読み取る他のプログラムで使用する必要はありません。
ジル「SO-悪であるのをやめる」

4

これがLinuxであると仮定すると、最も明白なことは、カーネルが最初にデバイスを初期化する場所についてdmesgをチェックすることです。ドライブモデルを記録します。


詳細については、unix.stackexchange.com / questions / 39886 /…を確認してください。
ジッピー

はい、それはLinuxです。具体的にはDebian4。dmesgをチェックしましたが、奇妙なことにドライブモデルについての言及は見ませんでした。おそらく私はそれを誤解しています。
ウェスリー

4

4つの方法があります。最初のものが最も簡単です:

dmesg | egrep "sd[a-z]"

他の人にとっては、これを除いて/ dev / diskが必要かどうかわかりません:

ls -lF /dev/disk/by-uuid

他人:

blkid -o list -c /dev/null

そして明らかなこと:

fdisk -l

3

SCSIデバイス名を見つける方法をいくつか紹介します

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (パッケージutil-linux> = v2.22から)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.