Crear un pool de almacenamiento y espejo con Btrfs en Linux

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
- Formatea el primer dispositivo como Btrfs:
sudo mkfs.btrfs /dev/sdb
- 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
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
- Planifica: decide perfil (-d/-m), ten discos identificados y backups.
- Formatea el primer disco:
sudo mkfs.btrfs /dev/sdb
. - Monta:
sudo mount /dev/sdb /mnt
. - Añade discos:
sudo btrfs device add /dev/sdc /mnt
(repite por cada disco). - Balancea si había datos:
sudo btrfs filesystem balance /mnt
. - Verifica estado:
sudo btrfs filesystem df /mnt
ysudo btrfs device stats /mnt
. - Configura /etc/fstab usando UUID y opciones de montaje.
- 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
ybtrfs 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
Materiales similares

Gestiona tu historial de YouTube: ver, borrar y pausar

Crear usuarios en Active Directory desde el controlador

Incursiones remotas en Pokémon GO: guía y novedades

Instalar Xfinity Internet en casa: guía paso a paso

Arreglar Instagram en Windows 11 — Guía rápida
