OpenZFS - OpenZFS

OpenZFS
Deweloper(zy) Projekt OpenZFS
Wprowadzono 2013 ; 8 lat temu ( 2013 )
Struktury
Zawartość katalogu Rozszerzalna tablica mieszająca
Limity
Maks. wielkość woluminu 256 bilionów  yobibajtów (2 128  bajtów)
Maks. rozmiar pliku 16  eksbibajtów (2 64  bajty)
Maks. liczba plików
Maks. długość nazwy pliku 255 znaków ASCII (mniej dla standardów znaków wielobajtowych, takich jak Unicode )
Cechy
Widelce Tak (nazywane „atrybutami rozszerzonymi”, ale są to pełnoprawne strumienie)
Atrybuty POSIX
Uprawnienia systemu plików Listy ACL POSIX, NFSv4
Przezroczysta kompresja tak
Przejrzyste szyfrowanie tak
Deduplikacja danych tak
Kopiowanie na piśmie tak
Inne
Obsługiwane systemy operacyjne Dystrybucje illumos , FreeBSD i jego pochodne, macOS , ZFS na Linux przez moduł jądra , Microsoft Windows
Magazyn github .com /openzfs /zfs
Projekt OpenZFS
Openzfs.svg
Tworzenie 2013 ; 8 lat temu ( 2013 )
Produkty System plików OpenZFS
Organizacja nadrzędna
Oprogramowanie w interesie publicznym
Strona internetowa openzfs .org

OpenZFS to platforma pamięci masowej typu open source , która obejmuje funkcjonalność tradycyjnych systemów plików i menedżera woluminów . Obejmuje ochronę przed uszkodzeniem danych , obsługę dużych pojemności pamięci masowej , wydajną kompresję danych , migawki i klony kopiowania przy zapisie , ciągłe sprawdzanie integralności i automatyczną naprawę , szyfrowanie , zdalną replikację z wysyłaniem i odbieraniem ZFS oraz RAID-Z . Tytułowy projekt OpenZFS zrzesza deweloperów z illumos, platform Linux, FreeBSD i MacOS oraz szerokiej gamy firm poprzez rocznego OpenZFS Developer Summit.

Członkami założycielami OpenZFS są Matt Ahrens, jeden z głównych architektów ZFS. Projekt OpenZFS jest pochodną open source projektu Oracle ZFS . Od 2019 r. OpenZFS (na niektórych platformach, takich jak FreeBSD ) jest stopniowo dostosowywany do opartego na ZFS na Linuksie, który rozwija się szybciej niż inne warianty OpenZFS i zawiera nowe funkcje, które nie zostały jeszcze przeniesione do tych innych wersji. Połączona baza kodu będzie zawierała szereg nowych funkcji i ulepszeń wydajności i ma być znana jako OpenZFS 2.0.

Historia

System plików ZFS został pierwotnie opracowany przez Sun Microsystems dla systemu operacyjnego Solaris . Kod źródłowy ZFS został wydany w 2005 roku na licencji CDDL ( Common Development and Distribution License ) jako część systemu operacyjnego OpenSolaris, a następnie został przeniesiony do innych systemów operacyjnych i środowisk.

Poniżej znajduje się lista kluczowych wydarzeń w rozwoju ZFS i jego różnych implementacji, które doprowadziły do ​​stworzenia OpenZFS jako projektu parasolowego:

  • 2001: Rozpoczęcie rozwoju ZFS z zamkniętym kodem źródłowym przez dwóch inżynierów w Sun Microsystems.
  • 2005: Kod źródłowy ZFS został wydany jako część OpenSolaris.
  • 2006: Rozpoczęto opracowywanie portu FUSE ZFS dla Linuksa .
  • 2007: Apple rozpoczął przenoszenie ZFS na Mac OS X.
  • 2008: Port do FreeBSD został wydany jako część FreeBSD 7.0.
  • 2008: Rozpoczęto opracowywanie natywnego portu ZFS Linux, znanego jako ZFS w systemie Linux.
  • 2009: Projekt ZFS firmy Apple został zamknięty, a projekt MacZFS nadal rozwijał kod.
  • 2010: OpenSolaris został przerwany, co spowodowało, że dalszy rozwój ZFS na Solarisie przestał być open-source.
  • 2010: ilumos został rozwidlony z OpenSolaris jako następca open-source i nadal rozwijał ZFS w otwartej przestrzeni. Porty ZFS na inne platformy nadal wprowadzały zmiany z illumos.
  • 2012: Wprowadzono flagi funkcji w celu zastąpienia starszych numerów wersji na dysku, umożliwiając łatwiejszą rozproszoną ewolucję formatu ZFS na dysku w celu obsługi nowych funkcji.
  • 2013: Współistniejąca ze stabilną wersją MacZFS, jej prototypowa generacja (znana jako OpenZFS w OS X lub O3X) wykorzystuje ZFS w systemie Linux jako nową bazę kodu.
  • 2013: Pierwsza stabilna wersja ZFS w systemie Linux.
  • 2013: Oficjalne ogłoszenie OpenZFS jako projektu parasolowego. Nowe funkcje i poprawki są regularnie pobierane do OpenZFS z illumos i przesyłane do wszystkich portów na inne platformy i odwrotnie.
  • 2016: Ubuntu 16.04 domyślnie zawiera wariant systemu plików ZFS o otwartym kodzie źródłowym

Wersje przeniesione (2005-2010)

Ponieważ w 2005 roku FSF twierdziło, że istnieje niezgodność prawna CDDL i GPL , implementacja systemu plików ZFS przez firmę Sun nie została wykorzystana jako podstawa do opracowania modułu jądra systemu Linux , nie została połączona z główną linią jądra systemu Linux i dystrybucjami systemu Linux. nie zawierał go jako prekompilowanego modułu jądra. Jako obejście, FUSE , framework, który pozwala systemom plików działać w przestrzeni użytkownika , został użyty w Linuksie jako warstwa oddzielająca, dla której nie obowiązują problemy licencyjne, chociaż z zestawem własnych problemów, które obejmują obniżenie wydajności. Jednak wydanie Ubuntu 16.04  LTS z kwietnia 2016 r. zawiera ZFS na licencji CDDL w systemie Linux jako moduł jądra, który jest utrzymywany jako oddzielny projekt, poza główną linią jądra systemu Linux, zapewniając zgodność licencji.

Apple/macOS

W wydanej wersji systemu Mac OS X 10.5 ZFS był dostępny w trybie tylko do odczytu z wiersza poleceń, w którym nie ma możliwości tworzenia zpool ani zapisywania do nich. Przed wydaniem 10.5 firma Apple wydała „ZFS Beta Seed v1.1”, która umożliwiała dostęp do odczytu i zapisu oraz tworzenie zpool; jednak instalator dla "ZFS Beta Seed v1.1" został zgłoszony, że działa tylko w wersji 10.5.0 i nie został zaktualizowany dla wersji 10.5.1 i nowszych. W sierpniu 2007 roku Apple otworzył projekt ZFS na swojej stronie internetowej Mac OS Forge. W tej witrynie Apple udostępnił kod źródłowy i pliki binarne swojego portu ZFS, który obejmuje dostęp do odczytu i zapisu, ale instalator nie był dostępny, dopóki programista zewnętrzny go nie utworzył. W październiku 2009 roku Apple ogłosił zamknięcie projektu ZFS na Mac OS Forge. To znaczy, że ich własny hosting i zaangażowanie w ZFS zostały doraźnie przerwane. Nie podano wyjaśnienia. Firma Apple ostatecznie wydała wymaganą prawnie, pochodną CDDL, część kodu źródłowego swojej ostatecznej publicznej wersji beta ZFS o nazwie „10a286”. Pełna obsługa ZFS była kiedyś reklamowana jako funkcja Snow Leopard Server ( Mac OS X Server 10.6). Jednak do czasu wydania systemu operacyjnego wszystkie odniesienia do tej funkcji zostały usunięte ze strony funkcji. Apple nie skomentował tego pominięcia.

Wydanie kodu źródłowego „10a286” firmy Apple oraz wersje wcześniej wydanego źródła i plików binarnych zostały zachowane, a projekt MacZFS zaadoptował nowy program, aby wznowić jego rozwój w innym miejscu. Od lipca 2012 MacZFS implementuje zpool w wersji 8 i ZFS w wersji 2, począwszy od wydania Solarisa z października 2008 . Dodatkowe informacje historyczne i komentarze można znaleźć na stronie MacZFS i FAQ.

Realizacje

Solaris

OpenSolaris

OpenSolaris 2008.05, 2008.11 i 2009.06 używają ZFS jako domyślnego systemu plików. Istnieje kilkanaście dystrybucji innych firm.

OpenIndiana

OpenIndiana używa OpenZFS z flagami funkcji zaimplementowanych w Illumos . ZFS wersja 28 używana do wersji 151a3.

Uaktualniając OpenSolaris snv_134 do OpenIndiana i Solaris 11 Express, można również aktualizować i oddzielnie uruchamiać Solaris 11 Express w tej samej puli ZFS.

BSD

System operacyjny Mac

OpenZFS na OSX (w skrócie O3X ) to implementacja ZFS dla macOS . O3X jest aktywnie rozwijany, blisko związany z ZFS na Linuksie i implementacją ZFS firmy Illumos, przy jednoczesnym zachowaniu zgodności flag funkcji z ZFS na Linuksie. O3X implementuje zpool wersję 5000 i zawiera Solaris Porting Layer (SPL) pierwotnie napisany dla MacZFS, który został dodatkowo rozszerzony o warstwę zarządzania pamięcią opartą na alokatorach illumos kmem i vmem. O3X jest w pełni funkcjonalny, obsługuje kompresję LZ4, deduplikację, ARC, L2ARC i SLOG.

MacZFS to darmowe oprogramowanie zapewniające obsługę ZFS na macOS. Stabilna starsza gałąź zapewnia do puli ZFS w wersji 8 i systemu plików ZFS w wersji 2. Gałąź programistyczna, oparta na ZFS w systemie Linux i OpenZFS, zapewnia zaktualizowaną funkcjonalność ZFS, taką jak do ZFS zpool w wersji 5000 i flagi funkcji.

Własna implementacja ZFS (Zevo) była dostępna bezpłatnie od GreenBytes, Inc., implementując system plików ZFS w wersji 5 i puli ZFS w wersji 28. Zevo zaoferował ograniczony zestaw funkcji ZFS w oczekiwaniu na dalszy rozwój komercyjny; został sprzedany firmie Oracle w 2014 roku z nieznanymi planami na przyszłość.

DragonFlyBSD

Edward O'Callaghan rozpoczął początkowy port ZFS do DragonFlyBSD .

NetBSD

Port NetBSD ZFS został uruchomiony jako część Google Summer of Code 2007, aw sierpniu 2009 kod został włączony do drzewa źródłowego NetBSD .

FreeBSD

Paweł Jakub Dawidek przeniósł ZFS do FreeBSD i jest częścią FreeBSD od wersji 7.0. Obejmuje to zfsboot, który umożliwia ładowanie FreeBSD bezpośrednio z zestawu danych ZFS.

Implementacja ZFS w FreeBSD jest w pełni funkcjonalna; jedyne brakujące funkcje to serwer CIFS jądra i iSCSI , ale te ostatnie można dodać za pomocą dostępnych z zewnątrz pakietów. Samba może być użyta do udostępnienia serwera CIFS w przestrzeni użytkownika.

FreeBSD 7-STABLE (gdzie popełnione są aktualizacje serii 7.x) używa zpool wersji 6.

FreeBSD 8 zawiera znacznie zaktualizowaną implementację ZFS, a wersja zpool 13 jest obsługiwana. Wsparcie zpool w wersji 14 zostało dodane do gałęzi 8-STABLE 11 stycznia 2010 i jest zawarte w FreeBSD w wersji 8.1. zpool wersja 15 jest obsługiwana w wersji 8.2. Gałąź 8-STABLE zyskała wsparcie dla zpool w wersji v28 i zfs w wersji 5 na początku czerwca 2011. Zmiany te zostały wydane w połowie kwietnia 2012 wraz z FreeBSD 8.3.

FreeBSD 9.0-RELEASE używa ZFS Pool w wersji 28.

FreeBSD 9.2-RELEASE jest pierwszą wersją FreeBSD, która korzysta z nowej implementacji opartej na „flagach funkcji”, czyli Pool w wersji 5000.

FreeBSD 13.0-RELEASE przełącza implementację ZFS z kodu opartego na ilumos na ujednoliconą bazę kodu OpenZFS 2. Ta zmiana pozwala FreeBSD znacznie szybciej otrzymywać ulepszenia OpenZFS.

Północ BSD

MidnightBSD , komputerowy system operacyjny wywodzący się z FreeBSD, obsługuje pulę pamięci ZFS w wersji 6 od wersji 0.3-RELEASE. Zostało to wyprowadzone z kodu zawartego w FreeBSD 7.0-RELEASE. Aktualizacja puli pamięci 28 jest w toku w wersji 0.4-CURRENT i jest oparta na źródłach 9-STABILNYCH wokół kodu FreeBSD 9.1-RELEASE.

TrueOS (dawniej PC-BSD)

TrueOS (wcześniej znany jako PC-BSD, obecnie nieistniejący) był zorientowaną na komputery stacjonarną dystrybucją FreeBSD, która odziedziczyła obsługę ZFS.

TrueNAS Core (dawniej FreeNAS)

TrueNAS Core, wbudowana dystrybucja sieciowej pamięci masowej (NAS) typu open source oparta na FreeBSD , ma taką samą obsługę ZFS jak FreeBSD i PC-BSD .

pfSense

pfSense , router oparty na BSD o otwartym kodzie źródłowym , obsługuje ZFS, w tym instalację i uruchamianie z pul ZFS, począwszy od wersji 2.4.

XigmaNAS

XigmaNAS (dawniej NAS4Free), wbudowana dystrybucja sieciowej pamięci masowej (NAS) typu open source oparta na FreeBSD , ma taką samą obsługę ZFS jak FreeBSD, pula pamięci ZFS w wersji 5000. Projekt ten jest kontynuacją projektu serii FreeNAS 7.

Debian GNU/kFreeBSD

Opierając się na jądrze FreeBSD, Debian GNU/kFreeBSD obsługuje ZFS z jądra. Jednak wymagane są dodatkowe narzędzia w przestrzeni użytkownika, podczas gdy możliwe jest posiadanie ZFS jako systemu plików root lub /boot, w którym to przypadku wymagana konfiguracja GRUB jest wykonywana przez instalator Debiana od wydania Wheezy .

Na dzień 31 stycznia 2013 dostępna wersja ZPool to 14 dla wydania Squeeze i 28 dla wydania Wheezy-9 .

Linux

Chociaż system plików ZFS obsługuje systemy operacyjne oparte na Linuksie , pojawiają się trudności dla opiekunów dystrybucji Linuksa, którzy chcą zapewnić natywną obsługę ZFS w swoich produktach z powodu potencjalnych niezgodności prawnych między licencją CDDL używaną przez kod ZFS, a licencją GPL używaną przez Linuksa jądro. Aby włączyć obsługę ZFS w systemie Linux, ładowalny moduł jądra zawierający kod ZFS na licencji CDDL musi zostać skompilowany i załadowany do jądra. Według Free Software Foundation treść licencji GPL prawnie zabrania redystrybucji powstałego produktu jako dzieła pochodnego , chociaż ten punkt widzenia wywołał pewne kontrowersje.

ZFS na BEZPIECZNIK

Jedno potencjalne obejście niezgodności licencjonowania zostało wypróbowane w 2006 roku, z eksperymentalnym przeniesieniem kodu ZFS do systemu FUSE Linux . System plików działał całkowicie w przestrzeni użytkownika, zamiast być zintegrowany z jądrem Linuksa, i dlatego nie był uważany za pochodną pracę jądra. To podejście było funkcjonalne, ale cierpiało na znaczne spadki wydajności w porównaniu z integracją systemu plików jako natywnego modułu jądra działającego w przestrzeni jądra . Od 2016 r. projekt ZFS on FUSE wydaje się być martwy.

Natywny ZFS w systemie Linux

Natywny port ZFS dla Linuksa wyprodukowany przez Lawrence Livermore National Laboratory (LLNL) został wydany w marcu 2013 roku, po następujących kluczowych wydarzeniach:

  • 2008: prototyp do określenia rentowności
  • 2009: wstępne wsparcie ZVOL i Luster
  • 2010: rozwój przeniesiony na GitHub
  • 2011: dodano warstwę POSIX
  • 2011: społeczność wczesnych użytkowników
  • 2012: wykorzystanie produkcyjne ZFS
  • 2013: stabilna wersja GA

Od sierpnia 2014 r. ZFS w systemie Linux używa puli OpenZFS w wersji o numerze 5000, co oznacza, że ​​obsługiwane przez niego funkcje są definiowane za pomocą flag funkcji . Ta wersja puli jest niezmiennym numerem i oczekuje się, że nigdy nie będzie kolidować z numerami wersji podanymi przez Oracle.

KQ InfoTech

Kolejny natywny port dla Linuksa został opracowany przez KQ InfoTech w 2010 roku. Ten port używał implementacji zvol z Lawrence Livermore National Laboratory jako punktu wyjścia. Wydanie wspierające zpool v28 zostało ogłoszone w styczniu 2011. W kwietniu 2011 firma KQ Infotech została przejęta przez sTec, Inc. i ich prace nad ZFS zostały wstrzymane. Kod źródłowy tego portu można znaleźć na GitHub .

Praca KQ InfoTech została ostatecznie zintegrowana z natywnym portem ZFS dla Linuksa LLNL.

Dystrybucja kodu źródłowego

Chociaż niezgodność licencji może powstać w przypadku dystrybucji skompilowanych plików binarnych zawierających kod ZFS, ogólnie przyjmuje się, że nie ma to wpływu na dystrybucję samego kodu źródłowego. W Gentoo konfiguracja głównego systemu plików ZFS jest dobrze udokumentowana, a wymagane pakiety można zainstalować z jego repozytorium pakietów. Slackware dostarcza również dokumentację dotyczącą obsługi ZFS, zarówno jako moduł jądra, jak i po wbudowaniu w jądro.

Integracja z Ubuntu

Kwestia zgodności licencji CDDL z licencją GPL pojawiła się ponownie w 2015 roku, kiedy dystrybucja Linux Ubuntu ogłosiła zamiar udostępnienia użytkownikom prekompilowanych modułów binarnego jądra OpenZFS bezpośrednio z oficjalnych repozytoriów pakietów dystrybucji. W 2016 roku Ubuntu ogłosiło, że przegląd prawny zaowocował wnioskiem, że zapewnienie wsparcia dla ZFS za pośrednictwem modułu jądra binarnego nie narusza warunków licencji GPL. Inne, takie jak Software Freedom Law Center, poszły za wnioskiem Ubuntu, podczas gdy FSF i SFC powtórzyły swój przeciwny pogląd.

Ubuntu 16.04 LTS („Xenial Xerus”), wydany 21 kwietnia 2016 r., pozwala użytkownikowi zainstalować pakiety binarne OpenZFS bezpośrednio z repozytoriów oprogramowania Ubuntu. Od 2019 r. nie wniesiono żadnej skargi prawnej przeciwko firmie Canonical w związku z dystrybucją tych pakietów.

Od 2019 r. Ubuntu obsługuje eksperymentalną instalację ZFS jako głównego systemu plików, począwszy od wydania 19.10 („Eoan Ermine”), aby wspierać współistnienie prawie czystego systemu operacyjnego ZFS z GRUB-em i innymi systemami operacyjnymi na tym samym dysku.

Skala TrueNAS

Wersja TrueNAS firmy iXsystems, ale oparta na systemie Debian Linux. Nadal używa OpenZFS do głównej pamięci masowej. Dodaje jednak obsługę kontenerów za pośrednictwem Kubernetes i Dockera. Co więcej, umożliwi klastrowanie Dockera i ZFS przez gluster. W wersji beta od 22 czerwca 2021 r.

Microsoft Windows

W 2010 roku podjęto próbę stworzenia portu open source ZFS, ale po ponad rocznej przerwie w rozwoju zaprzestano w 2012 roku. W październiku 2017 roku Jörgen Lundman ogłosił nowy port OpenZFS na OpenZFS Developer Summit.

Wydania i historie funkcji

W ramach ilumosów i (od 2013) OpenZFS

  • 2010: ilumos założony jako następca open source i kontynuujący rozwój ZFS w otwartym środowisku. Porty ZFS na inne platformy kontynuowały przenoszenie zmian z illumos.
  • 2013: Założenie projektu OpenZFS, którego celem jest skoordynowany rozwój open-source ZFS. Projekt OpenZFS zapewnia wspólną podstawę wszystkim zainteresowanym grupom i organizacjom do wnoszenia wkładu i współpracy na rzecz wspólnego rdzenia ZFS o otwartym kodzie źródłowym, a ponadto do utrzymywania określonego kodu i procesów walidacji potrzebnych do działania podstawowego kodu ZFS z ich własnymi systemami .

Inne porty i widelce

Poniżej znajduje się lista portów i forków ZFS typu open source:

  • 2006: Rozpoczęcie tworzenia portu FUSE dla Linuksa .
  • 2007: firma Apple rozpoczęła przenoszenie ZFS do Mac OS X .
  • 2008: Port do FreeBSD został wydany jako część FreeBSD 7.0.
  • 2008: Rozpoczęcie tworzenia natywnego portu Linux .
  • 2009: Zamknięcie projektu ZFS firmy Apple. Projekt MacZFS kontynuował rozwój kodu.

Szczegółowe historie wydań

Z ZFS w Oracle Solaris: wraz z wprowadzaniem nowych funkcji, numery wersji puli i systemu plików są zwiększane, aby określić dostępny format i funkcje. Funkcje dostępne w określonych wersjach systemu plików wymagają określonej wersji puli.

Rozproszony rozwój OpenZFS obejmuje flagi funkcji i wersję 5000 puli, niezmienną liczbę, która powinna nigdy nie kolidować z numerami wersji podanymi przez Oracle. Starsze numery wersji nadal istnieją dla wersji puli 1–28, implikowane przez wersję 5000. Illumos używa do tego celu wersji 5000 puli. Przyszłe zmiany formatu na dysku są włączane / wyłączane niezależnie za pomocą flag funkcji.

Historia wersji

Legenda:
Najnowsza stabilna wersja FOSS
Numer wersji puli ZFS Data wydania Znaczące zmiany
5000 OpenZFS Niezmienna wersja puli, aby wskazać, że pula wskazuje nowe funkcje po wersji 28 puli za pomocą flag funkcji ZFS zamiast zwiększania wersji puli

Wersje puli i flagi funkcji

Pierwotnie numery wersji puli i systemu plików były zwiększane w miarę wprowadzania nowych funkcji, aby określić format systemu plików na dysku i dostępne funkcje. Działało to dobrze, gdy jeden podmiot kontrolował rozwój ZFS, a ten schemat wersjonowania jest nadal używany z ZFS w Oracle Solaris .

W bardziej rozproszonym modelu programistycznym posiadanie jednego numeru wersji jest dalekie od ideału, ponieważ wszystkie implementacje OpenZFS musiałyby uzgadniać wszystkie zmiany w formacie systemu plików na dysku. Rozwiązanie wybrane przez OpenZFS polegało na wprowadzeniu flag funkcji jako nowego systemu wersjonowania, który oznacza zmiany formatu na dysku unikalnymi nazwami i obsługuje zarówno całkowicie niezależne zmiany formatu, jak i zmiany formatu, które są od siebie zależne. Pulę można przenosić i używać między implementacjami OpenZFS, o ile wszystkie flagi funkcji używane przez pulę są obsługiwane przez obie implementacje.

W OpenZFS wersja puli jest na stałe ustawiona na 5000, co oznacza, że ​​pula wskazuje nowe funkcje, ustawiając lub usuwając flagi funkcji ZFS, a nie zwiększając wersję puli. Numer 5000 został wybrany, ponieważ oczekuje się, że nigdy nie będzie kolidował z numerami wersji podanymi przez Oracle. Starsze numery wersji nadal istnieją dla wersji puli 1–28. Przyszłe zmiany formatu na dysku są włączane / wyłączane niezależnie za pomocą tych flag funkcji.

Starsze numery wersji nadal istnieją dla wersji puli 1–28 i są implikowane przez wersję 5000 puli; pierwotną propozycją było użycie 1000 jako wersji puli. Przyszłe zmiany formatu na dysku są włączane i wyłączane niezależnie za pomocą flag funkcji.

Flagi funkcji są widoczne jako właściwości puli zgodnie z następującymi zasadami schematu nazewnictwa:

  • Format nazwy właściwości to feature@<nazwa-organizacji>:<nazwa-funkcji>
  • <nazwa-organizacji> to odwrotna nazwa DNS organizacji, która opracowała tę funkcję, zapewniająca unikatowe nazwy właściwości.
  • Nazwy właściwości można skrócić do feature@<feature-name>, jeśli pozostają jednoznaczne.

Na przykład feature@com.foocompany:async_destroy jest prawidłową nazwą właściwości i może być skrócona do feature@async_destroy .

Każda funkcja puli może być wyłączona , włączona lub aktywna . Wyłączone funkcje to te, które nie będą używane i nie zostaną wprowadzone żadne zmiany formatu na dysku; w rezultacie takie funkcje są kompatybilne wstecz . Włączone funkcje to te, które będą używane, nie dokonano jeszcze żadnych zmian formatu na dysku, ale oprogramowanie może wprowadzić zmiany w dowolnym momencie; takie funkcje są nadal kompatybilne wstecz. Aktywne funkcje to te, które wprowadziły do ​​puli zmiany formatu na dysku niezgodne z poprzednimi wersjami.

Po włączeniu dowolnej funkcji puli starsza wersja puli jest automatycznie uaktualniana do 5000, a wszystkie inne funkcje wymagane wstępnie są również włączone. Domyślnie nowe pule są tworzone z włączonymi wszystkimi obsługiwanymi funkcjami. Ogólnie rzecz biorąc, stan funkcji można zmienić z aktywnego z powrotem na włączony , cofając w ten sposób dokonane zmiany formatu na dysku i czyniąc pulę ponownie kompatybilną ze starszą implementacją OpenZFS; jednak dla niektórych funkcji, które mogą nie być możliwe.

Zmiany formatu na dysku mogą być powiązane z funkcjami zapisu lub odczytu . Te pierwsze to funkcje, które implementacja OpenZFS musi obsługiwać, aby móc zapisywać w puli, podczas gdy obsługa takich funkcji nie jest obowiązkowa w przypadku otwierania puli w trybie tylko do odczytu. Te ostatnie są funkcjami, które implementacja OpenZFS musi obsługiwać, aby móc czytać z puli lub po prostu ją otworzyć, ponieważ otwarcie puli nie jest możliwe bez faktycznego odczytu z niej.

Na przykład funkcja async_destroy dodaje nową strukturę danych na dysku, aby śledzić uwolnione zestawy danych, ale implementacja OpenZFS nie musi znać tej struktury danych, aby uzyskać dostęp do puli w trybie tylko do odczytu. Ponadto zapisywanie do puli, która ma pewne funkcje w stanie aktywnym, nie jest możliwe przez implementację OpenZFS, która nie obsługuje tych samych funkcji.

Lista flag funkcji i obsługiwanych przez nie systemów operacyjnych jest dostępna na stronie internetowej Open-ZFS.org

OpenZFS 2.0

Historycznie rzecz biorąc, OpenZFS był wdrażany jako podstawowy kod ZFS, a zespół każdego systemu operacyjnego dostosowywał go do swoich projektów. W niektórych przypadkach doprowadziło to do stagnacji i rozbieżności funkcji i wierszy poleceń, ponieważ różne systemy operacyjne opracowały rozbieżne funkcje i poprawki błędów, często dla jednej platformy, a nie dla wszystkich platform. Z czasem rozwój nowych funkcji przesunął się z Illumos na Linuksa . Te nowe funkcje i poprawki musiały zostać przeniesione do Illumos, zanim mogły zostać zgłoszone do FreeBSD. Było to jednak trudne, ponieważ wersja na Linuksa zawierała również wiele mniejszych zmian, które trudno było rozszyfrować.

W 2018 r. uzgodniono, że rozwój OpenZFS zostanie poddany przeglądowi w celu rozwiązania tych problemów. Zamiast próbować zaimportować wszystkie zmiany Linuksa na inne platformy fragmentarycznie, cały kod ZFS Linuksa byłby „przestawiony” jako całość, a inne platformy byłyby oparte na bardziej aktywnie rozwijanej wersji Linuksa. Szeroka gama przeniesionych i nowych funkcji, w tym wiele od dawna pożądanych ulepszeń, zostałaby również wprowadzona lub przeniesiona na różne platformy, a przyszłe zmiany byłyby omawiane na różnych platformach przed wdrożeniem. Plany obejmowały odpowiednie warstwy portujące, aby zapobiec wprowadzaniu kodu podkładkowego Linux, GPL lub Linux-KPI do innych jąder platformy .

Trwające lub przeniesione funkcje dla OpenZFS 2.0 są długie i obejmują:

  • Szybsze wdrażanie ulepszeń i nowych funkcji na różnych platformach.
  • Standaryzacja wiersza poleceń
  • Ulepszona przenośność puli (pule ZFS utworzone na jednym systemie mogą być używane w równym stopniu przez inny)
  • Szersza parzystość funkcji między platformami i niezależność od platformy
  • Mocowania nakładkowe (złączone) akceptowane domyślnie
  • Poprawki błędów i ulepszenia
  • ZTS i różne inne funkcje działające we FreeBSD
  • Ulepszenia TRIM i ACL MODE
  • Blokady ZFS (z FreeBSD)
  • Ulepszone natywne listy ACL NFSv4 (FreeBSD)
  • Zwiększona wydajność AES-GCM dla zaszyfrowanych pul
  • Zredagowane wysyłanie/odbieranie
  • Log spacemap i inne ulepszenia zarządzania metaslabami - projekt ponownego wdrożenia zarządzania wolną przestrzenią i "metaslabs" przez ZFS w celu uzyskania znacznie większej wydajności
  • Szybkie usuwanie klonów
  • Kompresja danych Zstd jako nowa opcja
  • Dziedziczenie właściwości programu kanału
  • AltiVec RAID-Z
  • Obsługa i kopiowanie zakładek
  • Bezpośrednie wsparcie we/ wy
  • Trwałe L2ARC (L2ARC zachowane po ponownym uruchomieniu)
  • Sekwencyjny (wysoka prędkość) peeling i resilver
  • Wstrzymanie/wznowienie szorowania
  • Resilver restart
  • Usuwanie urządzenia (VDEV)
  • Inicjalizacja i punkt kontrolny Zpool
  • Programy kanałów
  • Duży Dnode
  • Klasy alokacji (pozwalające na wyznaczenie określonej szybkiej pamięci masowej dla metadanych i tabel deduplikacji)
  • Montaż równoległy do ​​basenu
  • Właściwości poszczególnych vdev
  • Udoskonalenia deduplikacji — deduplikacja dziennika (szybka deduplikacja), limity rozmiaru tabeli deduplikacji i wstępne ładowanie tabeli deduplikacji (ładowane w całości za jednym razem, a nie fragmentarycznie w razie potrzeby), wymienione jako „miło mieć” w 2018 r., zostały określone w kwietniu 2020 r. być „ładnym” lub w dużej mierze kompletnym

Zobacz też

Bibliografia

Zewnętrzne linki