Wirtualizacja staje się coraz popularniejsza. Jedna z jej odmian skierowana na konsolidację serwerów opiera się o hypervisor - w przypadku firmy Microsoft nosi on nazwę Hyper-V i został zaprezentowany w Windows Server 2008.
Wirtualizacja staje się coraz popularniejsza. Jedna z jej odmian skierowana na konsolidację serwerów opiera się o hypervisor - w przypadku firmy Microsoft nosi on nazwę Hyper-V i został zaprezentowany w Windows Server 2008. Pierwsza wersja tego rozwiązania dała użytkownikom wiele nadziei, zwłaszcza gdy były prezentowane jego docelowe funkcjonalności - nie wszystkie z nich ukazały się w finalnej, pionierskiej wersji hypervisor od Microsoft (np. Live Migration). Aktualnie opracowywana jest kolejna wersja, docelowo dostępna w Windows Server 2008 R2, nosząca miano Hyper-V R2. Aktualnie dostępna wersja Release Candidate przynosi kilka wyczekiwanych nowości, a jednocześnie z jej ukazaniem się zapowiedziane zostały dalsze ulepszenia w wersji finalnej. Warto pamiętać, że takim samym przemianom poddane zostaje darmowe rozwiązanie Hyper-V Server R2. Poniższy artykuł opisuje funkcje Hyper-V R2 oraz funkcjonalności samego Windows Server 2008 R2, które wspierają pracę środowisk zwirtualizowanych.
Co nowego?
Najnowsza wersja Hyper-V zawiera liczne nowości i usprawnienia. Za najważniejsze nowości można uznać wsparcie aż 64 logicznych procesorów, wprowadzenie Live Migration i rozszerzenie możliwości pracy w ramach klastrów (Cluster Shared Volumes). Usprawnione zostały opcje związane z sieciowością, czego przykładem może być wprowadzenie puli dynamicznych adresów MAC.
Dynamiczne adresy MAC
Hyper-V umożliwia automatyczne generowanie adresów MAC na podstawie dynamicznej puli przypisanej do danego serwera. Duplikacja adresów MAC wirtualnych maszyn jest często spotykana w środowiskach wirtualnych, w których nie są planowane przydziały pul adresowych dla każdego z serwerów lub kolejnych maszyn wirtualnych. Problem ten występuje najczęściej podczas wdrażania systemu [JS1] z użyciem obrazu zawierającego zainstalowaną już rolę Hyper-V, w tym wypadku mimo użycia sysprep wartości adresów MAC przypisywane wirtualnym maszynom nie zostaną zmienione na unikatowy zakres. We wcześniejszej wersji by określić własny zakres puli, trzeba było ręcznie zmodyfikować wpisy w rejestrze systemu - edycja R2 pozwala na wykonanie tej konfiguracji za pośrednictwem Virtual Network Manager.
Rys. 1. - Pula adresów MAC
Pula adresów zapisywana jest w dwóch kluczach rejestru w ścieżce HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization:
- MinimumMacAddress, określającej początkowy adres MAC,
- MaximumMacAddress, wskazującej końcowy adres MAC.
Ich ręczna modyfikacja przyniesie identyczny skutek, jak w przypadku zastosowania graficznego odpowiednika, może być także pomocna, gdy w środowisku działają serwery ze starszą wersją Hyper-V.
Rys. 2. - Klucze określające pule adresów MAC
Domyślnie generowane adresy MAC posiadają następującą składnie:
00-15-5D - identyfikator producenta - w tym wypadku Microsoft, jest to wartość domyślna dla każdego serwera.
18-D9 - kolejne dwa oktety są generowane na podstawie adresu IP pierwszej karty sieciowej hosta na zasadzie jego konwersji do wartości szesnastkowych (pod uwagę brane są jego ostatnie dwa oktety).
FF/00 - domyślny zakres 256 adresów możliwych do przypisania wirtualnym maszynom.
Adres z dynamicznej puli zostanie przypisany każdej wirtualnej karcie sieciowej podczas pierwszego włączenia maszyny wirtualnej (wyjątkiem są karty, którym adres MAC został nadany ręcznie), a zwalniane są dopiero po usunięciu maszyny. Gdy przypisany zostanie ostatni adres puli, zostanie ona automatycznie przeszukana w celu odnalezienia i przypisania wcześniej zwolnionych - nieużywanych już adresów MAC. Jeśli nie uda się odnaleźć żadnego wolnego adresu, zostanie zwrócony błąd, a karta sieciowa będzie musiała zostać zaadresowana ręcznie.
Jeśli wymagane jest dalsze rozszerzenie dynamicznej puli adresowej, wystarczy zmodyfikować dowolny oktet jako zakres np. 00-15-D5-18-D0-00 i 00-15-D5-18-DF-FF, dzięki czemu dynamiczna pula zostanie rozszerzona np. do 4096 adresów MAC.
Spoofing adresów MAC
Połączenia sieciowe w Hyper-V wykorzystują wirtualny, samouczący się switch, który kieruje pakietami, bazując na adresach MAC. Najnowsza wersja hypervisora wprowadza możliwość włączenia(wyłączenia) możliwości spoofingu adresów MAC.
Gdy spoofing jest wyłączony (tak było w poprzedniej w wersji):
- Adres przypisany do karty sieciowej maszyny wirtualnej jest jedynym adresem, który może zostać przypisany jako źródłowy adres MAC w pakietach.
- Maszyna wirtualna będzie odbierać jedynie pakiety unicast z adresem docelowym identycznym z adresem MAC jej karty sieciowej.
- Pakiety kierowane do danej maszyny nie będą przesyłane do innych portów.
- Próby nadpisania adresu MAC będą ignorowane.
Gdy spoofing jest włączony:
- Wirtualna maszyna może wysyłać i odbierać ruch, używając dowolnego adresu MAC.
- Wirtualny switch przypisze do danego portu wiele adresów MAC.
- Maszyny wirtualne mogą nadpisywać swoje adresy MAC.
Przykładem możliwego zastosowania tej funkcjonalności może być budowa klastra wydajnościowego (Network Load Balancing) lub aplikacji, które wymagają, by komputer przedstawiał się jako inne urządzenie w sieci.

Rys. 3. - Konfiguracja spoofingu dla wirtualnej karty sieciowej
Sieć dedykowana
W pierwszej wersji Hyper-V karty sieciowe mogły być dostępne dla partycji rodzica (host) oraz dla maszyny wirtualnej - jeśli taka została skonfigurowana. W edycji R2 pojawia się możliwość ograniczenia dostępności karty sieciowej jedynie dla wirtualnych maszyn i zablokowania możliwości udostępniania tego połączenia przez host. Jeśli ta opcja pozostanie wyłączona, w systemie operacyjnym hosta nie będzie dostępny wirtualny adapter (karta sieciowa poprzez, którą łączy się do wirtualnego switcha).

Rys. 4. - Ograniczanie dostępności karty sieciowej
Energooszczędność
Jednym z atutów wdrożenia wirtualizacji jest ograniczenie zużycia energii. Najnowsza edycja rozszerza tę cechę o oszczędniejsze wykorzystanie zasobów. Funkcja Core Parking - bo o niej mowa - pozwala na wyłączanie nieużywanych procesorów lub ich rdzeni, nie wymaga także do działania dodatkowych konfiguracji. Atutem tego mechanizmu jest niezauważalne przełączanie stanu procesora (rdzenia) pomiędzy trybem działania a „zaparkowanym" (Parked). Warto podkreślić, iż funkcjonalność ta nie wymaga dodatkowych konfiguracji i działa zaraz po instalacji systemu.
Rys. 5. - Procesor w stanie „Parked"
Warto zwrócić uwagę na to, że oprócz funkcji Core Parking Windows Server 2008 R2 może dostosowywać wydajność procesorów, dynamicznie zmieniając ich stan ACPI „P-State". Przechodzenie pomiędzy stanami procesora oznacza zmianę częstotliwości ich pracy np. P0 (najwyższa wydajność) 100% - 2800MHz, P5 (najniższa wydajność) 50% - 1400Mhz.
|
Stan
|
Częstotliwość pracy
|
Procentowo
|
|
P0
|
2800 MHz
|
100
|
|
P1
|
2520 MHz
|
90
|
|
P2
|
2380 MHz
|
80
|
|
P3
|
2100 MHz
|
70
|
|
P4
|
1680 MHz
|
60
|
|
P5
|
1400 MHz
|
50
|
Tab. 1. - Przykładowe stany procesora
Dodawanie (usuwanie) dysków podczas pracy wirtualnej maszyny
Kolejną ciekawą zmianą jest możliwość dodawania i usuwania dysków podczas pracy wirtualnej maszyny bez konieczności jej ponownego uruchomienia. Funkcjonalność ta dotyczy zarówno dysków VHD, jak również dysków fizycznych. Do korzystania z niej konieczne jest dodanie wirtualnego kontrolera SCSI w konfiguracji maszyny wirtualnej - funkcja ta nie wspiera kontrolerów IDE. Warto zauważyć, że możliwość wykonywania modyfikacji „na gorąco" dotyczy jedynie samych dysków, a nie kontrolera.

Rys. 6. - Dodawanie dysku podczas pracy maszyny wirtualnej
SLAT
Rozszerzenie opcji kompatybilności procesorów wirtualnych zostało wzbogacone o technologię Second Level Translation (SLAT) wspierającą rozwiązania firm Intel (Nested Page Tables) i AMD (Enhanced Page Tables), zredukowane zostało także użycie pamięci hosta związane z pracą hypervisora (z ok. 5% do 1%). Przekazanie procesorom wspierającym NPT i EPT zadań przechowywania tablic stron i tłumaczenia adresów pamięci wirtualnej na adresy pamięci fizycznej pozwoliło na zredukowanie obciążenia pamięci RAM, która dotychczas odpowiedzialna była za przechowywanie Shadow Page Tables.
Dodatkową korzyścią wynikającą z wprowadzenia SLAT jest możliwość migrowania maszyn wirtualnych pomiędzy serwerami pracującymi na różnych wersjach procesorów. Jeśli wykorzystuje się opcje migracji (Quick Migration lub Live Migration), można napotkać problem różnic w funkcjach operowanych przez procesory serwerów, co może spowodować awarię systemu lub aplikacji pracującej na maszynie wirtualnej podczas próby wywołania opcji niedostępnej na serwerze po migracji. Migracja w Hyper-V może odbyć się pomiędzy dowolnymi serwerami pracującymi pod jego kontrolą, pod warunkiem że ich procesory są z tej samej rodziny (Intel <-> Intel, AMD <-> AMD), bez konieczności posiadania pełnej zgodności funkcji. W celu umożliwienia takiej pracy maszyn w klastrze konieczne jest włączenie opcji kompatybilności „Migrate to a physical computer with a different processor version".

Rys. 7. - Konfiguracja kompatybilności wirtualnych procesorów
Live Migration
Hyper-V R2 posiada długo wyczekiwaną opcję migracji maszyn wirtualnych pomiędzy węzłami klastra noszącą miano Live Migration (nie dostępna w wersji Standard). Dotychczas była dostępna jedynie możliwość użycia Quick Migration, które powoduje znacznie większe przerwy w działaniu migrowanej maszyny wirtualnej. Moje wstępne testy wykazują utratę komunikacji z maszyną migrowaną metodą Quick na 10 - 15 pingów. By skorzystać z nowej funkcjonalności, wystarczy posiadać klaster hostów Hyper-V oraz wysoko dostępną maszynę wirtualną, a następnie skorzystać z właściwej funkcji migracji dostępnej w menu akcji.
Rys. 8. - Opcje migracji maszyny wirtualnej
Warto przyjrzeć się działaniu aktualnie dostępnych metod przenoszenia maszyn wirtualnych pomiędzy węzłami klastra.
Move:
- Etap 1 - Przeniesienie maszyny domyślnie w tryb Save (lub inny określony w ustawieniach maszyny wirtualnej).
- Etap 2 - Przepięcie zasobów do docelowego hosta.
- Etap 3 - Przywrócenie lub uruchomienie maszyny wirtualnej.
Quick Migration:
- Etap 1 - Przeniesienie maszyny w tryb Save (zapisanie aktualnego stanu pracy).
- Etap 2 - Przepięcie zasobów do docelowego hosta.
- Etap 3 - Przywrócenie maszyny (wyjście z trybu Save).
Live Migration:
- Etap 1 - Rezerwacja zasobów na docelowym hoście.
- Etap 2 - Przeniesienie stron pamięci na docelowy host, wszystkie nowe zmiany są śledzone.
- Etap 3 - Przeniesienie zmodyfikowanych stron w stosunku do etapu 2.
- Etap 4 - Przepięcie zasobów dyskowych.
- Etap 5 - Uruchomienie maszyny.
Ogólny czas przeniesienia maszyny może okazać się dłuższy w przypadku zastosowania funkcji Live Migration, jednak zmniejszony jest wtedy czas niedostępności maszyny (etap 3. i 4.).
Cluster Shared Volumes
Maszyny wirtualne pracujące w ramach klastra muszą znajdować się na wydzielonej dla nich przestrzeni dyskowej, jaką mogą stanowić LUN, czyli reprezentacja udostępnianego woluminu - podłączonego za pośrednictwem Fibre Channel, iSCSI lub współdzielonego SAS. Możliwe jest grupowanie kilku maszyn wirtualnych w ramach takiej przestrzeni, jednak zasoby odwołujące się do tego samego dysku zostaną przypisane do wspólnej grupy zasobów, co skutkuje ich wspólnym przełączaniem w klastrze. Jest to możliwe dzięki zezwoleniu na dostęp do zasobu więcej niż jednemu serwerowi.

Rys. 9. - Grupa maszyn wirtualnych
Windows Server 2008 R2 wprowadził nowe rozwiązanie pozwalające na grupowanie zasobów maszyny wirtualnych na wspólnej przestrzeni dyskowej, jednocześnie pozwalając im na niezależną pracę, np. na różnych hostach - funkcjonalność ta nosi nazwę Cluster Shared Volumes (CSV). By móc z niej skorzystać, wystarczy włączyć ją w konfiguracji klastra (Enable Cluster Shared Volumes), czego efektem będzie pojawienie się dodatkowej opcji w drzewie konfiguracji klastra - oprócz opcji Storage pojawi się Cluster Shared Volumes.
Rys. 10. - Włączenie funkcji Cluster Shared Volumes
Współdzielona przestrzeń w ramach CSV to przypisane przestrzenie LUN, które mapowane są na każdym z węzłów klastra jako linki w folderze %systemroot%\ClusterStorage\VolumeX, gdzie X to numer kolejnego dodanego LUN.
Rys. 11. - Współdzielona przestrzeń dyskowa (CSV)
Maszyny wirtualne, których zasoby zostaną umieszczone na przestrzeni CSV, będą widoczne jako niezależne grupy zasobów i będą mogły pracować niezależnie.
Rys. 12. - Maszyny wirtualne pracujące w ramach CSV
Podsumowanie
Nowości zaprezentowane w Windows Server 2008 i jego rola wirtualizacji Hyper-V R2 są kolejnym krokiem ku sprawnej i wydajnej pracy w środowiskach wirtualnych. Wersja Release Candidate nie posiada jeszcze jednej istotnej funkcji, która według różnych zapowiedzi ma ukazać się w wersji finalnej - dynamiczna alokacja pamięci umożliwiająca przydzielenie maszynie wirtualnej maksymalnej oraz minimalnej ilości pamięci jaką ma wykorzystywać (funkcjonalność ta nie została jeszcze szczerzej opisana, aktualnie można znaleźć jedynie pojedyncze informacje np. MSDN) . Podobną funkcjonalność posiada rozwiązanie konkurencyjne - VMWare ESX Server - jego działanie polega na zagwarantowaniu maszynie wirtualnej minimalnej (którą zawsze otrzyma) oraz maksymalnej ilości pamięci, różnica, czyli pamięć opcjonalna, jest rozdzielana pomiędzy wszystkie maszyny pracujące na serwerze w zależności od ich obciążenia. Czy wszystkie funkcje zostaną wprowadzone i wydane ostatecznie w identycznym kształcie? Zobaczymy, gdy Windows Server 2008 R2 otrzyma status RTM.
Autor:
Kamil Skalski
(MCT, MCITP, MCTS, MCSE+S, MCSA+S, MCP)
Pracuje jako trener i konsultant, należy do grupy pasjonatów Windows Server 2008, wirtualizacji i bezpieczeństwa IT, w wolnym czasie prowadzi blog o tej tematyce oraz dzieli się swoją wiedzą wśród społeczności IT pisząc artykuły oraz występując jako ekspert w ramach Microsoft Technology Summit.