Tarea 1: Crea un RAID llamado md5 con los discos que hemos conectado a la máquina. ¿Cuántos discos tienes que conectar? ¿Qué diferencia existe entre el RAID 5 y el RAID 1?
El primer paso será instalar la paquetería necesaria en nuestro equipo para poder trabajar con Vagrant junto a Virtualbox. Dado que Virtualbox no se encuentra actualmente en los repositorios de Debian, tendremos que descargarlo de los repositorios oficiales de Oracle. Para añadir dicho repositorio a nuestra máquina, ejecutaremos el siguiente comando (con permisos de administrador, ejecutando el comando su -
):
También tendremos que añadir la clave pública GPG de Oracle a nuestro anillo de claves para poder descifrar e instalar el paquete de Virtualbox que vamos a descargar, ejecutando para ello el comando:
Listo. El siguiente paso consiste en realizar la instalación, pero hay una cosa muy importante a tener en cuenta. La versión actual de Vagrant en la rama stable (2.2.3) soporta hasta la versión 6.0 de Virtualbox, tal y como se puede ver en el changelog, por lo que no podemos instalar la 6.1, ya que no la soportaría. Procedemos a la instalación (no sin antes actualizar la paquetería disponible) ejecutando el comando:
Durante la instalación, nos preguntará el hipervisor que usaremos, por lo que en este caso, debemos elegir Virtualbox (opción 2).
Todo está correctamente configurado, así que lo primero que haremos será crear un directorio que únicamente usaremos para esta infraestructura, donde se alojará el Vagrantfile (contiene la configuración de nuestra estructura). Para ello, ejecutaremos el comando:
Esto nos generará en nuestro directorio personal un directorio llamado vagrant, dentro del cuál almacenaremos todos los directorios de las infraestructuras de Vagrant (para mantener una organización en todo momento), en este caso, la alojaremos dentro del directorio generado dentro del mismo, llamado raid. Gracias a la opción -p habrá generado el directorio padre también.
El siguiente paso será generar un fichero Vagrantfile dentro del directorio ~/vagrant/raid donde indicaremos la infraestructura que deseamos. Para generar dicho fichero, ejecutaremos el comando:
Creo que es necesario aclarar lo referente a los discos antes de empezar a configurar el fichero. En el enunciado se pide hacer un RAID 5, es decir, se necesitan al menos 3 discos para ello, pues la información se almacena alternativamente en dichos discos en forma de bloques, almacenando en el restante la paridad, para poder restablecer la información en caso de pérdida, incrementando así la fiabilidad, permitiendo por tanto, que como máximo se estropease un disco de forma simultánea. Cuando dicho disco estropeado se cambie por uno nuevo, la información se recuperará en tiempo real, sin que el servidor deje de funcionar en ningún momento.
Como se puede apreciar en este ejemplo, el primer bloque (A1) se ha situado en el disco 0, el segundo bloque (A2) en el disco 1 y la información de paridad (Ap), en el disco 2, de manera que si cualquiera de los discos fallase, gracias a la operación matemática de paridad, podríamos recuperar la información para cualquiera de ellos. Sin embargo, con el tercer y cuarto bloque cambia la localización, pues el tercero (B1) se ha situado en el disco 1 y el cuarto (B2), en el disco 2, almacenándose la paridad (Bp) en el disco 0. El hecho de tener que almacenar la paridad de los bloques hace que se pierda la capacidad de uno de los discos, es decir, si tenemos un RAID 5 de 3 discos de 1GB, en el RAID 5 aparecerá que tiene una capacidad de 2GB. Esto demuestra que se trabaja de forma alternativa con los discos.
A diferencia del RAID 1, que necesita al menos 2 discos y en lugar de almacenar la información en forma de bloques entre todos los discos, lo que hace es guardarla por duplicado (o triplicado, o cuadruplicado… dependiendo del número de discos), permitiendo por tanto, que como máximo se estropease uno de los dos discos (si tuviese 5, podrían estropearse 4, quedando siempre uno de ellos con la información en su interior). Cuando dicho disco estropeado se cambie por uno nuevo, la información se duplicará de nuevo en tiempo real, sin que el servidor deje de funcionar en ningún momento.
Como se puede apreciar en este ejemplo, el primer bloque (A1) se ha situado tanto en el disco 0 como en el disco 1, de manera que si cualquiera de los discos fallase, todavía quedaría uno funcionando con la información en su interior. El hecho de tener que almacenar la información por duplicado (o triplicado, o cuadruplicado…) hace que se pierda la capacidad de todos los discos excepto de uno, es decir, el espacio utilizable es únicamente el del más pequeño de ellos, por lo que si tenemos un RAID 1 de 3 discos de 1GB, en el RAID 1 aparecerá que tiene una capacidad de 1GB.
Ha quedado claro que el RAID 5 necesita al menos 3 discos para trabajar, pero si seguimos leyendo el enunciado, la Tarea 8 y la Tarea 9, nos pide usar un total de dos discos más para hacer determinadas tareas, así que vamos a matar dos pájaros de un tiro y vamos a añadir los 5 directamente, para no tener que parar la máquina en ningún momento.
En este caso, voy a modificar el fichero usando Visual Studio Code, pero se puede utilizar cualquier otro. Para abrir el fichero con VSCode:
Tras haber guardado los cambios, debemos acceder al directorio donde tenemos el Vagrantfile almacenado (pues de lo contrario no funcionará) y arrancar el escenario/infraestructura. Para ello, ejecutaremos el comando:
A continuación comenzará a descargar el box (en caso de que no lo tuviésemos previamente) y a generar la máquina virtual con los parámetros que le hemos establecido en el Vagrantfile. Una vez que haya finalizado el proceso, nos podremos conectar a la misma ejecutando la siguiente instrucción:
Ya nos encontramos dentro de la máquina. Para verificar que los 5 discos se han creado y anexado correctamente, ejecutaremos el siguiente comando para listar los dispositivos de bloques existentes en la máquina:
Efectivamente, se han creado y anexado 5 discos de 1GB (sdb, sdc, sdd, sde y sdf).
Lo siguiente será instalar el paquete necesario para crear RAID software (mdadm), no sin antes upgradear los paquetes instalados, ya que el box con el tiempo se va quedando desactualizado. Para ello, ejecutaremos el comando (con permisos de administrador, ejecutando el comando sudo su -
):
Ya tenemos todo lo necesario para crear un RAID 5, así que ahora seguiremos la siguiente estructura para ejecutar la instrucción:
En este caso, el nombre del raid tiene que ser md5, de nivel 5, con un total de 3 discos (sdb, sdc y sdd, por ejemplo). La instrucción quedaría de la siguiente forma:
En un principio, el RAID 5 ya está creado e iniciado, gracias a la información que nos ha devuelto por pantalla. Es importante mencionar que podríamos haber creado una tabla de particiones dentro de dichos discos y en lugar de agregar al RAID el disco sdb, haber agregado la partición sdb1, pero no es algo necesario en este caso.
Tarea 2: Comprueba las características del RAID. Comprueba el estado del RAID. ¿Qué capacidad tiene el RAID que hemos creado?
Para comprobar las características (detalles) de un RAID debemos hacer uso de la sintaxis:
En este caso, el comando a ejecutar sería:
Como se puede apreciar en la salida del comando, el tamaño disponible del RAID (Array Size) es de 2044MiB, es decir, 2GiB, pues tal y como hemos explicado anteriormente, al tratarse de un RAID 5, se pierde la capacidad de uno de los discos (Used Dev Size), es decir, 1GiB. También podemos apreciar que se encuentra compuesto por los tres discos que hemos introducido (sdb, sdc y sdd).
Para comprobar el estado de un RAID debemos ejecutar el comando:
Como se puede apreciar, el RAID 5 de nombre md5 se encuentra actualmente activo (active), además, los 3 discos se encuentran en perfecto estado y en uso actualmente (no hay unused devices).
Tarea 3: Crea un volumen lógico (LVM) de 500MB en el RAID 5.
Lo primero será instalar el paquete necesario para usar LVM (lvm2), ya que en el box no se encuentra instalado. Para ello, ejecutamos el comando:
En LVM tenemos que realizar una serie de pasos antes de crear un volumen lógico. El primero es añadir el dispositivo de bloques (en este caso el RAID 5 que acabamos de crear) como volumen físico (PV). Tras ello, dicho volumen físico tendremos que añadirlo a un “contenedor” conocido como grupo de volúmenes (VG), y de ahí es de donde posteriormente cogeremos la capacidad para crear un volumen lógico (LV).
Esta estructura tiene una gran ventaja y es que al ser volúmenes dinámicos, podemos aumentar su tamaño si nos quedamos escasos, ya que simplemente bastaría con comprar un nuevo disco duro, añadirlo como volumen físico y al grupo de volúmenes y posteriormente, extender el volumen lógico. Finalmente, redimensionamos el sistema de ficheros y listo. Sin embargo, esto no es posible con las particiones físicas, ya que al estar delimitado por sectores, el hecho de aumentar la partición puede afectar a los datos que se encuentren contiguos.
Antes de nada, añadiremos el RAID 5 como volumen físico, haciendo uso de la sintaxis:
En este caso, el comando a ejecutar sería:
El dispositivo de bloques ya se ha añadido como volumen físico, así que el siguiente paso será crear un grupo de volúmenes (de nombre raid5, por ejemplo) y añadirlo al mismo, haciendo uso de la sintaxis:
En este caso, el comando a ejecutar sería:
Para verificar que hasta ahora lo hemos hecho todo correctamente, ejecutaremos los siguientes comandos para listar los volúmenes físicos y los grupos de volúmenes existentes en la máquina:
Efectivamente, un volumen físico de nombre /dev/md5 se encuentra creado, perteneciente al grupo de volúmenes raid5, que tiene todo el espacio disponible.
Ha llegado el momento de crear el volumen lógico (de nombre volumen1, por ejemplo), así que haremos uso de la sintaxis:
En este caso, el comando a ejecutar sería:
De nuevo, para verificar que el volumen lógico ha sido correctamente creado, ejecutaremos el comando:
Efectivamente, así ha sido. Además, ejecutaremos el comando lsblk
de nuevo para ver cómo va la estructura.
De aquí podemos deducir que el RAID 5 de nombre md5 se encuentra contenido entre los dispositivos sdb, sdc y sdd, de 1GB cada uno, teniendo un tamaño total de 2GB, además de un volumen lógico de nombre volumen1, que se encuentra dentro de un grupo de volúmenes de nombre raid5, teniendo un tamaño total de 500MB.
Tarea 4: Formatea ese volumen con un sistema de archivos xfs.
Lo primero será instalar el paquete necesario para poder crear sistemas de ficheros XFS (xfsprogs), ya que en el box no se encuentra instalado. Para ello, ejecutamos el comando:
Ya podemos crear el sistema de ficheros XFS en el volumen lógico volumen1. Para ello, haremos uso de la sintaxis:
En este caso, el comando a ejecutar sería:
Para verificar que el sistema de ficheros se ha generado correctamente dentro del dispositivo de bloques /dev/raid5/volumen1, ejecutaremos el comando:
Tal y como se puede apreciar en los tipos de sistemas de ficheros (FSTYPE), el volumen lógico volumen1 tiene un sistema de ficheros XFS.
Tarea 5: Monta el volumen en el directorio /mnt/raid5 y crea un fichero. ¿Qué tendríamos que hacer para que este punto de montaje sea permanente?
El primer paso será crear un directorio dentro de /mnt/ de nombre raid5/. Para ello, ejecutaremos el comando:
Una vez creado, ya podremos montar el sistema de ficheros. Para ello, haremos uso de la sintaxis:
En este caso, el comando a ejecutar sería:
En un principio, no ha devuelto ningún mensaje, así que volveremos a ejecutar el comando lsblk -f
para verificarlo.
Tal y como se puede apreciar en la parte derecha, el volumen lógico tiene un total de 470.6MB disponibles, y su punto de montaje es /mnt/raid5, tal y como era de esperar.
A continuación, vamos a crear un fichero con un texto en su interior (de nombre prueba.txt, por ejemplo). Para ello, ejecutaremos el comando:
Para verificar que el fichero se ha creado con dicho texto en su interior, vamos a leer su contenido, ejecutando para ello el comando:
Como se puede apreciar, el fichero se ha creado correctamente.
Para hacer que el punto de montaje sea permanente, tenemos que configurar el fichero /etc/fstab. Este requerirá tener introducido el UUID del sistema de ficheros en cuestión, así que dado que anteriormente hemos visto los UUID de los sistemas de ficheros al ejecutar lsblk -f
, sabemos que el UUID del XFS empieza por 4, así que ejecutaremos el siguiente comando para añadirlo al final del documento /etc/fstab (en realidad sería más sencillo marcarlo con el cursor y hacer copia-pega, pero no siempre vamos a tener ratón a la hora de configurar un servidor):
El UUID ya se encuentra anexado, así que para comenzar a editar el fichero, ejecutaremos el comando:
Como se puede apreciar, la última línea contiene el UUID en cuestión. Tenemos que dejar dicha línea con la siguiente estructura:
Siendo:
- UUID = Identificador único universal del sistema de ficheros (4f3d039c-2dc6-4cab-97d3-5751a3d75450).
- punto_de_montaje = Directorio donde se montará el sistema de archivos (/mnt/raid5).
- sistema_de_archivos = Tipo de sistema de ficheros (xfs).
- opciones = Opciones de arranque (defaults).
- dump = Indica si se hará copia de seguridad del sistema de ficheros, siendo 0 no y 1 sí (0).
- pass = Indica la prioridad con la que se revisa el sistema de ficheros con fsck, siendo 0 nunca, 1 para el raíz y 2 para el resto (2).
En este caso, el resultado debe ser:
Para comprobar que funciona, vamos a reiniciar la máquina, ejecutando el comando:
Si volvemos a ejecutar el comando vagrant ssh
, nos conectaremos de nuevo a la máquina sin problemas. Tras ello, volveremos a ejecutar el comando lsblk -f
para verificar que el sistema de ficheros se ha montado automáticamente:
Efectivamente, así ha sido.
Tarea 6: Marca un disco como estropeado. Muestra el estado del RAID para comprobar que un disco falla. ¿Podemos acceder al fichero?
Para marcar un disco como estropeado en el RAID 5, haremos uso de la sintaxis:
En este caso, marcaré como estropeado el disco sdb, por ejemplo. El comando a ejecutar sería:
Al parecer, el disco ya se ha marcado como estropeado, pero para verificarlo, vamos comprobar el estado del RAID, ejecutando para ello el comando:
Como podemos ver, el disco sdb tiene una (F) a su lado, indicando que su estado es faulty (estropeado). Aunque haya fallado un disco, vamos a comprobar si todavía podemos acceder al fichero contenido en el interior del RAID 5. Para ello, ejecutaremos el comando:
Efectivamente, el fichero prueba.txt todavía es accesible.
Tarea 7: Una vez marcado como estropeado, lo tenemos que retirar del RAID.
Para retirar un disco estropeado del RAID 5, haremos uso de la sintaxis:
En este caso, eliminaré el disco estropeado sdb. El comando a ejecutar sería:
Al parecer, el disco ya se ha eliminado del RAID 5 y podríamos desconectarlo de la máquina, pero para verificarlo, vamos comprobar el estado del RAID, ejecutando para ello el comando:
Efectivamente, el disco sdb ha sido eliminado del RAID 5 y ya no aparece entre los dispositivos activos, por lo que, en un caso real, podríamos desconectarlo de la máquina y tirarlo.
Si nos fijamos en la parte inferior, podemos ver que nos pone [3/2] [_UU], indicando que actualmente el RAID 5 cuenta con 2 de los 3 discos necesarios, de manera que deberíamos incluir un nuevo disco de manera inmediata, o en caso de fallo de cualquiera de los dos discos actualmente funcionales, perderíamos información.
Tarea 8: Imaginemos que lo cambiamos por un nuevo disco nuevo (el dispositivo de bloque se llama igual), añádelo al array y comprueba cómo se sincroniza con el anterior.
Para añadir un nuevo disco al RAID 5, haremos uso de la sintaxis:
En este caso, añadiré al RAID 5 el disco sde. El comando a ejecutar sería:
Al parecer, el disco ya se ha añadido al RAID 5, pero para verificarlo, vamos comprobar el estado del RAID, ejecutando para ello el comando:
Dado que hemos ejecutado rápidamente la instrucción para comprobar el estado del RAID, hemos visto la barra de progreso de la recuperación de la información en el nuevo disco. Sin embargo, si volvemos a ejecutarlo una vez más, la barra de progreso habrá finalizado y nuestro RAID volverá a estar totalmente operativo.
Nuestro RAID está totalmente operativo de nuevo.
Si nos volvemos a fijar, podemos ver que nos pone [3/3] [UUU], indicando que actualmente el RAID 5 cuenta con 3 de los 3 discos necesarios, de manera que se encuentra totalmente funcional.
Tarea 9: Añade otro disco como reserva. Vuelve a simular el fallo de un disco y comprueba cómo automáticamente se realiza la sincronización con el disco de reserva.
La instrucción a ejecutar para añadir un disco como reserva es la misma que hemos ejecutado en la tarea anterior. En este caso, añadiré como disco de reserva al RAID 5 el disco sdf. El comando a ejecutar sería:
Al parecer, el disco de reserva ya se ha añadido al RAID 5, pero para verificarlo, vamos comprobar el estado del RAID, ejecutando para ello el comando:
Como podemos ver, el disco sdf tiene una (S) a su lado, indicando que su estado es spare (de repuesto). Para comprobar que el disco de reserva cumple su función, vamos a marcar uno de los discos como estropeado (el disco sdc, por ejemplo), ejecutando la instrucción vista anteriormente en la Tarea 6:
Al parecer, el disco ya se ha marcado como estropeado, pero para verificarlo, vamos comprobar el estado del RAID, ejecutando para ello el comando:
Dado que hemos ejecutado rápidamente la instrucción para comprobar el estado del RAID, hemos visto la barra de progreso de la recuperación de la información en el disco de reserva, además de apreciar que el disco sdf ha dejado de tener la marca de reserva (S) y el disco sdc ahora tiene la marca de estropeado (F). Sin embargo, si volvemos a ejecutarlo una vez más, la barra de progreso habrá finalizado y nuestro RAID volverá a estar totalmente operativo.
Nuestro RAID está totalmente operativo de nuevo, aunque sería aconsejable eliminar el disco estropeado del RAID, ejecutando para ello el comando:
El disco ya ha sido eliminado.
Tarea 10: Redimensiona el volumen y el sistema de archivos de 500MB al tamaño del RAID.
Para redimensionar un volumen lógico LVM haremos uso de la sintaxis:
En este caso, especificaremos +100%FREE como parámetro -l, para que así coja todos los extents disponibles y haga uso de todo el espacio libre. El comando a ejecutar sería:
El volumen lógico ya ha sido extendido, así que para verificarlo, vamos a ejecutar el comando lsblk -f
:
Si nos fijamos, el espacio disponible sigue apareciendo que es de 470.6MB. ¿A qué se debe esto? Bien, hemos redimensionado el volumen lógico, pero no hemos redimensionado lo más importante, el sistema de ficheros que hay en su interior. Para redimensionar un sistema de ficheros XFS haremos uso de la sintaxis:
En este caso, el comando a ejecutar sería:
El sistema de ficheros ya ha sido redimensionado, pues antes tenía 128000 bloques y ha pasado a tener 522240. Volvemos a ejecutar el comando lsblk -f
para verificar que el sistema de ficheros ha crecido.
Efectivamente, el tamaño del sistema de ficheros ha pasado de ser de 470.6MB a ser de 2GB.