Kompresja Kopii Zapasowych

Techniki kompresji o wysokim współczynniku dla długoterminowego przechowywania danych i systemów kopii zapasowych.

Wprowadzenie: Krytyczne Znaczenie Kopii Zapasowych

Dane są siłą napędową naszego cyfrowego świata. Dla osoby prywatnej reprezentują bezcenne zdjęcia rodzinne, ważne dokumenty i lata osobistej historii. Dla firmy oznaczają wszystko, od dokumentacji finansowej i informacji o klientach po własność intelektualną i plany operacyjne. Utrata tych danych, czy to w wyniku awarii sprzętu, przypadkowego usunięcia, błędu oprogramowania czy złośliwego ataku, jak ransomware, może być katastrofalna. Dlatego tworzenie regularnych kopii naszych danych, znanych jako , jest jednym z najbardziej fundamentalnych i krytycznych zadań w całej informatyce.

Jednak tworzenie kopii zapasowych stawia przed nami unikalny zestaw wyzwań, różniących się od codziennego przechowywania plików. Systemy backupowe są zaprojektowane do obsługi ogromnych ilości danych, często całych dysków twardych lub serwerów, oraz do przechowywania wielu wersji tych danych przez długi czas. Przedsiębiorstwo może codziennie tworzyć kopie zapasowe terabajtów danych i być zobowiązane do ich przechowywania przez miesiące, a nawet lata. Bez niezwykle wydajnych strategii przechowywania, koszt sprzętu wymaganego do tych kopii zapasowych byłby astronomiczny.

W tym miejscu wkracza kompresja dla systemów backupowych. Celem nie jest tylko zmniejszenie plików; chodzi o fundamentalne zmniejszenie ilości nowych danych, które trzeba zapisać przy każdej kolejnej kopii zapasowej. Nowoczesne rozwiązania backupowe wykorzystują potężne połączenie dwóch odrębnych, ale uzupełniających się technologii: kompresji o wysokim współczynniku i inteligentnej deduplikacji, które współpracują, aby zminimalizować zajmowaną przestrzeń i umożliwić długoterminowe przechowywanie danych.

Dwa Filary Wydajności Przechowywania Kopii Zapasowych: Kompresja i Deduplikacja

Aby osiągnąć niesamowite oszczędności miejsca potrzebne w nowoczesnych systemach backupowych, stosuje się dwie główne strategie. Chociaż często omawia się je razem, są to odrębne procesy, które zwalczają redundancję na różnych poziomach.

Filar 1: Kompresja - Zmniejszanie Unikalnych Danych

To tradycyjna forma redukcji danych. w systemach backupowych polega na wzięciu fragmentu danych i zastosowaniu algorytmu matematycznego w celu znalezienia i wyeliminowania wewnętrznych wzorców i redundancji statystycznej. Koncentruje się na zmniejszaniu poszczególnych fragmentów danych. Na przykład, może znaleźć długą, powtarzającą się sekwencję tekstu w dokumencie i zastąpić ją krótszym kodem. Celem jest zmniejszenie samego bloku danych.

Filar 2: Deduplikacja - Nigdy Nie Zapisuj Tych Samych Danych Dwa Razy

jest prawdziwym przełomem dla systemów backupowych. Jej celem nie są dane wewnątrz pojedynczego bloku, ale redundancja w ogromnej kolekcji bloków, plików, a nawet kopii zapasowych z różnych maszyn. Zasada jest prosta: jeśli system już widział identyczny fragment danych, nie zapisze go ponownie. Zamiast tego utworzy mały wskaźnik do kopii, którą już posiada. Wyobraź sobie sytuację, w której 100 pracowników w firmie tworzy kopie zapasowe swoich laptopów. Wszystkie 100 laptopów prawdopodobnie zawierają identyczne pliki systemu operacyjnego, pliki aplikacji i dokumenty firmowe. System deduplikujący zapisałby dane dla pliku takiego jak win32k.syswin32k.sys tylko raz, a nie 100 razy. Technika ta zwalcza redundancję na skalę globalną i jest odpowiedzialna za największe oszczędności miejsca w nowoczesnych architekturach backupowych.

Analiza: Algorytmy Kompresji w Systemach Backupowych

Kluczową różnicą między kompresją dla kopii zapasowych a kompresją dla innych zastosowań (jak ruch sieciowy w czasie rzeczywistym) jest główny cel. W przypadku kopii zapasowych najwyższym priorytetem jest zazwyczaj osiągnięcie jak najwyższego współczynnika kompresji w celu zminimalizowania długoterminowych kosztów przechowywania. Szybkość procesu kompresji, choć wciąż ważna, jest często kwestią drugorzędną. Dane są kompresowane raz podczas okna backupowego (często w nocy), ale mogą być przechowywane przez lata. Dlatego systemy backupowe często wykorzystują bardziej intensywne obliczeniowo algorytmy o wyższym współczynniku kompresji, niż byłoby to do przyjęcia w kompresji na żywo.

Nowoczesne oprogramowanie do tworzenia kopii zapasowych często pozwala administratorom wybierać spośród szeregu algorytmów, tworząc kompromis między szybkością tworzenia kopii zapasowych (zużyciem procesora) a oszczędnością miejsca:

  • LZ4: Znany z oszałamiającej prędkości. LZ4 oferuje skromny współczynnik kompresji, ale jest tak lekki dla procesora, że można go używać w scenariuszach, w których wydajność tworzenia kopii zapasowych jest krytyczna, a nawet niewielka redukcja rozmiaru danych jest korzystna.
  • Gzip/Deflate: Długoletni standard branżowy. Zapewnia bardzo dobrą równowagę między solidnym współczynnikiem kompresji a rozsądną prędkością. Jest to niezawodny, uniwersalny wybór dostępny w wielu narzędziach do tworzenia kopii zapasowych.
  • Zstandard (zstd): Nowoczesny, elastyczny algorytm, który stał się bardzo popularny. Oferuje szeroki zakres poziomów kompresji. Na niższych poziomach może być prawie tak szybki jak LZ4, oferując lepszą kompresję. Na wyższych poziomach może osiągać współczynniki kompresji porównywalne z najlepszymi wynikami Gzip, ale przy znacznie wyższej prędkości.
  • LZMA/LZMA2: Algorytm stojący za archiwizatorem 7-Zip. LZMA jest znany z osiągania bardzo wysokich współczynników kompresji, często znacznie lepszych niż Gzip. Jednakże odbywa się to kosztem znacznie wolniejszego działania i większego zużycia pamięci podczas procesu kompresji. Jest to doskonały wybór do archiwizacji "zimnych" danych, gdzie absolutnie minimalny rozmiar przechowywania jest celem, a czas potrzebny na utworzenie kopii zapasowej nie jest głównym zmartwieniem.

Analiza: Jak Deduplikacja Czyni Swoją Magię

Deduplikacja to znacznie bardziej złożony i wpływowy proces niż prosta kompresja plików. Wymaga od systemu backupowego utrzymywania ogromnego indeksu każdego unikalnego fragmentu danych, jaki kiedykolwiek widział, oraz metody efektywnego porównywania nowych danych z tym indeksem.

Cegiełki: Deduplikacja na Poziomie Pliku a na Poziomie Bloku

"Fragmenty danych", które system deduplikacji analizuje, mogą mieć różne rozmiary, co prowadzi do dwóch głównych podejść:

  • Deduplikacja na Poziomie Pliku (Single-Instance Storage): Jest to najprostsza metoda. System oblicza skrót kryptograficzny całego pliku i sprawdza, czy już przechowywał ten skrót. Jest bardzo skuteczna w eliminowaniu zduplikowanych plików, ale jej słabością jest to, że zmiana jednego bajta w dużym pliku skutkuje zupełnie nowym skrótem, co zmusza do ponownego zapisania całego zmodyfikowanego pliku.
  • Deduplikacja na Poziomie Bloku: To o wiele potężniejsza i częściej stosowana metoda w nowoczesnych systemach backupowych. Zamiast patrzeć na całe pliki, system dzieli je na mniejsze fragmenty, zwane blokami. Każdy blok jest haszowany indywidualnie. Pozwala to systemowi znaleźć zduplikowane dane wewnątrz plików i pomiędzy podobnymi, ale nie identycznymi plikami.

Kluczowy Szczegół: Bloki o Stałym a Zmiennym Rozmiarze

Nawet w ramach deduplikacji blokowej istnieje krytyczne rozróżnienie w sposobie definiowania bloków.

Deduplikacja Bloków o Stałym Rozmiarze: System po prostu dzieli pliki na bloki o stałej wielkości, na przykład co 4 kilobajty (4KB4KB). Jest to łatwe i szybkie do obliczenia. Jednak cierpi na poważny problem, gdy dane są wstawiane lub usuwane. Jeśli wstawisz jeden bajt na początku pliku, przesuwasz pozycję każdego kolejnego bajta. To powoduje, że wszystkie kolejne granice bloków 4KB są przesunięte, a zatem wszystkie kolejne bloki będą miały inne hasze, mimo że dane w nich są prawie identyczne. To psuje deduplikację.

Deduplikacja Bloków o Zmiennym Rozmiarze (Content-Defined Chunking):Aby to rozwiązać, zaawansowane systemy stosują inteligentniejsze podejście. Zamiast używać stałych granic, skanują zawartość strumienia danych w poszukiwaniu "naturalnych" punktów podziału. Algorytm, często oparty na skrócie kroczącym jak algorytm Rabina-Karpa, przesuwa okno nad danymi i decyduje, gdzie zakończyć blok na podstawie właściwości samych danych. Powszechną metodą jest zakończenie bloku, gdy hasz danych w oknie pasuje do określonego wzorca (np. gdy ostatnie 11 bitów to same zera). Oznacza to, że gdy wstawisz bajt na początku pliku, wpłynie to tylko na pierwszy i ewentualnie drugi blok. Wszystkie kolejne naturalne punkty podziału prawdopodobnie pozostaną w tym samym miejscu względem danych, co oznacza, że wszystkie kolejne bloki będą miały dokładnie ten sam hasz co przed wstawieniem. To sprawia, że deduplikacja o zmiennym rozmiarze bloku jest znacznie bardziej odporna na zmiany i radykalnie bardziej skuteczna w rzeczywistych scenariuszach.

Wielki Proces: Łączenie Strategii

Nowoczesny proces tworzenia kopii zapasowej łączy te elementy w precyzyjnej kolejności dla maksymalnej wydajności:

  1. Dane do zarchiwizowania są identyfikowane na maszynie źródłowej.
  2. Dane są dzielone na bloki o zmiennym rozmiarze za pomocą algorytmu definiowanego zawartością.
  3. Dla każdego unikalnego bloku obliczany jest skrót kryptograficzny (np. SHA-256).
  4. Te skróty są wysyłane do serwera backupowego, który sprawdza w swoim centralnym indeksie, które bloki już zapisał. To jest krok deduplikacji.
  5. Serwer żąda tylko tych bloków, które są dla niego nowe.
  6. Maszyna źródłowa stosuje algorytm kompresji bezstratnej o wysokim współczynniku (jak zstd lub Gzip) do tych unikalnych bloków. To jest krok kompresji.
  7. Tylko nowe, unikalne, skompresowane bloki są wysyłane przez sieć i zapisywane.
  8. Kopia zapasowa jest następnie zapisywana jako mapa metadanych, która jest po prostu listą wskaźników odwołujących się do wszystkich niezbędnych bloków (zarówno starych, jak i nowych) wymaganych do przywrócenia danych.

Ta kolejność "najpierw deduplikuj, potem kompresuj" jest kluczowa. Pozwala systemowi najpierw zidentyfikować największą ilość redundancji, zapewniając, że bardziej kosztowny obliczeniowo krok kompresji jest wykonywany tylko na najmniejszym możliwym podzbiorze danych.

Połączenie z Metodologiami Tworzenia Kopii Zapasowych

Te techniki wydajności przechowywania mają głęboki wpływ na powszechne strategie tworzenia kopii zapasowych, czyniąc niektóre operacje radykalnie szybszymi i bardziej wydajnymi.

Wpływ na Pełne, Przyrostowe i Różnicowe Kopie Zapasowe

  • Pełne Kopie Zapasowe: Tradycyjna pełna kopia zapasowa kopiuje wszystkie dane za każdym razem. Z deduplikacją pierwsza pełna kopia zapasowa zapisuje wszystkie unikalne bloki. Kolejne pełne kopie zapasowe stają się niezwykle wydajne. System po prostu identyfikuje, które bloki uległy zmianie od ostatniej kopii i przechowuje tylko te nowe bloki, tworząc wskaźniki do ogromnej większości niezmienionych bloków. To, co dla użytkownika wygląda jak kolejna "pełna" kopia, może zużywać tylko niewielki ułamek przestrzeni pierwszej.
  • Kopie Przyrostowe i Różnicowe: Te metody z natury przechowują tylko zmienione dane. Deduplikacja potęguje to, działając na poziomie bloku, co oznacza, że nawet w obrębie zmodyfikowanego pliku tylko zmienione bloki są identyfikowane jako nowe dane.

Umożliwienie Syntetycznej Pełnej Kopii Zapasowej

Deduplikacja umożliwia bardzo potężną koncepcję zwaną . Tradycyjnie, aby utworzyć nową pełną kopię zapasową, system musiałby odczytać i przesłać każdy pojedynczy plik z klienta źródłowego przez sieć, co jest powolne i intensywnie wykorzystuje przepustowość.

Dzięki systemowi deduplikującemu serwer może wykonać tę operację samodzielnie. Może wziąć ostatnią pełną kopię zapasową (która jest tylko zestawem wskaźników do bloków) i połączyć ją ze zmienionymi blokami z kolejnych kopii przyrostowych. Ponieważ serwer już ma wszystkie wymagane bloki danych, ten proces to po prostu operacja tworzenia nowej mapy metadanych wskaźników na samym serwerze. Żadne dane nie muszą być ponownie odczytywane z klienta źródłowego. Umożliwia to bardzo szybkie utworzenie nowej, skonsolidowanej pełnej kopii zapasowej przy zerowym wpływie na sieć produkcyjną czy maszynę klienta.