Btrfs (pronunciado como "better F S", [ 8 ] "butter F S", [ 12 ] [ 13 ] "b-tree F S", [ 13 ] o "BTRFS") es un formato de almacenamiento informático que combina un sistema de archivos basado en el principio de copia en escritura (COW) con un gestor de volúmenes lógicos (distinto del LVM de Linux ), desarrollados conjuntamente. Fue creado por Chris Mason en 2007 [ 14 ] para su uso en Linux , y desde noviembre de 2013, el formato en disco del sistema de archivos se ha declarado estable en el kernel de Linux . [ 15 ]
Btrfs está diseñado para abordar la falta de agrupación, instantáneas , comprobación de integridad , limpieza de datos y extensión multidispositivo integral en los sistemas de archivos de Linux . [ 8 ] Mason, el autor principal de Btrfs, afirmó que su objetivo era "permitir que [Linux] escale para el almacenamiento que estará disponible. Escalar no se trata solo de abordar el almacenamiento, sino también de poder administrarlo y gestionarlo con una interfaz limpia que permita a los usuarios ver qué se está utilizando y lo haga más confiable". [ 16 ]
Historia

La estructura de datos central de Btrfs —elárbol B de copiaen escritura— fue propuesta originalmente por el investigador de IBM Ohad Rodeh en una conferencia de USENIX en 2007. [ 17 ] Chris Mason, un ingeniero que trabajaba en ReiserFS para SUSE en ese momento, se unió a Oracle más tarde ese año y comenzó a trabajar en un nuevo sistema de archivos basado en árboles B. [ 18 ]
En 2008, el desarrollador principal de los sistemas de archivos ext3 y ext4 , Theodore Ts'o , afirmó que, si bien ext4 presentaba mejoras en sus características, no representaba un avance significativo; utilizaba tecnología obsoleta y era una solución provisional. Ts'o señaló que Btrfs era la mejor opción porque "ofrecía mejoras en escalabilidad, fiabilidad y facilidad de gestión". [ 19 ] Btrfs también compartía "varias ideas de diseño con reiser3 / 4 ". [ 20 ]
Btrfs 1.0, con formato en disco finalizado, estaba previsto inicialmente para su lanzamiento a finales de 2008, [ 21 ] y finalmente fue aceptado en la rama principal del kernel de Linux en 2009. [ 22 ] Varias distribuciones de Linux comenzaron a ofrecer Btrfs como una opción experimental de sistema de archivos raíz durante la instalación. [ 23 ] [ 24 ] [ 25 ]
En julio de 2011, las características de desfragmentación y limpieza automáticas de Btrfs se fusionaron en la versión 3.0 del núcleo principal de Linux . [ 26 ] Además de Mason en Oracle, Miao Xie en Fujitsu contribuyó con mejoras de rendimiento. [ 27 ] En junio de 2012, Mason dejó Oracle para unirse a Fusion-io , empresa que abandonó un año después junto con Josef Bacik para incorporarse a Facebook . Mientras estuvo en ambas compañías, Mason continuó su trabajo en Btrfs. [ 28 ] [ 18 ]
En 2012, dos distribuciones de Linux pasaron Btrfs de estado experimental a estado de producción o compatible: Oracle Linux en marzo, [ 29 ] seguido de SUSE Linux Enterprise en agosto. [ 30 ]
En 2015, Btrfs fue adoptado como el sistema de archivos predeterminado para SUSE Linux Enterprise Server (SLE) 12. [ 31 ]
En agosto de 2017, Red Hat anunció en las notas de la versión de Red Hat Enterprise Linux (RHEL) 7.4 que ya no planeaba convertir Btrfs en una característica totalmente compatible (había estado incluida como una "vista previa tecnológica" desde la beta de RHEL 6), señalando que seguiría estando disponible en la serie de versiones de RHEL 7. [ 32 ] Btrfs se eliminó de RHEL 8 en mayo de 2019. [ 33 ] RHEL pasó de ext4 en RHEL 6 a XFS en RHEL 7. [ 34 ]
En 2020, Btrfs fue seleccionado como el sistema de archivos predeterminado para Fedora 33 para las variantes de escritorio. [ 35 ]
Características
Lista de características
Implementado
A partir de la versión 6.0 del kernel de Linux, Btrfs implementa las siguientes características: [ 36 ] [ 37 ] [ 38 ]
- En algunas configuraciones, se autorrepara en la mayoría de los casos debido a la naturaleza de la copia en escritura.
- Desfragmentación en línea y una opción de montaje de autodesfragmentación [ 26 ]
- Crecimiento y disminución del volumen online
- Agregar y eliminar dispositivos de bloqueo en línea
- Balanceo en línea (movimiento de objetos entre dispositivos de bloqueo para equilibrar la carga)
- Verificación del sistema de archivos sin conexión [ 39 ]
- Limpieza de datos en línea para encontrar errores y corregirlos automáticamente en archivos con copias redundantes.
- RAID 0 , RAID 1 y RAID 10 [ 40 ]
- Subvolúmenes (una o más raíces de sistema de archivos montables por separado dentro de cada partición de disco )
- Compresión transparente mediante zlib , LZO y (desde la versión 4.14) ZSTD , [ 7 ] [ 41 ] configurable por archivo o volumen [ 42 ] [ 43 ]
- Instantáneas atómicas de subvolúmenes , escribibles (mediante copia en escritura) o de solo lectura [ 44 ].
- Clonación de archivos ( reflink , copia en escritura) a través de [ 45 ]
cp --reflink <source file><destination file> - Sumas de verificación en datos y metadatos ( CRC-32C [ 46 ] ). Se han implementado nuevas funciones hash desde la versión 5.5: [ 47 ] xxHash , SHA256 , BLAKE2B .
- Conversión in situ de ext3/4 a Btrfs (con reversión). Esta función sufrió una regresión alrededor de la versión 4.0 de btrfs-progs, y fue reescrita desde cero en la versión 4.6. [ 48 ]
- Montaje de unión de almacenamiento de solo lectura, conocido como siembra del sistema de archivos (almacenamiento de solo lectura utilizado como respaldo de copia en escritura para un Btrfs escribible) [ 49 ]
- Descarte de bloques (recupera espacio en algunas configuraciones virtualizadas y mejora la nivelación de desgaste en SSD con TRIM ).
- Enviar/recibir (guardar las diferencias entre instantáneas en un flujo binario) [ 50 ]
- Copia de seguridad incremental [ 51 ]
- Deduplicación de datos fuera de banda (requiere herramientas de espacio de usuario) [ 9 ]
- Capacidad para gestionar archivos de intercambio y particiones de intercambio.
Implementado, pero no recomendado para uso en producción.
Clonación
Btrfs proporciona una operación de clonación que crea atómicamente una instantánea de copia en escritura de un archivo . Estos archivos clonados a veces se denominan reflinks , en vista de la llamada al sistema del kernel de Linux asociada propuesta . [ 56 ]
Al clonar, el sistema de archivos no crea un nuevo enlace que apunte a un inodo existente ; en su lugar, crea un nuevo inodo que inicialmente comparte los mismos bloques de disco con el archivo original. Como resultado, la clonación solo funciona dentro de los límites del mismo sistema de archivos Btrfs, pero desde la versión 3.6 del kernel de Linux puede cruzar los límites de los subvolúmenes en ciertas circunstancias. [ 57 ] [ 58 ] Los bloques de datos reales no se duplican; al mismo tiempo, debido a la naturaleza de copia en escritura (CoW) de Btrfs, las modificaciones en cualquiera de los archivos clonados no son visibles en el archivo original y viceversa. [ 59 ]
La clonación no debe confundirse con los enlaces duros , que son entradas de directorio que asocian varios nombres de archivo a un solo archivo. Si bien los enlaces duros pueden interpretarse como nombres diferentes para el mismo archivo, la clonación en Btrfs proporciona archivos independientes que inicialmente comparten todos sus bloques de disco. [ 59 ] [ 60 ]
La compatibilidad con esta característica de Btrfs se agregó en la versión 7.5 de GNU coreutils , a través de la --reflinkopción del cpcomando. [ 61 ] [ 62 ]
Además de la clonación de datos ( FICLONE ), Btrfs también admite la deduplicación fuera de banda mediante FIDEDUPERANGE . Esta funcionalidad permite que dos archivos con datos (incluso parcialmente) idénticos compartan almacenamiento. [ 63 ] [ 9 ]
Subvolúmenes e instantáneas


Un subvolumen Btrfs puede considerarse como un espacio de nombres de archivos POSIX independiente , que se puede montar por separado pasando subvolopciones subvolida la utilidad. También se puede acceder a él montando el subvolumen de nivel superior, en cuyo caso los subvolúmenes son visibles y accesibles como sus subdirectorios. [ 64 ]
Los subvolúmenes se pueden crear en cualquier lugar de la jerarquía del sistema de archivos y también se pueden anidar. Los subvolúmenes anidados aparecen como subdirectorios dentro de sus subvolúmenes principales, de forma similar a como un subvolumen de nivel superior presenta sus subvolúmenes como subdirectorios. No es posible eliminar un subvolumen hasta que se hayan eliminado todos los subvolúmenes que se encuentran debajo de él en la jerarquía de anidamiento; por lo tanto, los subvolúmenes de nivel superior no se pueden eliminar. [ 65 ]
Cualquier sistema de archivos Btrfs siempre tiene un subvolumen predeterminado, que inicialmente se establece como el subvolumen de nivel superior y se monta por defecto si no se pasa ninguna opción de selección de subvolumen a mount. El subvolumen predeterminado se puede cambiar según sea necesario. [ 65 ]
Una instantánea de Btrfs es un subvolumen que comparte sus datos (y metadatos) con otro subvolumen, utilizando las capacidades de copia en escritura de Btrfs. Las modificaciones realizadas a una instantánea no son visibles en el subvolumen original. Una vez creada una instantánea editable, puede tratarse como una versión alternativa del sistema de archivos original. Por ejemplo, para revertir a una instantánea, es necesario desmontar el subvolumen original modificado y montar la instantánea en su lugar. En ese momento, también se puede eliminar el subvolumen original. [ 64 ]
La naturaleza de copia en escritura (CoW) de Btrfs implica que las instantáneas se crean rápidamente, consumiendo inicialmente muy poco espacio en disco. Dado que una instantánea es un subvolumen, también es posible crear instantáneas anidadas. La creación de instantáneas de un subvolumen no es un proceso recursivo; por lo tanto, si se crea una instantánea de un subvolumen, cada subvolumen o instantánea que este ya contiene se asigna a un directorio vacío con el mismo nombre dentro de la instantánea. [ 64 ] [ 65 ]
No es posible crear instantáneas de un directorio, ya que solo los subvolúmenes pueden tenerlas. Sin embargo, existe una solución alternativa que implica enlaces de referencia distribuidos entre subvolúmenes: se crea un nuevo subvolumen que contiene enlaces de referencia entre subvolúmenes al contenido del directorio de destino. Una vez disponible, se puede crear una instantánea de este nuevo volumen. [ 57 ]
Un subvolumen en Btrfs es bastante diferente de un volumen lógico tradicional del Administrador de Volúmenes Lógicos (LVM). Con LVM, un volumen lógico es un dispositivo de bloques independiente , mientras que un subvolumen de Btrfs no lo es y no puede tratarse ni utilizarse de esa manera. [ 64 ] La creación de instantáneas de btrfs mediante dd o LVM conlleva la pérdida de datos si el original o la copia se montan mientras ambos se encuentran en el mismo equipo. [ 66 ]
Enviar-recibir
Dado cualquier par de subvolúmenes (o instantáneas), Btrfs puede generar una diferencia binaria entre ellos (mediante el btrfs sendcomando) que puede reproducirse posteriormente (mediante btrfs receive), posiblemente en un sistema de archivos Btrfs diferente. La función de envío-recepción crea (y aplica) un conjunto de modificaciones de datos necesarias para convertir un subvolumen en otro. [ 50 ] [ 67 ]
La función de envío/recepción se puede utilizar con instantáneas programadas regularmente para implementar una forma simple de replicación del sistema de archivos , o con el propósito de realizar copias de seguridad incrementales . [ 50 ] [ 67 ]
Grupos de cuotas

Un grupo de cuotas (o qgroup ) impone un límite superior al espacio que puede consumir un subvolumen o una instantánea. Inicialmente, una nueva instantánea no consume cuota porque sus datos se comparten con su elemento principal, pero posteriormente se le cobra por los archivos nuevos y las operaciones de copia en escritura en los archivos existentes. Cuando las cuotas están activas, se crea automáticamente un grupo de cuotas con cada nuevo subvolumen o instantánea. Estos grupos de cuotas iniciales son bloques de construcción que se pueden agrupar (con el btrfs qgroupcomando) en jerarquías para implementar grupos de cuotas. [ 52 ]
Los grupos de cuotas solo se aplican a subvolúmenes e instantáneas, y no es posible aplicar cuotas a subdirectorios, usuarios o grupos de usuarios individuales. Sin embargo, existen soluciones alternativas que consisten en utilizar subvolúmenes diferentes para todos los usuarios o grupos de usuarios que requieran la aplicación de una cuota.
Conversión in situ desde ext2/3/4 y ReiserFS
Como resultado de tener muy pocos metadatos anclados en ubicaciones fijas, Btrfs puede adaptarse a diseños espaciales inusuales de los dispositivos de almacenamiento de backend. La btrfs-convertherramienta aprovecha esta capacidad para realizar una conversión in situ de un sistema de archivos ext2/3/4 o ReiserFS , anidando los metadatos Btrfs equivalentes en su espacio no asignado, al tiempo que conserva una copia sin modificar del sistema de archivos original. [ 68 ]
La conversión implica la creación de una copia de todos los metadatos de ext2/3/4, mientras que los archivos Btrfs simplemente apuntan a los mismos bloques utilizados por los archivos ext2/3/4. Esto hace que la mayor parte de los bloques se compartan entre los dos sistemas de archivos antes de que la conversión sea permanente. Gracias a la naturaleza de copia en escritura de Btrfs, las versiones originales de los bloques de datos de los archivos se conservan durante todas las modificaciones de archivos. Hasta que la conversión sea permanente, solo los bloques que se marcaron como libres en ext2/3/4 se utilizan para almacenar las nuevas modificaciones de Btrfs, lo que significa que la conversión se puede deshacer en cualquier momento (aunque al hacerlo se borrarán todos los cambios realizados después de la conversión a Btrfs). [ 68 ]
Todos los archivos convertidos están disponibles y son escribibles en el subvolumen predeterminado de Btrfs. Se crea un archivo disperso que contiene todas las referencias al sistema de archivos ext2/3/4 original en un subvolumen separado, el cual se puede montar de forma independiente como una imagen de disco de solo lectura, lo que permite acceder simultáneamente a los sistemas de archivos original y convertido. Al eliminar este archivo disperso, se libera el espacio y la conversión se vuelve permanente. [ 68 ]
En las versiones 4.x del kernel principal de Linux, la conversión in situ de ext3/4 se consideraba no probada y rara vez se utilizaba. [ 68 ] Sin embargo, la característica se reescribió desde cero en 2016 para la btrfs-progsversión 4.6. [ 48 ] y se ha considerado estable desde entonces.
La conversión in situ desde ReiserFS se introdujo en septiembre de 2017 con el kernel 4.13. [ 69 ]
Dispositivos de montaje/semilla de unión
Al crear un nuevo Btrfs, se puede usar un Btrfs existente como un sistema de archivos "semilla" de solo lectura. [ 70 ] El nuevo sistema de archivos actuará entonces como una superposición de copia en escritura sobre la semilla, como una forma de montaje de unión . La semilla se puede desvincular posteriormente del Btrfs, momento en el que el reequilibrador simplemente copiará cualquier dato de semilla que aún sea referenciado por el nuevo sistema de archivos antes de desvincularse. Mason ha sugerido que esto puede ser útil para un instalador de Live CD , que podría arrancar desde una semilla Btrfs de solo lectura en un disco óptico, reequilibrarse a sí mismo a la partición de destino en el disco de instalación en segundo plano mientras el usuario continúa trabajando, y luego expulsar el disco para completar la instalación sin reiniciar.
Cifrado
En su entrevista de 2009, Mason afirmó que se planeaba brindar soporte para cifrado en Btrfs. [ 8 ] Mientras tanto, una solución alternativa para combinar el cifrado con Btrfs consiste en utilizar un mecanismo de cifrado de disco completo como dm-crypt / LUKS en los dispositivos subyacentes y crear el sistema de archivos Btrfs sobre esa capa.
A partir de 2020,Los desarrolladores estaban trabajando para agregar un hash con clave como HMAC ( SHA256 ). [ 71 ]
Comprobación y recuperación
Los sistemas Unix tradicionalmente dependen de los programas " fsck " para verificar y reparar los sistemas de archivos. Esta funcionalidad se implementa a través del btrfs checkprograma. Desde la versión 4.0, esta funcionalidad se considera relativamente estable. Sin embargo, a partir de diciembre de 2022 ,La documentación de btrfs sugiere que su --repairopción se utilice únicamente si se ha recibido asesoramiento de "un desarrollador o un usuario experimentado". [ 39 ] A partir de agosto de 2022 ,La documentación de SLE recomienda usar un Live CD, realizar una copia de seguridad y usar la opción de reparación solo como último recurso. [ 72 ]
Existe otra herramienta, denominada btrfs-restore, que puede utilizarse para recuperar archivos de un sistema de archivos inaccesible, sin modificar el propio sistema de archivos dañado (es decir, de forma no destructiva). [ 73 ] [ 74 ]
En condiciones normales de uso, Btrfs se autorrepara en gran medida y puede recuperarse de árboles raíz dañados durante el montaje, gracias a que realiza vaciados periódicos de datos al almacenamiento permanente, por defecto cada 30 segundos. Por lo tanto, los errores aislados provocarán la pérdida de un máximo de 30 segundos de cambios en el sistema de archivos en el siguiente montaje. [ 75 ] Este período se puede modificar especificando un valor deseado (en segundos) con la commitopción de montaje. [ 76 ] [ 77 ]
Diseño
La propuesta original de Ohad Rodeh en USENIX 2007 señalaba que los árboles B+ , ampliamente utilizados como estructuras de datos en disco para bases de datos, no permitían de manera eficiente instantáneas basadas en copia en escritura debido a que sus nodos hoja estaban enlazados: si se copiaba una hoja al escribirla, sus hermanos y padres también debían copiarse, al igual que los hermanos y padres de estos, y así sucesivamente hasta que se copiara todo el árbol. En su lugar, sugirió un árbol B modificado (sin enlace entre hojas), con un contador de referencias asociado a cada nodo del árbol, pero almacenado en una estructura de mapa libre ad hoc, y ciertas flexibilizaciones en los algoritmos de balanceo del árbol para que fueran compatibles con la copia en escritura. El resultado sería una estructura de datos adecuada para un almacenamiento de objetos de alto rendimiento que podría realizar instantáneas de copia en escritura, manteniendo una buena concurrencia . [ 17 ]
Más adelante ese mismo año, en Oracle, Mason comenzó a trabajar en un sistema de archivos con capacidad de instantáneas que utilizaría esta estructura de datos casi exclusivamente, no solo para metadatos y datos de archivos, sino también de forma recursiva para rastrear la asignación de espacio de los propios árboles. Esto permitió canalizar todo el recorrido y las modificaciones a través de una única ruta de código, en la que características como la copia en escritura, la suma de comprobación y la duplicación debían implementarse solo una vez para beneficiar a todo el sistema de archivos. [ 78 ]
Btrfs está estructurado como varias capas de dichos árboles, todas utilizando la misma implementación de árbol B. Los árboles almacenan elementos genéricos ordenados por una clave de 136 bits. Los 64 bits más significativos de la clave son un identificador único de objeto . Los ocho bits centrales son un campo de tipo de elemento: su uso está integrado en el código como un filtro de elementos en las búsquedas del árbol. Los objetos pueden tener múltiples elementos de múltiples tipos. Los 64 bits restantes (menos significativos) se utilizan de forma específica para cada tipo. Por lo tanto, los elementos del mismo objeto terminan adyacentes entre sí en el árbol, agrupados por tipo. Al elegir ciertos valores de clave, los objetos pueden además colocar elementos del mismo tipo en un orden particular. [ 4 ] [ 78 ]
Los nodos internos del árbol son simplemente listas planas de pares clave-puntero, donde el puntero es el número de bloque lógico de un nodo hijo. Los nodos hoja contienen las claves de los elementos empaquetadas al principio del nodo y los datos de los elementos empaquetados al final, y ambos se van acercando a medida que la hoja se llena. [ 78 ]
Árbol del sistema de archivos
Dentro de cada directorio, las entradas de directorio aparecen como elementos de directorio , cuyos bits menos significativos de los valores de clave son un hash CRC32C de su nombre de archivo. Sus datos son una clave de ubicación , o la clave del elemento de inodo al que apunta. Los elementos de directorio juntos pueden actuar como un índice para búsquedas de ruta a inodo, pero no se utilizan para iteración porque están ordenados por su hash, lo que efectivamente los permuta aleatoriamente . Esto significa que las aplicaciones de usuario que iteran sobre y abren archivos en un directorio grande generarían muchas más búsquedas de disco entre archivos no adyacentes, una notable pérdida de rendimiento en otros sistemas de archivos con directorios ordenados por hash como ReiserFS , [ 79 ] ext3 (con índices Htree habilitados [ 80 ] ) y ext4, todos los cuales tienen nombres de archivo con hash TEA . Para evitar esto, cada entrada de directorio tiene un elemento de índice de directorio , cuyo valor de clave del elemento se establece en un contador por directorio que se incrementa con cada nueva entrada de directorio. Por lo tanto, al iterar sobre estos elementos del índice, se devuelven las entradas aproximadamente en el mismo orden en que están almacenadas en el disco.
Los archivos con enlaces duros en varios directorios tienen múltiples elementos de referencia, uno para cada directorio padre. Los archivos con múltiples enlaces duros en el mismo directorio empaquetan todos los nombres de archivo de los enlaces en el mismo elemento de referencia. Esto fue un fallo de diseño que limitaba el número de enlaces duros del mismo directorio a la cantidad que cabía en un solo bloque de árbol. (Con un tamaño de bloque predeterminado de 4 KiB, una longitud promedio de nombre de archivo de 8 bytes y un encabezado por nombre de archivo de 4 bytes, esto sería menos de 350). Se observó que las aplicaciones que hacían un uso intensivo de múltiples enlaces duros del mismo directorio, como git , GNUS , GMame y BackupPC , fallaban al alcanzar este límite. [ 81 ] El límite finalmente se eliminó [ 82 ] (y a partir de octubre de 2012 Se ha fusionado [ 83 ] pendiente de lanzamiento en Linux 3.7) mediante la introducción de elementos de referencia extendida de desbordamiento para contener nombres de archivos de enlace duro que de otro modo no encajarían.
Extensión
Los datos de los archivos se almacenan fuera del árbol en extensiones , [ 4 ] que son secuencias contiguas de bloques de datos de disco. El desplazamiento de la clave del elemento es el byte inicial de la extensión. [ 4 ]
Las instantáneas y los archivos clonados comparten extensiones. Cuando se sobrescribe una pequeña parte de una extensión grande, la copia en escritura resultante puede crear tres extensiones nuevas: una pequeña que contiene los datos sobrescritos y dos grandes con datos sin modificar a cada lado de la sobrescritura. Para evitar tener que reescribir los datos sin modificar, la copia en escritura puede crear extensiones de extremo de libro , o extensiones que son simplemente segmentos de extensiones existentes. Los elementos de datos de extensión permiten esto al incluir un desplazamiento en la extensión que están rastreando: los elementos para extremos de libro son aquellos con desplazamientos distintos de cero. [ 4 ]
Árbol de asignación de extensión
El árbol de asignación de extensiones actúa como un mapa de asignación para el sistema de archivos. A diferencia de otros árboles, los elementos de este árbol no tienen identificadores de objeto. Representan regiones del espacio: sus claves contienen los desplazamientos iniciales y las longitudes de las regiones que representan.
El sistema de archivos divide su espacio asignado en grupos de bloques , que son regiones de asignación de tamaño variable que alternan entre dar preferencia a las extensiones de metadatos (nodos del árbol) y a las extensiones de datos (contenido de los archivos). La proporción predeterminada de grupos de bloques de datos a metadatos es de 1:2. Su propósito es utilizar conceptos del asignador de bloques Orlov para asignar archivos relacionados juntos y resistir la fragmentación dejando espacio libre entre grupos. (Sin embargo, los grupos de bloques de Ext3 tienen ubicaciones fijas calculadas a partir del tamaño del sistema de archivos, mientras que los de Btrfs son dinámicos y se crean según sea necesario). Cada grupo de bloques está asociado con un elemento de grupo de bloques . Los elementos de inodo en el árbol del sistema de archivos incluyen una referencia a su grupo de bloques actual. [ 4 ]
Los elementos de extensión contienen una referencia inversa al nodo de árbol o archivo que ocupa dicha extensión. Puede haber varias referencias inversas si la extensión se comparte entre instantáneas. Si hay demasiadas referencias inversas para que quepan en el elemento, se desbordan a elementos de referencia de datos de extensión individuales . Los nodos de árbol, a su vez, tienen referencias inversas a los árboles que los contienen. Esto permite encontrar qué extensiones o nodos de árbol se encuentran en cualquier región del espacio mediante una búsqueda de rango de árbol B en un par de desplazamientos que delimitan esa región, y luego siguiendo las referencias inversas. Para reubicar datos, esto permite un recorrido ascendente eficiente desde los bloques reubicados para encontrar y corregir rápidamente todas las referencias descendentes a esos bloques, sin tener que escanear todo el sistema de archivos. Esto, a su vez, permite que el sistema de archivos reduzca, migre y desfragmente su almacenamiento en línea de manera eficiente.
El árbol de asignación de extensiones, al igual que todos los demás árboles del sistema de archivos, utiliza la técnica de copia en escritura. Por lo tanto, las escrituras en el sistema de archivos pueden provocar una cascada en la que los cambios en los nodos del árbol y en los datos de los archivos dan lugar a la asignación de nuevas extensiones, lo que a su vez modifica el propio árbol de extensiones. Para evitar un bucle de retroalimentación , los nodos del árbol de extensiones que aún se encuentran en memoria pero que todavía no se han guardado en el disco pueden actualizarse in situ para reflejar las nuevas extensiones copiadas en escritura.
En teoría, el árbol de asignación de extensiones hace innecesario un mapa de bits de espacio libre convencional porque actúa como una versión de árbol B de un árbol BSP . Sin embargo, en la práctica, se utiliza un árbol rojo-negro en memoria de mapas de bits del tamaño de una página para acelerar las asignaciones. Estos mapas de bits se almacenan en disco (a partir de Linux 2.6.37, mediante la space_cacheopción de montaje [ 84 ] ) como extensiones especiales que están exentas de la verificación de suma de comprobación y la copia en escritura.
Árbol de suma de verificación y limpieza
Las sumas de verificación CRC-32C se calculan tanto para los datos como para los metadatos y se almacenan como elementos de suma de verificación en un árbol de sumas de verificación . Hay espacio para 256 bits de sumas de verificación de metadatos y hasta un nodo completo (aproximadamente 4 KB o más) para sumas de verificación de datos. Btrfs contempla la posibilidad de añadir algoritmos de suma de verificación adicionales en futuras versiones del sistema de archivos. [ 36 ] [ 85 ]
Hay un elemento de suma de verificación por cada secuencia contigua de bloques asignados, con las sumas de verificación de cada bloque empaquetadas de extremo a extremo en los datos del elemento. Si hay más sumas de verificación de las que caben, se desbordan a otro elemento de suma de verificación en una nueva hoja. Si el sistema de archivos detecta una discrepancia en la suma de verificación al leer un bloque, primero intenta obtener (o crear) una copia correcta de este bloque desde otro dispositivo , si se utilizan técnicas de duplicación interna o RAID. [ 86 ] [ 87 ]
Btrfs puede iniciar una comprobación en línea de todo el sistema de archivos activando una tarea de limpieza del sistema de archivos que se ejecuta en segundo plano. La tarea de limpieza escanea todo el sistema de archivos para comprobar su integridad e intenta automáticamente informar y reparar cualquier bloque defectuoso que encuentre. [ 86 ] [ 88 ]
Tronco
Una solicitud fsync confirma los datos modificados inmediatamente en el almacenamiento permanente. Las cargas de trabajo intensivas en fsync (como una base de datos o una máquina virtual que ejecuta fsyncs del sistema operativo con frecuencia) podrían generar una gran cantidad de E/S de escritura redundante al obligar al sistema de archivos a copiar repetidamente en escritura y volcar las partes de los árboles que se modifican con frecuencia al almacenamiento. Para evitar esto, se crea un árbol de registro temporal por subvolumen para registrar las copias activadas por fsync en escritura. Los árboles de registro son autónomos, rastrean sus propias extensiones y mantienen sus propios elementos de suma de verificación. Sus elementos se reproducen y se eliminan en la siguiente confirmación completa del árbol o (si hubo un fallo del sistema) en el siguiente remontaje.
Árboles de fragmentos y dispositivos
Los dispositivos de bloques se dividen en fragmentos físicos de 1 GiB para datos y 256 MiB para metadatos. [ 89 ] Los fragmentos físicos distribuidos en varios dispositivos pueden replicarse o combinarse en un único fragmento lógico . Estos fragmentos lógicos se combinan en un único espacio de direcciones lógicas que utiliza el resto del sistema de archivos.
El árbol de fragmentos realiza un seguimiento de esto almacenando cada dispositivo como un elemento de dispositivo y los fragmentos lógicos como elementos de mapa de fragmentos , que proporcionan una asignación directa de direcciones lógicas a físicas almacenando sus desplazamientos en los 64 bits menos significativos de su clave. Los elementos de mapa de fragmentos pueden ser de varios tipos diferentes:
- soltero
- 1 fragmento lógico a 1 fragmento físico
- duplicado
- 1 bloque lógico a 2 bloques físicos en 1 dispositivo de bloques
- raid0
- N bloques lógicos a N≥2 bloques físicos a través de N≥2 dispositivos de bloques
- raid1
- 1 bloque lógico a 2 bloques físicos en 2 de N≥2 dispositivos de bloques, [ 90 ] en contraste con RAID 1 convencional que tiene N bloques físicos
- raid1c3
- 1 bloque lógico a 3 bloques físicos de N≥3 dispositivos de bloques
- raid1c4
- 1 bloque lógico a 4 bloques físicos de N≥4 dispositivos de bloques
- raid5
- N (para N≥2) bloques lógicos a N+1 bloques físicos en N+1 dispositivos de bloques, con 1 bloque físico utilizado como paridad.
- raid6
- N (para N≥2) bloques lógicos a N+2 bloques físicos en N+2 dispositivos de bloques, con 2 bloques físicos utilizados como paridad.
N es el número de dispositivos de bloques que aún tienen espacio libre cuando se asigna el fragmento. Si N no es lo suficientemente grande para la duplicación/mapeo elegido, entonces el sistema de archivos se queda sin espacio.
Árboles de reubicación
Las operaciones de desfragmentación, reducción y reequilibrio requieren la reubicación de extensiones. Sin embargo, realizar una simple copia en escritura de la extensión que se va a reubicar interrumpirá el uso compartido entre instantáneas y consumirá espacio en disco. Para preservar el uso compartido, se utiliza un algoritmo de actualización e intercambio, con un árbol de reubicación especial que sirve como espacio temporal para los metadatos afectados. La extensión que se va a reubicar se copia primero a su destino. Luego, siguiendo las referencias inversas hacia arriba a través del árbol del sistema de archivos del subvolumen afectado, los metadatos que apuntan a la extensión antigua se actualizan progresivamente para que apunten a la nueva; cualquier elemento recién actualizado se almacena en el árbol de reubicación. Una vez completada la actualización, los elementos del árbol de reubicación se intercambian con sus contrapartes en el subvolumen afectado y el árbol de reubicación se descarta. [ 91 ]
Superbloque
Todos los árboles del sistema de archivos, incluido el propio árbol de fragmentos, se almacenan en fragmentos, lo que crea un posible problema de arranque al montar el sistema de archivos. Para arrancar en un montaje, se almacena en el superbloque una lista de direcciones físicas de los fragmentos que pertenecen a los árboles de fragmentos y raíz . [ 92 ]
Los espejos de superbloque se mantienen en ubicaciones fijas: [ 93 ] 64 KiB en cada dispositivo de bloque, con copias adicionales en 64 MiB, 256 GiB y 1 PiB. Cuando se actualiza un espejo de superbloque, se incrementa su número de generación . En el momento del montaje, se utiliza la copia con el número de generación más alto. Todos los espejos de superbloque se actualizan en tándem, excepto en el modo SSD que alterna las actualizaciones entre los espejos para proporcionar cierta nivelación de desgaste .
Soporte comercial
Compatible
- Oracle Linux desde la versión 7 [ 94 ]
- SUSE Linux Enterprise Server desde la versión 12 [ 95 ] [ 96 ]
- Synology DiskStation Manager (DSM) de la versión 6.0 [ 97 ]
- Fedora Workstation desde la versión 33 [ 35 ]
- AlmaLinux desde la versión 10.1 [ 98 ]
- Asustor , desde ADM 3.3 [ 99 ]
- TerraMaster , desde TOS 4.1 [ 100 ]
Ya no es compatible
Véase también
- APFS : un sistema de archivos de copia en escritura para macOS, iPadOS, iOS, tvOS y watchOS.
- Chefs de Bca
- Comparación de sistemas de archivos
- HAMMER : el sistema de archivos de DragonFly BSD que utiliza árboles B, junto con sumas de verificación como medida de protección contra la corrupción de datos.
- Lista de sistemas de archivos
- ReFS : un sistema de archivos de copia en escritura para Windows Server 2012.
- ZFS
Notas
- 1 2 Este es el límite de tamaño en disco propio de Btrfs. El límite se reduce a 8 EiB en sistemas de 64 bits y a 2EiB en sistemas de 32 bits debido a los límites internos del kernel de Linux, a menos que se habilite la opción de configuración del kernel(disponible desde la serie de kernels 2.6.x ) para eliminar estos límites del kernel. [ 103 ] [ 104 ]
CONFIG_LBD - ↑ Cada elemento en Btrfs tiene un identificador de 64 bits, lo que significa que un sistema de archivos Btrfs no puede tener más de 2⁶⁴ archivos.
Referencias
- ↑ "Colaboradores en la documentación de BTRFS" . Btrfs.ReadTheDocs.io . 15 de junio de 2022. Consultado el 5 de diciembre de 2022 .
- ↑ "GPT fdisk - ArchWiki" .
- 1 2 "Documentación de Suse: Guía de administración de almacenamiento: compatibilidad con archivos grandes en Linux" . SUSE . Consultado el 12 de agosto de 2015 .
- 1 2 3 4 5 6 Mason, Chris. "Diseño de Btrfs" . Wiki de Btrfs . Archivado del original el 25 de abril de 2012.
- ↑ Corbet, Jonathan (26 de julio de 2010). "Tiempos de creación de archivos" . LWN.net . Consultado el 15 de agosto de 2015 .
- ^ "Formato en disco - Wiki btrfs" . btrfs.wiki.kernel.org .
- 1 2 "Linux_4.14 - Linux Kernel Newbies" . kernelnewbies.org .
- 1 2 3 4 McPherson, Amanda (22 de junio de 2009). "Una conversación con Chris Mason sobre BTRfs: el sistema de archivos de próxima generación para Linux" . Linux Foundation . Archivado del original el 27 de junio de 2012. Recuperado el 7 de enero de 2025 .
- 1 2 3 "Deduplicación" . Btrfs.ReadTheDocs.io . Consultado el 19 de abril de 2015 .
- ↑ "Controlador de Windows en GitHub.com" . GitHub . Consultado el 10 de enero de 2023 .
- ↑ "ReactOS 0.4.1 lanzado" . reactos.org . Consultado el 11 de agosto de 2016 .
- ↑ "Preguntas y respuestas sobre Oracle Linux 7 con Wim Coekaerts" . Oracle . El evento ocurrió a la 1:15. Archivado del original el 18 de agosto de 2016. Consultado el 6 de febrero de 2016 .
- 1 2 Henson, Valerie (31 de enero de 2008). Chunkfs: Comprobación y reparación rápida del sistema de archivos . Melbourne , Australia. El evento ocurre a los 18m 49s . Recuperado el 5 de febrero de 2008.
Se llama Butter FS o B-tree FS, pero todos los chicos guays dicen Butter FS.
- ↑ Salter, Jim (24 de septiembre de 2021). «Analizando btrfs, el sistema de archivos perpetuamente inacabado de Linux» . Ars Technica . Consultado el 11 de junio de 2023.
Chris Mason es el desarrollador fundador de btrfs, en el que comenzó a trabajar en 2007 mientras trabajaba en Oracle. Esto lleva a muchos a creer que btrfs es un proyecto de Oracle; no lo es. El proyecto pertenecía a Mason, no a su empleador, y sigue siendo un proyecto comunitario sin la influencia de ninguna corporación hasta el día de hoy.
- ↑ "Commit del kernel de Linux que cambia el estado de estabilidad en fs/btrfs/Kconfig" . Consultado el 8 de febrero de 2019 .
- ↑ Kerner, Sean Michael (30 de octubre de 2008). "¿Un mejor sistema de archivos para Linux?" . InternetNews.com . Archivado del original el 8 de abril de 2011. Recuperado el 27 de agosto de 2020 .
- 1 2 Rodeh, Ohad (2007). Árboles B, sombreado y clones (PDF) . Taller USENIX Linux Storage & Filesystem.También Rodeh, Ohad (2008). "Árboles B, sombreado y clones". ACM Transactions on Storage . 3 (4): 1– 27. doi : 10.1145/1326542.1326544 . S2CID 207166167 .
- 1 2 "Desarrolladores líderes del sistema de archivos Btrfs se unen a Facebook" . phoronix.com . Consultado el 19 de abril de 2015 .
- ↑ Paul, Ryan (13 de abril de 2009). "Los panelistas reflexionan sobre el núcleo en la Cumbre de Colaboración de Linux" . Ars Technica . Archivado del original el 17 de junio de 2012. Recuperado el 22 de agosto de 2009 .
- ↑ Ts'o, Theodore (1 de agosto de 2008). "Re: reiser4 para 2.6.27-rc1" . linux-kernel (Lista de correo) . Recuperado el 31 de diciembre de 2010 .
- ↑ «Cronología de desarrollo» . Wiki Btrfs . 11 de diciembre de 2008. Archivado desde el original el 20 de diciembre de 2008.
- ↑ Wuelfing, Britta (12 de enero de 2009). "Kernel 2.6.29: Corbet dice que Btrfs es el sistema de archivos de próxima generación" . Linux Magazine . Consultado el 5 de noviembre de 2011 .
- 1 2 "Documentación de Red Hat Enterprise Linux 6: Vistas previas de tecnología" . Archivado del original el 28 de mayo de 2011. Recuperado el 21 de enero de 2011 .
- ↑ "Noticias semanales de Fedora, número 276" . 25 de mayo de 2011.
- ↑ "Lanzamiento de Debian 6.0 "Squeeze"" (Comunicado de prensa). Debian . 6 de febrero de 2011. Consultado el 8 de febrero de 2011.
También se ha añadido compatibilidad con los sistemas de archivos ext4 y Btrfs...
- 1 2 "Núcleo de Linux 3.0, Sección 1.1. Btrfs: Desfragmentación automática, limpieza, mejoras de rendimiento" . kernelnewbies.org . 21 de julio de 2011. Consultado el 5 de abril de 2016 .
- ^ Leemhuis, Thorsten (21 de junio de 2011). "Registro del kernel: próximamente 3.0 (parte 2): sistemas de archivos" . El H Abierto . Consultado el 8 de noviembre de 2011 .
- ↑ Varghese, Sam. "iTWire" . ITWire.com . Consultado el 19 de abril de 2015 .
- ↑ "Se ha publicado Unbreakable Enterprise Kernel Release 2" . Consultado el 8 de mayo de 2019 .
- ↑ "Notas de la versión SLES 11 SP2" . 21 de agosto de 2012. Consultado el 29 de agosto de 2012 .
- ↑ "Notas de la versión de SUSE Linux Enterprise Server 12" . 5 de noviembre de 2015. Consultado el 20 de enero de 2016 .
- 1 2 "Notas de la versión de Red Hat Enterprise Linux 7.4, Capítulo 53: Funcionalidad obsoleta" . 1 de agosto de 2017. Archivado del original el 8 de agosto de 2017.
- 1 2 "Consideraciones para la adopción de RHEL 8" . Documentación del producto para Red Hat Enterprise Linux 8. Red Hat . Consultado el 9 de mayo de 2019 .
- ↑ "Cómo elegir su sistema de archivos Red Hat Enterprise Linux" . 4 de septiembre de 2020. Consultado el 3 de enero de 2022 .
- 1 2 Murphy, Chris; White, Langdon (24 de agosto de 2020). "Btrfs llegará a Fedora 33" . Fedora Magazine . Recuperado el 3 de agosto de 2025 .
- ^ " Btrfs Wiki: Características" . btrfs.wiki.kernel.org . 27 de noviembre de 2013 . Consultado el 27 de noviembre de 2013 .
- ↑ "Btrfs Wiki: Registro de cambios" . Btrfs.Wiki.Kernel.org . 29 de mayo de 2019. Consultado el 27 de noviembre de 2013 .
- ↑ "Estado — Documentación de BTRFS" . Btrfs.ReadTheDocs.io . Consultado el 12 de enero de 2025 .
- 1 2 "btrfs-comprobación (8)" . Btrfs.ReadTheDocs.io .
- ↑ "Uso de Btrfs con múltiples dispositivos" . kernel.org . 7 de noviembre de 2013. Consultado el 20 de noviembre de 2013 .
- ↑ Larabel, Michael (24 de marzo de 2025). "Btrfs añade compresión Zstd rápida/en tiempo real y otras optimizaciones de rendimiento" . Phoronix.com . Consultado el 31 de julio de 2025 .
- ↑ "Compresión" . kernel.org . 25 de junio de 2013. Consultado el 1 de abril de 2014 .
- ↑ "Btrfs: agregar soporte para propiedades de inodos" . kernel.org . 28 de enero de 2014. Consultado el 1 de abril de 2014 .
- ↑ "btrfs: Instantáneas de solo lectura" . Consultado el 12 de diciembre de 2011 .
- ↑ "Ahorre espacio en disco en Linux clonando archivos en Btrfs y OCFS2" . Consultado el 1 de agosto de 2017 .
- ↑ "Preguntas frecuentes de la wiki: ¿Qué función de suma de verificación utiliza Btrfs?" . Wiki de Btrfs . Consultado el 15 de junio de 2009 .
- ↑ "Novedades de Btrfs en la versión 5.5: nuevos hashes" . Consultado el 29 de agosto de 2020 .
- 1 2 "Btrfs progs release 4.6" . Consultado el 1 de agosto de 2017 .
- ↑ Mason, Chris (12 de enero de 2009). "Registro de cambios de Btrfs" . Archivado del original el 29 de febrero de 2012. Recuperado el 12 de febrero de 2012 .
- 1 2 3 Corbet, Jonathan (11 de julio de 2012). "Btrfs send/receive" . LWN.net . Recuperado el 14 de noviembre de 2012 .
- ↑ "Btrfs Wiki: Copia de seguridad incremental" . 27 de mayo de 2013. Consultado el 27 de noviembre de 2013 .
- ^ Jansen , Arne (2011). "Grupos de cuotas de subvolumen Btrfs" (PDF) . StratoAG . Consultado el 14 de noviembre de 2012 .
- ↑ "RAID 5/6" . Btrfs.ReadTheDocs.io . 16 de julio de 2016. Consultado el 7 de enero de 2025 .
- ↑ Blaxell, Zygo. "Cómo usar btrfs raid5 con éxito (más o menos)" . lore.kernel.org . Consultado el 26 de junio de 2022 .
- ↑ Blaxell, Zygo. "Errores actuales con impacto operativo en btrfs raid5" . lore.kernel.org . Consultado el 26 de junio de 2022 .
- ↑ Corbet, Jonathan (5 de mayo de 2009). "Las dos caras de reflink()" . LWN.net . Consultado el 17 de octubre de 2013 .
- 1 2 "Casos de uso – documentación de btrfs" . kernel.org . Consultado el 4 de noviembre de 2013 .
- ↑ "btrfs: permite clonar archivos entre subvolúmenes" . github.com . Consultado el 4 de noviembre de 2013 .
- 1 2 Grimmer, Lenz (31 de agosto de 2011). "Ahorre espacio en disco en Linux clonando archivos en Btrfs y OCFS2" . oracle.com . Archivado del original el 18 de octubre de 2013. Recuperado el 17 de octubre de 2013 .
- ↑ "Los enlaces simbólicos hacen referencia a nombres, los enlaces duros hacen referencia a metadatos y los enlaces de referencia hacen referencia a datos" . pixelbeat.org . 27 de octubre de 2010. Consultado el 17 de octubre de 2013 .
- ↑ Meyering, Jim (20 de agosto de 2009). "GNU coreutils NEWS: Cambios notables en la versión 7.5" . savannah.gnu.org . Consultado el 30 de agosto de 2009 .
- ↑ Scrivano, Giuseppe (1 de agosto de 2009). "cp: aceptar la opción --reflink" . savannah.gnu.org . Consultado el 2 de noviembre de 2009 .
- ↑ – Manual del programador de Linux – Llamadas al sistema
- 1 2 3 4 "Guía del administrador del sistema – Documentación de Btrfs" . kernel.org . Consultado el 31 de octubre de 2013 .
- 1 2 3 "5.6 Creación de subvolúmenes e instantáneas [ necesita actualización ] " . oracle.com . 2013 . Consultado el 31 de octubre de 2013 .
- ^ "Errores: Wiki btrfs" . btrfs.wiki.kernel.org .
- 1 2 "5.7 Uso de la función Enviar/Recibir" . oracle.com . 2013. Consultado el 31 de octubre de 2013 .
- 1 2 3 4 Mason, Chris (25 de junio de 2015). "Conversión desde Ext3 (documentación de Btrfs)" . kernel.org . Recuperado el 22 de abril de 2016 .
- ↑ "btrfs-convert(8) — Documentación de BTRFS" . Btrfs.ReadTheDocs.io . Consultado el 16 de octubre de 2022 .
- ↑ "Dispositivo semilla" . Archivado del original el 12 de junio de 2017. Consultado el 1 de agosto de 2017 .
- ↑ Sterba, David. "Sistemas de archivos autenticados mediante HMAC(SHA256)" . Lore.Kernel.org . Consultado el 25 de abril de 2020 .
- ↑ "Cómo recuperarse de errores de BTRFS | Soporte | SUSE" . Suse.com . Consultado el 28 de enero de 2023 .
- ↑ «Restaurar - Wiki btrfs» . btrfs.wiki.kernel.org .
- ↑ "btrfs-restore(8) - Página del manual de Linux" . man7.org . Consultado el 28 de enero de 2023 .
- ^ "Preguntas frecuentes sobre problemas - Wiki btrfs" . kernel.org . 31 de julio de 2013 . Consultado el 16 de enero de 2014 .
- ↑ "kernel/git/torvalds/linux.git: Documentación: sistemas de archivos: agregar nuevas opciones de montaje btrfs (árbol fuente del kernel de Linux)" . kernel.org . 21 de noviembre de 2013. Consultado el 6 de febrero de 2014 .
- ↑ «Opciones de montaje - btrfs Wiki» . Btrfs.ReadTheDocs.io . 12 de noviembre de 2013 . Consultado el 16 de enero de 2014 .
- 1 2 3 Aurora, Valerie (22 de julio de 2009). "Una breve historia de btrfs" . LWN.net . Recuperado el 5 de noviembre de 2011 .
- ↑ Reiser, Hans (7 de diciembre de 2001). "Re: Índice de directorio Ext2: documento ALS y pruebas comparativas" . Lista de correo de desarrolladores de ReiserFS . Recuperado el 28 de agosto de 2009 .
- ↑ Mason, Chris. "Acp" . Página web personal de Oracle . Archivado del original el 16 de mayo de 2021.
- ↑ "Limitación de enlace duro" . KernelTrap.org . 8 de agosto de 2010. Consultado el 14 de noviembre de 2011 .
- ↑ Fasheh, Mark (9 de octubre de 2012). "btrfs: referencias de inodos extendidas" . Recuperado el 7 de noviembre de 2012 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Torvalds, Linus (10 de octubre de 2012). "Obtener actualización de btrfs de Chris Mason" . git.kernel.org . Consultado el 7 de noviembre de 2012 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Larabel, Michael (24 de diciembre de 2010). "Benchmarks of the Btrfs Space Cache Option" . Phoronix . Recuperado el 16 de noviembre de 2012 .
- ↑ "Preguntas frecuentes - Wiki de btrfs: ¿Qué función de suma de verificación utiliza Btrfs?" . El proyecto btrfs . Consultado el 22 de noviembre de 2020 .
- 1 2 Bierman, Margaret; Grimmer, Lenz (agosto de 2012). "Cómo utilizo las capacidades avanzadas de Btrfs" . Recuperado el 20 de septiembre de 2013 .
- ↑ Salter, Jim (15 de enero de 2014). "Bitrot y COW atómicos: Dentro de los sistemas de archivos de "próxima generación"" . Ars Technica . Recuperado el 15 de enero de 2014 .
- ↑ Coekaerts, Wim (28 de septiembre de 2011). "Btrfs Scrub: ¡Por favor, solucionen las corrupciones con copias espejo!" . Oracle . Recuperado el 20 de septiembre de 2013 .
- ↑ "Glosario" . Wiki de Btrfs . Archivado del original el 31 de julio de 2021. Consultado el 31 de julio de 2021 .
- ↑ "Manpage/mkfs.btrfs" . Wiki de Btrfs . Perfiles . Consultado el 31 de julio de 2021 .
- ↑ Mason, Chris; Rodeh, Ohad; Bacik, Josef (9 de julio de 2012). "BTRFS: El sistema de archivos B-tree de Linux" (PDF) . IBM Research . Archivado del original (PDF) el 23 de abril de 2014.
- ↑ Mason, Chris (30 de abril de 2008). "Soporte para múltiples dispositivos" . Wiki de Btrfs . Archivado del original el 20 de julio de 2011. Recuperado el 5 de noviembre de 2011 .
- ↑ Bartell, Sean (20 de abril de 2010). "Re: Restauración de la partición BTRFS" . linux-btrfs (Lista de correo).
- ↑ Larabel, Michael (17 de septiembre de 2017). "Oracle ahora admite Btrfs RAID5/6 en su Unbreakable Enterprise Kernel" . Phoronix.com . Consultado el 26 de octubre de 2025 .
- ↑ "SUSE reafirma su apoyo a Btrfs" . LWN.net .
- ↑ "Notas de la versión de SUSE Linux Enterprise Server 12" . SUSE.com . Consultado el 28 de febrero de 2021 .
- ↑ "Libro Blanco de Cloud Station" (PDF) . Synology.com . Synology . pág. 11. Archivado del original (PDF) el 11 de noviembre de 2020.
A partir de DSM 6.0, los volúmenes de datos se pueden formatear como Btrfs.
- ^ Cavalca, Davide (21 de octubre de 2025). "Anuncio de compatibilidad con Btrfs en AlmaLinux OS 10.1" . AlmaLinux.org . Consultado el 26 de octubre de 2025 .
- ↑ "Notas de la versión de ADM" . asustor.com . 5 de marzo de 2026. Consultado el 11 de abril de 2026 .
- ↑ "TFSS (TerraMaster File System Snapshot)" . terra-master.com . 11 de abril de 2026. Consultado el 12 de abril de 2026 .
- ↑ "Btrfs ha sido descontinuado en RHEL" . News.YCombinator.com .
- ↑ "Red Hat parece estar abandonando sus esperanzas con Btrfs - Phoronix" . Phoronix.com .
- Jaeger, Andreas (15 de febrero de 2005). "Soporte para archivos grandes en Linux" . users.suse.com . Archivado del original el 23 de julio de 2015. Recuperado el 12 de agosto de 2015 .
- "Ayuda de configuración del kernel de Linux para CONFIG_LBD en la versión 2.6.29 en x86" . kernel.xc.net . Archivado del original el 6 de septiembre de 2015. Consultado el 12 de agosto de 2015 .
Enlaces externos
- Sitio web oficial

- ¡No puedo creer que esto sea mantequilla! Un recorrido por btrfs en YouTube : una presentación en conferencia a cargo de Avi Miller, un ingeniero de Oracle.
- Btrfs: Trabajar con múltiples dispositivos – LWN.net , diciembre de 2013, por Jonathan Corbet
- Publicaciones de Marc sobre Linux Btrfs : información detallada sobre diversas características de Btrfs.
- Descripción general de Btrfs , LinuxCon 2014, por Marc Merlin
- WinBtrfs Controlador Btrfs para Windows
- Sistemas de archivos de compresión
- Sistemas de archivos de disco
- Sistemas de archivos compatibles con el kernel de Linux
- Software relacionado con el sistema de archivos de Linux