Hyper-V 2012 R2: druhá generace virtuálních strojů

 

Windows Server 2012 R2 přináší nové možnosti pro virtuální stroje - druhou generaci virtuálních strojů. Dnes se podíváme na jejich možnosti, porovnání a skriptování.

 

Virtuální stroje druhé generace jsou prezentovány hypervizorem jako jednodušší hardware a využívají UEFI (Unified Extensible Firmware Interface) firmware namísto BIOS. Mnoho emulovaných zařízení je kompletně odebráno z této druhé generace VM - využívá se VMBUS již od boot. První generace virtuálních strojů je naprosto identická, tak jak tomu bylo od prvního vydání Hyper-V pro Windows Server 2008. Druhá generace přináší následující:

Porovnání struktury 1 a 2 generace virtuálních strojů:

Klepněte pro větší obrázek Klepněte pro větší obrázek

Onoho odebírání bylo povícero, pouze ve zkratce: legacy řadič klávesnice i8042, PS/2 myš, S3 video, PCI sběrnice, revidované ACPI. Díky odebrané emulaci klávesnice je nutné modifikovat WindowsPE používané pro nasazování OS - nutné přidat balíček Windows6.2-HyperVIntegrationServices-x64.cab (o tom v samostatném článku). Díky odebrané PCI sběrnici není přítomné RemoteFX - připravuje se “náhradní řešení”.

Pro využití VM gen 2. je nutné v rámci virtuálního stroje provozovat tyto operační systémy (starší nejsou podporovány):

POZOR: jsou podporovány pouze x64 bitové verze operačních systémů (v UEFI není implementován “Compatibility Support Module” - jedná se o UEFI Class 3). Přímá konverze mezi gen 1 a gen 2 není možná, nicméně je k dispozici PowerShell skript, který provede sejmutí obsahu původního disku, založí nový G2 virtuální stroj a obsah původního disku aplikuje. Skript je k dispozici zde: http://code.msdn.microsoft.com/ConvertVMGeneration, manuální migrace VM je možná, nicméně velmi pracná (obnáší DISM, sejmutí image, vytvoření odpovídajících diskových oddílů, aplikace na nový disk, modifikace boot, vytvoření nové VM,…)

Co jednotlivé nové vlastnosti znamenají z pohledu provozu:

Boot z SCSI disku

V předchozích verzích Hyper-V nebylo možné startovat VM z SCSI disku, bylo nutné použít IDE. Možnost boot z SCSI disku není díky věcí SCSI řadiče, ale UEFI firmware. Náhradou za SCSI disk získáte rychlejší nasazení a start VM, možnost využití trim, unmap, hot/online resize, hot add/remove disků, větší boot partition (až 2,2TB), nižší overhead.

PXE boot pomocí nativního adaptéru

Předchozí verze Hyper-V vyžadovaly pro PXE boot emulovaný síťový adaptér. Gen 2 podporuje PXE boot u natovního adaptéru, není tedy nutné po instalaci měnit adaptér, aby bylo dosaženo větší propustnosti. Také je možné využít IPv6 pro PXE boot.

Secure Boot

Secure boot - technologie zavede ve Windows 8 zajišťuje konzistentní start OS, kde je prováděna kontrola zavaděče, resp. jeho podpisu v návaznosti na UEFI firmware. Secure Boot je ve výchozím nastavení po vytvoření gen 2 VM zapnutý. Pro chod UEFI je nutné odlišené vytvoření diskových oddílů (popis zde: http://technet.microsoft.com/en-us/library/hh824839.aspx).

Nativní VMBUS již od startu VM

Díky přítomnosti VMBUS již od startu VM je možné defakto dosáhnout výše uvedených možností, jako je SCISI boot, optimalizovaný přístup k HW zdrojům a menší závislost na parent partition

Závěrem, samozřejmostí je možnost provozovat gen 1 a gen 2 VM na jednom Hyper-V stroji, není problém. Naprosoto identicky, jako jsou spravovány gen 1 VM pomoví PowerShell, je možné spravovat i gen 2 VM. Zde je několik málo příkladů:

Získání informace o generaci VM:

 

1: Get-VM | ft Name,Generation

 
Klepněte pro větší obrázek

Vytvoření gen 2 VM:

 

1: New-VM -VMName Gen2 -Generation 2

 
Klepněte pro větší obrázek
Klepněte pro větší obrázek

Informace o boot order, nastavení boot order (první DVD):

1: $vm = Get-VM -Name Gen2
2: Get-VMFirmware $vm
3: $dvd = Get-VMDvdDrive $vm
4: Set-VMFirmware $vm -FirstBootDevice $dvd

Před změnou:

Klepněte pro větší obrázek

Po změně:

Klepněte pro větší obrázek

Vytvoření nového VHDX souboru a přidání do VM, nastavení jako primární boot:

 

1: New-VHD -Path "d:\Hyper-V\Gen2.vhdx" -Dynamic -SizeBytes 90GB
2: Add-VMHardDiskDrive -VMName "Gen2" -Path "d:\Hyper-V\Gen2.vhdx"
3: $vm = Get-VM -Name Gen2
4: $vhdx = Get-VMHardDiskDrive $vm
5: Set-VMFirmware $vm -FirstBootDevice $vhdx



Klepněte pro větší obrázek