środa, 12 stycznia 2011

Deduplikacja - kopie idą precz! (Część 1 - podstawy)

       W ostatnich latach obserwujemy bardzo intensywny przyrost ilości gromadzonych i składowanych danych, zjawisko te doczekało się nawet swojej nazwy: "data explosion". Przyczyny takiego stanu rzeczy to po pierwsze, coraz większy "apetyt" firm i przedsiębiorstw na informacje, a po drugie łatwość w tworzeniu dużych ilości danych ( filmy w jakości HD , zdjęcia cyfrowe itd...). Dodatkowo, jeżeli chodzi o wymagania dotyczące składowań i odtworzeń danych, to niezależnie od wzrostu ich wolumenu, bardzo często zaostrzają się także wymagania dotyczące parametrów związanych z czasami wykonywania tych operacji  - skróceniu ulegają okna backupowe, a odtworzenia także powinny odbywać się dużo szybciej. Wymagany jest coraz mniejszy RTO (Recovery Time Obejctive).
  
        Biorąc pod uwagę te wymagania, standardowy backup danych na taśmę, może nie spełnić swojego zadania, a bezpośrednie składowanie danych na dyskach twardych jest dość kosztowne. Jednym z rozwiązań pozwalającym spełnić wymagania dotyczące szybkości wykonywania składowań/odtworzeń a jednocześnie utrzymać koszty na dość niskim poziomie (porównywanym lub nawet niższym niż backup na taśmach) jest DEDUPLIKACJA.


Czym jest deduplikacja?

Jest to metoda polegająca na usunięciu wszystkich powtarzających się danych i zastąpieniu ich wskaźnikami do jednego "oryginalnego" egzemplarza. Dzięki takiemu podejściu eliminujemy nadmiarowość w składowanych danych, co może przynieść znaczące oszczędności. Jest to związane z faktem, że bardzo często zapisujemy wielokrotnie dokładnie te same dane (np: wykonując co miesiąc pełny backup jakiegoś zasobu), a dodatkowo poszczególne składowania także zawierają wiele zwielokrotnionych informacji (np: w zasobie będącym katalogiem z dokumentami, informacje dotyczące struktury i budowy samych plików - *.doc , *.pdf są takie same dla każdego z nich ).


Jaka jest różnica pomiędzy deduplikacją a kompresją?

          Podstawowa różnica pomiędzy deduplikacją a kompresją to fakt, że kompresja działa "lokalnie" natomiast deduplikacja "globalnie". Pisząc lokalnie i globalnie nie mam na myśli żadnej formalnej definicji tych pojęć, jest to pewien "skrót myślowy", który postaram się dokładniej wytłumaczyć.
Kompresja zminiejsza wielkość pliku usuwając w nim nadmiarowe fragmenty. Często występujące ciągi danych są eliminowane, wszystko to jednak odbywa się w obrębie jednego obiektu (np: pliku). Kompresowanie wielu plików naraz, daje ten sam rezultat co ich kompresowanie oddzielne.
Deduplikacja, w przeciwieństwie do tego podejścia, dotyczy całości objętych nią danych. Proces ten sprawdza, na różnym poziomie, czy dane, które za jego pomocą są przetwarzane (składowane), nie powtórzyły się już wcześniej - jeżeli taka sytuacja ma miejsce, to cały powtarzający się fragment jest usuwany, i zastępowany wskaźnikiem do już istniejącego zeskładowanego egzemplarza.
Obrazowo różnicę (i przewagę) deduplikacji nad kompresją można pokazać na dwóch przykładach:

  1. Składowanie zasobu na którym znajduje się kilkadziesiąt maszyn wirtualnych. Kompresja - usunie nadmiarowość z każdej z tych maszyn osobno, powodując redukcję wielkości każdej z nich ( i sumarycznie wszystkich danych po zeskładowaniu) o jakieś 20 do 50%. Deduplikacja - usunie wszystkie duplikacje danych w całym zasobie. Ponieważ maszyny wirtualne są do siebie bardzo podobne ( ta sama struktura i większość danych wewnątrz) tak więc zachowanie jedynie pojedynczych egzemplarzy każdej informacji spowoduje, że wielkość zdeduplikowanego zasobu zostanie zmniejszona kilkunastoktrotnie - do wielkości jednej maszyny wirtualnej + niewielki dodatek zawierający unikalne dane z każdej z VMek.
  2. Wykonanie kilku pełnych backupów (np: w tygodniowych odstępach czasu) z tego samego zasobu. Przy kompresji otrzymujemy kilkudziesięcio procentową oszczędność na każdym ze składowań ( wykorzystując np zapis na taśmy możemy uzyskać kompresję 2:1 lub 3:1 w zależności od wykorzystanego napędu). Stosując deduplikację - mimo iż wykonujemy składowania pełne, zapisywane są jedynie zmienione i unikalne fragmenty (podobnie, choć nie całkiem tak samo jak przy backupach inkrementalnych)



Jak działa deduplikacja?

         Sam proces deduplikacji może być wykonywany wieloma sposobami, jednak idea i główny schemat działanie pozostaje ten sam. Utrzymywane są dwie struktury - pierwsza z nich to zdeduplikowane dane , druga to tzw: tabela skrótów (lub hashy). Z każdej porcji danych (chunk) wpadająca do systemu deduplikującego, liczony jest tzw skrót - jest on generowany za pomocą funkcji hashujących i ma długość kilkudziesięciu bajtów. Skrót ten jest czymś w rodzaju "odcisku palca" konkretnej porcji danych - jeżeli jest identyczny dla dwóch ciągów danych, oznacza to, ze te ciągi także są identyczne. Jeżeli skrót, z danych które przybyły do systemu deduplikującego, nie został znaleziony w tablicy skrótów, to jest on tam dopisywany, a dane zostają zeskładowane. Jeżeli jednak skrót już był obecny w systemie, to dane nie są składowane a jedynie zastępowane wskaźnikiem do już istniejącejącego w systemie deduplikacyjnym ich egzemplarza.


Poziomy działania deduplikacji:

Podstawowa kwestia to na jakim poziomie szukamy kopii danych do usunięcia. Można wyróżnić kilka wariantów:


  • Deduplikacja na poziomie pliku - sprawdzenie odbywa się, jak sama nazwa wskazuje, na poziomie pliku. Jeżeli znajdowane są indentyczne co do zawartości i uprawnień pliki to przechowywany jest jedynie jeden egzemplarz. Często systemy stosujące ten typ deduplikacji nazywa się SIS (Single Instance Storage). Jest to najmniej efektywny, ale jednocześnie najprostszy i wymagający najmniejszych nakładów sprzętowych mechanizm deduplikacji.
  •  Deduplikacja na poziomie bloku stałej wielkości (fixed block level) - w tej metodzie jednostką danych, co do której generuje się skrót i sprawdza czy jest unikalna, jest blok. Im krótszy blok jest używany, tym większa ilość kopii może być odnaleziona i większy uzysk na przestrzeni. Deduplikacja na poziomie bloku wykorzystuje fakt, że bardzo wiele plików różni się od siebie tylko w małej części (np: wspomniane już pliki maszyn wirtualnych, czy dwóch plików doc).
  • Deduplikacja na poziomie bloku o zmiennej wielkości (variable block level) - wykorzystuje podobny mechanizm jak metoda nr 2 , jednak w tym przypadku bloki, na jakie dzielone są dane, nie mają stałej wielkości, ale są dopasowywane tak aby wyłapać jak najwięcej i jak największych ciągów danych do zdeduplikowania - dzięki temu metoda deduplikacji zmiennym blokiem jest bardziej efektywna niż jej wersja operująca blokiem o stałej wartości
  • Deduplikacja na pozimie bajtów (byte-level deduplication) - polega na porównywaniu bajt po bajcie przychodzącego do silnika deduplikacyjnego strumienia danych i wyszukiwania wszystkich powtarzających się fragmentów. Zwykle taka metoda jest połączona z tzw deduplikacją "content-aware" - czyli przystosowaną i zoptymalizowaną do pracy z pewnymi typami danych ( pliki .jpg , .doc itd...)


Współczynnik deduplikacji:

Efektywność samego procesu jest opisywana jednym współczynnikiem zwanym, po prostu, współczynnikiem deduplikacji. Jest to stosunek pojemności danych oryginalnych, do pojemności zajmowanej przez dane zdeduplikowane. Przykładowo jeżeli 100GB zasób danych po zddeduplikowaniu zajmuje 10GB , to współczynnik deduplikacji jest równy 10:1
Wartość tego współczynnika zależy zarówno do algorytmu który wyszukuje kopie i duplikaty, jak i od poziomu na jakim deduplikcja przebiega (plik, blok , itd...) a także (a raczej przede wszystkim) od samych danych jakie temu procesowi podlegają.
Biorąc pod uwagę tą ostatnią zależność, bardzo ciężko jest precyzyjnie wyznaczyć współczynnik deduplikacji dal konkretnych danych, inaczej niż po prostu je deduplikując i sprawdzając. Dlatego też należy z dużą dawką ostrożności podchodzić do podawanych przez producentów wartości tego parametru dla stworzonych przez nich produktów.


Warianty deduplikacji:

Oprócz rozróżnienia bazującego na poziomie, na którym usuwane są kopie , systemy deduplikujące można także podzielić wegug kilku innych kryteriów:

Podział ze względu na miejsce deduplikacji:

  • Deduplikacja na celu (target dedupliaction) - w tej metodzie proces deduplikacji odbywa się na urządzeniu przechowujących dane. Zwykle takie urządzenie  (appliance) ma także funkcję wirtualnej biblioteki taśmowej (VTL), przez co serwery backupowe składujące dane, widzą to jako zwykłą bibliotekę. Dane są przesyłane w normalny sposób ( np: po sieci LAN lub SAN) a potem deduplikowane i zapisywane na dyskach. Zaletą tego typu rozwiązania jest fakt, że proces deduplikacji nie obciąża samych klientów. Dodatkowo tego typu rozwiązanie może bardzo łatwo zostać zintegrowane z istniejącą infrastrukturą i używanym oprogramowaniem backupującym.
  • Deduplikacja na źródle (source deduplication) - w tym wariancie, dane są deduplikowane na kliencie, jeszcze przed wysłaniem ich do urządzenia na którym będą zeskładowane. Jeżeli chodzi o słabe strony to przede wszystkim to rozwiązanie wymaga zaangażowania dodatkowych zasobów po stronie CPU i pamieci do przeprowadzenie deduplikacji. Po drugie musi ono być wspierane przez agentów programu backupującego, którzy są zainstalowani na składowanych hostach. To drugie ograniczenie jest szczególnie istotne w środowiskach, gdzie aplikacja backupowa nie wspiera tego rodzaju deduplikacji - wtedy albo aplikację zmieniamy (co jest dość skomplikowane ) albo decydujemy się na rozwiązanie deduplikujące na celu. Jeżeli chodzi o zalety deduplikcji na źródle to podstawową jest otrzymanie uzysku, nie tylko na przestrzeni dyskowej, ale także na zużyciu łącza przez które przesyłamy dane - ponieważ są one już zdeduplikowane, więc wysłaniu podlega jedynie ich niewielka część. Rozwiązania tego typu są szczególnie korzystne przy wykonywaniu backupów poprzez sieć WAN lub Internet ( np: centralnie przechowywane backupy z regionalnych jednostek danej firmy)


Podział ze względu na czas deduplikacji:

  • Deduplikacja inline - w tej metodzie dane są deduplikowane natychmiast po dotarciu do urządzenia na którym są składowane - silnik deduplikujący robi to "w locie" i na dyski zapisywane są jedynie dane unikalne, już po usunięciu duplikatów. Zaleta takiego podejścia to przede wszystkim niższy koszt związany z mniejszą ilością potrzebnych dysków( nie ma cache dyskowego na który zapisuje się dane przed ich zdeduplikowaniem). Wadą jest zagrożenie spowolnienia działania całego systemu, gdy baza skrótów urośnie i jej przeszukanie zacznie zabierać więcej czasu. System może wtedy nie być w stanie deduplikować nowo przychodzących danych z prędkością z jaką są one wysyłane przez klientów.
  • Deduplikcja post-proces - w tej metodzie, dane przychodzące do urządzenia, są najpierw zapisywane na dysk, a dopiero potem przetwarzane i zapisywane w formie zdeduplikowanej. Zaletą jest wydajność takiego rozwiązania, którą ogranicza jedynie wydajność dysków - nie ma potrzeby przeprowadzania dodatkowych czynności przed zapisaniem danych. Wada to większy koszt związany z potrzebą utrzymania dodatkowych przestrzeni na oryginalne dane.


Sam temat deduplikacji jest bardzo obszerny i niemożliwy do wyczerpania w pojedyńczym wpisie - to co opisałem to pewna baza i podstawy aby wgłębić się w zagadnienie.
Sprawy związane z deduplikacją będą kontynuowane w tym blogu.

Do poczytania:

Deduplikacja: sposob na duze oszczednosci
Deduplikacja, czyli backup na diecie
Data deduplication
Data deduplication tutorial


wtorek, 11 stycznia 2011

Cisza przed burzą

Długo nie pojawiało się tu nic nowego, więc czas przygotować chociaż króciutki wpis:

Kończę powoli powtórkę materiału do ISMa , lada dzień zapisuję się na egzamin i mam nadzieję, że już niedługo będę mógł pochwalić się tytułem EMC Proven Assosiate ;)

Co się z tym wiąże to sprawa tego blogu, który rozpoczął się jako blog o sprawach związanych ze storage, potem przeszedł w zbiór wpisów-notatek przygotowujących do jednego z certyfikatów EMC , a potem "zamarł" na okres kiedy odłożyłem pisaninę i zająłem się powtórkami przed egzaminem.

Nie zarzuciłem jednak całkowicie blogowania i powolutku, z małym priorytetem, przygotowywałem się do podjęcia kolejnych tematów. Na dniach pokaże się wpis dotyczący deduplikacji i temat ten będzie kontynuowany w co najmniej jeszcze dwóch kolejnych odsłonach.

Potem czas pokaże co dalej.