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

35

Un lecteur commence à tomber en panne et je ne connais le périphérique que par sa /dev/sdbdésignation. Quels moyens puis-je 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)

Wesley
la source
Pas de contrôleur RAID?
ewwhite
@ewwhite Pas pour les besoins de cette question, non. =)
Wesley
btw. Si vous n'avez pas le /dev/disk/répertoire, vous n'avez probablement pas udev.
Ulrich Dangel
@ UlrichDangel Très observateur parce que ... je n'ai pas udev. = (
Wesley

Réponses:

21

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'en 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
Bricoleur5
la source
Génial, j'ai /sys/(aussi /proc/) beaucoup d'informations intéressantes. Toujours le consommer.
Wesley
Regardez aussi / dev / disk / by-path (en supposant que votre udev le supporte). Bien sûr, les OP ne le font pas, alors ...
derobert
14
hdparm -i /dev/sdb

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

Martin Barry
la source
Cela fonctionnerait pour la plupart des situations, je crois. Cependant, pour une raison quelconque, le contrôleur de ce serveur est sommaire. Exécuter cette commande me rapporte ceci:HDIO_GET_IDENTITY failed: Invalid argument
Wesley
1
smartctl -ivaut la peine d'essayer aussi. Fonctionne sur les lecteurs SCSI, contrairement à hdparm.
derobert
Ne fonctionne pas avec les clés USB
Mads Skjern
12

Comme l'inimitable Gilles mentionné dans cette réponse , si votre noyau utilise, udevvous pouvez utiliser la udevadmcommande pour interroger un périphérique:

udevadm info -n /dev/sda -a

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

Wesley
la source
8

Si vous voyez le voyant sur le lecteur ou écoutez le bruit du disque, vous pouvez exécuter

sudo cat /dev/sdb >/dev/null

et voir quel lecteur devient soudainement actif en permanence. Ou, si vous allez par le bruit,

sudo find /mount/point >/dev/null

ce qui fera bouger les têtes davantage (il est peut-être préférable de ne pas le faire sur le disque défaillant et d’utiliser plutôt un processus d’élimination avec les autres disques).

jippie
la source
2
J'avais réfléchi à la manière de faire clignoter les lumières , c'est donc une réponse à ma curiosité. =)
Wesley
1
Certains lecteurs ont un voyant supplémentaire pour cela, mais ils ne se trouvent généralement que dans les lecteurs de niveau entreprise (lire bizarrement cher à une capacité relativement faible). Je ne sais pas comment utiliser ces LED, mais le ddtruc marche généralement assez bien.
Jippie
@WesleyDavid Même s'il n'y a pas de DEL, écouter le bruit peut être un dernier recours. Il n'y a pas besoin d'utiliser ddici ( ni dans la plupart des circonstances ), catou tout autre programme qui lit à partir d'un fichier fera l'affaire.
Gilles 'SO- arrête d'être méchant'
4

En supposant qu'il s'agisse de Linux, la chose la plus évidente consiste à vérifier où dmesg est à l'origine de l'initialisation du périphérique par le noyau. Il enregistre le modèle de lecteur.

Julian Yon
la source
Consultez unix.stackexchange.com/questions/39886/… pour plus de détails.
Jippie
Oui, c'est Linux. Plus précisément, Debian 4. J’ai vérifié dmesg, mais je n’ai vu aucune mention d’un modèle de disque, curieusement. Peut-être que je me trompe.
Wesley
4

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

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
Samuel Duclos
la source
3

Voici comment je connais 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
SamK
la source