Comando Linux btrfs
Referencia completa de comandos Linux
Btrfs (B-tree File System) es un sistema de archivos Linux avanzado, desarrollado por Oracle y lanzado por primera vez en 2007. Su objetivo de diseño es resolver las limitaciones de los sistemas de archivos tradicionales, proporcionando mejor escalabilidad, fiabilidad y funciones de gestión.
Características principales
- Copiar al escribir (CoW): todas las operaciones de escritura no sobrescriben los datos originales, sino que crean una nueva copia.
- Función de instantánea: puede crear rápidamente instantáneas inmediatas del sistema de archivos, que apenas ocupan espacio adicional.
- Gestión de subvolúmenes: admite dividir el sistema de archivos en múltiples subvolúmenes independientes.
- Sumas de verificación de datos: detecta automáticamente la corrupción de datos.
- Compresión transparente: admite compresión y descompresión en tiempo real de los datos de archivos.
- Compatibilidad con RAID: compatibilidad integrada con múltiples niveles de RAID.
Sintaxis básica del comando btrfs
btrfs [选项] [子命令选项] [参数]
Opciones comunes
| Opción | Descripción |
|---|---|
-v |
Modo de salida detallada |
--help |
Muestra información de ayuda |
--version |
Muestra información de versión |
Explicación detallada de los subcomandos principales
Creación y gestión del sistema de archivos
Crear un sistema de archivos btrfs
Ejemplo
sudo mkfs.btrfs /dev/sdX
# Crear un sistema de archivos con etiqueta
sudo mkfs.btrfs -L mylabel /dev/sdX
# Crear RAID1 usando múltiples dispositivos
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sdX /dev/sdY
Montar el sistema de archivos btrfs
Ejemplo
sudo mount /dev/sdX /mnt/btrfs
# Habilitar compresión (se recomienda lzo o zstd)
sudo mount -o compress=lzo /dev/sdX /mnt/btrfs
# Mostrar opciones de montaje
mount | grep btrfs
Operaciones de subvolumen
Crear subvolumen
Ejemplo
sudo btrfs subvolume create /mnt/btrfs/subvol1
# Listar subvolúmenes
sudo btrfs subvolume list /mnt/btrfs
# Eliminar subvolumen
sudo btrfs subvolume delete /mnt/btrfs/subvol1
Gestión de instantáneas
Ejemplo
sudo btrfs subvolume snapshot /mnt/btrfs /mnt/btrfs/snapshot_$(date +%Y%m%d)
# Instantánea de solo lectura
sudo btrfs subvolume snapshot -r /mnt/btrfs /mnt/btrfs/readonly_snap
# Eliminar instantánea
sudo btrfs subvolume delete /mnt/btrfs/snapshot_20230101
Gestión de espacio
Ver el uso del sistema de archivos
Ejemplo
sudo btrfs filesystem usage /mnt/btrfs
# Mostrar uso del disco
sudo btrfs filesystem df /mnt/btrfs
# Equilibrar la distribución de datos (usar con precaución, puede llevar tiempo)
sudo btrfs balance start /mnt/btrfs
Ajustar el tamaño del sistema de archivos
Ejemplo
sudo btrfs filesystem resize +10G /mnt/btrfs
# Reducir el sistema de archivos
sudo btrfs filesystem resize -5G /mnt/btrfs
Verificación de integridad de datos
Comprobar el sistema de archivos
Ejemplo
sudo btrfs check /dev/sdX
# Intentar reparar (usar con precaución)
sudo btrfs check --repair /dev/sdX
Limpieza y reparación
Ejemplo
sudo btrfs filesystem defrag /mnt/btrfs
# Verificar y reparar el sistema de archivos
sudo btrfs scrub start /mnt/btrfs
# Ver el estado de la reparación
sudo btrfs scrub status /mnt/btrfs
Ejemplos de aplicación práctica
Ejemplo 1: Configurar un directorio principal btrfs con compresión
Ejemplo
sudo mkfs.btrfs -L home /dev/sdX
# Montar y habilitar compresión
sudo mount -o compress=zstd /dev/sdX /mnt/newhome
# Copiar datos existentes
sudo rsync -avx /home/ /mnt/newhome/
# Actualizar fstab para montaje automático
echo "UUID=$(blkid -s UUID -o value /dev/sdX) /home btrfs defaults,compress=zstd 0 2" | sudo tee -a /etc/fstab
# Volver a montar
sudo umount /mnt/newhome
sudo mount -a
Ejemplo 2: Instantáneas periódicas y limpieza
Ejemplo
# Crear instantánea diaria
SNAP_DIR="/mnt/btrfs/.snapshots"
mkdir -p "$SNAP_DIR"
sudo btrfs subvolume snapshot -r /mnt/btrfs "$SNAP_DIR/$(date +%Y%m%d)"
# Conservar las instantáneas de los últimos 7 días
find "$SNAP_DIR" -mindepth 1 -maxdepth 1 -type d -name "2*" | sort -r | tail -n +8 | xargs -r sudo btrfs subvolume delete
Solución de problemas comunes
Problema 1: Espacio insuficiente pero df muestra espacio disponible
Ejemplo
sudo btrfs subvolume list -s /mnt/btrfs
# Limpiar instantáneas innecesarias
sudo btrfs subvolume delete /mnt/btrfs/old_snapshot
Problema 2: La operación de balance se queda bloqueada
Ejemplo
sudo btrfs balance status /mnt/btrfs
# Pausar la operación de balance
sudo btrfs balance pause /mnt/btrfs
# Reanudar la operación de balance
sudo btrfs balance resume /mnt/btrfs
Problema 3: Fallo al montar
Ejemplo
sudo btrfs check /dev/sdX
# Intentar reparar
sudo btrfs rescue zero-log /dev/sdX
sudo mount /dev/sdX /mnt/btrfs
Recomendaciones de mejores prácticas
-
Habilitar compresión: especialmente para datos comprimibles como texto, registros, etc.
# 推荐使用 zstd 压缩算法 mount -o compress=zstd /dev/sdX /mnt/btrfs
-
Crear instantáneas periódicamente: crear instantáneas manualmente antes de operaciones importantes.
-
Monitorear el uso del espacio: el informe de espacio de btrfs difiere de los sistemas de archivos tradicionales.
-
Evitar llegar al 100% de capacidad: mantener al menos un 5-10% de espacio disponible.
-
Usar balance con precaución: ejecutar solo cuando sea necesario, puede llevar mucho tiempo.
-
Considerar la configuración RAID: usar RAID1 o RAID10 para datos importantes.
-
Ejecutar scrub periódicamente: verificar la integridad de los datos.
# 每月执行一次数据检查 sudo btrfs scrub start /mnt/btrfs
A través de este artículo, debería haber dominado las operaciones básicas y los métodos de gestión del sistema de archivos btrfs. Las potentes funciones de btrfs lo convierten en una opción ideal para los sistemas Linux modernos, especialmente adecuado para escenarios que requieren funciones avanzadas de almacenamiento.
Otras extensiones