Revista Informática

Cómo crear un RAID por software mediante mdadm en Linux

Publicado el 08 febrero 2018 por Drassill
Cuando hablamos de servidores y/o equipos que tienen que almacenar un gran volumen de datos importantes, nos vemos obligados a usar tecnologías que aseguren la integridad de nuestros datos en caso de desastre, mediante la tecnología RAID, pues es gracias a ésta que la rotura de un disco duro no es tan "grave" como debería. Generalmente la configuración de discos en RAID se suele hacer desde la propia controladora que incluye el hardware, pero no siempre podemos trabajar en las circunstancias ideales, y ahí es donde debemos de optar por una solución algo menos cómoda, pero igual de útil. La creación de RAID por software, que en este caso realizaremos gracias a la herramienta mdadm.
RAID_portada
Antes de proseguir, creo que es interesante que todo aquel que no esté familiarizado con la tecnología RAID, y con los diferentes tipos, tenga una pequeña noción tanto del RAID como de los distintos tipos de éste. 
RAID (Redundant Array of Independent Disks) permite usar un espacio de almacenamiento repartido entre varios discos para aumentar el rendimiento y/o la tolerancia a fallos. Dependiendo del tipo de RAID escogido, cuya elección haríamos dependiendo de nuestras necesidades, el RAID nos otorgaría unas ventajas u otras, con lo que es interesante conocer los tipos RAID más comunes con el fin de saber qué elección es la más adecuada para nosotros.
RAID 0:
De entre todos los RAID, probablemente sea el más "inútil", pues su única ventaja es que reparte toda la información en todos los discos que componen el RAID... Esto tiene como ventaja que si tenemos dos discos duros de 1 TB en RAID 0, tendríamos 2TB disponibles para almacenar lo que queramos, si bien tiene una gran desventaja y es que al repartir todo el contenido entre los dos discos, en caso de que uno de los dos fallase, toda la información se perdería, con lo que podríamos decir que el objetivo de este RAID se basa en la rapidez y la eficiencia, dejando de lado cualquier medida que pueda ayudarnos a no perder la información (más allá de las típicas, y al mismo tiempo infravaloradas, copias de seguridad).
RAID_0
RAID 1:
Este sería justo lo contrario al RAID 0, pues así como antes la única función del RAID 0 es la rapidez de acceso a los datos y la capacidad de usar varios discos como si fueran uno solo, en este caso el objetivo del RAID 1 es la tolerancia a fallos. En este caso, RAID 1 lo que haría sería clonar lo guardado en un disco en otro, con el fin de que en caso de que el "primer" disco falle, tengamos el segundo con la información íntegra disponible.
RAID_1
RAID 5:
Probablemente el más famoso de todos en el ámbito de servidores. En este caso no podemos realizar un RAID 5 con solo 2 discos, sino que harían falta un mínimo de 3. En este caso, el RAID 5 combina capacidad y tolerancia a errores, pues se trata de un RAID que usa tres cuartas partes de cada disco para el espacio en sí, mientras que una cuarta parte de cada uno de ellos es dedicada para la tolerancia a fallos. Además, en caso de que uno de los discos se averiase, tan pronto como se sustituyese, el nuevo disco se llenaría automáticamente con la información que le corresponde gracias a que los otros dos discos saben qué información le falta. Estos gracias a que distribuye cada ciertos bloques de información un bit de paridad permite saber qué información sería necesaria "rellenar" en caso de fallar un disco duro. En caso de que un segundo disco fallase (sin haber llegado a sustituir el primero), se perdería toda la información.
RAID_5
Teniendo estos conceptos claros, podemos pasar a la creación y/o configuración de RAIDs; para ello, lo primero e indispensable sería tener instalada la herramienta mdadm. Dicha herramienta, si bien viene incluida por defecto en los repositorios, no está instalada en el sistema, con lo que si queremos instalarla deberíamos hacer:
apt-get install mdadm
Una vez tengamos la herramienta instalada; la creación de volúmenes RAID es bastante sencilla; el único requisito es que tengamos dos discos duros (que pueden ser discos duros virtuales) o más para RAID 0 o RAID 1 y tres discos o más para RAID 5. Teniendo esto en cuenta, la sintaxis para la creación de un nuevo RAID por software sería:
mdadm -C nombre_raid -l tipo_raid -n número_discos discos_duros_a_usar nombre_discos

Si esto se desgranase significaría lo siguiente:
  • -C implica que se va a crear un nuevo RAID, al cual se le va a poner un nombre identificativo que el sistema pueda reconocer como si fuese un dispositivo más. Por norma general se usa como nombre /dev/mdx; por ejemplo /dev/md0.
  • Con el parámetro -l le estaríamos diciendo qué tipo de RAID queremos... Aquí solamente habría que indicarselo de forma numérica. Es decir que si quisiésemos un RAID 0 solamente especificaríamos el número 0, RAID 1 con el número 1, etc...
  • Gracias al parámetro -n estaríamos indicando el número de discos que van a componer el RAID, tras lo cual indicaríamos el nombre de las unidades que van a componer el susodicho.

Supongamos que vamos a crear un RAID 0 y que tenemos dos discos listos para ser usados llamados /dev/sdc y /dev/sdd. Para componer dicho RAID escribiríamos:
mdadm -C /dev/md0 -l 0 -n 2 \
/dev/sdc /dev/sdd
Dependiendo del espacio de cada disco, el RAID tardaría desde segundos hasta varios minutos. Tras crear dicho RAID podemos activarlo o desactivarlo a nuestro gusto mediante los siguientes comandos:
Para pararlo:
mdadm -S /dev/md0
Para arrancarlo:
mdadm -A /dev/md0 /dev/sdc /dev/sdd
Gracias a ello podemos tener activo el RAID solo cuando nosotros lo veamos conveniente, si bien obviamente el tener inactivo el RAID haría que no pudiésemos acceder a los discos.
En caso de tener el RAID activo, podríamos consultar el estado de este gracias al comando:
mdadm -D /dev/md0
En mi caso en particular, la información mostrada sería la de a continuación:
mdadm_D
Es importante recalcar que aunque el RAID esté creado, este carece de partición ni formato alguno... Con lo que con el fin de que sea usable habría que usar la utilidad fdisk, y crear una nueva partición:
fdisk /dev/md0
En mi caso habría creado una sola partición cuyo nombre sería md0p1. A dicha partición habría que darle formato, ya que por defecto no posee ninguno y no puede ser montado en GNU/Linux sin él. Así que le asignaríamos un nuevo formato mediante la herramienta mkfs; por ejemplo ext4:
mkfsext4 /dev/md0p1
Gracias a dicho comando, el RAID tendría una partición plenamente funcional que podría ser montada en el sistema como una partición más mediante el comando mount. Por ejemplo:
mount /dev/md0p1 /mnt
Obviamente dicha partición podría ser montada durante el arranque si se incluyese en /etc/fstab.
Como podéis ver la creación y gestión de RAIDs, y el convertirlos en volúmenes funcionales es más sencillo de lo que parece; simplemente habría que tener conocimiento de cada tipo de RAID y la ventaja que ofrece cada tipo.
Espero que os haya resultado útil.
Saludos.

Volver a la Portada de Logo Paperblog