ˇ – Technicka´ univerzita Ostrava VSB Fakulta elektrotechniky a informatiky Katedra informatiky
ˇ ı platforma pro Virtualizacn´ dynamickou aktivaci ´ ıch instanc´ı specifikovanych ´ virtualn´ s OS Linux Virtualization Platform for the Dynamic Activation of Specified Virtual Instances with Linux OS
2010
Pavel Juˇska
Prohlaˇsuji, zˇ e jsem tuto diplomovou pr´aci vypracoval samostatnˇe. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kterych ´ jsem cˇ erpal.
V Ostravˇe 7. kvˇetna 2010
.............................
Dˇekuji t´ımto vedouc´ımu diplomov´e pr´ace Ing. Martinu Milatovi za odbornou pomoc a konzultaci pˇri realizaci t´eto diplomov´e pr´ace.
Abstrakt Tato pr´ace se zabyv´ ´ a vybˇ ´ erem vhodn´eho virtualizaˇcn´ıho syst´emu, n´avrhem a realizac´ı ˚ Poˇzadovan´e vlastnosti plynou z potˇreb Virtunov´eho rˇ eˇsen´ı ovl´ad´an´ı virtu´aln´ıch stroju. a´ ln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı, kter´a bude tento syst´em vyuˇz´ıvat jako n´ahradu st´avaj´ı´ c´ıho, d´ale nevyhovuj´ıc´ıho syst´emu. Obsahem uvodn´ ı cˇ a´ sti pr´ace je shrnut´ı teorie virtualizace v z´akladn´ım rozsahu nutn´em pro n´avrh a pˇrehled souˇcasnych ´ rˇ eˇsen´ı. Z analyzy ´ poˇzadova-nych ´ vlastnost´ı a dostupnych ´ prostˇredku˚ vyplynulo jako nejvhodnˇejˇs´ı rˇ eˇsen´ı ´ zaloˇzen´e na virtualizaˇcn´ım syst´emu KVM. Zadany´ ukol se podaˇrilo vyˇreˇsit vytvoˇren´ım ˇ sen´ı uspˇ ´ esˇ nˇe obst´alo knihovny bash skriptu˚ nad zvolenou virtualizaˇcn´ı platformou. Reˇ ˚ pˇri duklad-n´ em testov´an´ı na serveru. ˇ a´ slova: virtualizace, virtu´aln´ı stroj, KVM, Virtu´aln´ı laboratoˇr poˇc´ıtaˇcovych Kl´ıcov ´ s´ıt´ı
Abstract This thesis is concerned with selection of a proper virtualization system, design and realization of a new solution of control of virtual machines. Required features follow from the needs of Virtual Networking Laboratory, which will use this system as a replacement of the recent and no longer sufficient system. The content of the first part of the thesis is the summary of theory of virtualization in basic extent necessary for design and survey of recent solutions. The analysis of required features and available resources showed the most proper solution is the one based on KVM virtualization system. The goal was achieved by creating a bash script library above the chosen virtualization platform. The solution successfully came through a thorough testing on a server. Keywords: virtualization, virtual machine, KVM, Virtual Networking Laboratory
1
Obsah 1
´ Uvod 1.1 Teorie virtualizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Souˇcasn´e existuj´ıc´ı syst´emy . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Proˇc nov´e rˇ eˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Analyza ´ 2.1 Poˇzadavky na nov´e rˇ eˇsen´ı . . 2.2 N´avrh nov´eho rˇ eˇsen´ı . . . . . 2.3 Nalezen´ı vhodn´eho syst´emu . ˚ 2.4 Zduvodnˇ en´ı vybˇ ´ eru KVM . . 2.5 Detailnˇejˇs´ı pˇredstaven´ı KVM
3
4
4 4 7 9
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
11 11 13 16 17 18
N´avrh implementace 3.1 N´avrh implementaˇcn´ıho prostˇred´ı 3.2 Celkov´a struktura . . . . . . . . . . 3.3 Spouˇstˇen´ı . . . . . . . . . . . . . . . 3.4 Ukonˇcov´an´ı . . . . . . . . . . . . . 3.5 Restartov´an´ı . . . . . . . . . . . . . 3.6 Vypis informac´ı . . . . . . . . . . . ´ 3.7 Ukl´ad´an´ı, naˇc´ıt´an´ı a maz´an´ı . . . . 3.8 Obraz disku . . . . . . . . . . . . . 3.9 Spuˇstˇen´ı bez snapshotu . . . . . . . 3.10 Moˇznosti rozˇs´ırˇ en´ı do budoucna .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
22 22 22 29 31 34 37 38 40 41 41
Implementace ˇ sen´e probl´emy . . . . . . . . 4.1 Reˇ 4.2 Nasazen´ı na server . . . . . . . 4.3 Pouˇzit´e programov´e vybaven´ı . 4.4 Uk´azka bˇehu . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
42 42 44 44 45
. . . . .
. . . . .
. . . .
. . . .
5
Z´avˇer
47
6
Reference
48
Pˇr´ılohy
48
A Tabulka virtu´aln´ıch stroju˚
49
2
´ u˚ Seznam obrazk 1 2
Celkov´e sch´ema nov´eho rˇ eˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . Otisk obrazovky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 46
3
´ ´ Seznam vypis ´ u˚ zdrojoveho kodu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Glob´an´ı funkce mac . . . . . . . . . . Glob´an´ı funkce pole cisel stroje . . . Glob´an´ı funkce tap start . . . . . . . Glob´an´ı funkce tap stop . . . . . . . Glob´an´ı funkce vlan start . . . . . . Glob´an´ı funkce vlan stop . . . . . . Glob´an´ı funkce bridge start . . . . . Glob´an´ı funkce bridge stop . . . . . Ukonˇcen´ı skrze n´astroj Stop . . . . . Ukonˇcen´ı skrze n´astroj HardStop . . Restartov´an´ı skrze n´astroj Reset . . . Restartov´an´ı skrze n´astroj HardReset Vypis informac´ı skrze n´astroj Show . ´ Uloˇzen´ı skrze n´astroj Save . . . . . . Naˇcten´ı skrze n´astroj Load . . . . . . Maz´an´ı skrze n´astroj Delete . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
24 25 26 26 26 27 27 28 32 32 35 36 37 39 40 40
4
1
´ Uvod
˚ zitˇejˇs´ıch trendu˚ v oblasti informaˇcn´ıch technologi´ı je v souˇcasn´e dobˇe Jedn´ım z nejduleˇ zcela nepochybnˇe virtualizace. K nasazen´ı tohoto dnes tolik popul´arn´ıho rˇ eˇsen´ı doch´az´ı velmi cˇ asto, d´ıky jeho sˇ irok´emu uplatnˇen´ı v oboru informaˇcn´ıch technologi´ı. D´avno se jiˇz nejedn´a o poˇca´ teˇcn´ı experimentov´an´ı s novou technologi´ı, cˇ asto doprov´azenou obavou, zdali nejde pouze o medializaci zaj´ımav´elo, leˇc v praxi nepouˇzitelˇ a pevn´e m´ısto virtualizace mezi IT rˇ eˇsen´ımi v korpor´atn´ı sf´erˇ e jiˇz jasnˇe n´eho rˇ eˇsen´ı. Cas ˚ uk´azaly, zˇ e jde o vyzr´alou technologii. Duvod u˚ jej´ıho nasazen´ı je velmi mnoho: od tˇech ´ finanˇcn´ıch jako je uspora penˇez za hardware cˇ i elektrickou energii aˇz po ryze technick´e ˚ jejich snadn´a spr´ava, jako je moˇznost okamˇzit´eho vytvoˇren´ı libovolnych ´ virtu´aln´ıch stroju, plnohodnotn´e vyuˇzit´ı hardwarov´eho vykonu atd. ´ K jednomu z m´ıst, kde naˇsla virtualizace sv´e uplatnˇen´ı, patˇr´ı i Virtu´aln´ı laboratoˇr poˇc´ıtaˇcovych s´ıt´ı (Virtlab) pˇri Katedˇre informatiky na Fakultˇe elektrotechniky a infor´ ˇ e – Technick´e univerzity Ostrava. matiky Vysok´e sˇ koly b´ansk´ C´ılem t´eto pr´ace je vytvoˇrit kompletn´ı rˇ eˇsen´ı pro dynamickou aktivaci specifikovanych ´ virtu´aln´ıch instanc´ı s OS Linux. Je tˇreba vybrat vhodnou virtualizaˇcn´ı platformu pro konkr´etn´ı potˇreby Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı, n´aslednˇe vytvoˇrit kompletn´ı rˇ eˇsen´ı pro dynamickou aktivaci a ovl´ad´an´ı specifikovanych ´ virtu´aln´ıch stroju˚ s fin´aln´ım nasazen´ım do ostr´eho provozu na serveru.
1.1
Teorie virtualizace
Tato kapitola bude vˇenov´ana struˇcn´emu shrnut´ı teorie virtualizace, kter´a je nezbytnˇe nutn´a pro pochopen´ı d´ale vyuˇz´ıvan´e technologie. V jednotlivych ´ kapitol´ach budou rozvedeny nˇekter´e z´akladn´ı pojmy a principy tohoto odvˇetv´ı. Vzhledem k faktu, zˇ e v souˇcasn´e dobˇe se jiˇz jedn´a o tak rozs´ahlou oblast IT a vyklad ´ teorie virtualizace nen´ı n´apln´ı t´eto pr´ace, zde bude d´ale uveden pouze struˇcny´ vytah, ´ nikoli kompletn´ı a obs´ahly´ popis. 1.1.1
Virtualizace
˚ V r´amci informaˇcVirtualizace[1] se obvykle definuje jako abstrakce vypoˇ ´ cetn´ıch zdroju. n´ıch technologi´ı se pod pojmem virtualizace rozum´ı techniky a postupy, jeˇz pracuj´ı s dos˚ tupnymi zdroji odliˇsnym neˇz jak odpov´ıd´a jejich fyzick´e struktuˇre. Pomoc´ı ´ ´ zpusobem, ˚ zeme dos´ahnout libovoln´eho, n´ami poˇzadovan´eho tohoto virtualizovan´eho prostˇred´ı muˇ ˚ nez´avisle na dostupn´em hardwaru. To s sebou nese rˇ adu uspoˇra´ dn´an´ı virtu´aln´ıch prvku, ˚ ˚ uspory ´ vyhod v podobˇe moˇznosti pˇrizpusoben´ ı mˇen´ıc´ım se potˇreb´am uˇzivatelu, financ´ı ´ ˚ ˚ uspory ´ z duvodu agregace zdroju, m´ısta pro fyzicky´ hardware, bezpeˇcnosti atd. ˚ zeme virtualizovat takˇrka vˇse od kompletn´ı infrastruktury hardV souˇcasn´e dobˇe muˇ waru aˇz po jednotliv´e cˇ a´ sti syst´emu. Takto lze simulovat cel´e poˇc´ıtaˇce (tzv. virtu´aln´ı stroje), d´ılˇc´ı hardwarov´e komponenty (napˇr´ıklad virtu´aln´ı pamˇet’, virtu´aln´ı procesor cˇ i virtu´aln´ı disk atd.), pˇr´ıpadnˇe pouze softwarov´e prostˇred´ı v podobˇe virtualizace opereˇcn´ıho syst´emu apod.
5
˚ zeme n´asledovnˇe: Strukturovat pojem virtualizace v r´amci IT muˇ • Virtu´aln´ı stroj (Virtual machine, VM) – Virtualizace platformy (Platform virtualization) ∗ ∗ ∗ ∗ ∗
Pln´a virtualizace (Full virtualization) Hardwarovˇe asistovan´a virtualizace (Hardware-assisted virtualization) ˇ asteˇcn´a virtualizace (Partial virtualization) C´ Paravirtualizace (Paravirtualization) ´ Virtualizace na urovni operaˇcn´ıho syst´emu (Operating system-level virtualization)
– Aplikaˇcn´ı virtualizace (Application virtualization) ∗ ∗ ∗ ∗
Pˇrenosn´e aplikace (Portable application) Meziplatformn´ı virtualizace (Cross-platform virtualization) Virtualizaˇcn´ı apar´at (Virtual appliance) Emulace nebo Simulace (Emulation or simulation)
• Virtu´aln´ı pamˇet’ (Virtual memory) ´ ziˇst’ (Storage virtualization) • Virtualizace uloˇ • Pamˇet’ov´a virtualizace (Memory virtualization) • S´ıt’ov´a virtualizace (Network virtualization) – Virtu´aln´ı priv´atn´ı s´ıtˇe (Virtual private network, VPN) • Desktopov´a virtualizace (Desktop virtualization) • Datov´a virtualizace (Data virtualization) • Datab´azov´a virtualizace (Database virtualization) ´ ctov´an´ı (Virtual Chargeback) • Virtu´aln´ı uˇ Pˇredch´azej´ıc´ı pojmy jako takov´e nejsou nikde univerz´alnˇe uznan´e cˇ i standardizovan´e apod. Principy se strukturou na n´ızˇ rozdˇelen´ı stoj´ı vˇsak lze nal´ezt ve vˇetˇsinˇe literatury. Vzhledem k zamˇerˇ en´ı t´eto pr´ace zde d´ale bude podrobnˇeji rozeps´ana pouze cˇ a´ st tykaj´ ´ ıc´ı se virtualizace platformy. 1.1.2
Virtualizace platformy
˚ Historicky´ vyznam term´ınu virtualizace[2] puvodnˇ e poch´az´ı jiˇz z 60. let 20. stolet´ı a ´ oznaˇcoval vytv´arˇ en´ı virtu´aln´ıch stroju˚ pˇri pouˇzit´ı kombinace softwaru a hardwaru. Toto se dnes nazyv´ ´ a virtualizac´ı platformy. Pokusny´ str´ankovac´ı mechanismus syst´emu IBM M44/44X dal zase vniknout pojmu virtu´aln´ı stroj. V souˇcasn´e dobˇe maj´ı oba tyto term´ıny ˚ ze proto odliˇsovat. jiˇz sv´e dalˇs´ı vyznamy a jejich ch´ap´an´ı se muˇ ´
6
Virtualizace platformy je realizov´ana na fyzick´e hardwarov´e platformˇe formou softwarov´eho hostitele, jeˇz simuluje virtu´aln´ı poˇc´ıtaˇcov´e prostˇred´ı neboli vytv´arˇ´ı virtu´aln´ı stroj pro hostovany´ software. T´ım vznikne spolupracuj´ıc´ı dvojice hostitel (re´alny´ stroj) – host (virtu´aln´ı stroj). Software hosta pak bˇezˇ ´ı v takto virtu´alnˇe simulovan´em prostˇred´ı stejnˇe, jako by byl nainstalov´an na skuteˇcn´e hardwarov´e platformˇe. Typicky je takto simulov´ano nˇekolik virtu´aln´ıch stroju˚ na jednom stroji fyzick´em. Parametry tˇechto simulovanych ´ virtu´aln´ıch stroju˚ je moˇzn´e konfigurovat dle uˇzivatelskych ´ potˇreb a moˇznost´ı re´aln´eho hostitelsk´eho hardwaru. 1.1.2.1 Plna´ virtualizace Pln´a virtualizace[3] pˇredstavuje techniku, jeˇz prov´ad´ı kompletn´ı simulaci hardwaru pro virtu´aln´ı stroj. To znamen´a, zˇ e z hlediska hostovan´eho softwaru se jedn´a o plnohodnotny´ ˚ zeme provozovat libovolny´ software, poˇc´ıtaˇc. Na takov´emto virtu´aln´ım stroji tedy muˇ zejm´ena libovolny´ operaˇcn´ı syst´em, jenˇz by bˇezˇ el i na re´aln´em hardwaru se stejnym ´ druhem procesoru (stejnou instrukˇcn´ı sadou jako hostitelsky´ poˇc´ıtaˇc). Toto je hlavn´ı rozd´ıl oproti jinym ´ form´am virtualizace, kde je umoˇznˇen bˇeh pouze ˚ Z hlediska uˇzivatele pln´e virtualizace je nˇekterych ´ cˇ i speci´alnˇe upravenych ´ programu. simulovany´ stroj k nerozezn´an´ı od fyzick´eho. ´ esˇ n´a d´ıky sv´e komTato forma virtualizace se postupem cˇ asu uk´azala jako velice uspˇ plexnosti a nab´ızenym ´ moˇznostem. 1.1.2.2 Hardwaroveˇ asistovana´ virtualizace Hardwarovˇe asistovan´a virtualizace[3] pˇredstavuje evoluˇcn´ı vylepˇsen´ı pˇredeˇsl´e pln´e virtualizace za pomoc´ı speci´aln´ıch instrukc´ı procesoru. Do procesoru˚ podporuj´ıc´ıch tuto ˇ ıc´ı dosaˇzen´ı lepˇs´ıch formu virtualizace byly pˇrid´any speci´aln´ı sady instrukc´ı umoˇznuj´ vysledk u˚ zejm´ena v oblasti vykonu pˇri vyuˇzit´ı tˇechto procesoru˚ pro bˇeh virtualizace. ´ ´ Zaveden´ım tˇechto instrukc´ı doch´az´ı tak´e ke sn´ızˇ en´ı mnoˇzstv´ı zmˇen nutnych ´ pro bˇeh virtualizace v hostitelsk´em operaˇcn´ım syst´emu. V souˇcasn´e dobˇe jde o velmi rozˇs´ırˇ eny´ model, ktery´ vyuˇz´ıvaj´ı vˇsechny hlavn´ı virtualizaˇcn´ı syst´emy. ˇ aste ´ ˇ a´ virtualizace 1.1.2.3 C cn ˇ C´asteˇcn´a virtualizace, jak jiˇz n´azev napov´ıd´a, nesimuluje kompletn´ı virtu´aln´ı stroj, jak jej ch´apeme napˇr´ıklad z principu˚ pln´e virtualizace, ale pouze nˇekter´e cˇ a´ sti fyzick´eho ˇ hardwaru hostitele. Toto prostˇred´ı jiˇz neumoˇznuje bˇeh libovoln´eho softwaru, i kdyˇz v ´ mnohych Obvykle zde tak´e nelze spustit cely´ ´ pˇr´ıpadech je postaˇcuj´ıc´ı pouze jeho uprava. operaˇcn´ı syst´em. Stˇezˇ ejn´ı cˇ a´ st´ı t´eto formy virtualizace je nez´avisly´ adresn´ı prostor pro bˇezˇ ´ıc´ı programy. Dnes je tato technika souˇca´ st´ı vˇetˇsiny modern´ıch operaˇcn´ıch syst´emu a neˇrad´ı se jiˇz mezi klasick´e formy virtualizace v dneˇsn´ım smyslu ch´ap´an´ı tohoto term´ınu. ˚ zitym Tato virtualizace byla ovˇsem duleˇ ´ historickym ´ mezn´ıkem na cestˇe k pln´e virtualizaci, pro jej´ızˇ vyvoj byly vyuˇzity zkuˇsenosti s provozem cˇ a´ steˇcn´e virtualizace. ´
7
1.1.2.4 Paravirtualizace Paravirtualizace[3] pˇredstavuje zvl´asˇ tn´ı formu virtualizace, kdy nesimulujeme hardware virtu´aln´ıho stroje tak, jak jej ch´apeme napˇr´ıklad z principu˚ pln´e virtualizace. Hostitel zde nab´ız´ı pouze softwarov´e rozhran´ı formou zvl´asˇ tn´ıho API pro speci´alnˇe upraveny´ ˚ operaˇcn´ı syst´em hosta. Takto uzpusoben y´ opereˇcn´ı syst´em tak nepracuje s hardwarem ˚ klasickym ale skrze vol´an´ı API dan´e virtualizace hostitele nazyvan´ e hypervi´ zpusobem, ´ ´ zor. Vyhodou tak je pˇ r ı m´ e vykon´ a v´ a n´ ı instrukc´ ı virtu´ a ln´ ı ho stroje fyzick ym procesorem. ´ ´ ´ Na druhou stranu mezi jeho hlavn´ı nevyhody patˇr´ı nutnost speci´aln´ı upravy hos´ ˚ Tento nedostatek se tovan´eho operaˇcn´ıho syst´emu, coˇz nelze prov´est u vˇsech syst´emu. vyrobci procesoru˚ snaˇz´ı odstranit zaveden´ım speci´aln´ıch instrukc´ı procestoru, kter´e umoˇz´ ˇ ı bˇeh operaˇcn´ıch syst´emu˚ bez nutnosti jejich modifikace. nuj´ ˚ Tento zpusob je dnes spolu s hardwarovˇe asistovanou virtualizac´ı nejpouˇz´ıvanˇejˇs´ı. ˇ ıho systemu ´ 1.1.2.5 Virtualizace na urovni ´ operacn´ ´ Kl´ıcˇ ovou myˇslenkou virtualizace na urovni operaˇcn´ıho syst´emu je simulace bˇehu v´ıcero instanc´ı konkr´etn´ıho operaˇcn´ıho syst´emu uvnitˇr jedn´e jeho skuteˇcn´e instance. Host tak sd´ıl´ı stejny´ operaˇcn´ı syst´em jako hostitel, to znamen´a pouˇzit´ı stejn´eho j´adra v hostiteli i hostu. Z hlediska bˇezˇ ´ıc´ıch programu˚ hosta je vˇsak operaˇcn´ı syst´em ch´ap´an jako samostatny. ´ Na takto pouˇzit´e j´adro jsou ovˇsem kladeny specifick´e n´aroky plynouc´ı z vyuˇz´ıv´an´ı hardwarovych instancemi. ´ zdroju˚ v´ıce navz´ajem nez´avislymi ´ ˚ kde doch´az´ı k Tato forma virtualizace se nejˇcastˇeji pouˇz´ıv´a u virtu´aln´ıch hostingu, ˚ eryhodpˇridˇelov´an´ı omezenych ´ hardwarovych ´ zdroju˚ velk´emu poˇctu vz´ajemnˇe neduvˇ ˚ nych ´ uˇzivatelu.
1.2
ˇ ´ Soucasn e´ existuj´ıc´ı systemy
V souˇcasn´e dobˇe jiˇz na trhu existuje nˇekolik des´ıtek hotovych ´ rˇ eˇsen´ı zabyvaj´ ´ ıc´ıch se t´ımto odvˇetv´ım. Liˇs´ı se pˇredevˇs´ım rozsahem (jak velk´e mnoˇzstv´ı funkc´ı pro pr´aci s virtu´aln´ımi stroji dany´ syst´em nab´ız´ı) a kvalitou rˇ eˇsen´ı, univerz´alnost´ı pouˇzit´ı (zda se jedn´a o syst´em ´ cely cˇ i je zcela univerz´aln´ı), pouˇzitou platvyuˇzitelny´ napˇr´ıklad pouze pro konkr´etn´ı uˇ formou, typem licence (tedy i cenou) apod. Nelze tedy srovn´avat rozs´ahl´e syst´emy vyv´ıjen´e pro potˇreby velkych ´ korporac´ı s tˇemi malymi cˇ asto tvoˇrenymi jedn´ım vyvoj´ ´ ´ ´ arˇ em v r´amci open source projektu. V n´asleduj´ıc´ım ˇ ıc´ı plnohodnotnou a univerz´aln´ı virtualizaci se vyˇ ´ ctu jsem se zamˇerˇ il na syst´emy umoˇznuj´ standardn´ı sadou funkc´ı pro pr´aci s virtu´aln´ımi stroji. Jelikoˇz i syst´emu˚ s tˇemito parametry existuje mnoho, snaˇzil jsem se vybrat ty nejrozˇs´ırˇ enˇejˇs´ı z nich. To by mˇelo byt ´ dostateˇcnou z´arukou pro kvalitn´ı dokumentaci, dlouhodobou podporu, budouc´ı vyvoj, pˇrimˇerˇ en´e ´ mnoˇzstv´ı chyb atd. Podrobny´ popis jednotlivych ´ syst´emu˚ nen´ı n´apln´ı t´eto pr´ace, a proto n´asleduj´ıc´ı shrnut´ı obsahuje pouze struˇcnou charakteristiku tˇechto rˇ eˇsen´ı a jejich pozici na trhu. V pˇr´ıpadˇe z´ajmu o podrobnˇejˇs´ı popis jednotlivych ´ syst´emu˚ doporuˇcuji navˇst´ıvit domovsk´e str´anky, kter´e budou d´ale uvedeny.
8
1.2.1
KVM
Jedn´ım ze souˇcasnˇe nejrozˇs´ırˇ enˇejˇs´ıch syst´emu˚ vyuˇz´ıvanych ´ pro virtualizaci je zcela nepo˚ chod vyuˇz´ıv´a hardwarov´e chybnˇe KVM[5] neboli Kernel-based Virtual Machine. Pro svuj podpory speci´aln´ıch instrukc´ı procesoru˚ v podobˇe technologi´ı Intel VT nebo AMD-V. Z´akladn´ı pln´a virtualizace syst´emu Qemu[6] je d´ale rozˇs´ırˇ ena o nadstavbu KVM a st´av´a se tak hardwarovˇe asistovanou virtualizac´ı. Cely´ syst´em je vyv´ıjen v r´amci open source ´ na platformˇe Linux a od verze j´adra 2.6.20 se stal v unoru roku 2007 jeho souˇca´ st´ı. Jed˚ ymi notliv´e komponenty cel´eho syst´emu jsou vyd´av´any pod ruzn variantami GNU li´ cenc´ı. Domovskou str´anku tohoto syst´emu s komplexnˇejˇs´ım popisem nalezneme na adrese: http://www.linux-kvm.org/ 1.2.2
Windows Virtual PC
Windows Virtual PC, dˇr´ıve oznaˇcovany´ jako Microsoft Virtual PC cˇ i Connectix Virtual PC je virtualizaˇcn´ı n´astroj pro platformu Microsoft Windows. Ofici´alnˇe podporuje pouze bˇeh hosta s t´ımto operaˇcn´ım syst´emem. Stejnˇe jako vˇetˇsina modern´ıch virtualizaˇcn´ıch syst´emu˚ takt´ezˇ vyuˇz´ıv´a virtualizaˇcn´ı podpory hardwaru, cˇ ´ımˇz se rˇ ad´ı mezi hardwarovˇe asistovan´e virtualizace. ˚ Posledn´ı verze Windows Virtual PC na rozd´ıl od pˇredchudce Microsoft Virtual PC bˇezˇ ´ı jiˇz pouze pod nejnovˇejˇs´ım operaˇcn´ım syst´emem hostitele, tedy Windows 7. K dispozici je zde tak´e speci´aln´ı Windows XP Mode, ktery´ slouˇz´ı pro bˇeh aplikac´ı ´ vyˇzaduj´ıc´ıch starˇs´ı operaˇcn´ı syst´em Windows XP. V tomto modu bˇezˇ ´ı aplikace v Terminal Services session ve virtualizovan´em hostu a z hostitele jsou pˇr´ıstupn´e skrze Remote Desktop Protocol. S hostitelem tak sd´ıl´ı napˇr´ıklad nab´ıdku Start, plochu atd. Windows Virtual PC je komerˇcn´ı n´astroj sˇ´ırˇ eny´ pod propriet´arn´ı licenc´ı. Domovskou str´anku tohoto syst´emu s komplexnˇejˇs´ım popisem nalezneme na adrese: http://www.microsoft.com/windows/virtual-pc/ 1.2.3
VirtualBox
˚ zeme rˇ adit tak´e VirtualBox od spoleˇcnosti OrMezi rozˇs´ırˇ enˇejˇs´ı virtualizaˇcn´ı n´astroje muˇ acle, dˇr´ıve spoleˇcnosti Innotek a n´aslednˇe Sun. Na rozd´ıl od pˇredchoz´ıch dvou se jedn´a ˇ ast kodu ´ o multiplatformn´ı syst´em a to jak na stranˇe hosta, tak i hostitele. C´ syst´emu ˚ je puvodnˇ e pˇrevzata z Qemu. Je nab´ızen ve dvou variant´ach, kter´e se liˇs´ı druhem licence a v n´avaznosti na to i svoj´ı funkˇcnost´ı: z´akladn´ı VirtualBox Open Source Edi´ u˚ a VirtualBox Personal Use and tion s licenc´ı GNU nab´ızeny´ v podobˇe zdrojovych ´ kod Evaluation License s rozˇs´ırˇ enou funkcionalitou a propriet´arn´ı licenc´ı nab´ızeny´ v podobˇe ´ u. ˚ I tento syst´em vyuˇz´ıv´a hardwarov´e podpory a rˇ ad´ı pˇredkompilovanych ´ bin´arn´ıch kod se tud´ızˇ takt´ezˇ mezi hardwarovˇe asistovan´e virtualizace. Domovskou str´anku tohoto syst´emu s komplexnˇejˇs´ım popisem nalezneme na adrese: http://www.virtualbox.org/
9
1.2.4
VMware
Nejsofistikovanˇejˇs´ım a nejvyuˇz´ıvanˇejˇs´ım komerˇcn´ım n´astrojem cˇ i sp´ısˇ e n´astroji pro virtualizaci je VMware od firmy VMware, Inc. Tato firma nab´ız´ı celou sˇ k´alu produktu˚ pro virtualizaci od z´akladn´ıch syst´emu˚ jako je VMware Player aˇz po rozs´ahl´e rˇ eˇsen´ı urˇcen´e pro firemn´ı infrastrukturu jako VMware ESX Server. Jejich produkty jsou nab´ızeny pod ˚ ymi ruzn ´ propriet´arn´ımi licencemi. Nˇekter´e n´astroje jsou poskytov´any zdarma, jin´e pouze v r´amci placen´e licence. Vzhledem k tomu, zˇ e se jedn´a o sˇ piˇcku v oblasti virtualizace, najdeme v jejich nab´ıdce vˇse co se virtualizace tyk´ ´ a. Nab´ıdka t´eto firmy tak neuspokoj´ı pouze uˇzivatele, jeˇz maj´ı z´ajem o open source cˇ i bezplatn´e rˇ eˇsen´ı. Domovskou str´anku tohoto syst´emu s komplexnˇejˇs´ım popisem nalezneme na adrese: http://www.vmware.com/ 1.2.5
Xen
ˇ Hlavn´ım z´astupcem syst´emu˚ vyuˇz´ıvaj´ıc´ıch princip paravirtualizace je Xen. Umoˇznuje sice i klasickou virtualizaci, ale pouze ve spojen´ı s procesorem jenˇz ji podporuje v podobˇe speci´aln´ıch instrukc´ı. Vyhody a nevyhody tohoto syst´emu tak plynou hlavnˇe z principu˚ ´ ´ paravirtualizace. Spolu s KVM se jedn´a o nejrozˇs´ırˇ enˇejˇs´ı rˇ eˇsen´ı na platformˇe Linux. Dnes se vˇsak zd´a, zˇ e KVM z´ısk´av´a nad Xen pˇrevahu. Cely´ syst´em je vyv´ıjen v r´amci open source a jednotliv´e komponenty jsou pod GNU licenc´ı. Domovskou str´anku tohoto syst´emu s komplexnˇejˇs´ım popisem nalezneme na adrese: http://www.xen.org/
1.3
ˇ ı Procˇ nove´ rˇesen´
St´avaj´ıc´ı rˇ eˇsen´ı zaloˇzen´e na virtualizaˇcn´ım syst´emu Xen se postupem cˇ asu zaˇcalo jevit ˚ Virtu´aln´ı laboratoˇre poˇc´ıtaˇcojako nevyhovuj´ıc´ı. Vzhledem ke st´ale novym ´ poˇzadavkum vych ´ s´ıt´ı, jeˇz dosavadn´ı syst´em nen´ı schopen operativnˇe reflektovat nebo jen velmi obt´ızˇ nˇe, bylo rozhodnuto o vyvoji nov´eho rˇ eˇsen´ı. ´ Problematick´e vlastnosti souˇcasn´eho rˇ eˇsen´ı: • Obt´ızˇ ny´ bˇeh v´ıce druhu˚ virtualizovanych ´ stroju˚ paralelnˇe (vˇsechny spouˇstˇen´e instance musej´ı byt ´ jednoho typu). • Silnˇe omezen´e moˇznosti dynamick´eho definov´an´ı vlastnost´ı virtu´aln´ıch stroju˚ (vlastnosti instanc´ı jsou pˇredem d´any konfigurac´ı, bˇehem jejich startu se jiˇz nedaj´ı mˇenit). • Omezen´e moˇznosti spouˇstˇen´ı virtu´aln´ıch stroju˚ na poˇza´ d´an´ı (dynamiˇcnost spouˇstˇen´ı instance na poˇza´ d´an´ı je limitov´ana existuj´ıc´ı konfigurac´ı, virtu´aln´ı stroje se nedaj´ı spouˇstˇet bez n´ı). • Problematick´a aktualizace virtualizaˇcn´ıho syst´emu (aktualizace bal´ıcˇ ku˚ modifikovanych ´ jader Xen nejsou tak cˇ ast´e jako v pˇr´ıpadˇe klasick´eho j´adra). • Omezenost prostˇred´ı na platformu Linux a to pˇredevˇs´ım na stranˇe hosta (je tak obt´ızˇ n´a napˇr´ıklad instalace operaˇcn´ıho syst´emu platformy Microsoft Windows).
10
˚ (v souˇcasnosti se vyuˇz´ıv´a • Obt´ızˇ n´a implementace GUI pˇr´ıstupu k virtu´aln´ım strojum pouze CLI pˇr´ıstup, do budoucna by byla vhodn´a i podpora GUI). ˚ • Chybˇej´ıc´ı n´astroje pro ukl´ad´an´ı snapshotu˚ virtu´aln´ıch stroju. V dalˇs´ıch kapitol´ach bude proto vybr´an novy´ virtualizaˇcn´ı syst´em. Do vybˇ ´ eru bude ˚ ze obovˇsem takt´ezˇ zahrnuta i nejnovˇejˇs´ı verze moment´alnˇe pouˇz´ıvan´eho Xenu. Ta muˇ sahovat nov´e funkce oproti souˇcasnˇe pouˇz´ıvan´e verzi a mohla by tak vyhovovat vyˇ ´ se ˚ zm´ınˇenym ´ poˇzadavkum.
11
2
Analyza ´
Analyza ´ je z´akladn´ım prvkem pˇri n´avrhu cel´eho nov´eho rˇ eˇsen´ı. Jej´ı chyby a nedostatky se ˚ zou pˇrin´est vyrazn´ zpravidla projev´ı v dalˇs´ıch f´az´ıch vyvoje a muˇ e komplikace. Vhodny´ ´ ´ ˚ zity´ pro budouc´ı prubˇ ˚ eh prac´ı pˇri n´avrh cel´eho rˇ eˇsen´ı bˇehem analyzy ´ je tedy velmi duleˇ jeho tvorbˇe. Vysledkem analyzy ´ ´ by mˇel byt ´ n´avrh nov´eho rˇ eˇsen´ı a vybˇ ´ er vhodn´eho virtualizaˇcn´ıho syst´emu, jenˇz bude pouˇzit pro jeho implemetaci. Vzhledem k povaze rˇ eˇsen´eho probl´emu by nov´e rˇ eˇsen´ı mˇelo byt virtual´ navrˇzeno pr´avˇe s ohledem na moˇznosti dostupnych ´ ˚ Bˇehem analyzy izaˇcn´ıch n´astroju. vˇsak nelze s urˇcitost´ı zaruˇcit, zˇ e tento novy´ n´avrh ´ ˚ ze doj´ıt bude do detailu rˇ eˇseitelny´ v r´amci vybran´eho virtualizaˇcn´ıho syst´emu, a tak muˇ ´ k drobnym am pˇri implementaci vzhledem k jeho moˇznostem. ´ uprav´
2.1
ˇ ı Poˇzadavky na nove´ rˇesen´
Vzhledem k potˇreb´am Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych s´ıt´ı a co moˇzn´a nejmenˇs´ımu ´ nutn´emu z´asahu do st´avaj´ıc´ıho rˇ eˇsen´ı byly stanoveny n´asleduj´ıc´ı poˇzadavky. 2.1.1
´ ˇ ı Poˇzadavky na obecne´ vlastnosti noveho rˇesen´
• Podpora snapshotu˚ pro snadn´e spouˇstˇen´ı v´ıce virtu´aln´ıch stroju˚ se stejnou z´akladn´ı konfigurac´ı a stejnym ´ obrazem disku. • Moˇznost snadn´eho spouˇstˇen´ı v´ıce variant virtu´aln´ıch stroju˚ pomoc´ı v´ıce pˇredem pˇripravenych ´ obrazu˚ disku. • Moˇznost uchov´avat konfigurace a opakovanˇe spouˇstˇet uˇzivatelem konfigurovan´e virtu´aln´ı stroje. • Pˇr´ıstup ke konzoli virtu´aln´ıch stroju˚ pˇres RAW TCP stream (telent na vysok´em portu, telnet bez negociace). • Moˇznost konfigurace limitu˚ pˇridˇelen´e RAM pamˇeti. Ide´alnˇe dynamicky pˇri spousˇ tˇen´ı virtu´aln´ıho stroje. • Podpora v´ıce s´ıt’ovych ´ rozhran´ı ve virtu´aln´ıch stroj´ıch, na stranˇe hostitele mapo˚ e VLAN. vanych ´ na ruzn´ • Moˇznost dynamick´e specifikace poˇctu s´ıt’ovych ´ rozhran´ı v okamˇziku spouˇstˇen´ı virtua´ ln´ıho stroje. Stejny´ obraz disku ze kter´eho operaˇcn´ı syst´em virtu´aln´ıho stroje bootuje ˚ ym s ruzn ´ poˇctem s´ıtovych ´ rozhran´ı, tˇreba i v kaˇzd´e jednotliv´e instanci zvl´asˇ t’. • Administrativn´ı funkce (spouˇstˇen´ı, ukonˇcov´an´ı, restartov´an´ı, vypis informac´ı, ukl´a´ d´an´ı, naˇc´ıt´an´ı a maz´an´ı). • Snadn´e pˇrid´av´an´ı, odeb´ır´an´ı a aktualizace obrazu˚ disku, ze kterych ´ virtu´aln´ı stoje vych´az´ı.
12
• Bezpeˇcnostn´ı aspekty (oddˇelen´ı instanc´ı navz´ajem, oddˇelen´ı s´ıt’ov´eho provozu apod.). • Moˇznost ovl´ad´an´ı skrze pˇr´ıkazovou rˇ a´ dku. 2.1.2
Poˇzadavky na software serveru
• Bezplatny´ operaˇcn´ı syst´em s dostateˇcnou podporou virtualizaˇcn´ıch technologi´ı. Nejl´epe operaˇcn´ı syst´em platformy Linux v pod´an´ı distribuce Debian[7] GNU/Linux. ˇ ıc´ı obecn´e poˇzadavky na nov´e rˇ eˇsen´ı. Nejl´epe • Bezplatny´ virtualizaˇcn´ı syst´em splnuj´ s nˇekterou ze svobodnych ´ licenc´ı. 2.1.3
´ ıho stroje Poˇzadavky na software virtualn´
• Operaˇcn´ı syst´em platformy Linux. Bezplatn´a distribuce, nejl´epe Debian GNU/Linux. • Standardn´ı instalace operaˇcn´ıho syst´emu, kter´a zajist´ı moˇznost uˇz´ıv´an´ı bez dodateˇcn´eho zaˇskolen´ı. • Softwarov´a vybava: ´ – apache2 – Apache Hypertext Transfer Protocol (HTTP) server – bind9 – Berkeley Internet Name Domain (BIND) server – bind9utils – n´astroje pro BIND – dhcp3-client – Dynamic Host Configuration Protocol (DHCP) client – dhcp3-server – Dynamic Host Configuration Protocol (DHCP) server – dnsutils – Berkeley Internet Name Domain (BIND) client – ftpd – File Transfer Protocol (FTP) server – gzip – GNU n´astroje pro kompresi – iproute – n´astroje pro ovl´ad´an´ı s´ıtˇe a pˇrenosu po s´ıti – iptables – administraˇcn´ı n´astroje pro filtrov´an´ı paketu˚ a NAT – iptraf – n´astroje pro monitoring IP LAN – iputils-ping – n´astroje pro testov´an´ı dosaˇzitelnosti poˇc´ıtaˇce na s´ıti – less – str´ankovac´ı program – lynx – textovy´ WWW prohl´ızˇ eˇc – mc – dvoupanelovy´ spr´avce souboru˚ – net-tools – sada s´ıt’ovych ´ n´astroju˚ NET-3 – nmap – mapovaˇc s´ıtˇe – openssh-client – Secure Shell (SSH) client – openssh-server – Secure Shell (SSH) server – openssl – Secure Socket Layer (SSL) a souvisej´ıc´ı kryptografick´e n´astroje
13
– openvpn – Virtual Private Network (VPN) d´emon – tcpdump – n´astroje pro sledov´an´ı s´ıtˇe a z´ısk´an´ı dat – tftpd – Trivial File Transfer Protocol (TFTP) server – traceroute – n´astroje pro sledov´an´ı trasy paketu˚ po s´ıti TCP/IP – vim – Vi IMproved - rozˇs´ırˇ eny´ editor vi – vpnc – Cisco kompatibiln´ı VPN client
2.2
´ ´ ˇ ı Navrh noveho rˇesen´
Pˇri n´avrhu nov´eho rˇ eˇsen´ı je tˇreba vych´azet pˇrev´azˇ nˇe z toho st´avaj´ıc´ıho. Zmˇeny, kter´e by se dotkly okoln´ıch modulu˚ Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı nejsou pˇr´ıliˇs zˇ a´ douc´ı, vzhledem k jejich vz´ajemn´emu prov´az´an´ı. V ide´aln´ım pˇr´ıpadˇe by tak mˇelo doj´ıt pouze k nahrazen´ı st´avaj´ıc´ı rˇ eˇsen´e cˇ a´ sti, nez´avisle na zbytku syst´emu. ˚ Tento poˇzadavek urˇcuje z´asadn´ım zpusobem koncept cel´eho navrhovan´eho rˇ eˇsen´ı. To mus´ı do jist´e m´ıry respektovat to st´avaj´ıc´ı, hlavnˇe co se ovl´adac´ı cˇ a´ sti tyk´ ´ a. 2.2.1
´ Serverova´ cˇ ast
Cely´ syst´em pobˇezˇ ´ı na samostatn´em serveru, ktery´ krom spr´avy instanc´ı virtu´aln´ıch ´ stroju˚ nebude zatˇezˇ ov´an zˇ a´ dnymi Pro vyuˇzit´ı maxim´aln´ıho vykonu souˇcas´ dalˇs´ımi ukoly. ´ nych ´ virtualizaˇcn´ıch syst´emu˚ je nutn´e, aby jeho procesor obsahoval speci´aln´ı sadu inˇ adn´e jin´e speci´aln´ı poˇzadavky na hardware serveru strukc´ı pro podporu virtualizace. Z´ ´ erny´ poˇctu z´arovenˇ spouˇstˇekladeny nejsou. Vykon serveru by mˇel byt ´ ´ ovˇsem pˇr´ımo umˇ ˚ Souˇcasn´e poˇzadavky poˇc´ıtaj´ı s maxim´alnˇe 30 souˇcasnˇe bˇezˇ ´ıc´ımi nych ´ virtu´aln´ıch stroju. virtu´aln´ımi stroji. Z poˇzadavku˚ na software serveru vyplyv´ ´ a nutnost volby jednoho z bezplatnych ´ operaˇcn´ıch syst´emu˚ s dostateˇcnou podporou virtualizace, nejl´epe platformy Linux v pod´an´ı distribuce Debian GNU/Linux. Vzhledem ke splnˇen´ı poˇzadavku˚ zad´an´ı a spolu s fak˚ coˇz je dostateˇcnou z´arukou tem, zˇ e jde o jeden z nejpouˇz´ıvanˇejˇs´ıch serverovych ´ syst´emu, kvality vybˇ ´ eru, je vhodn´e tuto distribuci pouˇz´ıt. Dostateˇcn´a kompatibilita operaˇcn´ıch syst´emu˚ t´eto platformy a podpora virtualizace vˇetˇsiny rozˇs´ırˇ enˇejˇs´ıch distribuc´ı zaruˇcuje pˇr´ıpadnˇe snadny´ pˇrechod k jin´e distribuci. 2.2.2
ˇ ı cˇ ast ´ Aplikacn´
Centr´aln´ım prvkem nov´eho rˇ eˇsen´ı bude syst´em virtualizace, v ide´aln´ım pˇr´ıpadˇe instalovatelny´ a aktualizovatelny´ formou bal´ıcˇ kovac´ıho n´astroje operaˇcn´ıho syst´emu Debian GNU/Linux. Pˇr´ıpadn´a dodateˇcn´a konfigurace virtualizaˇcn´ıho syst´emu bude patrnˇe z´avisl´a na potˇreb´ach plynouc´ıch z implementace. Z prov´azanosti na ostatn´ı cˇ a´ sti Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı vyplyv´ ´ a nutnost ˚ jeˇz umoˇzn´ı: nalezen´ı a instalace n´astroju, • S´ıt’ovy´ provoz jednotlivych ´ virtu´aln´ıch stroju˚ v samostatnych ´ VLAN.
14
• Pˇr´ıstup na konzoli jednotlivych ´ virtu´aln´ıch stroju˚ skrze lok´aln´ı porty serveru. Kaˇzdy´ spuˇstˇeny´ virtu´aln´ı stroj tak bude m´ıt svoji konzoli pˇr´ıstupnou skrze dany´ lok´aln´ı port serveru a jeho s´ıt’ovy´ provoz bude prob´ıhat na samostatn´e VLAN. Jednotliv´e ˚ spuˇstˇen´e virtu´aln´ı stroje budou definov´any pomoc´ı n´asleduj´ıc´ıch parametru: • Identifik´ator stroje – jeho n´azev cˇ i cˇ ´ıslo, napˇr. virtualni stroj 1 nebo pouze 1 • Pamˇet’ stroje – kolik pamˇeti RAM bude stroji poskytnuto, napˇr. 64 MB • Diskovy´ obraz stroje – z kter´eho image se m´a stroj spustit, napˇr. debian.img • Poˇcet s´ıt’ovych ´ rozhran´ı stroje – kolik s´ıt’ovych ´ rozhran´ı m´a stroj obsahovat, napˇr. 3 – Prvn´ı s´ıt’ov´e rozhran´ı – pracuj´ıc´ı na samostatn´e VLAN 1 – Druh´e s´ıt’ov´e rozhran´ı – pracuj´ıc´ı na samostatn´e VLAN 2 – Tˇret´ı s´ıt’ov´e rozhran´ı – pracuj´ıc´ı na samostatn´e VLAN 3 • Port konzole stroje – na kter´em portu hostitelsk´eho serveru je pˇr´ıstupn´a konzole stroje, napˇr. 12345 Takto definovan´e virtu´aln´ı stroje budou s okoln´ımi moduly Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı spojeny pomoc´ı trunk linky jdouc´ı ze serveru. Jednotliv´ı uˇzivatel´e pak budou pracovat s tˇemito virtu´aln´ımi stroji pomoc´ı telnetu, jenˇz bude pˇripojen na jejich konzole skrze lok´aln´ı port serveru. Napˇr´ıklad takto: $ telnet 127.0.0.1 12345 Tento pˇr´ıkaz by mˇel uˇzivatele tedy pˇripojit na konzoli virtu´aln´ıho stroje, jeˇz se skryv´ ´ a za portem 12345. Celkov´e sch´ema nov´eho rˇ eˇsen´ı je vidˇet na obr´azku 1. 2.2.3
´ an´ ´ ı Zpusob ˚ ovlad
Vzhledem k prov´azanosti jednotlivych ´ cˇ a´ st´ı Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı je dobr´e dodrˇzet dosavadn´ı syst´em ovl´ad´an´ı. Nov´e rˇ eˇsen´ı bude tud´ızˇ takt´ezˇ vyuˇz´ıvat ovl´ad´an´ı virtualizaˇcn´ıho a operaˇcn´ıho syst´emu formou vol´an´ı skriptu˚ s potˇrebnymi pˇr´ıkazy a ´ parametry. Vstupem tˇechto skriptu˚ budou pˇr´ıkazy a pˇr´ıpadn´e parametry pro ovl´adn´ı virtu´aln´ıch ˚ Jejich vystupem stroju. pak posloupnost pˇr´ıkazu˚ pro operaˇcn´ı syst´em a syst´em virtual´ izace, jeˇz zajist´ı poˇzadovanou operaci. Pro ovl´ad´an´ı virtu´aln´ıch stroju˚ je nutn´e vytvoˇrit n´astroje pro jejich spuˇstˇen´ı, ukonˇcen´ı, restart, vypis informac´ı o bˇezˇ ´ıc´ıch stroj´ıch, ukl´ad´an´ı, naˇc´ıt´an´ı a maz´an´ı. ´
15
Obr´azek 1: Celkov´e sch´ema nov´eho rˇ eˇsen´ı
16
2.3
´ ´ Nalezen´ı vhodneho systemu
Pˇri vybˇ ´ eru vhodn´eho virtualizaˇcn´ıho syst´emu je nutn´e vych´azet z poˇradavku˚ na nov´e ´ zit jen rˇ eˇsen´ı. Existuj´ıc´ıch syst´emu˚ je na souˇcasn´em trhu mnoho a tud´ızˇ je nutn´e vybˇ ´ er zuˇ na nˇekolik z nich. Dobrym ´ krit´eriem je vybˇ ´ er jen tˇech nejzn´amˇejˇs´ıch a nejrozˇs´ırˇ enˇejˇs´ıch zm´ınˇenych ´ v kapitole 1.2. ˚ zilo vhodn´e kandid´aty pro budouc´ı virtualizaˇcn´ı syst´em na: Toto krit´erium vybˇ ´ eru zuˇ KVM, Windows Virtual PC, VirtualBox, VMware a Xen. V n´asleduj´ıc´ıch kapitol´ach budou jednotliv´e syst´emy rozebr´any a zhodnoceny vhledem k vhodnosti pouˇzit´ı. Hodnot´ıc´ımi krit´erii jsou poˇzadavky na nov´e rˇ eˇsen´ı vyplyvaj´ ´ ıc´ı z potˇreb Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych s´ıt´ı. Princip bude takovy, ´ ´ zˇ e pops´any bu˚ dou ty vlastnosti d´ıky n´ımˇz jednotliv´e virtualizaˇcn´ı syst´em nevyhovuj´ı poˇzadavkum. D´ale budou uvedeny pˇr´ıpadn´e dalˇs´ı aspekty rozhoduj´ıc´ı o vhodnosti jejich pouˇzit´ı. Ty ˇ ı, uv´adˇeny nebudou. poˇzadovan´e vlastnosti, jeˇz syst´emy splnuj´ Vˇetˇsina poˇzadovanych ´ vlastnost´ı je dnes vˇsak jiˇz standardem modern´ıch virtualizaˇc˚ O pˇr´ıpadn´em v´ıtˇezi tak pravdˇepodobnˇe rozhodnou vlastnosti jako kvaln´ıch syst´emu. itn´ı dokumentace, dlouhodob´a podpora ze strany vyrobc u˚ hardwaru a softwaru, aktivn´ı ´ vyvoj do budoucna apod. ´ 2.3.1
KVM
ˇ Tento open source syst´em splnuje vˇsechny poˇzadavky na nov´e rˇ eˇsen´ı pro Virtu´aln´ı lab˚ oratoˇr poˇc´ıtaˇcovych s´ıt´ı. Ani po dukladnˇ ejˇs´ım prostudov´an´ı moˇznost´ı tohoto syst´emu ´ ˇ ˇ nebyl nalezen z´avaˇznˇejˇs´ı nedostatek, jenˇz by znemoˇznoval jeho pouˇzit´ı. Nejenˇze splnuje zadan´e poˇzadavky z hlediska funkˇcnosti, ale oproti nˇekterym ´ dalˇs´ım je i vhodnˇejˇs´ım kandid´atem vzhledem ke svobodn´e licenci v r´amci open source. Velkou vyhodou tohoto ´ syst´emu je tak´e bohat´a nab´ıdka moˇznost´ı pr´ace se s´ıt´ı. 2.3.2
Windows Virtual PC
ˇ Syst´em jednoho z nejvˇetˇs´ı vyrobc u˚ softwaru na svˇetˇe Microsoftu nesplnuje poˇzadavky v ´ ˚ zitych ˚ zitˇejˇs´ım faktem je, zˇ e mezi podporovanymi nˇekolika duleˇ operaˇc´ bodech. Nejduleˇ ´ n´ımi syst´emy hostitele, ale i hosta se nenal´ez´a platforma linux. Tato skuteˇcnost defini˚ Cely´ n´astroj je kontivnˇe vyˇrazuje Windows Virtual PC z vybˇ syst´emu. ´ eru vhodnych ´ ´ cipov´an a uzce sv´az´an pr´avˇe s platformou Microsoft Windows. 2.3.3
VirtualBox
Prvn´ım lehkym ´ omezen´ım syst´emu VirtualBox od Oracle je pouˇzit´ı maxim´alnˇe osmi ’ s´ıt ovych ´ rozhran´ı. Toto cˇ ´ıslo se vˇsak zd´a z hlediska dosavadn´ıch zkuˇsenost´ı s provozem souˇcasn´eho rˇ eˇsen´ı jako dostateˇcn´e. V porovn´an´ı s ostatn´ımi syst´emy se jedn´a o m´enˇe rozˇs´ırˇ eny´ n´astroj. Jeho slibn´a budoucnost je vˇsak moment´alnˇe doprov´azena pˇrekotnym ´ vyvojem, jenˇz pˇrin´asˇ´ı cˇ ast´e vyd´av´an´ı novych ´ verz´ı, coˇz pro hledan´e rˇ eˇsen´ı nen´ı vyhodou. ´ ´
17
Jedn´a se tak´e o nejpouˇz´ıvanˇejˇs´ı virtualizaˇcn´ı n´astroj na desktopech platformy Linux. ˚ Na poli profesion´aln´ıch rˇ eˇsen´ı vˇsak nejde o pˇriliˇs cˇ asty´ syst´em. Vzhledem k tˇemto faktum a lepˇs´ı vhodnosti pouˇzit´ı u ostatn´ıch rˇ eˇsen´ı byl tento syst´em zam´ıtnut. 2.3.4
VMware
ˇ ast z nich ˚ C´ Produkty t´eto spoleˇcnosti patˇr´ı ke sˇ piˇcce v oboru virtualizaˇcn´ıch n´astroju. je poskytov´ana zdarma, cˇ a´ st pouze v r´amci placen´e licence. Z poˇzadavku˚ vyplyv´ ´ a, zˇ e se ´ mus´ı jednat o bezplatn´e rˇ eˇsen´ı. V uvahu tud´ızˇ pˇripad´a hlavnˇe bezplatny´ VMware Server. ´ celem z´ısk´an´ı z´akazn´ıka pro koupi plaTento produkt je zdarma poskytov´an pˇrev´azˇ nˇe s uˇ ˚ Oproti ostatn´ım open source rˇ eˇsen´ım vˇsak VMware cenych, l´epe vybavenych ´ ´ produktu. Server nenab´ız´ı zˇ a´ dnou stˇezˇ ejn´ı cˇ i vyj´ımeˇcnou funkci nav´ıc, tud´ızˇ je d´ana pˇrednost preferovan´emu svobon´emu softwaru. 2.3.5
Xen
˚ Na tomto open source syst´emu je postaveno souˇcasn´e rˇ eˇsen´ı, jeˇz z vyˇ ´ se popsanych ´ duvoˇ du˚ (viz kapitola 1.3) jiˇz nad´ale nesplnuje souˇcasn´e poˇzadavky. Ani po prostudov´an´ı zmˇen v novˇejˇs´ıch verz´ıch Xenu oproti t´e souˇcasnˇe pouˇz´ıvan´e vˇsak nenast´av´a p´adny´ ˚ duvod, jenˇz by rozhodl o setrv´an´ı u tohoto virtualizaˇcn´ıho n´astroje. Nejedn´a se o z´asadnˇe nevyhovuj´ıc´ı syst´em, ovˇsem v souˇcasn´e dobˇe se nab´ız´ı pouˇzit´ı l´epe vyhovuj´ıc´ıho KVM. ˚ Duvody tohoto rozhodnut´ı o zmˇenˇe virtualizaˇcn´ıho syst´emu jsou shrnuty v n´asleduj´ıc´ı kapitole.
2.4
ˇ ı vyb ˇ KVM Zduvodn ˚ en´ ´ eru
Pomineme-li Windows Virtual PC, jsou ostatn´ı syst´emy vyhovuj´ıc´ı z hlediska funkˇcn´ıch poˇzadavku˚ na nov´e rˇ eˇsen´ı. Ostatnˇe, jak jiˇz bylo zm´ınˇeno, vˇetˇsina poˇzadovanych ´ vlast˚ Rozhoduj´ıc´ımi se tak nost´ı je dnes jiˇz standardem modern´ıch virtualizaˇcn´ıch syst´emu. stala nepˇr´ım´a krit´eria jako je licence, souˇcan´a podpora ze strany vyrobc u˚ hardwaru a ´ softwaru apod. Jako nejvhodnˇejˇs´ı byl zvolen syst´em KVM. Mezi jeho nesporn´e vyhody patˇr´ı zejm´ena ´ zaˇclenˇen´ı do j´adra Linuxu. To zaruˇcuje dostateˇcnou podporu t´eto platformy, pravidelnou aktualizaci s kaˇzdym ´ vyd´an´ım nov´eho j´adra a mnoho dalˇs´ıch z toho plynouc´ıch vyhod. ´ Dalˇs´ım rozd´ılem, ktery´ byl pro potˇreby nov´eho rˇ eˇsen´ı shled´an jako vyhoda je prin´ cip virtualizace. Hardwarovˇe asistovan´a virtualizace v pod´an´ı KVM se jev´ı vhodnˇejˇs´ı ˇ oproti paravirtualizaci Xen. Ta umoˇznuje l´epe simulovat re´alnou poˇc´ıtaˇcovou s´ıt’, nab´ız´ı ˇ ´ i moˇznost pouˇzit´ı sirˇsıho spektra platforem hosta atd. Moˇznou vyhodou do budoucna je tak´e pˇr´ıklon vyznamn ych ´ ´ ´ softwarovych ´ spoleˇcnost´ı jako napˇr´ıklad Red Hat cˇ i IBM, jeˇz d´avaj´ı pˇrednost virtulazaˇcn´ımu syst´emu KVM pˇred doposud preferovanym ´ Xenem. I tento fakt vedl k rozhodnut´ı o v´ıtˇezstv´ı KVM. Tyto velk´e korporace povˇetˇsinou zaruˇcuj´ı kvalitn´ı a dlouhodoby´ vyvoj, dostateˇcnou podporu ´ atd.
18
Nelze ovˇsem rˇ´ıc´ı, zˇ e by KVM bylo jedinou moˇznou volbou. I ostatn´ı syst´emy s vyj´ımkou Windows Virtual PC by umoˇznily splnit souˇcasn´e zad´an´ı, pˇresto vˇsak KVM se jev´ı byti ´ po vˇsech str´ank´ach nejvhodnˇejˇs´ım n´astrojem.
ˇ s´ ˇ ı pˇredstaven´ı KVM Detailnej
2.5
Jak jiˇz bylo rˇ eˇceno, tak syst´em KVM je souˇca´ st´ı linuxov´eho j´adra od verze 2.6.20. Na vyvoji KVM se v souˇcasnosti nejv´ıce pod´ıl´ı firma Red Hat s 52 % a IBM s 8 % na druh´em ´ m´ıstˇe. Jeho z´akladem je syst´em Qemu, ktery´ je d´ale rozˇs´ırˇ en o hardwarovˇe asistovanou ˚ Jednotliv´e pˇr´ıkazy se proto liˇs´ı pouze v tom, virtualizaci pro dosaˇzen´ı lepˇs´ıch vysledk u. ´ zda je vol´ano Qemu cˇ i KVM. Dle toho se pot´e virtu´aln´ı stroj spust´ı pomoc´ı pln´e cˇ i hardwarovˇe asistovan´e virtualizace. N´asleduj´ıc´ı postupy a pˇr´ıkazy[4] jsou urˇceny pro souˇcasn´e verze operaˇcn´ıho syst´emu Debian GNU/Linux a virtualizaˇcn´ıho syst´emu KVM. V ostatn´ıch syst´emech t´eto platformy budou pˇr´ıkazy pravdˇepodobnˇe stejn´e nebo velmi podobn´e v z´avislosti na odliˇsno˚ stech jednotlivych ´ syst´emu. V n´asleduj´ıc´ım textu bude dodrˇzena standardn´ı konvence pro rozliˇsen´ı pr´av nutnych ´ k proveden´ı pˇr´ıkazu. Tedy $ pro standardn´ıho uˇzivatele a # pro uˇzivatele root. 2.5.1
ˇ en´ ˇ ı podpory virtualizace v procesoru Zjist
˚ zeme pouˇz´ıt KVM cˇ i se mus´ıme spokojit pouze s Qemu se pˇresvˇedˇc´ıme O tom, zda muˇ pˇr´ıkazem: $ egrep ’ˆflags.*(vmx|svm)’ /proc/cpuinfo Pokud n´am pˇr´ıkaz nˇeco vyp´ısˇ e, pak procesor dan´eho stroje obsahuje podporu virtu˚ zeme pouˇz´ıt KVM. V opaˇcn´em pˇr´ıpadˇe se mus´ıme spokojit pouze s Qemu. alizace a muˇ 2.5.2
Instalace
Instalace na vˇetˇsinˇe operaˇcn´ıch syst´emu˚ platformy Linux prob´ıh´a skrze bal´ıcˇ kovac´ı syst´em. Nainstalujeme jej proto pomoc´ı pˇr´ıkazu: # aptitude install kvm ˚ zeme nainstalovat i pˇr´ıpadn´e dalˇs´ı potˇrebn´e bal´ıcˇ ky plynouc´ı z imObdobnˇe tak muˇ plementace. Pokud se tak nestalo automaticky je jeˇstˇe potˇreba zav´est jadern´e moduly kvm.ko a kvm-intel.ko nebo kvm-amd.ko v z´avislosti na pouˇzit´em typu procesoru. Moduly lze zav´est pˇr´ıkazem: # modprobe kvm
19
2.5.3
Vytvoˇren´ı obrazu disku
Pˇred spuˇstˇen´ım virtu´aln´ıho stroje je nejprve potˇreba vytvoˇrit obraz jeho disku. Ten vytvorˇ´ıme pˇr´ıkazem: $ kvm-img create -f qcow2 debian.img 7G Tento pˇr´ıkaz vytvoˇr´ı obraz disku s n´azvem debian.img o maxim´aln´ı velikosti 7 GB. Parametr -f n´am urˇc´ı form´at tohoto obrazu. Nejˇcastˇeji pouˇz´ıvany´ qcow2 mˇen´ı dynamicky svoj´ı velikost dle aktu´alnˇe zabran´eho m´ısta. Podrobny´ popis jednotlivych ´ parametru˚ a jejich hodnot nalezneme v manu´alovych ´ str´ank´ach. 2.5.4
ˇ en´ ˇ ı virtualn´ ´ ıho stroje Spust
˚ zeme nyn´ı nainstalovat operaˇcn´ı sysNa pˇripraveny´ obraz disku z pˇredeˇsl´e kapitoly muˇ t´em hosta a pot´e jej zaˇc´ıt pouˇz´ıvat. Pro poˇca´ teˇcn´ı instalaci je nejprve potˇreba jej spustit napˇr´ıklad s virtu´aln´ı mechanikou CD-ROM, ze kter´e nabootujme instalaˇcn´ı obraz poˇzadovan´eho operaˇcn´ıho syst´emu. Pomoc´ı vzorov´eho pˇr´ıkladu si obecnˇe pop´ısˇ eme, jak se virtu´aln´ı stroj s n´ami poˇzado´ vanymi e je zde uvedena sloˇzitˇejˇs´ı konfigurace pro lepˇs´ı pˇred´ parametry spouˇst´ı. Umyslnˇ stavu nab´ızenych ´ moˇznost´ı. Akci provedeme pˇr´ıkazem: $ kvm \ -name virtualnistroj1 \ -smp 2 \ -snapshot \ -hda debian.img \ -cdrom debian.iso \ -m 128 \ -net nic,vlan=1,macaddr=DE:AD:BE:EF:12:27 \ -net tap,vlan=1,ifname=tap1,script=no \ -serial tcp::12345,server,nowait \ -monitor tcp::12346,server,nowait \ -boot c \ -usb \ -no-acpi \ -localtime \ -nographic \ -daemonize Nyn´ı si pop´ısˇ eme jednotliv´e parametry. • -name virtualni stroj 1 – nastav´ı jm´eno virtu´aln´ıho stroje
20
• -smp 2 – nastav´ı poˇcet vyuˇz´ıvanych ´ procesoru˚ hostitele • -snapshot – spust´ı virtu´aln´ı stroj jako snapshot • -hda debian.img – nastav´ı obraz pevn´eho disku • -cdrom debian.iso – nastav´ı obraz disku CD-ROM • -m 128 – ud´av´a velikost pamˇeti RAM v MB • -net nic,vlan=1,macaddr=DE:AD:BE:EF:12:27 – vytvoˇr´ı s´ıt’ovy´ adapt´er, nastav´ı jeho MAC adresu a cˇ ´ıslo VLAN ˚ • -net tap,vlan=1,ifname=tap1,script=no – ud´av´a zpusob pˇripojen´ı s´ıt’ov´eho adapt´eru, cˇ ´ıslo TAP rozhran´ı a cˇ ´ıslo VLAN • -serial tcp::12345,server,nowait – ud´av´a cˇ ´ıslo portu na kter´em bude bez cˇ ek´an´ı naslouchat s´eriovy´ port • -monitor tcp::12346,server,nowait – ud´av´a cˇ ´ıslo portu na kter´em bude bez cˇ ek´an´ı naslouchat Monitor, jenˇz je pops´an v n´asleduj´ıc´ı kapitole • -boot c – urˇc´ı zaˇr´ızen´ı ze kter´eho stroj nabootuje • -usb – aktivuje USB ovladaˇc • -no-acpi – deaktivuje ACPI • -localtime – nastaven´ı hodiny hosta dle hostitele • -nographic – vypne veˇskery´ graficky´ vystup ´ • -daemonize – spust´ı virtu´aln´ı stroj jako d´emona I pˇresto, zˇ e tento pˇr´ıklad zahrnuje pouze zlomek nab´ızenych ´ parametru˚ je n´azornˇe vidˇet, zˇ e moˇznosti pro nastaven´ı virtu´aln´ıho stroje dle vlastn´ıch potˇreb jsou velk´e. Podrobny´ popis jednotlivych ´ str´ank´ach. ´ parametru˚ a jejich hodnot nalezneme v manu´alovych 2.5.5
´ an´ ´ ı skrze Monitor Ovlad
˚ Kaˇzdy´ virtualizaˇcn´ı syst´em zpravidla obsahuje n´astroj pro ovl´ad´an´ı virtu´aln´ıch stroju. V pˇr´ıpadˇe KVM se nazyv´ ´ a Monitor. Existuje jak v grafick´e podobˇe, tak i variantˇe pro ˚ ych pˇr´ıkazovy´ rˇ a´ dek. Pomoc´ı nˇej lze realizovat operace jako z´ısk´an´ı ruzn informac´ı o ´ bˇezˇ ´ıc´ım stroji, pˇripojen´ı USB zaˇr´ızen´ı, vytvoˇren´ı otisku obrazovky, vypnut´ı stroje, restart stroje, uloˇzen´ı stroje atd. Podrobny´ popis opˇet najdeme v manu´alovych ´ str´ank´ach. Pr´ace v pˇr´ıkazov´em rˇ a´ dku spoˇc´ıv´a v napojen´ı na speci´aln´ı konzoli virtu´aln´ıho stroje, kter´a interpretuje jednotliv´e pˇr´ıkazy Monitoru.
21
2.5.6
kQemu
V pˇr´ıpadˇe absence podpory virtualizace ze strany procesoru se mus´ıme spokojit pouze s plnou virtualizac´ı pomoc´ı Qemu. Tento syst´em vˇsak s´am o sobˇe nedosahuje pˇr´ıliˇs velk´eho vykonu. ´ Tento stav lze vylepˇsit pouˇzit´ım kQemu. Jedn´a se o akceleraˇcn´ı modul j´adra slouˇz´ıc´ı pro urychlen´ı syst´emu Qemu. Zaveden´ı tohoto jadern´eho modulu je vˇsak vzhledem k vychoz´ ı rychlosti Qemu takˇrka nutnost´ı v pˇr´ıpadˇe, zˇ e jej chceme re´alnˇe pouˇz´ıvat. ´ Od verze Qemu 0.12.0 jiˇz vˇsak nen´ı kQemu nad´ale podporov´ano a je doporuˇceno pouˇz´ıt akceleraci skrze KVM. Instalace kQemu a zaveden´ı jadern´eho modulu prob´ıh´a n´asledovnˇe. Nejprve je nutn´e ˚ nainstaloval bal´ıcˇ ek module-assistant stejnym jako jiˇz bylo uvedeno vyˇ ´ zpusobem, ´ se. Pot´e jiˇz dokompilujeme kqemu-modules-* bal´ıcˇ ek skrze Module Assistant n´asledovnˇe: # m-a a-i kqemu Na konec je nutn´e pˇridat kQemu do konfiguraˇcn´ıho souboru /etc/modules pro automaticky´ start a zav´est jeho jaderny´ modul. To prvedeme n´asledovnˇe: # echo kqemu >> /etc/modules # modprobe kqemu Pro pln´e vyuˇzit´ı je je jeˇstˇe tˇreba pˇri vol´an´ı Qemu pouˇz´ıt parametr: -kernel-kqemu
22
´ Navrh implementace
3
Po vypracov´an´ı obecn´e analyzy je dalˇs´ım krokem vyvoje nov´eho rˇ eˇsen´ı n´avrh imple´ ´ mentace. Tato cˇ a´ st vyvoje rˇ eˇs´ı probl´em, jak naimplementovat nov´e rˇ eˇsen´ı dle univerz´aln´ı ´ analyzy ´ na konkr´etn´ı zvolen´e prostˇred´ı. Bude zde rozebr´an cely´ koncept nov´eho rˇ eˇsen´ı a n´aslednˇe pak jeho d´ılˇc´ı cˇ a´ sti. Na z´avˇer t´eto kapitoly se tak´e pod´ıv´ame na moˇznosti rozˇs´ırˇ en´ı do budoucna.
3.1
´ ˇ ıho prostˇred´ı Navrh implementacn´
˚ na ovl´ad´an´ı Vzhledem k vybˇ ´ eru operaˇcn´ıho syst´emu Debian GNU/Linux a poˇzadavkum pomoc´ı skriptu˚ jsem volil mezi tˇemi programovac´ımi cˇ i skriptovac´ımi jazyky, jeˇz budou ˇ ´ tuto podm´ınku splnovat. Dalˇs´ım aspektem, ktery´ bylo tˇreba br´at v uvahu je moˇzn´e budouc´ı rozˇs´ırˇ en´ı tohoto nov´eho rˇ eˇsen´ı dalˇs´ımi lidmi pracuj´ıc´ımi na projektu Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych s´ıt´ı. Pokud by ovl´ad´an´ı prob´ıhalo skrze nepˇr´ıliˇs rozˇs´ırˇ eny´ jazyk, ´ mohlo by v budoucnu doj´ıt k obt´ızˇ n´e situaci pˇri jeho rozvoji. Po zv´azˇ en´ı tˇechto n´aroku˚ ˚ jsem zvolil obecnˇe zn´amy´ skriptovac´ı jazyk bash, ktery´ vyhovuje zm´ınˇenym ´ poˇzadavkum. D´ale byla rˇ eˇsena ot´azka, zdali virtualizaˇcn´ı syst´em ovl´adat pomoc´ı sady skriptu˚ pˇr´ımo, skrze jeho vlastn´ı n´astroje a rozhran´ı API nebo vyuˇz´ıt nˇektery´ z univerz´aln´ıch ovl´adac´ıch ˚ T´ım nejzn´amˇejˇs´ım z nich je knihovna libvirt[8], jeˇz poskytuje jednotn´e ovl´adac´ı n´astroju. ˚ e virtualizaˇcn´ı technologie a jej´ı konzolov´e rozhran´ı virsh. Po dukladn´ ˚ rozhran´ı pro ruzn´ e ´ uvaze, prostudov´an´ı moˇznost´ı i pˇr´ıvˇetivosti n´astroju˚ a rozhran´ı API virtualizaˇcn´ıho syst´emu KVM, podloˇzen´e aktu´aln´ımi a moˇznymi budouc´ımi poˇzadavky jsem zvolil pˇr´ım´e ´ ovl´ad´an´ı, nikoliv skrze n´astroj tˇret´ıch stran co by prostˇredn´ıka.
3.2
Celkova´ struktura
Pˇri n´avrhu nov´eho rˇ eˇsen´ı je tˇreba stanovit nˇekolik implementaˇcn´ıch pravidel, jejichˇz ˚ dusledn ym ´ dodrˇzen´ım dos´ahneme odpov´ıdaj´ıc´ı kvality rˇ eˇsen´ı a jeho snadn´e rozˇsiˇritelnosti do budoucna v r´amci dalˇs´ıho rozvoje Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı. Je potˇreba navrhnout a dodrˇzovat jednotnou souborovou strukturu, dostateˇcn´e cˇ lenˇen´ı jednotlivych ´ skriptu˚ na menˇs´ı celky, centr´aln´ı m´ısto pro nastaven´ı glob´aln´ıch parametru˚ ´ virtualizace, srozumitelnost a cˇ istotu kodu jednotlivych ´ skriptu˚ atd. Z poˇzadavku˚ zad´an´ı vyplynulo, zˇ e po nov´em rˇ eˇsen´ı se z hlediska implementace se poˇzaduje vytvoˇrit n´asleduj´ıc´ı sadu n´astroju˚ pro ovl´ad´an´ı virtualizaˇcn´ıho syst´emu: • Spouˇstˇen´ı – n´astroj spouˇstˇej´ıc´ı jednotliv´e virtu´aln´ı stroje s poˇzadovanymi parame´ try • Ukonˇcov´an´ı – n´astroje ukonˇcuj´ıc´ı d´ale jiˇz nepotˇrebn´e virtu´aln´ı stroje • Restartov´an´ı – n´astroje restartuj´ıc´ı zablokovan´e cˇ i jinak probl´emov´e virtu´aln´ı stroje • Vypis informac´ı – n´astroje vypisuj´ıc´ı informace o pr´avˇe bˇezˇ ´ıc´ıch stroj´ıch ´
23
• Ukl´ad´an´ı, naˇc´ıt´an´ı a maz´an´ı – n´astroje ukl´adaj´ıc´ı, naˇc´ıtaj´ıc´ı a mazaj´ıc´ı obrazy virtu´aln´ıch stroju˚ pro pozdˇejˇs´ı opˇetovn´e pouˇzit´ı Tyto skripty budou vol´any za pomoc´ı dodateˇcnych parametru˚ upravuj´ıc´ıch jejich ´ ˚ chov´an´ı dle aktu´aln´ıch poˇzadavku. 3.2.1
Souborova´ struktura
Z´akladn´ım kamenem je vhodn´e navrˇzen´ı souborov´e, tedy i adres´arˇ ov´e struktury. D´ale je potˇreba z hlediska pˇrehlednosti a snadn´e upravitelnosti rozdˇelit skripty do jednotlivych ´ ˚ souboru. ˚ ´ Po dukladn´ e uvaze byla adres´arˇ ov´a struktura navrˇzena takto: • instalacni disky\ – adres´arˇ obsahuj´ıc´ı obrazy instalaˇcn´ıch disku˚ • skripty\ – adres´arˇ obsahuj´ıc´ı jednotliv´e skripty – kvm.sh – kvm delete.sh – kvm funkce.sh – kvm hardreset.sh – kvm hardresetall.sh – kvm hardstop.sh – kvm hardstopall.sh – kvm kontrola parametru cas.sh – kvm kontrola parametru disk.sh – kvm kontrola parametru pamet.sh – kvm kontrola parametru rozhrani.sh – kvm kontrola parametru stroj.sh – kvm load.sh – kvm parametry.sh – kvm reset.sh – kvm resetall.sh – kvm save.sh – kvm show.sh – kvm showall.sh – kvm start.sh – kvm stop.sh – kvm stopall.sh
24
– spusteni bez snaspshotu.sh • ulozene snapshoty\ – adres´arˇ obsahuj´ıc´ı uloˇzen´e snapshoty • virtualni disky\ – adres´arˇ obsahuj´ıc´ı obrazy disku˚ Detailn´ı popis jednotlivych ´ skriptu˚ a jejich parametru˚ najdeme v n´asleduj´ıc´ıch kapitol´ach. 3.2.2
´ ı skript Centraln´
Centr´aln´ım spustitelnym ´ skriptem je kvm.sh. Pomoc´ı vol´an´ı tohoto skriptu a jeho parametru˚ dojde k provedn´ı veˇskerych ´ nab´ızenych ´ a poˇzadovanych ´ operac´ı. Na z´acˇ a´ tku tohoto skriptu dojde k naˇcten´ı zadanych ´ parametru˚ a jejich nastaven´ı v r´amci glob´aln´ıch promˇenych. Naˇc´ıtaj´ı se parametry: oper´ator, cˇ ´ıslo stroje nebo cˇ as, pamˇet’ ´ stoje, disk stroje a poˇcet s´ıt’ovych ´ rozhran´ı stroje. Pokud nˇektery´ z parametru˚ nebyl zad´an, nastav´ı se na vychoz´ ı nulovou hodnotu. Poˇcet a druh volanych ´ ´ parametru˚ tak z´avis´ı na poˇzadovan´e operaci. D´ale pak dojde k prolinkov´an´ı mezi skripty kvm funkce.sh a kvm parametry.sh. Prvn´ı z nich umoˇzn´ı ostatn´ım cˇ a´ stem skriptu volat glob´aln´ı funkce, druhy´ pak nastav´ı glob´aln´ı promenn´e. Na z´avˇer skriptu pak dojde k proveden´ı pˇrep´ınaˇce case, ktery´ dle prvn´ıho parametru zavol´a poˇzadovanou cˇ a´ st skriptu. Vol´an´ı jednotlivych ´ funkc´ı pak tedy vypad´a napˇr´ıklad takto: # ./kvm.sh stopall 03:15:00 ˚ ze nabyvat Prvn´ı parametr pak muˇ hodnot: start, stop, hardstop, stopall, hardstopall, re´ set, hardreset, resetall, hardresetall, show, showall, save, load a delete. V pˇr´ıpadˇe nezn´am´eho parametru dojde k vyps´an´ı chybov´e hl´asˇ ky s n´apovˇedou spr´avn´eho zad´an´ı. Vzhledem k tomu, zˇ e v jednotlivych ´ skriptech bude doch´azet k vol´an´ı pˇr´ıkazu˚ vyˇzaduj´ıc´ımu pr´ava uˇzivatele root je nutn´e jej s tˇemito pr´avy pokaˇzd´e spouˇstˇet. 3.2.3
´ ı funkce Globaln´
Glob´aln´ı funkce se nal´ezaj´ı v souboru kvm funkce.sh. Jedn´a se o pomocn´e funkce volan´e z ˚ jednotlivych ´ cˇ a´ st´ı skriptu. Tvorba n´ahodn´e MAC adresy virtu´aln´ıho stroje Argumenty: zˇ a´ dn´e function mac() { echo $(echo −n DE:AD:BE:EF ; for i in ‘seq 1 2‘ ; do echo −n ‘echo ”:$RANDOM$RANDOM” | cut −n −c −3‘ ; done)
25
}
Vypis 1: Glob´an´ı funkce mac ´ Tato funkce vytvoˇr´ı pˇr´ı kaˇzd´em sv´em vol´an´ı unik´atn´ı MAC adresu s jednotnym ´ prefixem DE:AD:BE:EF. Takto vytvoˇren´e MAC adresy jsou n´aslednˇe pˇridˇelov´any jednotlivym ´ ˚ spouˇstˇenym ´ virtu´aln´ım strojum. Tvorba jednorozmˇern´eho pole pro cˇ ´ısla TAP, VLAN, bridge Argumenty: cˇ ´ıslo virtu´aln´ıho stoje, maxim´aln´ı poˇcet rozhran´ı virtu´aln´ıho stoje function pole cisel stroje () { for (( i =1;i<=$2;i++)); do cislo =$(($1 ∗ $2 − ($2 − $i))) pole[( $i−1)]=$cislo done pole cisel stroje =(${pole[@]}) }
Vypis 2: Glob´an´ı funkce pole cisel stroje ´ Jednotliv´e spouˇstˇen´e virtu´aln´ı stroje maj´ı dynamicky se mˇen´ıc´ı poˇcet s´ıt’ovych ´ adap˚ Pro vytvoˇren´ı TAP rozhran´ı, VLAN rohran´ı a bridge na stranˇe hostitele, s nimiˇz t´eru. mohou jednotliv´e s´ıt’ov´e adapt´ery virtu´aln´ıho stroje pracovat, je tud´ızˇ zapotˇreb´ı vytvoˇrit sadu cˇ ´ısel pro jejich jednotn´e oznaˇcen´ı. Tato sada cˇ ´ısel mus´ı byt ´ samozˇrejmˇe pro kaˇzdy´ stroj jin´a. Tato funkce vytvoˇr´ı pole cˇ ´ısel, kter´e se d´ale mohou pouˇz´ıt pˇri vytvoˇren´ı onˇech TAP rozhran´ı, VLAN rohran´ı a bridge. Pˇri kaˇzd´em vol´an´ı funkce jsou pˇred´any dva argumenty: cˇ ´ıslo virtu´aln´ıho stroje a maxim´aln´ı poˇcet rozhran´ı virtu´aln´ıho stoje, ktery´ je pro ˚ N´aslednˇe dojde k vytvovˇsechny stroje nastaven stejnˇe v glob´aln´ım nastaven´ı parametru. rˇ en´ı jednorozmˇern´eho pole o velikosti maxim´aln´ıho poˇctu rozhran´ı s cˇ ´ısly, jeˇz jsou rezervov´any pro ud´avany´ stroj v prvn´ım argumentu. Pokud je napˇr´ıklad zavol´ana funkce s argumenty 2 a 3. Tak dojde k vytvoˇren´ı pole s ˇ ıslo 3 tak ud´av´a maxim´aln´ı poˇcet rozhran´ı, tud´ızˇ tˇri cˇ ´ısla. C´ ˇ ıslo 2 ud´av´a cˇ ´ısly 4, 5 a 6. C´ ˇ cˇ ´ıslo stroje, pro ktery´ je toto pole vytvoˇreno. C´ısla 1, 2 a 3 n´aleˇz´ı stroji prvn´ımu, takˇze cˇ ´ısla ˚ ze byt 4, 5 a 6 pak tomuto stroji druh´emu. Tento stroj pak muˇ ´ pˇripojen na TAP rozhran´ı 4, 5 a 6, jeˇz budou pracovat ve VLAN 4, 5, a 6 a TAP s VLAN budou spoleˇcnˇe sv´az´any bridge 4, 5, a 6. V pˇr´ıpadˇe zavol´an´ı funkce s argumenty 2 a 4 pak dojde k vytvoˇren´ı pole s cˇ ´ısly 5, 6, 7 a 8. Tato cˇ ´ısla jsou pot´e opˇet rezervov´ana druh´emu stroji. Obdobˇe pak pro stroje dalˇs´ı.
26
Tvorba TAP rozhran´ı Argumenty: cˇ ´ıslo TAP function tap start () { tunctl −t tap$1 1>/dev/null 2>/dev/null ip link set dev tap$1 up 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Tvorba tap rozhran´ı: tap$1” }
Vypis 3: Glob´an´ı funkce tap start ´ Tato funkce vytvoˇr´ı a aktivuje TAP rozhran´ı s cˇ ´ıslem ud´avanym ´ v argumentu. N´aslednˇe pak tuto ud´alost zap´ısˇ e do log souboru. Pokud je napˇr´ıklad zavol´ana funkce s argumentem 3 vytvoˇr´ı se a aktivuje TAP rozhran´ı tap3. Zruˇsen´ı TAP rozhran´ı Argumenty: cˇ ´ıslo TAP function tap stop() { tunctl −d tap$1 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Zruˇsen´ı tap rozhran´ı: tap$1” }
Vypis 4: Glob´an´ı funkce tap stop ´ Tato funkce zruˇs´ı TAP rozhran´ı s cˇ ´ıslem ud´avanym ´ v argumentu. N´aslednˇe pak tuto ud´alost zap´ısˇ e do log souboru. Tvorba VLAN rozhran´ı Argumenty: cˇ ´ıslo VLAN function vlan start () { vlan=‘expr $vlan offset + $1‘ vconfig add eth0 $vlan 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Tvorba vlan rozhran´ı: eth0.$vlan” }
Vypis 5: Glob´an´ı funkce vlan start ´
27
Tato funkce vytvoˇr´ı VLAN rozhran´ı pro eth0 s cˇ ´ıslem ud´avanym ´ v argumentu seˇcte˚ N´aslednˇe pak tuto ud´alost nym ´ s VLAN offsetem z glob´aln´ıho nastaven´ı parametru. zap´ısˇ e do log souboru. Pokud je napˇr´ıklad zavol´ana funkce s argumentem 3 a VLAN offset je nastaven napˇr´ıklad na 1000 vytvoˇr´ı se VLAN rozhran´ı eth0.1003. Zruˇsen´ı VLAN rozhran´ı Argumenty: cˇ ´ıslo VLAN function vlan stop() { vlan=‘expr $vlan offset + $1‘ vconfig rem eth0.$vlan 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Zruˇsen´ı vlan rozhran´ı: eth0.$vlan” }
Vypis 6: Glob´an´ı funkce vlan stop ´ Tato funkce zruˇs´ı VLAN rozhran´ı pro eth0 s cˇ ´ıslem ud´avanym ´ v argumentu seˇctenym ´ ˚ N´aslednˇe pak tuto ud´alost zap´ısˇ e do s VLAN offsetem z glob´aln´ıho nastaven´ı parametru. log souboru. Tvorba bridge rozhran´ı Argumenty: cˇ ´ıslo bridge function bridge start () { vlan=‘expr $vlan offset + $1‘ brctl addbr br$1 1>/dev/null 2>/dev/null brctl addif br$1 tap$1 eth0.$vlan 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Tvorba bridge: br$1” }
Vypis 7: Glob´an´ı funkce bridge start ´ Tato funkce vytvoˇr´ı bridge s cˇ ´ıslem ud´avanym ´ v argumentu. Do tohoto bridge n´aslednˇe pˇriˇrad´ı odpov´ıdaj´ıc´ı TAP a VLAN rozhran´ı. N´aslednˇe pak tuto ud´alost zap´ısˇ e do log souboru. Pokud je napˇr´ıklad zavol´ana funkce s argumentem 3 a VLAN offset je nastaven napˇr´ıklad na 1000, vytvoˇr´ı se bridge br3, do nejˇz jsou pˇriˇrazeny rozhran´ı tap3 a eth0.1003.
28
Zruˇsen´ı bridge rozhran´ı Argumenty: cˇ ´ıslo bridge function bridge stop() { brctl delbr br$1 1>/dev/null 2>/dev/null logger −i −t $log nazev −p $log umisteni ”Zruˇsen´ı bridge: br$1” }
Vypis 8: Glob´an´ı funkce bridge stop ´ Tato funkce zruˇs´ı bridge s cˇ ´ıslem ud´avanym ´ v argumentu. N´aslednˇe pak tuto ud´alost zap´ısˇ e do log souboru.
3.2.4
´ ı nastaven´ı parametru˚ Centraln´
Glob´aln´ı parametry se nal´ezaj´ı v souboru kvm parametry.sh. Jedn´a se o m´ısto, kter´e slouˇz´ı k centr´aln´ımu nastaven´ı jednotlivych ´ parametru˚ virtualizace. Nastavit lze tyto n´asleduj´ıc´ı parametry: ı hodnota: 1) • stroj min – minim´aln´ı cˇ ´ıslo stroje (vychoz´ ´ • stroj max – maxim´aln´ı cˇ ´ıslo stroje, neboli maxim´aln´ı poˇcet stroju˚ (vychoz´ ı hodnota: ´ 30) ı hodnota: 32) • pamet min – minim´aln´ı velikost pamˇeti RAM v MB (vychoz´ ´ • pamet max – maxim´aln´ı velikost pamˇeti RAM v MB (vychoz´ ı hodnota: 128) ´ • rozhrani min – minim´aln´ı poˇcet s´ıt’ovych ı hodnota: 1) ´ rozhran´ı (vychoz´ ´ • rozhrani max – maxim´aln´ı poˇcet s´ıt’ovych ı hodnota: 3) ´ rozhran´ı (vychoz´ ´ ı hodnota: ../virtu• disk cesta – relativn´ı cesta k adres´arˇ i s obrazy disku˚ (vychoz´ ´ alni disky/) • jmeno prefix – prefix jm´ena stroje (vychoz´ ı hodnota: virtualni stroj ) ´ • port terminal offset – offset pro vypoˇ ı ´ cet lok´aln´ıho portu s termin´alem stroje (vychoz´ ´ hodnota: 50000) • port monitor offset – offset pro vypoˇ ı ´ cet lok´aln´ıho portu s monitorem stroje (vychoz´ ´ hodnota: 55000) • vlan offset – offset pro vypoˇ ı hodnota: 4000) ´ cet cˇ ´ısel VLAN (vychoz´ ´ • log nazev – n´azev pro z´aznam do log souboru (kvm virtualizace) • log umisteni – urˇcen´ı log souboru (vychoz´ ı hodnota: daemon.info) ´
29
ˇ en´ ˇ ı Spoust
3.3
Spouˇstˇen´ı jednotlivych virtu´aln´ıho stoju˚ zajiˇst’uje n´astroj Start. Jeho podrobnˇejˇs´ı popis ´ nalezneme v n´asleduj´ıc´ıch kapitol´ach. 3.3.1
´ Pˇr´ıkaz nastroje Start
Spuˇstˇen´ı n´astroje Start prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh start 1 64 debian.img 3 3.3.2
´ Parametry pˇr´ıkazu nastroje Start
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Start povinn´e. Jejich moˇzn´e hodnoty jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit jejich minim´aln´ı cˇ i maxim´aln´ı hodnoty apod. • Prvn´ı parametr – volany´ n´astroj, tedy Start • Druhy´ parametr – cˇ ´ıslo spouˇstˇen´eho stroje • Tˇret´ı parametr – velikost pamˇeti RAM stroje v MB ˇ • Ctvrt y´ parametr – obraz disku stroje • P´aty´ parametr – poˇcet s´ıt’ovych ´ rozhran´ı stroje 3.3.3
ˇ ´ Popis cinnosti skriptu nastroje Start
N´astroj Start se nal´ez´a ve skriptu kvm start.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadanych ´ parametru˚ zavol´an´ım pomocnych ´ skriptu˚ kvm kontrola parametru stroj.sh, kvm kontrola parametru pamet.sh, kvm kontrola parametru disk.sh a kvm kontrola parametru rozhrani.sh. Pokud dojde k zad´an´ı ˚ je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇeneplatnych ´ parametru, dou spr´avnych ´ hodnot. D´ale dojde v cyklu for k vytvoˇren´ı potˇrebn´eho poˇctu TAP rozhran´ı. To prob´ıh´a nejprve zavol´an´ım glob´aln´ı funkce pole cisel stroje, jeˇz n´am pˇriprav´ı vyˇ ´ se popsan´e pole cˇ ´ısel pro spouˇstˇeny´ stroj. Tato jednotliv´a cˇ ´ısla jsou pak n´aslednˇe postupnˇe pˇred´av´ana glob´aln´ı funkci tap start, jeˇz vytvoˇr´ı jednotliv´a TAP rozhran´ı. Poˇcet takto vytv´arˇ enych ´ rozhran´ı ˚ ehu˚ tohoto cyklu for v z´avislosti na zadan´em parametru pro je definov´an poˇctem prubˇ spouˇstˇen´ı nov´eho stroje. Pokud je vyˇzadov´ano napˇr´ıklad pouze jedin´e s´ıt’ov´e rozhran´ı, tak tento cyklus proˇ z bˇehne pouze jednou a vytvoˇr´ı jedin´e TAP rozhran´ı jehoˇz cˇ ´ıslo odpov´ıd´a prvn´ı bunce pole cˇ ´ısel pro spouˇstˇeny´ stroj. ˚ Stejnym je d´ale vytvoˇren potˇrebny´ poˇcet VLAN rozhran´ı a bridge. ´ zpusobem
30
˚ jenˇz budou pouˇzity pˇri fin´aln´ım N´aslednˇe dojde opˇet v cyklu for k pˇr´ıpravˇe parametru, vol´an´ı pˇr´ıkazu pro virtualizaˇcn´ı syst´em KVM. Dle poˇctu poˇzadovanych ´ s´ıt’ovych ´ rozhran´ı stroje a za pomoc´ı glob´aln´ıch funkc´ı pole cisel stroje a mac dojde k vytvoˇren´ı t´e cˇ a´ sti para˚ jeˇz definuje s´ıt’ov´a rozhran´ı virtu´aln´ıho stroje. metru, Pot´e dle vyˇ ´ se uveden´eho pˇr´ıkazu pro spuˇstˇen´ı n´astroje Start a vloˇzen´ı pˇredpˇripraven´e s´ıt’ov´e cˇ a´ sti parametru˚ dojde k sestaven´ı n´asleduj´ıc´ıho pˇr´ıkazu pro KVM: $ kvm \ -name virtualni stroj 1 \ -snapshot \ -hda ../virtualni disky/debian.img \ -m 64 \ -net nic,vlan=4001,macaddr=DE:AD:BE:EF:13:14 \ -net tap,vlan=4001,ifname=tap1,script=no \ -net nic,vlan=4002,macaddr=DE:AD:BE:EF:17:23 \ -net tap,vlan=4002,ifname=tap2,script=no \ -net nic,vlan=4003,macaddr=DE:AD:BE:EF:93:13 \ -net tap,vlan=4003,ifname=tap3,script=no \ -serial tcp::50001,server,nowait \ -monitor tcp::55001,server,nowait \ -boot c \ -localtime \ -nographic \ -daemonize Kady´ virtu´aln´ı stroj spouˇstˇeny´ pomoc´ı n´astroje Start je tedy konfigurov´an n´asledovnˇe: • je nastaveno jeho jm´eno dle cˇ ´ısla stroje, • je spuˇstˇen jako snapshot, • je nastaven obraz disku, • je nastavena velikost pamˇeti RAM, • jsou nastaveny jednotliv´e s´ıt’ov´e adapt´ery, • je pˇresmˇerov´an vystup s´eriov´eho portu s konzol´ı na lok´aln´ı port hostitele, ´ • je pˇresmˇerov´an Monitor na lok´aln´ı port hostitele, • je nastaveno zaˇr´ızen´ı pro boot, • jsou nastaveny hodiny na cˇ as hostitele, • je vypnut veˇskery´ graficky´ vystup ´ • a je spuˇstˇen jako d´emon.
31
Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru.
ˇ an´ ´ ı Ukoncov
3.4
Jednotliv´e cˇ i hromadn´e ukonˇcov´an´ı virtu´aln´ıch stoju˚ zajiˇst’uj´ı n´astroje Stop, HardStop, ˚ StopAll a HardStopAll. N´astroj Stop ukonˇcuje bˇeh virtu´aln´ıho stroje standardn´ım zpusobem skrze Monitor virtualizaˇcn´ıho syst´emu. Pro pˇr´ıpad nefunkˇcnosti tohoto korektn´ıho ˚ zpusobu je tu jeˇstˇe n´astroj HardStop, ktery´ virtu´aln´ı stroj ukonˇc´ı nestandardnˇe skrze operaˇcn´ı syst´em hostitele. Dalˇs´ı dva n´astroje StopAll a HardStopAll jsou jejich obdobou pro hromadn´e ukonˇcov´an´ı vˇsech stroju˚ nar´az. Jejich podrobnˇejˇs´ı popis nalezneme v n´asleduj´ıc´ıch kapitol´ach. N´astroje StopAll a HardStopAll maj´ı jeˇstˇe moˇznost zad´an´ı cˇ asov´eho limitu. V tomto ˚ jeˇz bˇezˇ ´ı d´ele, neˇz je zadany´ cˇ asovy´ limit. pˇr´ıpadˇe dojde k ukonˇcen´ı pouze tˇech stroju, ˚ jeˇz by v syst´emu mohly bˇezˇ et z jak´ehokoliv Tato moˇznost slouˇz´ı pro ukonˇcov´an´ı stroju, ˚ duvodu nepˇrimˇerˇ enˇe dlouho. 3.4.1
´ Pˇr´ıkaz nastroje Stop
Spuˇstˇen´ı n´astroje Stop prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh stop 1 3.4.2
´ Parametry pˇr´ıkazu nastroje Stop
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Stop povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy Stop • Druhy´ parametr – cˇ ´ıslo ukonˇcovan´eho stroje 3.4.3
ˇ ´ Popis cinnosti skriptu nastroje Stop
N´astroj Stop se nal´ez´a ve skriptu kvm stop.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru stroj.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. D´ale dojde pomoc´ı speci´aln´ıho pˇr´ıkazu quit pro Monitor k ukonˇcen´ı bˇehu virtu´aln´ıho stroje. Tento pˇr´ıkaz je zasl´an na lok´aln´ı port hostitele, na nˇemˇz naslouch´a Monitor dan´eho stroje.
32
echo quit | netcat 127.0.0.1 $port monitor 1>/dev/null 2>/dev/null
Vypis 9: Ukonˇcen´ı skrze n´astroj Stop ´ Zde se nab´ızel jeˇstˇe speci´aln´ı pˇr´ıkaz system powerdown. Rozd´ıl obou dvou pˇr´ıkazu˚ je v tom, zˇ e quit ukonˇcuje stroj okamˇzitˇe, dalo by se rˇ´ıci nekorektnˇe a system powerdown simuluje stitsknut´ı tlaˇc´ıtka nap´ajen´ı, kdy virtu´aln´ı stroj obdrˇz´ı ACPI zˇ a´ dost o vypnut´ı. Vzhledem k tomu, zˇ e spouˇstˇen´e virtu´aln´ı stroje pracuj´ı jako snapshoty, kdy je zbyteˇcn´e cˇ ekat na korektn´ı ukonˇcen´ı, byl vybr´an pˇr´ıkaz quit. Pot´e dojde pomoc´ı glob´aln´ıch funkc´ı bridge stop, vlan stop a tap stop ke zruˇsen´ı bridge, VLAN rozhran´ı a TAP rozhran´ı, jeˇz dany´ stroj vyuˇz´ıval. Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru. 3.4.4
´ Pˇr´ıkaz nastroje HardStop
Spuˇstˇen´ı n´astroje HardStop prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh hardstop 1 3.4.5
´ Parametry pˇr´ıkazu nastroje HardStop
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje HardStop povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy HardStop • Druhy´ parametr – cˇ ´ıslo ukonˇcovan´eho stroje 3.4.6
ˇ ´ Popis cinnosti skriptu nastroje HardStop
N´astroj HardStop se nal´ez´a ve skriptu kvm hardstop.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje Stop vyjma cˇ a´ sti rˇ eˇs´ıc´ı samotn´e ukonˇcov´an´ı virtu´aln´ıho stroje. Zde na rozd´ıl od n´astroje Stop vyuˇz´ıvaj´ıc´ı korektn´ı ukonˇcen´ı pomoc´ı Monitoru dojde k ukonˇcen´ı skrze operaˇcn´ı syst´em hostitele za pouˇzit´ı pˇr´ıkazu kill. Nejprve je z´ısk´an PID ukonˇcovan´eho virtu´aln´ıho stroje a ten je pot´e pomoc´ı pˇr´ıkazu kill ukonˇcen. pid=‘ps −AF | grep $jmeno prefix$stroj | grep −v ’pts ’ | awk ’{ print $2 }’‘ kill −9 $pid 1>/dev/null 2>/dev/null
Vypis 10: Ukonˇcen´ı skrze n´astroj HardStop ´
33
3.4.7
´ Pˇr´ıkaz nastroje StopAll
Spuˇstˇen´ı n´astroje StopAll prob´ıh´a skrze pˇr´ıkazy: # ./kvm.sh stopall nebo pˇr´ıpadnˇe # ./kvm.sh stopall 01:30:00 3.4.8
´ Parametry pˇr´ıkazu nastroje StopAll
Prvn´ı parametr je pˇri vol´an´ı n´astroje StopAll povinny, ´ druhy´ je volitelny. ´ • Prvn´ı parametr – volany´ n´astroj, tedy StopAll • Druhy´ parametr – cˇ asovy´ limit ve form´atu HH:MM:SS 3.4.9
ˇ ´ Popis cinnosti skriptu nastroje StopAll
N´astroj StopAll se nal´ez´a ve skriptu kvm stopall.sh. Nejprve dojde k rozhodnut´ı, kter´a cˇ a´ st skriptu se m´a prov´est, dle toho zda byl cˇ i nebyl zad´an druhy´ parametr cˇ asu. Pokud cˇ as zad´an byl, dojde na z´acˇ a´ tku ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru cas.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. N´aslednˇe je v cyklu for u vˇsech stroju˚ provˇerˇ ena podm´ınka, zda doba jejich bˇehu nepˇrekraˇcuje zadany´ limit. Pokud ano, je na dany´ stroj zavol´an n´astroj Stop pro jeho ukonˇcen´ı. Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru. Pokud cˇ as zad´an nebyl, dojde k obdobn´emu ukonˇcen´ı vˇsech stroju˚ bez dodateˇcn´e podm´ınky. Zruˇsen´ı vˇsech jimi vyuˇz´ıvanych ´ bridge, VLAN rozhran´ı a TAP rozhran´ı atd. Veˇsker´e ukonˇcov´an´ı cˇ innosti stroju˚ pomoc´ı tohoto skriptu prob´ıh´a korektnˇe skrze Monitor. 3.4.10
´ Pˇr´ıkaz nastroje HardStopAll
Spuˇstˇen´ı n´astroje HardStopAll prob´ıh´a skrze pˇr´ıkazy: # ./kvm.sh hardstopall nebo pˇr´ıpadnˇe # ./kvm.sh hardstopall 01:30:00
34
3.4.11
´ Parametry pˇr´ıkazu nastroje HardStopAll
Prvn´ı parametr je pˇri vol´an´ı n´astroje StopAll povinny´ a druhy´ je volitelny. ´ • Prvn´ı parametr – volany´ n´astroj, tedy HardStopAll • Druhy´ parametr – cˇ asovy´ limit ve form´atu HH:MM:SS 3.4.12
ˇ ´ Popis cinnosti skriptu nastroje HardStopAll
N´astroj HardStopAll se nal´ez´a ve skriptu kvm hardstopall.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje StopAll vyjma cˇ a´ st´ı rˇ eˇs´ıc´ı ˚ Rozd´ıl je zde opˇet stejny´ jako v pˇr´ıpadˇe Stop samotn´e ukonˇcov´an´ı virtu´aln´ıch stroju. a HardStop. Tedy k ukonˇcen´ı dojde nikoliv skrze Monitor, ale pˇr´ıkaz kill v operaˇcn´ım syst´emu hostitele.
´ ı Restartovan´
3.5
Jednotliv´e cˇ i hromadn´e restartov´an´ı virtu´aln´ıch stoju˚ zajiˇst’uj´ı n´astroje Reset, HardReset, ˚ ResetAll a HardResetAll. N´astroj Reset restartuje bˇeh virtu´aln´ıho stroje standardn´ım zpusobem skrze Monitor virtualizaˇcn´ıho syst´emu. Pro pˇr´ıpad nefunkˇcnosti tohoto korektn´ıho ˚ zpusobu je tu jeˇstˇe n´astroj HardReset, ktery´ virtu´aln´ı stroj restartuje nestandardnˇe skrze operaˇcn´ı syst´em hostitele. Dalˇs´ı dva n´astroje ResetAll a HardResetAll jsou jejich obdobou pro hromadn´e restartov´an´ı vˇsech stroju˚ nar´az. Jejich podrobnˇejˇs´ı popis nalezneme v n´asleduj´ıc´ıch kapitol´ach. 3.5.1
´ Pˇr´ıkaz nastroje Reset
Spuˇstˇen´ı n´astroje Reset prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh reset 1 3.5.2
´ Parametry pˇr´ıkazu nastroje Reset
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Reset povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy Reset • Druhy´ parametr – cˇ ´ıslo resetovan´eho stroje
35
3.5.3
ˇ ´ Popis cinnosti skriptu nastroje Reset
N´astroj Reset se nal´ez´a ve skriptu kvm reset.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru stroj.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. D´ale dojde pomoc´ı pˇr´ıkazu ps k uloˇzen´ı spouˇstˇec´ıho pˇr´ıkazu dan´eho stroje pro KVM do pomocn´e promˇenn´e. Tento stroj je pot´e zastaven pomoc´ı n´astroje Stop a n´asledne je opˇet nanovo spuˇstˇen ve stejn´e konfiguraci pomoc´ı pˇr´ıkazu, jenˇz byl uloˇzen v pomocn´e promˇenn´e. prikaz=‘ps −AF | grep qemu | grep $jmeno prefix$stroj | grep −v ’pts ’ | egrep −o ’qemu.∗’‘ $0 stop $stroj $prikaz
Vypis 11: Restartov´an´ı skrze n´astroj Reset ´ Zde se nab´ızela jeˇstˇe moˇznost pouˇzit´ı speci´aln´ıho pˇr´ıkazu system reset pro Monitor. V tomto pˇr´ıpadˇe ovˇsem nedojde ke smaz´an´ı star´eho a nahr´an´ı nov´eho snapshotu, ale ˚ pouze k restartov´an´ı virtu´aln´ıho stroje se snapshotem puvodn´ ım. Tato vlastnost rozhodla o pouˇzit´ı vyˇ ´ se popsan´eho rˇ eˇsen´ı. Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru. 3.5.4
´ Pˇr´ıkaz nastroje HardReset
Spuˇstˇen´ı n´astroje HardReset prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh hardreset 1 3.5.5
´ Parametry pˇr´ıkazu nastroje HardReset
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje HardReset povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy HardReset • Druhy´ parametr – cˇ ´ıslo resetovan´eho stroje 3.5.6
ˇ ´ Popis cinnosti skriptu nastroje HardReset
N´astroj HardReset se nal´ez´a ve skriptu kvm hardreset.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje Reset vyjma cˇ a´ sti rˇ eˇs´ıc´ı samotn´e restartov´an´ı virtu´aln´ıho stroje.
36
Zde na rozd´ıl od n´astroje Reset vyuˇz´ıvaj´ıc´ı korektn´ı ukonˇcen´ı pomoc´ı n´astroje Stop ˚ dojde k ukonˇcen´ı skrze n´astroj HardStop. Tud´ızˇ nedojde k ukonˇcen´ı puvodn´ ıho snapshotu pomoc´ı Monitoru, ale skrze pˇr´ıkaz operaˇcn´ıho syst´emu kill. prikaz=‘ps −AF | grep qemu | grep $jmeno prefix$stroj | grep −v ’pts ’ | egrep −o ’qemu.∗’‘ $0 hardstop $stroj $prikaz
Vypis 12: Restartov´an´ı skrze n´astroj HardReset ´
3.5.7
´ Pˇr´ıkaz nastroje ResetAll
Spuˇstˇen´ı n´astroje ResetAll prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh resetall 3.5.8
´ Parametry pˇr´ıkazu nastroje ResetAll
Prvn´ı a z´arovenˇ jediny´ parametr je pˇri vol´an´ı n´astroje ResetAll povinny. ´ • Prvn´ı parametr – volany´ n´astroj, tedy ResetAll 3.5.9
ˇ ´ Popis cinnosti skriptu nastroje ResetAll
N´astroj ResetAll se nal´ez´a ve skriptu kvm resetall.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje Reset. Tento skript ovˇsem ner˚ estartuje pouze jeden virtu´aln´ı stroj, ale v cyklu for dojde k restartov´an´ı vˇsch stroju. 3.5.10
´ Pˇr´ıkaz nastroje HardResetAll
Spuˇstˇen´ı n´astroje HardResetAll prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh hardresetall 3.5.11
´ Parametry pˇr´ıkazu nastroje HardResetAll
Prvn´ı a z´arovenˇ jediny´ parametr je pˇri vol´an´ı n´astroje HardResetAll povinny. ´ • Prvn´ı parametr – volany´ n´astroj, tedy HardResetAll 3.5.12
ˇ ´ Popis cinnosti skriptu nastroje HardResetAll
N´astroj HardResetAll se nal´ez´a ve skriptu kvm hardresetall.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje HardReset. Tento skript ovˇsem ˚ nerestartuje pouze jeden virtu´aln´ı stroj, ale v cyklu for dojde k restartov´an´ı vˇsech stroju.
37
3.6
Vypis ´ informac´ı
Vypis informac´ı o jednotlivych ´ ´ cˇ i vˇsech virtu´aln´ıch stoj´ıch zajiˇst’uj´ı n´astroje Show a ShowAll. N´astroj Show vypisuje informace o jednotlivych ´ virtu´aln´ıch stroj´ıch a n´astroj ShowAll je pak jeho obdobou pro vypis informac´ı o vˇsech stroj´ıch nar´az. Jejich podrobnˇejˇs´ı popis ´ nalezneme v n´asleduj´ıc´ıch kapitol´ach. 3.6.1
´ Pˇr´ıkaz nastroje Show
Spuˇstˇen´ı n´astroje Show prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh show 1 3.6.2
´ Parametry pˇr´ıkazu nastroje Show
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Show povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy Show • Druhy´ parametr – cˇ ´ıslo stroje pro vypis informac´ı ´ 3.6.3
ˇ ´ Popis cinnosti skriptu nastroje Show
N´astroj Show se nal´ez´a ve skriptu kvm show.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru stroj.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. D´ale dojde pomoc´ı pˇr´ıkazu ps k vypisu informac´ı o dan´em virtu´aln´ım stroji. ´ ps −AF | grep qemu | grep $jmeno prefix$stroj | grep −v ’pts ’ | grep −−color=always $jmeno prefix[0−9]∗
Vypis 13: Vypis informac´ı skrze n´astroj Show ´ ´ Zde se nab´ızela jeˇstˇe moˇznost pouˇzit´ı nˇekolika speci´aln´ıch pˇr´ıkazu˚ Monitoru. Tato moˇznost byla ovˇsem zam´ıtnuta vzhledem ke sv´e sloˇzitosti, jelikoˇz by obdobny´ vypis ´ vyˇzadoval pouˇzit´ı v´ıce pˇr´ıkazu˚ Monitoru a pouˇzit´ı ps je zcela dostateˇcn´e. Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru.
38
3.6.4
´ Pˇr´ıkaz nastroje ShowAll
Spuˇstˇen´ı n´astroje ShowAll prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh showall 3.6.5
´ Parametry pˇr´ıkazu nastroje ShowAll
Prvn´ı a z´arovenˇ jediny´ parametr je pˇri vol´an´ı n´astroje ShowAll povinny. ´ • Prvn´ı parametr – volany´ n´astroj, tedy ShowAll 3.6.6
ˇ ´ Popis cinnosti skriptu nastroje ShowAll
N´astroj ShowAll se nal´ez´a ve skriptu kvm showall.sh. ˇ Cinnost tohoto skriptu se shoduje se skriptem n´astroje Show. Tento skript ovˇsem nevypisuje informace pouze o jednom virtu´aln´ım stroj, ale v cyklu for dojde k vypisu ´ informac´ı o vˇsech stroj´ıch.
´ an´ ´ ı, nac´ ˇ ıtan´ ´ ı a mazan´ ´ ı Uklad
3.7
Ukl´ad´an´ı, naˇc´ıt´an´ı a maz´an´ı jednotlivych ´ virtu´aln´ıch stroju˚ zajiˇst’uj´ı n´astroje Save, Load a Delete. N´astroj Save ukl´ad´a snapshot virtu´aln´ıho stroje na server. Naˇc´ıt´an´ı takto uloˇzenych ´ ˇ snapshotu˚ umoˇznuje n´astroj Load. Maz´an´ı takto uloˇzenych ´ snapshotu˚ pak n´astroj Delete. Jejich podrobnˇejˇs´ı popis nalezneme v n´asleduj´ıc´ıch kapitol´ach. 3.7.1
´ Pˇr´ıkaz nastroje Save
Spuˇstˇen´ı n´astroje Save prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh save 1 jus011 3.7.2
´ Parametry pˇr´ıkazu nastroje Save
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Save povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy Save • Druhy´ parametr – cˇ ´ıslo stroje pro uloˇzen´ı snapshotu • Tˇret´ı parametr – n´azev ukl´adan´eho snapshotu
39
3.7.3
ˇ ´ Popis cinnosti skriptu nastroje Save
N´astroj Save se nal´ez´a ve skriptu kvm save.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru stroj.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. D´ale dojde pomoc´ı speci´aln´ıho pˇr´ıkazu savevm pro Monitor k uloˇzen´ı snapshotu virtua´ ln´ıho stroje. Tento pˇr´ıkaz je zasl´an na lok´aln´ı port hostitele, na nˇemˇz naslouch´a Monitor dan´eho stroje. echo savevm $snapshot nazev | netcat 127.0.0.1 $port monitor 1>/dev/null 2>/dev/null
Vypis 14: Uloˇzen´ı skrze n´astroj Save ´ Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru. 3.7.4
´ Pˇr´ıkaz nastroje Load
Spuˇstˇen´ı n´astroje Load prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh load 1 jus011 3.7.5
´ Parametry pˇr´ıkazu nastroje Load
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Load povinn´e. Moˇzn´e hodnoty druh´eho parametru jsou omezeny ve skriptu kvm parametry.sh, kde lze nastavit minim´aln´ı cˇ i maxim´aln´ı hodnotu. • Prvn´ı parametr – volany´ n´astroj, tedy Load • Druhy´ parametr – cˇ ´ıslo stroje pro naˇcten´ı snapshotu • Tˇret´ı parametr – n´azev naˇc´ıtan´eho snapshotu 3.7.6
ˇ ´ Popis cinnosti skriptu nastroje Load
N´astroj Load se nal´ez´a ve skriptu kvm load.sh. Na z´acˇ a´ tku tohoto skriptu dojde ke kontrole spr´avnosti zadan´eho parametru zavol´an´ım pomocn´eho skriptu kvm kontrola parametru stroj.sh. Pokud dojde k zad´an´ı neplatn´eho parametru, je cˇ innost skriptu ukonˇcena a je vyps´ana chybov´a hl´asˇ ka s n´apovˇedou spr´avn´e hodnoty. D´ale dojde pomoc´ı speci´aln´ıho pˇr´ıkazu loadvm pro Monitor k naˇcten´ı nov´eho snapshotu virtu´aln´ıho stroje. Tento pˇr´ıkaz je zasl´an na lok´aln´ı port hostitele, na nˇemˇz naslouch´a Monitor dan´eho stroje.
40
echo loadvm $snapshot nazev | netcat 127.0.0.1 $port monitor 1>/dev/null 2>/dev/null
Vypis 15: Naˇcten´ı skrze n´astroj Load ´ Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru. 3.7.7
´ Pˇr´ıkaz nastroje Delete
Spuˇstˇen´ı n´astroje Delete prob´ıh´a skrze pˇr´ıkaz: # ./kvm.sh delete jus011 3.7.8
´ Parametry pˇr´ıkazu nastroje Delete
Vˇsechny n´ızˇ e popsan´e parametry jsou pˇri vol´an´ı n´astroje Delete povinn´e. • Prvn´ı parametr – volany´ n´astroj, tedy Delete • Druhy´ parametr – n´azev mazan´eho snapshotu 3.7.9
ˇ ´ Popis cinnosti skriptu nastroje Delete
N´astroj Delete se nal´ez´a ve skriptu kvm delete.sh. Pomoc´ı pˇr´ıkazu operaˇcn´ıho syst´emu hostitele rm dojde ke smaz´an´ı snapshotu virtua´ ln´ıho stroje. rm $snapshot nazev 1>/dev/null 2>/dev/null
Vypis 16: Maz´an´ı skrze n´astroj Delete ´ Na z´avˇer dojde k vyps´an´ı informaˇcn´ı hl´asˇ ky o proveden´em pˇr´ıkazu a n´aslednˇe je pak tato ud´alost zaps´ana do log souboru.
3.8
Obraz disku
˚ zadan´ı byl vytvoˇren obraz disku debian.img nal´ezaj´ıc´ı se v Vzhledem k poˇzadavkum adres´arˇ i virtualni disky. Jeho maxim´aln´ı velikost byla stanovena na 2 GB. Tato velikost by mˇela byt ´ dostateˇcn´a ´ ´ co se kapacity disku tyk´ e neu´ a a z´arovenˇ slouˇz´ı jako bezpeˇcnostn´ı pojistka pro umysln´ mˇern´e zvˇetˇsen´ı velikosti snapshotu. Pˇri pˇr´ıpadn´em pˇreteˇcen´ı tohoto limitu dojde k vˇcas´ ern´emu zat´ızˇ en´ı cˇ i dokonce p´adu serveru. Za n´emu p´adu virtu´aln´ıho stroje, nikoliv neumˇ form´at obrazu disku byl zvolen qcow2, ktery´ tak dynamicky mˇen´ı velikost dle aktu´alnˇe zabran´eho m´ısta. Na tento obraz disku byl nainstalov´an operaˇcn´ı syst´em Debian GNU/Linux 5.0.4 ˚ Lenny a ostatn´ı poˇzadovany´ software z jeho repozit´arˇ u.
41
˚ zad´an´ı nebyl syst´em nijak speci´alnˇe upravov´an cˇ i konfigVzhledem k poˇzadavkum ˚ urov´an. Vyj´ımku tak tvoˇr´ı pouze pˇresmˇerov´an´ı konzole na s´eriovy´ port. Duvod tohoto nastaven´ı je pops´an v kapitole 4.1.2. ´ cet uˇzivatele root s heslem ´ cty. Uˇ V operaˇcn´ım syst´emu se nal´ezaj´ı dva uˇzivatelsk´e uˇ cisco a standardn´ı uˇzivatel cnap s heslem cisco.
ˇ en´ ˇ ı bez snapshotu Spust
3.9
ˇ Dalˇs´ım doplnkov ym ´ n´astrojem, ktery´ bylo vhodn´e implementovat, je skript pro spuˇstˇen´ı ´ obrazu disku bez reˇzimu snapshotu. Tento n´astroj tedy slouˇz´ı k upravˇ e origin´aln´ıho obrazu disku a nal´ez´a se ve skriptu spusteni bez snaspshotu.sh. ˚ Spuˇstˇen´ı tohoto n´astroje prob´ıh´a pomoc´ı pˇr´ıkazu: # ./spusteni bez snaspshotu.sh start debian.img nebo pˇr´ıpadnˇe # ./spusteni bez snaspshotu.sh stop ´ Prvn´ı parametr ud´av´a, zdali jde o spuˇstˇen´ı nebo uklid (napˇr´ıklad zruˇsen´ı TAP rozhran´ı) po spuˇstˇen´ı virtu´aln´ıho stroje. Pˇr´ıpadny´ druhy´ parametr pot´e urˇc´ı, ktery´ obraz disku chceme ve stroji pouˇz´ıt.
3.10
ˇ ırˇen´ı do budoucna Moˇznosti rozs´
Vyˇ ´ se navrˇzen´e nov´e rˇ eˇsen´ı ve sv´e souˇcasn´e podobˇe pˇredstavuje kompletn´ı n´astroj pro ovl´ad´an´ı virtu´aln´ıch stroju˚ v r´amci Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı a jej´ıch souˇcasnych ´ potˇreb. Nab´ız´ı se vˇsak i moˇznosti, jak toto rˇ eˇsen´ı v budoucnu rozˇs´ırˇ it a doplnit. Moment´alnˇe je k dispozici pouze jediny´ obraz disku. Nab´ız´ı se zde samozˇrejmˇe moˇz˚ Ty mohou obsahovat odliˇsn´e operaˇcn´ı syst´emy cˇ i pouze nost vytvoˇrit dalˇs´ı obrazy disku. ´ potˇrebn´e upravy cˇ i konfigurace obrazu st´avaj´ıc´ıcho. D´ıky strukturovan´emu a pˇrehledn´emu n´avrhu skriptu˚ se tak´e nab´ız´ı moˇznost snad´ n´eho pˇrid´an´ı novych tˇech st´avaj´ıc´ıch. Pˇrid´an´ı nov´eho n´astroje tak spoˇc´ıv´a pouze ´ cˇ i uprava v rozˇs´ırˇ en´ı centr´aln´ıho skriptu o dalˇs´ı pˇrep´ınaˇc case a jeho implementaci. Nab´ız´ı se napˇr´ıklad tvorba n´astroje pro vytv´arˇ en´ı obrazu˚ disku˚ dle zadanych ´ parametru˚ s n´aslednou instalac´ı operaˇcn´ıho syst´emu.
42
4
Implementace
V n´asleduj´ıc´ı kapitole bude rozebr´ana implementace nov´eho rˇ eˇsen´ı. Pops´any budou rˇ esˇ en´e probl´emy, fin´aln´ı nasazen´ı na server a nˇekter´e dalˇs´ı vˇeci tykaj´ ´ ıc´ı se implementace. Kompletn´ı implementaci pak nalezneme na serveru.
ˇ sen ˇ e´ problemy ´ Re
4.1
˚ ehu implementace nov´eho rˇ eˇsen´ı se postupnˇe objevilo nˇekolik probl´emu, ˚ jeˇz v´ıce V prubˇ cˇ i m´enˇe komplikovaly jeho vyvoj. N´asleduje popis nejz´avaˇznˇejˇs´ıch z nich. ´ 4.1.1
Dokumentace
Bˇehem vybˇ ´ eru nov´eho virtualizaˇcn´ıho syst´emu byl samozˇrejmˇe br´an zˇretel i na existenci webov´e dokumentace s dostateˇcnym ´ mnoˇzstv´ım uk´azek a informac´ı k rˇ eˇsenym ´ situac´ım pomoc´ı KVM a Qemu. Ta se zpoˇca´ tku jevila jako dostateˇcn´a. Bˇehem samotn´e implementace doprov´azen´e cˇ astymi potˇrebami z´ısk´an´ı informac´ı se ovˇsem uk´azalo, zˇ e jej´ı kvalita ´ nen´ı tak dobr´a, jak se zpoˇca´ tku zd´alo. Vˇetˇsinu uk´azkovych ´ konfigurac´ı a hlubˇs´ıch popisu˚ moˇznost´ı jsem ve fin´ale vˇetˇsinou nalezl skrze internetov´e vyhled´avaˇce vˇsude jinde, jen n´e na domovskych ´ webovych ´ str´ank´ach KVM a Qemu. Dobrym zdrojem byly tak´ e manu´ a lov´ e str´ a nky, kde ovˇ s em zpravidla ´ ´ ˚ nebyv´ ych ´ pˇr´ıkladu. ´ a uvedeno velk´e mnoˇzstv´ı ukazkov 4.1.2
ˇ ´ ı portu˚ Pˇresmerov an´
Z poˇzadavku˚ na nov´e rˇ eˇsen´ı vyplynula nutnost pˇripojen´ı konzole jednotlivych ´ virtu´aln´ıch stroju˚ na lok´aln´ı porty hostitele. To znamen´a, aby se uˇzivatel skrze lok´aln´ı port serveru pˇripojil na konzoli poˇzadovan´eho virtu´aln´ıho stroje, jak jiˇz bylo pops´ano vyˇ ´ se. Z prostudov´an´ı dokumentace a uk´azkovych ´ pˇr´ıkladu˚ na internetu vyplynulo, zˇ e pro pˇresmˇerov´an´ı portu˚ slouˇz´ı n´asleduj´ıc´ı parametr zad´avany´ pˇri spuˇstˇen´ı virtu´aln´ıho stroje: -redir tcp:2323::23 nebo v novˇejˇs´ıch verz´ıch Qemu jeho ekvivalent -net user,hostfwd=tcp:2323::23 Oba tyto parametry by mˇely propojit port 23 pro telenet virtu´aln´ıho stroje na lok´aln´ı port serveru 2323. Tento postup je uv´adˇen ve vˇetˇsinˇe nalezenych ´ uk´azkovych ´ pˇr´ıkladu˚ i v dokumentaci, ˚ ale ani po dukladn´ em nastudov´an´ı tˇechto zdroju˚ se jej nepodaˇrilo zprovoznit. Tentyˇ ´z ´ ˚ ovˇsem bez probl´em byl nalezen i v dotazech na nˇekolika forech od dalˇs´ıch uˇzivatelu, jedin´eho funkˇcn´ıho rˇ eˇsen´ı.
43
Vzhledem ke kl´ıcˇ ovosti t´eto funkce bylo potˇreba vymyslet jin´e n´ahradn´ı rˇ eˇsen´ı. T´ım se na konec stalo pˇresmˇerov´an´ı konzole virtu´aln´ıho stroje na jeho s´eriovy´ port. Tento port byl n´aslednˇe jiˇz bezprobl´emovˇe pˇresmˇerov´an na lok´aln´ı port hostitele. Pro pˇresmˇerov´an´ı konzole na s´eriovy´ port bylo potˇreba m´ırnˇe upravit konfiguraci operaˇcn´ıho syst´emu virtu´aln´ıho stroje. Nejprve byla v konfiguraˇcn´ım souboru /boot/grub/menu.lst zavadeˇce GNU GRUB pˇresmˇerov´ana konzole na s´eriovy´ port pomoc´ı parametru j´adra console=ttyS0,9600n8. Upraveny´ rˇ a´ dek pot´e vypad´a n´asledovnˇe: kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 console=ttyS0, 9600n8 ro quiet D´ale bylo nutn´e pˇridat getty pro login na s´eriov´em portu do konfiguraˇcn´ıho souboru /etc/inittab. Pˇridany´ rˇ a´ dˇek vypad´a n´asledovnˇe: co:2345:respawn:/sbin/getty -8 9600 ttyS0 linux Na z´avˇer je tˇreba zkontrolovat, pˇr´ıpadnˇe pˇridat, zda je v konfiguraˇcn´ım souboru /etc/secutetty povoleno pˇrihl´asˇ en´ı uˇzivatele root skrze s´eriovy´ port ttyS0. ´ Po t´eto drobn´e upravˇ e operaˇcn´ıho syst´emu virtu´aln´ıho stroje jiˇz bylo pouze potˇreba zajistit pˇresmˇerov´an´ı jeho s´eriov´eho portu na lok´aln´ı port serveru. To provedeme pˇrid´an´ım parametru do spouˇstˇec´ıho pˇr´ıkazu virtu´aln´ıho stroje. Potˇrebny´ parametr vypad´a n´asledovnˇe: -serial tcp::50001,server,nowait
4.1.3
Reˇzim s´ıt’ove´ komunikace
Nutnost pˇripojen´ı virtu´aln´ıch stroju˚ do samostatnych ´ VLAN, komunikuj´ıc´ıch s okoln´ımi moduly Virtu´aln´ı laboretoˇre poˇc´ıtaˇcovych ´ s´ıt´ı, plynouc´ı z poˇzadavku˚ zad´an´ı, zkomplikovala poˇca´ teˇcn´ı vyvoj nov´eho rˇ eˇsen´ı. ´ Ze s´ıt’ov´e cˇ a´ sti dokumentace virtualizaˇcn´ıho syst´emu Qemu se nab´ızela moˇznost pˇripo˚ Nejprve byl zvolen zpusob ˚ jen´ı s´ıt’ov´eho adapt´eru skrze VLAN pomoc´ı nˇekolika reˇzimu. pomoc´ı parametru: -net user Tento parametr, jev´ıc´ı se zpoˇca´ tku jako nejvhodnˇejˇs´ı, nastav´ı s´ıt’ovy´ adapt´er do takz´ se chov´a jako jedvan´eho user-mode reˇzimu. N´aslednˇe vˇsak bylo zjiˇstˇeno, zˇ e tento mod ˇ nosmˇerny´ firewall a neumoˇznuje zˇ a´ dny´ pˇr´ıchoz´ı provoz. Nepodporuje tak´e jin´e s´ıt’ov´e protokoly neˇzli TCP a UDP. Nevhodnym ´ se tak´e uk´azal parametr: -net socket
44
˚ Ani zde se vˇsak Komunikace s´ıt’ov´eho adapt´eru zde prob´ıh´a pomoc´ı TCP socketu. nepodaˇrilo dos´ahnout kyˇ Oba parametry, jev´ıc´ı se zpoˇca´ tku jako vhodn´e, ´ zen´eho vysledku. ´ ´ esˇ nych sice funguj´ı dle popisu v dokumentaci, ale ani u jednoho z nich se po mnoha neuspˇ ´ pokusech nepodaˇrilo zprovoznit pˇripojen´ı dle poˇzadavku˚ Virtu´aln´ı laboratoˇre poˇc´ıtacˇ ovych ´ s´ıt´ı. Poˇzadovan´eho vysledku bylo dosaˇzeno aˇz pouˇzit´ım parametru: ´ -net tap V tomto reˇzimu je virtu´aln´ı stroj pˇripojen k TAP rozhran´ı, kter´e bylo propojeno poˇ moc´ı bridge s VLAN rozhran´ım serveru. Toto rˇ eˇsen´ı jiˇz umoˇznovalo poˇzadovanou komunikaci mezi virtu´aln´ımi poˇc´ıtaˇci a okol´ım serveru dle zad´an´ı.
4.2
Nasazen´ı na server
Koneˇcn´a implementace byla nasazena na starˇs´ı z´aloˇzn´ı server Virtu´aln´ı laboratoˇre poˇc´ıtacˇ ovych ´ s´ıt´ı srva10nb.vsb.cz. Nejprve bylo ovˇerˇ eno, zda tento starˇs´ı server obsahuje procesor s podporou virtualizace. Tato technologie se vˇsak u procesoru tohoto z´aloˇzn´ıho serveru nenal´ez´a. Z tohoto ˚ duvodu byl nainstalov´an virtualizaˇcn´ı syst´em Qemu a jaderny´ modul kQemu pro jeho akceleraci. Jak jiˇz bylo vyˇ ´ se pops´ano, tak ten se oproti KVM liˇs´ı pouze v absenci podpory ze strany hardwaru. Jediny´ rozd´ıl je tak ve vykonu cel´eho virtualizaˇcn´ıho syst´emu. ´ ´ Uprava se tak dotkla pouze skriptu kvm start.sh, kde byl pˇreps´an spouˇstˇec´ı pˇr´ıkaz ˚ avaj´ı stejn´e. V pˇr´ıpadˇe nasazen´ı na virtu´aln´ıch stroju˚ z kvm na qemu. Jeho parametry zust´ ostry´ provozn´ı server, jenˇz obsahuje podporu virtualizace v procesoru staˇc´ı opˇet pouze zmˇenit tento pˇr´ıkaz zpˇet a nainstalovat KVM. D´ale byly do operaˇcn´ıho syst´emu serveru doinstalov´any bal´ıcˇ ky uml-utilities, vlan a bridge-utils, jeˇz jsou nutn´e pro chod nˇekterych ´ pˇr´ıkazu˚ ovl´adac´ıch skriptu˚ a nejsou jeho standardn´ı souˇca´ st´ı. Na z´avˇer byla na server do adres´arˇ e /virtualizace nahr´ana cel´a implementace nov´eho ˚ ezˇ n´e testy prob´ırˇ eˇsen´ı. To bylo n´aslednˇe kompletnˇe testov´ano. Vzhledem k tomu, zˇ e prubˇ ˚ nedoˇslo k negativn´ımu vysledku. haly bˇehem cel´eho vyvoje jednotlivych ´ ´ n´astroju, ´ Pˇred fin´aln´ım nasazen´ım na ostry´ provozn´ı server bude toto nov´e rˇ eˇsen´ı nad´ale na˚ jaky´ cˇ as testov´ano na z´aloˇzn´ım serveru. Duvodem je jednak pˇr´ıpadn´a vˇetˇs´ı jistota bezprobl´emovosti provozu dan´a delˇs´ım testov´an´ım a tak´e fakt, zˇ e moment´alnˇe st´ale prob´ıh´a letn´ı semestr a souˇcasn´e rˇ eˇsen´ı je nyn´ı aktivnˇe vyuˇz´ıv´ano. Pˇr´ıpadny´ pˇrechod za ostr´eho provozu je tak pˇr´ıliˇs velkym ´ rizikem, kter´e by mohlo zapˇr´ıcˇ init nefunkˇcnost cˇ a´ sti Virtua´ ln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı.
4.3
Pouˇzite´ programove´ vybaven´ı
N´asleduj´ıc´ı programov´e vybaven´ı pomohlo vytvoˇrit tuto diplomovu pr´aci. Vyvoj nov´eho rˇ eˇsen´ı: ´
45
• Operaˇcn´ı syst´em – Ubuntu GNU/Linux 9.10 Karmic Koala • Virtualizaˇcn´ı syst´em - KVM verze 84 z j´adra Linuxu 2.6.31-20 • Skriptovac´ı jazyk – bash 3.2.48 • Vyvojov´ e prostˇred´ı – gedit 2.28.0 ´ Sestaven´ı dokumentace: • Tvorba textu – gedit 2.28.0 • Tvorba diagramu˚ – dia 0.97 • Tvorba obr´azku˚ – gimp 2.6.7 • Makro pro sazbu – diploma 2.2 • Sazba – LATEX Sestaven´ı prezentace: • Tvorba prezentace – OpenOffice.org 3.2.0 (Impress)
4.4
´ ˇ Ukazka behu
N´asleduj´ıc´ı otisk obrazovky zobrazuje vypis n´astroje ShowAll se sedmi bˇezˇ ´ıc´ımi virtu´ a´ ln´ımi stroji. Otisk obrazovky je vidˇet na obr´azku 2.
46
Obr´azek 2: Otisk obrazovky
47
5
´ er ˇ Zav
Nutnym ´ pˇredpokladem pro realizaci t´eto pr´ace bylo prostudovat z´akladn´ı teorii virtualizace. Zejm´ena cˇ a´ st vztahuj´ıc´ı se k virtualizaci platformy. N´asledovalo sezn´amen´ı se souˇcasnˇe existuj´ıc´ımi virtualizaˇcn´ımi syst´emy a nejrozˇs´ırˇ enˇejˇs´ı z nich byly pˇredstaveny z hlediska jejich souˇcasn´e pozice na trhu. St´avaj´ıc´ı rˇ eˇsen´ı postaven´e na virtualizaˇcn´ım ˚ Virtu´aln´ı laboratoˇre poˇc´ıtasyst´emu Xen jiˇz nad´ale nevyhovuje aktu´aln´ım poˇzadavkum cˇ ovych s´ıt´ı. Problematick´e vlastnosti souˇcasn´eho syst´emu, jeˇz vedou k vyvoji nov´eho ´ ´ rˇ eˇsen´ı byly pot´e zhodnoceny. Ze souˇcasnych ´ poˇzadavku˚ Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych ´ s´ıt´ı byl n´aslednˇe vypra˚ cov´an n´avrh nov´eho rˇ eˇsen´ı serverov´e i aplikaˇcn´ı cˇ a´ sti a zpusob jejich ovl´ad´an´ı. Pro tento n´avrh nov´eho rˇ eˇsen´ı byla pot´e provedena analyza ´ nejvhodnˇejˇs´ıho virtualizaˇcn´ıho syst´emu. Spouˇcasn´e poˇzadavky ovˇsem jednoznaˇcnˇe neurˇcily nejvhodnˇejˇs´ıho kandid´ata. O v´ıtˇezi tak musela rozhodnout aˇz nepˇr´ım´a krit´eria vybˇ ´ eru. Zvolen byl virtualizaˇcn´ı syst´em ˚ KVM a tato volba byla n´aslednˇe podrobnˇeji zduvodnˇ ena. V´ıtˇezny´ virtualizaˇcn´ı n´astroj KVM byl pot´e struˇcnˇe pˇredstaven. Po analyze ´ nov´eho rˇ eˇsen´ı a vybˇ ´ eru vhodn´eho virtualizaˇcn´ıho syst´emu jiˇz n´asledoval n´avrh implmentace. Nejprve doˇslo na vybˇ ´ er vhodnho implementaˇcn´ıho prostˇred´ı a navr˚ Zvoleno bylo vytvoˇren´ı knihovny bash skriptu, ˚ zˇ en´ı celkov´e struktury ovl´adac´ıch n´astroju. jeˇz budou dle uˇzivatelskych poˇzadavku˚ formou zadanych parametru˚ ovl´adat virtual´ ´ izaˇcn´ı a operaˇcn´ı syst´em. Pot´e byl proveden detailn´ı n´avrh skriptu˚ jednotlivych ´ n´astroju˚ pro spuˇstˇen´ı, ukonˇcen´ı, restart, vypis informac´ı o bˇezˇ ´ıc´ıch stroj´ıch, ukl´ad´an´ı, naˇc´ıt´an´ı a ´ ˚ Dalˇs´ım krokem bylo navrˇzen´ı obrazu disku virtu´aln´ıho stroje, maz´an´ı virtu´aln´ıch stroju. dle poˇzadavku˚ zad´an´ı. Zhodnoceny byly tak´e moˇznosti rozˇs´ırˇ en´ı tohoto navrhovan´eho rˇ eˇsen´ı do budoucna jako pˇrid´an´ı dalˇs´ıch odliˇsnych ´ cˇ i modifikovanych ´ obrazu˚ disku pro virtu´aln´ı stroje cˇ i doplnˇen´ı sady n´astroju˚ pro jejich ovl´ad´an´ı. Takto vytvoˇreny´ n´avrh nov´eho rˇ eˇsen´ı byl n´aslednˇe implementov´an ve zvolen´em pro˚ Nejvyznamˇ stˇred´ı. Bˇehem vyvoje se postupnˇe objevilo nˇekolik probl´emu. enjˇs´ım z nich ´ ´ ˚ jeˇz bylo jedn´ım z kl´ıcˇ ovych bylo nefunkˇcn´ı pˇresmˇerov´an´ı portu, ´ poˇzadavku˚ zad´an´ı. Hled´an´ı funkˇcn´ıho rˇ eˇsen´ı tohoto probl´emu zabralo pomˇernˇe dlouhou dobu. Pr´aci tak´e cˇ asto komplikovala sˇ patn´a pouˇzitelnost dokumentace virtualizaˇcn´ıho syst´emu a celkov´a nepˇreˇ sen´e probl´emy jsou podrobnˇe shrnuty v hlednost jeho ofici´aln´ıch webovych ´ str´anek. Reˇ ´ esˇ nˇe testov´ano. samostatn´e kapitole. Cel´e nov´e rˇ eˇsen´ı bylo nasazeno na server a uspˇ ˇ ´ Vyvoj tohoto nov´eho reˇsen´ı pro Virtu´aln´ı laboratoˇr poˇcıtaˇcovych ´ ´ s´ıt´ı spoˇc´ıval vyzna´ mnou cˇ a´ st´ı tak´e v hled´an´ı potˇrebnych ´ informac´ı na internetu. Nejprve pˇri poˇca´ teˇcn´ım z´ısk´av´an´ı informac´ı o virtualizaˇcn´ıch syst´emech a d´ale pak pˇri cˇ ast´em proch´azen´ı dokumentac´ı a rˇ eˇsen´ı probl´emu˚ a komplikac´ı vyvst´avaj´ıc´ıch bˇehem vyvoje. ´ ˇ Koneˇcn´a implementace splnuje jednotliv´e poˇzadavky zad´an´ı a jej´ı vhodny´ n´avrh umoˇzˇ ˚ nuje snadnou rozˇsiˇritelnost cˇ i pˇrizpusoben´ ı konkr´etn´ım podm´ınk´am do budoucna. Z´avˇerem bych chtˇel rˇ´ıci, zˇ e cel´a tato pr´ace mi rozˇs´ırˇ ila znalosti a dovednosti v oblasti virtualizace a operaˇcn´ıch syst´emu platformy Linux. Tˇesˇ´ı mˇe, zˇ e jsem se mohl zapojit do projektu Virtu´aln´ı laboratoˇre poˇc´ıtaˇcovych s´ıt´ı, a vˇerˇ´ım, zˇ e mnou rˇ eˇsen´a cˇ a´ st bude ´ ´ esˇ nˇe slouˇzit jej´ımu dalˇs´ımu rozvoji. uspˇ
48
6
Reference
[1] Danielle Ruest, Nelson Ruest, Virtualizace, Podrobn´y pruvodce, ˚ Computer Press, a. s., Brno, 2010. [2] Amit Singh, An Introduction to Virtualization, 2004, dostupn´e na url adrese: http://www.kernelthread.com/publications/virtualization/. [3] WMvare, Inc., Understanding Full Virtualization, Paravirtualization, and Hardware Assist, WMvare, Inc., Palo Alto, USA, 2007. [4] Robert Warnke, Thomas Ritzau, qemu-kvm & libvirt, Books on Demand GmbH, Norderstedt, Germany, 2010. [5] KVM – ofici´aln´ı webov´e str´anky virtualizaˇcn´ıho syst´emu KVM, dostupn´e na url adrese: http://www.linux-kvm.org/. [6] Qemu – ofici´aln´ı webov´e str´anky virtualizaˇcn´ıho syst´emu Qemu, dostupn´e na url adrese: http://www.qemu.org/. [7] Debian GNU/Linux – ofici´aln´ı webov´e str´anky operaˇcn´ıho syst´emu Debian GNU/Linux, dostupn´e na url adrese: http://www.debian.org/. [8] libvirt – ofici´aln´ı webov´e str´anky virtualizaˇcn´ıho API libvirt, dostupn´e na url adrese: http://www.libvirt.org/.
49
A
´ ıch stroju˚ Tabulka virtualn´
´ Tato tabulka odpov´ıd´a vychoz´ ımu nastaven´ı. V pˇr´ıpadˇe upravy parametru˚ virtualizace ´ tak jiˇz nemus´ı odpov´ıdat skuteˇcnosti. ˇ ıslo C´ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
N´azev virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni virtualni
stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj stroj
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Port s termin´alem 50001 50002 50003 50004 50005 50006 50007 50008 50009 50010 50011 50012 50013 50014 50015 50016 50017 50018 50019 50020 50021 50022 50023 50024 50025 50026 50027 50028 50029 50030
Port s Monitorem 55001 55002 55003 55004 55005 55006 55007 55008 55009 55010 55011 55012 55013 55014 55015 55016 55017 55018 55019 55020 55021 55022 55023 55024 55025 55026 55027 55028 55029 55030