Pracując w Hyper-V z reguły używamy dysków wirtualnych vhd lub vhdx. Tworząc te dyski skupiamy się na na dwóch typach dysków tj.

  • dysku dynamicznym (Dynamicly Expanding VHD), który rozszerza się do zadanej wielkości. Przy tworzeniu jest bardzo małym plikiem (kilka MB) i rośnie w trakcie jak dane są na nim zapisywane.
  • dysku o stałej wielkości (Fixed-Size VHD) – używa tyle fizycznie miejsca na dysku maszyny hosta, ile określimy przy jego tworzeniu.

Istnieje jeszcze inny typ, który cieszy się znacznie mniejszą popularnością : dysk różnicowy (Differencing). To typ dysku, który nie może pracować samodzielnie, do pracy potrzebuje dysku nadrzędnego (dysku matki). Dysk nadrzędny to utworzony wcześniej dysk albo dynamiczny albo o stałym rozmiarze, który współpracuje z dyskiem różnicowym. Wszystkie zmiany jakich dokonujemy w systemie, który zainstalowaliśmy na dysku nadrzędnym, który powiązaliśmy potem z różnicowym zapisywane są tylko na nim, dysk nadrzędny pozostaje nienaruszony. Rozmiar takiego dysku różnicowego jest zwykle dość mały (jego maksymalny rozmiar nie może przekraczać rozmiaru rodzica).

Przydatna opcja kiedy chcemy np. wdrażać wiele systemów wirtualnych z tą samą konfiguracją na wielu maszynach lub też kiedy chcemy pozostawić sobie dysk wzorcowy ze wszystkimi ustawieniami w stanie nienaruszonym. Dodatkowe zalety takiego rozwiązania to mniej miejsca zajmowanego na fizycznym dysku twardym, no bo dysk różnicowy zajmuje zdecydowanie mniej miejsca.

Ciekawą funkcją dysków różnicowych jest możliwość utworzenia podstawowego obrazu systemu operacyjnego (jako pliku vhd czy vhdx) ze wszystkimi niezbędnymi ustawieniami i oprogramowaniem, wykorzystywana gdy wdrażać wiele systemów wirtualnych z tą samą konfiguracją na wielu maszynach lub też kiedy chcemy pozostawić sobie dysk wzorcowy ze wszystkimi ustawieniami w stanie nienaruszonym. W oparciu o ten obraz, wdrażamy kilka maszyn wirtualnych, które korzystają z napędu vhd(x) obrazu podstawowego, a wszystkie zmiany są zapisywane na ich własnych różnicowych dyskach wirtualnych. W ten sposób uzyskuje się znaczne oszczędności miejsca na dysku.

Bardzo często tworzymy takie dyski budując laboratoria, środowiska deweloperskie lecz rzadziej w zastosowaniach produkcyjnych.

Na przykład w przypadku korzystania z dysków różnicowych dla 5 maszyn wirtualnych opartych na jednym obrazie potrzebne jest tylko np. 40 GB, a przy klasycznym modelu wdrażania 200 GB. Różnica jest znacząca, szczególnie w przypadku szybkich i drogich napędów SSD

Najważniejsze właściwości dysków różnicowych to:

  • Dysk różnicowy musi mieć dokładnie jednego rodzica.
  • Dysk nadrzędny dla dysku różnicowego musi być innym wirtualnym dyskiem twardym. Nie można ich dołączać do dysków tranzytowych, systemu plików, jednostki LUN, udziału zdalnego ani niczego innego.
  • Element nadrzędny dysku różnicowego może być jednym z trzech typów (stały, dynamicznie rozszerzany lub inny różnicowy)
  • Wszelkie modyfikacje danych nadrzędnego dysku różnicowego skutecznie osierocają dysk różnicowy, czyniąc go bezużytecznym
  • Hyper-V może scalić zmiany danych z powrotem do rodzica, niszcząc przy tym dysk różnicowy.

Maksymalny rozmiar dysku różnicowego jest równy maksymalnemu rozmiarowi głównego elementu nadrzędnego określanego jako „root”, ponieważ nawet jeśli dysk różnicowy może być rodzicem innego dysku różnicowego, na samej górze musi znajdować się dysk niezróżnicowany, aby którykolwiek z nich był użyteczny.

Należy pamiętać, że dysk różnicowy dołączony do dysku dynamicznego może osiągnąć wielkość większą niż dysk dynamiczny (nadrzędny) jeśli ten dysk nie jest w pełni rozszerzony.

Jak działają dyski różnicowe?

Najważniejszą rzeczą do zrozumienia jest to, że sterownik dysku wirtualnego dokonuje wyboru zapisu na dysku różnicowym . Sam plik nie jest oznaczony jako tylko do odczytu. Nie można przeskanować pliku i stwierdzić, że ma on dziecko. Dziecko wie, kto jest jego rodzicem, ale ta wiedza nie jest odwzajemniona.

Kiedy maszyna wirtualna żąda danych ze swojego dysku, sterownik dysku wirtualnego najpierw sprawdza, czy dziecko ma zapis żądanych bloków. Jeśli tak, to dziecko dostarcza dane do odczytu. Jeśli dziecko nie ma zapisów żadnych zmian w blokach, sterownik dysku wirtualnego pobiera je od rodzica.

Jak tworzone są dyski różnicowe?

W przeciwieństwie do stałych i dynamicznych dysków, nie wystarczy uruchomić kreatora i utworzyć od podstaw dysk różnicowy.

Ogólne metody tworzenia dysków różnicowych:

  • W Hyper-V tworzone są automatycznie podczas tworzenia punktów kontrolnych maszyny wirtualnej (tzw. snapschot). Operacje na punktach kontrolnych zawsze utworzą dyski różnicowe w tej samej lokalizacji co nadrzędny. System ten nada rozszerzenie dla nowych dysków: avhd lub avhdx.
  • Tworzenie ręczne – Można utworzyć dysk różnicowy na podstawie dowolnego nadrzędnego wirtualnego dysku twardego za pomocą PowerShell lub Hyper-V Manager.
New-VHD -Path .\diskdiff.vhdx -ParentPath .\diskroot.vhdx -Differencing


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl