/ Dev / sd aygıtlarını temsil ettikleri donanıma nasıl ilişkilendiririm?


35

Bir sürücü arızalanmaya başlıyor ve ben sadece cihazı kendi /dev/sdbaygıt dosyası tanımlamasıyla tanıyorum . Hangi aygıtın fiziksel olarak değiştirileceğini bilmek için bu aygıt dosyasını gerçek bir donanım aygıtıyla ilişkilendirmek için kullanabileceğim yöntemler nelerdir?

Bonus: Peki ya /dev/disk/bu kurulumda alt dizinleri yoksa ? (Ne yazık ki yapamam)


RAID denetleyicisi yok mu?
ewwhite ile

@wwhite Bu sorunun amacı için değil, hayır. =)
Wesley,

Btw. Eğer /dev/disk/dizininiz yoksa muhtemelen udev'unuz yoktur.
Ulrich Dangel

@UlrichDangel Çok gözlemci çünkü ... udevum yok. = (
Wesley

Yanıtlar:


21

Bakabilirsiniz /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

Ya da yoksa /sys, şunlara bakabilirsiniz /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

Müthiş, orada /sys/(yanı sıra /proc/) bir sürü harika bilgi var. Hala onu tüketiyorum.
Wesley

Ayrıca, / dev / disk / by-path dizinine bakın (udev'inizin desteklediğini varsayalım). Tabii ki, OP'ler, öyle değil ...
derobert 21

14
hdparm -i /dev/sdb

Bu size sürücünün modelini ve seri numarasını vermelidir.


Bunun çoğu durumda işe yarayacağına inanıyorum. Ancak, bazı nedenlerden dolayı bu sunucudaki denetleyici kabataslakdır. Bu komutu yerine getirmek bana şunu kazandırır:HDIO_GET_IDENTITY failed: Invalid argument
Wesley

1
smartctl -ide denemeye değer. SCSI sürücülerinde çalışır, oysa hdparm sık sık çalışmaz.
derobert

USB drices ile çalışmıyor
Mads Skjern

12

Eşsiz Gilles'un bu cevabında bahsettiği gibi , eğer çekirdeğiniz kullanıyorsa bir komutu sorgulamak için udevkullanabilirsiniz udevadm:

udevadm info -n /dev/sda -a

(Ne yazık ki, bazı durumlarda [iki kat üzücü, bu durumda benim için doğrudur] udev kullanılmıyor ve / veya udevadm mevcut değil.)


8

Sürücüdeki LED'i görebiliyorsanız veya disk gürültüsünü dinliyorsanız,

sudo cat /dev/sdb >/dev/null

ve hangi sürücünün aniden sürekli aktif hale geldiğini görün. Veya eğer gürültüden çekiyorsanız,

sudo find /mount/point >/dev/null

bu da başları daha fazla hareket ettirecek (arızalı disk üzerinde yapmamak ve bunun yerine diğer disklerle bir eleme işlemi kullanmak daha iyi olabilir).


2
Işıkları nasıl durup parlamaya başladığını düşünmüştüm , bu yüzden bu merakımın bir cevabı. =)
Wesley,

1
Bazı sürücülerin bunun için fazladan bir LED'i vardır, ancak genellikle yalnızca kurumsal sınıf sürücülerde bulunurlar (nispeten düşük kapasitede tuhaf bir şekilde pahalıdır). Bu LED'lerin nasıl çalıştığını bilmiyorum, ama ddpüf noktası genellikle yeterince iyi çalışıyor.
jippie

@WesleyDavid LED olmasa bile, gürültüyü dinlemek son bir başvuru olabilir. Burada kullanmaya gerek yoktur dd( veya çoğu durumda ), catya da bir dosyadan okuyan başka bir program yapacaktır.
Gilles 'SO- kötülük olmayı bırak'

4

Bunun Linux olduğu varsayılırsa, en belirgin şey, çekirdeğin aygıtı ilk kez başlattığı yer için dmesg'i kontrol etmektir. Sürücü modelini günlüğe kaydeder.


Kontrol unix.stackexchange.com/questions/39886/... Daha fazla ayrıntı için.
jippie

Evet, bu Linux. Özellikle Debian 4. dmesg'i kontrol ettim ama tuhaf bir şekilde bir sürücü modelinden bahsetmedim. Belki de yanlış okuyorum.
Wesley

4

4 yöntemim var. Birincisi en kolay olanıdır:

dmesg | egrep "sd[a-z]"

Diğerleri için bunun dışında / dev / diske ihtiyaçları olup olmadığından emin değilim:

ls -lF /dev/disk/by-uuid

Diğerleri:

blkid -o list -c /dev/null

Ve açık:

fdisk -l

3

SCSI aygıt adını bulmayı bildiğim bazı yollar

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (util-linux paketinden> = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.