Introducción al sistema de archivos BTRFS

Introducción al sistema de archivos BTRFS
BTRFS (sistema de archivos b-tree) es un sistema de archivos moderno de copia en escritura (vaca) para Linux. BTRFS tiene como objetivo implementar muchas características avanzadas del sistema de archivos mientras se centra en la tolerancia a las fallas, la reparación y la administración fácil. El sistema de archivos BTRFS está diseñado para admitir el requisito de servidores de almacenamiento de alto rendimiento y grandes. Es adecuado para centros de datos a escala de petabyte, así como para teléfonos inteligentes celulares.En este artículo, voy a discutir el sistema de archivos BTRFS y sus características. Entonces empecemos.

Copiar en Write - Sistema de archivos de vaca:

BTRFS es un sistema de archivos de copia en escritura (vaca). En un sistema de archivos de vaca, cuando intenta modificar los datos en el sistema de archivos, el sistema de archivos copia los datos, modifica los datos y luego escribe los datos modificados a una ubicación gratuita diferente del sistema de archivos.

La principal ventaja del sistema de archivos Copy-on-write (COW) es que la extensión de los datos que desea modificar se copia en una ubicación diferente, se modifica y se almacena en una extensión diferente del sistema de archivos. La extensión de los datos originales no se modifica. Por lo tanto, el sistema de archivos BTRFS puede eliminar el riesgo de corrupción de datos o actualización parcial en caso de falla de energía durante la modificación de datos, ya que los datos originales se mantienen sin cambios.

La principal desventaja del sistema de archivos de copia en escritura (vaca) es que los archivos grandes tienden a fragmentarse a medida que se modifican. Entonces, la desfragmentación se requiere de vez en cuando. Afortunadamente, el sistema de archivos BTRFS admite la desfragmentación en línea. Por lo tanto, no tiene que desmontar el sistema de archivos para desfragmentar un sistema de archivos BTRFS.

Características principales del sistema de archivos BTRFS:

Las características principales del sistema de archivos BTRFS son:

i) Almacenamiento de archivos basado en la extensión: En un sistema de archivos basado en la medida, la unidad de almacenamiento se denomina un punto. Una extensión es un área de almacenamiento contigua que está reservada para un archivo. Un archivo requiere una extensión, no importa cuán pequeño sea el archivo. Para archivos más grandes (tamaño de archivo mayor que el tamaño de la extensión), se requerirán múltiples extensiones. Para archivos más grandes, se utilizarán metadatos para realizar un seguimiento de las extensiones que el archivo está utilizando. En el sistema de archivos BTRFS, los metadatos son significativamente más pequeños en tamaño. Los metadatos más pequeños mejora la eficiencia del almacenamiento y el rendimiento del sistema de archivos.

ii) soporte enorme del tamaño del archivo: En un sistema de archivos BTRFS, un solo archivo puede ser de aproximadamente 264 Bytes o 16 EIB (exbibytes) en tamaño. No importa cuán grande sea su archivo, BTRFS puede admitirlo.

iii) Embalaje de los archivos pequeños del espacio: Normalmente, no importa cuán pequeño sea un archivo, requerirá un bloque o una extensión para almacenar el archivo. Esto desperdicia mucho espacio en disco. Para resolver este problema, el sistema de archivos BTRFS incorpora archivos más pequeños en los metadatos para almacenar archivos más pequeños de manera eficiente.

iv) Directorios indexados de espacio eficiente: Los directorios del sistema de archivos BTRFS se indexan de dos maneras diferentes. Para la búsqueda del nombre de archivo, se utiliza la indexación basada en clave. Para hacer referencia a los datos, se utiliza la indexación de clave basada en inode. La indexación de dos niveles mejora el rendimiento de la búsqueda de directorio/archivo y reduce los requisitos de almacenamiento para los índices.

v) Asignación de inodo dinámico: Necesita 1 inodo para referencia 1 archivo. Muchos sistemas de archivos (yo.mi., Ext4) tener un número fijo de inodos. Entonces, si crea demasiados archivos pequeños, es posible que le quede mucho espacio en su disco, pero no podrá crear ningún archivo nuevo. Tampoco puede aumentar el número máximo de inodos una vez que se crea el sistema de archivos.

BTRFS resuelve este problema asignando inodos dinámicamente a medida que se requieren. Por lo tanto, puede crear tantos archivos como desee siempre que tenga espacio de disco gratuito.

vi) Instantáneas de escritura y instantáneas de solo lectura: El sistema de archivos BTRFS admite instantáneas. Puede tomar una instantánea del sistema de archivos actual, que puede usar para restaurar sus datos si ha eliminado accidentalmente algunos archivos o corrompió algunos datos.

Por defecto, las instantáneas de BTRFS son de solo lectura. Una vez que haya tomado una instantánea de solo lectura, no puede cambiar ningún archivo/directorios en esa instantánea. En cualquier caso, si desea cambiar cualquier archivo/directorios después de haber tomado una instantánea de su sistema de archivos BTRFS existente, puede cambiar la instantánea de solo lectura a una instantánea de escritura y modificar cualquier archivo/directorios en esa instantánea.

vii) Subvolúmenes: Un sistema de archivos BTRFS puede tener muchos subvolumes. Un subvolumen es un árbol binario llamado (árbol B) (o raíz del sistema de archivos interno/lógico) del árbol de archivos existente del árbol raíz (principal) del sistema de archivos BTRFS. Un subvolume no es un dispositivo de bloque propio. Pero, puede montar subvolúmenes BTRFS individualmente. Puedes pensar en los subvolúmenes como espacios de nombres.

viii) Soporte de cuota de subvolumen: También puede asignar cuotas para subvolúmenes. Una vez que se excede la cuota, no podrá agregar ningún dato nuevo al subvolumen. No necesitará ningún programa separado para crear cuotas de subvolumen BTRFS.

IX) SUMAS DE CHECKS en datos y metadatos: Para evitar la corrupción de datos, BTRFS utiliza algoritmos de suma de verificación CRC32C para los datos y los metadatos del sistema de archivos de forma predeterminada. Las suma de verificación se almacenan en el sistema de archivos para verificar automáticamente los errores del sistema de archivos y las corrupciones de datos en segundo plano.

BTRFS tiene soporte para muchos otros algoritmos de suma de verificación: XXHASH, SHA256 y Blake2B.

x) Compresión: El sistema de archivos BTRFS admite compresión de archivos transparentes. La compresión y la descompresión de los archivos en un sistema de archivos BTRFS se realizan en segundo plano automáticamente.

BTRFS admite 3 algoritmos de compresión: ZLIB, LZO y ZSTD.

ZLIB es el método de compresión predeterminado del sistema de archivos BTRFS.

xi) Soporte integrado de dispositivos múltiples: Los sistemas de archivos BTRFS tienen soporte de Administrador de volumen lógico (LVM) incorporado. Puede agregar múltiples dispositivos de almacenamiento en un solo sistema de archivos BTRFS. También puede configurar matrices RAID en el sistema de archivos BTRFS sin necesidad de ningún software adicional.

El sistema de archivos BTRFS admite la rayación de datos, la reflejo de datos, la rayación de datos+reflejo e implementaciones de paridad única y dual.

Rayos de datos: Si ha agregado múltiples dispositivos de almacenamiento en el mismo sistema de archivos BTRFS, BTRFS puede almacenar el mismo archivo en diferentes dispositivos/particiones físicas. Esto se llama rayas de datos. La rayación de datos mejora el rendimiento de lectura/escritura del sistema de archivos. RAID-0 utiliza ampliamente la función de rayación de datos.

Reflexión de datos: Si ha agregado múltiples dispositivos de almacenamiento en el mismo sistema de archivos BTRFS, todos los datos escritos en un dispositivo de almacenamiento se escribirán en todos los demás dispositivos de almacenamiento. Esto se llama reflejo de datos. RAID-1 utiliza ampliamente la función de reflejo de datos.

Rayos de datos+paridad única: RAID-5 utiliza rayas de datos y paridad distribuida única. Si ha agregado múltiples dispositivos de almacenamiento en un sistema de archivos BTRFS, RAID-5 despojará los datos en múltiples dispositivos de almacenamiento y calculará y almacenará bloques de paridad en los dispositivos de almacenamiento. RAID-5 puede sostener una sola falla de accionamiento.

Decripación de datos+doble paridad: RAID-6 utiliza rayas de datos y paridad distribuida doble. Si ha agregado múltiples dispositivos de almacenamiento en un sistema de archivos BTRFS, RAID-6 despojará los datos en múltiples dispositivos de almacenamiento y calculará y almacenará bloques de paridad dobles en los dispositivos de almacenamiento. RAID-6 puede sostener dos fallas de impulso. Aparte de eso, es lo mismo que RAID-5 (rayas de datos+paridad única).

Data Stripting+Mirrorización: RAID-10 utiliza rayas de datos y reflejo de datos al mismo tiempo. RAID-10 requiere un número par de dispositivos de almacenamiento del mismo tamaño que se agregarán a un solo sistema de archivos BTRFS. El número mínimo de dispositivos de almacenamiento que puede agregar en un sistema de archivos RAID-10 BTRFS es 4. La mitad del dispositivo de almacenamiento se utilizará para la rayación de datos, y la otra mitad se utilizará para reflejar los datos de la primera mitad de los dispositivos de almacenamiento (donde los datos están rayados).

xii) Conciencia y optimizaciones de SSD: El sistema de archivos BTRFS es consciente de SSD y tiene algunas características de optimización de SSD. El sistema de archivos BTRFS también tiene soporte de TRIM/descarte para dispositivos de almacenamiento SSD.

La función de recorte puede detectar y marcar los datos de datos que ya no se usan. Una vez que los extensiones están marcados, el sistema de archivos BTRFS puede borrarlos automáticamente para que los otros archivos puedan usar estas extensiones de datos.

La función de descarte eliminará todos los datos de los SSD. Si desea vender su SSD, esta característica puede ser útil.

xiii) copia de seguridad incremental eficiente: BTRFS admite una copia de seguridad incremental. La primera vez que realiza una copia de seguridad de un sistema de archivos BTRFS, toma una instantánea del sistema de archivos actual. Luego, cualquier copia de seguridad posterior se comparará con la primera instantánea, y solo los cambios se almacenarán en el disco. Por lo tanto, cualquier copia de seguridad posterior tomará menos espacio en disco, y las copias de seguridad serán más rápidas.

xiv) Scrub de fondo: Es un proceso del sistema de archivos BTRFS utilizado para encontrar y corregir errores en los archivos que tienen copias redundantes (múltiples copias) almacenadas en el sistema de archivos BTRFS.

xv) Desfragmentación del sistema de archivos en línea: He explicado anteriormente cómo funciona el sistema de archivos Copy-on-write BTRFS. Los archivos Larges se almacenan en múltiples extensiones del sistema de archivos BTRFS. A medida que modifica archivos grandes, las extensiones que se modificarán se copian en diferentes extensiones gratuitas del sistema de archivos y se modifican allí. Por lo tanto, las extensiones de datos no modificadas también se mantienen en caso de que sea necesario para la recuperación del sistema de archivos. Esto causa fragmentación (la extensión de los datos de un archivo grande no será continuo y se dispersará por todo el dispositivo de almacenamiento) en el sistema de archivos a medida que se modifiquen los archivos grandes. Demasiada fragmentación impacta negativamente en el sistema de archivos (hace que la operación de lectura/escritura del sistema de archivos sea más lenta).

Para resolver este problema, el sistema de archivos BTRFS admite la desfragmentación del sistema de archivos en línea. Con la desfragmentación en línea, no tiene que desmontar el sistema de archivos para desfragmentar el sistema de archivos. Puede mantener el sistema de archivos en funcionamiento y aún más desfragmentarlo. La desfragmentación moverá la extensión del archivo alrededor del sistema de archivos para mantener la extensión del mismo archivo grande lo más continuo posible. La desfragmentación mejora el rendimiento del sistema de archivos.

xvi) Verificación del sistema de archivos fuera de línea: El sistema de archivos BTRFS tiene muchas herramientas incorporadas que puede usar para verificar los errores del sistema de archivos y solucionarlos. También puede arreglar un sistema de archivos BTRFS roto (que no se puede montar) con estas herramientas.

xvii) Conversión en el lugar de los sistemas de archivos Ext2/3/4 y Reiserfs existentes: El sistema de archivos BTRFS tiene una utilidad incorporada BTRFS-Convert, que puede usar para convertir un sistema de archivos Ext2/3/4 y ReiserFS existente en un sistema de archivos BTRFS.

El programa de conversión del sistema de archivos BTRFS lee los metadatos de un sistema de archivos Ext2/3/4 (o ReiserFS) existente, crea metadatos BTRFS y los almacena en el sistema de archivos. El sistema de archivos mantiene los metadatos BTRFS y Ext2/3/4 (o ReiserFS). El sistema de archivos BTRFS apunta a los mismos bloques de archivos utilizados por los archivos del sistema de archivos Ext2/3/4 (o ReiserFS). El sistema de archivos existente y los bloques de datos se mantienen intactos ya que BTRFS es un sistema de archivos Copy-on-write (COW). Cuando se modifica un archivo, el sistema de archivos BTRFS copia los bloqueos de datos originales en nuevas extensiones gratuitas y los modifica allí.

xviii) Dispositivos de semillas: El sistema de archivos BTRFS admite dispositivos de semillas. Puede crear un sistema de archivos de solo lectura y usarlo como una plantilla (dispositivo de semillas) para crear otros sistemas de archivos BTRFS. El beneficio de hacerlo es que solo los datos modificados se escribirán en el nuevo sistema de archivos. Los datos originales (en los dispositivos de semillas) se mantendrán tal como están. Esta característica se puede usar para guardar mucho espacio en disco y redundancia de datos.

xix) Enviar/recibir cambios de subvolumen: El sistema de archivos BTRFS puede enviar/recibir cambios de subvolumen. El sistema de archivos BTRFS puede enviar los cambios incrementales de un subvolumen a otro sistema de archivos BTRFS (también puede residir en otra computadora) que puede recibir los cambios de subvolumen. Esta característica se utiliza para tomar copias de seguridad incrementales del sistema de archivos BTRFS, ya sea a nivel local o de forma remota,. Este método es más rápido y más eficiente que RSYNC.

XX) Batch/Out Out Band Deduplication: El sistema de archivos BTRFS admite una deduplicación por lotes o fuera de banda. La duplicación se lleva a cabo después de que un archivo se escribe en el sistema de archivos. El sistema de archivos BTRFS escanea activamente todo el sistema de archivos en extensión y mantiene solo una copia de cada extensión (elimina la extensión redundante/duplicada). Se utiliza el mismo principio de copia en escritura (vaca) para esta tarea. La deduplicación guarda muchos espacios de disco.

xxi) Soporte de swapfile: Si estás usando Linux Kernel 5.0 o más nuevo, puede crear archivos de intercambio en el sistema de archivos BTRFS.

Hay algunas limitaciones de SwapFile en un sistema de archivos BTRFS:

- El swapfile debe asignarse como nocow (no copiar en escritura)

- El swapfile no debe tener ninguna compresión habilitada.

Estabilidad del sistema de archivos BTRFS:

El sistema de archivos BTRFS es desarrollado activamente por el equipo BTRFS. La mayoría de las características del sistema de archivos son estables en el momento de este escrito. Algunas de las características avanzadas aún no son lo suficientemente estables para un entorno de producción. El equipo BTRFS está trabajando duro para resolver estos problemas de estabilidad.

Si desea utilizar el sistema de archivos BTRFS en su servidor de producción, verifique el estado oficial: la página Wiki BTRFS para averiguar si las características del sistema de archivos que necesita son lo suficientemente estables para usted o no. Además, asegúrese de ejecutar algunas pruebas antes de la implementación final de su sistema de archivos BTRFS, y recuerde mantener copias de seguridad de sus datos importantes. Mantener la respaldo siempre es importante para los entornos de producción.

Reemplazo futuro del sistema de archivos ext4:

El sistema de archivos BTRFS se está desarrollando rápidamente. El equipo de desarrollo de BTRFS también se preocupa por la estabilidad del sistema de archivos. Por lo tanto, hacen todo lo posible para hacerlo lo más estable posible mientras desarrollan el sistema de archivos BTRFS. Una vez que el sistema de archivos BTRFS está completamente desarrollado, y todas las características son lo suficientemente estables, puede reemplazar el sistema de archivos EXT4.

Referencias:

[1] btrfs wiki - https: // btrfs.wiki.núcleo.org/índice.php/main_page
[2] BTRFS - La documentación del árbol del núcleo - https: // www.núcleo.org/doc/html/ortat/filesystems/btrfs.html
[3] BTRFS - Glosario - https: // btrfs.wiki.núcleo.org/índice.php/glosario
[4] Características del sistema de archivos "BTRFS" - https: // www.geekdiary.com/características de btrfs-filsystem/
[5] Comparación de sistemas de archivos - https: // en.Wikipedia.org/wiki/comparación_of_file_systems
[6] Diseño BTRFS - BTRFS Wiki - https: // btrfs.wiki.núcleo.org/índice.php/btrfs_design
[7] Quizás quedarse sin inodos podría tomarse "más en serio"? - https: // lwn.Net/Artículos/724522/
[8] HACER A BTRFS Sntashots de solo lectura Writable - https: // Markandruth.co.Reino Unido/2016/12/29/Making-A-Btrfs-LEAD-ONELA-SNAPSHOT
[9] Stripting de datos - https: // en.Wikipedia.org/wiki/data_striping
[10] Preguntas frecuentes - btrfs wiki - https: // btrfs.wiki.núcleo.org/índice.Php/FAQ
[11] Niveles estándar de RAID - https: // en.Wikipedia.org/wiki/standard_raid_levels
[12] TRIM (computación) - https: // EN.Wikipedia.org/wiki/trim_ (computación)
[13] Solid State Drive - Archwiki - https: // wiki.archinux.org/índice.PHP/SOLID_STATE_DRIVE#TRIM
[14] BTRFSCK - BTRFS wiki - https: // btrfs.wiki.núcleo.org/índice.php/btrfsck
[15] Conversión de Ext3/4 y Reiserfs - BTRFS wiki - https: // btrfs.wiki.núcleo.org/índice.php/conversion_from_ext3
[16] copia de seguridad incremental - BTRFS wiki - https: // btrfs.wiki.núcleo.org/índice.php/incremental_backup
[17] deduplicación - btrfs wiki - https: // btrfs.wiki.núcleo.org/índice.Php/deduplicación
[18] Estado - BTRFS wiki - https: // btrfs.wiki.núcleo.org/índice.Php/estado