Saya menulis satu kalimat berdasarkan jawaban Tobi Hahn.
Misalnya, Anda ingin mengetahui singkatan dari perangkat ata3:
ata=3; ls -l /sys/block/sd* | grep $(grep $ata /sys/class/scsi_host/host*/unique_id | awk -F'/' '{print $5}')
Ini akan menghasilkan sesuatu seperti ini
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
Gunakan perintah ini:
ls -l /sys/block/sd* | sed 's/.*\(sd.*\) -.*\(ata.*\)\/h.*/\2 => \1/'
Di sistem saya ini menghasilkan keluaran:
ata1 => sda
ata2 => sdb
ata3 => sdc
ata4 => sdd
ata7 => sde
ata8 => sdf
Ini akan bekerja bahkan jika semua disk memiliki model drive yang sama (di antara 6 disk tersebut hanya ada dua model yang berbeda). Perhatikan bahwa ini tergantung pada penamaan sysfs dan berfungsi di kernel 3.10.17 saya. Saya tahu di beberapa titik di masa lalu tidak sebersih ini untuk mengambil pemetaan tetapi saya tidak yakin untuk versi kernel paling awal ini akan berfungsi.
Jika tidak berhasil untuk Anda, lihat tautan ini untuk cara lebih lanjut dalam menentukan pemetaan: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
Ternyata melakukan pemetaan lebih mudah dari yang saya sadari.
dmesg | grep ata2 | head
memberikan pemetaan kernel dari drive selama proses boot. Atau Anda bisa memilih ata2.00
segera.
[ 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)
Seperti yang Anda lihat, salah satu baris berisi nomor model drive saya (ST31000340NS
) yang kemudian dapat saya gunakan untuk memetakan ke /dev
berkas:
$ readlink /dev/disk/by-id/*ST31000340NS* | head -n1
../../sda