Btrfs (pronunciado como "mantequilla alboroto", [11] "mejor F S", [8] "mantequilla F S", [12] "b-tree F S", [12] o simplemente deletreándolo) es un formato de almacenamiento de computadora que combina un sistema de archivos basado en el principio de copia en escritura (COW) con un administrador de volumen lógico (que no debe confundirse con el LVM de Linux ), desarrollado en conjunto. Fue diseñado inicialmente en Oracle Corporation en 2007 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. [13] Según Oracle, Btrfs "no es un verdadero acrónimo".[14]
Desarrollador (es) | Facebook , Fujitsu , Fusion-IO , Intel , Linux Foundation , Netgear , Oracle Corporation , Red Hat , STRATO AG y openSUSE [1] |
---|---|
Nombre completo | Sistema de archivos de árbol B |
Introducido | Kernel de Linux 2.6.29, marzo de 2009 |
Estructuras | |
Contenidos del directorio | Árbol B |
Asignación de archivos | Extensiones |
Limites | |
Max. tamaño del volumen | 16 EiB [2] [a] |
Max. tamaño del archivo | 16 EiB [2] [a] |
Max. Número de archivos | 2 64 [b] [3] |
Max. longitud del nombre de archivo | 255 caracteres ASCII (menos para codificaciones de caracteres multibyte como Unicode ) |
Caracteres permitidos en nombres de archivo | Todos excepto '/' y NUL ( '\0' ) |
Características | |
Fechas registradas | Creación (otime), [4] modificación (mtime), modificación de atributos (ctime) y acceso (atime) |
Rango de fechas | Desplazamiento int firmado de 64 bits de 1970-01-01T00: 00: 00Z [5] |
Resolución de fecha | Nanosegundo |
Atributos | POSIX y atributos extendidos |
Permisos del sistema de archivos | POSIX y ACL |
Compresión transparente | Sí ( zlib , LZO [6] y (desde 4.14) ZSTD [7] ) |
Cifrado transparente | Planeado [8] |
Deduplicación de datos | Sí [9] |
Copiar en escrito | sí |
Otro | |
Apoyados sistemas operativos | Linux , ReactOS [10] |
Sitio web | btrfs |
Btrfs está destinado a abordar la falta de agrupación , instantáneas , sumas de verificación y expansión integral de múltiples dispositivos en los sistemas de archivos de Linux . [8] Chris Mason, el autor principal de Btrfs, declaró que su objetivo era "permitir que [Linux] escale para el almacenamiento que estará disponible. Escalar no se trata solo de abordar el almacenamiento, sino que también significa poder administrarlo y gestionarlo con una interfaz limpia que permite a las personas ver lo que se está utilizando y lo hace más confiable ". [15]
Historia
La estructura de datos central de Btrfs — el árbol B de copia en escritura — fue propuesta originalmente por el investigador de IBM Ohad Rodeh en una presentación en USENIX 2007. [16] 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 estos árboles B. [17]
En 2008, el desarrollador principal de los sistemas de archivos ext3 y ext4 , Theodore Ts'o , declaró que aunque ext4 tiene características mejoradas, no es un avance importante; utiliza tecnología antigua y es un recurso provisional. Ts'o dijo que Btrfs es la mejor dirección porque "ofrece mejoras en escalabilidad, confiabilidad y facilidad de administración". [18] Btrfs también tiene "varias de las mismas ideas de diseño que tenía reiser3 / 4 ". [19]
Btrfs 1.0, con formato en disco finalizado, fue originalmente programado para una versión de finales de 2008, [20] y finalmente fue aceptado en la línea principal del kernel de Linux en 2009. [21] Varias distribuciones de Linux comenzaron a ofrecer Btrfs como una opción experimental de root. sistema de archivos durante la instalación. [22] [23] [24]
En julio de 2011, las funciones de depuración y desfragmentación automática de Btrfs se fusionaron en la versión 3.0 de la línea principal del kernel de Linux . [25] Además de Mason en Oracle, Miao Xie en Fujitsu contribuyó con mejoras de rendimiento. [26] En junio de 2012, Chris Mason dejó Oracle para Fusion-io , que dejó un año después con Josef Bacik para unirse a Facebook . Mientras estuvo en ambas empresas, Mason continuó su trabajo en Btrfs. [27] [17]
En 2012, dos distribuciones de Linux movieron Btrfs de experimental a producción o estado admitido: Oracle Linux en marzo, [28] seguido de SUSE Linux Enterprise en agosto. [29]
En 2015, se adoptó Btrfs como sistema de archivos predeterminado para SUSE Linux Enterprise Server 12. [30]
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 mover Btrfs, que se había incluido como una "vista previa de tecnología" desde RHEL 6 beta, a una función totalmente compatible. señalando que seguiría estando disponible en la serie de versiones RHEL 7. [31] Btrfs se eliminó de RHEL 8 en mayo de 2019. [32]
En 2020, Btrfs fue seleccionado como el sistema de archivos predeterminado para Fedora 33. [33]
Características
Implementado
A partir de la versión 5.0 del kernel de Linux, Btrfs implementa las siguientes características: [34] [35]
- Principalmente autorreparable en algunas configuraciones debido a la naturaleza del copy-on-write
- Desfragmentación en línea y una opción de montaje de desfragmentación automática [25]
- Crecimiento y reducción del volumen en línea
- Adición y eliminación de dispositivos de bloqueo en línea
- Equilibrio en línea (movimiento de objetos entre dispositivos de bloque para equilibrar la carga)
- Comprobación del sistema de archivos sin conexión [36]
- Depuración de datos en línea para encontrar errores y corregirlos automáticamente para archivos con copias redundantes
- RAID 0 , RAID 1 y RAID 10 [37]
- Subvolúmenes (una o más raíces del sistema de archivos montables por separado dentro de cada partición de disco )
- Compresión transparente a través de zlib , LZO [6] y (desde 4.14) ZSTD , [7] configurable por archivo o volumen [38] [39]
- Atómico grabable (mediante copia en escritura) o solo lectura [40] Instantáneas de subvolúmenes
- Clonación de archivos ( reflink , copy-on-write) a través de
cp --reflink
[41] - Sumas de comprobación de datos y metadatos ( CRC-32C [42] ). Se implementan nuevas funciones hash desde 5.5: [43] xxHash , SHA256 , BLAKE2B .
- Conversión in situ de ext3 / 4 a Btrfs (con reversión). Esta característica retrocedió alrededor de la versión 4.0 de btrfs-progs, reescrita desde cero en 4.6. [44]
- Montaje de unión de almacenamiento de solo lectura, conocido como inicialización del sistema de archivos (almacenamiento de solo lectura utilizado como respaldo de copia en escritura para un Btrfs grabable) [45]
- Bloquear descarte (recupera espacio en algunas configuraciones virtualizadas y mejora la nivelación del desgaste en SSD con TRIM )
- Enviar / recibir (guardar diferencias entre instantáneas en un flujo binario) [46]
- Copia de seguridad incremental [47]
- Deduplicación de datos fuera de banda (requiere herramientas de espacio de usuario) [9]
- Capacidad para manejar archivos de intercambio y particiones de intercambio
Implementado pero no recomendado para uso en producción
- Cuotas jerárquicas por subvolumen [48]
- RAID 5 , RAID 6 [49]
Planeado pero aún no implementado
- Desduplicación de datos en banda [34]
- Comprobación del sistema de archivos en línea [50]
- RAID con hasta seis dispositivos de paridad, superando la confiabilidad de RAID 5 y RAID 6 [51]
- Nivel de objeto RAID 0, RAID 1 y RAID 10
- Cifrado [8] [52]
- Caché de lectura y escritura persistente ( L2ARC + ZIL , lvmcache , etc.)
En 2009, se esperaba que Btrfs ofreciera un conjunto de funciones comparable a ZFS , desarrollado por Sun Microsystems . [53] Después de la adquisición de Sun por parte de Oracle en 2009, Mason y Oracle decidieron continuar con el desarrollo de Btrfs. [54]
Clonación
Btrfs proporciona una operación de clonación que crea de forma atómica una instantánea de copia en escritura de un archivo . Estos archivos clonados a veces se denominan enlaces de referencia , a la luz de la llamada al sistema del kernel de Linux asociada propuesta . [55]
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 funciona solo 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 determinadas circunstancias. [56] [57] Los bloques de datos reales no se duplican; al mismo tiempo, debido a la naturaleza de copia en escritura (CoW) de Btrfs, las modificaciones a cualquiera de los archivos clonados no son visibles en el archivo original y viceversa. [58]
La clonación no debe confundirse con enlaces físicos , que son entradas de directorio que asocian varios nombres de archivo con archivos reales en un sistema de archivos. Si bien los enlaces físicos pueden tomarse con diferentes nombres para el mismo archivo, la clonación en Btrfs proporciona archivos independientes que inicialmente comparten todos sus bloques de disco. [58] [59]
Se agregó soporte para esta característica de Btrfs en la versión 7.5 de GNU coreutils , a través de la --reflink
opción del cp
comando. [60] [61]
Además de la clonación de datos ( FICLONE ), Btrfs también admite la deduplicación fuera de banda a través de FIDEDUPERANGE . Esta funcionalidad permite que dos archivos con datos idénticos (incluso parcialmente) compartan almacenamiento. [62] [9]
Subvolúmenes e instantáneas
Se puede pensar en un subvolumen Btrfs como un espacio de nombres de archivo POSIX separado , que se puede montar por separado pasando las opciones subvol
u subvolid
a la utilidad. También se puede acceder montando el subvolumen de nivel superior, en cuyo caso los subvolúmenes son visibles y accesibles como sus subdirectorios. [63]
Los subvolúmenes se pueden crear en cualquier lugar dentro 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 manera similar a la forma en que un subvolumen de nivel superior presenta sus subvolúmenes como subdirectorios. No es posible eliminar un subvolumen hasta que se eliminen todos los subvolúmenes debajo de él en la jerarquía de anidamiento; como resultado, los subvolúmenes de nivel superior no se pueden eliminar. [64]
Cualquier sistema de archivos Btrfs siempre tiene un subvolumen predeterminado, que inicialmente se establece como el subvolumen de nivel superior, y se monta de manera predeterminada si no se pasa ninguna opción de selección de subvolumen mount
. El subvolumen predeterminado se puede cambiar según sea necesario. [64]
Una instantánea de Btrfs es un subvolumen que comparte sus datos (y metadatos) con algún otro subvolumen, utilizando las capacidades de copia en escritura de Btrfs, y las modificaciones a una instantánea no son visibles en el subvolumen original. Una vez que se crea una instantánea grabable, se puede tratar como una versión alternativa del sistema de archivos original. Por ejemplo, para volver a una instantánea, es necesario desmontar un subvolumen original modificado y montar la instantánea en su lugar. En ese momento, también se puede eliminar el subvolumen original. [63]
La naturaleza de copia en escritura (CoW) de Btrfs significa que las instantáneas se crean rápidamente, mientras que inicialmente consumen muy poco espacio en disco. Dado que una instantánea es un subvolumen, también es posible crear instantáneas anidadas. Tomar 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 el subvolumen ya contiene se asigna a un directorio vacío del mismo nombre dentro de la instantánea. [63] [64]
No es posible tomar instantáneas de un directorio, ya que solo los subvolúmenes pueden tener instantáneas. Sin embargo, existe una solución que implica vínculos de referencia repartidos en subvolúmenes: se crea un nuevo subvolumen, que contiene vínculos de ref. De subvolúmenes cruzados al contenido del directorio de destino. Teniendo eso disponible, se puede crear una instantánea de este nuevo volumen. [56]
Un subvolumen en Btrfs es bastante diferente de un volumen lógico tradicional de Logical Volume Manager (LVM). Con LVM, un volumen lógico es un dispositivo de bloque separado , mientras que un subvolumen Btrfs no lo es y no se puede tratar ni usar de esa manera. [63] Hacer instantáneas dd o LVM de btrfs conduce a la pérdida de datos si el original o la copia están montados mientras ambos están en la misma computadora. [sesenta y cinco]
Enviar recibir
Dado cualquier par de subvolúmenes (o instantáneas), Btrfs puede generar una diferencia binaria entre ellos (usando el btrfs send
comando) que se puede reproducir más tarde (usando btrfs receive
), posiblemente en un sistema de archivos Btrfs diferente. La función de envío-recepción crea (y aplica) efectivamente un conjunto de modificaciones de datos necesarias para convertir un subvolumen en otro. [46] [66]
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 . [46] [66]
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. Una nueva instantánea inicialmente no consume cuota porque sus datos se comparten con su padre, pero luego incurre en un cargo por nuevos archivos y operaciones de copia en escritura en 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 qgroup
comando) en jerarquías para implementar grupos de cuotas. [48]
Los grupos de cuotas solo se aplican a subvolúmenes e instantáneas, mientras que no es posible aplicar cuotas en subdirectorios, usuarios o grupos de usuarios individuales. Sin embargo, son posibles soluciones mediante el uso de diferentes subvolúmenes para todos los usuarios o grupos de usuarios que requieren una cuota para ser aplicada.
Conversión in situ de ext2 / 3/4 y ReiserFS
Como resultado de tener muy pocos metadatos anclados en ubicaciones fijas, Btrfs puede deformarse para adaptarse a diseños espaciales inusuales de los dispositivos de almacenamiento de backend. La btrfs-convert
herramienta aprovecha esta capacidad para realizar una conversión in situ de un sistema de archivos ext2 / 3/4 o ReiserFS , al anidar los metadatos Btrfs equivalentes en su espacio no asignado, al tiempo que conserva una copia sin modificar del sistema de archivos original. [67]
La conversión implica la creación de una copia de todos los metadatos 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 se vuelva permanente. Gracias a la naturaleza de copia en escritura de Btrfs, las versiones originales de los bloques de datos del archivo se conservan durante todas las modificaciones del archivo. Hasta que la conversión se vuelva permanente, solo los bloques que se marcaron como libres en ext2 / 3/4 se utilizan para contener nuevas modificaciones de Btrfs, lo que significa que la conversión se puede deshacer en cualquier momento (aunque al hacerlo se borrarán los cambios realizados después de la conversión). a Btrfs). [67]
Todos los archivos convertidos están disponibles y se pueden escribir 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, que se puede montar por sí solo como una imagen de disco de solo lectura, lo que permite acceder a los sistemas de archivos originales y convertidos en el Mismo tiempo. Eliminar este archivo disperso libera espacio y hace que la conversión sea permanente. [67]
A partir de junio de 2015 y las versiones 4.x de la línea principal del kernel de Linux, la conversión ext3 / 4 en el lugar se consideró no probada y rara vez se usó. [67] Sin embargo, la función se reescribió desde cero en 2016 para btrfs-progs
4.6. [44] y se considera estable desde entonces.
La conversión in situ de ReiserFS se introdujo en septiembre de 2017 con el kernel 4.13. [68]
Dispositivos de montaje / semillas de unión
Al crear un nuevo Btrfs, un Btrfs existente se puede utilizar como un sistema de archivos "semilla" de solo lectura. [69] El nuevo sistema de archivos actuará entonces como una superposición de copia sobre escritura en la semilla, como una forma de montaje de unión . La semilla se puede desprender más tarde de Btrfs, momento en el que el reequilibrador simplemente copiará cualquier dato de semilla aún referenciado por el nuevo sistema de archivos antes de separar. 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 con 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. [70]
Cifrado
En su entrevista de 2009, Chris Mason declaró que el soporte para el cifrado estaba planeado para Btrfs. [71] Mientras tanto, una solución para combinar el cifrado con Btrfs es utilizar un mecanismo de cifrado de disco completo como dm-crypt / LUKS en los dispositivos subyacentes y crear el sistema de archivos Btrfs encima de esa capa.
A partir de 2020,[actualizar]los desarrolladores estaban trabajando para agregar hash con clave como HMAC ( SHA256 ). [72]
Comprobación y recuperación
Los sistemas Unix tradicionalmente se basan en programas " fsck " para verificar y reparar sistemas de archivos. Esta funcionalidad se implementa a través del btrfs check
programa. Desde la versión 4.0, esta funcionalidad se considera relativamente estable. Sin embargo, a partir de agosto de 2017, la documentación de btrfs sugiere que se use solo después de haber probado otros métodos de recuperación. [73]
Hay otra herramienta, nombrada btrfs-restore
, que se puede usar para recuperar archivos de un sistema de archivos que no se puede montar, sin modificar el sistema de archivos roto en sí (es decir, de forma no destructiva). [74]
En uso normal, Btrfs es en su mayor parte autorreparable y puede recuperarse de árboles de raíz rotos en el momento del montaje, gracias a que los datos se descargan periódicamente al almacenamiento permanente, de forma predeterminada 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 cambiar especificando un valor deseado (en segundos) para la commit
opción de montaje. [76] [77]
Diseño
La propuesta original de Ohad Rodeh en USENIX 2007 señaló que los árboles B + , que se utilizan ampliamente como estructuras de datos en disco para bases de datos, no podían permitir de manera eficiente instantáneas basadas en copia en escritura porque sus nodos hoja estaban vinculados entre sí: si una hoja fuera copia -sin escrito, sus hermanos y padres también tendrían que serlo, al igual que sus hermanos y padres, y así sucesivamente hasta que se copiara todo el árbol. En su lugar, sugirió un árbol B modificado (que no tiene enlace de hoja), con un recuento de referencia asociado a cada nodo del árbol pero almacenado en una estructura de mapa libre ad hoc y ciertas relajaciones en los algoritmos de equilibrio del árbol para que sean fáciles de copiar en escritura . El resultado sería una estructura de datos adecuada para un almacén de objetos de alto rendimiento que podría realizar instantáneas de copia en escritura, manteniendo una buena concurrencia . [dieciséis]
En Oracle más tarde ese año, Chris Mason comenzó a trabajar en un sistema de archivos con capacidad para instantáneas que usaría esta estructura de datos casi exclusivamente, no solo para metadatos y datos de archivos, sino también recursivamente para rastrear la asignación de espacio de los propios árboles. Esto permitió que todos los recorridos y modificaciones se canalizaran 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. [53]
Btrfs está estructurado como varias capas de dichos árboles, todos usando 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 ID de objeto único . Los ocho bits del medio son un campo de tipo de elemento: su uso está integrado en el código como un filtro de elemento en las búsquedas de árbol. Los objetos pueden tener varios elementos de varios tipos. Los 64 bits restantes (menos significativos) se utilizan en formas específicas de tipo. Por lo tanto, los elementos del mismo objeto terminan adyacentes entre sí en el árbol, agrupados por tipo. Al elegir ciertos valores clave, los objetos pueden colocar elementos del mismo tipo en un orden particular. [53] [3]
Los nodos del árbol interior 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 de hoja contienen claves de elementos empaquetadas en la parte frontal del nodo y los datos de elementos empaquetados al final, y los dos crecen uno hacia el otro a medida que la hoja se llena. [53]
Árbol del sistema de archivos
Dentro de cada directorio, las entradas del directorio aparecen como elementos de directorio , cuyos bits menos significativos de valores 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. Por tanto, los elementos del directorio juntos pueden actuar como un índice para las búsquedas de ruta a inodo, pero no se utilizan para la iteración porque están ordenados por su hash, permuyándolos de forma aleatoria . Esto significa que las aplicaciones de usuario que iteran y abren archivos en un directorio grande generarían muchas más búsquedas de disco entre archivos no adyacentes, una pérdida de rendimiento notable en otros sistemas de archivos con directorios ordenados por hash como ReiserFS , [78] ext3 (con Htree -indexes enabled [79] ) 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 clave del elemento se establece en un contador por directorio que aumenta con cada nueva entrada de directorio. La iteración sobre estos elementos de índice devuelve entradas aproximadamente en el mismo orden en que se almacenan en el disco.
Los archivos con vínculos físicos en varios directorios tienen varios elementos de referencia, uno para cada directorio principal. Los archivos con varios enlaces físicos en el mismo directorio empaquetan todos los nombres de archivo de los enlaces en el mismo elemento de referencia. Esta fue una falla de diseño que limitó la cantidad de enlaces físicos del mismo directorio a la cantidad que pudieran caber en un solo bloque de árbol. (En el 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). Aplicaciones que hicieron un uso intensivo de múltiples enlaces físicos del mismo directorio, como Se observó que git , GNUS , GMame y BackupPC fallaban en este límite. [80] El límite finalmente se eliminó [81] (y en octubre de 2012 se ha fusionado [82] pendiente de publicación en Linux 3.7) mediante la introducción de elementos de referencia extendidos de desbordamiento para contener nombres de archivos de enlaces duros que de otra manera no encajan.
Extensiones
Los datos de archivo se mantienen fuera del árbol en extensiones , que son ejecuciones contiguas de bloques de datos de disco. Los bloques de extensión tienen un tamaño predeterminado de 4 KiB, no tienen encabezados y solo contienen datos de archivo (posiblemente comprimidos). En extensiones comprimidas, los bloques individuales no se comprimen por separado; más bien, la corriente de compresión se extiende por toda la extensión.
Los archivos tienen elementos de datos de extensión para rastrear las extensiones que contienen su contenido. El valor de la clave del elemento es el byte de desplazamiento inicial de la extensión. Esto hace que las búsquedas sean eficientes en archivos grandes con muchas extensiones, porque la extensión correcta para cualquier desplazamiento de archivo dado se puede calcular con solo una búsqueda de árbol.
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 volver a escribir datos no modificados, la copia en escritura puede crear extensiones de sujetalibros o extensiones que son simplemente porciones de extensiones existentes. Los elementos de datos de extensión permiten esto al incluir una compensación en la extensión que están rastreando: los elementos para sujetalibros son aquellos con compensaciones distintas de cero. [3]
Á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 ID de objeto. Representan regiones del espacio: sus valores clave 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 la preferencia de extensiones de metadatos (nodos de árbol) y extensiones de datos (contenido de archivos). La proporción predeterminada de datos a grupos de bloques de metadatos es 1: 2. Están destinados a utilizar conceptos del asignador de bloques de Orlov para asignar archivos relacionados juntos y resistir la fragmentación dejando espacio libre entre los grupos. (Los grupos de bloques Ext3, sin embargo, 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 Inode en el árbol del sistema de archivos incluyen una referencia a su grupo de bloques actual. [3]
Los elementos de extensión contienen una referencia hacia atrás al nodo del árbol o al archivo que ocupa esa extensión. Puede haber varias referencias anteriores si la extensión se comparte entre instantáneas. Si hay demasiadas referencias anteriores para caber en el elemento, se derraman en elementos de referencia de datos de extensión individuales . Los nodos de árboles, a su vez, tienen referencias a los árboles que los contienen. Esto hace posible encontrar qué extensiones o nodos de árbol están en cualquier región del espacio haciendo una búsqueda de rango de árbol B en un par de compensaciones que colocan entre corchetes 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, como todos los demás árboles del sistema de archivos, es de copia en escritura. Por lo tanto, las escrituras en el sistema de archivos pueden causar una cascada en la que los nodos del árbol y los datos del archivo cambiados dan como resultado la asignación de nuevas extensiones, lo que hace que el árbol de extensiones cambie en sí mismo. Para evitar la creación de un bucle de retroalimentación , los nodos del árbol de extensiones que todavía están en la memoria pero que aún no se han comprometido en el disco pueden actualizarse en el lugar para reflejar nuevas extensiones de copia en escritura.
En teoría, el árbol de asignación de extensiones hace innecesario un mapa de bits de espacio libre convencional porque el árbol de asignación de extensiones actúa como una versión de árbol B de un árbol BSP . En la práctica, sin embargo, 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 conservan en el disco (a partir de Linux 2.6.37, a través de la space_cache
opción de montaje [83] ) como extensiones especiales que están exentas de suma de comprobación y copia en escritura.
Árbol de suma de comprobación y depuración
Las sumas de comprobación CRC-32C se calculan tanto para datos como para metadatos y se almacenan como elementos de suma de comprobación en un árbol de suma de comprobació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 tiene disposiciones para agregar algoritmos de suma de comprobación adicionales en versiones futuras del sistema de archivos. [34] [84]
Hay un elemento de suma de verificación por ejecución contigua de bloques asignados, con sumas de verificación por bloque empaquetadas de extremo a extremo en los datos del elemento. Si hay más sumas de verificación de las que caben, se derraman en otro elemento de suma de verificación en una hoja nueva. Si el sistema de archivos detecta una discrepancia en la suma de comprobación mientras lee un bloque, primero intenta obtener (o crear) una buena copia de este bloque desde otro dispositivo, si se utilizan técnicas de duplicación interna o RAID. [85] [86]
Btrfs puede iniciar una verificación en línea de todo el sistema de archivos activando un trabajo de limpieza del sistema de archivos que se realiza en segundo plano. El trabajo de limpieza escanea todo el sistema de archivos en busca de integridad e intenta automáticamente informar y reparar cualquier bloque defectuoso que encuentre en el camino. [85] [87]
Árbol de registro
Una solicitud fsync confirma los datos modificados inmediatamente en un almacenamiento estable. Las cargas de trabajo pesadas con fsync (como una base de datos o una máquina virtual cuyo sistema operativo se ejecutan fsyncs con frecuencia) podrían generar una gran cantidad de E / S de escritura redundantes al obligar al sistema de archivos a copiar en escritura repetidamente y vaciar partes de árboles frecuentemente modificadas para almacenamiento. Para evitar esto, una por cada volumen secundario temporal árbol de registro se crea a diario escribe copia por desencadenados-fsync. Los árboles de registro son autónomos, realizan un seguimiento de sus propias extensiones y mantienen sus propios elementos de suma de comprobación. Sus elementos se reproducen y eliminan en la siguiente confirmación del árbol completo o (si hubo un bloqueo del sistema) en el próximo remontaje.
Árboles de fragmentos y dispositivos
Los dispositivos de bloque se dividen en fragmentos físicos de 256 MB o más. Los fragmentos físicos en varios dispositivos se pueden duplicar o dividir juntos en un solo fragmento lógico . Estos fragmentos lógicos se combinan en un solo espacio de direcciones lógicas que utiliza el resto del sistema de archivos.
El árbol de fragmentos rastrea esto almacenando cada dispositivo en el mismo como un elemento de dispositivo y los fragmentos lógicos como elementos de mapa de fragmentos , que proporcionan un mapeo directo de direcciones lógicas a físicas almacenando sus compensaciones en los 64 bits menos significativos de su clave. Los elementos del mapa de fragmentos pueden ser de varios tipos diferentes:
- único
- 1 porción lógica a 1 física
- dup
- 1 fragmento lógico a 2 fragmentos físicos en 1 dispositivo de bloque
- raid0
- N fragmentos lógicos a N≥2 fragmentos físicos en N≥2 dispositivos de bloque
- raid1
- 1 fragmento lógico a 2 fragmentos físicos en 2 de los N ≥ 2 dispositivos de bloque, [88] en contraste con RAID 1 convencional que tiene N fragmentos físicos
- raid1c3
- 1 fragmento lógico a 3 fragmentos físicos de N≥3 dispositivos de bloque
- raid1c4
- 1 fragmento lógico a 4 fragmentos físicos de N≥4 dispositivos de bloque
- raid5
- N (para N≥2) fragmentos lógicos a N + 1 fragmentos físicos en N + 1 dispositivos de bloque, con 1 fragmento físico utilizado como paridad
- raid6
- N (para N≥2) fragmentos lógicos a N + 2 fragmentos físicos en N + 2 dispositivos de bloque, con 2 fragmentos físicos utilizados como paridad
N es el número de dispositivos de bloque que aún tienen espacio libre cuando se asigna el fragmento. Si N no es lo suficientemente grande para la duplicación / asignación elegida, entonces el sistema de archivos está efectivamente sin espacio.
Árboles de reubicación
Las operaciones de desfragmentación, reducción y reequilibrio requieren la reubicación de extensiones. Sin embargo, hacer una simple copia en escritura de la extensión de reubicación interrumpirá el intercambio entre instantáneas y consumirá espacio en disco. Para preservar el intercambio, 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 en 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 anterior se actualizan progresivamente para apuntar a la nueva; los elementos recién actualizados se almacenan en el árbol de reubicación. Una vez que se completa 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. [89]
Supermanzana
Todos los árboles del sistema de archivos, incluido el árbol de fragmentos en sí, se almacenan en fragmentos, lo que crea un posible problema de arranque al montar el sistema de archivos. Para iniciar un montaje, se almacena en el superbloque una lista de direcciones físicas de los fragmentos que pertenecen al fragmento y a los árboles raíz . [90]
Los espejos de superbloques se mantienen en ubicaciones fijas: [91] 64 KiB en cada dispositivo de bloque, con copias adicionales a 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 superbloque se actualizan en conjunto, excepto en el modo SSD , que alterna actualizaciones entre los espejos para proporcionar cierta nivelación del desgaste .
Soporte comercial
Soportado
- Estación de trabajo Fedora desde la versión 33 [92]
- Oracle Linux desde la versión 7 [93] [94]
- SUSE Linux Enterprise Server a partir de la versión 12 [95] [96]
- Synology DiskStation Manager (DSM) desde la versión 6.0 [97]
- ReactOS desde la versión 0.4.10 [98]
Ya no es compatible
- Btrfs se incluyó como una "vista previa de la tecnología" en Red Hat Enterprise Linux 6 y 7; [22] [31] se eliminó en RHEL 8 en 2018. [32] [99] [100]
Ver también
- APFS : un sistema de archivos de copia en escritura para macOS, iOS, tvOS, watchOS y audioOS
- Bcachefs
- Comparación de sistemas de archivos
- HAMMER : el sistema de archivos DragonFly BSD que utiliza árboles B, junto con sumas de comprobación como contramedida para 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
- ^ a b 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 2 EiB en sistemas de 32 bits debido a los límites internos del kernel de Linux, a menos que la
CONFIG_LBD
opción de configuración del kernel (disponible desde la serie 2.6.x kernel ) esté habilitada para eliminar estos límites del kernel. [101] [102] - ^ Cada elemento en Btrfs tiene un identificador de 64 bits, lo que significa que la mayoría de los archivos que se pueden tener en un sistema de archivos Btrfs es 2 64 .
Referencias
- ^ "Colaboradores de Btrfs en kernel.org" . kernel.org. 18 de enero de 2016 . Consultado el 20 de enero de 2016 .
- ^ a b "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 .
- ^ a b c d Mason, Chris. "Diseño Btrfs" . Wiki de Btrfs . Consultado el 8 de noviembre de 2011 .
- ^ Jonathan Corbet (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 .
- ^ a b "Wiki de btrfs" . kernel.org . Consultado el 19 de abril de 2015 .
- ^ a b "Linux_4.14 - Principiantes del kernel de Linux" . kernelnewbies.org .
- ^ a b c d 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" . Fundación Linux . Archivado desde el original el 27 de junio de 2012 . Consultado el 1 de septiembre de 2009 .
- ^ a b c "Deduplicación" . kernel.org . Consultado el 19 de abril de 2015 .
- ^ "ReactOS 0.4.1 lanzado" . reactos.org . Consultado el 11 de agosto de 2016 .
- ^ http://streaming.oracle.com/ebn/podcasts/media/20209545_Oracle-Linux-7.mp4
- ^ a b Henson, Valerie (31 de enero de 2008). Chunkfs: revisión y reparación rápida del sistema de archivos . Melbourne , Australia. El evento ocurre a los 18m 49s . Consultado el 5 de febrero de 2008 .
Se llama Butter FS o B-tree FS, pero todos los chicos geniales dicen Butter FS
- ^ "El kernel de Linux se compromete a cambiar el estado de estabilidad en fs / btrfs / Kconfig" . Consultado el 8 de febrero de 2019 .
- ^ "22.2 Acerca del sistema de archivos Btrfs" . Docs.Oracle.com . Oracle . 2018. Archivado desde el original el 28 de abril de 2018 . Consultado el 27 de enero de 2021 .
- ^ Kerner, Sean Michael (30 de octubre de 2008). "¿Un mejor sistema de archivos para Linux?" . InternetNews.com . Archivado desde el original el 8 de abril de 2011 . Consultado el 27 de agosto de 2020 .
- ^ a b Rodeh, Ohad (2007). Árboles B, sombreado y clones (PDF) . Taller de almacenamiento y sistema de archivos de USENIX Linux. También Rodeh, Ohad (2008). "Árboles B, sombreado y clones". Transacciones ACM sobre almacenamiento . 3 (4): 1–27. doi : 10.1145 / 1326542.1326544 .
- ^ a b "Desarrolladores líderes de sistemas 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 kernel en Linux Collaboration Summit" . Ars Technica. Archivado desde el original el 17 de junio de 2012 . Consultado el 22 de agosto de 2009 . Cite journal requiere
|journal=
( ayuda ) - ^ Ts'o, Theodore (1 de agosto de 2008). "Re: reiser4 para 2.6.27-rc1" . linux-kernel (lista de correo) . Consultado el 31 de diciembre de 2010 .
- ^ "Cronograma de desarrollo" . Wiki de Btrfs . 11 de diciembre de 2008. Archivado desde el original el 20 de diciembre de 2008 . Consultado el 5 de noviembre de 2011 .
- ^ Wuelfing, Britta (12 de enero de 2009). "Kernel 2.6.29: Corbet dice que el sistema de archivos de próxima generación Btrfs" . Revista Linux . Consultado el 5 de noviembre de 2011 .
- ^ a b "Documentación de Red Hat Enterprise Linux 6: avances tecnológicos" . Archivado desde el original el 28 de mayo de 2011 . Consultado el 21 de enero de 2011 .
- ^ "Fedora Weekly News Issue 276" . 25 de mayo de 2011.
- ^ "Debian 6.0" Squeeze "lanzado" (Comunicado de prensa). Debian . 6 de febrero de 2011 . Consultado el 8 de febrero de 2011 .
También se ha agregado soporte para los sistemas de archivos ext4 y Btrfs ...
- ^ a b "Linux kernel 3.0, sección 1.1. Btrfs: desfragmentación automática, depuración, mejoras de rendimiento" . kernelnewbies.org . 21 de julio de 2011 . Consultado el 5 de abril de 2016 .
- ^ Leemhuis, Thorsten (21 de junio de 2011). "Kernel Log: Próximamente en 3.0 (Parte 2) - Sistemas de archivos" . El H Open . Consultado el 8 de noviembre de 2011 .
- ^ Varghese, Sam. "iTWire" . ITWire.com . Consultado el 19 de abril de 2015 .
- ^ "Se ha lanzado Unbreakable Enterprise Kernel Release 2" . Consultado el 8 de mayo de 2019 .
- ^ "Notas de la versión de 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 .
- ^ a b "Notas de la versión de Red Hat Enterprise Linux 7.4, Capítulo 53: Funcionalidad obsoleta" . 1 de agosto de 2017. Archivado desde el original el 8 de agosto de 2017 . Consultado el 15 de agosto de 2017 .
- ^ a b "Consideraciones al adoptar RHEL 8" . Documentación del producto para Red Hat Enterprise Linux 8 . Red Hat . Consultado el 9 de mayo de 2019 .
- ^ "Btrfs llegando a Fedora 33" . Revista Fedora . 24 de agosto de 2020 . Consultado el 25 de agosto de 2020 .
- ^ a b c "Wiki Btrfs: características" . btrfs.wiki.kernel.org . 27 de noviembre de 2013 . Consultado el 27 de noviembre de 2013 .
- ^ "Wiki de Btrfs: registro de cambios" . btrfs.wiki.kernel.org . 29 de mayo de 2019 . Consultado el 27 de noviembre de 2013 .
- ^ "Manpage btrfs-check" .
- ^ "Uso de Btrfs con varios dispositivos" . kernel.org . 7 de noviembre de 2013 . Consultado el 20 de noviembre de 2013 .
- ^ "Compresión" . kernel.org . 25 de junio de 2013 . Consultado el 1 de abril de 2014 .
- ^ "Btrfs: agregar soporte para propiedades de inodo" . 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 Wiki: ¿Qué función de suma de comprobación utiliza Btrfs?" . Wiki de Btrfs . Consultado el 15 de junio de 2009 .
- ^ "Btrfs hilights en 5.5: nuevos hashes" . Consultado el 29 de agosto de 2020 .
- ^ a b "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 desde el original el 29 de febrero de 2012 . Consultado el 12 de febrero de 2012 .
- ^ a b c Corbet, Jonathan (11 de julio de 2012), Btrfs enviar / recibir , LWN.net , consultado el 14 de noviembre de 2012
- ^ "Wiki Btrfs: Copia de seguridad incremental" . 27 de mayo de 2013 . Consultado el 27 de noviembre de 2013 .
- ^ a b Jansen, Arne (2011), Btrfs Subvolume Quota Groups (PDF) , Strato AG , consultado el 14 de noviembre de 2012
- ^ btrfs (16 de julio de 2016). "RAID 5/6" . kernel.org . Consultado el 1 de octubre de 2016 .
- ^ Corbet, Jonathan (2 de noviembre de 2011). "Una actualización de btrfs en LinuxCon Europe" . Consultado el 12 de febrero de 2012 .
- ^ Mazzoleni, Andrea. "btrfs: lib: raid: Nueva biblioteca RAID que admite hasta seis paridades" . Consultado el 16 de marzo de 2014 .
- ^ "Ideas del proyecto Btrfs" . 21 de febrero de 2013 . Consultado el 21 de febrero de 2013 .
- ^ a b c d Aurora, Valerie (22 de julio de 2009). "Una breve historia de btrfs" . LWN.net . Consultado el 5 de noviembre de 2011 .
- ^ Hilzinger, Marcel (22 de abril de 2009). "Futuro de Btrfs asegurado" . Revista Linux . Consultado el 5 de noviembre de 2011 .
- ^ Corbet, Jonathan (5 de mayo de 2009). "Los dos lados de reflink ()" . LWN.net . Consultado el 17 de octubre de 2013 .
- ^ a b "UseCases - documentación btrfs" . kernel.org . Consultado el 4 de noviembre de 2013 .
- ^ "btrfs: permite la clonación de archivos de subvolúmenes cruzados" . github.com . Consultado el 4 de noviembre de 2013 .
- ^ a b Lenz Grimmer (31 de agosto de 2011). "Ahorre espacio en disco en Linux clonando archivos en Btrfs y OCFS2" . oracle.com . Consultado el 17 de octubre de 2013 .
- ^ "Nombres de referencia de enlaces simbólicos, metadatos de referencia de enlaces duros y datos de referencia de enlaces de ref . " . pixelbeat.org . 27 de octubre de 2010 . Consultado el 17 de octubre de 2013 .
- ^ Meyering, Jim (20 de agosto de 2009). "NOTICIAS de GNU coreutils: 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: acepta la opción --reflink" . savannah.gnu.org . Consultado el 2 de noviembre de 2009 .
- ^ - Manual del programador de Linux - Llamadas al sistema
- ^ a b c d "SysadminGuide - Documentación de Btrfs" . kernel.org . Consultado el 31 de octubre de 2013 .
- ^ a b c "5.6 Creación de subvolúmenes e instantáneas [necesita actualización]" . oracle.com . 2013 . Consultado el 31 de octubre de 2013 .
- ^ "Gotchas - Wiki de btrfs" . btrfs.wiki.kernel.org .
- ^ a b "5.7 Uso de la función de envío / recepción" . oracle.com . 2013 . Consultado el 31 de octubre de 2013 .
- ^ a b c d Mason, Chris (25 de junio de 2015). "Conversión de Ext3 (documentación Btrfs)" . kernel.org . Consultado el 22 de abril de 2016 .
- ^ "página de manual de btrfs-convert (8)" . Consultado el 24 de abril de 2018 .
- ^ "Dispositivo de semillas" .
- ^ Mason, Chris (5 de abril de 2012), Btrfs Filesystem: Status and New Features , Linux Foundation , consultado el 16 de noviembre de 2012[ enlace muerto permanente ]
- ^ 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" . Fundación Linux . Archivado desde el original el 27 de junio de 2012 . Consultado el 9 de octubre de 2014 .
En versiones futuras, planeamos agregar fsck en línea, deduplicación, cifrado y otras características que han estado en las listas de deseos de los administradores durante mucho tiempo.
- ^ Sterba, David. "Sistemas de archivos autenticados usando HMAC (SHA256)" . Lore.Kernel.org . Consultado el 25 de abril de 2020 .
- ^ "Btrfsck - Wiki de btrfs" . btrfs.wiki.kernel.org .
- ^ "Restaurar - Wiki btrfs" . btrfs.wiki.kernel.org .
- ^ "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 de btrfs (árbol de fuentes del kernel de Linux)" . kernel.org . 21 de noviembre de 2013 . Consultado el 6 de febrero de 2014 .
- ^ "Opciones de montaje - Wiki btrfs" . kernel.org . 12 de noviembre de 2013 . Consultado el 16 de enero de 2014 .
- ^ Reiser, Hans (7 de diciembre de 2001). "Re: índice de directorio Ext2: papel ALS y puntos de referencia" . Lista de correo de desarrolladores de ReiserFS . Consultado el 28 de agosto de 2009 .
- ^ Mason, Chris. "Acp" . Página web personal de Oracle . Consultado el 5 de noviembre de 2011 .
- ^ "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: refs de inodo extendido" . Archivado desde el original el 15 de abril de 2013 . Consultado el 7 de noviembre de 2012 .
- ^ Torvalds, Linus (10 de octubre de 2012). "Extraiga la actualización de btrfs de Chris Mason" . git.kernel.org . Archivado desde el original el 15 de abril de 2013 . Consultado el 7 de noviembre de 2012 .
- ^ Larabel, Michael (24 de diciembre de 2010). "Puntos de referencia de la opción de caché de espacio Btrfs" . Phoronix . Consultado el 16 de noviembre de 2012 .
- ^ "Preguntas frecuentes - Wiki de btrfs: ¿Qué función de suma de comprobación utiliza Btrfs?" . El proyecto btrfs . Consultado el 22 de noviembre de 2020 .
- ^ a b Bierman, Margaret; Grimmer, Lenz (agosto de 2012). "Cómo utilizo las capacidades avanzadas de Btrfs" . Consultado el 20 de septiembre de 2013 .
- ^ Salter, Jim (15 de enero de 2014). "Bitrot y Atomic COWs: Dentro de los sistemas de archivos" Next-Gen "" . Ars Technica . Consultado el 15 de enero de 2014 .
- ^ Coekaerts, Wim (28 de septiembre de 2011). "Btrfs Scrub - ¡Repara las corrupciones con copias espejo, por favor!" . Consultado el 20 de septiembre de 2013 .
- ^ "Página de manual / MKFS.BTRFS - Wiki de BTRFS" .
- ^ Mason, Chris; Rodeh, Ohad; Bacik, Josef (9 de julio de 2012), BTRFS: The Linux B-tree Filesystem (PDF) , IBM Research , consultado el 12 de noviembre de 2012
- ^ Mason, Chris (30 de abril de 2008). "Soporte para múltiples dispositivos" . Wiki de Btrfs . Archivado desde el original el 20 de julio de 2011 . Consultado el 5 de noviembre de 2011 .
- ^ Bartell, Sean (20 de abril de 2010). "Re: Restaurando la partición BTRFS" . linux-btrfs (lista de correo).
- ^ "¡Fedora 33 está oficialmente aquí!" . 27 de octubre de 2020 . Consultado el 28 de octubre de 2020 .
- ^ "Oracle ahora admite Btrfs RAID5 / 6 en su núcleo empresarial irrompible - Phoronix" . Phoronix.com .
- ^ "Gestión de Btrfs en Oracle Linux 8" . docs.oracle.com .
- ^ "SUSE reafirma la compatibilidad con 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 . pag. 11 . Consultado el 2 de abril de 2021 .
A partir de DSM 6.0, los volúmenes de datos se pueden formatear como Btrfs
- ^ "Sistemas de archivos" . ReactOS.org . Consultado el 28 de febrero de 2021 .
- ^ "Btrfs ha quedado obsoleto en RHEL | Hacker News" . News.YCombinator.com .
- ^ "Red Hat parece estar abandonando sus esperanzas de Btrfs - Phoronix" . Phoronix.com .
- ^ Andreas Jaeger (15 de febrero de 2005). "Soporte de archivos grandes en Linux" . users.suse.com . Consultado el 12 de agosto de 2015 .
- ^ "Ayuda de configuración del kernel de Linux para CONFIG_LBD en 2.6.29 en x86" . kernel.xc.net . Archivado desde el original el 6 de septiembre de 2015 . Consultado el 12 de agosto de 2015 .
enlaces externos
- Página web oficial
- ¡No puedo creer que esto sea mantequilla! Un recorrido por btrfs en YouTube : una presentación de la conferencia a cargo de Avi Miller, un ingeniero de Oracle
- Btrfs: Trabajar con varios dispositivos - LWN.net , diciembre de 2013, por Jonathan Corbet
- Publicaciones de Marc sobre Linux Btrfs : información detallada sobre varias características de Btrfs
- Descripción general de Btrfs , LinuxCon 2014, por Marc Merlin
- Evangelista del sistema de archivos y líder intelectual: una entrevista con Valerie Aurora , revista Linux , 14 de julio de 2009, por Jeffrey B. Layton