You are on page 1of 10

RAID mediante software en Linux.

mdadm: Una nueva herramienta para la gestin de RAID mediante software


en Linux
Traduccin del artculo "mdadm: A New Tool For Linux Software RAID
Management" escrito por Derek Vadala y publicado originalmente en
http://www.linuxdevcenter.com/pub/a/linux/2002/12/05/RAID.html
por Derek Vadala, autor de Managing RAID on Linux.

12/05/2002

Lectura relacionada:
Managing RAID on Linux
Managing RAID on Linux
By Derek Vadala

raidtools ha sido el paquete de gestin de RAID por software estandard en


Linux desde la inclusin del driver RAID por software. Con los aos, raidtools
ha demostrado un uso pesado, principalmente porque depende de un fichero
de configuracin (/etc/raidtab) que es difcil de mantener, y parcialmente por
sus limitadas caractersticas. En agosto de 2001, Neil Brown, un ingeniero de
software en la Unviersity of New South Wales y un desarrollador del kernel,
lanz una alternativa. Su paquete mdadm (multiple devices admin)
proporciona una forma simple y robusta de gestin de arrays software.
mdadm v por la versin 1.0.1 y ha demostrado ser muy estable durante su
primer ao de desarrollo. En la lista de correo Linux-raid ha recibido una
clida acogida y muy probablemente consiga una mayor difusin en el
futuro1. Este artculo asume que usted tiene cierta familiaridad con el RAID
por software en Linux y que ha tenido cierto contacto con el paquete
raidtools.

Instalacin2
Descargue la versin ms reciente del tarball mdadm, ejecute make install
para compilarlo e instalar mdadm con su documentacin. Adems del binario
se instalan algunas pginas de manual y ficheros de ejemplo.

# tar xvf ./mdadm-1.0.1.tgz


# cd mdadm-1.0.1.tgz
# make install
De forma alternativa usted puede descargar e instalar el ifchero del paquete
que se encuentra bajo el directorio RPM en la misma URL
(http://www.cse.unsw.edu.au/~neilb/source/mdadm/).

# rpm -ihv mdadm-1.0.1-1.i386.rpm


mdadm tiene cinco modos de funcionamiento. Los primeros dos modos,
Create y Assemble, se utilizan para configurar y activar arrays. Manage se
utiliza para manipular dispositivos en un array activo. Follow o Monitor
permite a los administradores configurar la notificacin de eventos y acciones
para los arrays. El modo Build se utiliza cuando se trabaja con arrays
heredados que utilizan una versin antigua del driver md. No cubrir el modo
build en este artculo. Las opciones restantes se utilizan para varias tareas
domsticas y no estn asociadas a un modo de operacin especfico, aunque
la documentacin de mdadm llama a estas opciones el modo Misc.

Creando un Array
El modo Create (mdadm --create) se utiliza para crear un nuevo array. En este
ejemplo utilizar mdadm para crear un RAID-0 en /dev/md0 construido con
/dev/sdb1 y /dev/sdc1:

# mdadm --create --verbose /dev/md0 --level=0


--raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: chunk size defaults to 64K

mdadm: array /dev/md0 started.


La opcin --level especifica el tipo de RAID a crear, de la misma manera que
lo hace la opcin raid-level de raidtools. Es posible indicar 0, 1, 4 y 5 para
RAID-0, RAID-1, RAID-4 y RAID-5. Tambin es posible utilizar el modo lineal (-level=linear). La opcin --raid-devices funciona de la misma manera que la
opcin nr-raid-disks cuando se utiliza /etc/raidtab y raidtools.

En general, los comandos mdadm tienen el siguiente formato:

mdadm [mode] <raiddevice> [options] <component disks>


Cada opcin de mdadm tambin cuenta con una forma corta que es menos
descriptiva pero ms breve de teclear. Por ejemplo, el siguiente comando
utiliza la forma corta de cada opcin pero es identico al ejemplo que he
mostrado antes.

# mdadm -Cv /dev/md0 -l0 -n2 -c128 /dev/sdb1 /dev/sdc1


-C selecciona el modo Create, he incluido la opcin -v para activar la salida
verbosa. -l y -n especifican el nivel RAID y el nmero de discos. Los usuarios
de raidtools y /etc/raidtab pueden comprobar los fcil que es crear arrays
utilizando mdadm. Usted puede cambiar el tamao del pedazo (chunk size)
por defecto (64KB) utilizando la opcin --chunk o -c. En el ejemplo anterior he
fijado el chunk size a 128KB. mdadm tambin soporta la expansin del shell,
de modo que no tiene que teclear el nombre de dispositivo para cada
componente si se est creando un gran array.

En este ejemplo crear un RAID-5 con cinco discos y un tamao de chunk de


128KB:

# mdadm -Cv /dev/md0 -l5 -n5 -c128 /dev/sd{a,b,c,d,e}1


mdadm: layout defaults to left-symmetric
mdadm: array /dev/md0 started.
El ejemplo crea el array /dev/md0 utilizando las particiones de disco SCSI
/dev/sda1, /dev/sdb1, /dev/sdc1, /dev/sdd1 y /dev/sde1. Observe que tambin

he fijado el tamao del chunk a 128KB utilizando la opcin -c128. Cuando se


crea un RAID-5, mdadm selecciona de forma automtica el algoritmo de
paridad left-symmetric, que es la mejor opcin.

Utilice el comando --stop o -S para detener un array en marcha:

# mdadm -S /dev/md0
/etc/mdadm.conf
/etc/mdadm.conf es el principal fichero de configuracin de mdadm. A
diferencia de /etc/raidtab, mdadm no depende de /etc/mdadm.conf para
crear o gestionar arrays. En su lugar, mdadm.conf es simplemente una
manera adicional de seguir la pista a los dispositivos RAID software. Utilizar
un fichero de configuracin con mdadm es til pero no necesario. Tener uno
significa que usted puede gestionar los arrays de forma gil sin invertir
tiempo en descubrir qu propiedades tienen y dnde estn los discos. Por
ejemplo, si un array no est en marcha y no existe el fichero mdadm.conf
describindolo, entonces el administrador del sistema debe invertir tiempo
en examinar cada disco para determinar sus propiedades y miembros.

A diferencia del fichero de configuracin para raidtools, mdadm.conf es


conciso y smplemente lista los discos y arrays. El fichero de configuracin
puede contener dos tipos de lneas, cada una comenzando con la palabra
reservada DEVICE o ARRAY. Los espacios en blanco separan las palabras
reservadas de la informacin de configuracin. Las lneas que comienzan con
DEVICE especifican una lista de dispositivos que son candidatos a formar
parte del array. La lneas que comienzan con ARRAY especifican dispositivos
array adems de informacin de identificacin. Esta informacin puede incluir
listas de uno o ms UUIDs, nmeros menores de dispositivos md, o una lista
de dispositivos miembro.

Un fichero de configuracin mdadm.conf sencillo puede parecerse a:

DEVICE
ARRAY

/dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1


/dev/md0 devices=/dev/sda1,/dev/sdb1

ARRAY

/dev/md1 devices=/dev/sdc1,/dev/sdd1

En general, es mejor crear el fichero /etc/mdadm.conf despus de haber


creado un array y actualizar el fichero cuando se crean nuevos arrays. Sin un
fichero /etc/mdadm.conf se necesita especificar informacin ms detallada
sobre un array en el comando para activarlo. Esto significa que se tendr que
recordar que dispositivos pertenecen a cada array, y esto puede convertirse
fcilmente en un embrollo en sistemas con muchos discos. mdadm incluso
proporciona una manera fcil de generar las lneas ARRAY. La salida es una
sola lnea continua, pero aqu est troceada para encajar en la pgina:

# mdadm --detail --scan


ARRAY /dev/md0 level=raid0 num-devices=2 \
UUID=410a299e:4cdd535e:169d3df4:48b7144a
Si hubiera mltipes arrays ejecutndose en el sistema, entonces mdadm
generara una linea array para cada uno. As que, una vez que haya
construido sus arrays, puede redirigir la salida de mdadm --detail --scan a
/etc/mdadm.conf. Slo tiene que asegurarse de crear manualmente una
entrada DEVICE. Utilizando el ejemplo anterior podemos tener un
/etc/mdadm.conf con el siguiente aspecto:

DEVICE

/dev/sdb1 /dev/sdc1

ARRAY

/dev/md0 level=raid0 num-devices=2 \


UUID=410a299e:4cdd535e:169d3df4:48b7144a

Iniciando un array
El modo Assemble se utiliza para iniciar un array que ya existe. Si usted ha
creado el fichero /etc/mdadm.conf, entoces puede comenzar el array listado
all con el siguiente comando:

# mdadm -As /dev/md0


mdadm: /dev/md0 has been started with 2 drives.

La opcin -A se refiere al modo Assemble, tambin puede utilizar --assemble.


La opcin -s o --scan indican a mdadm que mire en /etc/mdadm.conf para
informarse sobre los arrays y los dispositivos. Si usted quiere iniciar todos los
arrays listados en /etc/mdadm.conf, no especifique un dispositivo md en la
lnea de comandos.

Si usted no cre el fichero /etc/mdadm.conf, necesitar especificar


informacin adicional en la lnea de comandos para poder iniciar un array. Por
ejemplo, este comando intenta iniciar /dev/md0 utilizando los dispositivos
listados en la lnea de comandos:

# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1


Como utilizar mdadm -A de este modo supone que usted conoce cmo estn
organizados los arrays, puede que no sea til en sistemas que tienen arrays
que fueron creados por otra persona. De manera que usted puede querer
examinar algunos dispositivos para hacerse una idea de cmo estn
organizados los arrays. La opcin de examinar (-E o --examine) permite
imprimir el superbloque md (si est presente) de un dispositivo de bloques
que puede formar parte de un array.

# mdadm -E /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 00.90.00
UUID : 84788b68:1bb79088:9a73ebcc:2ab430da
Creation Time : Mon Sep 23 16:02:33 2002
Raid Level : raid0
Device Size : 17920384 (17.09 GiB 18.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0

Update Time : Mon Sep 23 16:14:52 2002


State : clean, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Checksum : 8ab5e437 - correct
Events : 0.10

Chunk Size : 128K

Number Major Minor RaidDevice State


this

33

active sync /dev/sdc1

17

active sync /dev/sdb1

33

active sync /dev/sdc1

49

active sync /dev/sdd1

65

active sync /dev/sde1

La opcin de examinar muestra informacin til sobre los discos que


componen el array. En este caso podemos decir que /dev/sdc1 pertenece a
un RAID-0 formado por cuatro discos miembro. Lo que quiero resaltar de
forma especfica es la lnea de salida que contiene el UUID. Un UUID es un
nmero de 128 bits que se supone razonablemente nico tanto en el sistema
local como en el resto. Se genera de forma aleatoria utilizando hardware y
marcas temporales como parte de su semilla. Los UUIDs se tutilizan en varios
programas para etiquetar de forma nica los dispositivos. Puede obtener ms
informacin leyendo las pginas de manual de uuidgen y libuuid.

Cuando se crea un array, el driver md genera un UUID para el array y lo


guarda en el superbloque md. Puede utilizar el UUID como criterio para la

construccin de arrays. En el prximo ejemplo activar el array al que


pertenece /dev/sdc1 utilizando su UUID.

# mdadm -Av /dev/md0 --uuid=84788b68:1bb79088:9a73ebcc:2ab430da


/dev/sd*
Este comando escanea cada disco SCSI (/dev/sd*) para ver si es miembro del
array con UUID 84788b68:1bb79088:9a73ebcc:2ab430da y entonces inicia el
array, suponiendo que se encuentre cada uno de los dispositivos que lo
componen. mdadm producir un montn de salida cada vez que intente
escanear un dispositivo que no existe. Puede ignorar tales advertencias con
seguridad.

Gestionando arrays
Utilizando el modo Manage puede aadir y eliminar discos de un array en
funcionamiento. Esto es necesario para eliminar los discos que han fallado,
aadir discos de repuesto, o aadir los discos de reemplazo. El modo Manage
tambin se puede utilizar para marcar un disco como averiado. El modo
Manage replica las funciones de los programas raidsetfaulty, raidhotremove y
raidhotadd de raidtools.

Por ejemplo, para aadir un disco a un array activo, replicando el comando


raidhotadd:

# mdadm /dev/md0 --add /dev/sdc1


O para eliminar /dev/sdc1 de /dev/md0 intente:

# mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1


Observe que primero he marcado /dev/sdc1 como averiado y despus lo
hemos eliminado. Es equivalente a utilizar los comandos raidsetfaulty y
raidhotremove de las raidtools. Es posible combinar las opciones de aadir,
marcar como averiado y eleminar en una sola lnea de comandos siempre
que tenga sentido en trminos de gestin del array. Por ejemplo, debe marcar
un disco como averiado antes de eliminarlo.

Monitorizando arrays
El modo Follow, o Monitor, proporciona algunas de las mejores caractersticas
de mdadm. Utilizando el modo Follow/Monitor puede utilizar mdadm como un
demonio y configurarlo para enviar alertas por correo a los administradores
cuando en los arrays se producen errores o fallos. Tambin puede utilizar el
modo Follow para ejecutar comandos arbitrarios cuando un disco se averie.
Por ejemplo, puede querer intentar eliminar el disco y reinstarlo en un intento
de corregir un fallo no-fatal sin intervencin del usuario.

El siguiente comando monitorizar /dev/md0 (consultando su estado cada


300 segundos) en busca de eventos crticos. Cuando ocurre un error faltal,
mdadm enviar un correo al sysadmin. Puede ajustar el intrvalo de consulta
y la direccin de correo de acuerdo a sus necesidades.

# mdadm --monitor --mail=sysadmin --delay=300 /dev/md0


Cuando se utiliza el modo monitor, mdadm no termina, as que tal vez quiera
envolverlo con un nohup y un &.

# nohup mdadm --monitor --mail=sysadmin --delay=300 /dev/md0 &


El modo Follow/Monitor tambin permite que los arrays compartan discos de
repuesto, una caracteristica que ha faltado en el software RAID de Linux
desde el principio. Esto significa que usted slo tiene que proporcionar un
disco de repuesto para cada grupo de arrays o para todos los asrrays.
Tambin significa que el administrador del sistema no tiene que intervenir de
forma manual para mover los discos de repuesto cuando se produce un fallo
en un array. Cuando se detecta una avera en un disco de un array sin un
disco de repuesto, mdadm quitar un disco de repuesto disponible en otro
array y lo insertar en el array con el disco averiado. Para facilitar este
proceso, cada lnea ARRAY de /etc/mdadm.conf necesita tener un grupo de
repuesto definido.

DEVICE

/dev/sd*

ARRAY

/dev/md0 level=raid1 num-devices=3 spare-group=database


\

UUID=410a299e:4cdd535e:169d3df4:48b7144a
ARRAY/dev/md1 level=raid1 num-device=2 spare-group=database

UUID=59b6e564:739d4d28:ae0aa308:71147fe7
En este ejemplo, tanto /dev/md0 como /dev/md1 son parte del grupo de
repuesto database. Suponiendo que /dev/md0 es un RAID-1 de dos discos con
un solo disco de repuesto. Si mdadm est funcionando en modo monitor
(como he mostrado antes), y un disco de /dev/md1 falla, mdadm quitar el
disco de repuesto de /dev/md0 y lo insertar en /dev/md1.

mdadm tiene muchas otras opciones que no he descrito aqu. Recomiendo de


forma encarecida la lectura de su pgina de manual para ms detalles.
Recuerde, no es necesario cambiar a mdadm. Las raidtools todava
mantienen su desarrollo y son el fruto de muchos aos de desarrollo. Pero
encuentro que mdadm es un buen reemplazo. Tiene muchas caracteristicas y
es intuitivo, no pierde nada al probar alternativas.

Notas:
NT: En el momento de realizar esta traduccin (octubre de 2007), Mandriva
2008 incluye la versin de mdadm xxx.
NT: La mayora de las distribuciones cuentan con un paquete mdadm en su
repositorio, as que la instalacin se reduce a utilizar el gestor de paquetes
adecuado.

You might also like