Promocja Bcachefs w ramach jądra Linux

Kent Overstreet, autor systemu cachowania bloków na dyskach SSD BCache, w swoim wystąpieniu na konferencji LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) podsumował wyniki prac nad wprowadzeniem systemu plików Bcachefs do głównego jądra Linuxa oraz przedstawił plany dalszego rozwoju tego FS. W maju zaproponowano zaktualizowany zestaw poprawek do recenzji i włączenia do głównego jądra Linuxa z realizacją FS Bcachefs. FS Bcachefs rozwija się już od około 10 lat. O gotowości do recenzji implementacji Bcachefs przed włączeniem do jądra ogłoszono już pod koniec 2020 roku, a w bieżącej wersji poprawek uwzględniono uwagi i niedociągnięcia z poprzedniej recenzji.

Celem opracowania Bcachefs jest osiągnięcie poziomu XFS pod względem wydajności, niezawodności i skalowalności, jednocześnie zapewniając dodatkowe funkcje charakterystyczne dla Btrfs i ZFS, takie jak możliwość łączenia kilku urządzeń w wolumin, wielowarstwowe konfiguracje magazynów, replikację (RAID 1/10), buforowanie, przezroczyste kompresowanie danych (tryby LZ4, gzip i ZSTD), migawki stanu (snapshots), weryfikację integralności za pomocą sum kontrolnych, możliwość przechowywania kodów korekcji błędów Reed-Solomona (RAID 5/6), przechowywanie informacji w zaszyfrowanej formie (wykorzystywane są ChaCha20 i Poly1305). Pod względem wydajności Bcachefs przewyższa Btrfs i inne FS oparte na mechanizmie Copy-on-Write, osiągając prędkość pracy zbliżoną do Ext4 i XFS.

Wśród ostatnich osiągnięć w rozwijaniu Bcachefs zauważalna jest stabilizacja realizacji zrzutów, które są dostępne do zapisu. W porównaniu do Btrfs, zrzuty w Bcachefs są teraz znacznie lepiej skalowalne i pozbawione problemów typowych dla Btrfs. W praktyce działanie zrzutów zostało przetestowane w kontekście organizacji kopii zapasowej MySQL. W Bcachefs również wykonano dużą pracę nad poprawą skalowalności — system plików dobrze sprawdził się w testach na pamięciach o rozmiarze 100 TB, a w najbliższej przyszłości planowane jest wdrożenie Bcachefs w pamięciach o wielkości 1 PB. Dodano nowy tryb nocow, aby wyłączyć mechanizm „copy-on-write” (nocow). Latem planuje się doprowadzić do stabilnego stanu realizację kodów korekcji błędów oraz RAIDZ, a także rozwiązać problemy z wysokim zużyciem pamięci podczas przywracania i sprawdzania systemu plików narzędziem fsck.

Jeśli chodzi o plany na przyszłość, wspomina się o chęci użycia języka Rust w rozwijaniu Bcachefs. Zdaniem autora Bcachefs, lubi programować, a nie debugować kod, i uważa, że pisanie kodu w języku C jest teraz nieuzasadnione, gdyż pojawiła się lepsza alternatywa. Rust jest już używany w Bcachefs do realizacji niektórych narzędzi uruchamianych w przestrzeni użytkownika. Co więcej, rozważana jest idea stopniowego przepisania Bcachefs w całości na Rust, ponieważ używanie tego języka znacząco oszczędza czas na debugowanie.

Jeśli chodzi o promowanie Bcachefs do głównego jądra Linux, proces akceptacji może się wydłużyć z powodu dość dużego rozmiaru zmian (2500 patchów i około 90 tysięcy linii kodu), co sprawia, że jest trudno to zrecenzować. Aby przyspieszyć recenzję, niektórzy deweloperzy zaproponowali rozdzielenie serii patchów na mniejsze i logicznie wydzielone części. W trakcie dyskusji niektórzy uczestnicy zwrócili również uwagę na rozwój projektu przez jednego dewelopera i zagrożenie, że kod może pozostać bez wsparcia, jeśli coś stanie się z jego twórcą (projektem interesują się dwaj pracownicy Red Hat, ale ich praca na razie ogranicza się do naprawy błędów).

Bcachefs rozwija się z wykorzystaniem technologii już przetestowanych przy opracowywaniu urządzenia blokowego Bcache, które jest przeznaczone do buforowania dostępu do wolnych dysków twardych na szybkich dyskach SSD (jest częścią jądra od wersji 3.10). W Bcachefs zastosowano mechanizm Copy-on-Write (COW), w którym zmiany nie skutkują nadpisywaniem danych — nowe stany są zapisywane w nowym miejscu, a następnie zmienia się wskaźnik aktualnego stanu.

Cechą Bcachefs jest wsparcie dla wielowarstwowego podłączenia nośników danych, w którym przechowywanie składa się z kilku warstw — do dolnej warstwy podłączane są najszybsze nośniki (SSD), które służą do buforowania często używanych danych, a górna warstwa składa się z bardziej pojemnych i tańszych dysków, które zapewniają przechowywanie mniej wymaganych danych. Między warstwami może być stosowane buforowanie w trybie opóźnionego zapisu (writeback). Nośniki można dynamicznie dodawać i odłączać od partycji bez zatrzymywania korzystania z systemu plików (dane migrują automatycznie).

Ź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