5.5 RAID por Software (mdadm)
RAID (Redundant Array of Independent Disks) agrupa varios discos físicos para comportarse como uno solo, combinando redundancia y/o rendimiento. En Linux, mdadm (Multiple Device Admin) implementa RAID completamente en software, sin necesidad de hardware especial.
1. Niveles RAID relevantes para LFCS
Sección titulada “1. Niveles RAID relevantes para LFCS"| Nivel | Mínimo discos | Redundancia | Rendimiento | Espacio útil | Uso típico |
|---|---|---|---|---|---|
| RAID 0 | 2 | ❌ Ninguna | ⚡ Doble lectura/escritura | 100% | Scratch/tmp (si el disco muere, pierdes todo) |
| RAID 1 | 2 | ✅ 1 disco | ✅ Lectura paralela | 50% | Boot, sistema operativo, BD pequeñas |
| RAID 5 | 3 | ✅ 1 disco | ✅ Buena lectura | ~67-93% | Almacenamiento de datos, NAS |
| RAID 6 | 4 | ✅ 2 discos | Buena lectura | ~50-88% | Archivos críticos (aguanta 2 fallos) |
| RAID 10 | 4 | ✅ 50% | ⚡ Excelente | 50% | Bases de datos de alto rendimiento |
2. Instalación y herramientas
Sección titulada “2. Instalación y herramientas"sudo apt install mdadm
# Verificar discos disponibleslsblk# Identifica los discos que usarás (sin particiones montadas)3. Crear un RAID 1 (espejo)
Sección titulada “3. Crear un RAID 1 (espejo)"# Crear el array RAID 1 con /dev/sdb y /dev/sdcsudo mdadm --create /dev/md0 \ --level=1 \ --raid-devices=2 \ /dev/sdb /dev/sdc
# Seguir la sincronización inicial (puede tardar minutos en discos grandes)watch cat /proc/mdstat
# Verificar el array creadosudo mdadm --detail /dev/md0# Crear el array RAID 5 con /dev/sdb, /dev/sdc y /dev/sddsudo mdadm --create /dev/md0 \ --level=5 \ --raid-devices=3 \ /dev/sdb /dev/sdc /dev/sdd
# Con un disco de repuesto (hot spare) que se activa automáticamente:sudo mdadm --create /dev/md0 \ --level=5 \ --raid-devices=3 \ --spare-devices=1 \ /dev/sdb /dev/sdc /dev/sdd /dev/sde
watch cat /proc/mdstat4. Usar el array: formatear y montar
Sección titulada “4. Usar el array: formatear y montar"# Formatear el array como ext4sudo mkfs.ext4 /dev/md0
# Crear punto de montaje y montarsudo mkdir -p /mnt/raidsudo mount /dev/md0 /mnt/raid
# Verificardf -h /mnt/raid5. Hacer el array permanente
Sección titulada “5. Hacer el array permanente"Guardar la configuración de mdadm
Sección titulada “Guardar la configuración de mdadm"# Guardar la configuración en /etc/mdadm/mdadm.confsudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
# Actualizar initramfs para que reconozca el array al arrancarsudo update-initramfs -uAñadir a /etc/fstab
Sección titulada “Añadir a /etc/fstab"# Obtener el UUID del arraysudo blkid /dev/md0
# Añadir a /etc/fstabsudo nano /etc/fstabUUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/raid ext4 defaults 0 26. Monitorización del array
Sección titulada “6. Monitorización del array"# Estado resumido de todos los arrayscat /proc/mdstat# Personalities : [raid1] [raid5]# md0 : active raid1 sdb[0] sdc[1]# 2096640 blocks super 1.2 [2/2] [UU]# (U = activo, _ = fallo)
# Estado detallado de un arraysudo mdadm --detail /dev/md0
# Ver estado de todos los arrayssudo mdadm --detail --scanLa columna [UU] indica el estado de cada disco: U = activo, _ = fallo.
7. Simular fallo y recuperación (LFCS escenario clave)
Sección titulada “7. Simular fallo y recuperación (LFCS escenario clave)"Este es uno de los escenarios más frecuentes en el examen LFCS:
# 1. SIMULAR fallo de un disco (marcarlo como defectuoso)sudo mdadm /dev/md0 --fail /dev/sdc
# 2. Ver el estado del array degradadocat /proc/mdstat# md0 : active raid1 sdb[0] sdc[1](F)# [2/1] [U_] ← un disco falla
# 3. Eliminar el disco defectuoso del arraysudo mdadm /dev/md0 --remove /dev/sdc
# 4. (En producción: apagar, sustituir el disco físico, arrancar)# En lab: el disco /dev/sdc sigue disponible, simula el reemplazo
# 5. Añadir el disco de reemplazo al arraysudo mdadm /dev/md0 --add /dev/sdc
# 6. Seguir la reconstrucción automáticawatch cat /proc/mdstat# md0 : active raid1 sdb[0] sdc[1]# [2/1] [U_]# [=====>..............] recovery = 25.3%8. Detener y ensamblar arrays
Sección titulada “8. Detener y ensamblar arrays"# Detener un array (desmontarlo antes)sudo umount /mnt/raidsudo mdadm --stop /dev/md0
# Ensamblar un array existente (tras reiniciar o mover discos)sudo mdadm --assemble /dev/md0 /dev/sdb /dev/sdc
# Ensamblar automáticamente todos los arrays en mdadm.confsudo mdadm --assemble --scan