# Bcachefs

Bcachefs es un sistema de archivos copy-on-write (COW) para sistemas operativos basados en Linux. Su desarrollador principal, Kent Overstreet, lo anunció por primera vez en 2015, y fue agregado al kernel de Linux a partir de la versión 6.7. Está diseñado para competir con las características modernas de ZFS o Btrfs, así como con la velocidad y el rendimiento de ext4 o XFS.

## Características

Entre sus características se incluyen el almacenamiento en caché, cifrado completo del sistema de archivos utilizando los algoritmos ChaCha20 y Poly1305, compresión nativa mediante LZ4, gzip y Zstandard, snapshots, sumas de verificación CRC-32C y de 64 bits. Puede abarcar múltiples dispositivos de bloque, incluyendo configuraciones RAID.
Las versiones anteriores de Bcachefs ofrecían toda la funcionalidad de Bcache, un sistema de caché a nivel de bloque para Linux, con el cual Bcachefs comparte aproximadamente el 80% de su código. A partir de diciembre de 2021, la funcionalidad de caché a nivel de bloque fue eliminada.
A nivel de estructura de datos, Bcachefs utiliza árboles B, al igual que muchos otros sistemas de archivos modernos, pero con un tamaño de nodo inusualmente grande, con un valor predeterminado de 256 KiB. Estos nodos tienen una estructura interna basada en logs, formando una estructura de datos híbrida que reduce la necesidad de reescribir nodos durante las actualizaciones.
Los snapshots no se implementan clonando un árbol COW, sino añadiendo un número de versión a los objetos del sistema de archivos. La función COW y el asignador de bloques permiten una implementación de RAID que, según se afirma, no sufre el problema del write hole ni la fragmentación de I/O.

## Supuestos problemas de estabilidad

Bcachefs se describe a sí mismo como:
   «funcional y estable, con una pequeña comunidad de usuarios».
Sin embargo, al discutir sobre Linux 6.9-rc3 el 7 de abril de 2024, Linus Torvalds cuestionó la estabilidad de Bcachefs, diciendo:
   «si pensabas que Bcachefs ya era estable, tengo un puente para venderte»[expresión americana que hace referencia al estafador George C. Parker, que «vendió» el puente de Brooklyn repetidas veces.]
En agosto de 2024 Linus afirmó que
   «nadie en su sano juicio usa Bcachefs esperando que sea estable».
En agosto de 2024, el mantenedor de Debian para bcachefs-tools, un paquete que proporciona «herramientas de espacio de usuario y documentación», abandonó el paquete, cuestionando su viabilidad a largo plazo. Además, en una publicación de blog, el mantenedor comentó:
   «Aconsejaría que, si estás considerando usar Bcachefs para cualquier tipo de entorno de producción en un futuro cercano, primero evalúes qué tan sostenible es su soporte a largo plazo y si realmente hay alguien que esté logrando proporcionar un soporte estable para él».

## Historia

El desarrollo principal ha estado a cargo de Kent Overstreet, el creador de Bcache, el cual describe como un «prototipo« de las ideas que dieron origen a Bcachefs. Overstreet pretende que Bcachefs reemplace a Bcache. Ha declarado que el desarrollo de Bcachefs comenzó cuando los desarrolladores de Bcache se dieron cuenta de que su código estaba «evolucionando... hacia un sistema de archivos POSIX completo y de propósito general» y que «había un diseño realmente limpio y elegante» si lo llevaban en esa dirección. Algún tiempo después de que Bcache fuera fusionado en 2013 en el kernel principal de Linux, Overstreet dejó su trabajo en Google para trabajar a tiempo completo en Bcachefs.
Tras varios años de desarrollo sin financiación, Overstreet anunció Bcachefs en 2015, momento en el que describió el código como "más o menos completo en cuanto a características" e hizo un llamado a testers y colaboradores. Su intención era crear un sistema de archivos avanzado con características modernas, similares a las de ZFS o Btrfs, pero con la velocidad y el rendimiento de sistemas como ext4 y XFS. En 2017, Overstreet estaba recibiendo apoyo financiero para el desarrollo de Bcachefs a través de Patreon.
A mediados de 2018, el formato en disco se había estabilizado. Se habían enviado parches para su revisión con el objetivo de incluir Bcachefs en el kernel principal de Linux, pero aún no habían sido aceptados.
Para mediados de 2019, las características deseadas de Bcachefs estaban completas y los parches correspondientes fueron enviados a LKML para revisión por pares. En octubre de 2023, Bcachefs fue fusionado en el kernel de Linux 6.7, el cual fue lanzado en enero de 2024.

## Controversia con el autor

En noviembre de 2024, Kent Overstreet fue restringido del ciclo de desarrollo del kernel de Linux 6.13 por
   "abuso escrito hacia otro miembro de la comunidad"
y por tomar
   "medidas insuficientes para restaurar la confianza de la comunidad en poder tener discusiones técnicas productivas sin temor a ataques personales".