Hyper-V – Generacje VM?

W moim ostatnim poście na temat Hyper-V, wspomniałem co nieco na temat generacji VM, skrótowo opisując o co w tym temacie chodzi. W tym wpisie rozszerzę wiedzę którą przedstawiłem w poprzedniej publikacji.

Wiemy, że wraz z nadejściem Windows 8.1 oraz Windows Server 2012 możemy stworzyć maszyny w dwóch trybach: Generation 1 oraz Generation 2.

Pierwsza generacja jest klasycznym podejściem, z jakim do tej pory mieliśmy do czynienia w Hyper-V tzn. korzysta z BIOS i straszy szeregiem różnych obostrzeń natury sprzętowej: rozruch tylko z kontrolerów IDE lub Legacy NIC czy hot-add VHD obsługiwany tylko przez kontrolery SCSI. Możliwość używania zarówno dysków VHD jak i VHDX. Istotną zaletą jest to, że każdy system operacyjny może zostać uruchomiony na tym sprzęcie.

 

Natomiast druga generacja jest “nowym” podejściem sprzętowym. Tutaj otrzymujemy jako podstawę UEFI, możliwość rozruchu z kontrolerów SCSI, Synthetic NIC oraz bezpieczny rozruch w trybie SecureBoot. Akceptowane są tylko VHDX. Postawimy na tym tylko Windows 8 / 8.1 oraz Windows Server 2012 / 2012 R2.

Dosyć skrótowo dowiedzieliśmy się najważniejszego, natomiast jeżeli to dla nas za mało i lubimy wiedzieć jak to działa i dlaczego tak, a nie inaczej, to śpieszę z opisem, zaczynając od warstw najczęściej używanych w codziennej pracy, schodząc w dół w stronę architektury.

Po pierwsze, całkowite wykluczenie dysków VHD jako nośników danych dla maszyn najnowszej generacji.

Jest to spowodowane względami oczywistymi, specyfikacja dysków VHDX uwzględnia znacznie większe parametry takiego dysku (16 TB vs 64 TB, itp.), oraz w tym typie dysków uporano się z bolączkami wydajnościowymi VHD, zwłaszcza pomiędzy typami Fixed a Dynamic. Nie ma wielkiej różnicy pomiędzy nimi, aczkolwiek dalej tryb Fixed jest zalecany do środowisk produkcyjnych. Należy mieć na uwadze, że dyski VHD możemy bardzo prosto konwertować do VHDX za pomocą cmdletu PowerShell Convert-VHD, ale musimy pamiętać, że w przypadku konwersji dysku rozruchowego, tabela partycji nie będzie zgodna z UEFI i maszyna wirtualna generacji drugiej nie obsłuży takiego dysku.

Po drugie, rozruch z kontrolerów SCSI.

Przeklikując ustawienia maszyny wirtualnej generacji drugiej nie znajdziemy w ogóle kontrolera IDE, jedynie SCSI. Do UEFI (o którym później) dodano obsługę rozruchu z nowszego kontrolera. Dzięki temu zostały upieczone dwie pieczenie na jednym ogniu: pozbyto się starego kontrolera, oraz uniemożliwiono możliwość rozruchu dysków generacji pierwszej. Również nie jest możliwe uruchomienie systemu operacyjnego ze storage poprzez Virtual Fibre Channel.

Po trzecie, Hot / Online Expand

Ideą przyświecającą drugiej generacji maszyn wirtualnych była ich dostępność, a konkretnie minimalizacja czasu jej braku. Skupiono się, nie tylko na stabilności platformy, ale także na czynnościach administracyjnych takich jak np. powiększanie dysków czy dodawanie ich podczas pracy maszyny. VM Generation 2 umożliwają powiększanie dysków w trakcie pracy systemu operacyjnego i tyczy się to również rozruchowych VHDX.

Po czwarte, tylko Synthetic Network Interfaces

Oprócz kontrolerów IDE, Microsoft pozbył się też Legacy Network Interfaces, co spowodowało dodanie obsługi rozruchu przez sieć do interfejsów “syntetycznych”. Dodatkowo rozszerzono możliwość rozruchu poprzez IPv6, co oczywiście w pierwszej generacji było niemożliwe. Z kronikarskiego obowiązku należy wspomnieć o delikatnych zmianach w interfejsach zarządzających kolejką rozruchu, zarówno graficznym jak i poprzez PowerShella.

Po piąte, napędy DVD

Nowością jest możliwość podłączenia napędu DVD do kontolera SCSI, z racji tego, że pierwsza generacja tego nie umożliwiała. Najbardziej rzucającą się w oczy zmianą w tej materii, jest brak możliwości podmapowania fizycznego napędu w serwerze, do wirtualnej maszyny. Jest to bardzo istotna zmiana i warto o niej wiedzieć przed instalacją jakiegokolwiek OS / software.

Po szóste, tablice partycji

Generacja pierwsza, z racji swojej architektury, wymusza używanie tablicy partycji MBR na dyskach rozruchowych. Niedogodnością z tego płynącą jest to, że maksymalny rozmiar partycji jaki możemy założyć na takim dysku wynosi 2 TB. Generacja druga posiada całkowicie inną budowę, która już nie wymusza konkretnego typu tablicy, aczkolwiek zalecane jest GPT, które nie ma ograniczeń pod względem maksymalnego rozmiaru (jedynym ograniczeniem jest wielkość dysku VHD która w szczytowym momencie może wynosić 64 TB).

Po siódme, czystki w urządzeniach

O tym już pisałem wcześniej, w kontekście usunięcia z palety urządzeń kontrolerów IDE oraz Legacy Network Adapters. Jednak minimalizacja dotknęła nie tylko, tych urządzeń lecz także wielu pomniejszych, o których w codziennej pracy bardzo często zapominamy. Chodzi mi tutaj o takie rzeczy jak kontroler klawiatury i8042, myszkę PS/2, S3 Video, Programmable Interrupt Controller, Programmable Interrupt Timer, kontroler szeregowy oraz stację wirtualnych dyskietek.

Po ósme (ostatnie!), UEFI zamiast BIOS

Hardware z jakim pracowaliśmy w poprzednich wersjach Hyper-V jest dosyć stary (o ile, w ogóle można użyć tego określenia w stosunku co do abstrakcyjnego pojęcia). Opiera się on na emulowanym chipsecie Intel 440BX, na którym pracuje PCAT BIOS. Rozwiązanie przetestowane, dobre, stabilne, ale ograniczone. Na przeciw tym ograniczeniom staje nowy chipset oraz UEFI. Implementacja UEFI 2.3.1 w Hyper-V bazuje na TianoCore oraz EDK. Niestety oprogramowanie to nie zawiera Compatibility Support Module, co powoduje brak kompatybilności z BIOS oraz nie obsługuje innych systemów niż 64-bitowe.

Podsumowanie

W tym krótkim, jak na tę tematykę poście, przedstawiłem najistotniejsze zmiany jakie zaszły wraz z nadejściem drugiej generacji maszyn wirtualnych. Jest ich bardzo dużo, gdyż praktycznie została zmieniona cała podstawa sprzętowa. Mam nadzieję, że post rzetelnie ukazał najważniejsze nowości.

Jeżeli masz jakieś doświadczenia związane z generacjami VM w Hyper-V i chcesz się podzielić, pytania, feedback to komentarze sa do Twojej dyspozycji.