Kent Overstreet opublikował system plików Bcachefs 1.33.0. Wydanie zawiera dwa pakiety: bcachefs-kernel-dkms, który zawiera moduł jądra zbudowany z wykorzystaniem systemu Dynamic Kernel Module Support (DKMS), oraz bcachefs-tools, który zawiera narzędzie bcachefs działające w przestrzeni użytkownika, implementujące polecenia tworzenia (mkfs), montowania, przywracania i weryfikacji systemu plików. Pakiety są kompilowane dla Debian, Ubuntu, Fedora, openSUSE, NixOS i Arch LinuxModuł DKMS obsługuje pracę z kernelami Linux, począwszy od 6.16.
Nowa wersja dodaje funkcjonalność „reconcile” (rebalance_v2), która jest uważana za największą zmianę w systemie plików w ciągu ostatnich dwóch lat. W przeciwieństwie do poprzednio dostępnego trybu „rebalance”, mechanizm „reconcile” umożliwia rebalansowanie nie tylko danych (na przykład replikowanie wielu kopii na różne dyski), ale także metadanych systemu plików (na przykład w celu migracji metadanych po dodaniu kolejnego dysku do puli). Co więcej, reconcile obejmuje teraz wszystkie opcje wejścia/wyjścia, a nie tylko kopiowanie w tle i kompresję. Reconcile automatycznie uwzględnia również zmiany opcji lub ustawień urządzeń i natychmiast ponownie replikuje zdegradowane dane i metadane.
Reconcile używa oddzielnych indeksów do: operacji o wysokim priorytecie, optymalizacji przetwarzania danych na dyskach oraz danych zaplanowanych do przetwarzania, które są obecnie niedostępne (na przykład z powodu braku miejsca). Dodano obsługę tworzenia systemu plików na pojedynczym dysku w trybie podwójnej replikacji (replicas=2). W tej konfiguracji dodanie drugiego dysku spowoduje automatyczną replikację danych na dodany dysk, bez konieczności interakcji użytkownika.
Wśród innych zmian:
- Dodano polecenia „reconcile status” i „reconcile wait”. Dodano opcje montowania „mount_trusts_udev” i „writeback_timeout”. Polecenia „data rereplicate” i „data job drop_extra_replicas” zostały wycofane.
- Dodano tryb odzyskiwania „merge_btree_nodes”, który sprawdza wszystkie węzły w strukturach btree podlegających operacjom scalania.
- Kod został przygotowany do przejścia na język Rust. Liczba operacji goto użytych w kodzie została zmniejszona z 2500 do 600. Otwarte wektory zostały zastąpione makrem DARRAY(), które zapewnia funkcjonalność podobną do tablic dynamicznych w C++ i Rust. Obsługa błędów odbywa się za pomocą makra try(), zapożyczonego z Rust.
- Polecenie „bcachefs fs usage” teraz prawidłowo raportuje obniżoną jakość danych.
- Przeprojektowano obsługę liczników wyświetlanych przez polecenie „bcachefs fs top”. Uproszczono dodawanie nowych liczników i wprowadzono możliwość konwersji punktów śledzenia na bufory wydruku.
- Poprawiono jakość komunikatów o błędach. Zawierają one teraz informacje o typach awarii (oprogramowania lub sprzętu), działaniach mających na celu rozwiązanie błędu (np. uruchomienie procesu odzyskiwania), kodach błędów wejścia/wyjścia otrzymanych z urządzeń blokowych oraz brakujących urządzeniach. Podczas skanowania struktur btree wyświetlana jest teraz informacja o możliwości odzyskania problematycznych węzłów.
- Podczas zapisu do dziennika dodano możliwość oddzielnego definiowania limitów intensywności wyjściowej dla różnych typów błędów. Limity te zapobiegają utracie komunikatów o pojedynczych problemach sprzętowych wśród dużej liczby komunikatów o błędach oprogramowania.
- Dodano wskaźniki postępu dla wszystkich etapów odzyskiwania.
Projekt Bcachefs opracowuje system plików, którego celem jest połączenie zaawansowanej funkcjonalności Btrfs i ZFS z wydajnością, niezawodnością i skalowalnością XFS. Bcachefs obsługuje takie funkcje, jak obsługa wielu urządzeń na partycję, wielowarstwowe układy dysków (dolna warstwa z często używanymi danymi opartymi na szybkich dyskach SSD, a górna warstwa z rzadziej używanymi danymi z dysków twardych), replikacja (RAID 1/10), buforowanie, transparentna kompresja danych (tryby LZ4, gzip i ZSTD), wycinki stanu (migawki), weryfikacja integralności za pomocą sum kontrolnych, możliwość przechowywania kodów korekcji błędów Reeda-Solomona (RAID 5/6) oraz szyfrowane przechowywanie danych (z wykorzystaniem ChaCha20 i Poly1305). Pod względem wydajności Bcachefs przewyższa Btrfs i inne systemy plików oparte na mechanizmie kopiowania przy zapisie (Copy-on-Write) i charakteryzuje się szybkością działania zbliżoną do Ext4 i XFS.
Źródło: opennet.ru
