Podejść do deduplikacji NTFS Microsoft miał wiele. Ponieważ nie dotyczyły one powszechnie dostępnych systemów, najrozsądniej będzie je tutaj przemilczeć. Możemy o nich tym łatwiej zapomnieć, że z nowym serwerem przychodzi zupełnie nowe rozwiązanie. Windows Server 2012 ma mechanizmy deduplikacji zaimplementowane w postaci jednej z ról i każdy może z nich skorzystać.

Aby uniknąć rozczarowań, warto zacząć od ograniczeń. Otóż deduplikacji nie powinniśmy stosować:

  • Na dyskach systemowych
  • Na dyskach startowych
  • Na dyskach przenośnych (i oczywiście sieciowych)
  • Na dyskach CSVFS (w Cluster Shared Volumes)
  • Na plikach mniejszych niż 32KB
  • Na plikach z alternatywnymi strumieniami danych
  • Na plikach, które są stale otwarte
  • Na plikach bardzo dużych, powyżej 1TB

Czy jeszcze zostały jakiekolwiek scenariusze, gdzie mamy do czynienia z danymi? Oczywiście tak. Wszelkie serwery plików z typowymi dokumentami są tutaj świetnym przykładem. Dużo plików średniej wielkości, otwierane sporadycznie, na dysku lokalnym (choć niekoniecznie DASD) serwera. Generalnie ocenia się, że około 50% oszczędności miejsca powinno dać się uzyskać.

Aby uniknąć sytuacji, w których Microsoft zachęca do deduplikacji a potem daje w zamian pojedyncze procenty oszczędności, razem z systemem przychodzi narzędzie ddpeval. Dostępne jest ono w Windows Server 2012, ale dobrą wiadomością jest, że zadziała w Windows Server 2008R2. Oznacza to w praktyce, że możemy skopiować sobie ddpeval.exe na istniejący serwer plików i sprawdzić w praktyce, na naszych własnych danych, jaki poziom oszczędności uda się osiągnąć.

Opisując sposób działania deduplikacji, skorzystam ze znanej prawdy mówiącej, że jeden obraz jest warty więcej niż tysiąc słów. Tym bardziej, że obraz ten pochodzi z portalu Technet.

dedup1

A w szczegółach? Istnieją trzy kategorie zadań, które wykonywane okresowo powodują, że możemy cieszyć się oszczędnościami miejsca.

  • Optimization – właściwa deduplikacja. Pliki są przeglądane, analizowane, wspólne fragmenty przenoszone w odpowiednie miejsce (Chunk Store) itp.
  • Scrubbing – zadanie mające na celu zapewnienie spójności systemu plików. Wykonywane domyślnie raz w tygodniu rozwiązuje ewentualne problemy z odwołaniami do danych. Historia zapisywana jest w event logu, w gałęzi Event Viewer\Applications and Services Logs\Microsoft\Windows\Deduplication\Scrubbing
  • Garbage Collection – przegląda Chunk Store w celu znalezienia i usunięcia danych, do których żaden plik już się nie odwołuje.

Po tym wstępie teoretycznym, pora na przepis na samodzielną zabawę:

  1. Dla testów polecam podłączenie dodatkowego dysku (zamontowany VHD wystarczy) i utworzenie na nim kilku-kilkunastu folderów z kopią na przykład kilkuset plików z Windows\System32. U mnie nazywa się on E:
  2. Najpierw trzeba włączyć odpowiednią funkcjonalność. Najlepiej przez polecenie Add-WindowsFeature -name FS-Data-Deduplication, ale miłośnicy klikania mogą znaleźć odpowiednią pozycję również w Server Managerze.
  3. Teraz można przeanalizować potencjalne korzyści z wykorzystaniem opisanego wcześniej narzędzia ddpeval.exe. Po włączeniu deduplikacji na danym wolumenie nie będzie to możliwe.
  4. Włączenie deduplikacji dla konkretnego wolumenu polega na uruchomieniu polecenia Enable-DedupVolume E:. Warto również uruchomić Set-DedupVolume z parametrem MinimumFileAgeDays ustawionym na zero. Parametr ten jest o tyle istotny, że domyślnie, deduplikowane są tylko dane starsze niż 5 dni. Oznacza to brak deduplikacji dla zupełnie świeżych, nadal obrabianych plików, co zwykle ma pewien sens, ale w laboratoryjnych warunkach wymaga zbyt długiego czekania.
  5. Przez Get-DedupSchedule dowiemy się kiedy dane faktycznie zostaną przetworzone. Jeżeli ktoś jest niecierpliwy, to Start-DedupJob E: -Type Optimization -Wait
  6. Gotowe! Od Get-DedupStatus | FL dowiemy się o tym kiedy ostatnio wykonały się zdefiniowane zadania i jakie konkretnie mamy z deduplikacji korzyści.
  7. I działa... Czas analizy zależy od ilości danych, wdrożenie zajmuje parę minut a korzyści w gigabajtach są zwykle naprawdę spore.

Polecam również znalezienie jakiegoś większego pliku i spojrzenie w jego właściwości. Ciekawy jest zwłaszcza parametr określający faktycznie zajęte na dysku miejsce.

dedup2

 

Na koniec jeszcze trzy drobiazgi:

  • Dane używane w deduplikacji znajdują się w folderze Dedup w System Volume Information. Same dane trzymane są w podfolderze ChunkStore, gdzie przechowywane są w wielkich plikach *.ccc Dane dla fragmentów zdeduplikowanych więcej niż 100 razy dodatkowo przechowywane są w folderze hotspot. Ot tak na wszelki wypadek. Poza tym, w Dedup trzymane są informacje o konfiguracji i stanie (w postaci XML) oraz log (w postaci ETL).
  • Dla deduplikacji można ustawić wyłączenia bazujące na rozszerzeniach i ścieżkach. W każdym środowisku istnieją pliki, których nawet nie warto sprawdzać, więc można od razu je ominąć w całym procesie.
  • Zdeduplikowany dysk podłączony do starszego systemu zachowuje się tak, że zawartość folderów jest widoczna poprawnie, pliki można zapisywać, jednak próba odczytu zdeduplikowanego pliku skończy się błędem 0x80070780: The file cannot be accessed by the system.

Autor: Grzegorz Tworek [MVP]