Tecnología

Examinando btrfs, el sistema de archivos perpetuamente a medio terminar de Linux

No recomendamos permitir que btrfs administre directamente una matriz compleja de discos, disquetes o de otro tipo.
Agrandar / No recomendamos permitir que btrfs administre directamente una matriz compleja de discos, disquetes o de otro tipo.

Btrfs – abreviatura de «B-Tree File System» y frecuentemente pronunciado «butter» o «butter eff ess» – es el sistema de archivos más avanzado presente en el núcleo principal de Linux. De alguna manera, btrfs simplemente busca suplantar ext4, el sistema de archivos predeterminado para la mayoría de las distribuciones de Linux. Pero btrfs también tiene como objetivo proporcionar características nextgen que rompan el molde simple del «sistema de archivos», combinando la funcionalidad de un administrador de matrices RAID, un administrador de volumen y más.

Tenemos buenas y malas noticias sobre esto. Primero, btrfs es un reemplazo de ext4 de un solo disco perfectamente cromulento. Pero si espera reemplazar ZFS, o una pila más compleja basada en administración RAID discreta, administración de volumen y un sistema de archivos simple, la imagen no es tan optimista. Aunque el proyecto btrfs ha solucionado muchos de los problemas evidentes con los que se lanzó en 2009, otros problemas permanecen esencialmente sin cambios 12 años después.

Historia

Chris Mason es el desarrollador fundador de btrfs, en el que comenzó a trabajar en 2007 mientras trabajaba en Oracle. Esto lleva a muchas personas a creer que btrfs es un proyecto de Oracle, no lo es. El proyecto le pertenecía a Mason, no a su empleador, y sigue siendo un proyecto comunitario sin las cargas de la propiedad corporativa hasta el día de hoy. En 2009, btrfs 1.0 fue aceptado en el kernel de Linux de la línea principal. 2.6.29.

Aunque btrfs entró en la línea principal en 2009, en realidad no estaba listo para producción. Durante los próximos cuatro años, la creación de un sistema de archivos btrfs mostraría el siguiente mensaje deliberadamente aterrador para el administrador que se atreviera mkfs a btrfs, y requería un valor no predeterminado Y para proceder:

Btrfs is a new filesystem with extents, writable snapshotting,
support for multiple devices and many more features.

Btrfs is highly experimental, and THE DISK FORMAT IS NOT YET
FINALIZED. You should say N here unless you are interested in
testing Btrfs with non-critical data.

Los usuarios de Linux al ser usuarios de Linux, muchos optaron por ignorar esta advertencia y, como era de esperar, muchos perdieron datos como resultado. Esta versión beta de cuatro años de duración puede haber tenido un impacto duradero en la comunidad de desarrolladores de btrfs, que en mi experiencia tendía a recurrir a «bueno, todo es beta de todos modos» cada vez que surgían problemas informados por los usuarios. Esto sucedió mucho después mkfs.btrfs perdió su diálogo de miedo en finales de 2013.

Han pasado casi ocho años desde que se eliminó la etiqueta «experimental», pero muchos de los antiguos problemas de btrfs siguen sin resolverse y efectivamente sin cambios. Entonces, repetiremos esto una vez más: aver sistema de archivos de un solo disco, btrfs se ha mantenido estable y, en su mayor parte, ha funcionado durante años. Pero cuanto más se adentra en las nuevas funciones que ofrece btrfs, más inestable será el terreno sobre el que camine; en eso nos centramos hoy.

Características

Btrfs solo tiene un verdadero competidor en el espacio del sistema de archivos Linux y BSD: OpenZFS. Es casi imposible evitar comparar y contrastar btrfs con OpenZFS, ya que el diagrama de Venn de sus respectivos conjuntos de características es poco más que un círculo único, ligeramente abultado. Pero vamos a tratar de evitar comparar y contrastar directamente los dos tanto como sea posible. Si es un administrador de OpenZFS, ya lo sabe; y si no es un administrador de OpenZFS, no son realmente útiles.

Además de ser un sistema de archivos simple de un solo disco, btrfs ofrece múltiples topologías de disco (RAID), almacenamiento administrado por volumen (cf., Administrador de volumen lógico de Linux), instantáneas atómicas de copia en escritura, replicación incremental asíncrona, recuperación automática de datos corruptos, y compresión en disco.

Comparación con el almacenamiento heredado

Si quisiera construir un sistema libre de btrfs y ZFS con características similares, necesitaría una pila de capas discretas: mdraid en la parte inferior para RAID, LVM a continuación para instantáneas y luego un sistema de archivos como ext4 o xfs en el parte superior de su sundae de almacenamiento.

Una pila de almacenamiento mdraid + LVM + ext4 todavía termina perdiendo algunas de las características teóricamente más atractivas de btrfs, desafortunadamente. LVM ofrece instantáneas atómicas pero no replicación directa de instantáneas. Ni ext4 ni xfs ofrecen compresión online. Y aunque mdraid pueden ofrecer recuperación de datos si habilita el dm-integrity objetivo, apesta un poco.

los dm-integrity el objetivo por defecto es extremadamente débil crc32 algoritmo hash propenso a colisiones, requiere sobrescribir completamente los dispositivos de destino en la inicialización, y asi que requiere reescribir por completo cada bloque de un disco reemplazado después de una falla, más allá de la escritura en la unidad completa necesaria durante la inicialización.

En resumen, realmente no puede replicar todo el conjunto de funciones prometidas de btrfs en una pila de almacenamiento heredada. Para obtener el paquete completo, necesita btrfs o ZFS.

Topologías de varios discos Btrfs

Ahora que hemos cubierto dónde fallan las cosas con una pila de almacenamiento heredada, es hora de echar un vistazo a dónde cae el propio btrfs. Para eso, el primer lugar que buscaremos es en las topologías de discos múltiples de btrfs.

Btrfs ofrece cinco topologías de discos múltiples: btrfs-raid0, btrfs-raid1, btrfs-raid10, btrfs-raid5, y btrfs-raid6. Aunque la documentación tiende a referirse a estas topologías de manera más simple, por ejemplo, al igual que raid1 en vez de btrfs-raid1—Recomendamos encarecidamente tener en cuenta el prefijo. Estas topologías pueden, en algunos casos, ser extremadamente diferentes de sus contrapartes convencionales.

TopologíaVersión convencionalVersión Btrfs
RAID0Franja simple: pierde cualquier disco, pierde la matrizFranja simple: pierde cualquier disco, pierde la matriz
RAID1Espejo simple—Todos los bloques de datos en el disco norte y disco O Son identicosRedundancia garantizada– Las copias de todos los bloques se guardarán en dos dispositivos separados
RAID10Conjuntos de espejos con rayas: p. Ej., Una banda en tres pares de discos reflejadosConjuntos de espejos con rayas: p. Ej., Una banda en tres pares de discos reflejados
RAID5RAID de paridad diagonal: paridad única (un bloque de paridad por banda), reparado ancho de la rayaRAID de paridad diagonal: paridad única (un bloque de paridad por banda) con variable ancho de la raya
RAID6RAID de paridad diagonal: paridad doble (dos bloques de paridad por banda), reparado ancho de la rayaRAID de paridad diagonal: paridad doble (dos bloques de paridad por banda) con variable ancho de la raya

Como puede ver en el cuadro anterior, btrfs-raid1 difería bastante drásticamente de su análogo convencional. Para entender cómo, pensemos en una colección hipotética de unidades «mutt» de tamaños no coincidentes. Si tenemos un disco de 8T, tres discos de 4T y un disco de 2T, es difícil hacer una matriz RAID convencional útil a partir de ellos; por ejemplo, un RAID5 o RAID6 necesitaría tratarlos a todos como discos de 2T (produciendo solo 8T de almacenamiento en bruto antes de paridad).

Sin embargo, btrfs-raid1 ofrece una premisa muy interesante. Dado que en realidad no une los discos en pares, puede usar toda la colección de discos sin desperdiciarlos. Cada vez que se escribe un bloque en el btrfs-raid1, está escrito de manera idéntica en dos discos separados:alguna dos discos separados. Dado que no hay emparejamientos fijos, btrfs-raid1 es libre de simplemente llenar todos los discos a la misma velocidad aproximada proporcional a su capacidad libre.

los btrfs-raid5 otro btrfs-raid6 las topologías son algo similares a btrfs-raid1 en que, a diferencia de sus contrapartes convencionales, son capaces de manejar tamaños de disco que no coinciden al alterar dinámicamente el ancho de la banda a medida que se llenan los discos más pequeños. btrfs-raid5 ni btrfs-raid6 debería utilizarse en producción, sin embargo, por motivos que veremos en breve.

los btrfs-raid10 otro btrfs-raid0 Las topologías están mucho más cerca de sus contrapartes convencionales y, para la mayoría de los propósitos, pueden considerarse reemplazos directos que comparten las mismas fortalezas y debilidades.

Leave a Comment

You may also like

Más