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.