Vous pouvez trouver le périphérique / dev / sdY correspondant en parcourant l' /sysarborescence:
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
Avec une /systraversée plus efficace (cf. lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Exemple de sortie d'un système à 2 disques:
ata1 => /dev/sda
ata2 => /dev/sdb
Ensuite, pour identifier de manière fiable le matériel réel, vous devez mapper / dev / sdY au numéro de série, par exemple:
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
L' lssciutilitaire peut également être utilisé pour dériver le mappage:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Notez que l'énumération lsscsi appropriée commence à 0 tandis que l'énumération ata commence à 0.
Syslog
Si rien d'autre ne fonctionne, on peut consulter le journal / journal sys pour dériver le mappage.
Les /dev/sdYpériphériques sont créés dans le même ordre que les identifiants ataX sont énumérés dans le kern.logtout en ignorant les périphériques non-disque (ATAPI) et les liens non connectés.
Ainsi, la commande suivante affiche le mappage:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-' | \
sed 's/^.*\] ata//' | \
sort -n | sed 's/:.*//' | \
awk ' { a="ata" $1; printf("%10s is /dev/sd%c\n", a, 96+NR); }'
ata1.00 is /dev/sda
ata3.00 is /dev/sdb
ata5.00 is /dev/sdc
ata7.00 is /dev/sdd
ata8.00 is /dev/sde
ata10.00 is /dev/sdf
(Notez que ata4 ne s'affiche pas car les messages de journal ci-dessus proviennent d'un autre système.)
J'utilise /var/log/kern.log.0et pas /var/log/kern.logparce que les messages de démarrage sont déjà tournés. Je demande May 28 2car c'était le dernier démarrage et je veux ignorer les messages précédents.
Pour vérifier le mappage, vous pouvez effectuer quelques vérifications en regardant la sortie de:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-'
May 28 20:43:26 hn kernel: [ 1.260488] ata1.00: ATA-7: SAMSUNG SV0802N, max UDMA/100
May 28 20:43:26 hn kernel: [ 1.676400] ata5.00: ATA-5: ST380021A, 3.19, max UDMA/10
[..]
Et vous pouvez comparer cette sortie avec une hdparmsortie, par exemple:
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(en utilisant le noyau 2.6.32-31)