GNU/Linux >> Tutoriels Linux >  >> Linux

Etant donné une exception ATA du noyau, comment déterminer quel disque physique est affecté ?

J'ai écrit une ligne basée sur la réponse de Tobi Hahn.

Par exemple, vous voulez savoir quel appareil signifie ata3 :

ata=3; ls -l /sys/block/sd* | grep $(grep $ata /sys/class/scsi_host/host*/unique_id | awk -F'/' '{print $5}')

Cela produira quelque chose comme ça

lrwxrwxrwx 1 root root 0 Jan 15 15:30 /sys/block/sde -> ../devices/pci0000:00/0000:00:1f.5/host2/target2:0:0/2:0:0:0/block/sde

Utilisez cette commande :

ls -l /sys/block/sd* | sed 's/.*\(sd.*\) -.*\(ata.*\)\/h.*/\2 => \1/'

Sur mon système, cela produit la sortie :

ata1 => sda
ata2 => sdb
ata3 => sdc
ata4 => sdd
ata7 => sde
ata8 => sdf

Cela fonctionnera même si tous les disques ont le même modèle de lecteur (entre ces 6 disques, il n'y a que deux modèles différents). Notez que cela dépend de la dénomination sysfs et fonctionne dans mon noyau 3.10.17. Je sais qu'à un moment donné dans le passé, il n'était pas aussi simple de récupérer les mappages, mais je ne sais pas pour quelle version du noyau cela fonctionnera.

Si cela ne fonctionne pas pour vous, consultez ce lien pour une manière plus détournée de déterminer les mappages :http://www.miriup.de/index.php?option=com_content&view=article&id=84:mapping-linux-kernel- ata-errors-to-a-device&catid=8:linux&Itemid=25


Il s'avère que faire la cartographie était plus facile que je ne le pensais.

dmesg | grep ata2 | head donne le mappage du noyau du lecteur pendant le processus de démarrage. Ou vous pouvez simplement opter pour ata2.00 tout de suite.

[    2.448300] ata2: SATA max UDMA/133 abar [email protected] port 0xfeb0b180 irq 19
[    2.940139] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    2.942143] ata2.00: ATA-8: ST31000340NS, SN05, max UDMA/133
[    2.942149] ata2.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 31/32)
[    2.944573] ata2.00: configured for UDMA/133
  (and some stuff I'd rather never have to see about drive errors)

Comme vous pouvez le voir, l'une de ces lignes contient le numéro de modèle de mon lecteur (ST31000340NS ) que je peux ensuite utiliser pour mapper sur un /dev fichier :

$ readlink /dev/disk/by-id/*ST31000340NS* | head -n1
../../sda

Linux
  1. Linux - Étant donné un hachage de validation Git, comment savoir quelle version du noyau le contient ?

  2. Comment trouver le module du noyau pour un appareil donné ?

  3. Linux - Comment déterminer quel module corrompt le noyau ?

  4. Comment savoir quel disque est Sda et quel disque est Sdb ?

  5. Comment vérifier les blocs défectueux sur un volume physique Lvm ?

Comment déterminer ce qui utilise le plus d'espace disque sur un serveur Linux ?

Comment déterminer si un Linux donné est 32 bits ou 64 bits ?

Comment utiliser la sécurité ATA sur un disque dur en pratique ?

Comment obtenir le nombre de disques physiques sous Linux ?

Déterminez quel invité s'exécute sur XEN :invité HVM ou PV

Comment Linux charge-t-il l'image 'initrd' ?