Deduplikacja w Windows Server 2012

Podejsc do deduplikacji NTFS Microsoft mial wiele. Poniewaz nie dotyczyly one powszechnie dostepnych systemów, najrozsadniej bedzie je tutaj przemilczec. Mozemy o nich tym latwiej zapomniec, ze z nowym serwerem przychodzi zupelnie nowe rozwiazanie. Windows Server 2012 ma mechanizmy deduplikacji zaimplementowane w postaci jednej z ról i kazdy moze z nich skorzystac.

Aby uniknac rozczarowan, warto zaczac od ograniczen. Otóz deduplikacji nie powinnismy stosowac:

  • Na dyskach systemowych
  • Na dyskach startowych
  • Na dyskach przenosnych (i oczywiscie sieciowych)
  • Na dyskach CSVFS (w Cluster Shared Volumes)
  • Na plikach mniejszych niz 32KB
  • Na plikach z alternatywnymi strumieniami danych
  • Na plikach, które sa stale otwarte
  • Na plikach bardzo duzych, powyzej 1TB

Czy jeszcze zostaly jakiekolwiek scenariusze, gdzie mamy do czynienia z danymi? Oczywiscie tak. Wszelkie serwery plików z typowymi dokumentami sa tutaj swietnym przykladem. Duzo plików sredniej wielkosci, otwierane sporadycznie, na dysku lokalnym (choc niekoniecznie DASD) serwera. Generalnie ocenia sie, ze okolo 50% oszczednosci miejsca powinno dac sie uzyskac.

Aby uniknac sytuacji, w których Microsoft zacheca do deduplikacji a potem daje w zamian pojedyncze procenty oszczednosci, razem z systemem przychodzi narzedzie ddpeval. Dostepne jest ono w Windows Server 2012, ale dobra wiadomoscia jest, ze zadziala w Windows Server 2008R2. Oznacza to w praktyce, ze mozemy skopiowac sobie ddpeval.exe na istniejacy serwer plików i sprawdzic w praktyce, na naszych wlasnych danych, jaki poziom oszczednosci uda sie osiagnac.

Opisujac sposób dzialania deduplikacji, skorzystam ze znanej prawdy mówiacej, ze jeden obraz jest warty wiecej niz tysiac slów. Tym bardziej, ze obraz ten pochodzi z portalu Technet.

dedup1

A w szczególach? Istnieja trzy kategorie zadan, które wykonywane okresowo powoduja, ze mozemy cieszyc sie oszczednosciami miejsca.

  • Optimization – wlasciwa deduplikacja. Pliki sa przegladane, analizowane, wspólne fragmenty przenoszone w odpowiednie miejsce (Chunk Store) itp.
  • Scrubbing – zadanie majace na celu zapewnienie spójnosci systemu plików. Wykonywane domyslnie raz w tygodniu rozwiazuje ewentualne problemy z odwolaniami do danych. Historia zapisywana jest w event logu, w galezi Event Viewer\Applications and Services Logs\Microsoft\Windows\Deduplication\Scrubbing
  • Garbage Collection – przeglada Chunk Store w celu znalezienia i usuniecia danych, do których zaden plik juz sie nie odwoluje.

Po tym wstepie teoretycznym, pora na przepis na samodzielna zabawe:

  1. Dla testów polecam podlaczenie dodatkowego dysku (zamontowany VHD wystarczy) i utworzenie na nim kilku-kilkunastu folderów z kopia na przyklad kilkuset plików z Windows\System32. U mnie nazywa sie on E:
  2. Najpierw trzeba wlaczyc odpowiednia funkcjonalnosc. Najlepiej przez polecenie Add-WindowsFeature -name FS-Data-Deduplication, ale milosnicy klikania moga znalezc odpowiednia pozycje równiez w Server Managerze.
  3. Teraz mozna przeanalizowac potencjalne korzysci z wykorzystaniem opisanego wczesniej narzedzia ddpeval.exe. Po wlaczeniu deduplikacji na danym wolumenie nie bedzie to mozliwe.
  4. Wlaczenie deduplikacji dla konkretnego wolumenu polega na uruchomieniu polecenia Enable-DedupVolume E:. Warto równiez uruchomic Set-DedupVolume z parametrem MinimumFileAgeDays ustawionym na zero. Parametr ten jest o tyle istotny, ze domyslnie, deduplikowane sa tylko dane starsze niz 5 dni. Oznacza to brak deduplikacji dla zupelnie swiezych, nadal obrabianych plików, co zwykle ma pewien sens, ale w laboratoryjnych warunkach wymaga zbyt dlugiego czekania.
  5. Przez Get-DedupSchedule dowiemy sie kiedy dane faktycznie zostana przetworzone. Jezeli ktos jest niecierpliwy, to Start-DedupJob E: -Type Optimization -Wait
  6. Gotowe! Od Get-DedupStatus | FL dowiemy sie o tym kiedy ostatnio wykonaly sie zdefiniowane zadania i jakie konkretnie mamy z deduplikacji korzysci.
  7. I dziala... Czas analizy zalezy od ilosci danych, wdrozenie zajmuje pare minut a korzysci w gigabajtach sa zwykle naprawde spore.

Polecam równiez znalezienie jakiegos wiekszego pliku i spojrzenie w jego wlasciwosci. Ciekawy jest zwlaszcza parametr okreslajacy faktycznie zajete na dysku miejsce.

dedup2

 

Na koniec jeszcze trzy drobiazgi:

  • Dane uzywane w deduplikacji znajduja sie w folderze Dedup w System Volume Information. Same dane trzymane sa w podfolderze ChunkStore, gdzie przechowywane sa w wielkich plikach *.ccc Dane dla fragmentów zdeduplikowanych wiecej niz 100 razy dodatkowo przechowywane sa w folderze hotspot. Ot tak na wszelki wypadek. Poza tym, w Dedup trzymane sa informacje o konfiguracji i stanie (w postaci XML) oraz log (w postaci ETL).
  • Dla deduplikacji mozna ustawic wylaczenia bazujace na rozszerzeniach i sciezkach. W kazdym srodowisku istnieja pliki, których nawet nie warto sprawdzac, wiec mozna od razu je ominac w calym procesie.
  • Zdeduplikowany dysk podlaczony do starszego systemu zachowuje sie tak, ze zawartosc folderów jest widoczna poprawnie, pliki mozna zapisywac, jednak próba odczytu zdeduplikowanego pliku skonczy sie bledem 0x80070780: The file cannot be accessed by the system.

Autor: Grzegorz Tworek [MVP]