GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann bei einer Kernel-ATA-Ausnahme festgestellt werden, welche physische Festplatte betroffen ist?

Ich habe einen Einzeiler basierend auf der Antwort von Tobi Hahn geschrieben.

Sie möchten beispielsweise wissen, welches Gerät für ata3 steht:

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

Es wird so etwas produzieren

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

Verwenden Sie diesen Befehl:

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

Auf meinem System erzeugt dies die Ausgabe:

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

Dies funktioniert auch dann, wenn alle Festplatten das gleiche Laufwerksmodell haben (zwischen diesen 6 Festplatten gibt es nur zwei verschiedene Modelle). Beachten Sie, dass dies von der sysfs-Benennung abhängt und in meinem Kernel 3.10.17 funktioniert. Ich weiß, dass es irgendwann in der Vergangenheit nicht so sauber war, die Zuordnungen abzurufen, aber ich bin mir nicht sicher, für welche früheste Kernel-Version dies funktionieren wird.

Wenn es bei Ihnen nicht funktioniert, finden Sie unter diesem Link einen umständlicheren Weg, um die Zuordnungen zu ermitteln: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


Es stellte sich heraus, dass das Mapping einfacher war, als ich dachte.

dmesg | grep ata2 | head gibt die Kernel-Zuordnung des Laufwerks während des Startvorgangs an. Oder Sie entscheiden sich einfach für ata2.00 sofort.

[    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)

Wie Sie sehen können, enthält eine dieser Zeilen die Modellnummer meines Laufwerks (ST31000340NS ), die ich dann verwenden kann, um sie einem /dev zuzuordnen Datei:

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

Linux
  1. Linux – Wie kann man bei einem Git-Commit-Hash herausfinden, welche Kernel-Version ihn enthält?

  2. Wie erkennt man, welche Festplatte Sda und welche Sdb-Festplatte ist?

  3. Wie überprüfe ich ein physisches LVM-Volume auf fehlerhafte Blöcke?

  4. So bestimmen Sie, welcher Prozess in Linux auf die Festplatte schreibt

  5. Wie bestimmt der Linux-Kernel die Reihenfolge der __init-Aufrufe?

Wie kann festgestellt werden, was auf einem Linux-Server den meisten Speicherplatz belegt?

Wie kann man feststellen, ob ein bestimmtes Linux 32-Bit oder 64-Bit ist?

Wie erhalte ich die Anzahl der physischen Festplatten in Linux?

Wie finde ich heraus, welcher Wi-Fi-Treiber installiert ist?

Wie kann man bei einem gegebenen Git-Commit-Hash herausfinden, welche Kernel-Version ihn enthält?

Wie lädt Linux das 'initrd'-Image?