web-dev-qa-db-fra.com

Comment corréler les périphériques / dev / sd avec le matériel qu'ils représentent?

Un lecteur commence à tomber en panne et je ne connais le périphérique que par son /dev/sdb désignation du fichier du périphérique. Quels sont les moyens que je peux utiliser pour corréler ce fichier de périphérique à un périphérique matériel réel pour savoir quel lecteur remplacer physiquement?

Bonus: Et si je n'ai pas /dev/disk/ et ses sous-répertoires sur cette installation? (Ce qui, malheureusement, je ne le fais pas)

36
Wesley

Vous pouvez regarder dans /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 si vous n'avez pas /sys, vous pouvez regarder /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
22
Handyman5
hdparm -i /dev/sdb

Cela devrait vous donner le modèle et le numéro de série du lecteur.

14
Martin Barry

Comme l'inimitable Gilles l'a mentionné dans cette réponse , si votre noyau utilise udev vous pouvez utiliser la commande udevadm pour interroger un périphérique:

udevadm info -n /dev/sda -a

(Malheureusement, dans certains cas [doublement triste, c'est vrai dans ce cas pour moi] udev n'est pas utilisé et/ou udevadm n'est pas disponible.)

12
Wesley

Si vous pouvez voir le voyant du lecteur ou écouter le bruit du disque, vous pouvez exécuter

Sudo cat /dev/sdb >/dev/null

et voyez quel disque devient soudainement continuellement actif. Ou, si vous allez par le bruit,

Sudo find /mount/point >/dev/null

ce qui fera bouger davantage les têtes (il peut être préférable de ne pas le faire sur le disque défaillant, et d'utiliser à la place un processus d'élimination avec les autres disques).

8
jippie

J'ai 4 méthodes. Le premier est le plus simple:

dmesg | egrep "sd[a-z]"

Pour les autres, je ne sais pas s'ils ont besoin de/dev/disk sauf pour celui-ci:

ls -lF /dev/disk/by-uuid

Les autres:

blkid -o list -c /dev/null

Et l'évidence:

fdisk -l
4
Samuel Duclos

En supposant qu'il s'agit de Linux, la chose la plus évidente est de vérifier dans dmesg où le noyau initialise le périphérique pour la première fois. Il enregistre le modèle de lecteur.

4
Julian Yon

Voici quelques moyens que je connais pour trouver le nom du périphérique SCSI

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (du paquet util-linux> = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
3
SamK