Hyper-V Server 2008 R2 jest nietypowy jak na system wyprodukowany przez Microsoft. Nie tylko, że jest dostępny bezpłatnie to jak mawia mój kolega “nie ma windowsa w tym systemie”. Z technicznego punktu widzenia jest w nim więcej ciekawostek, na przykład to, że wspierana jest jego instalacja na dysku USB flash.
Dawno temu znalazłem wpis na blogu Micorosft Virtualization Team, na którym wyczytałem o możliwościach uruchamiania systemu zainstalowanego na USB: “One thing our customers and partners requested was the ability to boot from flash. Customers told us they would like to purchase a server from their hardware partner of choice with Hyper-V included and they wanted the ability to choose whether it was on traditional spinning media or flash media. You got it.”. Zacząłem szukać tego opisu i znalazłem opis na TechNecie poświęcony właśnie takiemu wdrażaniu Hyper-V Server 2008 R2, przygotowując opis bazowałem głównie na tym dokumencie. Dokument wprowadza skrót UDF od USB Flash Device, zawiera też kilka obwarowań co do tej instalacji, które po przetłumaczeniu brzmią:
- Instalacja Microsoft Hyper-V Server 2008 R2 na UFD, który nie jest wewnętrznym komponentem komputera jak np. przenośny zewnętrzny flash USB nie jest dozwolona.
- UFD musi być komponentem wewnętrznym wbudowanym w serwer zgodnie z dokładnym opisem zawartym w dokumencie.
Aby przeprowadzić instalację Hyper-V Server 2008 R2 urządzeniu USB należy przygotować:
- Nośnik instalacyjny (może być DVD, klucz USB, lub jako rozpakowany obraz) Hyper-V Server 2008 R2
- Windows Automated Installation Kit (AIK) for Windows 7
- Napęd USB (dysk lub duży szybki flash) na którym zainstalujemy system do pliku VHD. Minimalna wielkość to 8GB, zalecana 16GB.
Wszystkie poniższe operacje wykonywałem na Windows 7 Ultimate x64 z zainstalowanym pakietem WAIK, gdzie:
- C: to dysk systemowy
- D: napęd DVD (może być również klucz USB, jak również rozpakowany obraz płyty) z instalatorem Hyper-V Server 2008 R2
- W porcie USB znajduje się klucz USB na którym zainstalowany zostanie system. UWAGA! Wszystkie dane z nośnika wymiennego zostaną skasowane, nie jest to koniecznością, zdecydowałem się na to z powodu przejrzystości opisu.
Ad rem!
- Uruchamiamy CMD z uprawnieniami Administratora, za jego pomocą tworzymy w folderze nowym folderze WINvhd na dysku C: plik VHD o wielkości prawie 15GB, formatujemy jego zawartość i nadajemy oznaczenie R:.
mkdir c:\WINvhd
diskpart
create vdisk file=c:\WINvhd\HVserver.vhd maximum=15000 type=fixed
select vdisk file=c:\WINvhd\HVserver.vhd
attach vdisk
create partition primary
assign letter=R
format quick fs=ntfs label=HVserver
exit - Rozpakowanie pliku WIM, przechodzimy do folderu gdzie znajduje się ImageX, w moim przypadku używam wersji X64, bo Hyper-V Server 2008 R2 jest właśnie X64. W drugiej linii sprawdzamy jakie są wszystkie wersje systemu dostępne w pliku WIM, w tym przypadku jest tylko jedna wersja <IMAGE INDEX=”1″>, właśnie ją wybiorę:) dlatego w następnym kroku pojawiła się cyfra 1.
cd /d “C:\Program Files\Windows AIK\Tools\amd64”
imagex /info d:\sources\install.wim
imagex /apply /check d:\sources\install.wim 1 R:\ - Odłaczamy dysk VHD.
diskpart
select vdisk file=c:\WINvhd\Windows.vhd
detach vdisk
exit - Sprawdzamy którym urządzeniem jest docelowy napęd USB, następnie wymazujemy jego zawartość, tworzymy nową partycję i formatujemy ją na NTFS i nadajemy oznaczenie Z:.
diskpart
list disk
select disk <numer napędu USB>
clean
create partition primary
select partition 1
active
format quick fs=ntfs
assign letter=Z
exit - Kopiujemy plik VHD na napęd USB.
copy c:\WINvhd\HVserver.vhd Z:
- Nadpisujemy MBR na napędzie USB.
cd /d “c:\program files\Windows AIK\Tools\PETools\AMD64\”
bootsect /nt60 Z: /force /mbr - Podłączamy dysk VHD z napędu USB, powinien być widoczny jako R:.
diskpart
select vdisk file=z:\HVserver.vhd
attach vdisk
exit - Zmiana parametrów bootowania.
bcdboot r:\windows /s Z:
- Dodajemy wpisy do rejestru systemu na VHD wymuszające wyłączenie pliku wymiany w celu ograniczenia ilości cykli zapisów na napęd USB.
REG LOAD HKLM\WindowsTemp r:\windows\system32\config\system
REG ADD “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v PagingFiles /t REG_MULTI_SZ /d “” /f
REG DELETE “HKLM\WindowsTemp\ControlSet001\Control\Session Manager\Memory Management” /v ExistingPageFiles /f
REG UNLOAD HKLM\WindowsTemp - Odłączamy dysk VHD.
diskpart
select vdisk file=z:\HVserver.vhd
detach vdisk
exit - Klucz USB z Hyper-V Server 2008 R2 jest już przygotowany, można się z niego spróbować zabootować. Klucz po przygotowaniu można użyć na innej konfiguracji sprzętowej (uruchomić go na innym komputerze) ważne, żeby konfiguracja napędów była identyczna jak w momencie kiedy była przygotowywana w innym wypadku po zabootowaniu się z klucza zobaczymy informację, że start jest niemożliwy, należy wtedy edytować konfigurację bootowania na kluczu USB (dalej opis jak to zrobić). Jeśli się udało to na ekranie zobaczmy końcową fazę konfiguracji systemu.
- W razie problemów z bootowaniem z nowoutworzonego VHD na USB należy wystartować komputer z nośnika instalacyjnego, uruchomić linię komend (Shift + F10), za jej pomocą podpiąć dysk VHD (podobnie jak punkt 7 ale podając odpowiednie litery napędów) a następnie ręcznie zmienić parametry bootowania za pomocą polecenia BCDboot (punkt 8 ze wskazaniem odpowiednich dysków). Dokładniejszy opis jak posługiwać sie BCDboot znajduje się tym i w tym artykule.
Rozwiązanie testowałem na stacji roboczej Dell Vostro 420 i 430, na każdym z nich działało poprawnie.
Bardzo ciekawie wygląda zastosowanie tej metody w infrastrukturze na której Hyper-V działa na bezdyskowych serwerach przeznaczonych do wirtualizacji przy podłączonych dyskach SAN na których znajdują się wirtualne systemy. Wcześniej w takim scenariuszu mogła pracować tylko wirtualizacja rodem z VMware.
źródła, poza własnym doświadczeniem:
Microsoft Hyper-V Server 2008 R2 RTM & More – Microsoft Virtualization Team Blog
Deploying Microsoft Hyper-V Server 2008 R2 on USB Flash Drive – TechNet
Walkthrough: Deploy a Virtual Hard Disk for Native Boot – TechNet
Virtual Hard Disks in Windows Server 2008 R2 and Windows 7 – TechNet
Instalacja Windows 7 oraz Windows Server 2008 R2 w plikach VHD – wss.pl
ImageX Technical Reference – TechNet
Add a Native-Boot Virtual Hard Disk to the Boot Menu – TechNet