Oglądaj/Otwórz

Transkrypt

Oglądaj/Otwórz
Fragmentacja w systemach przechowywania
kopii zapasowych z eliminacją duplikatów
Michał Kaczmarczyk
Autoreferat rozprawy doktorskiej
1
Wprowadzenie
Prawie 75% danych wytwarzanych na świecie w ciągu każdego roku to kopie (duplikaty) [13, 14]. Gdy ograniczymy nasz obszar zainteresowania wyłącznie do danych zapisywanych w systemach przechowywania kopii zapasowych, ilość nieunikalnych informacji często przekracza nawet 95% [15, 39].
Przechowywanie tych samych danych w wielu kopiach jest jedną z głównych
przyczyn zainteresowania zagadnieniem deduplikacji, która w ciągu ostatnich 10 lat zdobyła ogromną popularność najpierw jako cel badań naukowych [6, 20, 31, 33, 34, 36, 37, 39], a następnie jako kluczowy element wielu
rozwiązań komercyjnych [1, 2, 3, 5, 7, 8, 10, 16, 24, 30, 32, 35]. W samym
tylko 2013 roku wartość rynku systemów przechowywania kopii zapasowych
z eliminacją duplikatów (zwanej deduplikacją) wyniosła ponad 3 miliardy
dolarów [17].
Kluczową własnością wszystkich systemów przechowywania kopii zapasowych jest docelowy czas odtworzenia danych (Recovery Time Objective).
Konkretna wartość tego parametru jest jednym z głównych elementów umowy
zawieranej pomiędzy dostawcą systemu a klientem. Raz ustalona wydajność
odczytu powinna być zapewniona przez cały czas życia systemu, jednak pojawienie się deduplikacji znacząco komplikuje to zadanie.
W większości systemów z deduplikacją dane strumienia wejściowego są
dzielone na małe bloki (np.: 8KB). Do zapisu na dysk dochodzi wtedy, gdy
zweryfikowana zostanie unikalność danego bloku w systemie. Jeżeli blok okazuje się być kopią, to zapamiętywany jest adres poprzednio zapisanego bloku.
Oczywistą konsekwencją takiego sposobu zapisu jest rosnąca fragmentacja,
która powoduje znaczące wydłużenie czasu odczytu, a tym samym odzyskiwania danych z kopii zapasowych. Przedstawiana rozprawa doktorska zawiera
szczegółową analizę problemu oraz propozycje algorytmów redukujących negatywny wpływ dwóch z trzech zidentyfikowanych w pracy rodzajów fragmentacji.
Główna część rozprawy, zawierająca opis problemu fragmentacji i algorytm kontekstowego przepisywania bloków, oparta jest na artykule opubli-
kowanym w czerwcu 2012 roku [18]. Był to jeden z pierwszych w literaturze przedmiotu artykułów podejmujących analizę wspomnianego problemu.
Oprócz definicji typów fragmentacji będącej wynikiem deduplikacji zaproponowałem w nim również rozwiązanie dla najbardziej istotnego z nich - fragmentacji pomiędzy różnymi wersjami, spowodowanej tworzeniem okresowych
kopii zapasowych tego samego zbioru danych. W konsekwencji artykuł przyczynił się do powstania nowego obszaru badań [12, 19, 23, 26] obejmującego
fragmentację spowodowaną deduplikacją.
Jako istotne uzupełnienie powyższych badań, moja rozprawa wprowadza
algorytm pamięci podręcznej z ograniczoną wiedzą przyszłą. Stanowi on rozwiązanie dla problemu wewnętrznej fragmentacji strumienia, spowodowanej
przez te same bloki pojawiające się wielokrotnie w pojedynczej wersji kopii zapasowej. Wspomniany algorytm umożliwia efektywne użycie pamięci
podręcznej w systemach kopii zapasowych z deduplikacją. Co istotne, zastosowany wraz z algorytmem kontekstowego przepisywania bloków, często pozwala na odtworzenie danych z szybkością odczytu danych sekwencyjnych.
Szczegółowe wyniki eksperymentów oraz wpływ zastosowania obu algorytmów na systemy zapisujące dane na wielu dyskach jednocześnie znajdują się
w treści rozprawy.
W celu analizy własności kopii zapasowych i weryfikacji powyższych algorytmów, we współpracy z zespołem programistów firmy 9LivesData został
stworzony symulator systemu przechowywania kopii zapasowych z deduplikacją. Dzięki możliwości efektywnej analizy danych zebranych od użytkowników przechowujących kopie zapasowe, umożliwił on sformułowanie istotnych
wniosków dotyczących fragmentacji i jej rodzajów. Dodanie zaproponowanych przeze mnie algorytmów umożliwiło z kolei bezpośrednie porównanie
z najpopularniejszymi na rynku rozwiązaniami. Implementacja wspomnianego symulatora została częściowo oparta na komercyjnym systemie NEC
HYDRAstor [25], którego innowacyjna architektura została przedstawiona
w artykule ”HYDRAstor: a Scalable Secondary Storage” [6] mojego współautorstwa.
Podsumowując, głównym celem rozprawy jest zaprezentowanie rozwiązania pozwalającego uniknąć redukcji wydajności odzyskiwania danych w systemach przechowywania kopii zapasowych z eliminacją duplikatów. Na jego
realizację składają się:
• szczegółowa analiza i opis problemu fragmentacji specyficznego dla systemów przechowywania danych z deduplikacją (zwłaszcza deduplikacji
w locie, jako dominującej), wykonana w oparciu o rzeczywiste dane
zebrane od użytkowników;
2
• identyfikacja wymagań i propozycje możliwych konfiguracji dla algorytmów rozwiązujących problem;
• algorytm kontekstowego przepisywania bloków mający na celu minimalizację wpływu fragmentacji pomiędzy wersjami kopii zapasowych na
odczyt, bez pogorszenia współczynnika deduplikacji oraz wywierający
jedynie minimalny wpływ na maksymalną wydajność zapisu;
• algorytm pamięci podręcznej z ograniczoną wiedzą przyszłą, będący rozwiązaniem znacząco poprawiającym efektywność wykorzystania pamięci
oraz maskującym wewnętrzną fragmentację strumienia poprzez wykorzystanie charakterystyki systemów kopii zapasowej;
• weryfikacja postawionych w pracy wymagań, w tym weryfikacja wymagań wydajnościowych oparta o symulacje zapisu i odczytu rzeczywistych kopii zapasowych tworzonych przez użytkowników;
• analiza problemu fragmentacji i działania zaproponowanych algorytmów w kontekście odczytu pojedynczego strumienia danych z wielu
dysków.
W rozprawie doktorskiej przedstawiam szczegółowy opis pojęcia deduplikacji oraz systemów ją wykorzystujących. Poprzedzony jest on objaśnieniem
powodów, dla których opisywane badania zostały podjęte oraz dokładną analizą problemu. Główne algorytmy opisane są w osobnych rozdziałach ukazujących wszystkie aspekty ich założeń i implementacji. Niezwykle istotną częścią
pracy jest opis eksperymentów przeprowadzonych na zbiorze rzeczywistych
danych zebranych od użytkowników. Eksperymenty te ukazują skalę problemu oraz weryfikują efektywność zaproponowanych rozwiązań. W końcowej części pracy zawarte zostały odniesienia do innych artykułów z dziedziny
wraz z podsumowaniem oraz opisem proponowanych kierunków dalszych badań. W tym autoreferacie przedstawię główne idee oraz podsumuję wyniki
mojej pracy.
2
Problem fragmentacji
Rzeczywista wydajność odczytu danych osiągana przez systemy przechowywania kopii zapasowych z deduplikacją okazuje się być często niższa od tej
prezentowanej przez producenta [22, 27, 28, 29, 38]. Co więcej, wydaje się ona
zależeć od wielu czynników takich, jak czas zapisania danych, ich charakterystyka, a nawet wcześniejsza obecność innych danych w systemie. Głównym
3
Rysunek 1: Wpływ rodzajów fragmentacji na osiąganą wydajność odczytu schemat.
powodem tego zjawiska są różne rodzaje fragmentacji danych spowodowane
deduplikacją. Są to:
• fragmentacja pomiędzy różnymi wersjami - spowodowana okresowymi
kopiami zapasowymi (dzienne, tygodniowe, miesięczne) tego samego
zbioru danych;
• wewnętrzna fragmentacja strumienia - spowodowana przez te same
bloki pojawiające się wielokrotnie w strumieniu danych pojedynczej
kopii zapasowej;
• fragmentacja globalna - spowodowana przez te same bloki pojawiające
się w wielu strumieniach należących do różnych kopii zapasowych (bez
logicznych powiązań pomiędzy sobą).
Schematyczny wpływ każdego z powyższych rodzajów fragmentacji na
osiąganą wydajność odczytu został przedstawiony na Rysunku 1. W rozprawie doktorskiej przyglądam się szczegółowo dwóm kluczowym rodzajom:
fragmentacji pomiędzy różnymi wersjami oraz wewnętrznej fragmentacji strumienia.
4
Rysunek 2: Lokalizacja danych zapisanych w kolejnych wersjach kopii zapasowych tego samego zbioru danych (deduplikacja w locie)
Rysunek 3: Wpływ fragmentacji pomiędzy różnymi wersjami. Przykład odczytu bloków 1-38 z wersji 9. zapisanych przy użyciu dwóch różnych algorytmów.
5
2.1
Fragmentacja pomiędzy różnymi wersjami
Fragmentację pomiędzy różnymi wersjami można zaobserwować jedynie w
systemach z tzw. deduplikacją w locie (in-line), gdzie proces eliminacji identycznych bloków odbywa się podczas zapisu danych. Tego typu systemy dominują wśród obecnie sprzedawanych na rynku [1]. Ponieważ w tym rozwiązaniu
duplikaty bloków nigdy nie są zapisywane na dysku, w rezultacie dane dotyczące ostatniego strumienia rozrzucone są pomiędzy wiele odległych od siebie
lokalizacji. Ten efekt powiększa się w następstwie zapisu każdej kolejnej kopii
zapasowej, gdyż coraz więcej danych jest zlokalizowanych w rosnącej liczbie
starszych kopii zapasowych. Przeprowadzone przez mnie eksperymenty pokazują, że w takiej sytuacji spadek wydajności odczytu waha się od kilku
do ponad 50%, zależnie od zestawu danych, jego charakterystyki i częstotliwości tworzenia kopii zapasowej. Co więcej, z każdą kolejną wersją należy
spodziewać się powolnego zwiększania tego efektu.
Tego rodzaju fragmentacji można uniknąć stosując tzw. deduplikację po
zapisie (off-line). W tym podejściu kopia zapasowa jest zapisywana bezpośrednio, a następnie deduplikowana w tle tak, aby zachować ostatnie wystąpienie każdego bloku [21, 38]. Opisywany proces nie powoduje dodatkowej fragmentacji, jednocześnie utrzymując ostatnią kopię zapasową zapisaną
sekwencyjnie na dysku (z dokładnością do bloków pojawiających się wielokrotnie w jednej wersji kopii zapasowej). Ponieważ to właśnie ostatnia kopia
zapasowa jest tą, która najczęściej jest potrzebna, wspomniane podejście
stanowi dobre rozwiązanie opisywanego problemu. Niestety, deduplikacja po
zapisie niesie za sobą niepożądane konsekwencje, włączając w to (1) wymóg
dodatkowej przestrzeni do przechowania danych przed deduplikacją oraz (2)
wielokrotnie zredukowaną szybkość zapisu duplikatów w porównaniu do deduplikacji w locie [11, 20]. Ten ostatni problem pojawia się, gdyż zapisywanie
danych wymaga ich przesłania poprzez sieć i fizycznego zapisania na dysk.
W przypadku deduplikacji w locie wymagane jest jedynie porównanie skrótu
bloku (wartości funkcji haszującej) do tych zapisanych już w systemie. To z
kolei powoduje znacznie mniejsze wykorzystanie dostępnych zasobów.
Aby przedstawić problem fragmentacji pomiędzy wersjami załóżmy, że
pełną kopię zapasową pojedynczego systemu plików zapisujemy co tydzień
do systemu z deduplikacją w locie. Zazwyczaj system plików nie zmienia się
zbytnio w ciągu tygodnia i po wykonaniu drugiej kopii zapasowej wiele takich
samych bloków (zazwyczaj ponad 90%) jest wykrywanych nie powodując
zapisów na dysk. Efekt takiej deduplikacji jest więc następujący: pierwsza
kopia zapasowa jest zapisana na dysku sekwencyjnie, a wszystkie nowe bloki
pojawiające się w drugim strumieniu są umieszczane w wolnym obszarze
po już zapisanych danych (Rysunek 2). Taki scenariusz jest kontynuowany
6
przy wykonywaniu kolejnych kopii zapasowych. Czasami już po kilku z nich,
bloki z ostatniego strumienia są porozrzucane po całej przestrzeni dyskowej.
Powoduje to dużą liczbę zmian położenia głowicy dysku podczas odczytu i
w konsekwencji bardzo niską wydajność odzyskiwania danych (Rysunek 3).
Niestety powyższy scenariusz jest typowy dla deduplikacji w locie i prowadzi on do największej fragmentacji najbardziej aktualnej kopii zapasowej
– tej, która najprawdopodobniej będzie potrzebna do odtworzenia w przypadku, gdy użytkownik utraci swoje dane.
2.2
Wewnętrzna fragmentacja strumienia
Drugim rodzajem fragmentacji, który może spowodować dużą redukcję szybkości odczytu jest wewnętrzna fragmentacja strumienia. Co prawda jest ona
również spowodowana poprzez deduplikację, to jednak jej zakres jest ograniczony do pojedynczej wersji konkretnej kopii zapasowej. Ta zmiana zakresu
powoduje inne własności, takie jak zazwyczaj stały wpływ na wszystkie wersje kopii zapasowej, a także różnorodność systemów z deduplikacją dotkniętych problemem (także systemy z deduplikacją po zapisie). Moje symulacje pokazały, że wewnętrzna deduplikacja strumienia skutkująca wewnętrzną
fragmentacją jest znacząca, gdyż 17-33% bloków w ramach pojedynczej wersji
strumienia pojawiało się więcej niż jeden raz. Domyślnie bloki te są pomijane dzięki deduplikacji, zmniejszając tym samym zapotrzebowanie na cenną
przestrzeń dyskową. Niestety, powoduje to utratę nawet 70% wydajności odczytu widoczną przy najbliższej próbie odzyskania danych. Kolejne analizy
pokazały, że pamięć podręczna typu LRU, która jest najbardziej popularna w
podobnych systemach, działa bardzo nieefektywnie w opisanym wyżej przypadku.
Aby pokazać istotę problemu wewnętrznej fragmentacji strumienia wystarczy wykonać pojedynczą kopię zapasową zawierającą przeciętną liczbę
bloków będących wewnętrznymi duplikatami. Ponieważ system z deduplikacją zapisze tylko jedną kopię każdego bloku, domyślna sekwencyjna struktura
logicznego strumienia wejściowego nie zostanie zachowana (Rysunek 4). Przy
próbie odczytu spowoduje to dodatkowe zmiany położenia głowicy dysku,
co w konsekwencji doprowadzi do niskiej wydajności odczytu (Rysunek 4).
Wewnętrzna fragmentacja strumienia powoduje więc zarówno nieefektywne
użycie pamięci podręcznej, jak również obniżenie wydajności odzyskiwania
danych we wszystkich systemach z deduplikacją.
7
Rysunek 4: Wpływ wewnętrznej fragmentacji. Przykład odczytu bloków 402438 z pierwszej wersji kopii zapasowej zapisanej przy użyciu dwóch różnych
algorytmów.
8
3
Algorytm kontekstowego przepisywania bloków minimalizujący wpływ fragmentacji pomiędzy wersjami
% szybkosci odczytu osiaganej w systemach bez deduplikacji
Kopia zapasowa systemu rejestracji zgloszen
60
deduplikacja w locie
deduplikacja po zapisie
50
40
30
20
10
0
1
2
3
4
5
Numer wersji kopii zapasowej
6
7
Rysunek 5: Porównanie wpływu fragmentacji na szybkość odczytu kolejnych
wersji kopii zapasowych przy deduplikacji w locie (in-line) i po zapisie (offline). Wydajność odczytu każdej wersji mierzona po zapisaniu wszystkich
siedmiu przy użyciu 512MB pamięci podręcznej typu LRU.
W większości przypadków po awarii przywracana jest ostatnio wykonana
kopia zapasowa, gdyż zazwyczaj użytkownicy zainteresowani są posiadaniem
najbardziej aktualnych danych [9]. Bazując na tej obserwacji zaprojektowałem pierwszy z algorytmów opisanych w mojej pracy doktorskiej. Eliminuje
on fragmentację z ostatnio wykonanej kopii zapasowej kosztem tych utworzonych wcześniej w celu zachowania maksymalnego współczynnika deduplikacji. Przykład takiego podejścia jest widoczny na Rysunku 5. Pokazuje
on wpływ fragmentacji na szybkość odczytu przy uwzględnieniu kolejnych
wersji kopii zapasowej w dwóch przypadkach: (1) deduplikacji w locie z fragmentacją postępującą wraz z każdą kolejną wersją; oraz (2) deduplikacji po
zapisie, która skutkuje najnowszą wersją umieszczoną w ciągłym obszarze
dysku, a fragmentacją w ramach wcześniejszych wersji. Algorytm kontekstowego przepisywania bloków ma za zadanie dodać możliwość defragmentacji
do systemów z deduplikacją w locie tak, aby osiągnąć efekt odczytu jak przy
deduplikacji po zapisie, ale bez ponoszenia kosztów z nią związanych.
W systemach z deduplikacją w locie bloki już istniejące w systemie nie
są zapisywane ponownie, co skutkuje wysoką wydajnością tworzenia kopii
9
zapasowej. Niestety, jak wspominałem wcześniej, podejście to prowadzi do
wysokiej fragmentacji, gdyż dwa bloki sąsiadujące ze sobą w strumieniu danych użytkownika mogą znaleźć się w zupełnie różnych miejscach na dysku.
Aby nie dopuścić do takiego scenariusza, algorytm kontekstowego przepisywania analizuje bloki z zapisywanego strumienia użytkownika oraz ich fizyczną lokalizację w systemie. W przypadku wykrycia dużej fragmentacji,
algorytm decyduje o przeniesieniu niewielkiej liczby bloków (mniej niż 5%)
do nowej lokalizacji na dysku tak, aby zapewnić jak najwyższą szybkość odczytu. Ponieważ algorytm działa podczas zapisu, przenoszone bloki nie są
czytane z poprzedniej lokalizacji (co mogłoby być kosztowne), a ich zawartość
otrzymywana jest bezpośrednio ze strumienia użytkownika. Stare kopie tak
przepisanych bloków usuwane są w tle poprzez proces oczyszczania, który
jest uruchamiany okresowo. W przeciwieństwie do deduplikacji po zapisie,
przepisywany jest tylko niewielki procent wszystkich bloków – tych, których
przeniesienie zapewni największy wzrost szybkości odczytu.
Moje symulacje oparte na rzeczywistych danych od użytkowników pokazały, że przepisywanie małej ilości wybranych bloków (średnio 1,58%) redukuje tylko nieznacznie maksymalną wydajność zapisu (od 1 do 9%). Umożliwia to niemal całkowitą eliminację negatywnego wpływu fragmentacji pomiędzy wersjami dla najnowszej wersji kopii zapasowej [z 12-51% do mniej
niż 7%, przy porównaniu do maksymalnej szybkości odczytu w systemie z
deduplikacją osiąganej przy użyciu pamięci podręcznej typu LRU].
4
Pamięć podręczna z ograniczoną wiedzą przyszłą redukująca wpływ wewnętrznej fragmentacji
Moje badania pokazały znaczący wpływ wewnętrznych duplikatów w strumieniu na obniżenie wydajności odzyskiwania danych. Łatwo jednak zauważyć, iż wielokrotne wystąpienie tych samych danych mogłoby mieć pozytywny
wpływ na szybkość odczytu. Wystarczy, aby powtarzające się dane były przechowywane w pamięci, a kolejne dostępy do nich odbywałyby się bez udziału
dysku. Ta obserwacja posłużyła do stworzenia pamięci podręcznej z ograniczoną wiedzą przyszłą, ukierunkowanej na redukcję negatywnego wpływu
wewnętrznej fragmentacji strumienia na odczyt danych.
Idea użycia wiedzy przyszłej w celu optymalnego wykorzystania pamięci
podręcznej została zaprezentowana w algorytmie Bélády’iego [4]. Algorytm
ten jest jednak zazwyczaj bezużyteczny, gdyż wymagana wiedza przyszła jest
praktycznie nieosiągalna w większości zastosowań. W systemach służących do
10
przechowywania kopii zapasowych jest jednak inaczej. Strumienie są tutaj
zazwyczaj bardzo duże [37], a dostęp do nich odbywa się w kolejności zapisu.
Rozpoczynając odzyskiwanie danych, możemy więc poznać adresy bloków,
które będą potrzebne w przyszłości [19]. Oznacza to dostęp do praktycznie
nieograniczonej wiedzy dotyczącej występowania bloków w przyszłości.
Wydaje się, że maksymalne wykorzystanie całej dostępnej wiedzy będzie
działaniem optymalnym, jednak w rzeczywistości niesie ze sobą dodatkowe
koszty. Przede wszystkim, przechowywanie informacji o potencjalnie dużym
strumieniu danych zajmuje cenną pamięć, która mogłaby być użyta jako
pamięć podręczna przechowująca dane użytkownika. Moje eksperymenty pokazały, iż ograniczona ilość wiedzy przyszłej jest wystarczająca do uzyskania
znacznej poprawy wydajności odczytu. Dodatkowo, zaproponowane przeze
mnie struktury danych pozwalają przechowywać wymaganą informację przy
bardzo małym zużyciu pamięci (1,62MB na każdy 1GB wiedzy przyszłej).
W moich symulacjach zastosowanie ograniczonej wiedzy przyszłej doprowadziło do wzrostu średniej szybkości odczytu o 62% - 88% w stosunku
do standardowej pamięci podręcznej typu LRU. Efektywność użycia pamięci
jest widoczna zwłaszcza, gdy porównamy 128MB pamięci i 2GB wiedzy przyszłej (całkowity rozmiar użytej pamięci to 131.25MB) oraz 1GB pamięci typu
LRU. W tym przypadku, nawet pomimo prawie ośmiokrotnie mniejszego rozmiaru pamięci, nowy algorytm ciągle osiąga o 16% lepsze rezultaty wydajnościowe. Ponadto, okazało się, iż zaledwie 256MB pamięci i 8GB wiedzy
przyszłej(całkowity rozmiar użytej pamięci to 269MB) jest często w stanie
osiągnąć szybkość odczytu zbliżoną do tej osiąganej z nieograniczoną wiedzą
przyszłą. Co więcej, w czterech na sześć przypadków wyniki są niemal identyczne z tymi osiągniętymi z pamięcią podręczną nieograniczonego rozmiaru.
5
Połączenie obydwu algorytmów i skalowalność rozwiązania
Celem każdego z algorytmów zaprezentowanych w pracy jest zniwelowanie
negatywnych skutków innego rodzaju fragmentacji. Dodatkowo, każdy z nich
prezentuje zupełnie inne podejście do atakowanego problemu. Pierwszy z algorytmów zmienia położenie bloków podczas zapisu tak, aby znajdowały się
możliwie blisko siebie na dysku. Drugi z kolei, nie modyfikuje danych w systemie, a jedynie poprawia efektywność pamięci podręcznej przez jej odśmiecanie przy użyciu dostępnej wiedzy przyszłej. Dzięki tak różnym podejściom
możliwe staje się wspólne zastosowanie obu algorytmów w celu jednoczesnej
eliminacji skutków różnych rodzajów fragmentacji.
11
Wyniki symulacji takiej konfiguracji pokazują wzrost wydajności odczytu
na poziomie od 16% do 388% (średnio ponad 140%) w porównaniu ze standardowym systemem i pamięcią podręczną typu LRU (w obu przypadkach
użyto 256MB pamięci podręcznej; przy zastosowaniu obu algorytmów użyto
dodatkowo 13MB do przechowywania wiedzy przyszłej). Ponadto, algorytmy
okazują się dla siebie komplementarne, gdyż efekt połączenia jest znacznie
większy niż proste dodanie przyśpieszenia zapewnionego przez każdy z nich
osobno (który wyniósłby średnio 99%). Co więcej, zastosowanie obu algorytmów z zaledwie 128MB pamięci podręcznej zapewnia lepsze wyniki, niż
standardowy system z nieograniczoną pamięcią podręczną typu LRU. Jest
to istotne, gdyż pamięć o której mowa, jest potrzebna przy odczycie każdego pojedynczego strumienia. W przypadku większej awarii może zachodzić
potrzeba odczytu wielu strumieni kopii zapasowych jednocześnie.
Zaprezentowane algorytmy wypadają bardzo dobrze przy założeniu jednego dysku w systemie, ale jeszcze bardziej istotne może być ich zachowanie
w realnym scenariuszu użycia, gdy odczyt jednego strumienia odbywa się z
wielu dysków jednocześnie. Moje eksperymenty pokazały, że w takich warunkach problem fragmentacji nabiera jeszcze większego znaczenia sprawiając,
że odczyt danych jest jeszcze mniej efektywny. W tym scenariuszu oba algorytmy zastosowane razem powodują pięciokrotne zwiększenie średniej szybkości odczytu.
6
Podsumowanie
Problemy związane z fragmentacją danych w systemach z deduplikacją są
widoczne od kilku lat [21, 22, 27, 28, 29, 38, 39], jednak długo nie były one
przedmiotem badań. Pierwsze prace próbujące głębiej zająć się tymi problemami i zaproponować częściowe rozwiązania pojawiły się w roku 2012 [18, 23,
33]. Razem z artykułami opublikowanymi później [12, 19, 26] pokazują, że temat staje się coraz bardziej interesujący nie tylko dla środowiska biznesowego,
ale również naukowego. Potencjalnie ciągle wymaga on badań prowadzących
do definitywnego zrozumienia problemu oraz dostarczenia elastycznego rozwiązania użytecznego z punktu widzenia istniejących systemów. Zaprezentowana rozprawa doktorska jest krokiem w tym kierunku dzięki: (1) szczegółowej analizie problemu fragmentacji z nazwaniem trzech powodów obserwowanego spowolnienia odczytu, (2) propozycji dwóch niezależnych algorytmów
praktycznie eliminujących wpływ kluczowych rodzajów fragmentacji oraz (3)
dostarczeniu wyników szeregu eksperymentów opartych na rzeczywistych danych pochodzących od użytkowników, pozwalających na lepsze zrozumienie
procesu fragmentacji danych spowodowanego eliminacją duplikatów.
12
Literatura
[1] R. Amatruda. Worldwide Purpose-Built Backup Appliance 2012-2016
Forecast and 2011 Vendor Shares. International Data Corporation, April
2012.
[2] L. Aronovich, R. Asher, E. Bachmat, H. Bitner, M. Hirsch, and S. T.
Klein. The design of a similarity based deduplication system. In Proceedings of SYSTOR 2009: The Israeli Experimental Systems Conference,
SYSTOR ’09, pages 6:1–6:14, New York, NY, USA, 2009. ACM.
[3] T. Asaro and H. Biggar. Data De-duplication and Disk-to-Disk Backup Systems: Technical and Business Considerations, July 2007. The
Enterprise Strategy Group.
[4] L. A. Belady. A study of replacement algorithms for a virtual-storage
computer. IBM Syst. J., 5(2):78–101, June 1966.
[5] H. Biggar. Experiencing Data De-Duplication: Improving Efficiency and
Reducing Capacity Requirements, February 2007. The Enterprise Strategy Group.
[6] C. Dubnicki, L. Gryz, L. Heldt, M. Kaczmarczyk, W. Kilian, P. Strzelczak, J. Szczepkowski, C. Ungureanu, and M. Welnicki. HYDRAstor: a
Scalable Secondary Storage. In FAST’09: Proceedings of the 7th USENIX Conference on File and Storage Technologies, pages 197–210, Berkeley, CA, USA, 2009. USENIX Association.
[7] EMC Avamar: Backup and recovery with global deduplication, 2008.
http://www.emc.com/avamar.
[8] EMC Corporation: DataDomain - Deduplication Storage for Backup,
Archiving and Disaster Recovery, 2014. http://www.datadomain.com.
[9] Enterprise Strategy Group. 2010 Data Protection Trends. April 2010.
[10] Exagrid. http://www.exagrid.com.
[11] D. Floyer. Wikibon Data De-duplication Performance Tables. Wikibon.org, May 2011. http://wikibon.org/wiki/v/Wikibon Data Deduplication Performance Tables.
[12] M. Fu, D. Feng, Y. Hua, X. He, Z. Chen, W. Xia, F. Huang, and Q. Liu.
Accelerating restore and garbage collection in deduplication-based backup systems via exploiting historical information. In 2014 USENIX
13
Annual Technical Conference (USENIX ATC 14), pages 181–192, Philadelphia, PA, June 2014. USENIX Association.
[13] J. Gantz and D. Reinsel. The Digital Universe Decade - Are You Ready?
IEEE Trans. Parallel Distrib. Syst., May 2010. Sponsored by EMC
Corporation.
[14] J. Gantz and D. Reinsel. The Digital Universe in 2020: Big Data, Bigger
Digital Shadows, and Biggest Growth in the Far East. IEEE Trans.
Parallel Distrib. Syst., December 2012. Sponsored by EMC Corporation.
[15] A. S. P. Group. Identifying the Hidden Risk of Data Deduplication: How
the HYDRAstor Solution Proactively Solves the Problem. 2009. White
Paper WP103-3 0709, NEC Corporation of America.
[16] IBM ProtecTIER Deduplication Solution. https://www-304.ibm.com/partnerworld/wps/pub/overview/HW21Z.
[17] IDC. Total Worldwide PBBA 4Q13 Results. International Data Corporation, March 2014.
[18] M. Kaczmarczyk, M. Barczynski, W. Kilian, and C. Dubnicki. Reducing
impact of data fragmentation caused by in-line deduplication. In Proceedings of the 5th Annual International Systems and Storage Conference,
SYSTOR ’12, pages 15:1–15:12, New York, NY, USA, 2012. ACM.
[19] M. Lillibridge, K. Eshghi, and D. Bhagwat. Improving restore speed
for backup systems that use inline chunk-based deduplication. In Proceedings of the 11th USENIX Conference on File and Storage Technologies,
FAST’13, pages 183–198, Berkeley, CA, USA, 2013. USENIX Association.
[20] M. Lillibridge, K. Eshghi, D. Bhagwat, V. Deolalikar, G. Trezis, and
P. Camble. Sparse indexing: Large scale, inline deduplication using
sampling and locality. In FAST’09: Proceedings of the 7th USENIX
Conference on File and Storage Technologies, pages 111–123, 2009.
[21] J. Livens.
Deduplication and restore performance.
Wikibon.org, January 2009. http://wikibon.org/wiki/v/Deduplication andrestore performance.
[22] J. Livens. Defragmentation, rehydration and deduplication. AboutRestore.com, June 2009. http://www.aboutrestore.com/2009/06/24/defragmentation-rehydration-and-deduplication/.
14
[23] Y. J. Nam, D. Park, and D. H. C. Du. Assuring demanded read performance of data deduplication storage with backup datasets. In Proceedings of the 2012 IEEE 20th International Symposium on Modeling,
Analysis and Simulation of Computer and Telecommunication Systems,
MASCOTS ’12, pages 201–208, Washington, DC, USA, 2012. IEEE
Computer Society.
[24] NEC Corporation. HYDRAstor
http://www.hydrastor.com.
Grid
Storage
System,
[25] NEC
HYDRAstor
HS8-4000
Specification,
http://www.necam.com/HYDRAstor/doc.cfm?t=HS8-4000.
2008.
2013.
[26] C.-H. Ng and P. P. C. Lee. RevDedup: A Reverse Deduplication Storage
System Optimized for Reads to Latest Backups. CoRR, abs/1302.0621,
2013.
[27] W. C. Preston. The Rehydration Myth. BackupCentral.com, June
2009. http://www.backupcentral.com/mr-backup-blog-mainmenu-47/13-mr-backup-blog/247-rehydration-myth.html/.
[28] W. C. Preston.
Restoring deduped data in deduplication
systems.
SearchDataBackup.com,
April
2010.
http://searchdatabackup.techtarget.com/feature/Restoring-dedupeddata-in-deduplication-systems.
[29] W. C. Preston.
Solving common data deduplication system problems.
SearchDataBackup.com, November 2010.
http://searchdatabackup.techtarget.com/feature/Solving-commondata-deduplication-system-problems.
[30] Quantum Corporation: DXi
http://www.quantum.com.
Deduplication
Solution,
2011.
[31] B. Romanski, L. Heldt, W. Kilian, K. Lichota, and C. Dubnicki. Anchordriven subchunk deduplication. In Proceedings of the 4th Annual International Conference on Systems and Storage, SYSTOR ’11, pages
16:1–16:13, New York, NY, USA, 2011. ACM.
[32] SEPATON
Scalable
Data
Deduplication
http://sepaton.com/solutions/data-deduplication.
15
Solutions.
[33] K. Srinivasan, T. Bisson, G. Goodson, and K. Voruganti. iDedup:
latency-aware, inline data deduplication for primary storage. In Proceedings of the 10th USENIX conference on File and Storage Technologies,
FAST’12, pages 24–24, Berkeley, CA, USA, 2012. USENIX Association.
[34] P. Strzelczak, E. Adamczyk, U. Herman-Izycka, J. Sakowicz, L. Slusarczyk, J. Wrona, and C. Dubnicki. Concurrent deletion in a distributed content-addressable storage system with global deduplication. In
Proceedings of the 11th USENIX Conference on File and Storage Technologies, FAST’13, pages 161–174, Berkeley, CA, USA, 2013. USENIX
Association.
[35] Symantec NetBackup Appliances. http://www.symantec.com/backupappliance.
[36] C. Ungureanu, A. Aranya, S. Gokhale, S. Rago, B. Atkin, A. Bohra,
C. Dubnicki, and G. Calkowski. Hydrafs: A high-throughput file system
for the hydrastor content-addressable storage system. In FAST ’10,
pages 225–239, 2010.
[37] G. Wallace, F. Douglis, H. Qian, P. Shilane, S. Smaldone, M. Chamness, and W. Hsu. Characteristics of backup workloads in production
systems. In Proceedings of the 10th USENIX conference on File and
Storage Technologies, FAST’12, pages 4–4, Berkeley, CA, USA, 2012.
USENIX Association.
[38] L.
Whitehouse.
Restoring
deduped
data.
searchdatabackup.techtarget.com,
August
2008.
http://searchdatabackup.techtarget.com/tip/Restoring-deduped-data.
[39] B. Zhu, K. Li, and H. Patterson. Avoiding the disk bottleneck in the
Data Domain deduplication file system. In FAST’08: Proceedings of the
6th USENIX Conference on File and Storage Technologies, pages 1–14,
Berkeley, CA, USA, 2008. USENIX Association.
16

Podobne dokumenty