Resincronización de arreglos de disco con MDADM

( CC ) wikimedia.org

La complegidad de utilizar algunas controladoras RAID por hardware o el que simplemente no existan como tal en un servidor lleva a muchos administradores de sistemas a utilizar arreglos basados en software. Para ello MDADM resulta bastante práctico, ya sea utilizándolo desde una instalación limpia ( creando el arreglo al instalar ) o inclusive en forma posterior a la instalación. Una vez que el arreglo ya está operativo, mdadm sirve tanto para monitorear como para administrar el arreglo por la línea de comandos.

Esta herramienta crea una instancia que verifica cada cierto tiempo el estado de los arreglos y si lo queremos, es capaz de enviarnos un e-mail en caso de que detecte algún problema.

Una vez configurado, podemos verificar el estado con el comando cat /proc/mdstat . donde es posible obtener una salida como esta:


Personalities : [raid1]
md0 : active raid1 sdd1[0] sdc1[1]
488383936 blocks [2/2] [UU]
bitmap: 1/233 pages [4KB], 1024KB chunk

md3 : active raid1 sda3[0] sdb3[1]
56661184 blocks [2/2] [UU]
bitmap: 0/217 pages [0KB], 128KB chunk

md2 : active raid1 sdb2[1] sda2[0]
19534976 blocks [2/2] [UU]
bitmap: 24/150 pages [96KB], 64KB chunk

Esto nos indica que hay 3 arreglos en el sistema, denominados md0, md2 y md3 respectivamente. Para utilizar mdadm en la verificación detallada de un arreglo, lo hacemos de la siguiente forma:

mdadm --detail /dev/md0

/dev/md0:
Version : 0.90
Creation Time : Tue Mar 24 13:47:11 2009
Raid Level : raid1
Array Size : 488383936 (465.76 GiB 500.11 GB)
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Thu Jul 1 09:30:15 2010
State : active
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : d9b70b0f:d8d9b0aa:a56c0ad1:03f3b8d3 (local to host servicios)
Events : 0.1034316

Number Major Minor RaidDevice State
0 8 49 0 active sync /dev/sdd1
1 8 33 1 active sync /dev/sdc1

En lo anterior vemos que hay 2 discos en un arreglo y que todo está funcionando normalmente, sin embargo hay veces en que por alguna razón particular uno de los discos puede perder la sincronía en el arreglo y quedar fuera de servicio, en esos casos mdadm nos envia un correo con el siguiente contenido:

A DegradedArray event had been detected on md device /dev/md2.

Faithfully yours, etc.

P.S. The /proc/mdstat file currently contains the following:

Personalities : [raid1]
md0 : active raid1 sdd1[0] sdc1[1]
488383936 blocks [2/2] [UU]
bitmap: 2/233 pages [8KB], 1024KB chunk

md3 : active raid1 sda3[0] sdb3[1]
56661184 blocks [2/2] [UU]
bitmap: 0/217 pages [0KB], 128KB chunk

md2 : active raid1 sda2[0] sdb2[2](F)
19534976 blocks [2/1] [U_]
bitmap: 66/150 pages [264KB], 64KB chunk

  • unused devices: Al mirar detalladamente la alerta nos percatamos que uno de los discos del arreglo md2 ha dejado de funcionar y ha perdido sincronía, por lo que debemos verificar su estado y tratar de dejarlo en sincronía nuevamente, para eso nuevamente utilizamos mdadm
  • Verificamos cual es exactamente el disco marcado con problemas con mdadm ejecutando mdadm --detail /dev/md2 y asumiendo que sea por ejemplo /dev/sda2 , es sobre este en el que hay que trabajar.
  • Removemos en forma lógica el disco del arreglo ( no física )
  • mdadm -r /dev/md2 /dev/sda2

    Con esto retiramos en caliente lógicamente el disco del arreglo y ya es posible trabajar en el al estar completamente desmontado.

  • Verificamos el estado del sistema de archivos (ext3 por ejemplo )
  • fsck.ext3 /dev/sda2

  • Una vez hechas las correciones y asegurándonos que no es un problema físico del disco, hacemos que se sincronice con el arreglo nuevamente.
  • mdadm --add /dev/md2 /dev/sda2

    Esto último integra el disco al arreglo y mdadm se encarga de sincronizar el mismo al arreglo. Es importante decir que esto debe hacerse con el menos movimiento de datos posible al momento de operar, si es posible, hacerlo en modo SINGLE (a prueba de fallos) o con los servicios que acceden a este arreglo, detenidos, para evitar que ocurran problemas o se demore mas de la cuenta.

    Para comprobar el progreso de la sincronización, hay 2 alternativas:

    cat /proc/mdstat
    mdadm --detail /dev/md2

    En ambas (con distinto nivel de detalle) se puede observar el progreso.

    Una cosa importante es contar con el Intent Bitmap activo, esto es una característica que se le agrega a un arreglo por software y permite hacer sincronizaciones diferenciales entre los discos tras producirse una falla, reduciendo asi los tiempos al no tener que sincronizar el disco completo cada vez que algo ocurre.

    Al verificar el detalle de cada arreglo con mdadm de la forma ya mencionada en este artículo, se muestra si está activa o no esta característica, en este casi si lo está.

    Para añadir soporte Bitmap, ejecutamos lo siguiente ( considerando a md2 como el arreglo a trabajar) :
    mdadm --grow /dev/md2 --bitmap=internal

    Categories: Tips Tags: ,






    1. Lunes, 30 de abril de 2012 a las 10:26 | #1

      Muy buena información, gracias por compartirla.

    1. Sin trackbacks aún.