¿Cómo puedo identificar físicamente una sola unidad en una matriz RAID?

16

Tengo una bahía de unidad externa con 4 discos eSATA. Mi sistema tiene una tarjeta eSATA de 4 puertos, así como un par de unidades de hardware RAID1 internas. Las unidades externas están en pares RAID1 de software como /dev/md0y /dev/md1. Ambos se han configurado como volúmenes físicos LVM para crear mi storagevggrupo de volúmenes LVM. Recientemente, una sola unidad se desconectó (sospecho que hay cables), pero no parece haber una buena manera de identificar físicamente qué unidad necesito verificar, especialmente porque el orden de inicialización no es el mismo entre las botas. ¿Cómo puedo encontrar el disco que necesita atención?

Kees Cook
fuente

Respuestas:

15

La Utilidad de Discos (ubicada en Sistema -> Administración) le dará los números de serie para todos sus discos.

Esto es lo que veo (mira la parte superior derecha de la serie). Notará que esta unidad está dentro de una matriz RAID mdadm. La Utilidad de disco puede penetrar en la matriz para acceder al disco sin formato.

Utilidad de disco

Tengo 6 del mismo modelo de disco en mi PC, así que dibujé un pequeño diagrama que muestra su posición en el estuche y el número de serie para poder localizarlos rápidamente en serie en una emergencia.

Lo contrario también es cierto en que si un disco muere, solo necesito encontrar qué discos están apareciendo y puedo eliminarlos hasta que sepa qué serie falta.

Editar: Estoy tratando de mejorar mi bash-fu, así que escribí esta versión de línea de comando para darle una lista de números de serie de disco que están actualizados en su máquina. fdiskpuede arrojar algunos errores, pero eso no contamina la lista:

for disk in `sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
    sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done

(Y puede desmenuzarlo en una línea si lo necesita, lo he dividido para facilitar la lectura)

Edición 2: ls /dev/disk/by-id/ es algo más fácil;)

Oli
fuente
El uso de números de serie puede funcionar bien si uno ya los ha grabado externamente. En el caso de un sistema que no se puede apagar pero que tiene unidades de intercambio en caliente, sería bueno poder localizar la unidad fallida a través de LED.
Kees Cook, el
También notará que hay un identificador de "Ubicación" en la Utilidad de Discos, que muestra en qué puerto del adaptador host está conectada la unidad. Es posible que pueda adivinar cuáles son los puertos sin desconectar las unidades, pero no puedo especular esto realmente funciona.
Oli
En su caso, detener la matriz de incursiones durante 5 minutos, desenchufar cada unidad y obtener el serial no debería ser demasiado irrazonable y no debería requerir apagar la máquina ... Pero la RAID tendría que desactivarse a menos que lo desee Está reconstruyendo.
Oli
"Ubicación" no siempre es útil, por ejemplo, en el caso de PATA, a menudo hay 2 discos en 1 puerto, y si ambos discos están configurados en "AUTO" para la negociación maestro / esclavo, probablemente no haya forma de averiguar cuál es cuál ? Sin embargo
JanC
1
¿Todavía existen unidades PATA? He estado solo en SATA desde ... Bueno, ya que un disco de 112 gig se consideraba grande. El problema de encontrar el puerto realmente no cuenta aquí porque estamos hablando de una bahía de unidad externa. Pero seguro. En las placas base de consumo, probablemente necesitará consultar el manual para tener una idea de qué puerto es qué ... Incluso entonces, el software podría atribuirles un orden diferente.
Oli
5

Si tiene problemas para hacer coincidir el número de serie de la unidad o la indicación de puerto con las ubicaciones espaciales de sus discos, puede ejecutar cat /dev/sdz >/dev/null(dónde sdzestá la unidad fallida) y ubicar la unidad por su LED (o por el oído si no está en una sala de servidores ruidosa) ) Si la unidad ni siquiera se enciende, eso debería ser suficiente para saber cuál es. Asegúrese de poner una etiqueta visible en los discos para la próxima vez.

Gilles 'SO- deja de ser malvado'
fuente
Esto es puro genio, ya que tiene el efecto secundario de dejar la luz encendida, mientras que todos los demás parpadean
HDave
3

La información que udisksproporciona (ya sea en la línea de comandos o en la Utilidad de disco GNOME ) incluye el número de serie del disco. En los discos que tengo, el número de serie está impreso en la parte superior y en la parte frontal (el que está en el otro lado del que contiene los conectores), tanto como números como con un código de barras. Desafortunadamente, la mayoría de las carcasas de PC hacen que sea imposible leer esas publicaciones en serie sin extraer el disco ...

También puede encontrar los números de serie en /dev/disk/by-id/.

Como su disco está fuera de línea, ¿supongo que el núcleo no lo "ve" actualmente? En ese caso, es posible que deba eliminarse: desea el disco con un número de serie que no esté en la lista ...

JanC
fuente
2

Con el raid de software, este es un problema común. Las incursiones de hardware tienden a tener una característica que le permite parpadear el LED asociado con una unidad, suponiendo que su hardware lo admita.

Pero con el software RAID cada unidad tiene algunos metadatos únicos. Puede leerlo desde cada unidad utilizando el comando mdadm -E /dev/sda1para cada unidad en la matriz, modificando los dispositivos para que coincidan con su entorno. Entonces, si tiene una situación en la que una unidad le está dando problemas y está actualmente fuera de línea. Lo ejecutaría en cada unidad que esté en línea, registrando el número menor para cada unidad. Luego, utilizando un Live CD que admite MD, el CD de rescate del sistema es bueno, con solo una unidad a la vez conectada y ejecutando este comando para encontrar al culpable. Esto probablemente no sea tan sencillo como te gustaría, pero debería funcionar.

3dinfluence
fuente
¿Quizás haya números de serie que pueda obtener a través de Linux que también estén impresos en la unidad física?
erjiang
1

lsscsi

$ lsscsi -l
[0: 0: 0: 0] disco ATA TOSHIBA THNS128G AGLA / dev / sda
  state = running queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 timeout = 30
[1: 0: 0: 0] cd / dvd HL-DT-ST DVDRAM GT30N LT09 / dev / sr0
  state = running queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30

Si el disco no está funcionando, es una buena señal. Entonces / proc / mdstat le dirá qué miembro falló. Suponiendo que no tiene una buena unidad de disco tendrá que profundizar por número de serie, sg_inq debería ayudar con eso.

Si tiene una buena caja de unidades, debería poder habilitar la baliza de disco para ayudar a identificar el miembro defectuoso.

http://www.mail-archive.com/[email protected]/msg07307.html

ppetraki
fuente
1

Para obtener los códigos de serie de todos los discos duros ejecutados:

lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial


KNAME MOUNTPOINT   FSTYPE   SIZE MAJ:MIN NAME   STATE   RM ROTA RO TYPE LABEL         MODEL            SERIAL
sda                         3.7T   8:0   sda    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX4
sda1                        3.7T   8:1   `-sda1          0    1  0 part
sdb   /mnt/backup3 ext4     3.7T   8:16  sdb    running  0    1  0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc                         3.7T   8:32  sdc    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1  /mnt/backup2 ext4     3.7T   8:33  `-sdc1          0    1  0 part
sdd                         3.7T   8:48  sdd    running  0    1  0 disk               WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1  /mnt/backup1 ext4     3.7T   8:49  `-sdd1          0    1  0 part
BVBMedia
fuente
0

Es simple. Este, por ejemplo, es el resultado en mi PC:

andrea@centurion:~$ cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdh1[1] sdg1[0]
      312568576 blocks [2/2] [UU]

unused devices: <none>

como pueden ver, me he unido / dev / sdh1 y / dev / sdg1 en / dev / md0

Andrea Grandi
fuente
1
Correcto, pero esto no me dice nada sobre dónde están físicamente en el gabinete de la unidad externa.
Kees Cook, el
0

Dado que su matriz no tiene inteligencia SES y el LED de actividad del disco no se puede conducir directamente, por ejemplo, necesita soporte de firmware para eso. La única otra cosa que puede hacer es inmovilizar la E / S lo mejor que pueda y luego usar algo como ddo sg_readen los miembros mismos para avanzar un patrón de lecturas en el disco que crea un patrón de parpadeo identificable de manera única utilizando el LED de actividad faro de hombre si quieres. Realmente es su única alternativa, a menos que bajar la matriz sea una opción.

Este tipo de capacidad de servicio es lo que diferencia a las matrices de almacenamiento externo. Como no planificó con anticipación garabateando los números de serie y sus posiciones, no puede hacer la simple diferencia establecida para identificar la unidad defectuosa. Es el precio que paga por la solución que implementó, ya sea que se dé cuenta o no, pero bueno, viva y aprenda.

ppetraki
fuente