Tenemos configurado un arreglo de discos tipo Mirror (Raid1) basado en software, utilizando Ubuntu Server 8.04 LTS. Tenemos una falla en uno de los discos. Queremos retirar este disco y en su lugar colocar uno completamente nuevo, para reconstruir el arreglo.
Iré extendiendo poco a poco esta guía, inclusive detallando cómo hacer este tipo de arreglos. En el momento, tan sólo es una guía rápida para aquellos que tienen el problema, ya que es importante conocer qué hacer en estos casos.
Pasos a seguir en casos en que uno de los discos duros de un arreglo tipo Mirror falla, utilizando software Raid de Ubuntu:
1) Desconectar el disco duro que está fallando
2) En el bios del equipo, configurar que el arranque (booteo) se haga desde el disco que funciona. (El booteo dual o arranque desde ambos discos se logra con una configuración manual, que luego postearé en este mismo blog, ya que en un arreglo tipo mirror esto es sumamente importante).
3) Esperar a que Linux inicialice. Cuando el disco es removido, esta operación de inicialización puede tardar unos minutos, ya que Linux debe revisar la nueva configuración.
4) Ejecutar el comando en pantalla que saldrá indicando del error y de las particiones faltantes del arreglo (mdadm -R....etc),
este comando asignará al disco que esté funcionando las tareas de inicialización. Debemos pasar el comando cuantas veces sea necesario de acuerdo a los MD que tengamos (arrays). Si tenemos, por ejemplo, MD1, MD2, MD3, etc, por cada uno ejecutaremos la línea de comando mencionada.
Ejemplos:
mdadm -R /dev/md0 mdadm -R /dev/md1
5) Ejecutar el comando "exit", para salir del shell minimalista de recuperación de Linux, y esperar a que el sistema inicialice.
6) Reiniciar el sistema y confirmar que realmente puede bootear de manera normal.
7) Ejecutar los comandos de chequeo y verificación de arreglos.
Ejemplos:
cat /proc/mdstat
mdadm --detail /dev/md0
mdadm --detail /dev/md1
8) Instalar una nueva unidad de disco de manera física, mucho mejor si el nuevo disco posee las mismas características del anterior.
9) Copiar la tabla de particiones desde el disco que está bueno al nuevo (con mucho cuidado de cometer el error de hacer lo contrario):
Por ejemplo, se ha dañado el disco que contenía las particiones sda, entonces, para copiar la tabla de partición desde un segundo disco "sdb" al primer disco "sda", se debe utilizar el comando siguiente:
Con suerte, esto copia desde el actual disco bueno (sdb) la tabla de particiones al nuevo disco.sfdisk –d /dev/sdb | sfdisk /dev/sda
Si esto no funciona, entonces podemos crear las particiones manualmente. Para esto, utilizamos fdisk y visualizamos el contenido del actual disco (el que está funcionando correctamente):
sudo fdisk -l
Nos dice por ejemplo:
Device Boot Start End Blocks ID System
/dev/sdb1 * 1 13981 3434945 fd Linux raid autodetect
/dev/sdb2 13982 14589 343494 fd Linux raid autodetect
Entonces, anotamos estos datos (start y end de cada partición) y procedemos a crearlas para el nuevo disco:
sudo fdisk /dev/sda
n (new partition)
p (primary)
especificar start y end
w (guardar cambios)
Con esto, creamos particiones iguales que en el actual arreglo, a nivel de bloques.
Luego ejecutamos:
sudo mdadm --detail /dev/md1 para ver la información concerniente a este arreglo. Si nos sale el error:
"mdadm: md device /dev/md1 does not appear to be active", entonces tenemos que activarlo haciendo:
sudo mdadm --assemble /dev/md1
Luego verificamos:
sudo mdadm --detail /dev/md1
Como podremos ver, el arreglo estará en estatus "clean, degraded". Para agregar el nuevo disco, tenemos que hacer:
sudo mdadm --manage /dev/md1 --add /dev/sda2
En caso de que estemos agregando una partición que contenga swap, entonces al agregar la partición al arreglo puede presentarse el siguiente error:
"mdadm: cannot open /dev/sda2: device or resource busy". Esto es así debido a que realmente el recurso está siendo utilizado, ya que es una unidad de swapping.
Para detener el uso de esta partición de swap, debemos ejecutar:
sudo swapoff -a
Entonces podemos proceder nuevamente a agregar la partición al arreglo:
sudo mdadm --manage /dev/md1 --add /dev/sda2
Ahora deberá comenzar de forma automática la sincronización!!!
10) Ejecutar los comandos para agregar las nuevas particiones al arreglo, con lo cual comienza el proceso de reconstrucción.
Ejemplos:
mdadm –-add /dev/md0 /dev/sda1 mdadm –-add /dev/md1 /dev/sda2
11) Esperar a que concluya la sincronización.
12) Hacer ambos discos bootables, para esto, seguir el instructivo al respecto.