Promowanie Bcachefs do jądra Linuksa

Kent Overstreet, autor systemu buforowania urządzeń blokowych BCache SSD, który jest częścią jądra Linuksa, podsumował wyniki prac nad promocją systemu plików Bcachefs w swoim wystąpieniu na konferencji LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) do głównego składu jądra Linuksa i mówił o planach dalszego rozwoju tego FS. W maju zaktualizowany zestaw poprawek z implementacją Bcachefs FS został zaproponowany do przeglądu i włączenia do głównego składu jądra Linuksa. FS Bcachefs rozwija się od około 10 lat. Gotowość do przeglądu wdrożenia Bcachefs przed włączeniem do rdzenia została ogłoszona pod koniec 2020 roku, a obecna wersja łatek uwzględnia uwagi i niedociągnięcia zidentyfikowane podczas poprzedniego przeglądu.

Celem rozwoju Bcachefs jest osiągnięcie poziomu XFS pod względem wydajności, niezawodności i skalowalności, przy jednoczesnym zapewnieniu dodatkowych funkcji charakterystycznych dla Btrfs i ZFS, takich jak uwzględnienie wielu urządzeń w partycji, wielowarstwowe układy pamięci masowej, replikacja (RAID 1/10), buforowanie, przezroczysta 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), szyfrowane przechowywanie informacji (ChaCha20 i Poly1305 są używane). Pod względem wydajności Bcachefs wyprzedza Btrfs i inne systemy plików oparte na mechanizmie Copy-on-Write i wykazuje wydajność zbliżoną do Ext4 i XFS.

Z najnowszych osiągnięć w rozwoju Bcachefs odnotowuje się stabilizację implementacji migawek dostępnych do zapisu. W porównaniu z Btrfs migawki w Bcachefs są teraz znacznie lepiej skalowalne i wolne od problemów związanych z Btrfs. W praktyce działanie migawek zostało przetestowane podczas organizowania kopii zapasowych MySQL. Bcachefs wykonał również wiele pracy, aby poprawić skalowalność - system plików wypadł dobrze w testach na 100 TB pamięci masowej, a oczekuje się, że Bcachefs zostanie zaimplementowany w pamięci masowej 1 PB w najbliższej przyszłości. Dodano nowy tryb nocow, aby wyłączyć mechanizm „copy-on-write” (nocow). Latem planują doprowadzić implementację kodów korekcji błędów i RAIDZ do stabilnego stanu, a także rozwiązać problemy z dużym zużyciem pamięci podczas przywracania i sprawdzania systemów plików za pomocą narzędzia fsck.

Z planów na przyszłość wspomina się o chęci wykorzystania języka Rust w rozwoju Bcachefs. Według autora Bcachefs, lubi kodować, a nie debugować kod, a teraz szaleństwem jest pisanie kodu w C, kiedy jest lepsza opcja. Rust jest już zaangażowany w Bcachefs we wdrażanie niektórych narzędzi przestrzeni użytkownika. Co więcej, pojawia się pomysł, aby stopniowo całkowicie przepisać Bcachefs w Rust, ponieważ użycie tego języka znacznie oszczędza czas debugowania.

Jeśli chodzi o przeniesienie Bcachefs do głównego nurtu jądra Linuksa, proces adopcji może być opóźniony ze względu na duży rozmiar zmian (2500 łatek i około 90 tysięcy linii kodu), który jest trudny do przeglądu. Aby przyspieszyć przegląd, niektórzy programiści zasugerowali podzielenie serii poprawek na mniejsze i bardziej logicznie oddzielone części. Podczas dyskusji niektórzy uczestnicy zwracali również uwagę na rozwój projektu przez jednego programistę i niebezpieczeństwo pozostawienia kodu bez opieki, gdyby coś się stało jego programiście (dwóch pracowników Red Hat jest zainteresowanych projektem, ale ich praca jest nadal ograniczone poprawki błędów).

Bcachefs jest rozwijany przy użyciu technologii już przetestowanych przy opracowywaniu urządzenia blokowego Bcache, zaprojektowanego do buforowania dostępu do wolnych dysków twardych na szybkich dyskach SSD (zawartych w jądrze od wersji 3.10). Bcachefs wykorzystuje mechanizm Copy-on-Write (COW), w którym zmiany nie prowadzą do nadpisania danych - nowy stan zapisywany jest w nowym miejscu, po czym zmienia się wskaźnik stanu bieżącego.

Cechą Bcachefs jest obsługa wielowarstwowego łączenia dysków, w którym pamięć masowa składa się z kilku warstw - najszybsze dyski (SSD) są połączone z dolną warstwą, która służy do buforowania często używanych danych, a warstwa górna tworzy bardziej pojemne i tańsze dyski, które przechowują mniej pożądanych danych. Buforowanie zapisu zwrotnego może być używane między warstwami. Dyski można dynamicznie dodawać i odłączać od partycji bez przerywania korzystania z systemu plików (dane migrują automatycznie).

Źródło: opennet.ru

Dodaj komentarz