RAID en Linux

Configura un RAID por software con mdadm

Roberto Lodeiro

Si queremos tener la información en nuestro disco a salvo de errores, un RAID puede ser una muy buena opción. Este proceso sirve tanto para un sistema Linux X86, como para una Raspberry Pi con varios discos USB conectados (USB boot mode).

En esta entrada me centraré en crear un RAID1, lo cual implica dos discos iguales que guardarán la misma información. Si uno falla, el otro tendrá toda la información a salvo y podremos sustituir el defectuoso. Para un entorno doméstico me parece la mejor opción, salvo que decidamos gastar un extra en hardware específico.

Solo necesitaremos un sistema Linux, en este caso Ubuntu/Debian o derivado, y dos discos de la misma capacidad en el caso de RAID1. Si se quiere crear otro tipo de RAID, solo se han de indicar los discos necesarios y el --level a la hora de crearlo.


Instalación y configuración

  • Primero listar los discos, apuntar cuales usaremos para el RAID, e instalar mdadm
$ lsblk
$ sudo apt-get update
$ sudo apt-get install mdadm
  • Crear el RAID Cambiar sda1 y sdb1 según configuración propia
$ sudo mdadm --create /dev/md1 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1
  • Dar formato ext4
$ sudo mkfs.ext4 /dev/md0
  • Crear el nuevo directorio y montar el RAID
$ sudo mkdir -p /mnt/raid1
$ sudo mount /dev/md1 /mnt/raid1
  • Para que el volumen se monte en el arranque del sistema
$ echo "/dev/md1 /mnt/raid1/ ext4 defaults,noatime 0 1" | sudo tee -a /etc/fstab
  • Actualizar la configuración de mdadm
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Mantenimiento

  • Para ver el estado del raid
$ sudo mdadm --detail /dev/md1
Se mostrará algo similar a esto una vez finalice la sincronización inicial de los discos:
/dev/md1:
        Version : 1.2
  Creation Time : xXxxXx
     Raid Level : raid1
     Array Size : 976596992 (931.36 GiB 1000.04 GB)
  Used Dev Size : 976596992 (931.36 GiB 1000.04 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : xXxxXx
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : xXxxXx:0  (local to host xXxxXx)
           UUID : xXxxXx:xXxxXx:xXxxXx:xXxxXx
         Events : xXxxXx

    Number   Major   Minor   RaidDevice State
       2       8       17        0      active sync   /dev/sdb1
       1       8        1        1      active sync   /dev/sda1
  • Marcar disco como fallido y eliminarlo del RAID:
$ sudo mdadm --manage /dev/md1 --fail /dev/sdb1
$ sudio mdadm --manage /dev/md1 --remove /dev/sdb1
  • Añadir disco:
$ sudo mdadm --manage /dev/md1 --add /dev/sdb1

La primera vez que creemos el RAID, o cuando agreguemos un disco por fallo u otra circunstancia, el tiempo que tarde este en indicar State: clean será considerable, ya que mdadm necesita sincronizar completamente los discos. Obviamente esto dependerá de la capacidad de los disco, y se nos indicará el porcentaje alcanzado al consultar el estado del RAID.


Espero que sea útil, ¡gracias por leerme!