Crear un RAID 0 en Linux (Raspbian)

Con mdadm se puede crear un RAID 0 y sumar el tamaño de dos discos. Si falla uno deja de funcionar el RAID. Personalmente no recomiendo usar únicamente RAID 0.

La herramienta mdadm (algo así como Multi Device Administrator) permite crear RAID de varios niveles (organizaciones de los datos entre los discos) y es la que utilizo en este artículo.

El RAID de nivel 0 (o RAID 0) consiste en aumentar la capacidad información entre dos (o más) discos duros. Entre los discos duros se comparte el contenido, de forma que se aumenta el tamaño total y la velocidad (puesto que se reparten el trabajo). Si un disco falla, el RAID entero deja de estar disponible.

En el ejemplo he utilizado dos discos duros. Uno de 500GB y otro de 250GB (aproximadamente) para crear el RAID. Los discos son /dev/sda y /dev/sdc. El RAID resultante se llama /dev/md0. El sistema operativo es Raspbian y lo tengo instalado en una tarjeta SD (/dev/mmcblk0) que no influye en este artículo. Todos los discos duros son antiguos puesto que son para hacer pruebas.

Otros artículos relacionados

En mi web hay varios artículos relacionados con RAID:

Preparación del sistema

Tengo un artículo que explica cómo identificar discos duros en Linux.

Primero es necesario conocer los nombres de los discos duros. Personalmente suelo hacer un listado del directorio /dev/disk/by-id para mostrarme los discos duros y ver un pequeño nombre descriptivo de cada uno, pero en este caso puedo reconocerlos por su tamaño usando lsblk.

root@wasge-raspberrypi4:/home/pi# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk
└─sda1        8:1    0 465.8G  0 part
sdb           8:16   0  76.3G  0 disk
sdc           8:32   0 232.9G  0 disk
└─sdc1        8:33   0 232.9G  0 part
mmcblk0     179:0    0   3.6G  0 disk
├─mmcblk0p1 179:1    0  41.8M  0 part /boot
└─mmcblk0p2 179:2    0   3.6G  0 part /

De ésta información se deduce que tengo tres discos duros con sus particiones:

  • /dev/sda es un disco de 500GB
    • /dev/sda1 es la primera partición.
  • /dev/sdb es un disco de 80GB
    • no parece tener particiones
  • /dev/sdc es un disco de 250GB
    • /dev/sdc1 Es la primera partición

En mi caso, /dev/sda y /dev/sdc son dos discos duros de aproximadamente 500GB y 250GB que voy a utilizar en el RAID 0.

Yo he utilizado la herramienta gparted (gráfica, sin comandos) para eliminar todas las particiones existentes en los dos discos duros usados en el RAID (/dev/sda y /dev/sdc) y crear una sola partición primaria en cada uno. Las particiones creadas son /dev/sda1 y /dev/sdc1.

Después hay que instalar (si no está instalada) la herramienta mdadm para gestionar el RAID.

apt-get install mdadm

Crear el RAID

Una vez preparado el sistema se crea el RAID. Aquí explico el comando utilizado:

  • mdadm (Herramienta para gestionar el RAID)
    • --create (Crear un RAID)
    • --verbose (Mostrar texto para indicar el proceso)
    • /dev/md0 (El nombre del nuevo RAID, tradicionalmente se utiliza md0)
    • --level=0 (Nivel del RAID, en este caso nivel 0)
    • --raid-devices=2 (Cuántos dispositivos se utilizan, en este caso dos discos duros)
    • /dev/sda1 (Nombre de la primera partición del primer disco duro)
    • /dev/sdc1 (Nombre de la primera partición del segundo disco duro)

Se ejecuta el comando y empieza el proceso. Es bastante rápido, prácticamente instantáneo, pero una vez creado el sistema tardará bastantes minutos en sincronizar ambos discos por primera vez.

root@wasge-raspberrypi4:~# mdadm --create --verbose  /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdc1
mdadm: chunk size defaults to 512K
mdadm: /dev/sda1 appears to contain an ext2fs file system
       size=488385536K  mtime=Thu Jan  1 01:00:00 1970
mdadm: /dev/sda1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Mon May  7 09:09:21 2018
mdadm: /dev/sdc1 appears to contain an ext2fs file system
       size=244197560K  mtime=Thu Jan  1 01:00:00 1970
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Una vez hecho esto, el sistema empezará a sincronizar los dos discos duros. Ahora mismo empieza el proceso de sincronización entre ambos discos.

Ver estado del RAID

Para ver los detalles del RAID se utiliza el comando mdadm --detail y se especifica el RAID que se quiere consultar.

root@wasge-raspberrypi4:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Mon May  7 23:35:07 2018
     Raid Level : raid0
     Array Size : 732320768 (698.40 GiB 749.90 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon May  7 23:35:07 2018
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : wasge-raspberrypi4:0  (local to host wasge-raspberrypi4)
           UUID : c660a3ef:8fceff7f:bf0ed49b:96326cb5
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sda1
       1       8       49        1      active sync   /dev/sdc1

En la parte inferior aparecen listados los dos discos duros como "active sync", es decir, activos y sincronizados. Durante el proceso de sincronización aparecen datos diferentes.

También se puede obtener información del RAID con otro comando, el cual genera información más detallada cuando se están sincronizando los discos. El comando es cat /proc/mdstat. Una vez sincronizados los discos debería generar alfo similar a esto:

root@wasge-raspberrypi4:~# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sda1[1] sdc1[0]
      732320768 blocks super 1.2 512k chunks
      
unused devices: <none>

Formatear el nuevo RAID

El RAID ya está creado, ahora hay que formatearlo para poder empezar a utilizarlo. En el ejemplo he utilizado el sistema de archivos EXT 4.

root@wasge-raspberrypi4:~# mkfs.ext4 /dev/md0
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 183080192 4k blocks and 45776896 inodes
Filesystem UUID: 5410b4a6-dfa2-4074-b4e0-f7ac0115add7
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Ahora ya está el RAID creado y formateado, pero estaría bien poder hacer algo con él, así que habrá que montarlo.

Montar el nuevo RAID

Para montarlo se puede utilizar un comando temporal, que durará hasta la próxima vez que se reinicie el sistema o hasta que se desmonte. El comando para montarlo es mount y el comando para desmontarlo es umount.

mount /dev/md0 /mnt/minuevoraid

En caso de que no haya habido problemas, la carmeta /mnt/minuevoraid contiene 80GB de espacio y es como cualquier otra carpeta del sistema, perfectamente funcional y sin ningún tipo de restricción.

Una vez probado, para dejarlo permanentemente en cuanto arranque el sistema operativo se puede añadir el "punto de montaje" en fstab. Para ello hay que editar el archivo /etc/fstab y añadir la línea:

/dev/md0 /mnt/minuevoraid ext4 defaults

Y fin. Después de esto todo debería funcionar a la perfección. Si no es así, por favor, ponte en contacto conmigo e intentaré ayudarte a resolver cualquier duda.

Fecha de creación: 7/5/2018 14:56:01 | Última modificación: 26/11/2020 18:34:31 | Hora del servidor: 7/5/2021 11:58:42