Kent Overstreet heeft versie 1.38.6 van het Bcachefs-bestandssysteem uitgebracht en heeft officieel de experimentele ontwikkelingsstatus van het project opgeheven. Onlangs is het aantal binnenkomende meldingen over problemen afgenomen, en de ontdekte bugs zijn minder ernstig en complex geworden.
De release omvat twee pakketten: bcachefs-kernel-dkms met een kernelmodule die wordt gebouwd met behulp van het DKMS (Dynamic Kernel Module Support) systeem, en bcachefs-tools met het gebruikersruimteprogramma bcachefs, dat opdrachten implementeert voor het aanmaken (mkfs), monteren, herstellen en controleren van het bestandssysteem. De pakketten zijn samengesteld voor Debian, Ubuntu, Arch Linux en worden verwacht voor Fedora, openSUSE en NixOS. De DKMS-module ondersteunt kernels van Linux vanaf versie 6.16.
Ondanks het onopvallende versienummer, dat is veroorzaakt door het ontbreken van wijzigingen in het schijfformaat, bevat versie 1.38.6 een aantal belangrijke prestatie-optimalisaties. In de code voor het werken met structuren in btree-formaat, logging en de werking van het bestandssysteem zijn ongeveer 200 wijzigingen aangebracht die de prestaties verbeteren. De logica voor transactiebevestiging is gecomprimeerd tot 4KB machinecode, en er zijn optimalisaties toegevoegd om het optreden van concurrentieblokkeringen ('lock contention') bij het werken met btree te voorkomen, terwijl het proces van het flushen van het logboek volledig is vrijgesteld van blokkeringsproblemen.
Op de server Met een 48-core AMD CPU kon Bcachefs een doorvoersnelheid van 16,5 GB/sec behalen bij het draaien van 48 dbench-klanten (ter vergelijking, XFS behaalde 16 GB/sec). Patches zijn voorbereid maar uitgesteld tot de volgende release, die de prestaties in dbench-tests naar 19 GB/sec moeten brengen (deze patches vereisen extra testen of wijzigingen in het schijfformaat). Tijdens het testen met de fio-tool bedroeg de doorvoersnelheid van Bcachefs 700 IOPS bij het uitvoeren van willekeurige schrijfbewerkingen met 4KB-blokken (XFS toont in deze test een miljoen IOPS, waarbij XFS beperkt is door de remapping van blokken, terwijl Bcachefs de volledige Copy-on-Write (CoW) cyclus afhandelt met checksum-controles en updates van de btree-structuur).
Naast optimalisaties in de release van Bcachefs 1.38.6 is ondersteuning gerealiseerd voor het aansluiten van tot 255 apparaten op één bestandssysteem. In de repository apt.bcachefs.org zijn pakketten voor Ubuntu 26.04 in ontwikkeling. De infrastructuur voor continue integratie en geautomatiseerd testen is overgezet naar het controleren van builds op basis van DKMS. In de komende maanden zal de focus liggen op het optimaliseren van de werking van het bestandssysteem met meerdere opslagapparaten.
Daarnaast gaat het werk aan de herschrijving van de code in de programmeertaal Rust door. Er wordt opgemerkt dat de ondersteuning voor Rust in de kernel een mijlpaal heeft bereikt — alle belangrijke distributies hebben standaard de configuratie CONFIG_RUST geactiveerd bij het maken van de kernelpakketten 7.0 om ondersteuning voor Rust in te schakelen. In het Bcachefs-project zijn al een reeks hulpprogramma’s in Rust herschreven.
bcachefs-tools, dat in de gebruikersruimte draait, inclusief de implementatie van de API voor het werken met btree-structuren. In de volgende release is het de bedoeling om de voorbereide wrappers in Rust in de DKMS-kernelmodule te integreren en te starten met de herschrijving van de basiscode van Bcachefs. Verwacht wordt dat het gebruik van Rust de flexibiliteit, stabiliteit en gebruiksvriendelijkheid van de code zal vergroten, het project interessanter zal maken voor jonge ingenieurs en in de toekomst formele verificatie van betrouwbaarheid mogelijk zal maken.
Het Bcachefs-project ontwikkelt een bestandssysteem dat gericht is op het combineren van de uitgebreide functionaliteit van Btrfs en ZFS met de prestaties, betrouwbaarheid en schaalbaarheid die kenmerkend zijn voor XFS. Bcachefs ondersteunt functies zoals het opnemen van meerdere apparaten in een partitie, gelaagde opslaglay-outs (de onderste laag met veelgebruikte gegevens op snelle SSD's en de bovenste laag met minder gevraagde gegevens van harde schijven), replicatie (RAID 1/10), caching, transparante gegevenscompressie (modi LZ4, gzip en ZSTD), statusinstanties (snapshots), integriteitsverificatie via controle-sommen, foutcorrectiecodes, en het opslaan van informatie in versleutelde vorm (met ChaCha20 en Poly1305).
Belangrijke vernieuwingen die in de afgelopen maanden aan Bcachefs zijn toegevoegd, zijn onder meer:
- Het mechanisme "reconcile" (rebalance_v2), dat in tegenstelling tot de modus "rebalance" het mogelijk maakt om niet alleen data (bijvoorbeeld replicatie van meerdere kopieën naar verschillende opslagapparaten) maar ook metadata in het bestandssysteem te herbalanceer (bijvoorbeeld voor het verplaatsen van metadata na de toevoeging van een extra opslagapparaat aan de pool). Reconcile is toepasbaar op alle invoer-/uitvoerbewerkingen en niet alleen op achtergrondkopie- en compressiebewerkingen. In reconcile worden wijzigingen in de apparaatinstellingen automatisch in aanmerking genomen en worden gedegradeerde gegevens en metadata onmiddellijk opnieuw gerepliceerd.
- Ondersteuning voor foutcorrectiecodes die beschadigde gegevens kunnen herstellen, vergelijkbaar met RAID 5/6. De implementatie is gebaseerd op Reed-Solomon-codering, die in staat is om tot N fouten in de stripe te corrigeren met N redundante blokken. Automatisch herstel van gedegradeerde stripes is mogelijk. De mogelijkheid om herstelcodes toe te passen is van toepassing in configuraties met schijven van verschillende formaten.
Bron: opennet.ru
