Mdadm: el reemplazo de la unidad aparece como de repuesto y se niega a sincronizar

Preludio

Tenía los siguientes dispositivos en mi /dev/md0 RAID 6: /dev/sd[abcdef]

Las siguientes unidades también estaban presentes, no relacionadas con el RAID: /dev/sd[gh]

Las unidades siguientes eran parte de un lector de tarjetas que estaba conectado, una vez más, no relacionado: /dev/sd[ijkl]

Análisis

El cable SATA de sdf fue malo (se podría decir que fue desconectado mientras estaba en uso), y sdf fue posteriormente rechazado de la matriz /dev/md0 . He reemplazado el cable y la unidad estaba de vuelta, ahora en /dev/sdm . Por favor, no desafíe mi diagnóstico, no hay ningún problema con la unidad.

mdadm --detail /dev/md0 mostró sdf(F) , es decir, que sdf era defectuoso. Así que utilicé mdadm --manage /dev/md0 --remove faulty para eliminar las unidades defectuosas.

Ahora mdadm --detail /dev/md0 mostró "eliminado" en el espacio donde solía ser sdf .

 Root @ galaxy: ~ # mdadm --detail / dev / md0
 / Dev / md0:
         Versión: 1.2
   Tiempo de Creación: Mie Jul 30 13:17:25 2014
      Nivel de Incursión: raid6
      Tamaño de la matriz: 15627548672 (14903.59 GiB 16002.61 GB)
   Dev Tamaño: 3906887168 (3725.90 GiB 4000.65 GB)
    Dispositivos de incursión: 6
   Total de dispositivos: 5
     Persistencia: El superbloque es persistente

   Propósito Bitmap: Interno

     Tiempo de Actualización: Mar Mar 17 21:16:14 2015
           Estado: activo, degradado
  Dispositivos activos: 5
 Dispositivos de trabajo: 5
  Dispositivos fallidos: 0
   Dispositivos de repuesto: 0

          Diseño: izquierda-simétrica
      Tamaño del pedazo: 512K

            Nombre: eclipse: 0
            UUID: cc7dac66: f6ac1117: ca755769: 0e59d5c5
          Eventos: 67205

     Número Mayor Minor Estado RaidDevice
        0 8 0 0 sincronización activa / dev / sda
        1 8 32 1 sincronización activa / dev / sdc
        4 0 0 4 eliminado
        3 8 48 3 Sincronización activa / dev / sdd
        4 8 64 4 sincronización activa / dev / sde
        5 8 16 5 Sincronización activa / dev / sdb

Por alguna razón el RaidDevice del dispositivo "eliminado" ahora coincide con uno que está activo. De todos modos, intentemos agregar el dispositivo anterior (ahora conocido como /dev/sdm ) porque esa era la intención original:

 Root @ galaxy: ~ # mdadm --add / dev / md0 / dev / sdm
 Mdadm: añadido / dev / sdm
 Root @ galaxy: ~ # mdadm --detail / dev / md0
 / Dev / md0:
         Versión: 1.2
   Tiempo de Creación: Mie Jul 30 13:17:25 2014
      Nivel de Incursión: raid6
      Tamaño de la matriz: 15627548672 (14903.59 GiB 16002.61 GB)
   Dev Tamaño: 3906887168 (3725.90 GiB 4000.65 GB)
    Dispositivos de incursión: 6
   Total de dispositivos: 6
     Persistencia: El superbloque es persistente

   Propósito Bitmap: Interno

     Tiempo de Actualización: Mar Mar 17 21:19:30 2015
           Estado: activo, degradado
  Dispositivos activos: 5
 Dispositivos de trabajo: 6
  Dispositivos fallidos: 0
   Dispositivos de repuesto: 1

          Diseño: izquierda-simétrica
      Tamaño del pedazo: 512K

            Nombre: eclipse: 0
            UUID: cc7dac66: f6ac1117: ca755769: 0e59d5c5
          Eventos: 67623

     Número Mayor Minor Estado RaidDevice
        0 8 0 0 sincronización activa / dev / sda
        1 8 32 1 sincronización activa / dev / sdc
        4 0 0 4 eliminado
        3 8 48 3 Sincronización activa / dev / sdd
        4 8 64 4 sincronización activa / dev / sde
        5 8 16 5 Sincronización activa / dev / sdb

        6 8 192 - spare / dev / sdm

Como se puede ver, el dispositivo se muestra como un repuesto y se niega a sincronizar con el resto de la matriz:

 Root @ galaxy: ~ # cat / proc / mdstat
 Personalidades: [raid6] [raid5] [raid4]
 Md0: activo raid6 sdm [6] (s) sdb [5] sda [0] sde [4] sdd [3] sdc [1]
       15627548672 bloques super 1,2 nivel 6, trozo 512k, algoritmo 2 [6/5] [UU_UUU]
       Mapa de bits: 17/30 páginas [68KB], 65536KB fragmento

 Dispositivos no utilizados: 

También he intentado usar mdadm --zero-superblock /dev/sdm antes de añadir, con el mismo resultado.

La razón por la que estoy utilizando RAID 6 es proporcionar alta disponibilidad. No aceptaré detener /dev/md0 y volver a --assume-clean con --assume-clean o similar como soluciones para resolver esto. Esto necesita ser resuelto en línea, de lo contrario no veo el punto de usar mdadm.

Después de horas de Googling y alguna ayuda extremadamente sabio de JyZyXEL en el canal # Freenode de linux-raid, tenemos una solución! No hubo una sola interrupción en la matriz RAID durante este proceso – exactamente lo que necesitaba y esperaba de mdadm.

Para alguna razón (actualmente desconocida), el estado RAID se congeló. El comando ganador para averiguar esto es cat /sys/block/md0/md/sync_action :

 Raíz @ galaxia: ~ # cat / sys / bloque / md0 / md / sync_action
 congelado

En pocas palabras, es por eso que no estaba utilizando los repuestos disponibles. Todo mi pelo se ha ido a costa de un simple comando gato!

Por lo tanto, simplemente descongelar la matriz:

 Root @ galaxy: ~ # echo inactivo> / sys / block / md0 / md / sync_action

Y usted está lejos!

 Raíz @ galaxia: ~ # cat / sys / bloque / md0 / md / sync_action
 recuperar
 Root @ galaxy: ~ # cat / proc / mdstat
 Personalidades: [raid6] [raid5] [raid4]
 Md0: active raid6 sdm [6] sdb [5] sda [0] sde [4] sdd [3] sdc [1]
       15627548672 bloques super 1,2 nivel 6, trozo 512k, algoritmo 2 [6/5] [UU_UUU]
       [> ....................] recuperación = 0,0% (129664/3906887168) acabado = 4016.8min velocidad = 16208K / seg
       Mapa de bits: 17/30 páginas [68KB], 65536KB fragmento

 Dispositivos no utilizados: 
 Root @ galaxy: ~ # mdadm --detail / dev / md0
 / Dev / md0:
         Versión: 1.2
   Tiempo de Creación: Mie Jul 30 13:17:25 2014
      Nivel de Incursión: raid6
      Tamaño de la matriz: 15627548672 (14903.59 GiB 16002.61 GB)
   Dev Tamaño: 3906887168 (3725.90 GiB 4000.65 GB)
    Dispositivos de incursión: 6
   Total de dispositivos: 6
     Persistencia: El superbloque es persistente

   Propósito Bitmap: Interno

     Tiempo de Actualización: Mar Mar 17 22:05:30 2015
           Estado: activo, degradado, recuperándose
  Dispositivos activos: 5
 Dispositivos de trabajo: 6
  Dispositivos fallidos: 0
   Dispositivos de repuesto: 1

          Diseño: izquierda-simétrica
      Tamaño del pedazo: 512K

  Estado de reconstrucción: 0% completado

            Nombre: eclipse: 0
            UUID: cc7dac66: f6ac1117: ca755769: 0e59d5c5
          Eventos: 73562

     Número Mayor Minor Estado RaidDevice
        0 8 0 0 sincronización activa / dev / sda
        1 8 32 1 sincronización activa / dev / sdc
        6 8 192 2 reconstrucción de repuesto / dev / sdm
        3 8 48 3 Sincronización activa / dev / sdd
        4 8 64 4 sincronización activa / dev / sde
        5 8 16 5 Sincronización activa / dev / sdb

Felicidad 🙂