*.vhd
Pliki VHD spotkal chyba kazdy. Poza kopiami zapasowymi (o których jeszcze kiedys napisze wiecej) znane sa glównie z wirtualnych srodowisk VirtualPC, Virtual Server oraz Hyper-V. Postanowilem z ciekawosci podlubac w zawartosci takich plików i sprawdzic co tez w nich w srodku siedzi. Okazuje sie, ze zawartosc zalezy (jest to w sumie oczywiste) od tego czy dysk ma staly rozmiar czy tez rozrasta sie w miare potrzeby oraz od tego czy to samodzielny dysk, czy dysk róznicowy.
W srodku w pliku VHD spotkac mozna:
- identyfikator aplikacji (równy conectix dla wszystkich rozwiazan wlacznie z Hyper-V)
- wersje formatu (1.0)
- nazwe aplikacji (vpc dla Virtual PC, wsv dla Hyper-V)
- wersje aplikacji (na przyklad 5.3 dla Virtual PC 2005, 1.0 dla Hyper-V z Windows 2008)
- znacznik czasu (z dokladnoscia do 1s)
- wersje systemu hosta (zawsze Wi2k w systemach Windows)
- rozmiar w bajtach
- typ dysku (staly, dynamiczny, przyrostowy)
- geometrie (ilosc cylindrów, glowic i sektorów)
- sume kontrolna
- UUID czyli 128 bitowy unikalny identyfikator
- informacje czy maszyna ma zapisany stan (jezeli tak, to nie mozna utworzyc dysku róznicowego)
Te pola sa wspólne dla kazdego typu dysku i mimo, ze istnieje jeszcze kilka innych – te sa najciekawsze.
Jezeli dysk jest dynamicznie rozszerzalny, to jego dane uzupelnione sa dodatkowo o:
- identyfikator aplikacji (równy dla odmiany cxsparse)
- wersja naglówka (caly czas 1.0)
- ilosc wpisów w tabeli BAT
- rozmiar bloku
Ostatnie dwie pozycje dotycza sytuacji, w której dysk musi sie rozszerzyc. Skoro sie rozszerza, to przyrasta o pewna ilosc bloków o okreslonym rozmiarze. Bloki te zapisywane sa w specjalnej tablicy zwanej BAT. Iloczyn ilosci wpisów i rozmiaru bloku powinien byc z oczywistych powodów równy rozmiarowi dysku. Microsoft uzywa bloków 2MB (w Virtual PC) oraz 512KB (w Hyper-V). Inne rozmiary sa dopuszczalne ale nie sprawdzone i nie wspierane. Ciekawostka jest zmniejszenie rozmiaru bloku w Hyper-V, ale w ogóle poza zastosowaniami typowo domowymi, dyski o dynamicznym rozmiarze nie powinny byc stosowane, wiec nie warto sie tym nadmiernie przejmowac.
Dyski róznicowe sa dyskami, które wystepuja wylacznie w parze z rodzicem czyli dyskiem bazowym. Ich zawartosc zawiera wylacznie róznice pomiedzy dyskiem bazowym a dyskiem widzianym jako efekt koncowy. Dyski róznicowe mozna tworzyc swiadomie i samodzielnie lub poprzez wlaczenie „Undo disk” w Virtual PC. W pierwszym przypadku maja standardowe rozszerzenie *.vhd, w drugim - *.vud. Format jednak pozostaje w obu przypadkach taki sam. W dyskach róznicowych zapisane sa pewne dodatkowe informacje na temat dysku-rodzica:
- nazwe pliku dysku-rodzica
- UUID pliku rodzica
- znacznik czasu pliku rodzica
Wszystkie te pola musza byc takie same w pliku dysku-rodzica i w pliku dysku róznicowego. Oznacza to, ze jezeli stworzymy dysk róznicowy, a nastepnie zmodyfikujemy cos w dysku bazowym, w efekcie zmieni sie znacznik czasu rodzica i plik róznicowy przestanie dzialac!
Poza tym, dysk róznicowy zawiera informacje na temat polozenia dysku-rodzica. Zeby ulatwic jego znajdowanie, informacje te zapisywane sa w kilku róznych standardach. Teoretycznie format przewiduje 8 slotów na takie dane, jednak w praktyce, w swiecie Windows wykorzystywane sa 4. Sciezka do rodzica zapisywana jest w unicode oraz w ASCII, a w kazdym z tych formatów w postaci wzglednej i bezwzglednej. Dzieki temu mozliwe jest odnalezienie rodzica nawet, gdy plik róznicowy przeniesiony zostanie do innego katalogu lub w sytuacji, gdy plik wraz z rodzicem zostanie przeniesiony w zupelnie inne miejsce.
Same informacje z plików VHD sa tylko niewielkim kawalkiem zabawy z mozliwosciami. Naprawde ciekawie robi sie w sytuacji, gdy niezaleznie od mozliwosci srodowisk wirtualnych próbujemy modyfikowac zawartosc plików. Rozmiar bloku danych, mozliwosc resynchronizacji plików róznicowych, zmiana polozenia pliku-rodzica i tym podobne edycje zostana opisane w miare mojego wolnego czasu.
Autor: Grzegorz Tworek
Comments
Anonymous
January 01, 2003
hmm.... ;) Sam sobie napisałem jakiś czas temu. Ale specyfikacja formatu jest powszechnie dostępna i naprawdę to nie jest skomplikowane. Do odczytania danych wystarczy jakikolwiek program, który umie otworzyć plik o rozmiarach typowych dla VHD.Anonymous
November 30, 2008
skad mozna wziac to narzedzie vhdinfo.exe? to jest gdzies dostepne?Anonymous
January 31, 2009
VHD staje sie w systemach coraz bardziej powszechne. Jednak dla mnie najwieksza wartosc zostala pokazana wraz z mozliwoscia bootowania systemow Windows 7 i Windows Server 2008 R2 z plikow VHD. Chetnych serdecznie zapraszam do zapoznanaia sie z moim artem na ten temat: http://wss.pl/Articles/10516.aspx