¿Cómo recuperar una matriz mdadm en Synology NAS con la unidad en estado "E"?

12

Synology tiene una versión personalizada del controlador md y los conjuntos de herramientas mdadm que agrega un indicador 'DriveError' a la estructura rdev-> flags en el kernel.

Efecto neto: si tiene la mala suerte de tener una falla en la matriz (primera unidad), combinada con un error en una segunda unidad, la matriz entra en el estado de no permitirle reparar / reconstruir la matriz a pesar de que las lecturas de la unidad están funcionando multa.

En este punto, no estoy realmente preocupado por esta pregunta desde el punto de vista de ESTA matriz, ya que ya saqué el contenido y tengo la intención de reconstruirlo, pero más de querer tener una ruta de resolución para esto en el futuro , ya que es la segunda vez que me muerde, y sé que he visto a otros hacer preguntas similares en foros.

El soporte de Synology ha sido menos que útil (y en su mayoría no responde), y no compartirá NINGUNA información en absoluto sobre el manejo de las incursiones en la caja.

Contenido de / proc / mdstat:

ds1512-ent> cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md2 : active raid5 sdb5[1] sda5[5](S) sde5[4](E) sdd5[3] sdc5[2]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUE]

md1 : active raid1 sdb2[1] sdd2[3] sdc2[2] sde2[4] sda2[0]
      2097088 blocks [5/5] [UUUUU]

md0 : active raid1 sdb1[1] sdd1[3] sdc1[2] sde1[4] sda1[0]
      2490176 blocks [5/5] [UUUUU]

unused devices: <none>

Estado de un mdadm --detail / dev / md2:

/dev/md2:
        Version : 1.2
  Creation Time : Tue Aug  7 18:51:30 2012
     Raid Level : raid5
     Array Size : 11702126592 (11160.02 GiB 11982.98 GB)
  Used Dev Size : 2925531648 (2790.00 GiB 2995.74 GB)
   Raid Devices : 5
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Fri Jan 17 20:48:12 2014
          State : clean, degraded
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           Name : MyStorage:2
           UUID : cbfdc4d8:3b78a6dd:49991e1a:2c2dc81f
         Events : 427234

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       21        1      active sync   /dev/sdb5
       2       8       37        2      active sync   /dev/sdc5
       3       8       53        3      active sync   /dev/sdd5
       4       8       69        4      active sync   /dev/sde5

       5       8        5        -      spare   /dev/sda5

Como puede ver, / dev / sda5 se ha vuelto a agregar a la matriz. (Fue la unidad que falló por completo), pero aunque md ve la unidad como repuesto, no se reconstruirá en ella. / dev / sde5 en este caso es la unidad del problema con el estado (E) DiskError.

He intentado detener el dispositivo md, ejecutar fuerza para volver a ensamblar, eliminar / leer sda5 del dispositivo / etc. No hay cambio en el comportamiento.

Pude recrear completamente la matriz con el siguiente comando:

mdadm --stop /dev/md2
mdadm --verbose \
   --create /dev/md2 --chunk=64 --level=5 \
   --raid-devices=5 missing /dev/sdb5 /dev/sdc5 /dev/sdd5 /dev/sde5

lo que devolvió la matriz a este estado:

md2 : active raid5 sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]

Luego volví a agregar / dev / sda5:

mdadm --manage /dev/md2 --add /dev/sda5

después de lo cual comenzó una reconstrucción:

md2 : active raid5 sda5[5] sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
      [>....................]  recovery =  0.1% (4569508/2925531648) finish=908.3min speed=53595K/sec

Tenga en cuenta que la posición de la unidad "que falta" coincide con la posición exacta de la ranura que falta.

Una vez que esto termine, creo que probablemente extraeré la unidad cuestionable y la reconstruiré nuevamente.

Estoy buscando alguna sugerencia sobre si hay alguna forma "menos aterradora" de hacer esta reparación, o si alguien ha pasado por esta experiencia con una matriz de Synology y sabe cómo forzarla a reconstruir, además de desconectar el dispositivo md y recrear la matriz desde cero.

Nathan Neulinger
fuente
Me encuentro en una situación similar. ¿Resolvió esto con éxito?
dvorak
Sí, pude reconstruir la matriz siguiendo los pasos anteriores. Sin embargo, seguí con la limpieza y el cambio de R5 a R6, porque en este punto, estoy muy descontento con el comportamiento de "tanque de toda la matriz" de Synology que quería asegurarme de tolerar la falla de más de una unidad " ". En nuestro caso, la segunda unidad que tenía el error "falla" pasó las pruebas inteligentes extendidas sin siquiera un solo problema.
Nathan Neulinger el
Gracias por la útil guía. No estoy demasiado seguro de jugar con todo esto, no soy un especialista en incursiones. Ahora me enfrento al mismo problema, pero en mi caso, tengo un solo disco RAID 1 array (/ dev / md3) con / dev / sde3 marcado con el temido [E]. Supongo que debería ser posible para mí seguir los mismos pasos que usted, pero dado que ese es el disco único de la matriz, no sé qué hará ;-). De todos modos, el comando mdadm --stop / dev / md3 falla (Dispositivo o recurso ocupado). Supongo que buscaré en Google un poco más .. =)
dSebastien
Si no puede detener la matriz, parece que algo la está usando, es decir, está montada o hay alguna otra tarea ejecutándose en ese dispositivo.
Nathan Neulinger
2
Afortunadamente para mí, Synology me ayudó a solucionar el problema. Tuvieron la amabilidad de proporcionarme los comandos que ejecutaban. He puesto la información en mi blog en caso de que alguien más se encuentre con este problema: dsebastien.net/2015/05/19/…
dSebastien

Respuestas:

3

Solo una adición a la solución que encontré después de experimentar el mismo problema. Seguí la publicación de blog de dSebastien sobre cómo volver a crear la matriz:

Descubrí que ese método de recrear la matriz funcionó mejor que este método anterior. Sin embargo, después de volver a crear la matriz, el volumen aún no se mostraba en la interfaz web. Ninguno de mis LUN se mostraba. Básicamente muestra una nueva matriz con nada configurado. Me puse en contacto con el soporte de Synology, y se conectaron a distancia para solucionar el problema. Desafortunadamente, se conectaron mientras yo estaba lejos de la consola. Sin embargo, logré capturar la sesión y examiné lo que hicieron. Mientras intentaba recuperar algunos de mis datos, la unidad se bloqueó nuevamente y volví a la misma situación. Volví a crear la matriz como en el blog de dSebastien y luego revisé la sesión de sincronización para realizar su actualización. Después de ejecutar los siguientes comandos, mi matriz y los LUN aparecieron en la interfaz web, y pude trabajar con ellos. Prácticamente no tengo experiencia en Linux, pero estos fueron los comandos que realicé en mi situación. Espero que esto pueda ayudar a alguien más, pero use esto bajo su propio riesgo. Sería mejor ponerse en contacto con el soporte de Synology y hacer que solucionen esto por usted, ya que esta situación podría ser diferente a la suya.

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> spacetool --synoblock-enum
****** Syno-Block of /dev/sda ******
//I've removed the output. This should display info about each disk in your array

DiskStation> vgchange -ay
  # logical volume(s) in volume group "vg1" now active

DiskStation> dd if=/dev/vg1/syno_vg_reserved_area of=/root/reserved_area.img
24576+0 records in
24576+0 records out

DiskStation> synospace --map_file -d
Success to dump space info into '/etc/space,/tmp/space'

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Not Pass, # conflict 

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 
Nirvaan
fuente
1

Otra adición: me encontré con un problema muy similar con mi dispositivo de un disco / nivel RAID 0.

El soporte de Synology fue muy útil y restauró mi dispositivo. Esto es lo que sucedió, espero que esto ayude a otros:

Mi disco tenía errores de lectura en un bloque en particular, los mensajes en el registro del sistema ( dmesg) fueron:

[4421039.097278] ata1.00: read unc at 105370360
[4421039.101579] lba 105370360 start 9437184 end 5860528064
[4421039.106917] sda3 auto_remap 0
[4421039.110097] ata1.00: exception Emask 0x0 SAct 0x2 SErr 0x0 action 0x6
[4421039.116744] ata1.00: edma_err_cause=00000084 pp_flags=00000003, dev error, EDMA self-disable
[4421039.125410] ata1.00: failed command: READ FPDMA QUEUED
[4421039.130767] ata1.00: cmd 60/00:08:b8:d2:47/02:00:06:00:00/40 tag 1 ncq 262144 in
[4421039.130772]          res 41/40:00:f8:d2:47/00:00:06:00:00/40 Emask 0x409 (media error) <F>
[4421039.146855] ata1.00: status: { DRDY ERR }
[4421039.151064] ata1.00: error: { UNC }
[4421039.154758] ata1: hard resetting link
[4421039.667234] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300)
[4421039.887286] ata1.00: configured for UDMA/133
[4421039.891777] ata1: UNC RTF LBA Restored
[4421039.895745] ata1: EH complete

Unos segundos más tarde recibí el terrible Volume 1 has crashedcorreo de mi dispositivo.

- Descargo de responsabilidad: asegúrese de reemplazar el nombre del dispositivo por el suyo y no simplemente copie y pegue estos comandos, ya que esto podría empeorar las cosas. -

Después de detener smb pude volver a montar la partición de solo lectura y ejecutar e2fsk con badblocks check ( -c):

umount /dev/md2
e2fsck -C 0 -v -f -c /dev/md2

(También se podría utilizar e2fsck -C 0 -p -v -f -c /dev/md2para ejecutar lo más desatendido posible, aunque esto no funcionó en mi caso, porque los errores tuvieron que ser reparados manualmente. Así que tuve que reiniciar e2fsck. Conclusión: -p no tiene mucho sentido en caso de error de disco)

Aunque e2fsck pudo corregir los errores y smartctl tampoco mostró más aumento en Raw_Read_Error_Rate, el volumen aún no se montaría en modo lectura-escritura por el dispositivo. DSM todavía mostró "volumen bloqueado"

Entonces abrí un boleto con apoyo. Tomó bastante tiempo poner las cosas en marcha primero, pero al final lo arreglaron reconstruyendo la matriz RAID con:

synospace --stop-all-spaces
syno_poweroff_task -d 
mdadm -Sf /dev/md2
mdadm -AfR /dev/md2 /dev/sda3

Asegúrese de verificar los nombres de sus dispositivos ( /dev/mdXy /dev/sdaX) antes de hacer nada. cat /proc/mdstatmostrará la información relevante.

GWu
fuente