Wirtualizacja w wirtualizacji


Chyba niezły przypadek sprawił, że wczoraj (podczas bardzo fajnych warsztatów mocno technicznych z Private Cloud) rozmawiałem na temat możliwości uruchomienia maszyny wirtualnej w maszynie wirtualnej do testów/prezentacji (pozdrawiam Marek). Dziś również rozmawiałem na ten temat z inną osobą (pozdrawiam Leszek) i kilka chwil temu dostałem podobne pytanie mailem (pozdrawiam Maciek)…

Pomyślałem, że zdecydowanie warto opisać to w takim razie na blogu. Wszystko kręciło się wokół pytania o wewnętrzne narzędzie Microsoft, które pozwoliłoby zrealizować takie coś (wirtualizację w wirtualizacji), bo moi rozmówcy widzieli jak prelegenci Microsoft pokazywali takie coś na żywo.

Takie gotowe maszyny wirtualne (mające w sobie już zainstalowane Hyper-V) były też częścią materiałów dostępnych dla MCT (trenerów Microsoft, dwaj moi pierwsi rozmówcy to właśnie trenerzy). Ale były to gotowe maszyny – bez “instalki”.

Jak to zrobić?

Błąd przy instalacji Hyper-V w maszynie wirtualnejProblem jest w tym, że teoretycznie nie da się uruchomić wirtualizacji w wirtualizacji, bo przy próbie instalacji Hyper-V w maszynie wirtualnej system sprawdza, czy tam gdzie chcemy włączyć wirtualizator jest to możliwe (m.in. czy sprzęt spełnia wymagania).

Jako, że w maszynie wirtualnej nie mamy fizycznego sprzętu dostępnego (a tylko zwirtualizowany), to dostaniemy taki błąd jak po prawej stronie, mówiący że “Hyper-V cannot be installed. A hypervisor is already running”.

Ale… Posprawdzałem, posprawdzałem i okazała się bardzo ciekawa rzecz. Do włączenia tego nie jest potrzebny żaden magiczny programik. Może to zrobić każdy i wymaga to 2 minut pracy 🙂

Chodzi o to, żeby zainstalować Hyper-V, ale bez sprawdzenia wymagań dla potencjalnego hosta. I to jest kluczem tego sposobu.

Uwaga/Disclaimer: Pamiętajcie proszę, że to co będziemy robić nadaje się jak najbardziej do testowania, pokazów czy sprawdzenia pewnych rzeczy (np. klastrowania hostów Hyper-V przy posiadaniu tylko jednej fizycznej maszyny) – ale w żaden sposób nie jest wspierane ani zalecane w środowisku produkcyjnym (bo po prostu maszyna wirtualna w maszynie wirtualnej nie będzie działać).

I jeszcze zanim opiszę wszystko krok po kroku to zobaczcie, że to u mnie działa:

Maszyna wirtualna w maszynie wirtualnej

Krok po kroku

Robimy tak:

  1. Oczywiście musimy mieć na swoim komputerze (czy to laptop czy serwer) uruchomione Hyper-V
    1. Nie jest ważne czy Wasz system to Windows 8 czy Windows Server 2012 (lub starszy)
    2. Dawno temu pisałem artykuł o tym jak uruchomić Hyper-V na laptopie (muszę go kiedyś zaktualizować, bo ma już 4 lata!)
    3. Niedawno pisałem artykuł o różnicach w Hyper-V między Windows 8 a Windows Server 2012
    4. Pisałem również o wymogu posiadania SLAT jeśli chcecie uruchomić Hyper-V w Windows 8
  2. Tworzymy sobie wtedy maszynę wirtualną z Windows Server 2012
    1. To w niej będziemy instalować Hyper-V (czyli Hyper-V w Hyper-V)
    2. Zachęcam do pobrania gotowego obrazu VHD z Windows Server 2012
    3. Można oczywiście pobrać też ISO (ten sam adres co powyżej) i zainstalować samemu
  3. Gdybyśmy normalnie chcieli teraz w tej maszynie zainstalować Hyper-V to system powie nam, że nic z tego
  4. Korzystamy więc z narzędzia, które pozwoli nam ominąć tą blokadę – DISM
    1. uruchamiamy konsolę CMD z poświadczeniami administratora
    2. wpisujemy: DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V -All
  5. Po tym fakcie potrzebny będzie restart tej maszyny wirtualnej, ale po jej uruchomieniu zobaczymy, że mamy Hyper-V!
  6. Przy tym sposobie instalacji nie instalują się jednak narzędzia do zarządzania, więc musimy je doinstalować
    1. Korzystamy z “Add Roles and Features”
    2. Tam szukamy pod: „Remote Server Administration Tools > Role Administration Tools > Hyper-V Management Tools”
    3. I mamy gotowego Hyper-V Managera 🙂
  7. Teraz możemy już założyć maszynę wirtualną

Oczywiście należy teraz pamiętać, że taka maszyna wirtualna w maszynie wirtualnej nie zadziała (nie uruchomimy jej!), ale dzięki temu możemy sobie na jednej fizycznej maszynie stworzyć dwie maszyny wirtualne z Windows Server 2012 każda, w nich włączyć Hyper-V, spiąć je w klaster, postawić na nich maszynę wirtualną i pokazać jak wykonać np. migrację maszyn, czy pobawić się nową opcją Hyper-V Replica, itp.

PS. Wróciłem właśnie z urlopu, więc zapewne moja aktywność znowu będzie większa na blogu 🙂 A tematów trochę mam w wersjach roboczych.

Comments (9)

  1. @Izi: Tak, wiem, że tam maszyny działają 🙂

  2. @Norbert: Faktycznie przez PowerShell mi też nie działa – jak robiłem swój "lab" do tego to skorzystałem z DISMa… Wyrzucę tego PS z tekstu posta, a wolniejszej chwili sprawdzę czemu nie działa. Dzięki za info.

  3. lzi says:

    w maszynach wirtualnych vmware workstation hyper-v działa, łącznie z możliwością włączenia maszyn wirtualnych… 🙂

  4. norbert says:

    Z DISM działa, via PoweShell nie…. (2012 RC z Technet).

    VMWare Workstation ma jedną wadę…. nie ma go na Technecie 😉

  5. lzi says:

    @Norbert,

    Jeśli jesteś MCT / MCP (tutaj musiałbym sprawdzić) z wirtualizacji to można go od VMware otrzymać bezpłatnie.

  6. krzysztofbr says:

    @Norbert "Jeśli jesteś MCT / MCP (tutaj musiałbym sprawdzić) z wirtualizacji to można go od VMware otrzymać bezpłatnie"

    to sprawdź!

  7. Dawid says:

    Jak jesteś VCP to dostajesz VMware Worstation za darmo – i to jest pewne.

  8. Ja says:

    Komenda w WS2008R2 nie dziala – wywala blad 87

  9. blog.polewiak.pl says:

    Można “prościej”
    1. Robimy backup hosta (System State) który ma zainstalowaną rolę Hyper-V
    2. Odwijamy go do postaci VHD (ja to zrobiłem za pomocą DPM)
    3. Odpalamy i voila .. mamy wirtualną maszynę z rolą Hyper-V

    Tak mi się kiedyś przypadkiem udało, ale wirtualnej w wirtualnej nie odpalałem – nie było potrzeby 🙂

Skip to main content