Recuperarse del fallo en un disco de un volumen RAID-1 sobre Ubuntu 18.04 LTS

Publicado por P. Ruiz en

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 18.04 LTS o Crear un volumen RAID-5 con tres discos en Ubuntu 18.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 18.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.

Haciendo doble clic sobre él, lo montamos y accedemos a su contenido.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-001

En nuestro caso, para hacer las comprobaciones posteriores, hemos creado en su interior una carpeta…

Y dentro de ésta, tres archivos de texto

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-002

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.

El volumen RAID ya no aparece en el explorador de archivos.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-003

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

Salida del comando

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-004

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, que etiquetamos durante la creación como md0. 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/md0

Al hacerlo, comprobaremos que el volumen se inicia sin problemas

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-005

Y para comprobar que es así, solo tenemos que recurrir, de nuevo, al explorador de archivos.

Así comprobamos que el volumen vuelve a estar disponible.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-006

… Y haciendo doble clic sobre él, vemos que también lo está su contenido.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-007

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/md0

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 18.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.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-008

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.

La forma más rápida de abrir la ventana de terminal consiste en pulsar la combinación de teclas Alt + Control + T.

Comprobamos que volvemos a tener un disco sdc (en nuestro caso, con el mismo tamaño que sdb..

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-009

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 18.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.

Si seguimos los pasos anteriores, el aspecto de tu pantalla deberá ser parecido a este:

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-010

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/md0 -a /dev/sdc1

Donde usamos el argumento -a para indicar a mdadm que añada el disco /dev/sdc1 al volumen /dev/md0. Como alternativa, también podríamos haber utilizado el argumento –add.

Si no hay contratiempos, el comando nos informará de que el disco ha sido añadido con éxito.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-011

Auque, para asegurarnos de que todo es correcto, podremos volver a utilizar el siguiente comando:

sudo mdadm -D /dev/md0

Salida completa del comando…

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-012

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 17%.

De cualquier modo, los datos seguirán estando disponibles.

…Solo tenemos que abrir el explorador de archivos para comprobarlo.

Recuperarse-del-fallo-en-un-disco-de-un-volumen-RAID-1-sobre-Ubuntu-1804-LTS-013

… Y esto es todo por el momento. Espero que te haya resultado útil.