Как соотнести устройства / dev / sd с оборудованием, которое они представляют?

35

Диск начинает выходить из строя, и я знаю устройство только по его /dev/sdbобозначению файла устройства. Какие способы я могу использовать для сопоставления этого файла устройства с фактическим аппаратным устройством, чтобы узнать, какой диск физически заменить?

Бонус: Что делать, если у меня нет /dev/disk/и его подкаталогов на этой установке? (К сожалению, я не знаю)

Wesley
источник
Нет 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
Handyman5
источник
Круто, у меня есть /sys/(а также /proc/) много отличной информации там. Все еще потребляю это.
Уэсли
Также взгляните на / dev / disk / by-path (если ваш udev это поддерживает). Конечно, OPs нет, так что ...
Дероберт
14
hdparm -i /dev/sdb

Это должно дать вам модель и серийный номер привода.

Мартин Барри
источник
Я думаю, это подойдет для большинства ситуаций. Однако по какой-то причине контроллер на этом сервере отрывочен. Выполнение этой команды приносит мне это:HDIO_GET_IDENTITY failed: Invalid argument
Уэсли
1
smartctl -iтоже стоит попробовать Работает на дисках SCSI, тогда как hdparm часто не работает.
Дероберт
Не работает с USB drices
Мадс Скьерн
12

Как сказал неподражаемый Жиль в своем ответе , если ваше ядро ​​использует, udevвы можете использовать udevadmкоманду для опроса устройства:

udevadm info -n /dev/sda -a

(К сожалению, в некоторых случаях [вдвойне грустно, что это правда в данном случае для меня] udev не используется и / или udevadm недоступен.)

Wesley
источник
8

Если вы видите светодиод на диске или слышите шум диска, вы можете запустить

sudo cat /dev/sdb >/dev/null

и посмотрите, какой диск внезапно становится постоянно активным. Или, если вы идете по шуму,

sudo find /mount/point >/dev/null

что заставит головки двигаться больше (возможно, лучше не делать это на неисправном диске, а вместо этого использовать процесс удаления с другими дисками).

jippie
источник
2
Я подумал, как заставить свет мигать-мигать , так что это ответ на мое любопытство. =)
Уэсли
1
У некоторых накопителей есть дополнительный светодиод для этого, но они обычно встречаются только в накопителях корпоративного уровня (читай причудливо дорого при относительно небольшой емкости). Не знаю, как работают эти светодиоды, но ddуловка обычно работает достаточно хорошо.
Джиппи
@WesleyDavid Даже если нет светодиодов, прослушивание шума может быть последним выходом. Здесь нет необходимости использовать dd( ни в большинстве случаев ), catиначе подойдет любая другая программа, которая читает из файла.
Жиль "ТАК - перестань быть злым"
4

Предполагая, что это Linux, наиболее очевидная вещь - проверить dmesg, где ядро ​​сначала инициализирует устройство. Он записывает модель привода.

Джулиан Йон
источник
Проверьте unix.stackexchange.com/questions/39886/… для получения дополнительной информации.
Джиппи
Да, это Linux. В частности, Debian 4. Я проверил 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
ДУМК
источник