Jak włączyć deduplikację ZFS

Jak włączyć deduplikację ZFS
Funkcja deduplikacji systemu plików ZFS to sposób na usunięcie zbędnych danych z pul/systemów plików ZFS. Mówiąc najprościej, jeśli przechowujesz wiele plików w swojej puli/systemie plików ZFS, a niektóre z tych plików są takie same, tylko jedna kopia tych plików byłaby przechowywana w ZFS Pula/system plików. Reszta będzie odniesieniem do tej kopii pliku. To zaoszczędzi dużo miejsca na dysku na twojej puli/systemie plików ZFS.

Technicznie, gdy kopiujesz/przenosisz/tworzysz nowe pliki na swojej puli/systemie plików ZFS, ZFS podzieli je na kawałki i porównuje te fragmenty z istniejącymi kawałkami (plików) przechowywanych w puli/pliku ZFS, aby zobaczyć, czy znalazł jakieś dopasowania. Tak więc, nawet jeśli części pliku są dopasowane, funkcja deduplikacji może zapisać przestrzenie dysku ZFS puli/systemu plików.

W tym artykule pokażę, jak włączyć deduplikację w pulach/systemach plików ZFS. Więc zacznijmy.

Spis treści:

  1. Tworzenie puli ZFS
  2. Włączanie deduplikacji na pule ZFS
  3. Włączanie deduplikacji na systemach plików ZFS
  4. Testowanie deduplikacji ZFS
  5. Problemy deduplikacji ZFS
  6. Wyłączanie deduplikacji na pulach/systemach plików ZFS
  7. Przypadki użycia dla deduplikacji ZFS
  8. Wniosek
  9. Bibliografia

Tworzenie puli ZFS:

Aby eksperymentować z deduplikacją ZFS, utworzę nową pulę ZFS za pomocą VDB I VDC Urządzenia przechowywania w konfiguracji lustrzanej. Możesz pominąć tę sekcję, jeśli masz już pulę ZFS do testowania deduplikacji.

$ sudo lsblk -e7

Aby utworzyć nową pulę ZFS Pool1 używając VDB I VDC Urządzenia pamięci w lustrzanej konfiguracji, uruchom następujące polecenie:

$ sudo zpool Utwórz -f pula 1 lustro /dev /vdb /dev /vdc

Nowa pula ZFS Pool1 należy utworzyć, jak widać na zrzucie ekranu poniżej.

Status $ sudo zpool

Włączanie deduplikacji na pulach ZFS:

W tej sekcji pokażę ci, jak włączyć deduplikację w puli ZFS.

Możesz sprawdzić, czy deduplikacja jest włączona w puli ZFS Pool1 Z następującym poleceniem:

$ sudo zfs get deedUp pula 1

Jak widać, deduplikacja nie jest domyślnie włączona.

Aby włączyć deduplikację w puli ZFS, uruchom następujące polecenie:

$ sudo zfs zestaw dedup = na puli1

Deduplikacja powinna być włączona w puli ZFS Pool1 Jak widać na zrzucie ekranu poniżej.

$ sudo zfs get deedUp pula 1

Włączanie deduplikacji na systemach plików ZFS:

W tej sekcji pokażę ci, jak włączyć deduplikację na systemie plików ZFS.

Najpierw utwórz system plików ZFS FS1 na puli ZFS Pool1 następująco:

$ sudo zfs Utwórz pulę1/fs1

Jak widać, nowy system plików ZFS FS1 Jest Utworzony.

Lista $ sudo zfs

Jak włączyłeś deduplikację na puli Pool1, deduplikacja jest również włączona w systemie plików ZFS FS1 (ZFS System FileSystem FS1 dziedziczy to z basenu Pool1).

$ sudo zfs get deedUp pula 1/fs1

Jako system plików ZFS FS1 dziedziczy deduplikacja (dedup) Własność z puli ZFS Pool1, Jeśli wyłączysz deduplikację w puli ZFS Pool1, deduplikacja powinna być również wyłączona dla systemu plików ZFS FS1. Jeśli tego nie chcesz, będziesz musiał włączyć deduplikację w systemie plików ZFS FS1.

Możesz włączyć deduplikację w systemie plików ZFS FS1 następująco:

$ sudo zfs Ustaw dedup = na puli1/fs1

Jak widać, deduplikacja jest włączona dla systemu plików ZFS FS1.

Testowanie deduplikacji ZFS:

Aby uprościć sytuację, zniszczę system plików ZFS FS1 Z puli ZFS Pool1.

$ sudo zfs niszczy pulę1/fs1

System plików ZFS FS1 należy usunąć z basenu Pool1.

Pobrałem obraz Arch Linux ISO na moim komputerze. Skopiujmy to do puli ZFS Pool1.

$ sudo cp -v pobieranie/archlinux -2021.03.01-x86_64.ISO /Pool1 /Image1.ISO

Jak widać, po raz pierwszy skopiowałem obraz Arch Linux ISO, zużył 740 MB miejsca na dysku z basenu ZFS Pool1.

Zauważ też, że wskaźnik deduplikacji (Dedup) Jest 1.00x. 1.00x współczynnika deduplikacji oznacza, że ​​wszystkie dane są wyjątkowe. Więc żadne dane nie są jeszcze deduplikowane.

Skopiujmy ten sam obraz Arch Linux ISO do puli ZFS Pool1 Ponownie.

Jak widać, tylko 740 MB przestrzeni dysku jest używana, mimo że używamy dwukrotności miejsca na dysku.

Współczynnik deduplikacji (Dedup) również wzrósł do 2.00x. Oznacza to, że deduplikacja oszczędza połowę miejsca na dysku.

$ sudo zpool lista

Mimo że 740 MB logicznie stosuje się przestrzeń dysku fizycznego 1.44 GB przestrzeni dysku jest używana na basenie ZFS Pool1 Jak widać na zrzucie ekranu poniżej.

Lista $ sudo zfs

Skopiujmy ten sam plik do puli ZFS Pool1 Jeszcze kilka razy.

Jak widać, po skopiowaniu tego samego pliku do puli ZFS Pool1, logicznie używa puli 3.59 GB miejsca na dysku.

Lista $ sudo zfs

Ale 5 kopii tego samego pliku używa tylko około 739 MB miejsca na dysku z fizycznego urządzenia pamięci masowej.

Współczynnik deduplikacji (Dedup) ma około 5 (5.01x). Tak więc deduplikacja zaoszczędziła około 80% (1-1/dedup) dostępnej przestrzeni dyskowej puli ZFS Pool1.

Im wyższy współczynnik deduplikacji (dedUP) danych przechowywanych w ZFS pula/system plików, tym więcej miejsca na dysku za pomocą deduplikacji.

Problemy deduplikacji ZFS:

Deduplikacja jest bardzo fajną funkcją i zapisuje dużo miejsca na dysku ZFS pula/system plików, jeśli dane przechowywane w swojej puli/systemie plików ZFS są zbędne (podobny plik jest przechowywany wielokrotnie).

Jeśli dane, które przechowujesz w swojej puli/pliku ZFS, nie mają większej redundancji (prawie unikalne), to deduplikacja nie przyniesie ci żadnego dobrego. Zamiast tego ostatecznie marnujesz pamięć, którą ZFS mógłby inaczej wykorzystać do buforowania i innych ważnych zadań.

Aby deduplikacja działała, ZFS muszą śledzić bloki danych przechowywane w Twojej puli/systemie plików ZFS. Aby to zrobić, ZFS tworzy tabelę deduplikacji (DDT) w pamięci (pamięć RAM) komputera i przechowuje bloki danych Hashed w puli/systemie plików ZFS. Tak więc, gdy próbujesz skopiować/przenieść/utworzyć nowy plik w ZFS Pool/FileSystem, ZFS może sprawdzić dopasowanie bloków danych i zapisywać przestrzenie dyskowe za pomocą deduplikacji.

Jeśli nie przechowujesz zbędnych danych na temat puli/plików ZFS, wówczas prawie nie nastąpi deduplikacja i nie zostanie zapisana nieistotna ilość przestrzeni dysku. Niezależnie od tego, czy deduplikacja zapisuje przestrzenie dysku, czy nie, ZFS nadal będzie musiał śledzić wszystkie bloki danych Twojej puli/systemu plików ZFS w tabeli deduplikacji (DDT).

Tak więc, jeśli masz dużą pulę/system plików ZFS, ZFS będzie musiał użyć dużo pamięci do przechowywania tabeli deduplikacji (DDT). Jeśli deduplikacja ZFS nie oszczędza dużo miejsca na dysku, cała ta pamięć jest zmarnowana. To duży problem deduplikacji.

Innym problemem jest wysokie wykorzystanie procesora. Jeśli tabela deduplikacji (DDT) jest zbyt duża, ZFS może również wymagać wielu operacji porównawczych i może zwiększyć wykorzystanie procesora komputera.

Jeśli planujesz skorzystać z deduplikacji, powinieneś przeanalizować swoje dane i dowiedzieć się, jak dobrze deduplikacja będzie działać z tymi danymi i czy deduplikacja może zrobić dla Ciebie oszczędność kosztów.

Możesz dowiedzieć się, ile pamięci tabela deduplikacji (DDT) puli ZFS Pool1 używa następującego polecenia:

$ sudo zpool status -d pula 1

Jak widać, tabela deduplikacji (DDT) puli ZFS Pool1 przechowywane 5860 wpisy i każdy wpis używa 324 bajtów pamięciowy.

Pamięć używana dla DDT (pula 1) = 5860 wpisów x 324 bajtów na wpis

= 1 898 640 bajtów
= 1 854.14 kb
= 1.8107 MB

Wyłączanie deduplikacji na pulach/systemach plików ZFS:

Po włączeniu deduplikacji w ZFS pula/system plików, deduplikowane dane pozostają deduplikowane. Nie będziesz mógł pozbyć się dedupliczonych danych, nawet jeśli wyłączysz deduplikację na swojej puli/systemie plików ZFS.

Ale istnieje prosty hack do usunięcia deduplikacji z puli/plików ZFS:

i) Skopiuj wszystkie dane z puli/plików ZFS do innej lokalizacji.

ii) Usuń wszystkie dane z puli/plików ZFS.

iii) Wyłącz deduplikację na puli/systemie plików ZFS.

iv) Przesuń dane z powrotem do swojej puli/plików ZFS.

Możesz wyłączyć deduplikację na swojej puli ZFS Pool1 Z następującym poleceniem:

$ sudo zfs konfiguracja dedup = poza puli1

Możesz wyłączyć deduplikację w systemie plików ZFS FS1 (Utworzone w puli Pool1) Z następującym poleceniem:

$ sudo zfs Ustaw dedup = poza puli1/fs1

Po usunięciu wszystkich plików dedupliczonych i wyłączeniu deduplikacji tabela deduplikacji (DDT) powinna być pusta, jak zaznaczono na zrzucie ekranu poniżej. W ten sposób weryfikujesz, że w Twojej puli/pliku nie ma miejsca deduplikacja.

$ sudo zpool status -d pula 1

Przypadki użycia dla deduplikacji ZFS:

Deduplikacja ZFS ma pewne zalety i wady. Ale ma pewne zastosowania i może być skutecznym rozwiązaniem w wielu przypadkach.

Na przykład,

i) Dalatory domu użytkownika: Możesz być w stanie użyć deduplikacji ZFS do katalogów domowych użytkowników swoich serwerów Linux. Większość użytkowników może przechowywać prawie podobne dane w swoich katalogach domowych. Istnieje więc duża szansa, że ​​deduplikacja jest tam skuteczna.

ii) Udostępniony hosting: Możesz użyć deduplikacji ZFS do udostępniania WordPress i innych stron internetowych CMS. Ponieważ WordPress i inne strony internetowe CMS mają wiele podobnych plików, deduplikacja ZFS będzie tam bardzo skuteczna.

iii) chmury hostowane: Możesz być w stanie zaoszczędzić sporo miejsca na dysku, jeśli używasz deduplikacji ZFS do przechowywania danych użytkownika NextCloud/OwnCloud.

iv) Rozwój sieci i aplikacji: Jeśli jesteś programistą sieci/aplikacji, bardzo prawdopodobne jest, że będziesz pracować z wieloma projektami. Możesz używać tych samych bibliotek (i.mi. Moduły węzłów, moduły Python) w wielu projektach. W takich przypadkach deduplikacja ZFS może skutecznie zaoszczędzić dużo miejsca na dysku.

Wniosek:

W tym artykule omówiłem, jak działa deduplikacja ZFS, zalety i wady deduplikacji ZFS oraz niektóre przypadki użycia deduplikacji ZFS. Pokazałem ci, jak włączyć deduplikację w pulach/systemach plików ZFS.

Pokazałem również, jak sprawdzić ilość pamięci Tabela deduplikacji (DDT) twoich pul/systemów plików ZFS. Pokazałem ci, jak wyłączyć deduplikację w swoich pulach/systemach plików ZFS.

Bibliografia:

[1] Jak rozmiar pamięci głównej dla deduplikacji ZFS

[2] Linux - jak duży jest w tej chwili mój tabelę ZFS? - Ustalenie serwera

[3] Wprowadzenie ZFS na Linux - Damian Wojstaw