Bcachefs 1.33 : Diagnostics avancés, métriques en temps réel et optimisation des arbres B

Points clés:
  • Messages d'erreur détaillés : expliquent la cause, le type (matériel/logiciel) et la solution.
  • bcachefs fs top affiche désormais les vitesses de transfert en temps réel.
  • Fusion asynchrone des nœuds Btree pour améliorer les performances sous charge
  • Nouvelles options : mount_trusts_udev et writeback_timeout.
  • Réduction massive du nombre de goto dans le code (de 2500 à 600) en préparation de l'arrivée de Rust.
bcachefs

Bcachefs est un système de fichiers de copie sur écriture pour les systèmes d'exploitation basés sur Linux.

Il y a quelques jours, Kent Overstreet a annoncé la sortie de Bcachefs 1.33.0 , une nouvelle version du système de fichiers qui introduit des changements structurels profonds dans la gestion des données et l'architecture de son code source.

Cette mise à jour s'annonce comme l'une des plus importantes de ces deux dernières années, axée sur l'intégrité des métadonnées et la modernisation du code source C.

« Réconcilier » : Une nouvelle ère pour l’intégrité des données

La nouveauté la plus marquante, considérée comme le changement le plus important de ces deux dernières années, est l'introduction de la fonction de réconciliation (rebalance_v2) . Ce nouveau mécanisme remplace l'ancien système de « rééquilibrage » et remédie à l'une de ses principales limitations : le système peut désormais gérer et déplacer non seulement les données utilisateur, mais aussi les métadonnées du système de fichiers.

Rebalance_v2 agit de manière proactive et automatique. Si un nouveau disque est ajouté à une baie ou si les options de redondance sont modifiées, Bcachefs lance immédiatement la réplication et la correction des données ou métadonnées dégradées, en utilisant des index distincts pour prioriser les opérations critiques. Ceci garantit l'intégrité du système même lors d'opérations de maintenance intensives.

Nettoyage du code et préparation de Rust

En interne, la version 1.33.0 apporte une restructuration massive du code C afin de le rendre plus sûr et compatible avec une future implémentation dans Se reposerLe développeur a effectué un nettoyage en profondeur, réduisant ainsi le nombre d'instructions. goto de 2 500 à seulement 600, ce qui simplifie considérablement le flux logique du programme.

De plus, de nouvelles macros ont été introduites, telles que : DARRAY() y try()Ces fonctionnalités sont conçues pour imiter le comportement vectoriel dynamique et la gestion des erreurs de Rust et C++. Cela modernise non seulement le code existant, mais facilitera également sa portabilité et réduira la surface d'erreurs mémoire à l'avenir.

Amélioration des diagnostics et de la flexibilité de stockage

Conçue pour l'administration système, cette version améliore considérablement la clarté des messages d'erreur . Bcachefs peut désormais distinguer et indiquer si une panne est due à un bogue logiciel ou à un problème matériel, et même suggérer les étapes de récupération nécessaires. Ceci est essentiel pour éviter les erreurs de diagnostic, notamment l'incrimination du système de fichiers en cas de défaillance d'un disque.

Cette transparence s'étend à plusieurs niveaux :

  • Erreurs d'E/S détaillées : Lorsque la couche bloc signale une défaillance, Bcachefs transmet désormais le code spécifique (tel que BLK_STS_IOERR), permettant d'identifier si le disque physique est en cause.
  • Erreurs d'assemblage : Si des appareils sont manquants pour assembler un volume, le système indique désormais précisément quelle unité manque, en affichant son nom et son modèle en fonction de la dernière fois qu'elle a été vue.
  • Limites du taux d'erreur : Les limites entre les erreurs « logicielles » et « matérielles » ont été séparées, garantissant ainsi qu'une avalanche d'erreurs mineures ne masque pas une panne critique du disque.

De plus, la commande bcachefs fs top Cela s'est amélioré. Les compteurs internes affichent désormais les vitesses de transfert de données au lieu de simples valeurs statiques, ce qui facilite grandement la corrélation des événements (tels que data_update_fail) avec des baisses de performances en temps réel.

Optimisations des arbres B et nouvelles options de montage

En interne, les performances en cas de forte charge sont améliorées grâce à des modifications apportées à la gestion de l'arbre B. La fusion des nœuds vides s'effectue désormais de manière asynchrone, éliminant ainsi les goulots d'étranglement liés au tampon d'écriture. De plus, une passe de récupération optionnelle a été ajoutée. merge_btree_nodes, pour optimiser manuellement la structure de l'arbre si nécessaire.

Une autre fonctionnalité très pratique ajoutée est la possibilité de démarrer un système de fichiers avec la configuration replicas=2 sur un seul disqueCela permet aux utilisateurs de démarrer avec un seul disque en sachant que le système « doit » disposer d'une redondance ; dès qu'un deuxième disque est connecté, Bcachefs réplique automatiquement les données sans nécessiter d'intervention manuelle complexe.

Enfin, il convient de mentionner que la nouvelle version, déjà disponible pour des distributions telles que Debian, Fedora, Arch Linux et NixOS, nécessite un noyau Linux 6.16 ou supérieur et est distribuée en deux paquets fondamentaux : le module noyau (bcachefs-kernel-dkms) et les outils utilisateur (bcachefs-tools).


Ajouter comme source préférée dans Google