Configuración de RAID1 mediante software en Ubuntu

0
198

En este ejemplo se muestra cómo migrar un sistema Ubuntu a RAID1 por software. Éste proceso va a requerir dos reinicios.

En primer lugar, cambie al usuario root, si aún no lo está:
sudo -i

Veamos la lista de discos y particiones:
fdisk -l
fdisk -l | grep '/dev/sd'

lsblk -o NAME,UUID

Supongamos que el sistema usa un disco, por ejemplo /dev/sda, y tiene una partición primaria /dev/sda1.

Para la prueba, instalé un Ubuntu Server 18.04 limpio, el disco estaba particionado de forma predeterminada, el intercambio era un archivo en la misma partición.

Para crear un raid, conectemos otro disco del mismo tamaño, y se llamará /dev/sdb.

Instale mdadm y las utilidades necesarias (generalmente se instalan de forma predeterminada):
apt-get install initramfs-tools mdadm

Para asegurarse de que todos los módulos y componentes necesarios estén instalados, ejecute el siguiente comando:
cat /proc/mdstat

Si los módulos necesarios no están cargados, cárguelos:
modprobe linear
modprobe multipath

modprobe raid1

Dividamos el nuevo disco /dev/sdb de manera similar al instalado:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Vamos a revisar con el comando:
fdisk -l

En el siguiente paso, cambiaremos el tipo de particiones del nuevo disco duro /dev/sdb a “Linux raid autodetect” (desde la partición 1, después de “t” no se pedirá la pregunta para indicar el número de partición):
fdisk /dev/sdb
t
fd
w

Asegurémonos de que el tipo de particiones /dev/sdb sea la autodetección de raid de Linux:
fdisk -l

Cree la matriz md0 usando la opción que falta:
mdadm --create /dev/md0 --level=1 --metadata=1.0 --raid-disks=2 missing /dev/sdb1

Vamos a revisar:
cat /proc/mdstat

Si algo no funcionó, puede eliminarla e intentarlo de nuevo:
mdadm --stop /dev/md0

Especifiquemos el sistema de archivos:
mkfs.ext4 /dev/md0

Hagamos una copia de seguridad del archivo de configuración mdadm y agreguemos información:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm_backup.conf 

mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Monte /dev/md0 en el sistema:
mkdir /mnt/md0
mount /dev/md0 /mnt/md0
mount

Aqui esta como se monto:
/dev/md0 on /mnt/md0 type ext4 (rw,relatime,data=ordered)

En el archivo /etc/fstab, comente las líneas sobre /dev/sda:
nano /etc/fstab
/dev/md0 /               ext4    errors=remount-ro 0       1

Veamos el archivo /etc/mtab si hay una entrada de raid allí:
cat /etc/mtab

Veamos los nombres de archivo exactos /vmlinuz, /initrd.img:
ls /

Ahora hay que crear un archivo con el menú de arranque de GRUB2, para ésto hay que abrirlo en un editor:
cp /etc/grub.d/40_custom /etc/grub.d/09_raid1_test 
nano /etc/grub.d/09_raid1_test

Agregue el contenido (en lugar de /vmlinuz y /initrd.img, indicaremos los nombres correctos si son diferentes):

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Debian GNU/Linux, with Linux' --class debian --class gnu-linux --class gnu --class os {
        insmod mdraid1x
        insmod part_msdos
        insmod ext2
        set root='(md/0)'
        echo    'Loading Linux'
        linux   /vmlinuz root=/dev/md0 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img
}

Abra el archivo /etc/default/grub en un editor de texto:
nano /etc/default/grub

Descomentemos un par de líneas:
GRUB_TERMINAL=console
GRUB_DISABLE_LINUX_UUID=true

Actualicemos el cargador de arranque:
update-grub

Preparemos un disco RAM:
update-initramfs -u

Instale el cargador de arranque en ambas unidades:
grub-install /dev/sda 
grub-install /dev/sdb

Copiemos todos los datos en la matriz md0 montada previamente:
cp -dpRx / /mnt/md0

Reiniciemos el sistema:
reboot

Al iniciar el sistema, el primer menú /etc/grub.d/09_raid1_test estará en el menú de inicio, si hay problemas con el inicio, puede elegir iniciar desde /dev/sda.

Asegúrese de que el sistema se esté ejecutando desde /dev/md0:
df -h

Cambie a usuario root de nuevo:
sudo -i

Cambiemos el tipo de partición del disco duro antiguo:
fdisk /dev/sda
t
fd
w

Vamos a revisar:
fdisk -l

Agreguemos el disco antiguo a la matriz:
mdadm --add /dev/md0 /dev/sda1

Esperemos a que se complete la sincronización y asegurémonos de que el raid esté en orden – UU:
cat /proc/mdstat

Actualicemos la información sobre la matriz en el archivo de configuración mdadm:
cp /etc/mdadm/mdadm_backup.conf /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Eliminemos nuestro menú temporal de GRUB, ya no es necesario:
rm -f /etc/grub.d/09_raid1_test

Actualice e instale GRUB nuevamente:
update-grub
update-initramfs -u
grub-install /dev/sda
grub-install /dev/sdb

Reinicie el sistema para asegurarse de que se inicie correctamente:
reboot

Esto completa la migración de un sistema Ubuntu en ejecución a RAID1 por software.
Si uno de los discos, /dev/sda o /dev/sdb deja de funcionar, el sistema funcionará y arrancará.

Para mayor estabilidad, puede agregar más discos del mismo tamaño a la matriz.

Suerte