Come posso correlare i dispositivi / dev / sd all'hardware che rappresentano?


35

Un'unità sta iniziando a guastarsi e conosco il dispositivo solo per la sua /dev/sdbdesignazione del file del dispositivo. Quali sono i modi in cui posso usare per correlare quel file di dispositivo a un dispositivo hardware reale per sapere quale unità sostituire fisicamente?

Bonus: cosa succede se non ho /dev/disk/le relative sottodirectory su questa installazione? (Che, purtroppo, non lo faccio)


Nessun controller RAID?
ewwhite,

@ewwhite Non ai fini di questa domanda, no. =)
Wesley l'

btw. se non hai la /dev/disk/directory probabilmente non hai udev.
Ulrich Dangel,

@UlrichDangel Molto attento perché ... Non ho udev. = (
Wesley

Risposte:


21

Puoi guardare in /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

O se non lo hai /sys, puoi guardare /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

Fantastico, ho /sys/(e anche /proc/) molte informazioni fantastiche lì. Lo sto ancora consumando.
Wesley,

Inoltre, dai un'occhiata a / dev / disk / by-path (supponendo che udev lo supporti). Certo, gli OP non lo fanno, quindi ...
Derobert l'

14
hdparm -i /dev/sdb

Ciò dovrebbe fornire il modello e il numero di serie dell'unità.


Ciò funzionerebbe per la maggior parte delle situazioni, credo. Tuttavia, per qualche motivo il controller in questo server è impreciso. L'esecuzione di quel comando mi fa guadagnare questo:HDIO_GET_IDENTITY failed: Invalid argument
Wesley l'

1
smartctl -ivale la pena provare anche. Funziona su unità SCSI, mentre hdparm spesso no.
derobert,

Non funziona con i dispositivi USB
Mads Skjern il

12

Come l'inimitabile Gilles menzionato in questa sua risposta , se il tuo kernel lo usa udevpuoi usare il udevadmcomando per interrogare un dispositivo:

udevadm info -n /dev/sda -a

(Purtroppo, in alcuni casi [doppiamente triste è che in questo caso è vero per me] udev non viene utilizzato e / o udevadm non è disponibile.)


8

Se riesci a vedere il LED sull'unità o ad ascoltare il rumore del disco, puoi eseguire

sudo cat /dev/sdb >/dev/null

e vedere quale unità improvvisamente diventa continuamente attiva. Oppure, se stai facendo rumore,

sudo find /mount/point >/dev/null

che farà muovere di più le testine (potrebbe essere meglio non farlo sul disco guasto e utilizzare invece un processo di eliminazione con gli altri dischi).


2
Avevo considerato come far sì che le luci diventassero ammiccanti , quindi questa è una risposta a quella mia curiosità. =)
Wesley l'

1
Alcune unità hanno un LED in più per questo, ma di solito si trovano solo in unità di livello aziendale (leggere stranamente costose a capacità relativamente bassa). Non so come lavorare quei LED, ma il ddtrucco di solito funziona abbastanza bene.
jippie,

@WesleyDavid Anche se non ci sono LED, l'ascolto del rumore può essere un'ultima risorsa. Non è necessario utilizzare ddqui ( né nella maggior parte dei casi ), cato qualsiasi altro programma che legge da un file lo farà.
Gilles 'SO- smetti di essere malvagio' il

4

Supponendo che questo sia Linux, la cosa più ovvia è controllare dmesg per dove il kernel inizializza il dispositivo per la prima volta. Registra il modello di unità.


Controlla unix.stackexchange.com/questions/39886/… per maggiori dettagli.
jippie,

Sì, è Linux. In particolare Debian 4. Ho controllato dmesg, ma stranamente non ho visto alcuna menzione di un modello di unità. Forse sto leggendo male.
Wesley,

4

Ho 4 metodi. Il primo è il più semplice:

dmesg | egrep "sd[a-z]"

Per gli altri, non sono sicuro che abbiano bisogno di / dev / disk ad eccezione di questo:

ls -lF /dev/disk/by-uuid

Gli altri:

blkid -o list -c /dev/null

E l'ovvio:

fdisk -l

3

Ecco alcuni modi che conosco per trovare il nome del dispositivo SCSI

  • dmesg | egrep "sd[a-z]"
  • lsblk --scsi (dal pacchetto util-linux> = v2.22)
  • lshw -C disk
  • ls -ld /sys/block/sd*/device
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.