Co jest takiego dobrego w systemie plików ZFS w systemie Linux Ubuntu?

System plików ZFS w systemie Linux Ubuntu. Jakie są cechy jego struktury, zalety i wady, zastanówmy się razem w naszym artykule.

Co jest takiego dobrego w systemie plików ZFS w systemie Linux Ubuntu?

ZFS lub Zettabyte File System to system plików pierwotnie stworzony przez Sun Microsystems dla systemu operacyjnego Solaris. Obsługuje duże ilości danych, łączy koncepcje systemu plików, menedżera dysków logicznych i nośników fizycznych, a także proste zarządzanie woluminami pamięci masowej.

Narzędzie przywraca pliki z dowolnego urządzenia, niezależnie od przyczyny utraty danych.

Jest to system plików nowej generacji, pierwotnie zaprojektowany w celu zapewnienia rozwiązań NAS o zwiększonym bezpieczeństwie, niezawodności i wydajności. W przeciwieństwie do innych systemów, ZFS to 128-bitowy system plików oferujący praktycznie nieograniczoną pojemność pamięci. ZFS to projekt open source na licencji CDDL (Common Development and Distribution License).

Struktura ZFS — Zettabyte File System

Aby korzystać z systemu plików ZFS po wyjęciu z pudełka, musicie zainstalować FreeBSD lub system operacyjny korzystający z jądra ilumos, rozwidlenia jądra OpenSolaris.

Jeśli chcecie używać ZFS na Ubuntu, musicie ręcznie dodać obsługę ZFS, nie jest to trudne, wystarczy uruchomić kilka poleceń. Wrócimy do tego później, ale na razie spójrzmy na zalety i wady tego systemu plików.

Przejdź do widoku
System plików ZFS w systemie Linux Ubuntu. Dlaczego ZFS jest tak dobry

System plików ZFS w systemie Linux Ubuntu. Dlaczego ZFS jest tak dobry

Przewagi ZFS

Zalety systemu plików ZFS obejmują:

Ma uproszczone administrowanie

Zarządzanie woluminami, macierzami RAID i systemem plików jest tutaj scalone. Do tworzenia woluminów, poziomów nadmiarowości, systemów plików, kompresji, punktów montowania i nie tylko. potrzebujecie tylko kilku poleceń.

Ułatwia to również monitorowanie, ponieważ dostępne są dwa lub nawet trzy mniejsze poziomy.

Następną korzyścią jest integralność danych

Podczas zapisywania danych obliczana jest i zapisywana wraz z nią suma kontrolna. Później, gdy dane są odczytywane, suma kontrolna jest obliczana ponownie. Jeśli zapisane sumy kontrolne i odczytane dane nie zgadzają się, zostanie wykryty błąd. Następnie system spróbuje automatycznie naprawić taki błąd.

ZFS również dobrze się skaluje dzięki możliwości dodawania nowych urządzeń, zarządzania pamięcią podręczną i tym podobnych.

Funkcja kopiowania przy zapisie

W większości systemów plików dane są tracone na zawsze po nadpisaniu. Z drugiej strony w ZFS nowe informacje są zapisywane w innym bloku.

Kopiujcie przy zapisie

Metadane systemów plików są następnie aktualizowane do nowych informacji po zakończeniu zapisu. Powoduje to zachowanie starych danych w przypadku awarii systemu lub innego złośliwego zdarzenia.

Ma wbudowane funkcje przechowywania

  • Replikacja to proces tworzenia kopii czegoś.

  • Deduplikacja to proces, który eliminuje nadmiarowe kopie danych i zmniejsza obciążenie pamięci masowej.

    Deduplikacja
  • Kompresja to opcja, która oszczędza miejsce na dysku i zwiększa szybkość, podczas gdy liczba bitów potrzebnych do reprezentowania danych jest zmniejszona.

  • Migawki to zestaw znaczników referencyjnych dla danych w określonym momencie.

    Migawki
  • Klony są identyczną kopią czegoś.

Limity ZFS

Ale jak każdy system plików, ZFS ma również swoje słabości.

ZFS cierpi na fatalną wydajność przy 80% lub więcej swojej pojemności

Jest to częsty problem z systemami plików. Kiedy pula zaczyna wypełniać 80% pojemności, musisz albo rozwinąć ego, albo przenieść się do większej pamięci masowej.

Nie można zmniejszyć puli

Po dodaniu nie można usunąć urządzeń ani vdevów z puli.

Ma również ograniczenia w zmianie typu nadmiarowości

Z wyjątkiem przełączenia pojedynczej puli dyskowej na pulę lustrzaną, nie można zmienić typu nadmiarowości. Po wybraniu typu redundancji jedynym rozwiązaniem jest jej zniszczenie i utworzenie nowej, przywrócenie danych z kopii zapasowych lub z innej lokalizacji.

Instalacja ZFS na Ubuntu

Na razie spójrzmy, jak zainstalować ZFS w systemie operacyjnym Linux na przykładzie Ubuntu w wersji 20.04.

Aby zainstalować, potrzebujemy terminala, aby uruchomić, naciśnij kombinację klawiszy Ctrl + Alt + T.

Następnie uruchomcie następujące polecenie

$ sudo apt update

Aby sprawdzić dostępność aktualizacji aplikacji. Po wprowadzeniu polecenia system poprosi o podanie hasła, wpisanie hasła roota i naciśnięcie Enter.

aktualizacja sudo apt

I zainstalować następujące elementy:

$ sudo apt install zfsutils-linux

sudo apt install zfsutils-linux

Po uruchomieniu polecenia instalacji wpicie "y", aby potwierdzić, i naciśnijcie Enter. Rozpocznie się proces instalacji pakietu oprogramowania.

Aby zweryfikować instalację ZFS, uruchomcie następujące polecenie.

$ zfs –version

Sprawdźcie zainstalowaną wersję ZFS

Wynikiem będzie wersja programu. Teraz możecie utworzyć pulę pamięci za pomocą wirtualnego urządzenia vdev.

pula pamięci

Pula pamięci to zbiór co najmniej jednego urządzenia wirtualnego, które przechowuje dane. Pula ZFS, inaczej nazywana Zpool, służy jako kontener danych najwyższego poziomu w całym systemie ZFS. Służy do tworzenia jednego lub więcej systemów plików (zestawów danych) lub urządzeń blokowych (woluminów). Te systemy plików i urządzenia blokowe współdzielą pozostałą przestrzeń w puli. Operacje partycjonowania i formatowania będą obsługiwane przez ZFS.

urządzenie wirtualne vdev

Urządzenie wirtualne (vdev) może składać się z jednego lub większej liczby urządzeń fizycznych. Może to być pula lub część puli, może mieć lustro, potrójne lustro, poziom redundancji RAIDZ, RAIDZ-2 lub RAIDZ-3.

RAID-Z to implementacja zmodyfikowanego RAID-5. W ZFS jest w stanie wyeliminować błędy i luki zapisu znalezione w oryginalnym RAID-5. RAID-Z1 wymaga do działania co najmniej trzech dysków: dwóch dysków do przechowywania i jednego do kontroli parzystości.

RAID-Z2 powinien mieć dwa dyski do przechowywania i dwa do kontroli parzystości.

RAID-Z2

RAID-Z3 — co najmniej dwa dyski i trzy dyski dla parzystości.

RAID-Z3

Jak utworzyć RAIDz

Teraz przyjrzyjmy się, jak złożyć z dysków RAID-Z. Najpierw musicie określić dyski, z których zostanie zbudowana macierz.

Aby sprawdzić podłączone dyski i określić niezbędne, użyjemy narzędzia - fdisk. Uruchomcie następujące polecenie, aby zbudować listę dysków:

$ sudo fdisk -l

W rezultacie zobaczycie listę dysków ze szczegółowymi informacjami o każdym z nich.

Sprawdźcie podłączone dyski

Na przykład pokażę, jak zbudować RAIDZ pierwszego poziomu, jest to odpowiednik RAID5 z jednym dyskiem z parzystością. Umożliwia utrzymanie działania macierzy bez utraty danych w przypadku awarii jednego dysku.

Mam trzy dyski twarde /dev/sdd, /dev/sde, /dev/sdf. Stworzę pulę o nazwie zdata. Aby to zrobić, wykonam następujące polecenie:

$ sudo zpool create ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

$ sudo zpool create zdata raidz /dev/sdd /dev/sde /dev/sdf

Utwórzcie pulę o nazwie zdata

Jeśli pojawi się jakikolwiek błąd, możecie uruchomić polecenie za pomocą opcji -f po poleceniu zpool create, co wymusza uruchomienie polecenia.

$ sudo zpool create -f ith2-zfs-raid-1p zdata /dev/sdd /dev/sde /dev/sdf

Aby znaleźć punkt montowania po utworzeniu puli, uruchom polecenie df -h:

$ df –h

Uzyskajcie punkt montowania

Pula jest zamontowana w /zdata. Aby zmienić punkt montowania dla puli, użyjcie następującej składni.

$ sudo zfs set mountpoint =<path> <pool_name>

W tym przykładzie użyłam /var/pool jako nowego punktu montowania.

$ sudo zfs set mountpoint=/var/pool zdata

Sprawdzanie nowego punktu:

$ df –h

Sprawdzanie nowego punktu montowania

Możecie tworzyć katalogi w puli pamięci. Na przykład utworzę katalog o nazwie mydata

$ sudo zfs create zdata/mydata

Aby wyświetlić wszystkie pule pamięci ZFS w systemie, uruchomcie następujące polecenie:

$ zpool list

Wyświetl wszystkie pule pamięci ZFS w systemie

Aby zobaczyć konfigurację i stan każdego urządzenia w puli ZFS, uruchomcie polecenie status.

$ zpool status

Aby wyświetlić zdarzenia i rozwiązywać problemy, wprowadźcie następujące polecenie

$ sudo zpool events zdata –v

Pobierzcie konfigurację i stan każdego urządzenia w puli ZFS

Aby dodać kolejny dysk twardy do puli pamięci ZFS, musicie uruchomić polecenie z nazwą dysku, który chcecie dodać.

$ sudo zpool add zdata /dev/sdb

A po dodaniu dysku, zobaczmy stan puli:

$ zpool status

Dodawanie kolejnego dysku twardego do puli pamięci ZFS

Aby usunąć pulę pamięci ZFS, musicie uruchomić następujące polecenie.

$ sudo zpool destroy zdata

Jak tworzyć, wycofywać i usuwać migawki ZFS

Ten system plików umożliwia tworzenie migawek puli.

Migawka to kopia tylko do odczytu systemu plików utworzona w określonym momencie. Możecie robić migawki całych zestawów danych lub pul. Migawka zawiera oryginalną wersję systemu plików wraz ze wszystkimi zmianami wprowadzonymi od czasu wykonania migawki. Mówiąc najprościej, po utworzeniu migawki tworzona jest kopia różnicowa tylko do odczytu.

Aby utworzyć zrzut, użyjcie polecenia -zfs snapshot, a następnie nazwy zrzutu. W tym przykładzie użyłam zdata/mydata do utworzenia migawki.

$ sudo zfs snapshot zdata/mydata@snap1

Aby sprawdzić zrzut, uruchomcie następujące polecenie:

$ zfs list -t snapshot

Utwórz migawkę puli ZFS

W razie potrzeby możecie zmienić jego nazwę

sudo zfs rename zdata/mydata@snap1 zdata/mydata@snap2

Możecie cofnąć zmiany, wykonując operację wycofywania migawki. Pamiętajcie, że utracicie wszystkie zmiany od czasu wykonania zrzutu.

Aby powrócić do żądanego zrzutu, musicie uruchomić polecenie zfs rollback z nazwą żądanego zrzutu. Spowoduje to cofnięcie wszystkich działań w tym katalogu, które zostały wykonane po wykonaniu tego zrzutu.

$ sudo zfs rollback test-pool/mydata@snap1

Przywróć ZFS do pożądanej migawki

To polecenie przywróci system do żądanej daty.

Po zakończeniu przywracania możecie sprawdzić usunięte pliki w katalogu po wykonaniu zrzutu.

Przekazywanie i odbieranie ZFS

Migawki można zapisywać w pliku i zwracać z powrotem, co doskonale nadaje się do tworzenia kopii zapasowych lub wysyłania kopii przez sieć (na przykład przez ssh) w celu skopiowania systemu plików.

Polecenie - send wysyła migawkę systemu plików, która może zostać wysłana do pliku lub do innej maszyny w strumieniu. Polecenie odbierania akceptuje taki strumień i zapisuje kopię migawki z powrotem w systemie plików ZFS.

Na przykład utwórzmy kolejną migawkę i zapiszmy ją w pliku za pomocą następującego polecenia:

sudo zfs snapshot -r zdata/mydata@snap3

sudo zfs send zdata/mydata@snap2> ~/mydata-snap.zfs

Utwórzcie zrzut i zapiszcie go do pliku

A następnie zwróćcie go, wykonując następujące polecenie:

sudo zfs receive -F zdata/mydata-copy < ~/mydata-snap.zfs

Zwróćcie obraz z pliku

Za pomocą dodatkowych skryptów możecie skonfigurować automatyczne tworzenie migawek i wysyłanie na przykład na serwer za pośrednictwem protokołu ssh.

Kompresja danych ZFS

I jak wspomniano wcześniej, ZFS umożliwia automatyczną kompresję danych. Biorąc pod uwagę moc nowoczesnych procesorów, jest to przydatna opcja, ponieważ zmniejszony rozmiar danych oznacza, że mniej danych będzie fizycznie odczytywanych i zapisywanych, co skutkuje szybszymi operacjami we/wy. ZFS zapewnia szeroką gamę metod kompresji. Domyślnie jest to lz4 (wysokowydajny zamiennik lzjb), który zapewnia szybszą kompresję i dekompresję niż lzjb przy nieco wyższym stopniu kompresji. Aby zmienić poziom kompresji, możecie użyć polecenia:

sudo zfs set compression=gzip-9 zdata

Możecie nawet zmienić typ kompresji:

sudo zfs set compression=lz4 zdata

Wyświetlcie poziom kompresji:

sudo zfs get compressratio

kompresja danych ZFS

Najbezpieczniejszym wyborem jest lz4, ponieważ jest znacznie szybszy niż wszystkie inne opcje o dobrej wydajności.

Wniosek

Biorąc to wszystko pod uwagę, ZFS jest niewątpliwie systemem plików oferującym szeroki wachlarz możliwości. System plików pozwala nie tylko na efektywne i innowacyjne zarządzanie danymi, ale także w przypadku nieprzewidzianej sytuacji pozwoli na ich odtworzenie bez przerwy w pracy. Ponadto w przypadku awarii cały system można łatwo przywrócić za pomocą funkcji migawki i przywrócić go do określonego punktu w czasie.

Jeśli macie problemy z utratą danych z systemu plików ZFS i RAIDZ, użyjcie programu Hetman RAID Recovery. Z jego pomocą można odzyskać przypadkowo usunięte pliki z systemu plików ZFS lub uzyskać informacje ze zniszczonej macierzy RAIDZ. Program pomoże w przypadku awarii, formatowania, nadpisywania i innych przypadków utraty danych.

Przejdź do widoku
💿 Program do odzyskiwania danych z uszkodzonych macierzy RAID 💿

💿 Program do odzyskiwania danych z uszkodzonych macierzy RAID 💿

Oksana Volyniuk

Autor: , Pisarz techniczny

Oksana Volyniuk jest autorem pracującym w Hetman Software. Ma prawie trzyletnie doświadczenie w zakresie technologii IT, a wcześniej pracowała jako HR menedżer w IT kompanii. Oksana kocha technologię i jest zapalona tworzeniem każdego aktykułu, który może pomóć ludziom.

Michał Mirosznyczenko

Redaktor: , Pisarz techniczny

Michał Mirosznyczenko jest jednym z czołowych programistów firmy Hetman Software. Bazując na piętnastoletnim doświadczeniu w tworzeniu oprogramowania, dzieli się swoją wiedzą z czytelnikami naszego bloga. Oprócz programowania Michał jest ekspertem w dziedzinie odzyskiwania danych, systemów plików, urządzeń do przechowywania danych i macierzy RAID.

Rekomendujemy

Witamy w asystencie Hetman Software opartym na sztucznej inteligencji.
Rozpocznij czat