Bcachefs to system plików kopiowania przy zapisie dla systemów operacyjnych opartych na systemie Linux.
Kilka dni temu Kent Overstreet ogłosił wydanie Bcachefs 1.33.0 , nowej wersji systemu plików, która wprowadza głębokie zmiany strukturalne w zarządzaniu danymi i architekturze kodu źródłowego.
Aktualizacja ta zapowiada się jako jedna z najważniejszych w ciągu ostatnich dwóch lat, gdyż skupia się na integralności metadanych i modernizacji bazy kodu C.
„Pojednanie”: Nowa era integralności danych
Najbardziej znaczącą nowością, opisywaną jako najważniejsza zmiana w ciągu ostatnich dwóch lat, jest wprowadzenie funkcji uzgadniania (rebalance_v2) . Ten nowy mechanizm zastępuje stary system „rebalansowania” i eliminuje jedno z jego głównych ograniczeń: system może teraz zarządzać i przenosić nie tylko dane użytkowników, ale także metadane systemu plików.
Rebalance_v2 działa proaktywnie i automatycznie. W przypadku dodania nowego dysku do macierzy lub zmiany opcji redundancji, Bcachefs natychmiast rozpocznie replikację i naprawę wszelkich zdegradowanych danych lub metadanych, używając oddzielnych indeksów do priorytetyzacji operacji krytycznych. Zapewnia to integralność systemu nawet podczas intensywnych prac konserwacyjnych.
Czyszczenie kodu i przygotowanie Rust
Wersja 1.33.0 wprowadza gruntowną przebudowę kodu C, aby uczynić go bezpieczniejszym i bardziej kompatybilnym z przyszłą implementacją w RdzaDeweloper przeprowadził gruntowne czyszczenie, redukując liczbę oświadczeń. goto z 2.500 do zaledwie 600, co znacznie upraszcza logiczny przebieg programu.
Ponadto wprowadzono nowe makra, takie jak: DARRAY() y try()Zostały one zaprojektowane tak, aby naśladować dynamiczne zachowanie wektorów i obsługę błędów w Rust i C++. To nie tylko unowocześnia obecny kod, ale także ułatwia przenośność i zmniejsza ryzyko wystąpienia błędów pamięci w przyszłości.
Ulepszona diagnostyka i elastyczność przechowywania
Z myślą o administracji systemem, ta wersja znacząco poprawia czytelność komunikatów o błędach . Bcachefs potrafi teraz odróżnić i zakomunikować, czy awaria jest spowodowana błędem oprogramowania, czy fizycznym problemem sprzętowym, sugerując nawet niezbędne kroki naprawcze. Jest to kluczowe dla uniknięcia błędnych diagnoz, w których system plików zostaje obwiniony za awarię dysku.
Przejrzystość ta rozciąga się na kilka poziomów:
- Szczegółowe błędy wejścia/wyjścia: Gdy warstwa blokowa zgłasza awarię, Bcachefs przesyła teraz konkretny kod (taki jak
BLK_STS_IOERR), co pomaga ustalić, czy winowajcą jest dysk fizyczny. - Błędy montażu: Jeśli do zmontowania woluminu brakuje urządzeń, system teraz wskazuje dokładnie, którego urządzenia brakuje, wyświetlając jego nazwę i model na podstawie czasu, kiedy był ostatnio widziany.
- Limity współczynnika błędów: Rozróżniono błędy „miękkie” (oprogramowanie) i „twarde” (sprzęt), dzięki czemu mnóstwo drobnych błędów nie zamaskuje poważnej awarii dysku.
Dodatkowo polecenie bcachefs fs top Zostało to ulepszone. Wewnętrzne liczniki wyświetlają teraz prędkości transferu danych zamiast tylko statycznych liczb, co znacznie ułatwia korelację zdarzeń (takich jak data_update_fail) ze spadkiem wydajności w czasie rzeczywistym.
Optymalizacje w Btrees i nowe opcje montażu
Pod maską, wydajność pod dużym obciążeniem została poprawiona dzięki zmianom w zarządzaniu drzewem B. Scalanie pustych węzłów odbywa się teraz asynchronicznie, eliminując wąskie gardła w buforze zapisu. Dodatkowo dodano opcjonalny przebieg odzyskiwania. merge_btree_nodes, aby w razie potrzeby ręcznie zoptymalizować strukturę drzewa.
Kolejną bardzo praktyczną dodatkową funkcją jest możliwość uruchomienia systemu plików z konfiguracją replicas=2 na jednym dyskuDzięki temu użytkownicy mogą zacząć od pojedynczego dysku, wiedząc, że system „musi” mieć redundancję; po podłączeniu drugiego dysku Bcachefs automatycznie replikuje dane, bez konieczności skomplikowanej interwencji ręcznej.
Na koniec warto wspomnieć, że nowa wersja, dostępna już dla dystrybucji takich jak Debian, Fedora, Arch Linux i NixOS, wymaga jądra Linux 6.16 lub nowszego i jest dystrybuowana w dwóch podstawowych pakietach: module jądra (bcachefs-kernel-dkms) oraz narzędziach użytkownika (bcachefs-tools).