Dosłownie w ostatnich dniach wydano świeżą stabilną wersję ZFSonLinux, projektu, który stał się centralnym punktem w rozwoju OpenZFS. Żegnaj, OpenSolaris, witaj w okrutnym świecie niekompatybilnym GPL-CDDL Linuxa.

Poniżej przegląd najciekawszych rzeczy (no cóż, 2200 commitów!), a na deser — trochę intryg.
Nowe funkcje
Oczywiście, najbardziej oczekiwaną — natywne szyfrowanie. Teraz można zaszyfrować tylko potrzebne zbiory danych wbudowanym w ZFS szyfrowaniem i (moim zdaniem — co najważniejsze) — możesz wysyłać zaszyfrowane dane przez zfs send i BEZ odszyfrowania sprawdzać integralność danych wbudowanymi środkami; wszystkie możliwości zachowania integralności danych ZFS będą na wyciągnięcie ręki!
Następnie, pod względem ważności, warto wspomnieć o długo oczekiwanym TRIM. Tak, bardzo długo zajęło to dotarcie do produkcji. Częściowo dlatego, że dla systemów plikowych CoW problem z wyczerpaniem SSD nie jest tak krytyczny. Ale teraz wszyscy możemy być spokojni — zpool trim uratowało nasze delikatne pamięci flash.
Teraz można usuwanie przypadkowo dodanych array w dev z puli (ale tylko, jeśli jest to sparse lub mirror). Przydatna drobnostka.
Dalej w naszym zestawieniu — punkty kontrolne puli. Krótko mówiąc — snapshoty dla całego stanu puli, ALE dające możliwość przywrócenia zmian nie tylko danych, ale również włączonych w puli funkcji i zmian w strukturze. Jeszcze jedna opcja na zabezpieczenie.
Inicjalizacja puli — wypełnienie leżącego poniżej magazynu zerami. Przydatne w środowiskach z dyskami thin provisioned dla jawnego przydziału przestrzeni i wykluczenia niespodziewanych spadków wydajności w przyszłości.
Księgowość projektu i kwoty — w już istniejącym mechanizmie kwot teraz możliwe jest wykorzystanie podziału na projekty.
Programy kanałowe — możliwość realizacji zadań administracyjnych atomowo za pomocą skryptów Lua. Istnieją limity na czas wykonania i pamięć. Jeśli zajmujesz się automatyzacją — to jest dla Ciebie.
Direct IO — dla prostoty zrealizowano pracę Direct IO, nic wewnątrz się nie zmieniło (po prostu wywołania odbywają się maksymalnie z pominięciem pamięci podręcznej), więc oprogramowanie, które chce działać w tym trybie, nie będzie się frustrować.
Projekt Pyzfs wdrożono do głównego repozytorium i wzięto pod skrzydła projektu ZFSonLinux. Teraz jest więcej narzędzi do zarządzania z poziomu Pythona (no i spokojniej będzie z wsparciem modułu). Również wiele skryptów Pythona zostało dostosowanych do python3.
A teraz coś pysznego — wydajność
Teraz podczas operacji scrub i resilver najpierw odczytywane są metadane, a dopiero potem w maksymalnie sekwencyjnym formacie — dane. W ten sposób przywracanie macierzy oraz sprawdzanie integralności przebiega z maksymalną prędkością.
Klasy alokacji — w vdev macierzach pojawił się typ nośników, teraz można wydzielić przechowywanie metadanych/tabel deduplikacji (DDT)/bloków danych poniżej X Kb na oddzielną macierz vdev z bardziej wydajnych dysków. Więcej prędkości dla boga prędkości! (a na właściwy temat — ta możliwość bardzo się przyda w nadchodzących ).
Wiele poleceń administracyjnych teraz działa szybciej dzięki punktowemu buforowaniu metadanych (na przykład, zfs list, zfs get).
Proces alokacji danych został zrównolegleniony, teraz dla każdego segmentu wolnego miejsca (metaslab) tworzonych jest kilku alokatorów. Z NVME oczywiście wszystkiego nie wyciśniemy, ale będzie lepiej.
Opóźnione przywracanie integralności macierzy pozwoli uniknąć obciążania macierzy równoczesną przebudową kilku dysków, a będzie to robić sekwencyjnie. W ten sposób zmniejszy się wpływ na wydajność i czas przebudowy.
Podczas importowania pul z dużą ilością woluminów zwiększono szybkość ich rejestracji w systemie.
Również QAT teraz umożliwia zrzucenie na niego obliczeń szyfrowania i sum kontrolnych.
No i na deser — intrygi
Chociaż ZFSonLinux szybko dodaje wsparcie dla nowych rdzeni Linux (obecnie obsługiwane wersje 2.6.32 — 5.1*), konserwatorzy jądra wykazują wyraźny brak zainteresowania pomocą dla modułów zewnętrznych („ — greg k-h”). Tak, wymagane do efektywnej pracy wywołania jądra w gałęzi 5.0 . W jądrze z tym łatką wydajność ZFS będzie znacznie gorsza. Ratunkiem jest to, że tę funkcjonalność można zrealizować po stronie modułu, co najprawdopodobniej zostanie zrobione. A na razie można brać przykład z NixOS — oni 🙂
Ponadto projekt również zyskał Kodeks postępowania, co wywołało falę kontrowersji. Ale przetrwaliśmy 🙂
Wszystkim pracujących kopii zapasowych i stabilnych wydań!
Przydatne linki:
—
—
Źródło: habr.com
