Bcachefs 1.33: zaawansowana diagnostyka, metryki w czasie rzeczywistym i optymalizacja Btree

Kluczowe punkty:
  • Szczegółowe komunikaty o błędach: wyjaśnienie przyczyny, typu (twardy/miękki) i rozwiązania.
  • bcachefs fs top wyświetla teraz prędkości transferu w czasie rzeczywistym.
  • Asynchroniczne łączenie węzłów Btree w celu poprawy wydajności pod obciążeniem
  • Nowe opcje mount_trusts_udev i writeback_timeout.
  • Znaczna redukcja liczby instrukcji goto w kodzie (z 2500 do 600) w ramach przygotowań do wprowadzenia języka Rust.
bcachefs

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).


Dodaj jako preferowane źródło w Google