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