RAID (discos redundantes)

RAID (Redundant Array of Inexpensive Disks) por software es una forma barata de obtener discos duros grandes, rápidos y seguros. Aprovechamos la potencia de la CPU para tareas que necesitarían circuitería especializada y cara.

Vamos a ver cómo instalar un RAID-1 (mirror) con dos discos que contienen exactamente lo mismo, un sistema que nos proporciona tolerancia a fallos de disco duro. Aunque falle un disco:

  1. no perderemos datos, ya que tenemos redundancia.
  2. el sistema seguirá funcionando. Mientras sobreviva un disco el sistema no se cae.
  3. el sistema podrá bootear, ya que arranca desde el RAID y desde cualquiera de los discos.

Recursos

Instalar RAID

La manera más sencilla y eficaz de instalar RAID-1 es durante la instalación del Sistema Operativo. Lo haremos en el particionado:

  1. particionamos los dos discos con el mismo esquema de particiones, marcadas todas ellas como particiones RAID:

    Particionamos los dos discos

  2. seleccionamos Configurar RAID software (antes de pasar a configurar el RAID el instalador particionará los discos):

    Seleccionamos RAID

  3. tenemos que crear un dispositivo RAID para cada partición, incluyendo la swap (incluimos la swap para intentar evitar un cuelgue si falla un disco):

    Crear dispositivos RAID

  4. seleccionamos el tipo de RAID, RAID1:

    Tipo de RAID

  5. le decimos que estará formado por 2 particiones:

    Formado por dos particiones

  6. sin discos de reserva:

    Sin discos de reserva

  7. seleccionamos la pareja de particiones correspondientes:

    Seleccionamos particiones

  8. y repetimos este proceso con todas las particiones. Una vez definidos todos los dispositivos RAID:

    Dispositivos RAID

  9. les asignamos punto de montaje y formato:

    Punto de montaje y formato

  10. comprobamos que todo esté correcto:

    Todo correcto

  11. grabamos los cambios y listo:

    Grabamos los cambios

  12. el gestor de arranque GRUB lo instalaremos en el MBR.

    Nota: Error 22, Error 15

    En ocasiones GRUB no se instala bien y da problemas al reiniciar. El equipo no arranca y tira un Error 22 o un Error 15. En ese caso, reiniciaremos desde el CD en Graphical Rescue Mode y probaremos la opción Reinstalar GRUB pero esta vez en:

    (hd0,0)

    Si esto no resuelve el problema, volveremos a reiniciar desde el CD en Graphical Rescue Mode, abriremos una terminal y editaremos con nano el archivo /boot/grub/menu.lst:

    # nano /boot/grub/menu.lst

    … donde reemplazaremos la línea:

    root          (hd1,0)

    … por:

    root          (hd0,0)

    Si esto no resuelve el problema, a googlear…

  13. Todavía no hemos terminado, nos falta configurar el sistema para que sea capaz de bootear desde ambos discos. Si simulamos un fallo del segundo disco desconectándolo (con el ordenador apagado), comprobaremos que la máquina arranca. Pero si desconectamos el primer disco veremos que no arranca, porque en el MBR del segundo disco no hay nada. Por tanto, para que la máquina pueda bootear desde cualquiera de los discos tenemos que instalar GRUB también en el MBR del segundo disco. Para ello:
    # grub
    grub> device (hd0) /dev/hdd
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> quit

    En las versiones más modernas de GRUB el comando es:

    # grub-install /dev/hdd

Administrar RAID

Veremos los RAIDs como si fuesen particiones normales:

# df
S.archivos    1K-blocks   Used  Available Use%  Mount
/dev/md0        2885664  121800    2617280   5%  /
/dev/md2        2885664   32872    2706208   2%  /home
/dev/md3        1829037  887074     844376  52%  /usr
/dev/md4         918229   47973     821264   6%  /var
/dev/md5        1309703    8245    1231583   1%  /tmp

Para consultar el estado de los RAID ejecutaremos:

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda5[0] hdd5[1]
      289024 blocks [2/2] [UU]
md2 : active raid1 hda6[0] hdd6[1]
      2931712 blocks [2/2] [UU]
md3 : active raid1 hda7[0] hdd7[1]
      1951744 blocks [2/2] [UU]
md4 : active raid1 hda8[0] hdd8[1]
      979840 blocks [2/2] [UU]
md5 : active raid1 hda9[0] hdd9[1]
      1397504 blocks [2/2] [UU]
md0 : active raid1 hda1[0] hdd1[1]
      2931712 blocks [2/2] [UU]
unused devices: none

Si el RAID se está sincronizando veremos algo similar a:

# cat /proc/mdstat
md0 : active raid1 hda1[0] hdb1[1]
      1951744 blocks [2/1] [U_]
      [====>.....] resync = 33.1% finish=34.3min speed=59895K/sec

Podemos monitorizar el proceso de reconstrucción con:

# watch -n1 'cat /proc/mdstat'

Para obtener información acerca de un dispositivo md ejecutaremos:

# mdadm --query /dev/md0
/dev/md0: 146.21GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.

Para obtener información acerca de una partición RAID:

# mdadm --query /dev/sda1
/dev/sda1: is not an md array
/dev/sda1: device 0 in 2 device active raid1 /dev/md0.  Use mdadm --examine for more detail.

Reemplazar un disco RAID dañado

Veamos cómo actuar cuando un disco del RAID falle (no lo dudes, tarde o temprano fallará). Utilizaremos las herramientas mdadm (multiple device administer, paquete mdadm), que han reemplazado a las clásicas raidtools.

  1. Detectaremos que un disco RAID ha fallado mirando en /proc/mdstat:
    # cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sda1[0]
          153316224 blocks [2/1] [U_]

    Aunque probablamente ya habremos recibido un email de mdadm monitoring en [email protected] con el asunto DegradedArray event on /dev/md0:

    This is an automatically generated mail message from mdadm
    A DegradedArray event had been detected on md device /dev/md0.
    Faithfully yours, etc.
    P.S. The /proc/mdstat file currently contains the following:
    Personalities : [raid1]
    md0 : active raid1 sda1[0]
          153316224 blocks [2/1] [U_]
  2. Apagamos el ordenador y reemplazamos el disco averiado. El nuevo disco debe tener al menos el mismo tamaño que el disco averiado, si su tamaño es inferior el proceso de reconstrucción fallará.
  3. Arrancamos de nuevo el sistema.
  4. Comprobamos los discos duros (los discos IDE se denominan hd*, mientras que los disco SATA se llaman sd*):
    # fdisk -l
  5. Crearemos en el nuevo disco /dev/sdb exactamente las mismas particiones que en el disco activo /dev/sda. Formatearemos el nuevo disco con fdisk, marcando las particiones como fd (Linux RAID autodetect). También podemos emplear el comando:
    # sfdisk -d /dev/sda | sfdisk /dev/sdb

    BE EXTREMELY CAREFUL – ONE TYPING MISTAKE AND ALL YOUR DATA IS LOST

  6. Comprobamos si ambos discos duros tienen las mismas particiones:
    # fdisk -l
  7. El nuevo disco no se inserta automáticamente en el RAID, ya que está marcado como erróneo. Insertaremos la partición /dev/sdb1 en el dispositivo /dev/md0 ejecutando:
    # mdadm --manage /dev/md0 --add /dev/sdb1
  8. A continuación comenzará la reconstrucción del RAID /dev/md0 y se sincronizarán /dev/sda1 y /dev/sdb1. Lo comprobaremos con:
    # cat /proc/mdstat
    md0 : active raid1 hda1[0] hdb1[1]
          1951744 blocks [2/1] [U_]
          [====>.....] resync = 33.1% finish=34.3min speed=59895K/sec

    Podemos monitorizar el proceso de reconstrucción con:

    # watch -n1 'cat /proc/mdstat'
  9. Todavía no hemos terminado, nos falta configurar el sistema para que sea capaz de bootear también desde el nuevo disco. Para que la máquina pueda bootear desde el nuevo disco tenemos que instalar GRUB en su MBR. Para ello, una vez haya terminado el proceso de reconstrucción ejecutaremos:
    # grub
    grub> device (hd0) /dev/hdb
    grub> root (hd0,0)
    grub> setup (hd0)
    grub> quit

Artículos en la categoría "Virtualización"

  1. Centralitas telefónicas IP PBX
  2. Clusters Beowulf/PVM
  3. Clusters Beowulf/MPI
  4. Clusters OpenMosix
  5. Clusters Kerrighed
  6. Clusters HA con LVS
  7. Clusters UltraMonkey
  8. Clusters LVS + Keepalived
  9. Emulador Qemu
  10. Máquina virtual VirtualBox
  11. Máquina virtual Xen
  12. API de Windows para Linux: WINE
  13. La jaula en Linux: chroot
  14. Cómo ejecutar aplicaciones Android en Linux
  15. RAID (discos redundantes)
  16. LVM (volúmenes lógicos)
  17. AoE (ATA over Ethernet)
  18. Mirror remoto con DRBD

5 Comments:

  1. Hola, muy interesante voy a probarlo en un server dell por que tengo problemas de boot con el GRUB. gracias

  2. Deberias de usar RAID 5 o RAIFD 10. Son mejores que RAID 1 y RAID 0.

    Mi experiencia con un RAID 1 de 3 discos fue negativa. Tuve falla fisica en dos de los tres discos y perdi el acceso a los datos…

    No fue hasta que llame a una empresa de recuperaciones experta en RAID llamada ONRETRIEVAL en donde me recuperaron la informacion, no sin antes tener que haber desembosado una plata importante por el servicio. Pero no tenia opcion ya que si estas empresas no pueden recuperar, nadie podra. Y mi informacion lo valia.

    De ahora en mas uso un RAID 10 desde hace 4 años. Y tengo implementado un BACKUP externo a traves de una caja de discos externa de 5 discos, la Lian-Li EX-50 en donde llevo el respaldo casi diario…

    Saludos.

  3. Hola, trato de hacer lo que indicas sobre instalar el grub en el segundo disco y cuando coloco el comando “device (hd0) /dev/hdd” dice error 15 File not Found

  4. Excelente guia, me ha servidor mucho, gracias.

  5. Esta muy bueno, ya lo he probado en varios equipos… Gracias..