Reconstruir raid5 tras fallo en disco

Al fallar un disco en un raid5, se debe eliminar el disco averiado del raid y reemplazarlo por uno nuevo. En caso de que su raid tuviese algún disco de reserva (spare) la integridad de sus datos no estará comprometida, en caso contrario deberá sustituir el disco dañado lo más rápido posible para evitar posibles pérdidas de dato en caso de fallo de un nuevo disco. En este tutorial aprenderá a eliminar el disco averidado del raid y a añadir un nuevo disco.

Tabla de contenidos

Comprobando el estado del raid
Tras recibir la alerta de fallo del raid, lo primero que debe hacer es verificar que es lo que está pasando. Para ello tan solo debe consultar el estado del raid con mdadm --detail /dev/mdX:
agd-desktop # mdadm --detail /dev/md0
/dev/md0:
          Version : 1.2
          Creation Time : Wed Sep 22 17:02:27 2010
          Raid Level : raid5
          Array Size : 2930060288 (2794.32 GiB 3000.38 GB)
          Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB)
          Raid Devices : 3
          Total Devices : 4
          Persistence : Superblock is persistent

          Update Time : Tue Feb 15 00:45:32 2011
          State : clean, degraded
          Active Devices : 3
          Working Devices : 3
          Failed Devices : 1
          Spare Devices : 0

          Layout : left-symmetric
          Chunk Size : 512K

          Name : agd-desktop:0  (local to host agd-desktop)
          UUID : 2b33bce9:f30571d8:efe03c61:898a4e57
          Events : 142

    Number   Major   Minor   Raid    Device State
       1              8         33        1         active sync   /dev/sdc1
       2              8         49        2         active sync   /dev/sdd1
       4              8         65        3         spare rebuilding   /dev/sdf1
       3              8         17        -          faulty spare

Como podemos ver, tenemos un raid5 formado por tres discos más un cuarto de reserva (spare). Debido a un fallo actualmente el raid está degrado debido a un fallo de uno de los discos. El disco averiado ha sido marcado automáticamente por mdadm, el disco de reserva a entrado a formar parte del raid y se está reconstruyendo el conjunto.

Eliminar el disco averiado del raid
Para eliminar el disco averiado, tan solo ha de ejecutar mdadm --remove /dev/mdX /dev/sdYX. En este caso, el disco averiado es /dev/sde, por lo que debemos ejecutar:
agd-desktop # mdadm --remove /dev/md0 /dev/sde1
mdadm: hot removed /dev/sde1 from /dev/md0

Una vez eliminado, al hacer una consulta sobre el estado del raid deberá obtener algo similar a:
agd-desktop # mdadm --detail /dev/md0
/dev/md0:
          Version : 1.2
          Creation Time : Wed Sep 22 17:02:27 2010
          Raid Level : raid5
          Array Size : 2930060288 (2794.32 GiB 3000.38 GB)
          Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB)
          Raid Devices : 3
          Total Devices : 3
          Persistence : Superblock is persistent

          Update Time : Tue Feb 15 00:45:32 2011
          State : clean, degraded
          Active Devices : 3
          Working Devices : 3
          Failed Devices : 0
          Spare Devices : 0

          Layout : left-symmetric
          Chunk Size : 512K

          Name : agd-desktop:0  (local to host agd-desktop)
          UUID : 2b33bce9:f30571d8:efe03c61:898a4e57
          Events : 142

    Number   Major   Minor   Raid   Device State
       1             8         33        1        active sync   /dev/sdc1
       2             8         49        2        active sync   /dev/sdd1
       4             8         65        3        spare rebuilding   /dev/sdf1

A continuación deberá reemplazar el disco por uno nuevo. Recuerde apagar el PC para esta tarea, salvo que su controladora SATA soporte desconexión en caliente.

Preparar el nuevo disco
Una vez tenga haya reemplazado el disco averiado, deberá particionar el disco siguiendo la misma estructura que los discos del raid activo. En caso de que usted use el disco completo, sin particionar, puede saltarse este paso. Aunque como ya se comentó en Montar un raid5 por software, esto no es recomendable sin embargo con un raid activo es imposible volver atrás, salvo que tenga posibilidad de contar con un nuevo juego de discos.

La forma más sencilla para llevar a cabo esta tarea es usar sfdisk para clonar el esquema de partición. Para ello usaremos la opción -d de sfdisk, la cual imprime la tabla de particiones en un formato legible por el propio sfdisk. Por lo que tan solo tendremos que usar una tubería para redireccionar la salida hacia sfdisk.
agd-desktop # sfdisk -d /dev/sdc
# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start=      63,     size=2930063157,   Id=fd
/dev/sdc2 : start=        0,     size=                  0,   Id= 0
/dev/sdc3 : start=        0,     size=                  0,   Id= 0
/dev/sdc4 : start=        0,     size=                  0,   Id= 0
agd-desktop ~ # sfdisk -d /dev/sdc | sfdisk /dev/sde
Comprobando que nadie esté utilizando este disco en este momento...
Correcto

Disco /dev/sde: 182401 cilindros, 255 cabezas, 63 sectores/pista

sfdisk: ERROR: el sector 0 no tiene una firma msdos
/dev/sde: tipo de tabla de particiones no reconocido
Situación anterior:
No se ha encontrado ninguna partición
Situación nueva:
Unidades = sectores de 512 bytes, contando desde 0

Disp.  Inicio        Principio            Fin               Nº sect.        Id  Sistema
 /dev/sde1              63        2930063219     2930063157        fd
 /dev/sde2              0                    0                     0               Vacía
 /dev/sde3              0                    0                     0               Vacía
 /dev/sde4              0                    0                     0               Vacía
Atención: no hay ninguna partición primaria marcada como iniciable (activa).
Esto no es problema para LILO, pero el MBR de DOS no iniciará con este disco.
La nueva tabla de particiones se ha escrito correctamente

Volviendo a leer la tabla de particiones...

En este punto, su disco está preparado para ser integrado en el raid.

Añadir el disco nuevo al raid
Para añadir el nuevo disco al raid, tan solo ha de ejecutar mdadm --add /dev/mdX /dev/sdXY.
agd-desktop ~ # mdadm --add /dev/md0 /dev/sde1
mdadm: added /dev/sde1

Una consulta al estado del raid, através de mdadm --detail /dev/md0 devolverá algo similar a:
agd-desktop # mdadm --detail /dev/md0
/dev/md0:
          Version : 1.2
          Creation Time : Wed Sep 22 17:02:27 2010
          Raid Level : raid5
          Array Size : 2930060288 (2794.32 GiB 3000.38 GB)
          Used Dev Size : 1465030144 (1397.16 GiB 1500.19 GB)
          Raid Devices : 3
          Total Devices : 4
          Persistence : Superblock is persistent

          Update Time : Tue Feb 15 00:45:32 2011
          State : clean, degraded
          Active Devices : 3
          Working Devices : 3
          Failed Devices : 0
          Spare Devices : 1

          Layout : left-symmetric
          Chunk Size : 512K

          Name : agd-desktop:0  (local to host agd-desktop)
          UUID : 2b33bce9:f30571d8:efe03c61:898a4e57
          Events : 142

    Number   Major   Minor   Raid   Device State
       1             8         33        1        active sync   /dev/sdc1
       2             8         49        2        active sync   /dev/sdd1
       4             8         65        3        spare rebuilding   /dev/sdf1
       5             8         97        -        spare /dev/sde1

Si desea ver el progreso de la reconstrucción del raid, tan solo deberá ejecutar el siguiente comando en una terminal, watch cat /proc/mdstat.
agd-desktop # watch cat /proc/mdstat 


Every 2,0s: cat /proc/mdstat                            Mon Apr  4 00:19:43 2011

Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[4] sdc1[3] sdd1[1]
2930060288 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU]
[>....................]  recovery =  3.0% (45403136/1465030144) finish=271
.4min speed=87148K/sec

unused devices: 

0 comentarios:

Publicar un comentario en la entrada

Recuerde que puede utilizar algunos códigos HTML como <b>para negrita</b>, <i>para cursiva</i> y <a href="URL">para enlaces</a>.