Kent Overstreet har offentliggjort udgivelsen af filsystemet Bcachefs 1.38.6 og annonceret den officielle fjernelse af projektets eksperimentelle udviklingsmærke. I den seneste tid er antallet af rapporter om problemer faldet, og de fejl, der opdages, er blevet mindre alvorlige og komplekse.
Udgivelsen dækker over to pakker: bcachefs-kernel-dkms med en kernelmodul, der kompileres ved hjælp af DKMS (Dynamic Kernel Module Support), og bcachefs-tools med det brugerpladsbaserede værktøj bcachefs, der implementerer kommandoer til oprettelse (mkfs), montering, gendannelse og kontrol af FS. Pakkerne er samlet til Debian, Ubuntu, Arch Linux og forventes for Fedora, openSUSE og NixOS. DKMS-modulet understøtter arbejde med Linux-kerner fra version 6.16.
På trods af det ubetydelige versionsnummer, der skyldes fraværet af ændringer i diskformatet, inkluderer version 1.38.6 en række betydelige ydeevneoptimeringer. Der er foretaget omkring 200 ændringer i koden til arbejdet med strukturer i btree-format, journalisering og sikring af filsystemets funktion. Logikken til bekræftelse af transaktioner er komprimeret til 4KB maskinkode, optimeringer er tilføjet for at undgå opståen af konkurrerende låsninger ('lock contention') ved arbejde med btree, og processen til at nulstille journalstatus (journal flush) er helt frigjort fra låsninger.
På serveren Med en 48-core AMD CPU har Bcachefs opnået en båndbredde på 16,5 GB/sec ved kørsel af 48 dbench-klienter (til sammenligning opnåede XFS et resultat på 16 GB/sec). Der er forberedt, men udsat til næste udgivelse, patches der bringer ydeevnen i dbench-tests op til 19 GB/sec (disse patches kræver yderligere testning eller ændring af diskformatet). Ved test med værktøjet fio var Bcachefs' ydeevne 700 operationer pr. sekund ved udførelse af tilfældige skriveoperationer med 4KB blokke (XFS viser i denne test en million operationer pr. sekund, mens XFS er begrænset af blokremapping, og Bcachefs håndterer hele cyklus af CoW (Copy-on-Write) med kontrolsumkontrol og opdatering af btree-strukturen).
Udover optimeringerne i udgivelsen af Bcachefs 1.38.6 er der implementeret understøttelse til tilslutning af op til 255 enheder til et enkelt filsystem. Pakker til Ubuntu 26.04 er begyndt at blive oprettet i repositoriet apt.bcachefs.org. Infrastrukturen for kontinuerlig integration og automatiseret testning er blevet overført til at verificere bygninger baseret på DKMS. I de næste par måneder planlægges det at fokusere på optimering af filsystemets arbejde med flere opbevaringsenheder.
Derudover fortsætter arbejdet med at omskrive koden i Rust. Det bemærkes, at understøttelsen af Rust i kernen har nået et betydningsfuldt punkt — alle større distributioner har, ved oprettelse af pakker med kerne 7.0, som standard aktiveret indstillingen CONFIG_RUST til at kompilere kernen med Rust-understøttelse. I Bcachefs-projektet er et sæt værktøjer allerede omskrevet til Rust.
bcachefs-tools, som kører i brugerrum, inklusive implementering af API til at arbejde med btree-strukturer. I den næste udgivelse planlægges det at integrere de forberedte bindinger på Rust i DKMS-modulet i kernen og begynde at omskrive basiskoden for Bcachefs. Det forventes, at brugen af Rust vil øge fleksibiliteten, stabiliteten og brugervenligheden af koden, gøre projektet mere interessant for unge ingeniører og i fremtiden muliggøre formel verifikation af pålidelighed.
Bcachefs-projektet udvikler et filsystem, der sigter mod at kombinere den udvidede funktionalitet, der er karakteristisk for Btrfs og ZFS, med det niveau af ydeevne, pålidelighed og skalerbarhed, som er typisk for XFS. Bcachefs understøtter funktioner som mulighed for at tilslutte flere enheder til et partition, lagdelte lagringstypologier (det nederste lag med ofte brugte data på hurtige SSD'er og det øverste lag med mindre efterspurgte data fra harddiske), replikation (RAID 1/10), caching, gennemsigtig datakomprimering (tilstande LZ4, gzip og ZSTD), snapshots, integritetsverifikation ved hjælp af kontrolsummer, fejlkorrektion og opbevaring af information i krypteret form (der anvendes ChaCha20 og Poly1305).
Blandt de væsentlige nyheder, der er blevet tilføjet til Bcachefs i de seneste måneder, nævnes:
- Reconcile-mekanismen (rebalance_v2), som i modsætning til "rebalance"-tilstand giver mulighed for at udføre rebalancering ikke kun af data (f.eks. replikering af flere kopier på forskellige lagringsenheder), men også af metedata i filsystemet (f.eks. til overførsel af metedata efter tilføjelse af en ekstra lagringsenhed til puljen). Reconcile er anvendelig for alle input/output-operationer, ikke kun for baggrundskopierings- og komprimeringsoperationer. I reconcile tages automatisk ændringer i enhedens indstillinger i betragtning, og degraderede data og metadatat bliver straks replikeret på ny.
- Understøttelse af fejlkorrektionskoder, der gør det muligt at gendanne beskadigede data på en måde, der ligner RAID 5/6. Implementeringen er baseret på Reed-Solomon-kodning, som kan rette op til N fejl i en stripe, hvis der er N redundante blokke. Automatisk gendannelse af degraderede striber er sikret. Muligheden for at anvende gendannelseskoder er anvendelig i konfigurationer med lagringsenheder af forskellig størrelse.
Kilde: opennet.ru
