Recuperarse del fallo en un disco de un volumen RAID-1 sobre Ubuntu 22.04 LTS
Cuando buscamos aumentar la fiabilidad en el almacenamiento de nuestros datos, podemos recurrir a la implementación de un array de discos, configurándolos como un volumen RAID.
En este sentido hay diferentes alternativas, donde podemos recurrir a soluciones apoyadas en un hardware específico o recurrir a configuraciones por software. También tenemos diferentes alternativas dependiendo de la configuración particular que pretendemos obtener.
En SomeBooks.es, ya te hemos explicado, cómo puedes Crear un volumen RAID-1 con dos discos en Ubuntu 22.04 LTS o Crear un volumen RAID-5 con tres discos en Ubuntu 22.04 LTS. Ambas son soluciones por software que, por otro lado, son las más económicas de implementar.
Hoy vamos a dar un nuevo paso en este camino, explicándote cómo actuar cuando se produzca un fallo en uno de esos discos y necesites sustituirlo por otro nuevo. Y realizaremos toda la operación sin perder los datos que se encontraban almacenados en el volumen. Para lograrlo, partiremos de la implementación de RAID-1 que realizamos en el artículo que hemos mencionado antes.
Ten en cuenta que, en informática, ningún método es 100% seguro. Si los datos almacenados en el volumen RAID son realmente irreemplazables, deberías tener una política de copias de seguridad que te permita recuperarte incluso si pierdes el volumen completo.
Esto también te servirá si se produce algún fallo inesperado en el proceso que te explicamos hoy.
Antes de comenzar
Si revisas el artículo Crear un volumen RAID-1 con dos discos en Ubuntu 22.04 LTS verás que habíamos construido un volumen RAID-1 (/dev/md0) a partir de dos discos (/dev/sdb y /dev/sdc).
Como no lo hemos montado en ningún punto específico del árbol de directorios de Ubuntu, podremos encontrarlo fácilmente en la categoría Otras ubicaciones del explorador de archivos.
Observa que, aunque en el artículo anterior el sistema usó el archivo de dispositivo /dev/md0, ahora nos aparece como /dev/md127. Esto no es realmente importante, solo tendrás que observar cuál utiliza tu instalación y adaptar nuestro ejemplo a tu valor concreto.
En nuestro caso, para hacer las comprobaciones posteriores, hemos creado en su interior una carpeta…
Para desarrollar los contenidos de este artículo, vamos a suponer que falla uno de los discos del array y comprobaremos cómo podemos seguir teniendo acceso a los datos y reparar el problema.
Detectar la ausencia del disco
Cuando falle uno de los discos del array, la detección será inmediata porque el volumen RAID-1 habrá desaparecido del explorador de archivos y los datos que contiene estarán, de momento, inaccesibles.
Acceder a los datos en modo reducido
Quizás la forma más sencilla de comprobar el estado en el que se encuentra el array de discos sea ejecutando el siguiente comando:
cat /proc/mdstat
La forma más rápida de abrir la ventana de terminal consiste en pulsar la combinación de teclas Alt + Control + T.
La primera línea, que comienza con la palabra Personalities, nos indica los niveles RAID que soporta actualmente el núcleo de nuestro sistema.
La segunda línea describe el estado de nuestro volumen, etiquetado como md127. Como vemos, se encuentra inactivo y únicamente dispone de un disco (sdb1). El corchete indica la posición (en nuestro caso, la primera).
La tercera línea ofrece alguna información básica sobre el array, como el número de bloques utilizables y la versión de superbloque que se está usando.
Por lo tanto, para poder acceder a los datos, lo primero será iniciar el volumen, para lo que usaremos el siguiente comando:
sudo mdadm --run /dev/md127
Y para comprobar que es así, solo tenemos que recurrir, de nuevo, al explorador de archivos.
De todas formas, es importante aclarar que estamos accediendo a los datos en modo reducido, lo que significa que hemos perdido el plus de fiabilidad que nos ofrecía RAID-1. De hecho, para constatarlo, sólo tenemos que ejecutar el siguiente comando, que nos ofrece todos los detalles del volumen:
sudo mdadm -D /dev/md127
En lugar del argumento -D, podríamos haber utilizado –detail, como hicimos en el artículo Crear un volumen RAID-1 con dos discos en Ubuntu 22.04 LTS.
Entre otras cuestiones, comprobamos que sigue reconociéndose como un volumen RAID-1, pero que solo dispone de un dispositivo físico. Concretamente, el sdb1.
Ya estamos seguros de que uno de los discos ha dejado de funcionar, pero el otro sigue estando disponible. Ahora estamos listos para apagar el ordenador y comenzar la reparación del volumen.
Preparar el nuevo disco para añadirlo al volumen RAID-1
Si uno de los discos está dañado, deberemos sustituirlo por uno nuevo, prepararlo y unirlo al volumen. Eso es lo que vamos a mostrar a continuación.
Antes de nada, supondremos que la parte física ya está resuelta. Es decir, hemos abierto el ordenador, extraído el disco dañado y montado uno nuevo en su lugar.
A continuación, iniciaremos el sistema y nos aseguraremos de que el nuevo disco se ha detectado correctamente. Algo tan sencillo como abrir una ventana de terminal y ejecutar el siguiente comando, que nos aporta información sobre los dispositivos de almacenamiento de bloques disponibles:
lsblk -fm
El argumento f nos ofrece información sobre los sistemas de archivos instalados y el argumento m nos informa de quién es su propietario, su tamaño, etc.
A continuación, crearemos una partición en el disco nuevo.
El nuevo disco podrá ser igual o mayor que el antiguo, pero nunca menor. Si el disco es mayor, la partición que creemos ahora deberá tener el mismo tamaño que tenía la antigua.
Para llevar a cavo la tarea, usaremos el comando fdisk con privilegios de administración:
sudo fdisk /dev/sdc
Como ya sabemos, el comando fdisk actúa de forma interactiva. Es decir, nos irá pidiendo la información que necesita y nosotros la iremos completando.
Las respuestas serán idénticas a las que aplicamos en el artículo Crear un volumen RAID-1 con dos discos en Ubuntu 22.04 LTS:
-
La tecla n, para crear una partición nueva.
-
La tecla p, para indicar que la partición es primaria.
-
La tecla 1, porque será la primera partición del dispositivo.
-
A continuación indicaremos dónde comienza la partición (primer sector) y dónde termina (último sector). En nuestro caso, como vamos a ocupar todo el dispositivo, pulsaremos la tecla Intro dos veces, pero si tus discos no son idénticos, los valores pueden ser diferentes.
-
La tecla t, para indicar el tipo de partición.
-
Si hubiese más de una partición, pulsaríamos tecla 1 para indicar que actuaremos sobre la primera. Si sólo existe una, el comando asume automáticamente el valor 1.
-
Las teclas fd, para indicar que se trata de una partición RAID.
A continuación, pulsaremos la tecla w, para guardar los cambios.
Si hubiesen existido particiones previas, podríamos haberlas eliminado con la orden d, seguida del número de partición. De forma parecida a como las hemos creado más arriba.
Añadir el nuevo disco al volumen RAID-1
Cuando hayamos completado con éxito el paso anterior, estaremos listos para lograr que el nuevo disco ocupe el lugar del disco dañado. Lo conseguiremos usando el siguiente comando:
sudo mdadm /dev/md127 -a /dev/sdc1
Donde usamos el argumento -a para indicar a mdadm que añada el disco /dev/sdc1 al volumen /dev/md127. Como alternativa, también podríamos haber utilizado el argumento –add.
Aunque, para asegurarnos de que todo es correcto, podremos volver a utilizar el siguiente comando:
sudo mdadm -D /dev/md127
Como vemos en la imagen, ahora el volumen vuelve a estar formado por dos discos. Sin embargo, solo uno está activo porque se está realizando la sincronización entre ellos. Observa que, en el momento de hacer la consulta, dicha sincronización está completada en un 27%.
De cualquier modo, los datos seguirán estando disponibles.
… Y esto es todo por el momento. Espero que te haya resultado útil.