Sie finden das entsprechende / dev / sdY-Gerät, indem Sie den /sys
Baum durchlaufen :
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
Mit einer effizienteren /sys
Durchquerung (vgl. Lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Beispielausgabe von einem 2-Platten-System:
ata1 => /dev/sda
ata2 => /dev/sdb
Um die tatsächliche Hardware zuverlässig zu identifizieren, müssen Sie / dev / sdY der Seriennummer zuordnen, z.
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
Das lssci
Dienstprogramm kann auch verwendet werden, um die Zuordnung abzuleiten:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Beachten Sie, dass die relevante lsscsi-Aufzählung bei 0 beginnt, während die ata-Aufzählung bei 0 beginnt.
Syslog
Wenn nichts anderes funktioniert, kann man sich das Syslog / Journal ansehen, um das Mapping abzuleiten.
Die /dev/sdY
Geräte werden in derselben Reihenfolge erstellt, in der die ataX-Kennungen aufgelistet sind, kern.log
während Nicht-Festplattengeräte (ATAPI) und nicht verbundene Links ignoriert werden.
Der folgende Befehl zeigt daher die Zuordnung an:
$ 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
(Beachten Sie, dass ata4 nicht angezeigt wird, da die obigen Protokollmeldungen von einem anderen System stammen.)
Ich benutze /var/log/kern.log.0
und nicht, /var/log/kern.log
weil die Boot-Meldungen bereits gedreht sind. Ich greife nach, May 28 2
weil dies die letzte Startzeit war und ich vorherige Nachrichten ignorieren möchte.
Um die Zuordnung zu überprüfen, können Sie einige Überprüfungen durchführen, indem Sie die Ausgabe von:
$ 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
[..]
Und Sie können diese Ausgabe mit der hdparm
Ausgabe vergleichen, z.
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(mit Kernel 2.6.32-31)
Hier ist meine Version, von oben modifiziert. Da ich nicht genau weiß, wann das System gestartet wurde (zum Testen war es vor 27 Tagen) und ich nicht weiß, welches kern.log die benötigten Daten enthält (einige befinden sich möglicherweise
gzipped
auf meinem System), verwende ichuptime
unddate
um ein ungefähres Systemstartdatum (jedenfalls auf den Tag) zu berechnenzgrep
, durchsuchen Sie anschließend alle verfügbaren kern.log-Dateien.Ich habe auch die zweite
grep
Anweisung leicht modifiziert , da sie nun auch ein ATAPI-CD / DVD-Laufwerk sowie ATA- * -Laufwerke anzeigt.Es könnte noch verfeinert werden (dh wenn die Systemverfügbarkeit länger als ein Jahr ist), sollte aber vorerst in Ordnung sein.
quelle
Hatte gerade das gleiche Problem und fand eine andere Lösung, die man mögen könnte.
Das lsscsi-Tool listet SCSI-Geräte (oder Hosts) und deren Attribute auf.
Mit lsscsi erhält man den ata-Namen und den Gerätenamen.
Sieht aus wie das:
Unter Ubuntu kann man lsscsi einfach mit installieren
quelle
ataX
ordnet man welchen Teil derlsscsi
Ausgabe zu?lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
/sys/devices
ohne zugreiftlsscsi
.Keine der oben genannten Antworten hat bei mir funktioniert, und der lsscsi-Ansatz ergab aufgrund von Diskrepanzen zwischen SCSI-Busnummern und ATA-Nummern tatsächlich die falsche Antwort. Auf einem 21-Platten-System hatte ich viele Syslog-Berichte über Probleme mit ATA18 (HSM-Verstöße). Welche Festplatte hat diese Fehler verursacht? Einige waren USB-Laufwerke, was die Dinge erheblich verwirrender machte. Ich brauchte eine Abrechnung darüber, wie jedes SCSI-Laufwerk an das System angeschlossen ist, und schrieb das folgende Skript, das tabellarische Auflistungen für alle SCSI-Festplatten (/ dev / s [dr]?) Gibt, unabhängig davon, ob ATA oder USB.
Dann mit allen Festplatten voll bilanzierte für, war ich überrascht zu sehen , dass meine ATA Fehler nichts mit dem zu tun hatten , jede meiner Plattenlaufwerke. Ich hatte die falsche Frage gestellt, und ich denke, andere könnten leicht in dieselbe Falle tappen, weshalb ich sie hier erwähne. Ich habe dann einen zweiten Ansatz verwendet, der die Hardware identifizierte, die die HSM-Verstoßmeldungen generiert hat. Dies wird auch in der Dokumentation im folgenden Skript beschrieben.
quelle