RAID1 en Debian con mdadm

RAID1 es el resultado de utilizar dos o mas particiones del mismo tamaño como si fuera un espejo. Los datos que se generen en un disco automáticamente se replicarán al segundo disco. El resultado que obtendremos es que todas las particiones tendrán la misma información y logramos así un sistema tolerante a fallos (soporta el fallo de todos los dispositivos menos 1).

En el presente documento trabajaremos con dos discos del mismo tamaño.

El resultado será el siguiente: 

/dev/sda2 + /dev/sdb2 = /mnt/md0
/dev/sda1
+ /dev/sdb1 = /mnt/md1

md0 y md1 son los nombres que se asignan al RAID.

En nuestro caso md0 corresponde al punto de montaje "/" y md1 corresponde a la memoria swap.

Procedimiento

1.- Cargamos módulos en el arranque:

# vi /etc/modules
md
raid1

 

2.- Copio la tabla de particiones del primer disco al segundo

# sfdisk -d /dev/sda | sfdisk /dev/sdb

 

3.- Modificamos el tipo de partición del segundo disco:

# cfdisk /dev/sdb
Type fd
Write yes
Quit

 

4.- Creamos el RAID1 y añadimos el segundo disco:

# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb2

 

5.- Lo formateamos (usamos el mismo formato del primer disco /dev/sda2):

# mkfs -t ext3 /dev/md0

 

6.- Copiamos el sistema de ficheros al nuevo disco:

# mkdir /mnt/md0
# mount /dev/md0 /mnt/md0
# cp -axu / /mnt/md0

 

7.- Creamos un nuevo RAID initrd:

# vi /etc/mkinitrd/modules
md
raid1

 

8.- Definimos el directorio principal:

# vi /etc/mkinitrd/mkinitrd.conf
ROOT=/dev/md0

 

9.- Generamos un nuevo initrd:

# mkinitrd -o /boot/initrd.img-2.4.26-1-386-raid

 

10.- Actualizamos GRUB para que esto tenga efecto en el arranque:

# vi /boot/grub/menu.lst
title RAID Debian GNU/Linux, kernel 2.4.26-1-386
root (hd0,1)
kernel /boot/vmlinuz-2.4.26-1-386 root=/dev/md0 ro
initrd /boot/initrd.img-2.4.26-1-386-raid
savedefault
boot

 

11.- Editamos el /mnt/md0/etc/fstab:

# vi /mnt/md0/etc/fstab
/dev/md0 / ext3 defaults,errors=remount-ro 0 1

 

12.- Rebotamos:

# reboot

 

13.- Ahora modificaremos el tipo de particion del primer disco:

# cfdisk /dev/sda
Type fd
Bootable
Write yes
Quit

 

14.- Añadimos el primer disco al RAID md0:

# mdadm --add /dev/md0 /dev/sda2

 

15.- Para ver el estado ejecutar el comando:

# cat /proc/mdstat

Nota: para que la sincronización vaya más rápida ejecutar el siguiente comando:

# echo -n 500000 > /proc/sys/dev/raid/speed_limit_max

 

16.- Volvemos a generar el initrd:

# mkinitrd -o /boot/initrd.img-2.4.26-1-386-raid

 

17.- Volvemos a modificar el GRUB:

# vi /boot/grub/menu.lst
title RAID Debian GNU/Linux, kernel 2.4.26-1-386
root (hd0,1)
kernel /boot/vmlinuz-2.4.26-1-386 root=/dev/md0 ro
initrd /boot/initrd.img-2.4.26-1-386-raid
savedefault
boot

 

18.- Instalamos GRUB en el segundo disco:

grub
grub> device (hd0) /dev/sdb
grub> root (hd0,1)
grub> setup (hd0)
grub> quit

 

Memoria Swap en RAID1

Haremos lo mismo que el apartado anterior pero con la memoria swap.

1.- Apagamos la swap:

# swapoff /dev/sda1

 

2.- Modificamos la swap de los discos y los ponemos en tipo de archivos "fd"

# cfdisk /dev/sda
# cfdisk /dev/sdb

 

3.- Creamos el RAID1:

# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb1

 

4.- Y añadimos el primer disco:

# mdadm --add /dev/md1 /dev/sda1

 

5.- Modificamos el /etc/fstab:

# vi /etc/fstab
/dev/md1 none swap

 

6.- Formateamos la swap y la activamos:

# mkswap /dev/md1
# swapon /dev/md1

 

7.- Generamos por ultima vez el initrd:

# mkinitrd -o /boot/initrd.img-2.4.26-1-386-raid

 

8.- Rebotamos y ya tiene que estar todo funcionando:

# reboot

Supongamos que el disco /dev/sda ha fallado y tenemos que reemplazarlo.

Nota: para poder ver el estado del array y sus discos ejecutar:

# cat /etc/mdstat

Funciona en Ubuntu?


El procedimiento funciona también en Ubuntu???

Raul :-)


Es lo mismo...


El procedimiento es igual para Ubuntu.

Lo único que cambia es el comando "mkinitrd" que en Ubuntu es "mkinitramfs".