¿Cómo relaciono los dispositivos / dev / sd con el hardware que representan?

35

Una unidad comienza a fallar y solo conozco el dispositivo por su /dev/sdbdesignación de archivo de dispositivo. ¿Cuáles son las formas en que puedo usar para correlacionar ese archivo de dispositivo con un dispositivo de hardware real para saber qué unidad reemplazar físicamente?

Bonificación: ¿Qué sucede si no tengo /dev/disk/y sus subdirectorios en esta instalación? (Lo cual, lamentablemente, no)

Wesley
fuente
¿Sin controlador RAID?
ewwhite
@ewwhite No para los fines de esta pregunta, no. =)
Wesley
por cierto. si no tiene el /dev/disk/directorio, probablemente no tenga udev.
Ulrich Dangel
@UlrichDangel Muy observador porque ... no tengo udev. = (
Wesley

Respuestas:

21

Puedes mirar en /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 si no tiene /sys, puede mirar /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
Manitas5
fuente
Impresionante, tengo /sys/(así como /proc/) mucha información excelente allí. Aún consumiéndolo.
Wesley
Además, eche un vistazo a / dev / disk / by-path (suponiendo que su udev lo admita). Por supuesto, los OP no, así que ...
derobert
14
hdparm -i /dev/sdb

Eso debería darle el modelo y el número de serie de la unidad.

Martin Barry
fuente
Esto funcionaría para la mayoría de las situaciones, creo. Sin embargo, por alguna razón, el controlador en este servidor es incompleto. Ejecutar ese comando me gana esto:HDIO_GET_IDENTITY failed: Invalid argument
Wesley
1
smartctl -ivale la pena intentarlo también. Funciona en unidades SCSI, mientras que hdparm a menudo no lo hará.
derobert
No funciona con unidades USB
Mads Skjern
12

Como el inimitable Gilles mencionó en esta respuesta suya , si su núcleo lo usa udev, puede usar el udevadmcomando para interrogar a un dispositivo:

udevadm info -n /dev/sda -a

(Lamentablemente, en algunos casos [doblemente triste es que es cierto en este caso para mí] udev no se usa y / o udevadm no está disponible).

Wesley
fuente
8

Si puede ver el LED en la unidad o escuchar el ruido del disco, puede ejecutar

sudo cat /dev/sdb >/dev/null

y ver qué unidad de repente se activa continuamente. O, si vas por ruido,

sudo find /mount/point >/dev/null

lo que hará que las cabezas se muevan más (puede ser mejor no hacerlo en el disco que falla y, en su lugar, usar un proceso de eliminación con los otros discos).

jippie
fuente
2
Había considerado cómo hacer que las luces se apagaran , así que esta es una respuesta a esa curiosidad mía. =)
Wesley
1
Algunas unidades tienen un LED adicional para esto, pero generalmente solo se encuentran en unidades de grado empresarial (lectura extrañamente costosa a una capacidad relativamente baja). No sé cómo trabajar esos LED, pero el ddtruco generalmente funciona lo suficientemente bien.
jippie
@WesleyDavid Incluso si no hay LED, escuchar el ruido puede ser el último recurso. No hay necesidad de usar ddaquí ( ni en la mayoría de las circunstancias ), cato cualquier otro programa que lea de un archivo funcionará.
Gilles 'SO- deja de ser malvado'
4

Asumiendo que esto es Linux, lo más obvio es verificar dmesg para saber dónde el núcleo inicializa el dispositivo por primera vez. Registra el modelo de la unidad.

Julian Yon
fuente
Visite unix.stackexchange.com/questions/39886/… para obtener más detalles.
jippie
Si, es Linux. Específicamente Debian 4. Revisé dmesg, pero no vi ninguna mención de un modelo de unidad, por extraño que parezca. Quizás lo estoy leyendo mal.
Wesley
4

Tengo 4 métodos El primero es el más fácil:

dmesg | egrep "sd[a-z]"

Para los demás, no estoy seguro de si necesitan / dev / disk, excepto este:

ls -lF /dev/disk/by-uuid

Los demás:

blkid -o list -c /dev/null

Y lo obvio:

fdisk -l
Samuel Duclos
fuente
3

Aquí hay algunas maneras que sé para encontrar el nombre del dispositivo SCSI

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