GNU/Linux >> Tutoriales Linux >  >> Linux

Dada una excepción ATA del kernel, ¿cómo determinar qué disco físico se ve afectado?

Escribí una frase basada en la respuesta de Tobi Hahn.

Por ejemplo, desea saber qué dispositivo significa ata3:

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

Producirá algo como esto

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

Usa este comando:

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

En mi sistema esto produce la salida:

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

Esto funcionará incluso si todos los discos tienen el mismo modelo de unidad (entre esos 6 discos solo hay dos modelos diferentes). Tenga en cuenta que esto depende de la denominación de sysfs y funciona en mi kernel 3.10.17. Sé que en algún momento del pasado no estaba tan limpio recuperar las asignaciones, pero no estoy seguro de cuál será la versión más antigua del kernel para la que funcionará.

Si no funciona para usted, vea este enlace para una forma más indirecta de determinar las asignaciones:http://www.miriup.de/index.php?option=com_content&view=article&id=84:mapping-linux-kernel- ata-errores-en-un-dispositivo&catid=8:linux&Itemid=25


Resulta que hacer el mapeo fue más fácil de lo que pensaba.

dmesg | grep ata2 | head proporciona la asignación del kernel de la unidad durante el proceso de arranque. O simplemente podría optar por ata2.00 enseguida.

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

Como puede ver, una de esas líneas contiene el número de modelo de mi unidad (ST31000340NS ) que luego puedo usar para asignar a un /dev archivo:

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

Linux
  1. ¿Cómo determinar qué proceso está creando un archivo?

  2. ¿Cómo saber qué disco es Sda y cuál es Sdb?

  3. ¿Cómo verificar si hay bloques defectuosos en un volumen físico Lvm?

  4. Cómo determinar qué proceso está escribiendo en el disco en Linux

  5. Dado un hash de confirmación de git, ¿cómo saber qué versión del kernel lo contiene?

¿Cómo determinar qué está utilizando la mayor cantidad de espacio en disco en un servidor Linux?

¿Cómo obtener la cantidad de discos físicos en Linux?

Determine qué invitado se está ejecutando en XEN:invitado HVM o PV

¿Cómo saber qué controlador Wi-Fi está instalado?

¿Cómo carga Linux la imagen 'initrd'?

uname está roto:¿cómo determino el kernel que se está ejecutando actualmente?