RAID (Redundant Array of Independent Disks)

1. Introducció

RAID (Redundant Array of Independent Disks, anteriorment Inexpensive Disks) és una tecnologia que combina múltiples discos durs o SSD en una única unitat lògica per aconseguir un o més d’aquests objectius:

Important: RAID no substitueix les còpies de seguretat. Protegeix contra fallades de maquinari, però no contra esborraments accidentals, ransomware, incendis o robatoris.

2. Tipus d’implementació RAID

Tipus Descripció
RAID per maquinari Controladora RAID dedicada (PCIe, integrada a la placa). La CPU no intervé. Més rendiment i funcions avançades.
RAID per programari El sistema operatiu gestiona el RAID (Linux mdadm, Windows). Més flexible i econòmic.
RAID híbrid (fakeRAID) Controladora bàsica a la placa base amb suport parcial per programari (BIOS RAID). No recomanat per a servidors.

3. Nivells RAID estàndard

3.1 RAID 0 — Striping (divisió)

Disc 1:  [A1][A3][A5][A7]
Disc 2:  [A2][A4][A6][A8]

Resum:

Característica Valor
Redundància Cap
Rendiment Excel·lent
Capacitat útil 100%
Discos mínims 2

3.2 RAID 1 — Mirroring (miralls)

Disc 1:  [A1][A2][A3][A4]
Disc 2:  [A1][A2][A3][A4]  ← còpia exacta

Resum:

Característica Valor
Redundància Excel·lent
Rendiment Bo (lectura)
Capacitat útil 50%
Discos mínims 2

3.3 RAID 5 — Striping amb paritat distribuïda

Disc 1:  [A1][B1][C1][P4]
Disc 2:  [A2][B2][P3][C2]
Disc 3:  [A3][P2][B3][C3]
Disc 4:  [P1][A4][B4][C4]
            Paritat distribuïda entre tots els discos

Resum:

Característica Valor
Redundància 1 disc
Rendiment Bona lectura
Capacitat útil (N-1)/N × 100%
Discos mínims 3

Perill de RAID 5: Durant la reconstrucció després d’una fallada, la càrrega sobre els discos restants és molt alta. Si falla un segon disc durant la reconstrucció, es perden totes les dades. Amb discos grans (>2 TB), el risc és significatiu.

3.4 RAID 6 — Striping amb doble paritat

Disc 1:  [A1][B1][P4][Q4]
Disc 2:  [A2][P3][Q3][B2]
Disc 3:  [P2][Q2][A3][B3]
Disc 4:  [Q1][A4][B4][P4]
            Doble paritat (P i Q)

Resum:

Característica Valor
Redundància 2 discos
Rendiment Bona lectura
Capacitat útil (N-2)/N × 100%
Discos mínims 4

3.5 RAID 10 (1+0) — Mirroring + Striping

           RAID 0 (striping)
          ┌────────────────────┐
    RAID 1│              RAID 1│
  [D1][D2]│            [D3][D4]
   mirall │             mirall │

Resum:

Característica Valor
Redundància Excel·lent
Rendiment Excel·lent
Capacitat útil 50%
Discos mínims 4

3.6 Altres nivells RAID

Nivell Descripció
RAID 2 Striping a escala de bits amb codi Hamming. Obsolet.
RAID 3 Striping a escala de bytes amb disc de paritat dedicat. Obsolet.
RAID 4 Striping a escala de blocs amb disc de paritat dedicat. Gairebé obsolet.
RAID 01 (0+1) Striping primer, mirall després. Menys tolerant a fallades que RAID 10.
RAID 50 RAID 5 sobre conjunts en RAID 0. Mínim 6 discos.
RAID 60 RAID 6 sobre conjunts en RAID 0. Mínim 8 discos.

4. Comparativa de nivells RAID

Nivell Discos mín. Capacitat útil Fallades tolerades Lectura Escriptura Ús típic
RAID 0 2 100% 0 ↑↑↑ ↑↑↑ Rendiment pur
RAID 1 2 50% N-1 ↑↑ = Alta disponibilitat
RAID 5 3 (N-1)/N 1 ↑↑ NAS, fitxers
RAID 6 4 (N-2)/N 2 ↑↑ Discos grans
RAID 10 4 50% 1 per parella ↑↑↑ ↑↑ BBDD, alt rendiment

5. RAID per programari a Linux: mdadm

5.1 Instal·lació

# Debian/Ubuntu
sudo apt install mdadm

# Fedora/RHEL
sudo dnf install mdadm

# Arch/Manjaro
sudo pacman -S mdadm

5.2 Crear un RAID

# RAID 0 amb 2 discos
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

# RAID 1 amb 2 discos
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# RAID 5 amb 3 discos
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

# RAID 6 amb 4 discos
sudo mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# RAID 10 amb 4 discos
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# RAID 5 amb disc de recanvi (spare)
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 \
    --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

5.3 Desar la configuració

# Desar la configuració a /etc/mdadm/mdadm.conf
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

# Actualitzar initramfs (Debian/Ubuntu)
sudo update-initramfs -u

5.4 Formatar i muntar

# Formatar el dispositiu RAID
sudo mkfs.ext4 /dev/md0
sudo mkfs.xfs /dev/md0

# Muntar
sudo mount /dev/md0 /mnt/raid

# Afegir a /etc/fstab per al muntatge automàtic
echo "/dev/md0  /mnt/raid  ext4  defaults  0  2" | sudo tee -a /etc/fstab

5.5 Monitoratge

# Veure l'estat del RAID
sudo mdadm --detail /dev/md0
cat /proc/mdstat

# Veure informació d'un disc del RAID
sudo mdadm --examine /dev/sdb

# Monitoratge continu
watch -n 1 cat /proc/mdstat

Exemple de sortida de /proc/mdstat:

Personalities : [raid1] [raid5] [raid6]
md0 : active raid5 sdb[0] sdc[1] sdd[2]
      2930276352 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

Els estats possibles de cada disc:

Indicador Significat
U Disc actiu i en bon estat
_ Disc fallat o absent
S Disc de recanvi (spare)

5.6 Gestió de fallades i reconstrucció

# Marcar un disc com a fallat (simulació o disc defectuós)
sudo mdadm /dev/md0 --fail /dev/sdc

# Treure el disc fallat
sudo mdadm /dev/md0 --remove /dev/sdc

# Afegir un disc nou (reconstrucció automàtica)
sudo mdadm /dev/md0 --add /dev/sde

# Seguir la reconstrucció
watch cat /proc/mdstat

Durant la reconstrucció, /proc/mdstat mostrarà el progrés:

md0 : active raid5 sde[3] sdb[0] sdd[2]
      2930276352 blocks super 1.2 level 5 [3/2] [U_U]
      [========>..........]  recovery = 45.3% (443648/976896) finish=12.3min

5.7 Ampliar el RAID

# Afegir un disc al RAID 5 (ampliar de 3 a 4 discos)
sudo mdadm --add /dev/md0 /dev/sdf
sudo mdadm --grow /dev/md0 --raid-devices=4

# Redimensionar el sistema de fitxers
sudo resize2fs /dev/md0      # ext4
# o
sudo xfs_growfs /mnt/raid    # xfs

5.8 Aturar i eliminar un RAID

# Desmuntar i aturar
sudo umount /mnt/raid
sudo mdadm --stop /dev/md0

# Eliminar les signatures RAID dels discos
sudo mdadm --zero-superblock /dev/sdb
sudo mdadm --zero-superblock /dev/sdc

6. RAID i ZFS

ZFS és un sistema de fitxers avançat que integra RAID de manera nativa (anomenat RAID-Z):

RAID-Z Equivalent aprox. Fallades tolerades
RAID-Z1 RAID 5 1 disc
RAID-Z2 RAID 6 2 discos
RAID-Z3 3 discos
Mirror RAID 1 N-1 discos

ZFS afegeix checksums de dades, de duplicació, compressió, snapshots i protecció contra bit rot (corrupció silenciosa).

# Crear un pool RAID-Z1 amb 3 discos
sudo zpool create dades raidz1 /dev/sdb /dev/sdc /dev/sdd

# Veure l'estat
sudo zpool status
sudo zpool list

7. RAID i LVM

LVM (Logical Volume Manager) pot combinar-se amb RAID per afegir flexibilitat:

# Crear volums físics
sudo pvcreate /dev/md0

# Crear grup de volums
sudo vgcreate vg_dades /dev/md0

# Crear volum lògic
sudo lvcreate -L 100G -n lv_dades vg_dades
sudo mkfs.ext4 /dev/vg_dades/lv_dades

LVM també pot crear RAID intern sense mdadm:

# RAID 1 amb LVM
sudo lvcreate --type raid1 -m 1 -L 100G -n lv_mirall vg_dades

8. Discos de recanvi (hot spare)

Un disc de recanvi (hot spare) és un disc inactiu que entra en funcionament automàticament quan falla un disc actiu, iniciant la reconstrucció sense intervenció manual.

# Afegir un spare a un RAID existent
sudo mdadm /dev/md0 --add /dev/sde
# Si el RAID ja és complet, sde queda com a spare

# Veure els spares
sudo mdadm --detail /dev/md0 | grep spare

9. Bones pràctiques

  1. RAID no és backup: complementar sempre amb còpies de seguretat externes.

  2. Discos de la mateixa mida: els discos de mides diferents aprofiten només la mida del més petit.

  3. No barrejar discos de marques/lots iguals: si venen del mateix lot, poden fallar alhora.

  4. Hot spare: tenir sempre un disc de recanvi preparat, especialment en RAID 5/6.

  5. Monitoratge actiu: configurar alertes per correu quan hi hagi degradació:

    # /etc/mdadm/mdadm.conf
    MAILADDR admin@exemple.cat
  6. Substituir discos degradats immediatament: no deixar un RAID degradat durant molt de temps.

  7. Fer proves de reconstrucció periòdicament en entorn de proves.

  8. RAID 6 o RAID 10 per a discos de gran capacitat (>4 TB) on el risc de fallada durant reconstrucció és alt.

  9. Checksums: usar ZFS o sistemes de fitxers amb integritat per detectar bit rot.

  10. Documentar la configuració per facilitar la recuperació en cas d’emergència.

10. Recuperació d’un RAID degradat

# 1. Identificar l'estat
cat /proc/mdstat
sudo mdadm --detail /dev/md0

# 2. Identificar el disc fallat
sudo mdadm --detail /dev/md0 | grep -i fail
dmesg | grep -i "I/O error"

# 3. Marcar com a fallat i treure (si no ho ha fet el sistema)
sudo mdadm /dev/md0 --fail /dev/sdc
sudo mdadm /dev/md0 --remove /dev/sdc

# 4. Substituir físicament el disc

# 5. Afegir el nou disc
sudo mdadm /dev/md0 --add /dev/sdc

# 6. Seguir la reconstrucció
watch cat /proc/mdstat

11. Resum visual de nivells RAID

Nivells de RAID

12. Resum d’ordres mdadm

# Crear RAID
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd

# Estat
mdadm --detail /dev/md0
cat /proc/mdstat

# Desar configuració
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

# Fallar disc
mdadm /dev/md0 --fail /dev/sdc

# Treure disc
mdadm /dev/md0 --remove /dev/sdc

# Afegir disc
mdadm /dev/md0 --add /dev/sde

# Aturar RAID
mdadm --stop /dev/md0

# Esborrar superbloc
mdadm --zero-superblock /dev/sdb

13. Referències

Versions d’aquest document

Domini Públic (CC0)