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:
- Crear un RAID 0 en Linux (Raspbian) [estás leyendo ésto]
- Crear un RAID 1 en Linux (Ubuntu)
- Crear un RAID 5 en Linux (Raspbian)
- Crear un RAID 1 en FreeBSD
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.