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ć?
Problem 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:
Krok po kroku
Robimy tak:
- Oczywiście musimy mieć na swoim komputerze (czy to laptop czy serwer) uruchomione Hyper-V
- Nie jest ważne czy Wasz system to Windows 8 czy Windows Server 2012 (lub starszy)
- Dawno temu pisałem artykuł o tym jak uruchomić Hyper-V na laptopie (muszę go kiedyś zaktualizować, bo ma już 4 lata!)
- Niedawno pisałem artykuł o różnicach w Hyper-V między Windows 8 a Windows Server 2012
- Pisałem również o wymogu posiadania SLAT jeśli chcecie uruchomić Hyper-V w Windows 8
- Tworzymy sobie wtedy maszynę wirtualną z Windows Server 2012
- To w niej będziemy instalować Hyper-V (czyli Hyper-V w Hyper-V)
- Zachęcam do pobrania gotowego obrazu VHD z Windows Server 2012
- Można oczywiście pobrać też ISO (ten sam adres co powyżej) i zainstalować samemu
- Gdybyśmy normalnie chcieli teraz w tej maszynie zainstalować Hyper-V to system powie nam, że nic z tego
- Korzystamy więc z narzędzia, które pozwoli nam ominąć tą blokadę - DISM
- uruchamiamy konsolę CMD z poświadczeniami administratora
- wpisujemy: DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V -All
- Po tym fakcie potrzebny będzie restart tej maszyny wirtualnej, ale po jej uruchomieniu zobaczymy, że mamy Hyper-V!
- Przy tym sposobie instalacji nie instalują się jednak narzędzia do zarządzania, więc musimy je doinstalować
- Korzystamy z "Add Roles and Features"
- Tam szukamy pod: „Remote Server Administration Tools > Role Administration Tools > Hyper-V Management Tools”
- I mamy gotowego Hyper-V Managera :)
- 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
Anonymous
January 01, 2003
@Izi: Tak, wiem, że tam maszyny działają :)Anonymous
January 01, 2003
@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.Anonymous
August 31, 2012
w maszynach wirtualnych vmware workstation hyper-v działa, łącznie z możliwością włączenia maszyn wirtualnych... :-)Anonymous
September 01, 2012
Z DISM działa, via PoweShell nie.... (2012 RC z Technet). VMWare Workstation ma jedną wadę.... nie ma go na Technecie ;)Anonymous
September 01, 2012
@Norbert, Jeśli jesteś MCT / MCP (tutaj musiałbym sprawdzić) z wirtualizacji to można go od VMware otrzymać bezpłatnie.Anonymous
September 05, 2012
@Norbert "Jeśli jesteś MCT / MCP (tutaj musiałbym sprawdzić) z wirtualizacji to można go od VMware otrzymać bezpłatnie" to sprawdź!Anonymous
September 09, 2012
Jak jesteś VCP to dostajesz VMware Worstation za darmo - i to jest pewne.Anonymous
August 29, 2013
Komenda w WS2008R2 nie dziala - wywala blad 87Anonymous
January 21, 2014
Można "prościej"1. Robimy backup hosta (System State) który ma zainstalowaną rolę Hyper-V2. Odwijamy go do postaci VHD (ja to zrobiłem za pomocą DPM)3. Odpalamy i voila .. mamy wirtualną maszynę z rolą Hyper-VTak mi się kiedyś przypadkiem udało, ale wirtualnej w wirtualnej nie odpalałem - nie było potrzeby :)