Kent Overstreet ha publicado la versión 1.38.6 del sistema de archivos Bcachefs y ha anunciado la eliminación oficial de la etiqueta de desarrollo experimental del proyecto. Recientemente, el número de informes sobre problemas ha disminuido, y los errores encontrados son menos graves y complicados.
La versión incluye dos paquetes: bcachefs-kernel-dkms con el módulo del núcleo, que se compila utilizando el sistema DKMS (Dynamic Kernel Module Support), y bcachefs-tools con la utilidad bcachefs que se ejecuta en espacio de usuario, que implementa comandos para crear (mkfs), montar, recuperar y verificar el sistema de archivos. Los paquetes están disponibles para Debian, Ubuntu, Arch Linux y se esperan para Fedora, openSUSE y NixOS. El módulo DKMS es compatible con núcleos de Linux a partir de la versión 6.16.
A pesar del número de versión poco notable, debido a la falta de cambios en el formato de disco, la versión 1.38.6 incluye una serie de optimizaciones significativas de rendimiento. Se han realizado alrededor de 200 cambios en el código relacionado con la manipulación de estructuras en formato btree, registro y funcionamiento del sistema de archivos, que mejoran el rendimiento. La lógica de confirmación de transacciones se ha comprimido en 4 KB de código de máquina, se han añadido optimizaciones para evitar la aparición de bloqueos competidores («lock contention») al trabajar con btree, y el proceso de vaciado del registro (journal flush) se ha despojado completamente de bloqueos.
En servidor Con una CPU AMD de 48 núcleos, Bcachefs logró una capacidad de 16.5 GB/s al ejecutar 48 clientes de dbench (en comparación, XFS alcanzó un resultado de 16 GB/s). Se han preparado, pero pospuesto para la próxima versión, parches que llevarían el rendimiento en las pruebas de dbench a 19 GB/s (estos parches requieren pruebas adicionales o cambios en el formato de disco). Al probar con la utilidad fio, el rendimiento de Bcachefs fue de 700 operaciones por segundo al realizar operaciones de escritura aleatoria con bloques de 4 kilobytes (XFS muestra en esta prueba un millón de operaciones por segundo, mientras que XFS está limitado por el remapeo de bloques, y Bcachefs gestiona todo el ciclo CoW (Copy-on-Write) con verificación de sumas de comprobación y actualización de la estructura btree).
Además de las optimizaciones en la versión 1.38.6 de Bcachefs, se ha implementado el soporte para conectar hasta 255 dispositivos a un único sistema de archivos. En el repositorio apt.bcachefs.org ha comenzado la formación de paquetes para Ubuntu 26.04. La infraestructura de integración continua y pruebas automatizadas se ha trasladado a la verificación de compilaciones basadas en DKMS. En los próximos meses, se planea centrar la atención en optimizar el funcionamiento del sistema de archivos con múltiples dispositivos de almacenamiento.
Además, continúa el trabajo de reescritura del código en el lenguaje Rust. Se señala que el soporte de Rust en el kernel ha alcanzado un hito significativo: todas las principales distribuciones, al crear paquetes con el kernel 7.0, han activado por defecto la configuración CONFIG_RUST para compilar el kernel con soporte para Rust. En el proyecto Bcachefs ya se ha reescrito un conjunto de utilidades
bcachefs-tools, que se ejecuta en el espacio de usuario, incluyendo la implementación de la API para trabajar con estructuras btree. En la próxima versión, se planea integrar los enlaces preparados en Rust en el módulo DKMS del kernel y comenzar la reescritura del código base de Bcachefs. Se espera que el uso de Rust aumente la flexibilidad, estabilidad y facilidad de uso del código, haciendo el proyecto más interesante para los jóvenes ingenieros y permitiendo en el futuro realizar una verificación formal de la confiabilidad.
El proyecto Bcachefs desarrolla un sistema de archivos que tiene como objetivo combinar la funcionalidad avanzada característica de Btrfs y ZFS, con el nivel de rendimiento, confiabilidad y escalabilidad típico de XFS. Bcachefs admite capacidades como la inclusión de varios dispositivos en una partición, capas de almacenamiento en múltiples niveles (capa inferior con datos de uso frecuente basados en SSD rápidos, y capa superior con datos menos demandados en discos duros), replicación (RAID 1/10), almacenamiento en caché, compresión de datos transparente (modos LZ4, gzip y ZSTD), instantáneas, verificación de integridad mediante sumas de verificación, códigos de corrección de errores, y almacenamiento de información en forma cifrada (se utilizan ChaCha20 y Poly1305).
Entre las innovaciones significativas añadidas a Bcachefs en los últimos meses se mencionan:
- El mecanismo «reconcile» (rebalance_v2), que a diferencia del modo «rebalance» permite realizar el rebalanceo no solo de datos (por ejemplo, replicando varias copias en diferentes dispositivos de almacenamiento), sino también de metadatos en el FS (por ejemplo, para transferir metadatos tras añadir un nuevo dispositivo al pool). Reconcile es aplicable a todas las operaciones de entrada/salida, no solo a operaciones de copia en segundo plano y compresión. En reconcile se tienen en cuenta automáticamente los cambios en la configuración de los dispositivos y se replican de inmediato los datos y metadatos degradados.
- Soporte para códigos de corrección de errores que permiten recuperar datos dañados de manera similar a RAID 5/6. La implementación se basa en la codificación de Reed-Solomon, capaz de corregir hasta N errores en un stripe al tener N bloques redundantes. Se garantiza la recuperación automática de stripes degradados. La posibilidad de aplicar códigos de recuperación es aplicable en configuraciones con dispositivos de almacenamiento de diferentes tamaños.
Fuente: opennet.ru
