Anda dapat menemukan perangkat / dev / sdY yang sesuai melalui melintasi /sys
pohon:
$ find /sys/devices | grep '/ata[0-9]\+/.*/block/s[^/]\+$' \
| sed 's@^.\+/\(ata[0-9]\+\)/.\+/block/\(.\+\)$@\1 => /dev/\2@'
Dengan /sys
traversal yang lebih efisien (lih. Lsata.sh ):
$ echo /sys/class/ata_port/ata*/../../host*/target*/*/block/s* | tr ' ' '\n' \
| awk -F/ '{printf("%s => /dev/%s\n", $5, $NF)}'
Contoh output dari sistem 2 disk:
ata1 => /dev/sda
ata2 => /dev/sdb
Kemudian, untuk mengidentifikasi perangkat keras aktual yang andal, Anda perlu memetakan / dev / sdY ke nomor seri, misalnya:
$ ls /dev/disk/by-id -l | grep 'ata.*sd[a-zA-Z]$'
lssci
The lssci
utilitas juga dapat digunakan untuk menurunkan pemetaan:
$ lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' \
| awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
Perhatikan bahwa enumerasi lsscsi yang relevan dimulai dari 0 sedangkan enumerasi ata dimulai dari 0.
Syslog
Jika tidak ada yang berhasil, seseorang dapat melihat syslog / jurnal untuk mendapatkan pemetaan.
Para /dev/sdY
perangkat diciptakan dalam urutan yang sama seperti pengidentifikasi ataX yang disebutkan dalam kern.log
sementara mengabaikan perangkat non-disk (ATAPI) dan link tidak terhubung.
Dengan demikian, perintah berikut menampilkan pemetaan:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-' | \
sed 's/^.*\] ata//' | \
sort -n | sed 's/:.*//' | \
awk ' { a="ata" $1; printf("%10s is /dev/sd%c\n", a, 96+NR); }'
ata1.00 is /dev/sda
ata3.00 is /dev/sdb
ata5.00 is /dev/sdc
ata7.00 is /dev/sdd
ata8.00 is /dev/sde
ata10.00 is /dev/sdf
(Perhatikan bahwa ata4 tidak ditampilkan karena pesan log di atas berasal dari sistem lain.)
Saya menggunakan /var/log/kern.log.0
dan bukan /var/log/kern.log
karena pesan boot sudah diputar. Saya setuju May 28 2
karena ini adalah waktu boot terakhir dan saya ingin mengabaikan pesan sebelumnya.
Untuk memverifikasi pemetaan Anda dapat melakukan beberapa pemeriksaan melalui melihat output dari:
$ grep '^May 28 2' /var/log/kern.log.0 | \
grep 'ata[0-9]\+.[0-9][0-9]: ATA-'
May 28 20:43:26 hn kernel: [ 1.260488] ata1.00: ATA-7: SAMSUNG SV0802N, max UDMA/100
May 28 20:43:26 hn kernel: [ 1.676400] ata5.00: ATA-5: ST380021A, 3.19, max UDMA/10
[..]
Dan Anda dapat membandingkan output ini dengan hdparm
output, misalnya:
$ hdparm -i /dev/sda
/dev/sda:
Model=SAMSUNG SV0802N [..]
(menggunakan Kernel 2.6.32-31)
Ini versi saya, dimodifikasi dari atas. Karena saya tidak tahu tanggal pasti sistem di-boot (untuk pengujian ini 27 hari yang lalu), dan saya tidak tahu kern.log mana yang berisi data yang saya butuhkan (beberapa mungkin ada
gzipped
di sistem saya), saya menggunakanuptime
dandate
untuk menghitung perkiraan tanggal boot sistem (hingga hari itu), kemudian gunakanzgrep
untuk mencari semua file kern.log yang tersedia.Saya juga sedikit mengubah
grep
pernyataan kedua , karena sekarang ini juga akan menampilkan drive CD / DVD ATAPI serta drive ATA- *.Itu masih bisa menggunakan penyempurnaan (yaitu jika uptime sistem lebih besar dari satu tahun), tetapi harus berfungsi OK untuk saat ini.
sumber
Baru saja mengalami masalah yang sama dan menemukan solusi lain yang mungkin disukai.
Alat lsscsi mencantumkan perangkat SCSI (atau host) dan atributnya.
Dengan lsscsi, seseorang mendapatkan nama ata dan nama perangkat.
Terlihat seperti ini:
Di Ubuntu kita dapat menginstal lsscsi hanya dengan
sumber
ataX
peta ke bagian mana dalamlsscsi
output?lsscsi | sed 's@^\[\([^:]\+\).\+\(/dev/.\+\)$@\1,\2@' | awk -F, '{ printf("ata%d => %s\n", $1+1, $2) }'
/sys/devices
tanpalsscsi
.Tidak ada jawaban di atas yang bekerja untuk saya, dan pendekatan lsscsi benar-benar menghasilkan jawaban yang salah, karena perbedaan antara nomor bus SCSI dan nomor ATA. Pada sistem 21-disk, saya punya banyak laporan syslog tentang masalah dengan ATA18 (pelanggaran HSM). Disk mana yang menyebabkan kesalahan ini? Beberapa di antaranya adalah drive usb, yang membuat segalanya jauh lebih membingungkan. Saya membutuhkan penghitungan bagaimana setiap drive SCSI terhubung ke sistem, dan saya menulis skrip di bawah ini yang menghasilkan daftar tabular untuk semua disk SCSI (/ dev / s [dr]?) Terlepas dari apakah ATA atau USB.
Kemudian, dengan semua disk drive sepenuhnya diperhitungkan, saya terkejut melihat bahwa kesalahan ATA saya tidak ada hubungannya dengan salah satu drive disk saya. Saya telah mengajukan pertanyaan yang salah, dan saya pikir orang lain mungkin dengan mudah jatuh ke dalam perangkap yang sama, itulah sebabnya saya menyebutkannya di sini. Saya kemudian menggunakan pendekatan kedua yang mengidentifikasi perangkat keras yang menghasilkan pesan pelanggaran HSM, juga dirinci dalam dokumentasi yang muncul dalam skrip di bawah ini.
sumber