Bagaimana cara menghubungkan perangkat / dev / sd ke perangkat keras yang diwakilinya?

35

Drive mulai gagal dan saya hanya tahu perangkat dengan /dev/sdbpenunjukan file perangkatnya. Apa cara yang bisa saya gunakan untuk menghubungkan file perangkat itu dengan perangkat keras yang sebenarnya untuk mengetahui drive mana yang harus diganti secara fisik?

Bonus: Bagaimana jika saya tidak memiliki /dev/disk/dan sub direktori pada instalasi ini? (Yang, sayangnya, saya tidak)

Wesley
sumber
Tidak ada pengontrol RAID?
ewwhite
@ewwhite Bukan untuk keperluan pertanyaan ini, tidak. =)
Wesley
btw. jika Anda tidak memiliki /dev/disk/direktori, Anda mungkin tidak memiliki udev.
Ulrich Dangel
@UlrichDangel Sangat jeli karena ... Saya tidak punya udev. = (
Wesley

Jawaban:

21

Anda dapat melihat /sys/block:

-bash-3.2$ ls -ld /sys/block/sd*/device
lrwxrwxrwx 1 root root 0 Jun  8 21:09 /sys/block/sda/device -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdb/device -> ../../devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdc/device -> ../../devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0
lrwxrwxrwx 1 root root 0 Jun  8 21:10 /sys/block/sdd/device -> ../../devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0

Atau jika tidak /sys, Anda dapat melihat /proc/scsi/scsi:

-bash-3.2$ cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST31000340AS     Rev: SD1A
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: PepperC  Model: Virtual Disc 1   Rev: 0.01
  Type:   CD-ROM                           ANSI SCSI revision: 03
Handyman5
sumber
Luar biasa, saya punya /sys/(juga /proc/) Banyak info hebat di sana. Masih mengkonsumsinya.
Wesley
Juga, lihatlah / dev / disk / by-path (dengan anggapan udev Anda mendukungnya). Tentu saja, OP tidak, jadi ...
derobert
14
hdparm -i /dev/sdb

Itu akan memberi Anda model dan nomor seri drive.

Martin Barry
sumber
Ini akan bekerja untuk sebagian besar situasi, saya percaya. Namun, untuk beberapa alasan pengontrol di server ini tidak lengkap. Melakukan perintah itu memberi saya ini:HDIO_GET_IDENTITY failed: Invalid argument
Wesley
1
smartctl -ipatut dicoba juga. Bekerja pada drive SCSI, sedangkan hdparm seringkali tidak.
derobert
Tidak bekerja dengan drive USB
Mads Skjern
12

Seperti Gilles yang tak ada bandingannya yang disebutkan dalam jawaban ini , jika kernel udevAnda menggunakan Anda dapat menggunakan udevadmperintah untuk menginterogasi perangkat:

udevadm info -n /dev/sda -a

(Sedihnya, dalam beberapa kasus [sedih yang menyedihkan adalah benar dalam kasus ini bagi saya] udev tidak digunakan dan / atau udevadm tidak tersedia.)

Wesley
sumber
8

Jika Anda dapat melihat LED pada drive, atau mendengarkan suara disk, Anda dapat menjalankannya

sudo cat /dev/sdb >/dev/null

dan lihat drive mana yang tiba-tiba menjadi aktif secara terus-menerus. Atau, jika Anda pergi dengan kebisingan,

sudo find /mount/point >/dev/null

yang akan membuat kepala lebih banyak bergerak (mungkin lebih baik tidak melakukannya pada disk yang gagal, dan alih-alih menggunakan proses eliminasi dengan disk lain).

jippie
sumber
2
Saya telah mempertimbangkan bagaimana membuat lampu menjadi blinky-blinky , jadi ini adalah jawaban atas keingintahuan saya. =)
Wesley
1
Beberapa drive memiliki LED tambahan untuk ini, tetapi mereka biasanya hanya ditemukan di drive kelas perusahaan (baca mahal dengan kapasitas relatif rendah). Tidak tahu cara bekerja LED itu, tetapi ddtriknya biasanya bekerja cukup baik.
jippie
@WesleyDavid Bahkan jika tidak ada LED, mendengarkan suara bisa menjadi jalan terakhir. Tidak perlu menggunakan di ddsini ( atau dalam sebagian besar keadaan ), catatau program lain yang membaca dari file akan dilakukan.
Gilles 'SO- berhenti bersikap jahat'
4

Dengan asumsi ini adalah Linux, hal yang paling jelas adalah memeriksa dmesg untuk mana kernel pertama kali menginisialisasi perangkat. Ini mencatat model drive.

Julian Yon
sumber
Periksa unix.stackexchange.com/questions/39886/… untuk lebih jelasnya.
jippie
Ya, itu Linux. Khususnya Debian 4. Saya memeriksa dmesg, tetapi tidak melihat penyebutan model drive, anehnya. Mungkin saya salah membaca.
Wesley
4

Saya punya 4 metode. Yang pertama adalah yang termudah:

dmesg | egrep "sd[a-z]"

Untuk yang lain, saya tidak yakin apakah mereka membutuhkan / dev / disk kecuali yang ini:

ls -lF /dev/disk/by-uuid

Yang lain:

blkid -o list -c /dev/null

Dan yang jelas:

fdisk -l
Samuel Duclos
sumber
3

Berikut adalah beberapa cara yang saya tahu untuk menemukan nama perangkat SCSI

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (dari paket util-linux> = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
SamK
sumber