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