Strategie deduplikacji plików dla przechowywania w chmurze
Obniż koszty przechowywania w chmurze dzięki deduplikacji plików. Omówienie deduplikacji na poziomie bloku, pliku oraz inline wraz z praktycznymi wskazówkami.
Deduplikacja plików redukuje storage w chmurze o 20–90% w zależności od workloadu, używając jednej z trzech technik: na poziomie pliku (przechowuj identyczne pliki raz, kluczowane przez hash SHA-256), na poziomie bloku (dziel pliki na bloki 4–128 KB i deduplikuj per blok) lub zmiennych chunków przez Content-Defined Chunking (CDC) z odciskami Rabina. Kopie zapasowe maszyn wirtualnych osiągają redukcje 10:1; ogólne pliki biurowe 2:1; biblioteki mediów prawie nic. Dobierz technikę do danych — uruchamianie deduplikacji blokowej na bibliotece unikalnych plików .mp4 marnuje CPU bez żadnego zysku.
Deduplikacja na poziomie pliku: najprostszy zysk
Deduplikacja na poziomie pliku porównuje hashe całych plików. Dwa pliki z tym samym SHA-256 są identyczne; zachowaj jeden, wskaż drugi na niego. Implementacja zajmuje weekend:
- Zrób inwentarz zawartości bucketu (S3 Inventory, Azure Inventory, lista bucket GCS)
- Oblicz SHA-256 dla każdego obiektu (lub użyj dostarczanych przez providera ETags, z zastrzeżeniami)
- Grupuj według hashu, wybierz kanoniczny klucz per grupę, zaktualizuj referencje, usuń duplikaty
Zastrzeżenia: ETagi S3 odpowiadają SHA-256 tylko dla jednoczęściowych uploadów poniżej 5 GB. Uploady wieloczęściowe używają innej formuły (hash hashów). Dla rzetelnej deduplikacji obliczaj własny hash przez aws s3 cp s3://bucket/key - | sha256sum lub obliczaj przy uploadzie i przechowuj w metadanych.
Deduplikacja na poziomie pliku sprawdza się, gdy użytkownicy rutynowo wgrywają te same pliki — PDF-y od dostawców, firmowe szablony, współdzielone obrazy. Oczekuj 10–30% oszczędności przy typowych workloadach biurowych.
Deduplikacja na poziomie bloku: duży mnożnik
Deduplikacja blokowa dzieli każdy plik na chunki o stałym rozmiarze (4 KB, 16 KB, 64 KB) i hashuje każdy chunk. Dwa pliki dzielące 80% swoich chunków przechowują tylko unikalne 20% plus jedną kopię wspólnych bloków. Używają jej produkty backupowe (Veeam, Rubrik, Commvault), systemy plików (ZFS z dedup=on, Btrfs) i niektóre chmury backupowe (Backblaze B2 z deduplikacją po stronie klienta).
Zalety: masywna kompresja na obrazach VM, kopiach zapasowych baz danych i archiwach logów, gdzie pliki dzielą duże zakresy. Wady: wysokie zużycie pamięci (indeks deduplikacji żyje w RAM), koszt CPU przy zapisie i katastroficzna amplifikacja przy uszkodzeniu indeksu.
Dla obiektowego storage w chmurze deduplikacja blokowa zazwyczaj działa wewnątrz produktu backupowego, nie jako funkcja natywna. S3 samo w sobie nie deduplikuje; Backblaze B2 deduplikuje przy uploadzie, gdy klient wysyła najpierw hashe bloków (b2_start_large_file z pre-hashowanymi częściami).
Content-Defined Chunking (CDC)
Chunking o stałym rozmiarze psuje się, gdy na początku pliku zostaje wstawiony bajt — każdy kolejny blok hashuje się inaczej. Content-Defined Chunking używa kroczącego hashu (odcisk Rabin-Karp) do definiowania granic chunków na podstawie wzorców treści. Wstaw bajt, a zmienia się tylko bezpośredni chunk.
CDC jest podstawą restic, BorgBackup, Duplicacy i Kopia. Te narzędzia open-source deduplikują po stronie klienta ze zmiennymi chunkami o średniej 1–4 MB. Dla kopii zapasowych 500 GB plików zmieniających się przyrostowo, backupy oparte na CDC często używają poniżej 50 GB unikalnego storage.
Jeśli budujesz system backupu lub synchronizacji, CDC przez bibliotekę taką jak fastcdc-rs lub chunky to nowoczesny wybór. Nie pisz własnego kroczącego hashu — przypadki brzegowe są subtelne.
Deduplikacja inline vs po przetworzeniu
Deduplikacja inline działa przy zapisie — zanim dane trafią na dysk, system sprawdza, czy blok już istnieje. Jeśli tak, zapisz referencję; jeśli nie, zapisz blok. Używają jej ZFS, większość urządzeń backupowych i niektóre warstwy storage w chmurze.
Deduplikacja po przetworzeniu najpierw zapisuje, potem uruchamia zadanie w tle, żeby znaleźć duplikaty i odzyskać miejsce. Używają jej Data Deduplication Windows Server, SnapVault NetApp i większość narzędzi user-space. Deduplikacja po przetworzeniu ma niższe opóźnienie zapisu, ale potrzebuje więcej szczytowego storage (duplikaty chwilowo istnieją przed odzyskaniem).
Dla workloadów w chmurze deduplikacja inline jest zazwyczaj niedostępna — S3 jej nie oferuje. Deduplikacja po przetworzeniu z zaplanowanym zadaniem (dzienny inwentarz, codzienna deduplikacja) to praktyczny wzorzec.
Gdzie deduplikacja nie pomaga
Dane już skompresowane lub zaszyfrowane deduplikują się słabo. Dwa różne pliki .mp4, nawet o podobnej treści, prawie nie dzielą bajtów. Dwa zaszyfrowane pliki .zip tej samej treści w jawnej postaci nie dzielą żadnych bajtów po szyfrowaniu — o to właśnie chodzi w szyfrowaniu.
Oznacza to, że szyfrowany end-to-end storage nie może deduplikować między użytkownikami. Konwergentne szyfrowanie (hashuj jawny tekst, użyj hashu jako klucza) było próbą umożliwienia deduplikacji w E2EE, ale ma problemy bezpieczeństwa — umożliwia ataki potwierdzenia-posiadania-pliku. Dla serwisów E2EE zaakceptuj, że deduplikacja działa w obrębie własnych plików użytkownika, nie między użytkownikami.
Aspekty bezpieczeństwa deduplikacji
Deduplikacja między użytkownikami w systemach bez E2EE tworzy kanał boczny: jeśli plik, który wgrywasz, deduplikuje się do istniejącego bloku, serwer dowiaduje się, że ktoś inny już miał ten plik. Dropbox miał to ujawnione w 2011 roku; kilka innych serwisów też. Dla współdzielonych kont biznesowych to akceptowalne, ale dla serwisów deklarujących prywatność — to przeciek.
Jeśli poufność ma znaczenie, deduplikuj tylko w obrębie danych jednego użytkownika (z solą per-użytkownik), nie w całym systemie. Albo zaakceptuj, że E2EE oznacza brak deduplikacji i odpowiednio zwymiaruj storage. Narzędzia stawiające prywatność na pierwszym miejscu — HexaTransfer dla szyfrowanych transferów ad-hoc, na przykład — wymieniają efektywność deduplikacji za gwarancję, że nikt inny (włącznie z serwisem) nie może stwierdzić, czy dwóch użytkowników ma ten sam plik.
Mierzenie efektywności deduplikacji
Nie włączaj po prostu deduplikacji i miej nadzieję. Mierz stosunek:
wspolczynnik_dedup = bajty_logiczne / bajty_fizyczne
Wskaźnik 2:1 oznacza, że przechowujesz 2 logiczne bajty na każdy 1 bajt fizyczny. Narzędzia raportowania: zpool get dedupratio na ZFS, Get-DedupStatus na Windows Server, statystyki per-repozytorium na restic/Borg.
Zdrowe wskaźniki według workloadu:
- Obrazy VM: 8–20:1
- Kopie zapasowe baz danych: 10–30:1
- Serwer plików (dokumenty biurowe): 1,5–3:1
- Archiwa e-mail: 2–5:1
- Biblioteki mediów: 1,0–1,1:1 (nie warto)
- Szyfrowane archiwa: 1,0:1 (niemożliwe)
Jeśli wskaźnik workloadu jest poniżej 1,5:1, wyłącz deduplikację — CPU i pamięć nie zwracają się.
Integracja z produktami backupowymi
Większość przedsiębiorstw nie implementuje deduplikacji od podstaw — używa produktu backupowego, który to robi. Punkty porównawcze przy wyborze:
- Veeam: Inline deduplikacja blokowa, domyślne chunki 512 KB, kompresja po deduplikacji
- Rubrik: Zmienne chunki content-defined, deduplikacja sub-blokowa
- Commvault: Deduplikacja po stronie klienta z pulami per-klient i globalnymi
- restic/Borg/Kopia: CDC open-source, po stronie klienta, backendy S3/B2/Azure
- BackupPC: Hardlinki na poziomie pliku, proste, ale przestarzałe
Dla małej firmy robiącej backup 2 TB do S3 Glacier, restic do Glacier Instant Retrieval kosztuje około 60–70 PLN miesięcznie przy deduplikacji 5:1. Dla enterprise z 500 TB danych, właściwa platforma backupowa z deduplikacją zwraca się w pierwszym roku oszczędności na storage.
Kiedy dodać kompresję na wierzch
Deduplikacja usuwa zduplikowane bajty; kompresja usuwa redundancję w unikalnych bajtach. Nakładają się. Po deduplikacji zastosuj kompresję zstd dla kolejnego zmniejszenia 1,5–2x na danych bogatych w tekst. BorgBackup obsługuje --compression zstd; restic ma --compression max; AWS EFS ma transparentną kompresję dla OneZone-IA.
Kolejność ma znaczenie: najpierw deduplikuj (żeby wyeksponować zduplikowane bloki), potem kompresuj unikalne bloki. Kompresja pierwsza zazwyczaj niszczy deduplikację, bo małe zmiany wejścia kaskadują przez skompresowane wyjście. Wszystkie poważne produkty backupowe obsługują to poprawnie — wystarczy ustawić odpowiednie opcje.
Deduplikacja jest nudna, nieglamourowa i stanowi największą dźwignię kosztu storage dla mieszanych workloadów. Zrób inwentarz danych, dobierz technikę do treści, zmierz wskaźnik i odzyskaj budżet.
Wypróbuj na hexatransfer.com — bezpłatnie, bez konta, do 10 GB.
Wysyłaj duże pliki bezpiecznie z szyfrowaniem end-to-end
Przesyłaj pliki do 10 GB za darmo z szyfrowaniem end-to-end. Bez rejestracji. Twoje pliki są szyfrowane w przeglądarce przed przesłaniem — nikt inny nie może ich odczytać.
Wyślij plik