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