12 minute read

4.2.- Administración de Sistemas RAID: mdadm

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

recuperarlos a partir de los discos espejo creados. Este tipo de sistema RAID no mejora los tiempos de acceso a los datos. El tamaño resultante del volumen creado bajo un sistema RAID1 sería únicamente el de uno de los discos que lo forman. (c) RAID5/RAID6 o Data Striping with parity: compuesto por tres o más discos, persigue ofrecer las ventajas que ofrecen los dos sistemas RAID anteriores: (1) mejorar los tiempos de acceso en operaciones de lectura y escritura a datos, y (2) garantizar una mayor disponibilidad de los datos mediante el uso de paridad. Para ello, RAID5 y RAID6, por un lado distribuyen los datos entre varios de los discos que conforman el volumen (striping), tal como hacía un RAID0, y por otro lado, almacenan en el resto de los discos (uno o más) información redundante (paridad) que permita poder recuperar los datos en caso de fallo de cualquiera de los discos del volumen. El tamaño resultante del volumen creado bajo un sistema RAID5 o RAID6 es igual a la suma de los discos entre los cuales se realiza el striping. En concreto, RAID5 requiere al menos de 3 discos, donde uno de ellos se usa para redundancia (paridad), por lo que el espacio para datos del volumen será igual al número de discos usados menos 1, y RAID6 requiere al menos 4 discos, de los cuales dos de ellos se usan para redundancia, por lo que el espacio para datos del volumen será igual al número de discos usados menos 2.

Advertisement

4.2.- Administración de Sistemas RAID: mdadm

A continuación se detallarán los pasos para la implementación práctica de un sistema RAID bajo GNU/Linux con el software "mdadm". mdadm nos permite implementar entre otros un sistema RAID0, RAID1, RAID5, RAID6 o RAID10 (para saber las posibles implementaciones con más detalle ejecutar: man mdadm).Además, con la finalidad de no tener que adquirir el material necesario para su realización (equipos, discos duros, software, etc ...), se realizará todo ello bajo una máquina virtual VirtualBox con sistema operativo GNU/Linux Ubuntu, ahorrándonos por tanto el coste de los discos duros IDE o SATA necesarios para la implementación de los volúmenes RAID.

A continuación, se describen los pasos a seguir para implementar un sistema RAID: Paso Nº1.- Disponer de varios discos o particiones con los que crear los volúmenes RAID. En el caso de que las pruebas se realicen en un entorno virtualizado, por ejemplo mediante VirtualBox, será suficiente con crear varios discos virtuales desde el administrador de discos (CTRL+D, Archivo -> Administrador de medios virtuales).

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 149

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

Desde la configuración de la máquina virtual desde la que se va a realizar la práctica se pueden crear "Nuevos" discos virtuales, "Agregar" otros discos duros (*.vdi) existentes que ya tengas, "Eliminar" discos o "Liberarlos" de la máquina virtual a la cual se encuentran asociados. Hay que recordar que en función del tipo de controladora, IDE o SATA, podremos agregar más o menos discos. Si tenemos en cuenta que con IDE tan sólo podemos agregar hasta un tope de 4 dispositivos, se aconseja hacer uso de una controladora SATA.

Una vez arrancada la máquina podremos comprobar que el sistema detecta correctamente los discos simplemente listándolos: [root@mv1]# ls /dev/sd* /dev/sda /dev/sda2 /dev/sda6 /dev/sdc /dev/sde /dev/sdg /dev/sdi /dev/sda1 /dev/sda5 /dev/sdb /dev/sdd /dev/sdf /dev/sdh

Paso Nº2.- mdadm nos permite crear volúmenes RAID haciendo uso de varios discos o de varias particiones de disco. En el caso de que queramos crear un volumen RAID haciendo uso de particiones, necesitaremos una herramienta de particionado de discos. Por ejemplo, podemos hacer uso de fdisk o parted en una interfaz de línea de comandos (p.e. Ubuntu Server), o Gparted si nuestro equipo dispon de una interfaz gráfica. Tanto parted, como Gparted, nos permiten igualmente dar formato a las particiones, aunque esto no será necesario, ya que una vez creado el volumen es cuando necesitaremos darle formato. Por ejemplo, en el caso de usar fdisk, las opciones más comunes serían las siguientes: [root@mv1]# fdisk /dev/sdX Orden (m para obtener ayuda): m Orden Acción ... d Suprime una partición l Lista los tipos de particiones conocidos n Añade una nueva partición p Imprime la tabla de particiones q Sale sin guardar los cambios

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 150

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

... w Escribe la tabla en el disco y sale x Funciones adicionales (sólo para usuarios avanzados)

Paso Nº3.- Una vez que ya tenemos los discos agregados a nuestra máquina, y en en caso de ser necesario, particionados para hacer volúmenes RAID basados en particiones, pasaremos a crear el volumen RAID deseado mediante la herramienta software mdadm. En caso de no tener instalado el software "mdadm" será necesario instalarlo antes: [root@mv1]# apt-get install mdadm

Además nos aseguraremos de que exista un subdirectorio dentro de /dev, llamado md, múltiples discos, /dev/md, donde almacenaremos la lista de enlaces (links) a los volúmenes RAID que vayamos a crear: [root@mv1]# mkdir /dev/md

¡¡Aclaración!! mdadm nos permite crear directamente un dispositivo (device) o volumen RAID en /dev/mdX, pero no se aconseja ya que mdadm suele ser muy estricto con los identificadores asignados, pudiendo llegar a renombrarlos si mdadm lo considera necesario. Para poder asignar un nombre más amigable que haga referencia a nuestro volumen RAID, durante el proceso de creación, en lugar de indicar la ruta del dispositivo a crear, /dev/mdX, tan sólo asignaremos un nombre al enlace (link) al dispositivo RAID que se vaya a crear, p.e. /dev/md/nombre_maquina:miraid1. Esto nos permitirá a posteriori hacer referencia al volumen RAID, tanto a través del dispositivo /dev/mdX que crea mdadm, como a través del enlace /dev/md/nombre_maquina:miraid1 que hemos asignado. Estos enlaces a los dispositivos reales deben ser creados en este subdirectorio obligatoriamente, /dev/md, ya que es allí donde mdadm espera que sean creados.

La sintaxis de mdadm que tendremos que usar para la creación de un volumen RAID será la siguiente:

mdadm --create /dev/md/nombre_maquina:nombre_volumen --level=raidY \ --raid-devices=N /dev/sdb /dev/sdc ... /dev/sdN

donde en "nombre_maquina:nombre_volumen" indicaremos un identificador para el enlace (link) a nuestro sistema RAID compuesto por el nombre de la máquina (more /etc/hostname) y un nombre para el volumen RAID, donde Y indica el nivel del sistema RAID (0, Data Stripping, 1, Mirroring, 5, etc.), y N el número de discos que utilizaremos en su implementación. Además, tal como se ha dicho anteriormente, insistir en que el sistema RAID se puede implementar haciendo uso de los discos completos o de particiones. Por ejemplo, suponiendo que han sido particionados y formateados los discos previamente (p.e. fdisk, Gparted), en particiones de igual tamaño: mdadm --create /dev/md/nombre_maquina:nombre_volumen --level=raidY --raid-devices=N /dev/sdb1 /dev/sdc1 ... /dev/sdN1

donde el "1" indica que se va a hacer uso de la primera de las particiones de los discos utilizados.

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 151

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

¡¡Importante!! A la hora de crear un volumen RAID en el mundo real deberemos reflexionar a la hora de elegir entre formarlo con discos o con particiones, ya que aunque intuitivamente podamos pensar que vamos a garantizar una mayor eficiencia del espacio de los discos si usamos directamente discos, a veces resulta más aconsejable hacer uso de particiones, con la finalidad de asegurarnos los tamaños deseados. Es decir, una vez formado un volumen RAID, si tuviéramos que sustituir uno de los discos que lo forman, a veces puede resultar bastante complicado encontrar un disco del mismo tamaño al que se desea sustituir. En cambio, si hacemos uso de particiones, siempre podemos ajustar su tamaño mediante alguna de las herramientas software disponibles (fdisk, Gparted, etc.).

Por ejemplo, si dispusiéramos de dos discos, /dev/sdb y /dev/sdc, y quisieramos montar un volumen RAID0, identificándolo como /dev/md/equipo1:miraid0 (md, multiples discos, hostname = mv1, identificador volumen RAID miraid0) ejecutaríamos el siguiente comando: [root@mv1]# mdadm --create /dev/md/mv1:miraid0 \ --level=raid0 --raid-devices=2 /dev/sdb /dev/sdc

¡¡Advertencia!! Advertir que /dev/md/mv1:miraid0 tan sólo es un enlace al dispositivo RAID que realmente crea mdadm: [root@mv1]# ls -l /dev/md/mv1:miraid0 lrwxrwxrwx 1 root root 8 ene 21 19:04 /dev/md/mv1:miraid0 -> ../md127

Por ejemplo, en el caso anterior, /dev/md/mv1:miraid0 es un enlace al dispositivo RAID creado /dev/md127. Paso Nº4.- Comprobación del estado en que se encuentra la implementación de nuestro volumen RAID. A veces, la creación del volumen RAID no es inmediata. Para consultar el estado de su creación, ejecutaremos alguno de los siguientes comandos: [root@mv1]# more /proc/mdstat [root@mv1]# mdadm --detail /dev/md/mv1:miraid0

Donde mdadm --detail /dev/md/nombre_maquina:nombre_volumen nos proporcionaría una información detallada del volumen RAID. Por ejemplo, si estuvieramos creando el volumen RAID0 anterior: [root@mv1]# mdadm --create /dev/md/mv1:miraid0 \ --level=raid0 --raid-devices=2 /dev/sdb /dev/sdc [root@mv1]# mdadm --detail /dev/md/mv1:miraid0 Paso Nº5.- Formatearemos el sistema RAID implementado. Independientemente de que los discos o particiones que formen parte del sistema RAID ya estén formateados, habrá que explícitamente formatear el volumen RAID creado. Por ejemplo, siguiendo con el ejemplo anterior, si queremos darle formato "ext4", haríamos uso del comando mkfs.ext4: [root@mv1]# mdadm --create /dev/md/mv1:miraid0 \

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 152

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

--level=raid0 --raid-devices=2 /dev/sdb /dev/sdc [root@mv1]# mdadm --detail /dev/md/mv1:miraid0 [root@mv1]# mkfs.ext4 /dev/md/mv1:miraid0 Paso Nº6.- Configuraremos el servicio "mdadm" para que cuando se reinicie el equipo la configuración del sistema RAID persista. Para ello, deberemos añadir al archivo de configuración del servicio de gestión software de los sistemas RAID "/etc/mdadm/mdadm.conf", las siguientes lineas correspondientes a la configuración RAID implementada. En primer lugar indicamos al servicio mdadm cual es la lista de dispositivos de almacenamiento vamos a hacer uso en la implementación de los volúmenes RAID, y a continuación incluiremos los detalles del último volumen RAID implementado: [root@mv1]# echo "DEVICE /dev/sdb /dev/sdc" > /etc/mdadm/mdadm.conf [root@mv1]# mdadm --detail --scan | tail -1 >> /etc/mdadm/mdadm.conf

¡¡Aclaración!! En los comandos anteriores se supone que estos son los primeros volúmenes RAID que se crean dentro del sistema, de hay que se use un único redireccionamiento '>' para introducir la lista de dispositivos en el mdadm.conf, lo cual sobrescribe todo lo que pudiera haber. En el caso de que ya hayan sido creados otros volúmenes RAID antes, utilizaremos un doble redireccionamiento: [root@mv1]# echo "DEVICE /dev/sdb /dev/sdc" >> /etc/mdadm/mdadm.conf

En concreto, mediante el último comando anterior, escaneamos todos los sistemas RAID implementados en el sistema, y mediante el comando "tail -1", filtramos y añadimos al fichero de configuración del mdadm el último volumen RAID implementado. Se supone que en el caso de que hayan sido implementados ya varios, el resto habrán sido añadidos previamente. ¡¡Importante!! Al ejecutar el comando anterior "mdadm --detail --scan", dependiendo de la versión de mdadm que usemos, puede ser que veamos por pantalla algo parecido a lo siguiente:

... ARRAY /dev/md0 level=raid0 num-devices=2 metadata=00.90 UUID=c498498c:783d... ARRAY /dev/md5 level=raid5 num-devices=3 metadata=00.90 UUID=b5552a1f:1d6b... ARRAY /dev/md1 level=raid1 num-devices=2 metadata=00.90 UUID=53185d99:2c47... ...

Si detrás de "metadata" nos aparece la versión, "00.90", deberemos corregirlo (es un bug de mdadm), y poner en su lugar "0.90", por lo que habrá que quitar un cero. Es decir, tras redireccionar la salida del comando anterior sobre el archivo "mdadm.conf" habrá que editarlo, por ejemplo con "nano", y quitar el "0" correspondiente: ARRAY /dev/md0 level=raid0 num-devices=2 metadata=0.90 UUID=c498498c:783d... ARRAY /dev/md5 level=raid5 num-devices=3 metadata=0.90 UUID=b5552a1f:1d6b... ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=53185d99:2c47... Paso 7.- Por último tan sólo nos quedará configurar el equipo para que el montaje del volumen RAID implementado sea automático como una nueva unidad de almacenamiento del equipo en los

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 153

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

posteriores reinicios del equipo. Para ello, deberemos editar el fichero de montajes automáticos del sistema GNU/Linux "/etc/fstab", e incluir el sistema RAID. ¡¡Importante!! Antes de configurar el /etc/fstab para que se realice el montaje automático del volumen RAID, es conveniente reiniciar el equipo, y comprobar que el sistema RAID implementado persiste, y es reconocido como un nuevo disposito del sistema dento del directorio /dev (devices): /dev/md/nombre_maquina:nombre_volumen

7.1.- Creamos la carpeta donde se realizará el montaje automático: [root@mv1]# mkdir /mnt/miraid0

7.2.- Editamos el fichero "/etc/fstab" incluyendo la siguiente línea al final del fichero (siguiendo con el ejemplo anterior, /dev/md/mv1:miraid0): [root@mv1]# nano /etc/fstab # Añadimos una línea similar a la siguiente /dev/md/mv1:miraid0 /mnt/miraid0 ext4 user,rw,exec,acl,usrquota,grpquota,defaults 0 0

Las opciones acl, usrquota, grpquota se incluirán en el caso en que deseemos establecer listas de control de acceso (ACL) a usuarios, y gestionar cuotas a usuarios. Para ello deberán instalarse los programas acl y quota y configurarse adecuadamente, tal como veremos más tarde a lo largo de la práctica. 7.3.- Montamos el sistema raid y comprobaremos su correcto montaje: [root@mv1]# mount /mnt/miraid [root@mv1]# df -h S.ficheros Tamaño Usados Disp Uso% Montado en /dev/mdX 15G 7,6G 6,4G 55% /mnt/miraid0

También podemos probar a reiniciar el sistema y comprobar que el volumen RAID persiste (podemos ejecutar "df -h" y comprobar que nuestro sistema RAID esta montado). ¡¡Aclaración!! Siguiendo con las advertencias anteriores, puede observarse una vez montado, que el dispositivo RAID que se monta /dev/mdX es al que apunta el enlace /dev/md/mv1:miraid0 indicado durante la creación del volumen RAID: "mdadm --create /dev/md/mv1:miraid0 ...". Paso Nº8.- Comprobar el comportamiento del sistema RAID. La herramienta software "mdadm" además de crear el volumen RAID nos permite hacer las siguientes pruebas sobre él: --fail, para provocar un fallo en un disco o partición del volumen RAID, y así comprobar que aún fallando un disco o partición siguen funcionando los sistemas RAID1 y RAID5. --remove, para eliminar del sistema RAID un disco o partición que previamente haya fallado. --add, para añadir un disco o partición al sistema RAID y así reemplazarlo.

Observando periódicamente el fichero "/proc/mdstat", o viendo los detalles del dispositivo

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 154

Práctica Nº4.-Sistemas RAID. ACLs y Cuotas. Delegación de Privilegios con Sudo

RAID "mdadm --detail /dev/mdX" podrá observarse el estado de los sistemas RAID implementados, y de los discos que lo componen.

Además, aunque mdadm tiene multitud de posibilidades, cabría destacar las siguientes:

Parámetro Sintaxis Comando Significado

--fail mdadm --fail /dev/mdX /dev/sdY

mdadm --fail /dev/mdX /dev/sdYN Para provocar un fallo en el disco sdY que forma parte del sistema RAID previamente implementado mdX Para provocar un fallo en la partición sdYN que forma parte del sistema RAID previamente implementado mdX

--remove mdadm --remove /dev/mdX /dev/sdY mdadm --remove /dev/mdX Para eliminar del sistema RAID mdX el disco o partición, sdY o sdYZ, que previamente haya fallado. También nos permite eliminar el sistema RAID una vez parado el servicio (--stop)

--add mdadm --add /dev/mdX /dev/sdZ Para añadir el disco o partición, sdZ o sdZN, al sistema RAID mdX para reemplazar el disco o partición que haya previamente fallado, sdY o sdYN

--query mdadm --query /dev/sdX Para saber si un disco /dev/sdX pertenece a algún volumen RAID implementado

--stop mdadm --stop /dev/mdX Para parar el servicio ofrecido por un volumen RAID /dev/mdX

mdadm --stop --scan Para todos los volúmenes RAID existentes

--zero-superblock mdadm --zero-superblock /dev/sdX

Elimina el superbloque de un disco que ha estado formando parte de un sistema RAID. Es importante hacerlo cuando queremos deshacernos de un volumen RAID, tras pararlo (--stop) y eliminarlo (--remove) ¡¡Importante!! Además del software de gestión de sistemas RAID, mdadm, para la realización de los ejercicios prácticos que se proponen a continuación pueden resultar útiles los siguientes comandos para administrar los discos:

Comandos de Administración de Discos Significado

Seguridad Informática y Alta Disponibilidad – amartinromero@gmail.com 155

This article is from: