Hyper-V w Windows 10/11
System Windows 11 (jak również Windows 10 oraz 8) pozwala na uruchomienie wirtualnych systemów bez instalacji zewnętrznych rozwiązań takich jak Oracle VirtualBox czy VMWare. Całość operacji zarządzana jest przez mechanizm Hyper-V dostępny w systemie.
Wirtualizacja oparta na Hyper-V dostępna jest w wersjach systemu Windows: Enterprise, Professional oraz Education. Brak wsparcia dla tej funkcji systemu w wersji Home.
Hyper-V pozwala na uruchomienie niemal każdej wersji systemu Windows a także dzięki narzędziu zwirtualizujemy systemy Linux : CentOS, Red Hat Enterprise Linux, Debian, SUSE, Ubuntu czy FreeBSD.
Jest jeszcze jeden wymóg by móc korzystać z rozwiązania firmy Microsoft – należy spełnić określone wymagania sprzętowe czytaj – komputer musi być wyposażony w zgodny z funkcją procesor.
Wymagania odnośnie do procesora przedstawiają się następująco:
- procesor zgodny z technologią Intel VT lub AMD-V,
- wsparcie dla funkcji SLAT (ang. Second Level Address Translation) czyli translacji adresów poziomu drugiego,
- wsparcie dla DEP (ang. Data Execution Prevention)
Aby sprawdzić czy takowe wymagania spełniamy można skorzystać z polecenia: systeminfo /fo list
Jeśli po wydaniu polecenia w sekcji Hyper-V Requirements przy wszystkich składnikach tj. VM Monitor Mode Extension, Virtualization Enabled In Firmware, Second Level Address Translation oraz Data Execution Prevention Available znajduje się wartość Yes – to oznacza to pełne wsparcie dla funkcji Hyper-V.
Komputer musi również posiadać minimum 4 GB pamięci RAM.
Aby rozpocząć przygodę z wirtualizacją opartą o Hyper-V, rozpoczynamy od instalacji niezbędnych usług. Instalację wszystkich niezbędnych składników należy przeprowadzić za pomocą okna Funkcje systemu Windows. Dostęp do niego uzyskamy po przejściu do Panelu Sterowania i wybraniu ikony Programy i funkcje a następnie opcji Włącz lub wyłącz funkcje systemu Windows. Okno jest dostępne również poprzez Ustawienia -> Aplikacje -> Więcej funkcji systemu Windows dodatkowo można skorzystać z okna Uruchamianie – Win + R a następnie wpisujemy optionalfeatures
Po otwarciu docelowego okna odnajdujemy gałąź Hyper-V i po rozwinięciu jej zaznaczamy dostępne funkcje: Narzędzia do zarządzania funkcją Hyper-V oraz Platforma Hyper-V.
Znaczenie instalowanych funkcji jest następujące:
Narzędzia do zarządzania funkcją Hyper-V:
Moduł funkcji Hyper-V dla programu Windows PowerShell zawiera ponad 160 poleceń cmdlet funkcji Hyper-V. Polecenia te ułatwiają automatyzację zadań związanych z zarządzaniem funkcją Hyper-V.
Narzędzia do zarządzania funkcją Hyper-V za pomocą graficznego interfejsu użytkownika – zawiera przystawkę Menedżer funkcji Hyper-V i narzędzie Połączenie z maszyną wirtualną.
Platforma Hyper-V:
Funkcja hypervisor – narzędzie niezbędne do prowadzenia procesu wirtualizacji.
Usługi funkcji Hyper-V – udostępnia usługi umożliwiające tworzenie maszyn wirtualnych i ich zasobów oraz zarządzanie nimi.
Po zaznaczeniu wszystkich funkcji nastąpi ich instalacja.
Gdy wszystko przebiegnie pomyślnie zostaniemy o tym poinformowani. Aby funkcja Hyper-V mogła zacząć działać należy ponownie uruchomić komputer.
Po uruchomieniu systemu możemy rozpocząć tworzenie maszyny wirtualnej.
Po instalacji w menu Start powinien pojawić się skrót do narzędzia: Menedżer funkcji Hyper-V – odnajdujemy skrót i uruchamiamy go.
Wywołanie skrótu spowoduje uruchomienie narzędzia, dzięki któremu utworzymy wirtualnego hosta oraz będziemy mogli nim zarządzać.
Na początek zmienimy ustawienia, dotyczące przechowywania tworzonych plików tj. plików wirtualnych maszyn. Wybieramy opcję: Ustawienia funkcji Hyper-V
Interesują nas dwie sekcje – Wirtualne dyski twarde oraz Maszyny wirtualne.
Pierwsza odpowiada za określenie fizycznej lokalizacji składowania plików wirtualnych dysków twardych. Wybieramy lokalizację, która dysponuje odpowiednią przestrzenią dyskową.
Ustawienie drugie pozwala określić folder, w którym będą przechowywane pliki konfiguracyjne maszyn wirtualnych (również pliki migawek, czyli zapisy stanu wirtualnego systemu). Tu również wybieramy lokalizację, która dysponuje wolnymi zasobami.
Po przeprowadzeniu tych wstępnych ustawień wykonajmy krok następny i spróbujmy utworzyć i uruchomić wirtualną maszynę.
Rozpoczynamy od wybrania serwera usługi Hyper-V (jest nim nasz komputer) i po otwarciu menu odnajdujemy polecenie Nowe a następnie Maszyna wirtualna.
Zostanie uruchomiony kreator, który przeprowadzi nas przez cały proces tworzenia wirtualnej maszyny. Wybieramy Dalej.
Pierwszą opcją, którą określamy jest nazwa tworzonej wirtualnej maszyny (będziemy instalować maszynę z systemem Windows 7). Opcją dodatkową jest zmiana domyślnej lokalizacji zapisu plików.
Karta Określ generację pozwala nam na wybranie typu maszyny wirtualnej. Podjęte tu decyzję (czyli wybór pomiędzy opcją Generacja 1 a opcją Generacja 2) wpływają na funkcjonalność wirtualnej maszyny – zatrzymajmy się chwilkę, aby omówić różnice. Zmiany decyzji nie będziemy mogli cofnąć co oznacza, że po utworzeniu maszyny wirtualnej nie można zmienić jej generacji (choć nie do końca jest to prawda, gdyż istnieją sposoby, aby maszynę Gen 1 przekonwertować do Gen 2).
Wybrana generacja maszyny wirtualnej, wpływa na możliwości hardwaru. Generacja 2 maszyn została wprowadzona do Hyper-V wraz z wydaniem Windows Server 2012 R2 oraz Windows 8.1
Poniżej w tabeli zebrałem różnice pomiędzy generacjami (źródło: https://technet.microsoft.com/pl-pl/library/dn282285.aspx ).
Urządzenie generacji 1 | Urządzenie zastępujące generacji 2 | Ulepszenia w generacji 2 |
Kontroler IDE | Wirtualny kontroler SCSI | Rozruch z dysku VHDX (maksymalny rozmiar 64 TB i możliwość zmiany rozmiaru w trybie online) |
Stacja CD-ROM IDE | Wirtualna stacja CD-ROM SCSI | Obsługa do 64 urządzeń DVD SCSI na kontroler SCSI. VM nie obsługują fizycznego napędu CD/DVD |
Starszy system BIOS | Oprogramowanie układowe UEFI | Bezpieczny rozruch – Secure Boot (uniemożliwienie uruchomienia nieautoryzowanych systemów operacyjnych) |
Starsza karta sieciowa | Syntetyczna karta sieciowa | Rozruch sieciowy z obsługą protokołów IPv4 i IPv6 |
Kontroler dyskietek i kontroler DMA | Brak obsługi kontrolera dyskietek | |
Uniwersalny asynchroniczny odbiornik/nadajnik (UART) dla portów COM | Opcjonalny układ UART do debugowania | Szybszy i bardziej niezawodny |
Kontroler klawiatury i8042 | Wprowadzanie programowe | Wykorzystuje mniej zasobów, ponieważ nie ma emulacji. Zmniejsza możliwości ataku z systemu operacyjnego gościa. |
Klawiatura PS/2 | Klawiatura programowa | Wykorzystuje mniej zasobów, ponieważ nie ma emulacji. Zmniejsza możliwości ataku z systemu operacyjnego gościa. |
Mysz PS/2 | Mysz programowa | Wykorzystuje mniej zasobów, ponieważ nie ma emulacji. Zmniejsza możliwości ataku z systemu operacyjnego gościa. |
Wideo S3 | Wideo programowe | Wykorzystuje mniej zasobów, ponieważ nie ma emulacji. Zmniejsza możliwości ataku z systemu operacyjnego gościa. |
Magistrala PCI | Nie jest już wymagane | |
Programowalny kontroler przerwań (PIC) | Nie jest już wymagane | |
Programowany czasomierz interwałów (PIT) | Nie jest już wymagane | |
Urządzenie Super I/O | Nie jest już wymagane | |
obsługa dysków VHD | obsługa tylko dysków VHDX – nie obsługuje VHD | Możliwa zmiana rozmiaru dysku VHDX w trakcie pracy maszyny wirtualnej |
Po określeniu generacji maszyny w kolejnym oknie kreatora definiujemy ilość pamięci RAM, która będzie przydzielona wirtualnej maszynie.
Wskazane jest, aby wirtualna maszyna miała możliwość komunikacji z siecią Internet bądź innymi hostami. Sposób realizacji połączenia pozwala określić następna karta Konfigurowanie sieci. Ponieważ jest to nasza pierwsza tworzona maszyna ustawienie Połączenie pozostawmy na opcji Niepodłączona. Połączenie z siecią skonfigurujemy później.
Kolejnym krokiem są ustawienia wirtualnego dysku twardego. Gdy posiadamy dysk w formacie VHDX (bądź starszym VHD) dzięki wybraniu opcji: Użyj istniejącego wirtualnego dysku twardego połączymy go z tworzoną maszyną. Jeśli nie dysponujemy dyskiem wybieramy opcję Utwórz wirtualny dysk twardy (opcjonalnie możemy zmienić jego rozmiar oraz lokalizację zapisu). Trzecią opcją jest decyzja o późniejszym dołączeniu dysku.
Po określeniu komponentów wirtualnej maszyny kolejnym krokiem jest określenie źródła systemu. Na karcie Opcje instalacji wybieramy sposób wykonania instalacji. Do wyboru są opcje związane z użyciem plików obrazów systemu (plik obrazu *.ISO oraz plik dyskietki *.VFD) bądź użycie fizycznego nośnika. Instalacja systemu może być oparta również o sieć, lecz na tym etapie nie został jeszcze skonfigurowany wirtualny przełącznik, tak więc opcja będzie nieaktywna. Decyzję o sposobie instalacji systemu można również odłożyć na później.
Po zdefiniowaniu wszystkich opcji ostatnim ekranem jest ekran podsumowujący, maszyna zostanie utworzona po wybraniu przycisku Zakończ.
Wirtualna maszyna została utworzona poprawnie jej nazwa pojawi się w Maszyny wirtualne.
Aby maszyna wirtualna uzyskała dostęp do zasobów sieci należy przeprowadzić konfigurację wirtualnego przełącznika. Tak więc sprawdźmy stosowne ustawienia.
Aby skonfigurować przełącznik z opcji dostępnych po prawej stronie odszukujemy i wybieramy Menedżer przełącznika wirtualnego.
Po uruchomieniu menedżera będziemy musieli odpowiedzieć na pytanie – Jakiego typu ma to być przełącznik? Menedżer tworzenia wirtualnego przełącznika pozwala na zdefiniowanie trzech typów różniących się od siebie zasięgiem oferowanego dostępu do sieci.
Zewnętrzna – zostanie utworzony przełącznik pozwalający na powiązanie maszyn wirtualnych z fizyczną kartą sieciową co w konsekwencji pozwoli na uzyskanie dostępu do sieci Internet.
Wewnętrzna – przełącznik umożliwiający komunikację sieciową wyłącznie w obrębie uruchomionych maszyn wirtualnych oraz maszyn wirtualnych a fizycznym hostem, na którym są uruchomione.
Prywatna – przełącznik zapewnia komunikację tylko pomiędzy wirtualnymi maszynami.
Ponieważ zależy mi na dostępie do sieci Internet wybrałem pierwszą opcję. Klikamy na przycisk poniżej – Utwórz przełącznik wirtualny.
Kolejne okno kreatora odpowiada za wybór karty sieciowej, która będzie prowadzić połączenie. Określamy nazwę tworzonego przełącznika oraz opcjonalnie opis. Jeśli w naszym środowisku sieciowym wykorzystywany jest mechanizm VLAN to po zaznaczeniu checboxa Włącz identyfikację wirtualnych sieci LAN dla systemu zarządzania możemy określić przynależność przełącznika do określonej sieci VLAN.
Ustawienie Zezwalaj systemowi operacyjnemu zarządzania na współużytkowanie tej karty sieciowej pozwoli na nawiązanie połączeń zdalnych z hostem, na którym działa Hyper-V.
Po zdefiniowaniu wszystkich ustawień klikamy OK.
Przed utworzeniem przełącznika pojawi się komunikat o mogących wystąpić problemach z połączeniem sieciowym (chwilowa utrata połączenia) Wybieramy Tak.
W opcjach wirtualnego przełącznika dodatkowo możemy określić zakres używanych adresów MAC. Te ustawienie definiuje zakres adresów, które będą przydzielane wirtualnym hostom. Zmiana domyślnego zakresu pozwoli uniknąć konfliktów w sytuacji, gdy w sieci istnieje więcej serwerów usługi Hyper-V.
Konfigurację utworzonego przełącznika możemy przejrzeć w oknie Połączenia sieciowe.
Co ważne konfiguracja sieciowa dotychczasowego połączenia sieciowego została przeniesiona na utworzony przełącznik. Tak więc gdy chcemy zmienić konfigurację opcji sieciowych dokonujemy jej na przełączniku.
Po zdefiniowaniu ustawień wirtualnego przełącznika należy poprawić konfiguracje maszyny wirtualnej. Aby określić bądź zmodyfikować ustawienia maszyny wirtualnej należy ją wskazać w oknie Maszyny wirtualne a następnie wybrać opcje Ustawienia.
Karta sieciowa znajduje się w sekcji sprzęt, po jej wyborze w polu Przełącznik wirtualny wybieramy utworzony w poprzednim kroku przełącznik.
Dostępne ustawienia nie tylko pozwalają na modyfikację parametrów karty sieciowej, ale całego wirtualnego hardware, z którego zbudowany jest nasz wirtualny host. Odnajdziemy tu opcje, które pozwolą na: dodanie kolejnych dysków, modyfikację ustawień procesora, ilości przydzielonej pamięci RAM czy użytych interfejsów. Zakres ustawień i możliwości zależą od zależny jest od wybranej generacji maszyny.
Wirtualny komputer jest gotowy, przyszła pora, aby go uruchomić. W tym celu klikamy na nazwę maszyny i po kliknięciu PPM z menu wybieramy Połącz a następnie Uruchom.
Po włączeniu wirtualnego komputera (gdy korzystamy z nośnika instalacyjnego) musimy przeprowadzić instalację systemu. Na rysunku poniżej przykład instalacji systemu Windows 7.
Po wykonaniu instalacji możemy się cieszyć w pełni działającym systemem Windows 7 (który ma dostęp do sieci Internet) uruchomionym w Windows 10 w oparciu o Hyper-V.
Do instalacji systemu możemy wykorzystać opcję Szybkie tworzenie… – wystarczy tylko wybrać interesujący nas system (Windows 10, bądź dystrybucje Ubuntu), wszystko przebiegnie w sposób automatyczny (zostanie utworzona maszyna generacji 2 z domyślnymi ustawieniami, które oczywiście możemy zmienić).
Po pobraniu systemu i jego aktualizacji możemy rozpocząć korzystanie z niego.
Dodatkowo po instalacji warto w Ustawieniach maszyny wirtualnej zainteresować się zakładką Usługi integracji, gdyż znajdują się na niej opcje usprawniające komunikację pomiędzy system gościa a hosta. Np. aktywacja usługi Wymiana danych pozwoli na przenoszenie/kopiowanie plików pomiędzy systemami.
Przed przeprowadzeniem poważniejszych operacji w wirtualnym systemie warto utworzyć punkt kontrolny (snapshoot). Punkt kontrolny możemy porównać do save-u w grze. Oznacza to, że w dowolnym momencie będziemy mogli powrócić do stanu maszyny jaki był w momencie jego. Punkt tworzymy po kliknięciu na nazwę maszyny i wybraniu z menu kontekstowego opcji Punkt kontrolny. Zapis stanu maszyny można również wykonać w oknie maszyny wirtualnej po wyborze z menu Akcja opcji Punkt kontrolny. Migawkę systemu dobrze jest wykonać, gdy wirtualny host jest wyłączony.
Utworzonymi migawkami możemy zarządzać poprzez sekcje Punkty kontrolne. Po wybraniu punktu z prawej strony pojawi się szereg opcji, które pozwolą nam na wykonanie podstawowych zadań takich jak: usunięcie, zmiana nazwy, eksport czy przywrócenie.
Na koniec kilka uwag – Co zrobić, gdy coś nie działa?
W pierwszej kolejności sprawdź ustawienia wspomnianej już zakładki Usługi integracyjne zaś w kroku drugim zweryfikuj stan uruchomionych usług odpowiedzialnych za prowadzenie procesu wirtualizacji w systemie hosta.
Stan usług poznasz wydając polecenie PowerShell: Get-Service -Name vm*
Gdyby któraś z usług nie działa, uruchom ją ręcznie – wydaj polecenie: Start-Service <nazwa_usługi> Usługę zatrzymasz za pomocą komendy: Stop-Service <nazwa_usługi>.
Oczywiście usługi włączysz/wyłączysz z wykorzystaniem narzędzia graficznego Usługi – wpisz services.msc w oknie Uruchom (skrót Win + R).
Usługi muszą również w wirtualnym systemie. Aby wyświetlić ich stan posłuż się komendą:
Get-VMIntegrationService -VMName „<nazwa_maszyny>”
Gdyby, któraś z usług nie działała, aby ją aktywować należy posłużyć się poleceniem:
Enable-VMIntegrationService -VMName „<nazwa_maszyny>” -Name „<nazwa_usługi>”
zaś by usługę wyłączyć:
Disable-VMIntegrationService -VMName „<nazwa_maszyny>” -Name „<nazwa_usługi>”
Przyznam się do tego :-), że w swojej pracy częściej wykorzystuję oprogramowanie VirtualBox niż opisywanego tu Hyper-V Zaletą (dla mnie) przemawiającą na korzyść VirtualBox-a jest fakt, że wirtualne maszyny wykorzystuję w innych narzędziach np. GNS3 – wirtualizacja sieci komputerowej. W tym programie wirtualne maszyny mogą być wykorzystywane jako hosty. Z oprogramowania tego korzystam bardzo często więc nie mogę sobie pozwolić, aby coś mi nie działało. Niestety po instalacji Hyper-V często dochodzi do sytuacji, w której VirtualBox odmawia posłuszeństwa.
Dochodzimy więc do pytania – Co zrobić, aby w sposób komfortowy korzystać z obu rozwiązań? Ja stosuję takie rozwiązanie. Wykorzystuję dwa systemy: Linux dla VirtualBox + GNS3 i Windows w połączeniu z Hyper-V. Sprawdza się to świetnie. Choć ostatnio migruję do Proxmox (tak aby mieć wszystko w jednym miejscu) – czym jest te rozwiązanie opiszę niebawem.