Btrfs es un sistema de archivos de propósito general y código abierto para Linux. El nombre deriva del uso de árboles B para almacenar estructuras internas del sistema de archivos. Se utilizan diferentes nombres para el sistema de archivos, incluidos "Butter F S" y "B-tree F S". El desarrollo de Btrfs comenzó en Oracle en 2007 y ahora varias empresas (incluidas Red Hat, Fujitsu, Intel, SUSE y muchas otras) están contribuyendo al esfuerzo de desarrollo. Btrfs está incluido en el kernel principal de Linux.
datos y metadatos de copia en escritura
– Btrfs proporciona almacenamiento de archivos basado en extensiones con un tamaño máximo de archivo de 50 TB y un tamaño máximo de sistema de archivos de 50 TB.
– Todos los datos y metadatos son de copia sobre escritura. Esto significa que los bloques de datos no se modifican en el disco. Btrfs simplemente copia los bloques y luego escribe las copias en una ubicación diferente.
– No actualizar la ubicación original elimina el riesgo de una actualización parcial o corrupción de datos durante un corte de energía.
– La copia La naturaleza de escritura de Btrfs también facilita las características del sistema de archivos, como la replicación, la migración, la copia de seguridad y la restauración de datos.
Instantáneas Btrfs
– Btrfs le permite crear instantáneas tanto de lectura como de escritura.
– Una instantánea es una copia de un subvolumen completo de Btrfs tomada en un momento dado.
– Las instantáneas aparecen como directorios normales y puede acceder a la instantánea como lo haría con cualquier otro directorio.
– Las instantáneas grabables le permiten revertir un sistema de archivos a un estado anterior. Puede tomar una instantánea, realizar una actualización del sistema y reiniciar en la instantánea si la actualización causa problemas. Todas las instantáneas se pueden escribir de forma predeterminada, pero también tiene la opción de crear instantáneas de solo lectura.
– Las instantáneas de solo lectura son útiles para una copia de seguridad y luego se pueden eliminar cuando se completa la copia de seguridad.
Soporte RAID incorporado
– Btrfs también tiene soporte RAID incorporado para los niveles RAID-0, RAID-1 y RAID-10.
– El RAID de Btrfs no es un RAID multidisco como los dispositivos RAID de software creados con el comando mdadm. Tampoco es un bloque RAID porque no duplica los dispositivos de bloque.
– El RAID de Btrfs solo garantiza que para cada bloque, haya una cantidad de copias "x". Para RAID-1, por ejemplo, Btrfs solo almacena dos copias de todo en dos dispositivos diferentes.
– Btrfs mantiene CRC para todos los metadatos y datos, por lo que todo se suma para preservar la integridad de los datos contra la corrupción. Con una configuración RAID-1 o RAID-10, si la suma de comprobación falla en la primera lectura, los datos se extraen de otra copia.
cambio de tamaño y desfragmentación en línea
– Btrfs tiene cambio de tamaño y desfragmentación en línea.
– Puede agregar o eliminar dispositivos mientras los sistemas de archivos permanecen en línea.
– Cuando se elimina un dispositivo, las extensiones almacenadas en él se redistribuyen a los otros dispositivos en el sistema de archivos.
– También puede reemplazar dispositivos mientras Btrfs está en línea. Btrfs reequilibra las extensiones en el nuevo disco y luego puede eliminar el disco antiguo de una matriz Btrfs.
Compresión transparente
– Btrfs tiene compresión transparente y actualmente admite dos métodos de compresión:zlib y LZO (predeterminado).
– LZO ofrece una mejor relación de compresión, mientras que zlib ofrece una compresión más rápida.
– Btrfs puede determinar si los bloques se pueden comprimir y, por lo tanto, comprime solo cuando es posible.
– Habilita la compresión y especifica el método de compresión mediante una opción de montaje. Por ejemplo, para habilitar la compresión LZO o zlib:
# mount –o compress=lzo|zlib [device] [mount_point]
– También puede obligar a Btrfs a comprimir siempre los datos:
# mount -o compress-force [device] [mount_point]
El rendimiento de Btrfs mejora con el uso de ssd
– Btrfs detecta automáticamente las unidades de estado sólido (SSD) y desactiva todas las optimizaciones para medios rotativos.
– Por ejemplo, en discos giratorios, es importante almacenar los datos relacionados juntos para reducir la búsqueda. Esto requiere ciclos de CPU para obtener una buena localidad de datos en discos giratorios, lo cual no es tan importante con SSD.
– La compatibilidad con TRIM también es una optimización para SSD. Le dice al SSD qué bloques ya no son necesarios y están disponibles para sobrescribirlos.
Almacenamiento eficiente para archivos pequeños
– Btrfs proporciona almacenamiento eficiente para archivos pequeños.
– Todos los sistemas de archivos de Linux abordan el almacenamiento en tamaños de bloque, por ejemplo, 4 KB. Con otros sistemas de archivos, un archivo de menos de 4 KB desperdicia el espacio sobrante.
– Btrfs almacena estos archivos más pequeños directamente en los metadatos, lo que proporciona una ventaja de rendimiento significativa sobre otros sistemas de archivos al crear y leer archivos pequeños.
Cómo ajustar el sistema de archivos Btrfs para un mejor rendimiento