Dzięki deduplikacji - oszczędź miejsce, czas, pieniądze, nie przetwarzając wielokrotnie tego samego.
Czym jest deduplikacja ?
Z deduplikacją danych możesz spotkać się w systemach pamięci masowej. Celem deduplikacji jest ograniczenie zajętości miejsca na dyskach przez zapisywane dane, osiąga się to przez wyszukiwanie takich samych (zduplikowanych) fragmentów w zapisywanych danych. Zamiast ponownie zapisywać powtarzające się dane można zapisać adres do już istniejącego zapisanego bloku danych.
Efektem deduplikacji jest oszczędność miejsca na systemie dyskowym, a także czasu i zajętości łącza podczas np. replikacji danych po między systemami dyskowymi oraz przyspieszenia tworzenia kopii zapasowych.
Jest to mechanizm, który można odnaleźć zarówno w specjalizowanych macierzach dyskowych jak również na poziomie systemu plików w systemach operacyjnych Windows (np. Server 2012R2) oraz Linux (np. system plików ZFS) a także w systemach kopii zapasowych.
Pamiętaj że deduplikacja to nie kompresja, w jednych systemach lepiej sprawdzi się deduplikacja w innych kompresja czasem optymalne będzie połączenie deduplikacji i kompresji.
Jak działa deduplikacja ?
Poniżej widoczny jest uproszczony schemat działania deduplikacji, powtarzające bloki nie są ponownie zapisywane na dyskach. Przykładowe 16 bloków z 4 plików zajmuje fizycznie na dyskach 6 bloków, gdyż część bloków powtarza się.
Porównywane bloki mogą mieć stałe wielkości np. wartość z przedziału 4-128KB (fixed-block deduplication), istnieją także systemy w których wielkość bloku może być zmienna (variable-block deduplication) wykrywana automatycznie na podstawie typu zapisywanych danych.
Deduplikację można wykonywać jako proces optymalizacji wykorzystania miejsca na dysku, uruchamiany jako zadanie co określony czas lub na żądanie (post procesing). Deduplikacja może być wykonywana także w czasie rzeczywistym (inline) podczas procesu zapisywania danych.
Gdzie i jaką deduplikację stosować ?
Deduplikację warto wykorzystać tam gdzie chcemy zmniejszyć ilość zapisywanych lub przesyłanych danych, przy założeniu że w danych będą występować powtarzające się sekwencje.
Oszczędności miejsca na dyskach nie trzeba tłumaczyć, miejsce na dysku kosztuje pieniądze, ilość danych ciągle przyrasta, oszczędzając wykorzystanie miejsca na dyskach oznacza oszczędność pieniędzy. Deduplikacja potrafi przyspieszyć replikację po między dwoma systemami składowania danych, gdyż przesyłane są zdeduplikowane dane.
Deduplikacja potrafi przyspieszyć kopie zapasowe systemu oraz oszczędzać wykorzystanie łącza po między maszyną a składnicą danych, jest to deduplikacja na hoście przed wysłaniem danych. Jednak uwaga taką deduplikację na hoście warto stosować jeżeli łącze po między backupowaną a miejscem docelowym jest dla nas bardziej kosztowne niż zasoby CPU i RAM hosta. Mówiąc inaczej jeżeli dysponujemy szybkim łączem od maszyny backupowanej do miejsca składowania danych, nie warto przeznaczać jej zasobów na kosztowny obliczeniowo proces deduplikacji, lepiej zrobić to w docelowym i dedykowanym dla kopi zapasowych miejscu.
Dane zawierające zduplikowane bloki to głównie kopie zapasowe (różnice po między kolejnymi kopiami są zwykle niewielkie), pliki dysków maszyn wirtualnych (zwykle są to obrazy tych samych systemów operacyjnych różniących się zainstalowanymi opcjami dodatkowymi), pliki środowisk produkcyjnych i testowych/szkoleniowych.
Mniej przewidywalne są wszelkiego rodzaju wspólne składnice plików użytkowników, jeżeli uzyskamy tutaj wynik 20-30% odzyskanego miejsca jest to wynik bardzo dobry. Słabo lub wcale do deduplikacji nadają się pliki multimedialne, jednak i tutaj mogą pojawić się wyjątki np. wspólna składnica danych w firmie gdzie powstaje wiele wersji projektu posiadającego te same materiały źródłowe powielane w każdej kolejnej wersji.
Zarówno w przypadku plików dysków maszyn wirtualnych, jak również plików użytkowników warto rozważyć ich deduplikację w post processingu czyli zaplanowanym zadaniu w okresie zmniejszonego wykorzystania systemu. Deduplikację inline czyli w czasie rzeczywistym, można wykorzystać w systemach backupu, szybkość zapisu będzie obniżona lecz wykorzystanie zasobów dyskowych mniejsze.
Deduplikacja stałym blokiem potrzebuje mniejszych zasobów CPU+RAM niż deduplikacja zmiennym blokiem, deduplikacja zmiennym blokiem może uzyskiwać lepsze efekty odzyskiwania wolnego miejsca oraz nie wymaga ustalania na sztywno długości bloku na etapie zakładania woluminu.
Różni producenci prezentują także swoje własnościowe rozwiązania w zakresie deduplikacji poprawiające jej osiągi. Są to najczęściej ulepszone warianty wymienionych powyżej wersji deduplikacji.
Zanim uruchomisz deduplikację produkcyjnie, sprawdź jakie korzyści daje w środowisku testowym, ew. możesz wykonać ewaluację korzyści np. w Windows DDPEval.exe.
Czy są jakieś pułapki deduplikacji ?
Deduplikacja jest kosztowna pod względem zasobów CPU i RAM. W specjalizowanych systemach macierzowych i backupowych wydajność platformy jest tak dobrana aby zachować akceptowalny poziom wydajności. Uruchomienie deduplikacji dla systemu plików pod kontrolą systemu operacyjnego zwiększy wykorzystanie zasobów serwera. Przy uruchamianiu deduplikacji warto pamiętać aby sprawdzić czy osiągnięte oszczędności nie spowodują nadmiernego zapotrzebowania na zasoby RAM+CPU oraz spowolnienia działania systemu.
Teoretycznie deduplikacja może zmniejszyć bezpieczeństwo przechowywania danych, załóżmy że uszkodzeniu uległ blok wspólny dla wielu plików, w efekcie uszkodzeniu ulegną wszystkie pliki których blok był składnikiem. Oczywiście zdeduplikowane dane muszą być zapisywane na systemie dyskowym zapewniającym odporność na awarię.
Innym teoretycznym zagrożeniem jest kolizja w algorytmie haszującym (podobieństwo bloków określane jest przez porównywanie haszu (skrótu) bloku, gdyby się okazało że w algorytmie wystąpiła kolizja (dwa różne bloki posiadają ten sam hasz) dane ulegną utraceniu. Jest to możliwość wyłącznie teoretyczna gdyż stosowane algorytmy haszujące nie posiadają stwierdzonych możliwości wystąpienia kolizji, dodatkowo dane z bloków można porównywać jeden do jednego przed zapisaniem wskaźnika zamiast danych.
Czy można wypróbować deduplikację za darmo ?
Jest wiele sposobów na darmowe zapoznanie się z właściwościami deduplikacji, zarówno projekty komercyjne posiadają wersje trialowe jak również możesz w celach testowych wykorzystać projekty bezpłatne (np. ZFS w darmowym projekcie oprogramowania dla NAS www.freenas.org)
Dla testu i porównania ze środowiskami komercyjnymi można uruchomić wirtualne urządzenie projektu dedykowanego zdeduplikowanego magazynu danych:
http://opendedup.org
Ze strony można ściągnąć plik wirtualnego urządzenia (wirtualnej maszyny), którą można uruchomić pod wieloma wirualizatorami np. Oracle VirtualBox lub VMware Player.
Przedstawione zostały próby z wersją Virtual NAS Appliance (2.0.0) na dość słabym hoście z procesorem i3 i 16GB RAM. Po uruchomieniu maszyny możemy się zalogować do interfejsu WEB adres urządzenia w przeglądarce https://<server-ip> wprowadzając dane nazwa użytkownika: root hasło: admin.
Adres ip zostanie nadany automatycznie z DHCP, lub logując się z konsoli wirtualizatora możemy go skonfigurować np. wydając polecenie ifconfig. Dysk wirtualnego urządzenia będzie plikiem na dysku lokalnym naszego wirtualizatora, z konsoli Virtual NAS Appliance warto sprawdzić jakie dyski mamy dostępne np. poleceniem df, oraz sprawdzić jaka jest ich wydajność np. poleceniem:
hdparm -t /dev/sda. W przypadku środowiska testowego wydajność dysku wynosiła:
# hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 1728MB MB in 3.00 seconds = 575.95 MB/sec
Jednak to nie dysk będzie tutaj ograniczeniem, istotna będzie wydajność CPU.
Wersja 2.0.0 nie nadawała się w mojej ocenie do zastosowań produkcyjnych, lecz do testów spełniała swoje zadanie idealnie. Warto śledzić rozwój tego ciekawego projektu na http://opendedup.org.
Pierwszy etap to utworzenie woluminu SDFS:
Wolumin tworzymy lokalnie, dla celów testowych utworzyłem wolumin z deduplikacją stałym blokiem 4KB:
Krótkie podsumowanie, mamy wolumin 60GB który potrzebuje do prawidłowego działania 1.4GB pamięci RAM.
Spójrzmy na pliki wirtualnych dysków, system zajmuje 2GB, wolumin SDFS jest obecnie pusty i zajmuje 60MB.
Tworzymy udział testowy iSCSI o wielkości 30GB:
Po podłączeniu dysku iSCSI zaczynamy pisać na niego dane, prędkość zapisu waha się po między 10-40MB/s, użycie procesora wirtualizatora na poziomie 80%:
Po zapisaniu 2GB obrazów iso oraz ich dokładnej kopi okazuje się że system wykrył zduplikowane dane bezbłędnie i z 4GB danych zapisał jedynie 2GB:
Odczyt danych na poziomie 12MB/s:
Pora na coś trudniejszego, zapiszmy różne obrazy iso różnych dystrybucji linuksa, okazuje się że przy przy około 55GB danych jedynie 1.5GB to dane zdeduplikowane.
Dlatego zawsze warto sprawdzić deduplikację w praktyce na docelowych danych:
Wypróbuj deduplikację już dziś !
Fajne? Ranking DIY