Więcej danych i więcej wolnego miejsca

Deduplikacja

Jest to technologia, która zmniejsza ilość danych poprzez usuwanie powtarzających się informacji w plikach lub na niższym poziomie, np. powtarzających się bloków w systemie plików. Najczęściej ta metoda była stosowana podczas tworzenia archiwów i kopii zapasowych, ale dzięki wzrostowi mocy obliczeniowej coraz częściej znajduje się zastosowanie również w systemach produkcyjnych. Wszyscy główni dostawcy rozwiązań macierzowych i backupowych mają w ofercie produkty wyposażone w mechanizmy deduplikacji.

Proces wyszukiwania duplikatów jest realizowany na dużym zbiorze danych lub w dużej przestrzeni adresowej systemu plików. To wpływa negatywnie na wydajność, ponieważ niesie ze sobą znaczny narzut. Dlatego w praktyce stosowanie deduplikacji wiąże się z różnymi kompromisami. Przykładowo, algorytm wyszukujący duplikaty i operujący na małych porcjach danych ma szansę znaleźć znacznie więcej powtarzających się ciągów znaków, niż gdyby szukać duplikatów większych fragmentów. Jednak odbywa się to kosztem przyrostu ilości metadanych i wymaganych większych zasobów systemowych.

Zobacz również:

  • Plikowa, blokowa czy obiektowa pamięć masowa?

Kolejnym ważnym czynnikiem do rozważenia jest wybór deduplikacji w czasie rzeczywistym (inline) lub operującej na danych zapisanych na dyskach (postprocess). W pierwszym przypadku deduplikacja przetwarza dane zapisywane na nośnikach, dzięki czemu wszystkie dane są zdeduplikowane. To rozwiązanie jest chętnie reklamowane przez dostawców, ale trzeba być świadomym, jaki jest jego wpływ na działanie systemów pamięci masowych. Przede wszystkim oznacza narzut na wydajność każdego procesu zapisu danych. W przypadku aplikacji, których dane nie poddają się dobrze deduplikacji, rozwiązanie typu inline może przynieść więcej strat niż korzyści.

Myśląc o deduplikacji, nie można więc brać pod uwagę tylko aspektu optymalizacji pojemności dysków. Istotne są również takie kwestie, jak dostępna moc obliczeniowa czy ilość pamięci operacyjnej RAM. Metody czasu rzeczywistego przetwarzają wszystkie dane, niezależnie od korzyści, jakie przynosi ten proces. W efekcie mogą przynieść korzyści lub starty, w zależności od typu danych. W przypadku zbiorów zawierających niewiele duplikatów oszczędność miejsca będzie mizerna, a okupiona obniżeniem wydajności. Spadek wydajności nie dotyczy wyłącznie operacji zapisu. Wystąpi również przy próbach sekwencyjnego odczytu zdeduplikowanych danych. Poza tym kontroler macierzy będzie rezerwował duże ilości pamięci RAM do przechowywania metadanych opisujących zdeduplikowane dane. Tymczasem ten cenny zasób mógłby służyć lepszym celom, np. jako pamięć podręczna.

Jest kilka popularnych formatów danych, które opornie poddają się deduplikacji. Pierwszym są pliki protokołowania (logi) serwerów aplikacyjnych i WWW, które z reguły w każdej linii zawierają unikalny znacznik czasu. Takie pliki nadają się natomiast świetnie do kompresji. Drugi przykład to znormalizowane bazy danych, które często mają sekcję nagłówka, unikalną dla każdego bloku danych. Z tego względu korzyści z deduplikacji są niewielkie, chyba że analizuje się porcje danych mniejsze niż bloki bazy danych. Wtedy baza danych z wiadomościami e-mail może być dobrym kandydatem do deduplikacji. Jeśli jednak załączniki do wiadomości zostały wcześniej zdeduplikowane na poziomie aplikacji, powtarzanie tej operacji przez macierz dyskową nie ma sensu. Dobry kandydatem do deduplikacji są również wirtualne desktopy, o ile są pełnym kopiami. Jeśli mamy do czynienia z powiązanymi klonami (linked clone), próba deduplikacji na poziomie bloków nie przyniesie oczekiwanych korzyści.

Więcej danych i więcej wolnego miejsca

Tradycyjna alokacja a thin provisioning

Mając na uwadze wymienione przykłady, technologia deduplikacji powinna obsługiwać wszystkie rodzaje aplikacji, ale jednocześnie powinna automatycznie wyszukiwać te zbiory danych, które dobrze poddają się temu procesowi.

Fragmentacja kontra deduplikacja

Wydajność i duże zapotrzebowanie na zasoby to nie jedyne wyzwania związane z deduplikacją w czasie rzeczywistym. Trzeba się też liczyć z innymi problemami, jeśli bezwarunkowo poddaje się deduplikacji wszystkie dane. Jednym z nich jest fragmentacja danych, powodująca spadek wydajności odczytów sekwencyjnych. Podczas zapisu plików deduplikacja może spowodować, że duże bloki danych ułożone w logicznym ciągu zostaną rozbite na bloki chaotycznie rozrzucone w przestrzeni dyskowej. W konsekwencji sekwencyjny odczyt nie będzie możliwy. To problem, ponieważ zarówno dyski obrotowe jak i nośniki flash charakteryzują się gorszą wydajnością dla losowych operacji wejścia/wyjścia.

Efektem deduplikacji jest też znaczne zwielokrotnienie odczytu, szczególnie w przypadku operowania na małych porcjach danych. Przykładowo, jeśli algorytm analizuje porcje danych liczące 512 bajtów, a dysk jest podzielony na bloki o wielkości 4096 bajtów, de facto odczytanie zawartości jednego bloku wymaga 8 operacji odczytu po 4096 bajtów. Takie zwielokrotnienie liczby operacji odczytu powoduje spadek wydajności.

Deduplikacja operująca na małych porcjach danych prowadzi również do znacznej fragmentacji plików i metadanych. W efekcie pamięć masowa potrzebuje więcej czasu, aby śledzić wolną przestrzeń na dyskach. Poza tym przy przenoszeniu zdeduplikowanych danych trzeba razem z nimi skopiować znaczną ilość metadanych. W przypadku nośników flash pojawia się dodatkowy problem. Duża liczba operacji zapisu powoduje szybsze ubywanie dostępnego wolnego miejsca.

Praktyczne rozwiązanie tych problemów oferuje, m.in. firma Quantum. Jej inżynierowie opracowali algorytm deduplikacji potrafiący operować na blokach danych o zmiennej długości. Rozmiar bloku jest dostosowany do specyfiki przetwarzanych danych. Technologia opracowana przez Quantum dzieli strumień danych na segmenty o różnej długości, wykorzystując metodologię dostosowującą się do formatu danych. Potrafi ona wyszukać granice powtarzających się bloków w różnych lokalizacjach.

Ten proces tworzenia bloków umożliwia płynne przesuwanie granic w obrębie strumienia danych, dzięki czemu zmiany zachodzące w jednej części nie mają wpływu (lub niewielki) na granice bloków w innych obszarach zbioru danych. Dzięki tej metodzie można znaleźć powtarzające się segmenty danych w różnych miejscach w obrębie pojedynczego lub różnych plików, także tworzonych przez różne aplikacje i w różnym czasie.


TOP 200