System plików Bcachefs oficjalnie przestał być eksperymentalny

Kent Overstreet opublikował wydanie systemu plików Bcachefs 1.38.6 i ogłosił oficjalne zakończenie oznaczenia projektu jako eksperymentalnego. W ostatnim czasie liczba zgłaszanych problemów znacznie się zmniejszyła, a występujące błędy stały się mniej poważne i złożone.

Wydanie obejmuje dwa pakiety: bcachefs-kernel-dkms z modułem jądra, kompilowanym przy pomocy systemu DKMS (Dynamic Kernel Module Support), oraz bcachefs-tools z działającym w przestrzeni użytkownika narzędziem bcachefs, które implementuje polecenia do tworzenia (mkfs), montowania, przywracania i sprawdzania systemu plików. Pakiety są dostępne dla Debian, Ubuntu, Arch Linux i oczekiwane dla Fedora, openSUSE oraz NixOS. Moduł DKMS wspiera jądra Linux od wersji 6.16.

Pomimo niepozornej numeracji wersji, spowodowanej brakiem zmian w formacie dysku, wydanie 1.38.6 zawiera szereg poważnych optymalizacji wydajności. W kodzie do obsługi struktur w formacie btree, logowania i zapewnienia funkcjonowania systemu plików wprowadzono około 200 zmian, które zwiększają wydajność. Logika potwierdzania transakcji została zredukowana do 4KB kodu maszynowego, dodano optymalizacje, aby wyeliminować występowanie blokad rywalizujących („lock contention”) podczas pracy z btree, a proces wyczyszczenia dziennika (journal flush) całkowicie pozbył się blokad.

Na serwerze Na 48-rdzeniowym procesorze AMD w Bcachefs udało się uzyskać przepustowość 16,5 GB/s przy uruchamianiu 48 klientów dbench (dla porównania w XFS uzyskano wynik 16 GB/s). Przygotowane, ale odkładane do następnego wydania, patche, które zwiększają wydajność w testach dbench do 19 GB/s (te patche wymagają dodatkowego testowania lub zmiany formatu dysku). Podczas testowania narzędziem fio wydajność Bcachefs wyniosła 700 operacji na sekundę przy wykonywaniu operacji losowego zapisu blokami 4-kilobajtowymi (XFS w tym teście osiąga milion operacji na sekundę, podczas gdy XFS ogranicza się do remapingu bloków, a Bcachefs przetwarza pełen cykl CoW (Copy-on-Write) z weryfikacją sum kontrolnych i aktualizacją struktury btree).

Oprócz optymalizacji w wydaniu Bcachefs 1.38.6 wprowadzono wsparcie dla podłączenia do 255 urządzeń do jednego systemu plików. W repozytorium apt.bcachefs.org rozpoczęto tworzenie pakietów dla Ubuntu 26.04. Infrastruktura ciągłej integracji i zautomatyzowanego testowania została przeniesiona na weryfikację kompilacji opartych na DKMS. W ciągu najbliższych kilku miesięcy planowane jest skupienie się na optymalizacji działania systemu plików z wieloma urządzeniami pamięci masowej.

Ponadto trwa praca nad przepisaniem kodu w języku Rust. Zauważono, że wsparcie dla Rust w jądrze osiągnęło znaczący moment — wszystkie istotne dystrybucje przy tworzeniu pakietów z jądrem 7.0 domyślnie aktywowały ustawienie CONFIG_RUST, aby zbudować jądro z obsługą Rust. W projekcie Bcachefs na Rust przepisano już zestaw narzędzi.
bcachefs-tools, uruchamiany w przestrzeni użytkownika, w tym wdrożenie API do pracy ze strukturami btree. W następnej wersji planowane jest zintegrowanie przygotowanych powiązań na Rust w module jądra DKMS i rozpoczęcie przepisywania podstawowego kodu Bcachefs. Zakłada się, że użycie Rust zwiększy elastyczność, stabilność i wygodę pracy z kodem, uczyni projekt bardziej interesującym dla młodych inżynierów i pozwoli w przyszłości na realizację formalnej weryfikacji niezawodności.

Projekt Bcachefs rozwija system plików, który łączy zaawansowaną funkcjonalność typową dla Btrfs i ZFS oraz poziom wydajności, niezawodności i skalowalności charakterystyczny dla XFS. Bcachefs obsługuje takie funkcje, jak dołączenie do partycji wielu urządzeń, wielowarstwowe rozmieszczenie nośników (dolna warstwa z często używanymi danymi na szybkich SSD, a górna warstwa z mniej cenionymi danymi z dysków twardych), replikacja (RAID 1/10), buforowanie, przezroczysta kompresja danych (tryby LZ4, gzip i ZSTD), migawki stanu, weryfikacja integralności poprzez sumy kontrolne, kody korekcji błędów, przechowywanie informacji w zaszyfrowanej formie (używane są ChaCha20 i Poly1305).

Wśród istotnych nowości, które dodano do Bcachefs w ostatnich miesiącach, wymienia się:

  • Mechanizm „reconcile” (rebalance_v2), który w przeciwieństwie do trybu „rebalance” pozwala na dokonanie rebalansowania nie tylko danych (np. replikacja wielu kopii na różne nośniki), ale także metadanych w systemie plików (np. przenoszenie metadanych po dodaniu dodatkowego nośnika do puli). Reconcile jest stosowany we wszystkich operacjach wejścia/wyjścia, a nie tylko w operacjach kopiowania w tle i kompresji. W reconcile automatycznie uwzględniane są zmiany w ustawieniach urządzeń, a natychmiast replikowane są także dane i metadane, które uległy degradacji.
  • Wsparcie dla kodów korekcji błędów, które pozwalają na odzyskiwanie uszkodzonych danych na zasadzie podobnej do RAID 5/6. Implementacja opiera się na kodowaniu Reed-Solomona, które jest w stanie naprawić do N błędów w strajpie (stripe) przy użyciu N zbędnych bloków. Zapewnione jest automatyczne przywracanie degradujących się strajpów. Możliwość zastosowania kodów odzyskiwania jest dostępna w konfiguracjach z nośnikami o różnej wielkości.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster