Jedną z nowości w Windows8/Windows Server 2012 jest VHDX – nowy format dysku wirtualnego. Czasem daje się na niego natknąć w systemowych narzędziach i wypadałoby w takiej sytuacji zastanowić się co on daje. Warto sięgnąć po VHDX czy może lepiej pozostać przy starym dobrym VHD? Odpowiedź nie jest jednoznaczna, dlatego spróbuję przestawić co nowego można z plików VHDX wyciągnąć.

Po pierwsze i najważniejsze – twarde, konkretne korzyści. Plik VHDX może przechować wirtualny dysk o pojemności do 64TB, w którym można użyć sektorów o rozmiarze do 4KB i bloków do 256MB. Poza większym rozmiarem, skorzystać można z większej wydajności, którą uzyskuje się dzięki dostosowaniu parametrów bloków i sektorów do charakteru obciążenia.

Mało? Jest więcej i to są te aspekty, o których zwykle mówi się "diabeł tkwi w szczegółach":

  • Zapis we wszystkich istotnych strukturach pliku VHDX wykorzystuje log. Dane zapisywane w istotnych strukturach pliku VHDX takich jak BAT czy metadane najpierw trafiają do logu, potem dopiero we właściwe miejsce. Jeżeli w trakcie tych operacji coś się wydarzy (na przykład awaria zasilania) – przy następnym otwarciu, parser VHDX (czyli ten, kto go faktycznie otwiera i interpretuje) najpierw zapisze zaległe dane z logu a dopiero potem zacznie udostępniać dane użytkownikowi.
  • Ochrona spójności przez log nie dotyczy danych użytkownika przechowywanych na dysku wirtualnym. Tutaj mamy mechanizmy logów wbudowane w system plików i ich dublowanie byłoby w praktyce zbędne.
  • Format jest otwarty na dowolne rozszerzanie. Każdy może zapisać w metadanych swoje informacje dotyczące postępowania z plikiem. Wystarczy, że doda do przewidzianych na to struktur informację o nowych danych i gotowe. Jeżeli plik z nietypowymi danymi trzeba otworzyć, to są trzy możliwości:
    • Parser rozumie takie metadane, więc po prostu je prawidłowo obsługuje
    • Parser nie rozumie metadanych, które oznaczone zostały jako opcjonalne i wtedy po prostu ich nie dotyka
    • Parser nie rozumie metadanych, które oznaczone zostały jako obowiązkowe i wtedy odmawia otwarcia pliku VHDX
  • Nie istnieją odrębne formaty dla dysków statycznych i dynamicznych. Każdy dysk jest dynamiczny, przy czym można od razu zaalokować wszystkie bloki, dzięki czemu dysk jest statyczny.
  • Istotne dane zapisywane są na początku pliku a nie na jego końcu jak w formacie VHD. Pozwala to uniknąć takich obejść jak opisane kiedyś na tym blogu.
  • Położenie dysku-rodzica zapisywane jest poza ścieżką względną i bezwzględną również jako ścieżka dyskowa (\\?\Volume{26A21BDA-A627-11D7-9931-806E6F6E6963}\path2\sub3\parent.vhdx) Ten sposób zapisu pozwala na sięgnięcie do dysku-rodzica również w sytuacji, gdy dyski nie mają przypisanych liter.
  • Plik uwalnia się od kilkunastoletnich rozwiązań i ograniczeń, wpisanych w format VHD jeszcze przez firmę Connectix.
  • Dla sprawiedliwości, formatowi VHD należy przyznać jeden punkt, w którym VHDX nie może się równać: VHD pozwala na tworzenie jednego obrazu w wielu dyskach. Pytanie kiedy ostatni raz ktoś tego na serio używał...

Próbując podsumować i zarekomendować jedne format, stwierdzić można, że VHDX jest nowszy, lepszy, bardziej przemyślany, elastyczny i pozwala na większe pojemności. VHD jest zgodny wstecz. Dlatego decyzję każdy musi podjąć sam.

Autor: Grzegorz Tworek [MVP]

PS Na samym początku pliku VHDX umieszczana jest sygnatura, zawierająca między innymi informacje o tym, kto utworzył plik. Dla Windows 8 Consumer Preview jest to "Microsoft Windows 6.2.8250.0". To trochę bardziej precyzyjna informacja niż cztery znaki w VHD, w których zapisać dało się jedynie Wi2k. Kolejny punkt dla VHDX.