Kent Overstreet, auteur du système de mise en cache des disques SSD BCache inclus dans le noyau Linux, a résumé les résultats de l'avancement du système de fichiers Bcachefs lors de sa présentation à la conférence LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit). Il a également évoqué les projets de développement futur de ce FS. En mai, un ensemble de correctifs mis à jour pour la révision et l'incorporation dans le noyau Linux principal a été proposé avec la mise en œuvre de Bcachefs. Le développement de Bcachefs dure depuis environ 10 ans. L'annonce que la mise en œuvre de Bcachefs était prête pour révision avant incorporation dans le noyau a été faite fin 2020, et la version actuelle des correctifs tient compte des commentaires et des améliorations signalés lors de la révision précédente.
L'objectif du développement de Bcachefs est d'atteindre le niveau de performance, de fiabilité et d'évolutivité d'XFS, tout en offrant des fonctionnalités supplémentaires propres à Btrfs et ZFS, telles que l'inclusion dans une partition de plusieurs dispositifs, les agencements multicouches des disques, la réplication (RAID 1/10), la mise en cache, la compression de données transparente (modes LZ4, gzip et ZSTD), les instantanés d'état, la vérification d'intégrité par les sommes de contrôle, la capacité de stocker des codes de correction d'erreurs de Reed-Solomon (RAID 5/6), et le stockage d'informations sous forme chiffrée (utilisant ChaCha20 et Poly1305). En termes de performance, Bcachefs surpasse Btrfs et d'autres systèmes de fichiers basés sur le mécanisme Copy-on-Write, et affiche des vitesses de fonctionnement proches de celles d'Ext4 et d'XFS.
Parmi les dernières avancées dans le développement de Bcachefs, on note la stabilisation de l'implémentation des snapshots disponibles en écriture. Comparativement à Btrfs, les snapshots dans Bcachefs sont désormais nettement mieux évolutifs et dépourvus des problèmes typiques de Btrfs. Dans la pratique, les fonctionnalités des snapshots ont été testées dans le cadre de la mise en place de sauvegardes MySQL. De plus, un travail considérable a été réalisé pour améliorer l'évolutivité — le système de fichiers s'est bien comporté lors de tests dans des stockages de 100 To et l'implémentation de Bcachefs dans un stockage d'1 Po est prévue prochainement. Un nouveau mode nocow a été ajouté pour désactiver le mécanisme de « copy-on-write » (nocow). Au cours de l'été, il est prévu de stabiliser l'implémentation des codes de correction d'erreurs et RAIDZ, ainsi que de résoudre les problèmes de forte consommation de mémoire lors de la récupération et de la vérification du système de fichiers avec l'outil fsck.
Dans les projets futurs, il est mentionné le souhait d'utiliser le langage Rust pour le développement de Bcachefs. Selon l'auteur de Bcachefs, il préfère programmer plutôt que déboguer le code, et maintenant il trouve insensé de coder en C alors qu'un meilleur choix est disponible. Rust est déjà utilisé dans Bcachefs pour certaines utilitaires exécutées en espace utilisateur. De plus, l'idée de réécrire progressivement Bcachefs en Rust est envisagée, car l'utilisation de ce langage permet d'économiser considérablement du temps de débogage.
En ce qui concerne la promotion de Bcachefs dans le noyau principal de Linux, le processus d'acceptation pourrait prendre du temps en raison de l'ampleur des changements (2500 patches et environ 90 000 lignes de code), qui sont difficiles à examiner. Pour accélérer l'examen, certains développeurs ont proposé de diviser la série de patches en parties plus petites et logiquement séparées. Lors de la discussion, certains participants ont également souligné le développement du projet par un seul développeur et le risque que le code ne soit plus maintenu si quelque chose devait arriver à ce développeur (deux employés de Red Hat manifestent un intérêt pour le projet, mais leur travail se limite actuellement à la correction de bogues).
Bcachefs se développe en utilisant des technologies déjà éprouvées lors de la création du dispositif de bloc Bcache, conçu pour mettre en cache l'accès aux disques durs lents sur des SSD rapides (intégré dans le noyau depuis la version 3.10). Dans Bcachefs, un mécanisme de Copy-on-Write (COW) est utilisé, où les modifications ne conduisent pas à la réécriture des données — un nouvel état est écrit à un nouvel emplacement, après quoi le pointeur de l'état actuel est modifié.
La caractéristique de Bcachefs est la prise en charge de la connexion de stockage à plusieurs couches, où le stockage est composé de plusieurs niveaux — la couche inférieure étant constituée des disques les plus rapides (SSD), utilisés pour le caching des données fréquemment utilisées, tandis que la couche supérieure est composée de disques plus volumineux et moins coûteux, garantissant le stockage des données moins sollicitées. Un caching en mode écriture différée (writeback) peut être appliqué entre les couches. Les disques peuvent être ajoutés et détachés dynamiquement de la partition sans arrêter l'utilisation du système de fichiers (les données migrent automatiquement).
Source : opennet.ru
