Dzielenie na fragmenty definiowane przez zawartość usprawnia deduplikację kopii zapasowych, ponieważ wybiera granice fragmentów na podstawie zawartości pliku, dzięki czemu niezmienione obszary mogą być ponownie wykorzystywane po wstawieniach lub usunięciach.
Kopie przyrostowe często zawierają duże pliki, które między wersjami pozostają w większości niezmienione: obrazy dysków wirtualnych, archiwa poczty, bazy danych kopiowane jako pliki, pakiety projektów oraz wyeksportowane biblioteki multimediów. Jeśli każdy fragment zaczyna się przy stałym przesunięciu bajtowym, wstawienie niewielkiego nagłówka blisko początku może przesunąć wszystkie późniejsze granice, mimo że dalsze bajty są identyczne. Dzielenie definiowane przez zawartość sprawia, że segmentacja podąża za lokalnymi wzorcami bajtów zamiast za pozycjami bezwzględnymi, dzięki czemu kopia zapasowa może ponownie zsynchronizować się ze starymi fragmentami po zmienionym obszarze.
Stałe granice fragmentów mogą zamienić jedną małą edycję w wiele nowych fragmentów
Dzielnik o stałym rozmiarze tnie dane w pozycjach takich jak co 1 MiB, niezależnie od tego, jakie bajty się tam znajdują. Gdy bajty zostaną wstawione blisko początku, stare i nowe strumienie przesuwają się względem siebie, więc każdy kolejny stały fragment zawiera inną kombinację bajtów, nawet jeśli prawie cała bazowa zawartość pozostała taka sama.
Dzielenie definiowane przez zawartość opracowano na potrzeby deduplikacji, ponieważ punkty cięcia wyznaczane na podstawie zawartości wykrywają nadmiarowość, którą stałe przesunięcia mogą przeoczyć po lokalnych edycjach. Korzyść nie polega na tym, że CDC przewiduje, które pliki są podobne; zapewnia deduplikatorowi segmentację, która może przetrwać przesunięcie pozycji.
Jeśli cały plik zostanie zastąpiony niezwiązanymi bajtami, żaden algorytm dzielenia nie może sztucznie utworzyć zduplikowanej zawartości. CDC jest najbardziej pomocne, gdy wersje współdzielą duże, niezmienione obszary bajtów, ale obszary te zostały przesunięte względem początku pliku.
Przesuwany odcisk wyszukuje lokalne punkty cięcia w strumieniu bajtów
CDC przesuwa okno po danych wejściowych i aktualizuje odcisk, gdy bajty wchodzą do tego okna i je opuszczają. Granica zostaje wyznaczona, gdy odcisk spełnia skonfigurowany warunek, z uwzględnieniem reguł minimalnego i maksymalnego rozmiaru fragmentu, które zapobiegają powstawaniu skrajnie małych lub dużych fragmentów.
Dzielnik Borg używa przesuwanego odcisku zawartości, dzięki czemu ocena następnej potencjalnej granicy nie wymaga ponownego obliczania skrótu dla całego okna. Ponieważ odcisk zależy od pobliskich bajtów, ta sama lokalna sekwencja może wywołać takie samo cięcie, nawet gdy jej bezwzględne przesunięcie w pliku uległo zmianie.
Przesuwany odcisk jest zatem mechanizmem wyszukiwania granic, a nie ostateczną tożsamością przechowywanych danych kopii zapasowej. Traktowanie tych dwóch skrótów jako wymiennych osłabiłoby wyjaśnienie, gdzie faktycznie podejmowana jest decyzja o ponownym użyciu danych w deduplikacji.
Minimalny, maksymalny i średni rozmiar fragmentów również wpływają na wyszukiwanie granic. Określają, jak często rozważane są potencjalne cięcia oraz ile metadanych musi obsługiwać repozytorium.
CDC ponownie synchronizuje dane po edycji, zamiast pozostawać trwale przesunięte
Po wstawieniu lub usunięciu danych przesuwane okno początkowo widzi inne bajty i wyznacza inne granice fragmentów wokół zmienionego miejsca. Gdy przesunie się w całości do odpowiednio długiego, niezmienionego obszaru, może napotkać te same lokalne wzorce zawartości i wznowić cięcie w pozycjach zgodnych ze starszą wersją.
Borg zauważa, że granice definiowane przez zawartość mogą pozostać stabilne względem niezmienionej zawartości, nawet gdy w innym miejscu zostaną wstawione lub usunięte bajty. To właśnie ponowna synchronizacja ogranicza wiele edycji do niewielkiej liczby nowych fragmentów, zamiast unieważniać resztę pliku.
Restic podobnie dzieli pliki na fragmenty o zmiennej długości za pomocą przesuwanego odcisku, dzięki czemu niezmienione fragmenty o zmiennej długości mogą być ponownie przywoływane w kolejnych migawkach. Repozytorium nadal potrzebuje indeksu, aby rozpoznawać już przechowywane fragmenty.
Odległość ponownej synchronizacji zależy od parametrów dzielenia i wzorca zmienionych bajtów, dlatego CDC nie gwarantuje, że po każdej edycji pojawi się dokładnie jeden nowy fragment. Jego zaletą jest lokalność statystyczna: zmiany rzadziej przesuwają wszystkie późniejsze granice.
Silny identyfikator fragmentu decyduje o ponownym użyciu po wyznaczeniu granicy
Znalezienie granicy odpowiada tylko na pytanie, gdzie kończy się potencjalny fragment; repozytorium musi jeszcze ustalić, czy pełna zawartość tego fragmentu już istnieje. Ta druga decyzja wykorzystuje silniejszy identyfikator zawartości lub uwierzytelniony skrót obliczony dla gotowego fragmentu, a następnie wyszukuje go w indeksie repozytorium.
Borg wyraźnie oddziela skrót granicy od kryptograficznej tożsamości fragmentu używanej jako kryterium deduplikacji. Restic również odwołuje się do przechowywanych fragmentów za pomocą silnego skrótu zawartości, zamiast traktować przesuwany odcisk jako dowód identyczności dwóch fragmentów.
Ten dwuetapowy projekt jasno wyjaśnia ścieżkę przechowywania: przesuwany skrót wybiera potencjalną segmentację; skrót zawartości identyfikuje powstały fragment; wyszukiwanie w repozytorium decyduje, czy go zapisać, czy ponownie wykorzystać. Oszczędności wynikające z deduplikacji pojawiają się dopiero na dwóch ostatnich etapach, choć CDC znacznie zwiększa prawdopodobieństwo, że dopasowania przetrwają edycje.
Rozmiar fragmentów i transformacja danych wyznaczają granicę między kosztami obliczeń a oszczędnościami
Mniejsze średnie fragmenty dokładniej izolują zmiany, ale zwiększają liczbę odcisków, wpisów indeksu, wyszukiwań, obiektów metadanych i odwołań do przechowywanych danych. Większe fragmenty zmniejszają narzut indeksowania, ale sprawiają, że niewielka edycja może unieważnić większą jednostkę danych możliwych do ponownego użycia.
FastCDC koncentruje się na ograniczeniu narzutu procesora związanego z obliczaniem przesuwanego skrótu, zachowując skuteczne wykrywanie nadmiarowości. Pokazuje to, że samo dzielenie może stać się istotnym kosztem, zanim zostaną wyeliminowane jakiekolwiek zduplikowane bajty. Najlepsze parametry równoważą koszt dzielenia, rozmiar indeksu i wzorzec podobieństwa zbioru kopii zapasowych.
Transformacja przed podziałem na fragmenty może również usunąć podobieństwo bajtów, od którego zależy CDC. Szyfrowanie z użyciem różnych wartości nonce, formaty, które po niewielkiej zmianie logicznej przepisują większość pliku, lub niektóre układy kompresji mogą sprawić, że dwie logicznie podobne wersje będą wyglądać na niepowiązane na poziomie bajtów.
Analiza ZimaSpace dotycząca narzutu pamięci indeksu deduplikacji obejmuje drugą stronę tego kompromisu: dokładniejsze ponowne użycie wymaga większej ilości metadanych i pamięci do śledzenia tego, co już istnieje. CDC jest wartościowe wtedy, gdy odzyskana przestrzeń dyskowa przewyższa dodatkowy koszt dzielenia i indeksowania, a nie tylko dlatego, że fragmenty o zmiennej długości brzmią bardziej zaawansowanie.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Czym jest stan Plexa i które jego elementy muszą być zachowane?
Trwały stan Plex to informacje, które zachowują konfigurację serwera po ponownym uruchomieniu i odbudowie; multimedia oraz tymczasowe dane transkodowania pełnią odrębne funkcje.

Jak Plex obsługuje uwierzytelnianie w sesjach lokalnych i zdalnych?
Uwierzytelnianie w Plex rozpoczyna się od tożsamości serwera i konta, a następnie lokalne lub zdalne ścieżki sieciowe określają dostępność oraz sposób nawiązywania bezpiecznego połączenia.

Dlaczego wyszukiwanie w Plex może zwalniać wraz ze wzrostem ilości danych biblioteki?
Sam wzrost biblioteki nie jest diagnozą. Zanim obwinisz rozmiar bazy danych, przetestuj kształt zapytań, indeksy, stan pamięci podręcznej, opóźnienia pamięci masowej i aktywność zapisu.

