lunes, 4 de abril de 2011

RAID por software en Linux con mdadm. (5ta de la serie RAID)

Bueno, pasaron varios días sin que hiciera nada, así que de regreso les traigo la quinta (¿y última?) parte de la serie sobre RAIDs de Jeffrey B Layton. En este caso estaremos viendo una descripción introductoria de la herramienta de Linux mdadm, empleada para la creación y administración de arreglos RAIDs por software (todo lo que habíamos visto hasta ahora presuponía que usaban un controlador RAID dedicado, mas adelante los detalles). Para los que llegan nuevos, pueden encontrar la serie completa aquí. Es una buena manera de regresar y parece que esta semana va a ser buena, se acumuló bastante material muy útil, así que no se vayan lejos. El original de este lo pueden encontrar aquí, es largo, así que consideren marcarlo, provecho!
RAID por software en Linux con mdadm.
Ahora que hemos completado nuestro primer examen de los fundamentos de los niveles RAID (RAID anidados incluidos) es el momento de dirigir nuestra atención a la funcionalidad RAID en Linux usando software. En este artículo vamos a discutir mdadm - la herramienta de administración de software RAID para Linux. Viene con casi todas las distribuciones de Linux y tiene algunas características únicas que muchas tarjetas de hardware no tienen

Controladores RAID
Hemos pasado mucho tiempo examinando diversos niveles RAID, tales como RAID-0, 1, 5 y 6, y niveles RAID anidados como RAID-10, 50, 51, 61, y 60 o incluso RAID más complicados como RAID-100 o RAID-160. En todos los casos asumimos que existía una controladora RAID realizando las distintas operaciones. Esto incluye el envío de fragmentos de datos a los discos apropiados, los cálculos de paridad, los cambios en caliente, los fallos en discos, el control de las transacciones de lectura para determinar si fueron exitosas y si no, declarar el disco como fallado, además de otras importantes tareas relacionadas con RAID. Todas estas tareas requieren algún tipo de cálculo y tienen que ser realizadas por un controlador RAID.
Usted realmente tiene dos opciones referidas a controladores RAID: (1) un controlador RAID dedicado, como las tarjetas RAID complementarias, (2) un RAID por software que utilizará el CPU para tareas RAID. En el primer caso tendrás un controlador RAID dedicado, típicamente como una tarjeta RAID complementaria, pero que puede estar incluida en la placa base, que realiza los cálculos RAID necesarios. Este controlador suele utilizar un procesador dedicado regularmente de baja potencia, a menudo un procesador de tiempo real tal como PowerPC, para realizar los cálculos. Normalmente, estos controladores se ponen en una tarjeta adicional y se conectan las unidades que desee en la matriz RAID a esta tarjeta.

Con el RAID por software, todas las funciones RAID se ejecutan en el CPU. Casi todas las distribuciones de Linux viene con el software de RAID en forma de md (dispositivos múltiples), que es un controlador dentro de Linux que proporciona dispositivos virtuales creados a partir de uno o más dispositivos subyacentes (por ejemplo, dispositivos de almacenamiento de bloques). Además lo bueno es que viene con casi todas las distribuciones de Linux de modo que tendrá acceso a las fuentes (además el precio no está nada mal y tiene una gran cantidad de funcionalidades). Además, puede crear configuraciones RAID anidadas si lo necesita ya que todas las funciones RAID son por software (me huele que viene un triple Lindy).
Una de las cosas con las que tienes que tener mucho cuidado es con lo que comúnmente se llama un RAID falso (FakeRAID) o controladora RAID falsa (FakeRAID controller). Los RAID falsos no son RAIDs por hardware porque no hay un controlador RAID dedicado. Más bien, usan un chip controlador de disco estándar en una tarjeta adicional o en la placa base, con algunos drivers y firmware especializados. En el momento de arranque ejecutan una aplicación especial que permite a los usuarios configurar los discos conectados al Falso RAID como un grupo RAID. Pero el procesamiento RAID es manejado por controladores que se ejecutan en el CPU (de manera que es el CPU quien provee la potencia de cálculo). Por lo tanto, es realmente una solución de RAID por software y no por hardware (de ahí el nombre de "Falso RAID").

Hay un gran debate dentro de la comunidad Linux sobre los falsos RAID. Un punto en estos debates es que los vendedores de RAIDs falsos no le dicen a los clientes que lo que en realidad están comprando no es una tarjeta RAID con un controlador RAID dedicado, sino una simple tarjeta con un controlador de disco, junto con los controladores que utiliza la CPU para el procesamiento RAID (publicidad engañosa). Además existe un problema adicional referido al desarrollo y soporte de estos controladores para Linux que permiten utilizar estas tarjetas RAID falsas. Finalmente, hay un argumento fuerte de que es probable que sea mejor usar el RAID por software que viene con Linux (md), puesto que ya forma parte de Linux y posiblemente le brindará un mejor rendimiento.
Sin embargo, si usted quiere usar el RAID por software que viene con Linux en el kernel (md), usted todavía necesitará algunas herramientas para controlar, administrar y supervisar el software RAID. Ahí es donde entra en juego mdadm. En este artículo se hará un breve examen de mdadm y algunas de sus opciones.

Introducción a mdadm
Mdadm es una herramienta de software principalmente escrita por Neil Brown, que le permite crear, montar, reportar, aumentar, y supervisar las matrices RAID que usan software RAID en Linux. En realidad, según la documentación existen siete modos de funcionamiento:

create (Crear)
assemble (Montar o ensamblar)
follow or monitor (Seguir o monitorear)
build (Generar o crear)
grow (Aumentar)
manage (Administrar)
misc (Otras)

Vamos a caminar a través de estos diversos modos de operación, pero el foco de este artículo es una introducción y no un HOWTO en profundidad. Usted puede encontrar este tipo de artículos en la web.
El primer paso para usar mdadm, o dado el caso cualquier RAID, es planificar su configuración RAID cuidadosamente. Personalmente me gusta trabajar a la inversa partiendo del propósito del almacenamiento. ¿Va a ser utilizado para una base de datos? Va a ser utilizado para un /home? ¿Será utilizado con propósitos de alta velocidad? Va a ser utilizado para datos que requieran un alto grado de fiabilidad? Entender el propósito del almacenamiento es realmente la clave para crear la configuración RAID que necesita o desea. Una vez que determine la clase de uso de almacenamiento, necesitará desarrollar una idea de que tanto rendimiento de E / S va a necesitar (transferencia real y en operaciones de entrada / salida por segundo) y la relación general de lectura / escritura. Usted también debe desarrollar una idea de que tanta redundancia de datos necesitará para el almacenamiento.

Una vez que usted tenga una idea del rendimiento y la redundancia de la matriz puede seleccionar la configuración RAID que piensa que podría necesitar. Le sugiero que seleccione varias configuraciones RAID candidatas y luego lea y haga un poco más de investigación sobre cada una y seleccione la configuración que mejor le parezca. Durante esta investigación asegúrese de examinar la redundancia, así como el desempeño de las diferentes configuraciones y compárelas con sus estimaciones. Pero también asegúrese de examinar la eficiencia y la capacidad de almacenamiento de cada nivel. Probablemente ud ame el rendimiento y la eficiencia de almacenamiento de RAID-10, pero la redundancia de datos puede no ser suficiente para usted. O le puede encantar la redundancia de datos de RAID-61, pero es posible que no esté dispuesto a renunciar al rendimiento o, quizás más importante, no esté dispuesto a tener un rendimiento de almacenamiento tan bajo (sobre todo si es para su sistema casero).
Pero sólo elegir la configuración RAID que desea no es el final de su planificación. Es necesario considerar también otra serie de cosas. Tal vez lo más importante que hay que tener en cuenta es si va a necesitar aumentar o reducir el tamaño del almacenamiento. La razón por la que esto es importante es porque es probable que tenga que utilizar LVM (Logical Volume Manager), ya sea sobre el software RAID de Linux o por debajo del este. Esto le obligará a considerar cuidadosamente cómo construir tanto LVM como RAID por software y cómo expandir uno de ellos o los dos. Yo recomendaría revisar los pasos de expansión para asegurarse de que sabe cómo hacerlo (incluso podría poner a un lado sus ideas y buscar otra persona para tener otro par de ojos examinando).

Otra cosa que usted debe considerar antes de implementar su bien formulado y pensado plan RAID es el sistema de archivos que usará sobre el almacenamiento. Basado en su modelo de uso para el almacenamiento, seleccione uno o ambos sistemas de archivos candidatos. Luego, haga una investigación sobre cada uno de ellos para averiguar qué problemas o limitaciones tienen, y también cómo puede optimizar cada sistema de archivos para un mejor rendimiento (todos somos adictos al rendimiento en nuestro corazón). Hay una serie de artículos en la web que tratan sobre los ajustes a los sistemas de archivos con el software RAID de Linux.
Suponiendo que usted ha hecho su planificación cuidadosamente (incluyendo una solución de copia de seguridad), vamos a pasar al primer "modo" de mdadm, creación de un array RAID.

Creación de un array RAID
Mdadm le permite crear un array RAID usando los dispositivos de bloque Linux. Durante la creación de la matriz, se crean superbloques por dispositivo para el arreglo RAID (permiten a la matriz ser ensamblada correctamente). Usar el modo "create" es el método más común para crear la matriz y se recomienda si usted está recién empezando a utilizar mdadm.

El comando mdadm básico para crear una matriz RAID es bastante simple con el siguiente comando genérico y opciones típicas.

mdadm --create [dispositivo-md] --chunk=X --level=Y --raid-devices=Z

donde las opciones son las siguientes:

-c, --chunk = Tamaño del trozo (chunk) especificado en kibibytes. El predeterminado es 64.


-l, --level = nivel RAID, las opciones son: lineal, RAID 0, 0, stripe, RAID 1, 1, mirror, RAID 4, 4, RAID 5, 5, RAID 6, 6, RAID 10, 10, multipath, mp, faulty


-n, -raid-devices = Especifica el número de dispositivos activos en la matriz.

Observe que el comando mdadm inicia con la opción "--create" que le dice a mdadm que operará en modo "create". Entonces me gusta definir el dispositivo md específico también, pero asegúrese de no estar usando el nombre de un dispositivo md que ya existe. La especificación de la opción del "chunk" depende de usted. A continuación, defina el nivel RAID que desee usando la opción "--level" antes descrita. También puede decirle a mdadm cuántos dispositivos de bloque está utilizando con la opción "-raid-devices=Z" (Z es el número de dispositivos). Entonces, finalmente le dará a mdadm la lista de dispositivos de bloque que está utilizando.

Un ejemplo del uso de la opción "--create" con mdadm sería:

%mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

que crea una configuración RAID-0 etiquetada como /dev/md0 y utiliza tres dispositivos de bloque que son /dev/sda1, /dev/sdb1 y /dev/sdc1.

En el ejemplo, he utilizado la primera partición de cada una de las tres unidades que son dispositivos de bloque válidos como los dispositivos de bloques de mdadm. Pude haber usado sin problemas todo el disco como /dev/sda o /dev/sdb. El punto es que necesitan ser dispositivos de bloque válidos de Linux (podrían incluso ser dispositivos de red pero esa es una discusión diferente).
Mdadm es lo suficientemente inteligente como para construir la configuración RAID-0 usando el tamaño más pequeño común de cada uno de los tres dispositivos. Por lo tanto, se recomienda que compruebe el tamaño de cada dispositivo de bloque con fdisk, como se muestra a continuación.

root@laytonjb-laptop: ~/# /sbin/fdisk /dev/sdb

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bca3e

   Device Boot       Start    End     Blocks    Id  System
/dev/sdb1    *           1  18704  150239848+   83  Linux
/dev/sdb2            18705  19457    6048472+    5  Extended
/dev/sdb5            18705  19457    6048441    82  Linux swap / Solaris

Asegúrese de buscar la partición que va a utilizar en la columna "Blocks" . Haga esto para todos los dispositivos y asegúrese de que el número de bloques es igual o muy parecido (de lo contrario se perderá el espacio).

También puede notar que he usado la opción "--verbose" con el comando mdadm "create". Me gusta usar esta opción para obtener más información acerca de lo que está haciendo mdadm ("mejor que sobre que no que falte", es un buen lema). Esto siempre es un buen hábito.
En este punto, la matriz RAID debe estar creada y en funcionamiento. Una manera fácil de comprobarlo es mirar en /proc/mdstat.

% cat /proc/mdstat

Afortunadamente, la salida debe ser bastante fácil de leer a simple vista. Para obtener información mucho más detallada puede leer este artículo.
Inmediatamente después de que el arreglo RAID es creado, debe atravesar por un proceso de sincronización. Este proceso ejecuta las funciones RAID necesarias para la configuración que ud ha creado. Por ejemplo, para RAID-1, los bloques en el primer disco se copian en la segunda unidad, incluso si no hay ninguna información en ellos.

Una vez que la matriz ha terminado de sincronizar y está lista, entonces puede pasar al siguiente paso que puede ser utilizar el dispositivo RAID resultante en un LVM o crear un sistema de archivos con el dispositivo de bloques.
Hay muchas opciones que puede utilizar en el modo "create". Puede leer las páginas del manual para obtener una lista de ellas, pero a continuación le presento algunas de las mas importantes y que no han sido presentadas todavía en este articulo.
  • -x,--spare-devices= Esta opción le permite especificar dispositivos de reserva en el arreglo inicial. Estos son dispositivos (discos) que se utilizan en caso de que un disco en la configuración RAID falle. Mdadm a continuación, utiliza la unidad de repuesto de inmediato y se inicia la restauración de la matriz a la configuración deseada. Mdadm también permite añadir o quitar unidades de repuesto más tarde (no necesariamente hay que añadirlos en el momento en que se crea la matriz). Si utiliza dispositivos de reserva asegúrese de que la opción "--raid-devices" muestre el número de dispositivos que componen el RAID en realidad mas los dispositivos de reserva.
  • -p,--layout=, --parity= mdadm le ofrece un control extraordinario sobre su configuración RAID. Esta opción le permite controlar los detalles de la estructura de datos para arreglos RAID-5 y RAID-10 y también controla el modo de fallo para los discos defectuoso o fallados. Por favor, lea la página de manual para más detalles.
  • -z,--size= Esta opción es la cantidad de espacio que va a ser usado en cada unidad en configuraciones RAID 1, RAID-4, RAID-5, o RAID-6. El tamaño se da en kikibytes y debe ser un múltiplo del tamaño del fragmento (chunk). Además, debe dejar alrededor de 128 KB (128 kikibytes) de espacio al final de la unidad para el superbloque RAID. Después de que la matriz es creada usted puede usar el modo "--grow" (aumentar o crecer) de mdadm para aumentar el tamaño de la configuración RAID.
Montaje de un array RAID mdadm.
Uno de los otros modos en mdadm es "assemble". Después de que su matriz RAID ha sido creada usando mdadm, puede detenerla mediante el siguiente comando:

% mdadm --stop /dev/md0

Que detiene el arreglo RAID /dev/md0 (asegúrese de desmontar antes el sistema de archivos que utiliza el RAID). Sin embargo, hay problemas con el reinicio de la matriz RAID. Al reiniciar la matriz deberá utilizar mdadm para volver a ensamblar la matriz. por ejemplo

% mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1

Este comando ensambla las partes de un conjunto creado previamente en una matriz activa y reinicia la matriz (es decir, hace que funcione). Para automatizar esto, puede poner este comando en el sistema de arranque (por ejemplo, /etc/rc.d/rc.local) y puede crear un simple script para detener o iniciar el arreglo. Pero mdadm puede hacer parte del trabajo duro con el siguiente comando:

% mdadm --assemble --scan

Estas opciones permiten a mdadm escanear las unidades de disco y volver a montar el RAID (busca los superbloques RAID en los discos). Normalmente esto se hace durante la fase init del arranque del sistema. Por ejemplo, en mi sistema CentOS 5.5, hay una línea en /etc /rc.d/rc.sysinit que luce como sigue:

/sbin/mdadm -A -s

que buscará ("-s") las unidades y ensamblará ("-A") el arreglo mdadm.

Sin embargo, puede tener problemas con la exploración y el montaje de conjuntos RAID mdadm cuando tiene más de una matriz. Lo que se recomienda es que si desea reiniciar una matriz manualmente especifique el uuid de la matriz (el "nombre" único del arreglo RAID). por ejemplo

% mdadm --scan --assemble --uuid = 7121b438:7d36f9f6:8aa9c8b3:b5b0d211

Dado que el uuid es único para cada matriz, esto asegurará que mdadm pueda volver a montar la matriz correctamente. Sin embargo, las capacidades de escaneo y ensamble de mdadm son muy buenas. Habitualmente mantengo dos configuraciones RAID mdadm en mi escritorio y nunca he tenido ninguna confusión con que discos pertenecen a que serie (gracias a los superbloques de los dispositivos).

Monitoreo/seguimiento de un array RAID mdadm.
El tercer modo de operación de mdadm es el monitoreo o seguimiento de la matriz RAID mdadm. Este modo controla una o más matrices y permite tomar acciones si cambian los estados de los arreglos. De acuerdo con la página de manual de mdadm, este modo de operación realmente sólo es útil para RAID-1, 4, 5, 6, y 10, o arreglos multipasos (multipath arrays), ya que tienen algunos estados interesantes. Por otro lado, RAID-0 y los RAID lineales no son útiles debido a que los discos fallados, faltantes o de reserva ocasionan que estos arreglos RAID fallen (por ejemplo quedan fuera de operación).

La opción básica para el seguimiento o monitoreo de matrices controladas vía mdamd es la siguiente:

mdadm --monitor opciones ... dispositivos ...

(Nota: Puede usar "-F" o "--follow" en lugar de "--monitor"). Hay varias opciones que se pueden utilizar para el monitoreo o seguimiento de arreglos mdadm como se enumeran a continuación:

  • -m,--mail Esta opción le permite definir una dirección de correo electrónico donde se envían las alertas mdadm.
  • -p,--program, --alert Esta opción permite a mdadm ejecutar un "programa" cada vez que se detecte determinado evento (se recomienda utilizar la ruta completa al programa).
  • -y,--syslog Esta opción hace que todos los eventos se reporten vía "syslog".
  • -d,--delay Esta opción crea un retraso (en segundos) desde el momento en que mdadm consulta las matrices hasta cuando las vuelve a consultar (es decir, el intervalo entre las encuestas).
  • -f --daemonize Esta opción le dice a mdadm que se ejecute como un demonio en segundo plano si se trata de monitorear matrices. Esto hace que mdadm bifurque (fork) un proceso hijo y se desconecte de la terminal.
  • -i,--pid-file Esta opción le dice a mdadm que escriba el PID a un archivo especifico (ejecutándose en modo demonio) en vez de mandarlo a la salida estándar.
  • -1,--oneshot Esta opción comprueba las matrices una sola vez y genera eventos "NewArray", y mas significativamente "DegradedArray" y "SparesMissing" (esto aparecerá en los logs). De acuerdo con las páginas de manual, si ejecuta el comando "mdadm --monitor --scan -1" desde una tarea en el cron, asegurará notificaciones regulares de cualquier array degradado (lo cual siempre es bueno).
  • -t --test Esta opción genera una alerta "TestMessage" para cada arreglo encontrado al inicio. Esta alerta se enviará vía mail y se pasará al programa de alerta (si ha definido uno). Esto es muy útil para probar que los mensajes de alerta llegan sin problemas (es decir, que funcionan).
Como puede ver, mdadm le ofrece varias opciones muy buenas para el control de su matrices. La práctica exacta de cómo controlarlo realmente depende de cómo quiere que funcione y de que herramientas o procesos ud haya desarrollado. Hay varios artículos en la web que muestran cómo controlar su arreglo mdadm.
En el interés de ayudar a empezar a las personas interesadas voy a proporcionarles algunos consejos que pueden utilizar para empezar con el monitoreo de arreglos mdadm. En primer lugar, recomendamos configurar mdadm para que le envíe un mail en caso de un cambio en el estado de la matriz. Hay varios artículos que tratan sobre cómo hacer esto. Por ejemplo, este blog muestra cómo utilizar mdadm para enviarle un mail en caso de un problema.

Un segundo post que muestra cómo configurar mdadm para que le envíe un mail en caso de un problema está aquí. Lea la respuesta 7 (kevlaur) que contiene algunas instrucciones bastante buenas sobre la configuración de las notificaciones de alerta. Lo interesante de este post es que el autor utiliza un "programa" para enviar el correo electrónico en lugar de dejárselo a mdadm. Esto le da cierta flexibilidad y permite personalizar las cosas (personalmente me gusta el enfoque, pero también hago que mdadm me envíe un mail - sólo para estar seguro).
Si quiere estar más involucrado en el monitoreo de sus matrices hay dos formas básicas para obtener más detalles: (1) cat /proc/mdstat y (2) mdadm --detail [dispositivo]. La primera opción te da una visión general rápida de la situación de la matriz (o matrices). Usted puede analizar esta salida (tal vez con Perl o Python), y crear un registro especial o enviar el resultado a syslog para permitir el procesamiento vía las herramientas de syslog. Como alternativa, puede crear una métrica simple de monitoreo que puede utilizar en conjunto con Ganglia o algo similar.

La segunda opción le da más detalles que mdstat pero una vez más, usted puede analizar esta salida y luego realizar alguna acción (logs, syslog, ganglia, etc.) Pero los detalles realmente dependen de ud dado que es probable que emplee procesos o técnicas específicas para la supervisión.
Una última opción es utilizar Munin, que es una herramienta de monitoreo (algo similar a ganglia). Cuenta con plugins que le permiten controlar sus arreglos RAID creados con mdadm.

Construcción de una matriz RAID mdadm.
Otro modo de operación en mdadm es la construcción de una matriz, pero sin emplear superbloques por dispositivo. Esto significa que no contará con mdadm "--scan" y "--assemble" en los dispositivos de la matriz. En consecuencia, deberá tener cuidado con diferenciar entre la creación inicial de la matriz y el ensamble (assemble) del mismo (o puede perder los datos). Además, si construye una matriz usando "build" cualquier control que pudiera haber llevado a cabo entre los dispositivos no se realizará. Básicamente, usted tiene que tener mucho cuidado al utilizar este modo de operación y saber exactamente lo que está haciendo.
Realmente no se recomienda utilizar este modo de operación, así que no lo vamos a discutir. Si usted está interesado en el uso de "build", entonces usted puede leer la página de manual o puede buscar por Internet cualquier referencia.

Crecimiento (growing) de una matriz RAID mdadm.
Una de las armas secretas que se obtiene con mdadm es la capacidad de aumentar, remodelar, o incluso cambiar los niveles RAID con arreglos md. Hay algunas limitaciones para el aumento y / o remodelación de las matrices sin embargo, sólo tener esa capacidad es un logro muy importante para mdadm.
La opción básica para el crecimiento y remodelación de los grupos md es "-G" o "--grow". Hay una serie de opciones que pueden utilizar y las cosas se pueden tornar complejas con bastante rapidez por lo que no las analizaré en este artículo introductorio. Por favor, lea las páginas de manual para las opciones o puedes buscar en Google para obtener información sobre el crecimiento de los grupos md. Sin embargo, vamos a echar un vistazo de alto nivel acerca de lo que la opción "--grow" puede hacer.

Podemos usar la opción "--grow" para añadir un tercer disco a una configuración RAID-1 de dos discos, o añadir otro disco a nuestra configuración RAID-5 existente. Pero también podemos utilizar la opción "--grow" para cambiar los niveles de RAID. Por ejemplo, podemos convertir un arreglo md RAID-1 de dos discos en una matriz md RAID-5 de dos discos. Directo desde el blog del autor de mdadm tienen la lista de los cambios (remodelaciones) que puede hacer:

  • Un array RAID-1 puede cambiar el número de dispositivos o cambiar el tamaño de los dispositivos individuales. Un RAID-1 de dos unidades se puede convertir en un RAID-5 de dos unidades.
  • Un RAID-4 puede cambiar el número de dispositivos o el tamaño de los dispositivos individuales. No se puede convertir a RAID-5 todavía (a pesar de que debería ser trivial implementarlo).
  • Un RAID-5 puede cambiar el número de dispositivos, el tamaño de los dispositivos individuales, el tamaño del fragmento y la disposición. Un RAID-5 de dos unidades se pueden convertir a RAID-1, y un RAID-5 de 3 o mas unidades se puede convertir a RAID-6.
  • Un RAID-6 puede cambiar el número de dispositivos, el tamaño de los dispositivos individuales, el tamaño del fragmento y la disposición. Y RAID-6 se puede convertir a RAID-5, en primer lugar cambiando el diseño para hacerlo similar a RAID-5, a continuación, cambiando el nivel.
  • Un conjunto lineal puede tener un dispositivo añadido lo cual simplemente aumentará su tamaño.
  • RAID-10 y RAID-0: Estas matrices no pueden ser reformadas hasta ahora.
Así se puede ver que hay una gran flexibilidad en mdadm con respecto a los cambios en la forma, los niveles RAID, la adición de dispositivos, la eliminación de dispositivos, etc, a los arreglos MD.
Como mencioné anteriormente, los detalles de la remodelación y los cambio de niveles RAID pueden complicarse. Le sugiero que antes de utilizar esta opción, lea toda la literatura que pueda. Entonces pregúntele a algunos expertos para cerciorarse de que los comandos sean correctos o no. Y antes de empezar nada, definitivamente debería asegurarse de que tiene una copia de seguridad de los datos y de que la matriz de almacenamiento no está en producción.

Administración de un array RAID md.
La administración de un array RAID md principalmente consiste en la administración de los dispositivos dentro de las matrices. Esto puede incluir agregar discos o quitar discos fallados dentro de la matriz.
Una manera simple (o algo así) de saber si está utilizando el modo de administración, es si usted especifica un dispositivo antes de las opciones en la línea de comando mdadm, o si la primera opción es "--add", "--fail" o "--remove", entonces usted está utilizando el modo de gestión de mdadm. La forma general del comando mdadm es:

mdadm opciones_de_dispositivo ... dispositivos ...

Las opciones que se utilizan en el modo de administración son:

  • -a,--add [dispositivo] Esta opción la permite agregar los dispositivos especificados en la matriz especificada, mientras que la matriz se está ejecutando.
  • --re-add [dispositivo] Esta opción le permite volver a agregar un dispositivo que se retiró previamente de la matriz.
  • -r,--remove [dispositivo] Esta opción le permite eliminar el dispositivo especificado. Pero el dispositivo no debe estar activo por lo que debe ser o un dispositivo fallado o uno de reserva.
  • -f,--fail [dispositivo] Esta opción marca el dispositivo especificado como defectuosos (fallado).
  • -set--faulty Esta opción es la misma que -f.
Puede combinar las opciones en un comando, pero todos los comandos deben afectar la misma matriz.
Un ejemplo sencillo del modo de administración de mdadm es,

%/sbin/mdadm /dev/md1 --add /dev/sdc1 --fail /dev/sdb1 --remove /dev/sdb1

En este ejemplo, la matriz /dev/md1 es el "objetivo" del comando mdadm. La primera opción, "--add /dev/sdc1" agrega un dispositivo (/dev/sdc1) a la matriz. A continuación, la opción "--fail /dev/sdb1" "suspende" el dispositivo diciéndole al arreglo que el dispositivo está fallado. Por último, la tercera opción, "--add /dev/sdc1" elimina el dispositivo de la matriz al punto en el cual puede ser eliminado del sistema. Tenga en cuenta que primero tiene que suspender el dispositivo que vaya a extraer.
Una característica interesante de mdadm es que si quita un dispositivo (disco) de una matriz luego puede volver a agregarlo (--re-add) a la matriz y mdadm sólo actualizará los bloques modificados desde el momento en el disco fue retirado. Este es el comportamiento predeterminado si utiliza superbloques en la creación de la matriz (es decir, que no ha utilizado el modo "build").

Modo misc (miscelaneas).
Este último modo de operación es una especie de cajón de sastre de opciones y comandos que no encajan en los otros seis modos. En general, este modo permite algunas operaciones en las matrices activas, operaciones en los dispositivos de componentes, y recopilación de información acerca de las matrices.

La forma general del comando mdadm en modo "misc" es la siguiente:

mdadm opciones ... dispositivos ...

Tenga en cuenta que para los comandos "misc", no se define ninguna matriz antes de las opciones. Las opciones de este modo son los siguientes:


  • -Q --query Esta opción analiza un dispositivo para ver si se trata de un dispositivo md y si es un componente de una matriz md. La información provista por mdadm se presenta en la salida.
  • -D,--detail [dispositivo-md] Esta opción imprime los detalles de uno o mas arreglos md. Si se agregan las opciones "--brief" o "--scan" el nivel de detalle en la salida se reduce, pero el formato se presta para /etc /mdadm.conf (un archivo de configuración opcional para mdadm).
  • -E,  --examine Esta opción imprime el contenido del superbloque md en el dispositivo (o en todos los dispositivos, si no se especifica ninguno). Al igual que con la opción "--detail", si se utiliza "--brief" o "--scan" la cantidad de salida se reduce pero es más adecuada para /etc/mdadm.conf.
  • -X,--examine-bitmap Esta opción reporta la información acerca de un archivo de mapa de bits.
  • -R, --run Esta opción inicia (activa) un array md parcialmente construido.
  • -S,--stop Esto detiene (desactiva) un arreglo md activo.
  • -O,--readonly Esta opción marca la matriz activa como de sólo lectura si no está siendo utilizada actualmente.
  • -W,--readwrite Esta opción marca la matriz como de lectura/escritura.
  • -zero--superblock Esta opción sobre escribe un superbloque md válido en una matriz. Esto es útil cuando se utilizan discos (dispositivos) de una matriz vieja en una nueva matriz md.
  • -T, --test Esta opción, cuando se utiliza con la opción "--detail", establece el estado de salida de mdadm para reflejar el estado del dispositivo md. Esto puede ser muy útil cuando para scripts de herramientas de monitoreo. También es útil si desea iniciar el arreglo md ud mismo en lugar de confiar en el kernel para el arranque automático.
De todas las operaciones de los modos "misc", "--query", "--detail", y "--examine" son las opciones más generalmente utilizadas.

Resumen.
Hemos pasado algún tiempo hablando acerca de las configuraciones RAID, tanto en sus niveles simples como los RAID anidados. En todas las discusiones hemos mencionado que las operaciones RAID son manejadas por un "controlador RAID". Hay dos tipos de controladores RAID - por hardware y por software. El controlador RAID por hardware tiene un procesador dedicado en una tarjeta adicional que se encarga de todos los cálculos RAID. Por el contrario, un RAID por software utiliza la CPU del sistema para los cálculos de RAID (lo que incluye los controladores RAID falsos también).
Este artículo es una introducción a mdadm, la herramienta de administración/mantenimiento de RAID por software de Linux que viene con casi todas las distribuciones. La herramienta es muy flexible permitiendo niveles RAID estándar y configuraciones RAID anidadas, incluyendo algunas configuraciones RAID-10 especializadas que hemos discutido previamente. Incluso se puede utilizar para construir una configuración anidada "Triple Lindy" si lo desea.

Mdadm tiene siete diferentes "modos" de operación que hemos tratado. Estos modos le permiten crear e iniciar un array RAID, montar un RAID (útil cuando se inicia el sistema), seguir o monitorear una matriz RAID, crear (build) un array RAID (básicamente haciéndolo todo a mano - no se recomienda), aumentar el tamaño de un array RAID (una de las armas secretas de mdadm), administrar un arreglo de RAID, y una categoría "miscelánea" para las funciones que pueda necesitar que no caen en las otras categorías.
Hay algunas características realmente buenas en mdadm que fácilmente puede ser pasadas por alto en el apuro por construir una configuración RAID. Hay dos grandes que quiero resaltar. La primera característica es el conjunto de herramientas de monitorización estándar de mdadm que le brindan un punto de partida ideal para la observación de la situación de su matriz md incluyendo la capacidad de enviar alertas de correo electrónico. Además, puede escribir scripts bastante sencillos para analizar información del estado de la matriz que pueden ser utilizados en herramientas de monitoreo, tales como Ganglia o Munin.

La segunda característica, que es probablemente la más importante, es la capacidad agrandar y reformar arreglos md. Esto le permite agregar dispositivos a un arreglo RAID existente y aumentar el tamaño de la matriz para incluir el espacio adicional. Sin embargo, la característica realmente interesante es que puede utilizar mdadm para cambiar los niveles RAID sin perder datos. Por ejemplo, puede convertir un RAID-1 de dos unidades en una configuración RAID-5 de dos unidades. A continuación, puede agregar discos para aumentar el tamaño de la configuración RAID-5. Entonces usted puede convertir su RAID-5 en una configuración RAID-6. Aunque no he utilizado esta característica, es bastante ingeniosa, por si me hacen la pregunta.
Mdadm es una gran herramienta para Linux que es fácil de usar y le da un gran control sobre sus matrices RAID. Si usted está pensando en utilizar RAID en Linux, asegúrese de echarle un vistazo a mdadm.


Descarga la versión en pdf desde aquí