GNU/Linux >> Znalost Linux >  >> Linux

Vzhledem k výjimce ATA jádra, jak určit, který fyzický disk je ovlivněn?

Napsal jsem jeden řádek na základě odpovědi Tobiho Hahna.

Chcete například vědět, jaké zařízení znamená ata3:

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

Vytvoří něco takového

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

Použijte tento příkaz:

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

V mém systému to vytváří výstup:

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

To bude fungovat, i když všechny disky mají stejný model jednotky (mezi těmito 6 disky jsou pouze dva různé modely). Všimněte si, že to závisí na pojmenování sysfs a funguje v mém jádře 3.10.17. Vím, že v určitém okamžiku v minulosti nebylo načítání mapování tak čisté, ale nejsem si jistý, pro kterou nejstarší verzi jádra to bude fungovat.

Pokud to pro vás nefunguje, podívejte se na tento odkaz pro podrobnější způsob určování mapování: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


Ukázalo se, že mapování bylo jednodušší, než jsem si myslel.

dmesg | grep ata2 | head poskytuje mapování jednotky během procesu spouštění jádra. Nebo můžete jít na ata2.00 hned.

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

Jak vidíte, jeden z těchto řádků obsahuje číslo modelu mého disku (ST31000340NS ), který pak mohu použít k mapování na /dev soubor:

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

Linux
  1. CentOS / RHEL :Jak zjistit, která verze SNMP se používá

  2. Jak linuxové jádro určuje pořadí volání __init?

  3. Jak zjistit, které možnosti příkazového řádku gcc standardně předává ld?

  1. Jak v praxi využít zabezpečení ATA na pevném disku?

  2. Jak získat počet fyzických disků v Linuxu?

  3. Určete, který host běží na XEN:HVM nebo PV host

  1. Jak zjistit, který proces vytváří soubor?

  2. Jak zjistit, který ovladač Wi-Fi je nainstalován?

  3. uname je nefunkční:jak zjistím aktuálně běžící jádro?