Guía de tecnologías

Crear un pool de almacenamiento y espejo con Btrfs en Linux

7 min read Almacenamiento Actualizado 25 Sep 2025
Pool y espejo con Btrfs en Linux
Pool y espejo con Btrfs en Linux

Pool de almacenamiento y espejo con varios discos duros

Qué es Btrfs

Btrfs (abreviatura de B-tree filesystem, también llamado “Butter FS” o “Better FS”) es un sistema de archivos moderno para Linux que integra funciones avanzadas a nivel de sistema de archivos: instantáneas, checksums, subvolúmenes, almacenamiento agrupado y perfiles de datos/metadata (RAID a nivel de FS). En una línea: Btrfs es un sistema de archivos con funcionalidades que normalmente requerirían múltiples herramientas.

Términos clave:

  • Subvolumen: unidad lógica dentro de Btrfs que actúa como un punto de montaje aislado.
  • Balance: operación que redistribuye los bloques entre dispositivos tras añadir o quitar discos.
  • Perfil de datos (-d) y metadata (-m): controlan cómo se distribuyen o duplican los datos y metadatos entre dispositivos.

Nota rápida: para configuraciones de disco único o cuando no se necesita pooling, ext4 sigue siendo una opción estable y sencilla.

Variantes de intención (SEO)

  • Crear pool Btrfs
  • Btrfs RAID en Linux
  • Pooling y mirroring con Btrfs
  • Recuperación de fallos en Btrfs
  • /etc/fstab para Btrfs

Escenario de ejemplo: cuatro discos

Usaremos cuatro discos para el ejemplo:

  • /dev/sdb — 1 TiB
  • /dev/sdc — 1 TiB
  • /dev/sdd — 500 GiB
  • /dev/sde — 500 GiB

Además existe /dev/sda con el sistema y el cargador de arranque. No tocamos /dev/sda: combinamos únicamente los cuatro discos adicionales para crear un pool de ~3 TiB de capacidad agregada (capacidad bruta, el espacio usable depende del perfil elegido).

Crear un sistema de archivos Btrfs en un disco

  1. Formatea el primer dispositivo como Btrfs:
sudo mkfs.btrfs /dev/sdb
  1. Monta ese dispositivo en /mnt:
sudo mount /dev/sdb /mnt

Ahora /mnt contiene un sistema de archivos Btrfs y puedes añadirle otros dispositivos.

Añadir discos al pool

Formatea los discos adicionales (si no tienen ya Btrfs):

sudo mkfs.btrfs /dev/sdc
sudo mkfs.btrfs /dev/sdd
sudo mkfs.btrfs /dev/sde

Añade cada dispositivo al pool montado en /mnt:

sudo btrfs device add /dev/sdc /mnt
sudo btrfs device add /dev/sdd /mnt
sudo btrfs device add /dev/sde /mnt

Si ya había datos en /dev/sdb, balancea el sistema para redistribuir bloques entre todos los dispositivos:

sudo btrfs filesystem balance /mnt

Alternativa: crear el filesystem a la vez en todos los discos

Si sabes de antemano que quieres que el sistema abarque todos los discos, puedes crear el FS directamente con todos los dispositivos:

sudo mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd /dev/sde

Explicación de perfiles de datos (-d) y metadata (-m)

  • single: distribuye datos sin redundancia. Útil si los discos son de distinto tamaño o si buscas máxima capacidad.
  • raid0: striping (como RAID 0). Aumenta rendimiento y capacidad, sin redundancia.
  • raid1: duplicación entre dispositivos (mirroring). Incrementa tolerancia a fallos; el espacio usable equivale a la capacidad del disco más pequeño por pareja.
  • raid10: combinación de striping y mirroring. Requiere al menos 4 dispositivos y pares balanceados.

Ejemplo: si usas -d raid1 con los discos del ejemplo, el espacio usable quedará limitado por el tamaño de los discos más pequeños y por la duplicación necesaria.

Convertir perfil RAID en un filesystem ya existente

Si quieres cambiar el perfil de datos y/o metadata después de creado el sistema, usa balance con -dconvert y -mconvert. Primero monta el sistema (si no está montado):

sudo mount /dev/sdb1 /mnt

Ejemplo para convertir a RAID1 (datos y metadata):

sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

Puedes sustituir raid1 por raid0, raid10 o single según lo permitido por el número y tamaño de dispositivos. Ten en cuenta que algunos cambios requieren más espacio libre para reubicación de datos y pueden tardar.

Qué hacer ante un fallo de disco

Si un disco falla, monta degradado para trabajar con el pool y eliminar el dispositivo desaparecido:

sudo mount -o degraded /dev/sdb /mnt
sudo btrfs device delete missing /mnt
  • Si no usabas RAID1/RAID10, los datos que residían exclusivamente en el disco fallado se perderán.
  • Tras reemplazar el disco físico, añade el nuevo dispositivo con btrfs device add y vuelve a balancear.

Quitar un disco del pool

Para retirar un dispositivo sano del pool montado en /mnt:

sudo btrfs device delete /dev/sdc /mnt

Esta operación mueve los datos fuera del disco que se elimina; puede tardar y fallará si no hay espacio suficiente en los discos restantes.

Montaje automático en /etc/fstab (recomendación: usar UUID)

Obtén el UUID del dispositivo con blkid o lsblk:

sudo blkid /dev/sdb
# o
lsblk -o NAME,UUID,MOUNTPOINT

Entrada ejemplo (dispositivo directo, menos recomendable que usar UUID):

/dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0 0

Mejor: usar UUID del filesystem o del RAID lógico generado por Btrfs. Reemplaza por el valor real:

UUID= /mnt btrfs defaults,device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0 0

Al arrancar, systemd y el kernel intentarán montar el Btrfs; si falta un dispositivo y quieres permitir arranque en modo degradado, añade la opción degraded en la línea de fstab o gestiona el montaje en un script de arranque.

Opciones de montaje recomendadas

Para grandes arreglos rotativos (HDD):

compress-force=zlib,autodefrag,nospace_cache

Para SSDs:

noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache

Estas opciones influyen en rendimiento, uso de CPU (compresión) y comportamiento de borrado (discard). Prueba y mide; la compresión puede ahorrar espacio pero aumenta uso de CPU.

Playbook rápido paso a paso

  1. Planifica: decide perfil (-d/-m), ten discos identificados y backups.
  2. Formatea el primer disco: sudo mkfs.btrfs /dev/sdb.
  3. Monta: sudo mount /dev/sdb /mnt.
  4. Añade discos: sudo btrfs device add /dev/sdc /mnt (repite por cada disco).
  5. Balancea si había datos: sudo btrfs filesystem balance /mnt.
  6. Verifica estado: sudo btrfs filesystem df /mnt y sudo btrfs device stats /mnt.
  7. Configura /etc/fstab usando UUID y opciones de montaje.
  8. Monitoriza SMART de discos y ten procedimientos de reemplazo y pruebas periódicas.

Lista de verificación según roles

Administrador de sistemas:

  • Verificar compatibilidad del kernel y utilidades btrfs-progs.
  • Probar conversiones y restauraciones en entorno no productivo.
  • Hacer snapshots periódicos antes de operaciones de balance.

Usuario doméstico:

  • Hacer copia de seguridad antes de formatear.
  • Usar RAID1 si requieres tolerancia a fallos.
  • Evitar mezclar discos de tamaños muy diferentes si buscas rendimiento consistente.

Casos en los que Btrfs puede no ser la mejor opción

  • Necesitas soluciones con soporte corporativo largo plazo y documentación de empresas: ZFS en algunas plataformas o sistemas gestionados pueden ser preferibles.
  • Si no quieres gestionar la complejidad del pooling/RAID a nivel de FS, LVM + ext4 puede ser más sencillo.
  • Operaciones experimentales de Btrfs (a lo largo del tiempo hubo funciones que evolucionaron): comprueba la versión de btrfs-progs y notas de la distribución.

Modelo mental rápido

Piensa en Btrfs como un “contenedor inteligente” para discos: maneja cómo y dónde se escriben bloques (perfil), puede duplicarlos (mirroring), y puede moverlos entre discos cuando añades o quitas dispositivos (balance). Esto te permite tratar muchos discos como si fuesen uno solo.

Mapa de decisiones (Mermaid)

flowchart TD
  A[¿Cuántos discos tienes?] -->|1| B[Usa ext4 o Btrfs single]
  A -->|2| C[¿Quieres redundancia?]
  C -->|Sí| D[Usa Btrfs raid1]
  C -->|No| E[Usa Btrfs single o raid0]
  A -->|>=4| F[¿Deseas rendimiento + redundancia?]
  F -->|Sí| G[raid10]
  F -->|No| H[raid1 o raid0 según preferencia]

Pruebas y criterios de aceptación antes de producción

  • El sistema se monta automáticamente tras reinicio (o monta manual sin errores).
  • btrfs device scan y btrfs filesystem df /mnt muestran los dispositivos esperados.
  • Tras simular la pérdida de un disco (desconectar y montar en modo degradado), btrfs device delete missing /mnt completa sin pérdida de datos cuando hay redundancia.
  • Restauración: al sustituir un disco y añadir el nuevo dispositivo, el balance redistribuye los datos correctamente.

Riesgos y mitigaciones

  • Riesgo: fallo simultáneo de varios discos. Mitigación: copias externas y snapshots regulares.
  • Riesgo: metadata corrupta. Mitigación: usar perfiles que incluyan duplicación de metadata (-m raid1) y monitorizar errores con btrfs device stats.
  • Riesgo: operaciones de balance largas que ocupen I/O. Mitigación: programar en ventanas de baja carga o usar throttling.

Alternativas a Btrfs

  • ZFS: madura, funciones similares, diferente licencia y consumo de RAM; buena para entornos de servidor.
  • LVM + mdadm: enfoque tradicional de capas (volúmenes lógicos + RAID a nivel bloque).
  • ext4/XFS sobre LVM: sencilla y ampliamente soportada si no necesitas pooling a nivel de FS.

Comandos útiles de verificación

# Mostrar información general del filesystem
sudo btrfs filesystem df /mnt

# Mostrar dispositivos en el pool
sudo btrfs filesystem show

# Estadísticas de errores por dispositivo
sudo btrfs device stats /mnt

# Estado de subvolúmenes
sudo btrfs subvolume list /mnt

# Iniciar un balance con límites (para evitar saturar I/O)
sudo btrfs balance start -dusage=5 /mnt

Glosario rápido

  • Balance: operación que redistribuye bloques para optimizar espacio tras cambios en los dispositivos.
  • Degraded: estado en el que falta un dispositivo y el filesystem puede montar con tolerancia si hay redundancia.
  • Subvolumen: unidad lógica dentro de Btrfs que puedes montar por separado.

Resumen final

Btrfs proporciona un método potente y flexible para crear pools de almacenamiento y habilitar mirroring sin capas externas. Es ideal para usuarios que necesitan combinar discos o probar configuraciones RAID a nivel de sistema de archivos. Antes de mover cargas críticas a Btrfs, prueba los procedimientos en un entorno de laboratorio, mantén copias de seguridad y monitoriza regularmente.

Crédito de la imagen: William Hook

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach