Crear raid 10 cifrado con discos de varios terabytes en linux


Esquema de raid cifrado Este artículo muestra como crear un raid del tipo 10 o 1+0 añadiendo ademas una capa de protección cifrándolo. IMPORTANTE: Este artículo se realizó en un Debian 9.1

Lo primero será instalar los paquetes necesarios

apt install mdadm parted

Primero de todo comprobaremos si algún disco se encuentra ya con una configuración de raid. Sustituye el rango de discos por el que necesites.

mdadm -E /dev/sd[a-b]

La salida debería ser esta:

mdadm: No md superblock detected on /dev/sda.
mdadm: No md superblock detected on /dev/sdb.

Se buscan cuales son los discos con los que queremos crear el RAID

# fdisk -l

La salida será algo parecido a esto:

Disk /dev/sdb: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Una vez sabemos cuales son los discos elegidos los formateamos de la siguiente forma:

1. Ejecutamos el parted con alertas en la optimización del espacio.

parted -a optimal /dev/sda

2. Dentro de parted ejecutamos el siguiente comando

(parted) mklabel gpt

3. Miramos cuanto espacio tiene el disco para poder utilizar:

(parted) print free

La salida será algo parecido a esto:

Model: ATA WDC WD40PURX-64G (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/4096B Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
        17.4kB  4001GB  4001GB  Free Space

4. Ya tenemos el tamaño posible, asíq ue ejecutamos el comando para crear la partición, recordad cambiar el comando con el tamaño de vuestro disco:

(parted) mkpart primary 1M 4001GB

5. Comprobamos que la partición se a creado correctamente:

(parted) p
  • La salida:
Model: ATA WDC WD40PURX-64G (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  4001GB  4001GB               primary

6. Finalmente salimos y repetimos los pasos con los discos que queramos añadir al raid.

Una vez tengamos todos los discos particionados comprobamos otra vez con el comando mdadm:

mdadm -E /dev/sd[a-b]

La salida:

dev/sda:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sdb:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
7. Creamos el raid.
mdadm --verbose --create /dev/md0 --level=10 --raid-devices=2 /dev/sd[a-b]1

La salida debería acabar con esta línea:

mdadm: array /dev/md0 started.

Podemos comprobar que el raid funciona correctamente con el siquiente comando:

cat /proc/mdstat

También podemos comprobar disco por disco:

mdadm --examine /dev/sd[a-b]1

O inlcuso el raid entero:

mdadm --detail /dev/md0

8. Formateamos el nuevo raid con el sistema de ficheros que deseemos.

mke2fs -t ext4 / /dev/md0

9. En caso de querer que se monte en el inicio añadimos esta línea en el fichero /etc/fstab

/dev/md0 /mnt/md0 auto defaults 0 0

10. Finalmente montamos el raid.

mount /mnt/md0

BONUS - Cifrando el raid.

En caso de querer cifrar el raid podemos usar Lucks. Siguiendo los pasos anteriores sustituimos a partir del paso 8 por los siguientes.

8. Creamos la partición Luks. En este paso no pedirá el password que le queremos poner, se lo especificamos 2 veces.
cryptsetup luksFormat /dev/md0
9. Abrimos la partición cifrada
cryptsetup luksOpen /dev/md0 md0_crypt
10. Formateamos el nuevo raid cifrado con el sistema de ficheros que deseemos.
mke2fs -t ext4 /dev/mapper/md0_crypt
11. Finalmente creamos la carpeta donde montaremos la unidad y la montamos.
mkdir /mnt/md0_crypt
mount /dev/mapper/md0_crypt /mnt/md0_crypt/
12. Podemos poner en el raid cifrado en el fichero /etc/crypttab para que nos pida password al inicio.