Como correlaciono dispositivos /dev/sd ao hardware que eles representam?

Como correlaciono dispositivos /dev/sd ao hardware que eles representam?

Uma unidade está começando a falhar e só conheço o dispositivo pela /dev/sdbdesignação do arquivo do dispositivo. Quais são as maneiras que posso usar para correlacionar esse arquivo de dispositivo a um dispositivo de hardware real para saber qual unidade substituir fisicamente?

Bônus:E se eu não tiver /dev/disk/seus subdiretórios nesta instalação? (O que, infelizmente, eu não faço)

Responder1

Você pode procurar em /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

Ou se você não tiver /sys, você pode olhar /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

Responder2

hdparm -i /dev/sdb

Isso deve fornecer o modelo e o número de série da unidade.

Responder3

Como o inimitável Gilles mencionounesta resposta dele, se o seu kernel usa udevvocê pode usar o udevadmcomando para interrogar um dispositivo:

udevadm info -n /dev/sda -a

(Infelizmente, em alguns casos [duplamente triste é que neste caso é verdade para mim] o udev não é usado e/ou o udevadm não está disponível.)

Responder4

Eu tenho 4 métodos. O primeiro é o mais fácil:

dmesg | egrep "sd[a-z]"

Para os outros, não tenho certeza se eles precisam de /dev/disk exceto este:

ls -lF /dev/disk/by-uuid

Os outros:

blkid -o list -c /dev/null

E o óbvio:

fdisk -l

informação relacionada