Guía de tecnologías

Reducir un array RAID degradado (/dev/md1)

8 min read Administración Linux Actualizado 22 Sep 2025
Reducir array RAID degradado (/dev/md1)
Reducir array RAID degradado (/dev/md1)

Contexto y objetivo

Este documento explica cómo reducir el tamaño de un array RAID degradado (/dev/md1) compuesto por /dev/sda5 y /dev/sdb5 cuando /dev/sda5 ha fallado. Además cubre el ajuste de los volúmenes LVM y la recreación del swap. Está dirigido a administradores de sistemas con experiencia básica en mdadm y LVM.

Definición rápida: un array degradado significa que uno o más dispositivos RAID están ausentes o marcados como defectuosos; el array sigue funcionado con capacidad reducida, pero las operaciones de cambio en su tamaño requieren precaución.

Diagnóstico inicial

Estos son los comandos y salidas originales que describen el estado del sistema. Mantengo los bloques tal cual para que puedas comparar con tu sistema.

cat /proc/mdstat
server1:~# cat /proc/mdstat  
Personalities : [raid1]  
md1 : active raid1 sdb5[1]  
4988032 blocks [2/1] [_U]  
 
md0 : active raid1 sda1[0] sdb1[1]  
248896 blocks [2/2] [UU]  
 
unused devices:   
server1:~#
df -h
server1:~# df -h  
Filesystem            Size  Used Avail Use% Mounted on  
/dev/mapper/server1-root  
4.5G  741M  3.5G  18% /  
tmpfs                 126M     0  126M   0% /lib/init/rw  
udev                   10M   68K   10M   1% /dev  
tmpfs                 126M     0  126M   0% /dev/shm  
/dev/md0              236M   18M  206M   8% /boot  
server1:~#
pvdisplay
server1:~# pvdisplay  
--- Physical volume ---  
PV Name               /dev/md1  
VG Name               server1  
PV Size               4.75 GB / not usable 0  
Allocatable           yes (but full)  
PE Size (KByte)       4096  
Total PE              1217  
Free PE               0  
Allocated PE          1217  
PV UUID               Ntrsmz-m0o1-WAPD-xhsb-YpH7-0okm-qfdBQG  
  
server1:~#
vgdisplay
server1:~# vgdisplay  
--- Volume group ---  
VG Name               server1  
System ID  
Format                lvm2  
Metadata Areas        1  
Metadata Sequence No  9  
VG Access             read/write  
VG Status             resizable  
MAX LV                0  
Cur LV                2  
Open LV               2  
Max PV                0  
Cur PV                1  
Act PV                1  
VG Size               4.75 GB  
PE Size               4.00 MB  
Total PE              1217  
Alloc PE / Size       1217 / 4.75 GB  
Free  PE / Size       0 / 0  
VG UUID               X3ZYTy-39yq-20k7-GCGk-vKVU-Xe0i-REdEu0  
  
server1:~#
lvdisplay
server1:~# lvdisplay  
--- Logical volume ---  
LV Name               /dev/server1/root  
VG Name               server1  
LV UUID               3ZgGnd-Sq1s-Rchu-92b9-DpAX-mk24-0aOMm2  
LV Write Access       read/write  
LV Status             available  
# open                1  
LV Size               4.50 GB  
Current LE            1151  
Segments              1  
Allocation            inherit  
Read ahead sectors    0  
Block device          253:0  
  
--- Logical volume ---  
LV Name               /dev/server1/swap_1  
VG Name               server1  
LV UUID               KM6Yq8-jQaQ-rkP8-6f4t-zrXA-Jk13-yFrWi2  
LV Write Access       read/write  
LV Status             available  
# open                2  
LV Size               264.00 MB  
Current LE            66  
Segments              1  
Allocation            inherit  
Read ahead sectors    0  
Block device          253:1  
  
server1:~#

Observaciones: el PV está en /dev/md1 (4.75 GB) y los LVs ocupan casi todo ese PV. El array md1 aparece como degradado ([2/1] [_U]). Antes de redimensionar, hay que asegurarse de que el dispositivo fallado está formalmente fuera del array y que la metadata de ese dispositivo se ha limpiado.

Procedimiento detallado paso a paso

Advertencia importante: estas operaciones pueden dejar el sistema inservible si se equivocan. Hacer copia de seguridad de datos críticos o probar el procedimiento en una máquina de laboratorio antes de aplicarlo en producción.

  1. Marcar y eliminar el dispositivo fallado del array
  • Marcar /dev/sda5 como defectuoso y eliminarlo del array:
mdadm --manage /dev/md1 --fail /dev/sda5
mdadm --manage /dev/md1 --remove /dev/sda5
  • Sobrescribir el superblock de /dev/sda5. Esto evita que el sistema intente reañadirlo automáticamente y que al arrancar el equipo el array quede confuso tras el redimensionado. Es crítico:
mdadm --zero-superblock /dev/sda5

Nota: si piensas volver a usar /dev/sda5 en el futuro para reconstruir el array, no olvides que tendrás que crear de nuevo la metadata apropiada cuando la vuelvas a añadir.

  1. Arrancar en un sistema de rescate y cargar módulos necesarios

Arranca con un live-CD o un entorno rescue y activa los módulos del kernel necesarios:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
  1. Activar arrays y LVM

Realiza una copia del fichero de configuración mdadm y recalcula la configuración detectada:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan

Arranca los servicios LVM (o ejecuta los comandos equivalentes en tu entorno):

/etc/init.d/lvm start
  1. Verificar y reducir el sistema de ficheros del LV raíz
  • Verifica el sistema de ficheros antes de reducirlo:
e2fsck -f /dev/server1/root
  • El ejemplo requiere reducir el array md1 de ~5GB a 4GB. Para ello primero reducimos el sistema de ficheros dentro del LV /dev/server1/root a 2GB. Escoge un tamaño seguro que sea mayor que la cantidad de datos realmente almacenados:
resize2fs /dev/server1/root 2G
  1. Reducir el LV raíz
  • Reduce el LV que contiene el sistema de ficheros:
lvreduce -L2.5G /dev/server1/root

Explicación: el sistema de ficheros queda en 2GB y el LV en 2.5GB para dejar espacio de seguridad.

  1. Eliminar o ajustar el LV swap si está al final
  • Si el LV swap ocupa la última área del PV (como en este ejemplo), elimínalo para poder reducir el PV. Si swap no está al final, asegúrate de que el último LV del PV se reduce lo suficiente para liberar espacio contiguo.
lvremove /dev/server1/swap_1
  1. Reducir el PV al nuevo tamaño físico del RAID
  • En este ejemplo reducimos el PV (el disco físico lógico /dev/md1) a 3GB:
pvresize --setphysicalvolumesize 3G /dev/md1
  1. Reducir el tamaño del array md1 con mdadm
  • El parámetro –size de mdadm debe darse en KiB y ser divisible por 64. Para 4 GiB: 4 1024 1024 = 4194304 KiB.
mdadm --grow /dev/md1 --size=4194304
  1. Volver a expandir el PV al máximo en el nuevo dispositivo reducido
  • Si quieres que LVM use todo el espacio disponible tras el cambio, haz:
pvresize /dev/md1
  1. Recrear LVs necesarios y ajustar tamaños
  • Ahora verás espacio libre en el VG; recrea el swap con el número de PE requerido (66 en el ejemplo):
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
  • Comprueba el estado del VG:
vgdisplay
  • Extiende el LV raíz con los PE libres si lo deseas:
lvextend -l +317 /dev/server1/root
  • Ajusta el sistema de ficheros a su nuevo tamaño máximo posible:
resize2fs /dev/server1/root
  • Vuelve a comprobar el sistema de ficheros:
e2fsck -f /dev/server1/root
  1. Reiniciar sistema y reañadir el disco reemplazado
  • Arranca el sistema normalmente y, cuando hayas reparado o reemplazado /dev/sda5, limpia su superblock y añádelo al array:
mdadm --zero-superblock /dev/sda5
mdadm -a /dev/md1 /dev/sda5
  • Revisa la sincronización:
cat /proc/mdstat

Deberías ver el proceso de resync entre /dev/sdb5 y /dev/sda5.

Lista de comprobación rápida (antes de empezar)

  • Copia de seguridad de datos críticos disponible.
  • El disco defectuoso está marcado y eliminado del array.
  • El superblock del disco eliminado fue limpiado con –zero-superblock.
  • Arranque en entorno de rescate probado y módulos md/lvm disponibles.
  • Espacio suficiente en LVs para reducirlos con seguridad (comprobar uso real con du -sh).
  • Registro de los tamaños actuales y PE disponibles.

Criterios de aceptación

  • El array /dev/md1 está reducido a 4GB y funciona sin errores.
  • El VG y LVs están en un estado coherente; lvdisplay y vgdisplay muestran tamaños correctos.
  • El sistema de ficheros raíz monta correctamente después del reinicio y pasa e2fsck.
  • El disco reemplazado se reconstruye correctamente al array y finaliza el resync.

Riesgos y mitigaciones

RiesgoImpactoMitigación
Reducir demasiado el sistema de ficherosPérdida de datos al truncar inodesEstimar uso real con du, dejar margen de seguridad y hacer backup
Olvidar zero-superblock antes de rebootSistema puede no arrancar o reañadir dispositivo viejoSiempre ejecutar mdadm –zero-superblock en el disco eliminado
Ejecutar comandos en el dispositivo equivocadoDaño irreversibleConfirmar rutas con lsblk y blkid antes de cada operación
Interrumpir resyncArray degradado temporalmentePlanificar ventanas de mantenimiento y seguir monitoreo con cat /proc/mdstat

Alternativas y cuándo elegir otra estrategia

  • Si dispones de tiempo y hardware de repuesto, la opción más segura es reconstruir el array en un nuevo disco antes de tocar tamaños.
  • Si no puedes permitir arrancar en modo rescate, considera usar herramientas en caliente (siempre que el array no esté usando el dispositivo fallado) y tener snapshots y copias fuera de línea.
  • Para escenarios con RAID5/6 o arrays más complejos, la estrategia de reducir puede cambiar: en RAID con striping hay que considerar la geometría y el riesgo es mayor.

Cuándo este procedimiento falla (contraejemplos)

  • Si el LV que quieres reducir no se puede reducir porque los datos están físicamente al final del LV (bloques usados), resize2fs fallará.
  • Si el PV está completamente lleno y no es posible liberar espacio porque no hay LV que puedas eliminar ni reducir, no podrás reducir el PV.
  • Si el array está en un estado crítico (metadata corrupta) puede que mdadm no permita cambios hasta que se restaure el estado previo.

Flujo de decisión (diagrama)

flowchart TD
  A[¿El array está degradado?] -->|Sí| B[Marcar y remover disco fallado]
  A -->|No| Z[Considerar reproducir procedimiento en ventana de mantenimiento]
  B --> C[Zero superblock en disco fallado]
  C --> D[Arrancar en rescue y cargar módulos]
  D --> E[Activar mdadm y LVM]
  E --> F[¿Se puede reducir filesystem?]
  F -->|Sí| G[resize2fs y lvreduce]
  F -->|No| H[Reubicar datos o usar backup]
  G --> I[pvresize y mdadm --grow]
  I --> J[Recrear swap y extender LV según sea necesario]
  J --> K[Reboot y reañadir disco]

Checklist por roles

Administrador LVM:

  • Verificar uso real de disco con du -sh / (o bind mounts) antes de reducir filesystem.
  • Ejecutar e2fsck antes y después de operaciones de resize.
  • Confirmar PE disponible con vgdisplay.

Administrador RAID:

  • Marcar disco como fallado y eliminar del array con mdadm.
  • Zero-superblock sobre el disco fallado.
  • Calcular –size correcto en KiB y que sea divisible por 64.

Operaciones / Soporte:

  • Asegurar consola de rescate y acceso físico si se necesita reemplazar hardware.
  • Monitorizar resync con cat /proc/mdstat y revisar dmesg/syslog por errores de I/O.

Plantilla de comandos (cheat sheet)

  • Fallar y remover disco:
mdadm --manage /dev/md1 --fail /dev/sda5
mdadm --manage /dev/md1 --remove /dev/sda5
mdadm --zero-superblock /dev/sda5
  • Activar arrays y LVM en rescue:
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
/etc/init.d/lvm start
  • Verificaciones:
e2fsck -f /dev/server1/root
pvdisplay
vgdisplay
lvdisplay
cat /proc/mdstat
  • Reducir filesystem y LV:
resize2fs /dev/server1/root 2G
lvreduce -L2.5G /dev/server1/root
  • Ajustar PV y array:
pvresize --setphysicalvolumesize 3G /dev/md1
mdadm --grow /dev/md1 --size=4194304
pvresize /dev/md1
  • Recrear swap:
lvcreate --name swap_1 -l 66 server1
mkswap /dev/server1/swap_1
  • Extender LV y filesystem final:
lvextend -l +317 /dev/server1/root
resize2fs /dev/server1/root
  • Reañadir disco reemplazado:
mdadm --zero-superblock /dev/sda5
mdadm -a /dev/md1 /dev/sda5
cat /proc/mdstat

Criterios de validación y pruebas

  • Verificar que cat /proc/mdstat muestra el array activo sin errores y que la sincronización progresa.
  • Montar el sistema de ficheros raíz (o comprobar tras reinicio) y correr comandos representativos de I/O.
  • Ejecutar e2fsck -f /dev/server1/root y confirmar ausencia de errores.
  • Confirmar que el VG tiene suficiente espacio libre para las políticas de crecimiento futuras.

Glosario (línea por término)

  • RAID degradado: array con menos dispositivos funcionales que el número mínimo para tolerancia de fallos.
  • PV (Physical Volume): volumen físico gestionado por LVM, puede ser partición o dispositivo.
  • VG (Volume Group): grupo de PVs que proporciona espacio lógico para LVs.
  • LV (Logical Volume): volumen lógico que contiene sistemas de ficheros o swap.
  • mdadm: herramienta para administrar arrays de Linux software RAID.

Resumen final

Reducir un array RAID degradado requiere remover primero el disco defectuoso, limpiar su metadata, arrancar en un entorno de rescate y seguir una secuencia ordenada: reducir sistemas de ficheros, reducir LVs, reducir PV, cambiar el tamaño del array con mdadm, recrear LVs necesarios y, finalmente, volver a añadir el disco reemplazado y permitir la resincornización. Planifica, respalda y sigue la lista de comprobación antes de tocar volúmenes en producción.

Importante: si en cualquier paso obtienes errores que no entiendes, no reinicies ni permanezcas sin consultar registros. Parar y obtener una copia de seguridad completa antes de continuar suele ser la decisión más segura.

Autor
Edición

Materiales similares

Mejorar estimaciones de batería del portátil
Batería

Mejorar estimaciones de batería del portátil

Arreglar Espera de llamada que no funciona en iOS 16
Soporte técnico

Arreglar Espera de llamada que no funciona en iOS 16

Crear Video Overviews en NotebookLM
Educación

Crear Video Overviews en NotebookLM

Detener apps en segundo plano en Android
Android

Detener apps en segundo plano en Android

Reducir array RAID degradado (/dev/md1)
Administración Linux

Reducir array RAID degradado (/dev/md1)

Audio ausente en Historias de Instagram en iPhone: solución
Soporte técnico

Audio ausente en Historias de Instagram en iPhone: solución