Wydanie OpenZFS 2.2, implementacji ZFS dla systemów Linux i FreeBSD

Po ponad dwóch latach prac opublikowano wersję projektu OpenZFS 2.2, który rozwija implementację systemu plików ZFS dla systemów Linux i FreeBSD. Projekt stał się znany jako „ZFS on Linux” i wcześniej ograniczał się do opracowania modułu dla jądra Linux, ale po dodaniu wsparcia dla FreeBSD został uznany za główną implementację OpenZFS i przemianowany.

Praca OpenZFS została sprawdzona z jądrami Linux od 3.10 do 6.5 oraz we wszystkich gałęziach FreeBSD, począwszy od 12.2-RELEASE. Kod jest rozpowszechniany na licencji CDDL. OpenZFS jest już używany w FreeBSD i wchodzi w skład dystrybucji Debian, Ubuntu, Gentoo, Sabayon Linux oraz ALT Linux. Pakiety z nową wersją wkrótce zostaną przygotowane dla głównych dystrybucji Linux, w tym Debian, Ubuntu, Fedora, RHEL/CentOS.

OpenZFS zapewnia implementację komponentów ZFS, które są związane zarówno z pracą systemu plików, jak i funkcjonowaniem menedżera woluminów. W szczególności zaimplementowane zostały komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) i ZPL (ZFS POSIX Layer). Dodatkowo projekt umożliwia korzystanie z ZFS jako backendu dla klastra systemu plików Lustre. Osiągnięcia projektu opierają się na oryginalnym kodzie ZFS, zaimportowanym z projektu OpenSolaris i rozszerzonym o ulepszenia i poprawki od społeczności Illumos. Projekt rozwijany jest z udziałem pracowników Narodowego Laboratorium Lawrence'a Livermore'a na mocy umowy z Departamentem Energii USA.

Kod jest rozpowszechniany na licencji CDDL, która jest niekompatybilna z GPLv2, co uniemożliwia integrację OpenZFS z główną gałęzią jądra Linux, ponieważ mieszanie kodu objętego licencjami GPLv2 i CDDL jest niedopuszczalne. Aby obejść tę niekompatybilność licencyjną, zdecydowano się na rozpowszechnianie produktu w całości na licencji CDDL w postaci oddzielnie ładowanego modułu, która jest dostarczana oddzielnie od jądra. Stabilność bazy kodu OpenZFS ocenia się jako porównywalną z innymi systemami plików dla Linux.

Główne zmiany:

  • Dodano mechanizm klonowania bloków, który pozwala na utworzenie kopii pliku lub jego części bez dublowania danych, wykorzystując w drugiej kopii odniesienia do już istniejących bloków danych w oryginalnym pliku bez ich faktycznego kopiowania. W przypadku wprowadzenia zmian w oryginalnym pliku lub jego kopii, następuje kopiowanie bloków i wprowadzanie zmian w utworzonych kopiach (tryb copy-on-write na poziomie plików). Na bazie mechanizmu klonowania zrealizowano operację reflink, która może być używana do automatycznego tworzenia klonów w różnych narzędziach kopiowania, na przykład w nowych wersjach /bin/cp w systemie Linux.
  • Dodano obsługę technologii stosowanych do izolacji kontenerów w systemie Linux, takich jak wywołanie systemowe renameat, FS overlayfs, mapowanie identyfikatorów użytkowników podczas montowania oraz delegowanie przestrzeni nazw dla kontenerów.
  • Zrealizowano log błędów wykrytych podczas wykonywania operacji weryfikacji sum kontrolnych (scrub). Przy wykonywaniu polecenia „zpool status” wyświetlane są informacje o wszystkich FS, migawkach i klonach, które obejmuje uszkodzony blok. W celu szybkiej próby przywrócenia znanych uszkodzonych bloków można użyć polecenia „zpool scrub -e”.
  • Dodano możliwość używania dla sum kontrolnych kryptograficznej funkcji skrótu BLAKE3, charakteryzującej się bardzo wysoką wydajnością obliczania skrótu (trzykrotnie szybszą niż Edon-R i znacznie szybszą niż sha256 i sha512) przy zapewnieniu niezawodności na poziomie SHA-3.
  • Zrealizowano operację „zfs receive -c”, którą można wykorzystać do przywracania uszkodzonych danych (nie metadanych) w FS, migawkach i klonach, w przypadkach, gdy dostępna jest zreplikowana kopia zapasowa, wcześniej zapisana poleceniem „zfs send”.
  • Dodano obsługę programowego ustawiania i odczytu właściwości dla poszczególnych wirtualnych dysków vdev.
  • Dodano możliwość wiązania z vdev i zpool dowolnych właściwości użytkownika, na podobieństwo właściwości użytkownika dla zbioru zfs.
  • Udoskonalono implementację adaptacyjnej pamięci podręcznej ARC (Adaptive Replacement Cache), zwiększając wydajność operacji odczytu. ARC lepiej dostosowuje się do wysokich obciążeń i minimalizuje potrzebę ręcznej optymalizacji ustawień.
  • Dodano obsługę mechanizmów sprzętowego przyspieszenia obliczania sum kontrolnych SHA2.
  • Przepisano i zoptymalizowano implementację sum kontrolnych Edon-R.
  • Przy użyciu algorytmu zstd do kompresji danych przyspieszono identyfikację sytuacji, w których kompresja nie ma sensu (dane nie poddają się kompresji).
  • Wprowadzono ulepszenia w mechanizmie wstępnego ładowania (Prefetch), które przyspieszają działanie przy intensywnej operacji we/wy.
  • Wprowadzono szereg ogólnych optymalizacji zwiększających wydajność.

Ź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