Recuperación de la información de RAID

Para este apartado vamos a crear una serie de datos en el RAID 5 configurado de forma previa.

Almacenar datos

Descargamos el libro completo de El Quijote varias veces:

user@server-carpet:~$ wget https://gist.githubusercontent.com/jsdario/6d6c69398cb0c73111e49f1218960f79/raw/8d4fc4548d437e2a7203a5aeeace5477f598827d/el_quijote.txt >> el_quijote.txt

Desconectar disco

Debemos configurar en VirtualBox que nuestros discos son desconectables en caliente.

Al desconectar desde la interfaz de VirtualBox el disco vemos lo siguiente:

 1user@server-carpet:~$ sudo mdadm --detail /dev/md2
 2/dev/md2:
 3        Version : 1.2
 4    Creation Time : Mon Oct 25 11:41:35 2021
 5        Raid Level : raid5
 6        Array Size : 15713280 (14.99 GiB 16.09 GB)
 7    Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
 8    Raid Devices : 4
 9    Total Devices : 3
10    Persistence : Superblock is persistent
11
12    Update Time : Mon Oct 25 12:07:43 2021
13            State : clean, degraded
14    Active Devices : 3
15Working Devices : 3
16    Failed Devices : 0
17    Spare Devices : 0
18
19            Layout : left-symmetric
20        Chunk Size : 512K
21
22Consistency Policy : resync
23
24            Name : server-carpet:2  (local to host server-carpet)
25            UUID : dc70161b:a4c632d6:fee7cbaa:33c7f703
26            Events : 43
27
28    Number   Major   Minor   RaidDevice State
29    0       8       80        0      active sync   /dev/sdf
30    -       0        0        1      removed
31    2       8      112        2      active sync   /dev/sdh
32    4       8      128        3      active sync   /dev/sdi

Como podemos ver en las líneas 12 y 25 de la salida del comando anterior, el estado del raid es degradado y no se encuentra el disco 1, aparece como eliminado (removed).

Recuperación de la información

Guardar la información del superbloque

Una de las acciones más útiles que podemos hacer antes de nada es guardar la información guardada en los superbloques del RAID en cada dispostivo antes de que el disco fallara.

Para hacerlo podemos ejecutar el siguiente comando:

user@server-carpet:~$ sudo mdadm --examine /dev/sdf >> raid.status
user@server-carpet:~$ sudo mdadm --examine /dev/sdh >> raid.status
user@server-carpet:~$ sudo mdadm --examine /dev/sdi >> raid.status

Esta información puede sernos útil en futuros pasos.

Comprobar que los datos siguen siendo accesibles

Para hacerlo basta con navegar al punto de montaje del dispostivo RAID y listar o navegar por los archivos. Siempre teniendo en cuenta que cuánto menos modifiquemos, mejor.

user@server-carpet:~$ cd /mnt/md2/
user@server-carpet:/mnt/md2$ ll
total 23852
drwxr-xr-x 3 user user    4096 oct 25 12:02 ./
drwxr-xr-x 5 root root    4096 oct 25 11:43 ../
-rw-rw-r-- 1 user user       0 oct 25 12:02 el_quijote.txt
-rw-rw-r-- 1 user user 1060259 oct 25 12:02 el_quijote.txt.1
-rw-rw-r-- 1 user user 1060259 oct 25 12:02 el_quijote.txt.10
-rw-rw-r-- 1 user user 1060259 oct 25 12:02 el_quijote.txt.11
-rw-rw-r-- 1 user user 1060259 oct 25 12:02 el_quijote.txt.12
[...]

Añadir nuevo disco a RAID

user@server-carpet:~$ sudo mdadm -–manage /dev/md2 -–add /dev/sdg

Al hacerlo veremos como se durante unos segundos el sistema se recompondrá, replicando los datos entre los discos.

Imagen en la que se pueden ver los discos virtuales conectados a la máquina