Sem vložte zadání Vaší práce.
České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů
Bakalářská práce
Komplexní Hyper-V virtualizační prostředí pro vyvojářské/testovací/akademické použití: realizace Ondřej Kadečka
Vedoucí práce: Ing. Miroslav Prágl, MBA
22. května 2014
Poděkování Tímto bych rád poděkoval kolegovi Janu Beranovi za spolupráci na zajímavém projektu, vedoucímu práce Ing. Miroslavu Práglovi, MBA za cenné rady a připomínky. Dále děkuji rodičům a všem ostatním za podporu při studiu.
Prohlášení Prohlašuji, že jsem předloženou práci vypracoval(a) samostatně a že jsem uvedl(a) veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů. V souladu s ust. § 46 odst. 6 tohoto zákona tímto uděluji nevýhradní oprávnění (licenci) k užití této mojí práce, a to včetně všech počítačových programů, jež jsou její součástí či přílohou, a veškeré jejich dokumentace (dále souhrnně jen „Dílo“), a to všem osobám, které si přejí Dílo užít. Tyto osoby jsou oprávněny Dílo užít jakýmkoli způsobem, který nesnižuje hodnotu Díla, a za jakýmkoli účelem (včetně užití k výdělečným účelům). Toto oprávnění je časově, teritoriálně i množstevně neomezené. Každá osoba, která využije výše uvedenou licenci, se však zavazuje udělit ke každému dílu, které vznikne (byť jen zčásti) na základě Díla, úpravou Díla, spojením Díla s jiným dílem, zařazením Díla do díla souborného či zpracováním Díla (včetně překladu), licenci alespoň ve výše uvedeném rozsahu a zároveň zpřístupnit zdrojový kód takového díla alespoň srovnatelným způsobem a ve srovnatelném rozsahu, jako je zpřístupněn zdrojový kód Díla.
V Praze dne 22. května 2014
.....................
České vysoké učení technické v Praze Fakulta informačních technologií c 2014 Ondřej Kadečka. Všechna práva vyhrazena.
Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora.
Odkaz na tuto práci Kadečka, Ondřej. Komplexní Hyper-V virtualizační prostředí pro vyvojářské/testovací/akademické použití: realizace. Bakalářská práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2014.
Abstrakt Bakalářské práce si klade za úkol implementovat prototyp serverového backendu virtualizačního prostředí na platformě Microsoft Hyper-V přičemž vychází z již provedené podrobné analýzy a návrhu. Součástí práce je podrobný popis zvolených nástrojů, návrh a popis implementace prototypu. V závěrečné části je pak prototyp otestován a vyhodnocen výsledek testů. Klíčová slova virtualizace, virtualizační prostředí, Hyper-V, Windows Server, PowerShell
Abstract Thesis aims to implement prototype of server back-and for virtualization environment based on Microsoft Hyper-V. The prototype design is based on detailed analysis and design which was already completed. The thesis contains detailed description of selected tools, prototype design and implementation description. The final part is devoted to prototype testing and evaluation of test results. Keywords virtualization, virtual environment, Hyper-V, Windows Server, PowerShell ix
Obsah Úvod Cíl práce
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1
1 Teorie virtualizace 1.1 Hypervisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Virtualizační prostředí . . . . . . . . . . . . . . . . . . . . . . . 1.3 Přehled virtualizačních platforem . . . . . . . . . . . . . . . . .
3 3 5 6
2 Zvolené nástroje 2.1 Microsoft Windows Server 2.2 Microsoft Hyper-V . . . . 2.3 Windows PowerShell . . . 2.4 Souhrn . . . . . . . . . . .
2012 . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
9 9 13 15 17
3 Návrh 19 3.1 Základní uplatnění systému . . . . . . . . . . . . . . . . . . . . 19 3.2 Specifikace požadavků . . . . . . . . . . . . . . . . . . . . . . . 20 3.3 Softwarová architektura . . . . . . . . . . . . . . . . . . . . . . 23 4 Implementace 4.1 Konfigurace Windows Server 2012 . . . . . . . . . 4.2 Konfigurace hypervisoru Hyper-V . . . . . . . . . . 4.3 Konfigurace virtuální infrastruktury . . . . . . . . 4.4 Konfigurace databázového stroje SQL Server 2012 4.5 Tvorba Powershell modulů . . . . . . . . . . . . . . 4.6 Instalace modulů . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
33 33 37 40 42 46 49
5 Testování 51 5.1 Vytvoření VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2 Smíšená sada úloh . . . . . . . . . . . . . . . . . . . . . . . . . 54 xi
5.3 5.4
Podpora OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shrnutí výsledků testování . . . . . . . . . . . . . . . . . . . . .
54 55
Závěr 57 Budoucnost projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Osobní přínos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Literatura
59
A Seznam použitých zkratek
61
B Obsah přiloženého CD
63
xii
Seznam obrázků 1.1 1.2 1.3 1.4 1.5
Paravirtualizace . . . Plná virtualizace . . . Hardwarově asistovaná Bare metal hypervisor Hostovaný hypervisor
. . . . . . . . . . . . . . virtualizace . . . . . . . . . . . . . .
. . . . .
4 4 5 6 7
3.1 3.2 3.3
Softwarová architektura (zdroj [1]) . . . . . . . . . . . . . . . . . . Softwarová architektura prototypu . . . . . . . . . . . . . . . . . . Datový model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24 24 26
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9
Add Roles and Features . . . . . . . . . . Server Manager – nainstalované role . . . Hyper-V Manager . . . . . . . . . . . . . Hyper-V Settings . . . . . . . . . . . . . . Nastavení síťových adaptérů . . . . . . . . Diagram přehled virtuální infrastruktury . SQL Server Properties . . . . . . . . . . . Relační model databáze . . . . . . . . . . Vytvoření VM . . . . . . . . . . . . . . . .
35 36 37 39 40 43 44 45 48
xiii
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . .
. . . . . . . . .
. . . . . . . . .
Seznam tabulek 1.1
Přehled virtualizačních platforem . . . . . . . . . . . . . . . . . . .
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10
Zvolené nástroje . . . . . . . . . . . . . . . . . . . . . Minimální požadavky Windows Server 2012 . . . . . . Rozšiřitelnost Windows Server 2012 . . . . . . . . . . Rozšiřitelnost Windows Server 2008 R2 . . . . . . . . Hardwarová omezení edic Windows Server 2012 . . . . Příklad licencování Windows Server 2012 . . . . . . . Příklad licencování virtualizace Windows Server 2012 . Hardwarové limity virtuálních strojů v Hyper-V . . . . Bezpečnostní funkce Hyper-V . . . . . . . . . . . . . . Hyper-V přehled nástrojů pro správu . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
9 10 10 11 12 12 13 14 15 15
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10
Open-SQLConnection . . . . . . . . . . . Close-SqlConnection . . . . . . . . . . . . New-SqlAdapter . . . . . . . . . . . . . . Get-Tasks . . . . . . . . . . . . . . . . . . Get-VMInfo . . . . . . . . . . . . . . . . . Invoke-Task . . . . . . . . . . . . . . . . . Podporované akce . . . . . . . . . . . . . Podporované stavy . . . . . . . . . . . . . Parametry funkcí modulu VM_functions Návratové kódy (zdroj [1]) . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
27 28 28 29 29 29 30 30 31 32
4.1
Minimální požadavky SQL Server 2012 Express . . . . . . . . . . .
43
5.1 5.2
Hardwarová konfigurace testovacího stroje . . . . . . . . . . . . . . Podpora OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51 55
xv
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
7
Úvod Virtualizace pracovních stanic je mnohými odborníky považována za budoucnost IT, hlavně ve firemním prostředí. Umožňuje efektivnější využití výkonu serverů a šetří tak náklady na elektřinu. Také minimalizuje dobu a práci potřebnou pro nasazení nového pracovního stroje. Využití těchto možností v akademickém prostředí se mi zdá jako zajímavá možnost jak zefektivnit využití informačních technologií ve výuce. Velký přínos vidím hlavně při výuce předmětů oboru informačních technologií, např. administrace operačních systémů. V současné době je na trhu dostupná široká škála virtualizačních platforem. Vedoucí firmou v tomto segmentu je VMware s virtualizační platformou vSphere. Následuje ho Microsoft Hyper-V a Citrix XenServer. Mezi nekomerční open source řešení patří například OpenVZ. Všechny platformy nabízejí srovnatelné základní možnosti, ovšem podstatně se liší pokročilejšími možnostmi správy a nastavení. Rozdílná je také licenční politika výrobců a tudíž finální cena řešení. Tato práce se bude věnovat možnosti využití Microsoft Hyper-V pro vytvoření prostředí podporující výuku IT předmětů, vývoj a testování softwaru.
Cíl práce Cílem bakalářské práce je navrhnout a implementovat serverový bac-kend virtualizačního prostředí na platformě Microsoft Hyper-V. Práce je součástí projektu, jehož cílem je návrh a implementace komplexního virtualizačního řešení na míru pro akademickou a vývojářskou sféru. Úkolem této práce je realizovat SW, který bude spravovat virtuální stroje a poskytovat je uživatelskému rozhraní.
1
Kapitola
Teorie virtualizace Principy virtualizace jsou známé již několik desetiletí a využívány v mnoha podobách. V odvětví informačních technologií se virtualizací většinou rozumí vytvoření virtuální podoby fyzického rozhraní či komponenty. Virtualizace umožňuje sdílení hardwarových prostředků (např. servery, síťové prostředky, úložiště) a vytvoření transparentního prostředí pro software (např. drivery v operačním systému) [2]. Historicky byla virtualizace využívána převážně v počítačích typu mainframe firmy IBM, která tento koncept představila a realizovala v 60. letech 20. století. Společně s přechodem na počítače převážně architektury x86 během 80. a 90. let byla virtualizace odsunuta na okraj zájmu většiny. To změnila firma VMware, která v roce 1999 představila první řešení virtualizace na x86 architektuře a započala tak novou éru virtualizace [3]. Podle studie provedené během roku 2012 je více než polovina všech serverů virtualizovaných a předpokládá se, že procento bude nadále růst [4]. Tato práce se bude zabývat převážně virtualizací serverů a pracovních stanic. Díky této virtualizaci je možné na jednom hostitelském (fyzickém) stroji provozovat větší množství strojů virtuálních, které jsou zcela oddělené a vzájemně se neovlivňují. Tento postup umožňuje na jednom serveru bezpečněji provozovat více služeb a také účinněji rozdělit výkon hostitelského stroje.
1.1
Hypervisor
Hypervisor je základním softwarovým prvkem umožňujícím virtualizaci. Hlavním účelem hypervisoru je zprostředkovávat komunikaci virtuálních strojů s hardwarem stroje hostitelského. Komunikace s hardwarem může probíhat několika způsoby, podle kterých je možné různé hypervisory rozdělit podle technik virtualizace, které využívají [5]. • Paravirtualizace – Hypervisor poskytuje hostovanému systému komuni3
1
1. Teorie virtualizace Obrázek 1.1: Paravirtualizace
Obrázek 1.2: Plná virtualizace
kační rozhraní pro přístup k fyzickému hardwaru. Výhodou je vysoký výkon tohoto řešení. Nevýhodou pak nutná úprava hostovaného operačního systému. • Plná virtualizace – Hypervisor zcela simuluje hardware hostitelského stroje. Hypervisor využívá binárního překladu instrukcí z hostovaného sytému na instrukce proveditelné na hostitelském hardware. Hostovaný systém nemusí být pro běh ve virtualizovaném prostředí nijak modifikován a není si vědom své vlastní virtualizace. • Hardwarově asistovaná virtualizace – Hardware odchytává požadavky 4
1.2. Virtualizační prostředí Obrázek 1.3: Hardwarově asistovaná virtualizace
virtuálních strojů a předává je zpět hypervisoru pro plánování. Podmínkou pro tento typ virtualizace je podpora v hardwaru hostitelského stroje (Intel VT-x, AMD-V). Podle způsobu, jakým je hypervisor na fyzickém hardwaru spouštěn, je možné definovat dva typy hypervisorů [6]. • Typ 1 (nativní, bare metal) – Běží přímo na hardwaru hostujícího stroje a poskytuje prostředky strojům virtuálním. Jedná se o dnes nejběžněji používaný typ v serverové virtualizaci. Zástupci tohoto typu jsou např. VMware vSphere Hypervisor, Citrix XenServer nebo Microsoft Hyper-V. • Typ 2 (hostovaný) – Běží v běžném operačním systému, jenž hypervisoru poskytuje prostředky, které je pak možné dále rozdělit strojům virtuálním. Typickými zástupci této kategorie jsou VMware Workstation, Virtualbox a Microsoft Virtual PC.
1.2
Virtualizační prostředí
Pojem virtualizační prostředí definovala analytická bakalářská práce mého kolegy jako softwarovou infrastrukturu, která zajištuje provoz virtuálních strojů, jejich správu a monitoring [1]. Podle této definice pojem virtualizační prostředí zahrnuje komplexní infrastrukturu skládající se z více aplikací a nástrojů podporujících provoz virtuálních strojů. Konkrétní podoba virtualizačního prostředí je odlišná pro každé virtualizační řešení. Výrobci zpravidla nabízejí možnost do jisté míry ovlivnit 5
1. Teorie virtualizace Obrázek 1.4: Bare metal hypervisor
výběr nástrojů pro konkrétní nasazení a přizpůsobit tak virtualizační prostředí individuálním požadavkům klienta.
1.3
Přehled virtualizačních platforem
Podle rešerše provedené analytickým týmem jsou nejpoužívanějšími virtualizačními systémy produkty od firem VMware, Microsoft a Citrix. Pro porovnání byla vybrána nejpoužívanější virtualizační prostředí z dílen těchto firem – VMware vSphere, Microsoft Hyper-V a Citrix XenServer [1]. Z rešerše analytického týmu vyplývá, že parametry virtualizačních prostředí jsou do jisté míry podobné, ovšem výrazně se liší licenční politika a s ní související omezení verzí, které jsou dostupné zdarma. Tabulka 1.1 obsahuje stručný přehled možností všech tří systémů. Z podrobného porovnání těchto tří systémů vychází Microsoft Hyper-V jako vhodný kandidát na použitý virtualizační systém. Hypervisor je dostupný zdarma nebo jako součást Windows Server a podporuje všechny pokročilé funkce stejně jako přímo placené produkty konkurence. Microsoft Hyper-V také obsahuje stále rozvíjené moduly pro správu v jazyce PowerShell, které poskytují robustní základ pro vývoj samostatného správcovského systému na míru. 6
1.3. Přehled virtualizačních platforem
Obrázek 1.5: Hostovaný hypervisor
Tabulka 1.1: Přehled virtualizačních platforem Live Snapshot Pokročilá práce s pamětí ablony pro VM Live migration Vysoká dostupnost Nástroje pro správu zdarma Programové API pro správu
VMware vSphere Ano Ano mem. ballooning, transparent page sharing Ano (pouze v placené verzi) Ano (pouze v placené verzi) Ano (pouze v placené verzi) Ano - vSphere Client Ano - vSphere API - WSDL podpora C#, Java (omezení ve volně dostupné verzi)
Microsoft Hyper-V 2012 Ano
Ano Ano Ano Hyper-V Manager
Citrix XenServer Ano (pouze v placené verzi) Ano (dynamic memory pouze v placené verzi) Ano Ano Ano (pouze v placené verzi) XenCenter
Ano - VMI provider, PowerShell module
Ano - C#, Java, C/C++, Powershell, Python
Ano - dynamic memory
7
Kapitola
Zvolené nástroje Plánované virtualizační prostředí je nadstavbou nad hypervisor Hyper-V společnosti Microsoft. Z důvodu velmi dobré kompatibility a provázanosti byly i další služby a nástroje vybrány z dílen této společnosti. Základem se stane operační systém Microsoft Windows Server 2012 viz 2.1, jehož součástí je hypervisor Hyper-V V3. Podrobný popis Hyper-V V3 v sekci 2.2. Nejnovější operační systém z rodiny Windows Server byl upřednostněn před bezplatnou verzí hypervisoru Hyper-V Server 2012, protože poskytuje základ i pro další potřebné služby. Na Windows Server 2012 bude provozována adresářová služba Active Directory, webový a aplikační server Internet Information Services (IIS) verze 8.0 a databázový server Microsoft SQL Server 2012. Pro implementaci funkcí ovládajících server bude použit skriptovací jazyk Windows PowerShell verze 3.0. Tabulka 2.1 shrnuje konkrétní zvolené nástroje. Tabulka 2.1: Zvolené nástroje Operační systém Hypervisor Databázový server Adresářové služby Webový server Skriptovací jazyk
2.1
Windows Server 2012 Hyper V3 SQL Server 2012 Express Active Directory IIS PowerShell 3
Microsoft Windows Server 2012
Windows Server 2012 je nejnovějším operačním systémem firmy Microsoft určeným pro servery. Jedná se o serverovou verzi Windows vyvíjenou společně s Windows 8, se kterými sdílí stejné jádro Windows NT verze 6.2. Windows Server 2012 byly uvedeny na trh 4. listopadu 2012. 9
2
2. Zvolené nástroje
2.1.1
Systémové požadavky
Minimální systémové požadavky jsou uvedeny v tabulce 2.2. Operační systém je dodáván pouze ve verzi pro 64bitové procesory. Pokud počítač nesplní tyto minimální požadavky, instalace operačního systému neproběhne [7]. Tabulka 2.2: Minimální požadavky Windows Server 2012 Procesor RAM Prostor na pevném disku Rozlišení monitoru
2.1.2
64bitový s frekvencí 1,4 GHz a vyšší 512 MB 32 GB Super VGA (800 x 600)
Rozšiřitelnost
Operační systém Windows Server 2012 poskytuje dostatečnou flexibilitu a škálovatelnost pro nasazení v nenáročných situacích až po budování velkého privátního cloudu. Windows Server 2012 je nejlépe škálovatelný operační systém společnosti Microsoft. Oproti předchůdci Windows Server 2008 R2 byla navýšena maximální podporovaná konfigurace . Podrobný rozbor maximální možného počtu procesových patic1 a logických procesorů2 je možné pozorovat v tabulkách Windows Server 2012 2.3 a Windows Server 2008 R2 2.4. Tabulka 2.3: Rozšiřitelnost Windows Server 2012 Hyper-V enabled Windows Server 2008 Windows Server 2008 Windows Server 2008 Hyper-V disabled Windows Server 2008 Windows Server 2008 Windows Server 2008
Procesorových patic
Logických procesorů
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
64 64 64
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
256 256 256
V tabulkách 2.42.3 je vidět velké zlepšení škálovatelnosti hlavně v edici Standard. U všech edic byl také razantně zvýšen maximální počet logických procesorů, aby operační systém lépe odpovídal dnešnímu trendu zvyšování počtu procesorových jader v jednom procesoru. Oproti staršímu systému Windows Server 2008 R2 byl také výrazně navýšen limit operační paměti pro nejvyšší edice (Datacenter) z 2 TB na nynější 4 TB [8][9]. 1
Procesorová patice – Fyzická patice, do které se vkládá procesor. Vlákno v systému, může jít o fyzické jádro, nebo o emulované vlákno technologií symetrického mulithreadingu (SMT) (např. Intel Hyper-Threading). 2
10
2.1. Microsoft Windows Server 2012 Tabulka 2.4: Rozšiřitelnost Windows Server 2008 R2 Hyper-V enabled Windows Server 2008 Windows Server 2008 Windows Server 2008 Hyper-V disabled Windows Server 2008 Windows Server 2008 Windows Server 2008
2.1.3
Procesorových patic
Logických procesorů
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
64 64 64
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
256 256 256
Edice
Nabídka edic operačního systému byla zjednodušena a nyní Microsoft nabízí 4 edice: • Windows Server 2012 Foundation • Windows Server 2012 Essentials • Windows Server 2012 Standard • Windows Server 2012 Datacenter Nejnižší edice Foundation a Essentials jsou určeny převážně pro malé firmy s malým počtem zařízení. Poskytují základní služby pro provoz firemní infrastruktury, ale jejich výkon a možnosti rozšíření jsou omezené [10]. • Windows Server 2012 Foundation poskytuje možnosti Windows Severu v malém prostředí s maximálně 15 uživateli. • Windows Server 2012 Essentials je určený pro malé firmy s maximálně 25 uživateli, kteří používají maximálně 50 zařízení. Edice Standard a Datacenter jsou plnohodnotné serverové systémy. Kromě základních služeb poskytují i virtualizační platformu Hyper-V pro nasazení v náročných podmínkách [10]. • Windows Server 2012 Standard výkonná serverová platforma pro lehce virtualizovaná prostředí. Edice se liší také v maximální podporované hardwarové konfiguraci. Nižší edice Foundation a Essentials jsou omezeny jedním fyzickým procesorem a menším množstvím paměti. Vyšší edice Standard a Datacenter se ve verzi 2012 již po stránce hardwarových omezení příliš neliší viz Tabulka 2.5. 11
2. Zvolené nástroje Tabulka 2.5: Hardwarová omezení edic Windows Server 2012 Hyper-V enabled Windows Server 2008 Windows Server 2008 Windows Server 2008 Hyper-V disabled Windows Server 2008 Windows Server 2008 Windows Server 2008
2.1.4
Procesorových patic
Logických procesorů
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
64 64 64
R2 Standard R2 Enterprise R2 Datacenter
4 8 64
256 256 256
Licencování
Jak již bylo zmíněno v přehledu edicí Microsoft Server 2012 2.1.3 společnost Microsoft zpřehlednila nabídku a tím i licencování jednotlivých edic Windows Server 2012. Nyní se používají dva licenční přístupy vycházející z předpokládaného využití a způsobu distribuce operačních systémů. • Licence na server pro edice Foundation a Essentials • Licence pro pár CPU pro edice Standard a Datacenter V této sekci blíže rozeberu licencování edic Standard a Datacenter, které jsou pro zamýšlené využití nejvhodnější. Z důvodu velké škálovatelnosti je použit model licencování vázaný na fyzický procesor serveru. Licence kryje 2 fyzické procesory bez ohledu na počet jader a logických vláken. Pokud máme server s více procesory, je nutné zakoupit odpovídající počet licencí. Podrobnější příklady je možné vidět v Tabulce 2.6. Tabulka 2.6: Příklad licencování Windows Server 2012 Příklady licencování Jeden 1procesorový, nevirtualizovaný server Jeden 2procesorový, nevirtualizovaný server Jeden 4procesorový, nevirtualizovaný server
Požadované licence Datacenter
Požadované licence Standard
1
1
1
1
2
2
Z Tabulky 2.6 také vyplývá, že v tomto ohledu se edice Standard a Datacenter neliší. Odlišují se až v případě využití virtualizace. Instanci operačního systému je pak možné provozovat ve fyzickém prostředí serveru (physical operating system environment, POSE), nebo ve virtualizovaném prostředí (virtual operating system environment, VOSE). Virtualizační práva mají obě edice, ale liší se v množství povolených virtuálních instancí. Edice Standard poskytuje právo na 2 virtuální instance, zatímco v edici Datacenter je počet virtuálních 12
2.2. Microsoft Hyper-V instancí neomezený. Díky tomu je edice Datacenter vhodná hlavně v masivně virtualizovaném prostředí, kde se využije velké množství virtuálních instancí operačního systému. Příklad viz Tabulka 2.7. Tabulka 2.7: Příklad licencování virtualizace Windows Server 2012 Příklady licencování Jeden 2procesorový server se 2 virtuálními prostředími OSE Jeden 2procesorový server se 3 virtuálními prostředími OSE Jeden 2procesorový server s 12 virtuálními prostředími OSE
2.1.5
Požadované licence Datacenter
Požadované licence Standard
1
13
1
2
1
6
Zvolená edice
Pro projekt virtualizačního prostředí jsem zvolil nejvyšší edici Datacenter. Její zaměření přesně odpovídá zamýšlenému využití v masivně virtualizovaném systému. Umožnuje budoucí škálování a neomezené využití všech dostupných služeb systému Windows Server 2012. Z pohledu licencování je edice Datacenter také nejvhodnější zejména kvůli neomezenému počtu virtuálních instancí, které bude možné použít pro provoz podpůrných služeb, ale také jako klientské stanice či servery pro studenty a učitele.
2.2
Microsoft Hyper-V
Microsoft Hyper-V je virtualizační platforma pro operační systémy Microsoft Windows Server. První verze Hyper-V byla uvedena v roce jako součást operačního systému Windows Server 2008. Hypervisor je integrován v operačním systému a lze ho povolit nainstalováním serverové role Hyper-V. Od verze je Windows Server 2008 R2 je dostupný i samostatný hypervisor pod názvem Hyper-V Server. Microsoft Hyper-V Server je dostupný zdarma. Jedná se o samostatný produkt, který je možný nainstalovat přímo místo operačního systému. Poskytuje pouze roli hypervisoru Hyper-V a základní rozhraní v podobě příkazové řádky, nebo vzdálené správy. Hyper-V je tedy relativně mladý virtualizační systém a prochází neustálým vývojem. Cílem výrobce je poskytnout kompletní řešení, které umožní nejen konsolidaci fyzických serverů, ale poskytne stabilní dobře škálovatelný základ i pro nasazení ve velkých datacentrech. Aktuální verze je Hyper-V V3 a je nově dostupná nejen v operačních systémech Windows Server, ale také v desktopovém systému Windows 8. Konkrétní edice, ve kterých je Hyper-V dostupné jsou: 3 „Když zákazník provozuje všechny povolené virtuální instance, lze fyzickou instanci používat pouze ke správě virtuálních instancí“ [11]
13
2. Zvolené nástroje • Windows Server 2012 Standard • Windows Server 2012 Datacenter • Hyper-V Server 2012 • Windows 8 Professional • Windows 8 Enterprise Ačkoli by integrace hypervisoru do operačního systému Windows mohla naznačovat, že se jedná o hypervisor hostovaný (Typ 2) není tomu tak. HyperV je bare-metal hypervisor (Typ 1). Samotný operační systém Windows je po instalaci hypervisoru provozován ve vrstvě nad hypervisorem. Tato vrstva se nazývá parent partition. Operační systém má přímý přístup k hardwaru a slouží také jako správcovský systém pro hypervisor. Pro komunikaci s hardwerem využívá Hyper-V převážně metodu hardwarově asistované virtualizace a vyžaduje tak podporu na straně fyzického stroje (Intel VT-x, AMD-V) [12].
2.2.1
Porovnání Hyper-V 2008 R2 a Hyper-V 2012
V této sekci se budu věnovat porovnání nového Hyper-V V3 dostupného ve Windows 2012 a Hyper-V v2 z Windows Server 2008 R2. V nové verzi Hyper-V V3 bylo stejně jako ve Windows Server 2012 zvýšeno množství využitelných hardwarových prostředků. Aby bylo možné dosáhnout výkonu porovnatelného s fyzickým serverem a přenést tak do virtualizovaného prostředí i kritické služby náročné na výkon. Hyper-V 2012 také zavádí nový formát virtuálních disků VHDX. V Tabulce 2.8 je porovnání Hyper-V ve Windows Server 2008 R2 a Windows Server 2012. Tabulka 2.8: Hardwarové limity virtuálních strojů v Hyper-V Systémové prostředky Počet logických procesorů Velikost fyzické paměti Počet virtuálních procesorů na fyzickém stroji Počet procesorů ve virtuálním stroji Velikost paměti ve virtuálním stroji Počet aktivních virtuálních strojů Maximální počet uzlů v clusteru Maximum virtuálních strojů v clusteru Maximální velikost virtuálního disku
Windows Server 2008 R2 64 1 TB
Windows Server 2012 320 4 TB
512
2048
4 64 GB 384 16 1000 2TB (VHD)
64 1 TB 1024 64 8000 64 TB (VHDX)
Pozornost byla také věnována zlepšení síťové bezpečnosti. Viz tabulka 2.9. Velmi významného vylepšení se dočkaly nástroje pro správu Hyper-V. Přibila možnost administrace a automatizace pomocí skriptů v jazyce Windows 14
2.3. Windows PowerShell Tabulka 2.9: Bezpečnostní funkce Hyper-V VLAN Tagging MAC spoofing protection ARP spoofing protection Network QoS Network metering Network monitor modes IPsec task offload Private virtual local area network (LAN) DHCP guard Router guard
Windows Server 2008 R2 Ano Ano, od verze R2 SP1 Ano, od verze R2 SP2 Ne Ne Ne Ne
Windows Server 2012 Ano Ano Ano Ano Ano Ano Ano
Ne
Ano
Ne
Ano
Ne
Ano
PowerShell. Ve verzi 2008 R2 bylo nutné využívat nástrojů Windows Management Instrumentation (WMI). Pro verzi 2012 je připravena kompletní sada modulů (cmdlet) pro PowerShell umožňující administraci všech součástí Hyper-V. Vylepšen byl také Hyper-V Manager a klient pro připojení k virtuálnímu stroji VMConnect. Porovnání lze najít v Tabulce 2.10. Tabulka 2.10: Hyper-V přehled nástrojů pro správu Hyper-V PowerShell Network PowerShell Storage PowerShell SCONFIG VMConnect podpora RemoteFX
Windows Server 2008 R2 Ne Ne Ne Ano
Windows Server 2012 Ano Ano Ano Ano
Ne
Ano
Hyper-V verze 2012 jsem zvolil kvůli větším možnostem rozšíření, větší bezpečnosti a novým možnostem správy systému. Díky novým PowerShell modulům lze lépe navrhnout a implementovat systém ovládající Hyper-V a poskytující tak backend pro plánovanou nadstavbu na míru.
2.3
Windows PowerShell
Windows PowerShell je skriptovací jazyk a shell navržený pro administraci operačních systémů a dalších produktů společnosti Microsoft. Je vytvořen na základě .NET Framework. Díky základu na objektovém .NET frameworku je celý shell taktéž objektový. Shell je rozšiřitelný. 15
2. Zvolené nástroje
2.3.1
Vlastnosti shellu
Stejně jako unixový shell i Powershell poskytuje kontextovou nápovědu. Nápovědu je možné získat například pomocí cmdletu Get-Help. Nápovědu by měl umět vypsat každý objekt a to v jednotné formě. Další podobnost s unixovým shellem je v přítomnosti roury (pipe). V powershellu není roura textová ale objektová a předává tak dále kompletní objekt se všemi jeho vlastnostmi. To umožňuje snazší řetězení i velmi složitých příkazů. Základní akce se provádějí pomocí příkazů zvaných cmdlet4 . Cmdlet je specializovaná .NET třída poskytující danou funkčnost. Tyto třídy mohou být implementované v jakémkoli jazyce, který podporuje .NET framework. Cmdlet by měl být nazvaný podle pravidla <sloveso>-<podstatné jméno> Pro usnadnění využívání příkazů v prostředí interpretoru se používají aliasy např. Get-ChildItem -> ls Powershell je nástupcem příkazové řádky Windows, a tak je možné kromě cmdletů používat i klasické programy příkazové řád (např. ping, ipconfig, diskpart. . . ). Díky jeho základu je možné přistupovat také ke všem funkcím .NET frameworku a vytvářet instance libovolné třídy tohoto frameworku. Další funkce jsou dostupné pomocí objektů COM a WMI. Systém providerů implementovaných taktéž v jakémkoli jazyce .NET umožnuje přístup nejen k souborovému systému, ale také do registrů, úložiště certifikátů a dalších datových skladů operačního systému, či spravované aplikace. Powershell také poskytuje API pro hostovaní jiných aplikací a umožňuje jim tak využít jeho funkcionalitu. Toho je možné využít pro implementaci funkcí pro správu aplikace včetně funkcí grafického prostředí. Tuto funkcionalitu poprvé Microsoft využil v Microsoft Exchange Server 2007 a umožnil tak kompletní správu a automatizaci serveru pomocí skriptů v powershellu. Možnost kompletní správy se postupně rozšiřuje do všech serverů a aplikací Microsoftu jako například SQL Server (od verze 2008), nebo právě Hyper-V verze 2012.
2.3.2
Možnosti skriptování
Windows Powershell je dynamicky tipovaný skriptovací jazyk umožňující imperativně implementovat složitější konstrukce s využitím cmdletů. Jazyk podporuje využívání všech běžných řídících konstrukcí, jako jsou například proměnné, strukturované podmínky, cykly, výjimky, funkce, návratové hodnoty. Názvy proměnných musí začínat znakem $. Do proměnné může být uložena jakákoli hodnota, objekt, nebo výstup cmdletu. Práce s řetězci je velmi podobná unixovému shellu. Pokud je řetězec uzavřen do dvojitých uvozovek, je povolena expanze proměnných a název proměnné bude v řetězci nahrazen její textovou reprezentací (u objektu se auto4
16
Cmdlet – čteno command-let
2.4. Souhrn maticky použije metoda .ToString() ). Pokud uzavřeme řetězec do jednoduchých uvozovek, je expanze proměnných zakázaná. Funkce se volají také podobným způsobem jako v Unix shellu. Argumenty funkce jsou odděleny pouze mezerou:
<param1> <param2> Pokud se dva a více parametrů uzavřou do kulatých závorek a oddělí čárkou (<param1>, <param2>), budou parametry předány funkci jako pole o n prvcích. Hotové skripty se zpravidla ukládají do souborů s příponou .ps1. Uložený skript pak lze využívat jako celek, nebo z něj volat jednotlivé funkce. V základním nastavení je však spouštění externích skriptů zakázáno a je nutné ho povolit. Spouštění externích skriptů lze povolit pomocí cmdletu SetExecutionPolicy v několika bezpečnostních úrovních [13]. Nastavení politiky: Set-ExecutionPolicy –ExecutionPolicy <politika> • Unrestricted – všechny skripty se spustí – u skriptů stažených z internetu je požadováno potvrzení. • RemoteSigned – stažené skripty musí být podepsané, vlastní skripty nemusí. • AllSigned – všechny skripty musí být podepsané. • Restricted – nespustí žádný externí skript (základní nastavení). • Bypass – nic není blokováno a není vyžadováno potvrzení. • Undefined
2.4
Souhrn
Pro realizaci projektu jsem zvolil výhradně technologie a produkty od společnosti Microsoft. K této volbě přispěla velmi úzká provázanost serverových produktů a jejich bezproblémová spolupráce. Dále velmi dobrá skriptovatelnost většiny komponent pomocí moderního skriptovacího jazyka PowerShell. Pomocí modulů pro PowerShell lze plnohodnotně ovládat jednotlivé komponenty a snadno tak dosáhnout potřebné funkcionality. Pro plánované využití jsou výhodné také licenční podmínky operačního systému Windows Server 2012 v edici Datacenter, který se stal základním stavebním kamenem plánované virtualizované infrastruktury. Jako hlavní výhodu považuji neomezené množství virtuálních instancí systému, které mohou být využity pro zabezpečení chodu důležitých služeb, ale také jako virtuální servery pro učitele a studenty. 17
2. Zvolené nástroje V počátečním stádiu bude použit databázový server Microsoft SQL Server 2012 v edici Express, která je dostupná zdarma. SQL Server poskytuje stabilní prostředí pro provoz databáze navrhovaného virtualizačního prostředí. Centralizovanou správu uživatelských účtů a bezpečnostních politik poskytuje adresářová služba Active Directory. Díky podpoře adresářové služby přímo v ostatních komponentách je zajištěna nejen jednoduchá správa uživatelských účtů, ale také bezpečnost a kontrola na přístupy do systému. K volbě nástrojů od Microsoftu přispěli i mé osobní preference. Operační systémy Windows Server jsou dle mého názoru dobrým základem pro moderní virtuální infrastrukturu. Zaujaly mě bohaté možnosti spolupráce jednotlivých komponent a jejich efektivní správy pomocí skriptů v jazyce PowerShell. Volba nástrojů pro realizaci této práce má mimo jiné za účel prokázat, zda je možné a vhodné využít Windows Server 2012 a Hyper-V pro realizaci projektů na míru, které nespadají do předepsaných šablon.
18
Kapitola
Návrh Tato kapitola se bude zabývat zpracováním návrhu, který byl vytvořen v práci mého kolegy. Dále upřesním návrh implementovaného back-endu ovládajícího funkce hypervisoru Hyper-V. Části návrhu, které nemají přímý vliv na mou implementaci, ponechám v původním znění nebo je v mém návrhu zcela opomenu s odkazem na práci kolegy [1]. Jak již bylo uvedeno při popisu zvolených nástrojů 2, návrh a následná implementace budou využívat v hojné míře dostupných nástrojů od firmy Microsoft. Back-end tedy nebude kompletně novým virtualizačním systémem, ale jistou nadstavbou spojující hypervisor Hyper-V s adresářovými službami a zjednodušeným uživatelským rozhraním, navrženým na míru pro daný účel. Výsledkem by měl být nástroj umožňující snadnou správu virtuální infrastruktury modelových situací, kdy je využití standartních nástrojů nežádoucí (v případě studentů) nebo zbytečně komplikované (v případě učitelů, administrátorů).
3.1
Základní uplatnění systému
Na základě rešerše provedené mnou a mým kolegou bylo stanoveno požadované využití navrhovaného systému následovně. • Zajištění prostředí pro výuku administrace OS – Nasazení mnoha identických strojů v režimu pouze dočasného ukládání změn. Po skončení výuky budou virtuální stroje navráceny do původního stavu, aby mohly být přiděleny studentům další výukové paralely. • •Virtuální stroje pro studenty – Studentům bude umožněn přístup k virtuálním strojům pro vývoj a testování školních projektů. Provedené změny se budou ukládat na delší dobu, aby byl studentům umožněn návrat k rozdělané práci. 19
3
3. Návrh Mimo toto plánované využití by měl systém dále umožnit běh virtuálních strojů zajištujících fakultní infrastrukturu a běh podpůrných výukových systémů. Toto umožnuje hypervisor Hyper-V sám o sobě a možnosti ve směru klasické serverové virtualizace zůstanou navrhovanou nadstavbou nedotčeny.
3.2
Specifikace požadavků
Požadavky na optimální systém byly podrobně specifikovány v práci mého kolegy [1]. Proto budu v tomto kroku vycházet z jeho návrhu a rozpracuji jej v návaznosti na navrhovaný prototyp. Specifikace požadavků se tedy bude týkat přímo implementovaného prototypu. Provedený návrh systému dodržuje rozdělení požadavků do kategorií podle metody FURPS+ a i já tuto strukturu dodržím, aby byla zajištěna návaznost na analytickou práci a přehlednost.
3.2.1 3.2.1.1
Funkční požadavky Virtuální stroj (VM)
VM je základní jednotkou navrhované systému. Je výsledkem činnosti systému, který bude publikovaný uživateli (např. pomocí vzdálené plochy Windows – RDP) O každém VM je třeba uchovávat množství informací, které pro přehlednost rozdělím do několika kategorií. • Základní – Název VM, popis VM. • Hardwarové – Počet CPU jader, limity pro CPU, velikost RAM, limity pro RAM, velikost virtuálního disku systémového a datového. • Uživatelské – Jméno vlastníka VM. • Softwarové – Typ a verze operačního systému, šablona operačního systému. – Operační systém může na VM nahrát uživatel pomocí vlastního instalačního média nebo bude využita předpřipravená šablona s nainstalovaným systémem. – Doporučovaným postupem bude využití již hotové šablony s OS. • Provozní – Režim spouštění VM, aktuální stav VM. – VM bude možné provozovat ve dvou režimech: Režim bez ukládání změn navrátí VM po ukončení práce do původního stavu. Režim ukládání změn ponechá provedené změny. 20
3.2. Specifikace požadavků – VM může být ve stavech: běžící, vypnut, suspendován, zamknut (systém s VM provádí operaci, která znemožňuje jeho využití) Výčet stavů VM není konečný a je pravděpodobné, že v budoucnu s rostoucím množstvím implementovaných funkcí bude třeba pro zajištění správného chodu systému vytvořit stavy další. S touto možností návrh počítá a změnu umožní. • Časové – Čas vytvoření VM, čas posledního přístupu k VM, čas platnosti VM. Vytvoření VM bude probíhat v několika krocích: • Zadání požadovaných parametrů nového VM do společné databáze. • Vytvoření požadavku na vytvoření VM ve společné databázi. • Samotné vytvoření VM zajistí ovládací skript, který převezme požadavek ze společné databáze a vykoná potřebné úkony. • Přiřazení VM uživateli a její publikování. O zanesení požadavků do společné databáze by se v další fázi projektu mělo starat samostatné uživatelské rozhraní systému. Navrhovaný prototyp bude implementovat back-end systému, který bude schopný požadavek vyzvednout a realizovat na úrovní hypervisoru a pomocných služeb. 3.2.1.2
Uživatelé
Prototyp systému bude pracovat pouze s jedním typem uživatele. Tím bude ověřený uživatel systému. Ověření uživatele bude provedeno na základě jeho existence v adresářové službě Active Directory (AD). Tomuto uživateli může být přiřazen VM a příslušný access controll list (ACL). Neověřený uživatel (neexistuje v AD, nebo byl smazán) nebude mít do systému přístup a bude odebrán z databáze ověřených uživatelů. Návrh bude reflektovat budoucí potřebu rozšíření systému o uživatelské skupiny a role. Jejich realizace však nebude předmětem této práce. Pro potřeby prototypu byla implementace shledána jako nepotřebná. Předpokládané uživatelské role jsou: • Student – běžný uživatel se základní možností přístupu k VM pro účely výuky. V případě potřeby bude možné studentovi přidat práva na správu, či vytváření vlastních VM. • Učitel – uživatel s možnostmi vytváření a správy vlastních VM včetně definice ACL. • Administrátor – uživatel s právy na správu celého systému. 21
3. Návrh 3.2.1.3
Přístupová práva
Práva v prototypu systému budou řešena pomocí access control listu (ACL) pro každou dvojici virtuálního stroje (VM) a uživatele. V této fázi bude ACL obsahovat následující seznam přístupových práv: • Modifikace – právo uživatele na úpravu konfigurace daného VM. • Přístup – právo uživatele na přístup k danému VM. • Smazání – právo uživatele pro úplné smazání daného VM ze systému. Jak bylo uvedeno v sekci 3.2.1.2 návrh počítá s budoucím rozšířením systému o uživatelské role a skupiny a stejně tak správa přístupových práv umožní v budoucnu přidat ACL pro uživatelské role a skupiny. 3.2.1.4
Systémové limity
V prototypu bude správa systémových limitů zajištěna pouze pomocí specifikovaných limitů pro jednotlivé VM. Nebude tak zajištěna ochrana proti vyčerpání systémových zdrojů. S ohledem na ranou fázi vývoje jsem zhodnotil, že pro tento účel není implementace takové ochrany nutná. V další fázi projektu by však měla být tato část systému implementována podle návrhu mého kolegy [1]. 3.2.1.5
Virtuální sítě
Správa virtuálních sítí nebude v prototypu implementována. V budoucnu by stejně jako funkčnost předchozí měla být i tato zcela určitě implementována. Návrh prototypu bude tento požadavek respektovat a umožňovat jeho snadné dodání do systému. Vytvořené VM v systému budou připojeny do jedné společné testovací virtuální sítě. Toto řešení umožní bezproblémovou konektivitu k VM a je to dostačující pro demonstraci konceptu.
3.2.2 3.2.2.1
Nefunkční požadavky Použitelnost
• Prototyp systému bude provozován na jednom stroji s operačním systémem Microsoft Windows Server 2012 v edici Datacenter. • Pro přístup k virtuálním strojům budou použity běžně dostupné nástroj. – Grafické – RDP, VNC (RFB), Hyper-V Virtual Machine Connection. – Terminálové – SSH. 22
3.3. Softwarová architektura • Prototyp systému bude umožňovat hostovat VM s operačními systémy rodiny MS Windows verze XP a vyšší, Windows Server verze 2003 a vyšší a vhodné distribuce Linuxu. Pozn. podpora operačních systémů je z velké části určena samotným hypervisorem Hyper-V. V případě Linuxu také hraje roly konkrétní distribuce, a zda tato distribuce implementuje podporu běhu pod Hyper-V. 3.2.2.2
Výkon
• U prototypu nejsou kladeny vysoké nároky na výkon systému, převážně kvůli nedostupnosti adekvátního serverového hardwaru. • Prototyp bude schopný provozovat nutnou infrastrukturu a několik testovacích VM. 3.2.2.3
Škálovatelnost
• Výkon prototypu bude omezen zejména HW, na kterém bude testován. • Při přechodu na dostatečně výkonný server bude možné dosáhnout řádově vyššího výkonu a provozu několika desítek VM současně.
3.3
Softwarová architektura
V analytické práci mého kolegy byla navržena softwarová architektura skládající se ze třech vrstev. Vrstva datová je reprezentována databázovým strojem a adresářovou službou Active Directory. Vrstva aplikační je reprezentována samotnou logikou spojující komponenty a hypervisorem Hyper-V. Vrstva prezentační je reprezentována webovou aplikací sloužící jako hlavní přístupový bod do systému. Navrhované rozložení komponent znázorňuje Obrázek 3.1. Na základě hotového návrhu byl vytvořen návrh prototypu. Prototyp bude implementovat pouze vrstvu datovou a aplikační. Rozvržení komponent v prototypu systému je znázorněno v Obrázku 3.2. Datová vrstva prototypu bude stejně jako v původním návrhu reprezentována databázovým strojem a adresářovou službou Active Directory. Bude sloužit k uložení informací o virtuálních strojích a informací o právech uživatelských účtů k virtuálním strojům. Adresářová služba bude obsahovat databázi uživatelských účtů, které budou využívány pro správu a užívání VM a pro bezpečné spouštění skriptů aplikační vrstvy. Aplikační vrstva bude reprezentována sadou ovládacích skriptů a hypervisorem Hyper-V. Hlavním spojujícím uzlem bude správcovská služba, která bude komunikovat s databázovým strojem a v případě potřeby spouštět další ovládací skripty. Ovládací skripty budou komunikovat přímo s hypervisorem a Active Directory a zajištovat tak potřebné funkce. 23
3. Návrh
Obrázek 3.1: Softwarová architektura (zdroj [1])
Obrázek 3.2: Softwarová architektura prototypu
24
3.3. Softwarová architektura
3.3.1
Datová vrstva
Jako vhodné datové úložiště byla v návrhu zvolena relační databáze, která bude zachována i v případě funkčního prototypu. V tomto případě bude databázi spravovat databázový stroj Microsoft SQL Server 2012. Databáze bude uchovávat potřebné informace o samotných virtuálních strojích, uživatelských účtech, přístupových právech a další informace potřebné k provozu systému. Zároveň bude databáze v budoucím rozšíření zprostředkovávat spojení mezi uživatelským rozhraním a správcovskou službou systému. Dále rozebereme jednotlivé entity a jejich účel v modelu. Entita virtual_machine reprezentuje konkrétní virtuální stroj. Entita je spojujícím uzlem uchovávaných informací. Entita vm_hw uchovává informace o hardwarové konfiguraci virtuálního stroje. Entita vm_dates uchovává časové informace o virtuálním stroji. Např. čas vytvoření, čas poslední přístupu,. . . Entita vm_states reprezentuje konkrétní stav VM. Jedná se o sadu možných stavů, ve kterých se může VM nacházet. Návrh umožnuje budoucí rozšíření o další stavy. Entita vm_template reprezentuje šablonu virtuálního stroje. V databázi je uchováván seznam dostupných šablon, ze kterých je možné vytvořit nový VM. Entita vm_os uchovává informace o operačním systému použitém v šabloně VM. Tato informace bude využívána budoucím uživatelským rozhraním. Umožňuje informovat uživatele o konkrétní softwarové konfiguraci VM vytvořeného ze šablony. Entita vm_task reprezentuje jednu naplánovanou úlohu pro konkrétní VM. Obsahuje informaci o id akce, která se má provést, příznak o jejím dokončení a čas jejího vytvoření. Bude tak možné uchovávat přehled o úkonech s VM již vykonaných i naplánovaných. Záznamy bude v reálném provozu potřeba uchovávat jen po určitou dobu, aby se zamezilo přílišnému narůstání databáze. To pro účel prototypu, ale není kritické, a tak se bude zaznamenávat každá úloha s VM. Entita vm_action reprezentuje konkrétní akci, kterou je možné provést s VM (např. vytvoření, zapnutí). Jedná se o přednastavený seznam akcí, který bude možné do budoucna rozšířit o další funkce. Entita users reprezentuje konkrétního uživatele. Seznam uživatelů bude namapován ze služby Active Directory. Pro účely našeho virtualizačního prostředí, je ovšem vhodné seznam udržovat i ve vlastní databázi. Entita vm_acl reprezentuje access control list 3.2.1.3 pro konkrétní VM a konkrétního uživatele. Návrh umožňuje budoucí rozšíření o podrobnější seznam přístupových práv. 25
3. Návrh
Obrázek 3.3: Datový model
26
3.3. Softwarová architektura
3.3.2
Aplikační vrstva
Aplikační vrstvu v návrhu prototypu reprezentuje sada skriptů napsaných převážně v jazyce PowerShell. Skripty zajištují komunikaci s databázovým strojem, správu hypervisoru Hyper-V, komunikaci se službou Active Directory a v budoucím rozšíření s uživatelským rozhraním. Uživatelské rozhraní není předmětem této práce a bylo navrženo v návrhové práci kolegy [1]. Jednotlivé funkce zprostředkovává několik modulů v jazyce PowerShell a k nim přidružená sada SQL dotazů. Na rozdíl od původního návrhu se tedy nejedná o sadu samostatných skriptů, ale o sadu funkcí ve formě cmdletů. Popis jednotlivých funkcí rozdělím podle logických funkčních celků a podle modulů, které tyto funkce obsahují. Parametry uzavřené v hranatých závorkách [ ] jsou nepovinné.
3.3.2.1
Komunikace s databází
Samotnou komunikaci s databázovým strojem zprostředkovává modul Sql_functions. Zpracování a logickou obsluhu dotazů zprostředkovává modul DB_functions.
Sql_functions Modul Sql_functions obsahuje sadu funkcí umožňujících samotnou komunikaci s databázovým strojem. Následuje popis jednotlivých funkcí a jejich parametrů.
Open-SQL-Connection Funkce otevře spojení s databázovým strojem. Tabulka 3.1: Open-SQLConnection Parametr ConnectionString Návratová hodnota SqlConnection
Popis Standardní Connection String pro zvolený databázový stroj. Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) reprezentující naše otevřené spojení specifikované parametrem ConnectionString
Close-SqlConnection Funkce uzavře spojení s databázovým strojem. Volá se ve chvíli, kdy již není třeba udržovat otevřenou komunikaci s databází.
New-SqlAdapter Funkce připraví objekt třídy SqlDataAdapter. Argument SqlCommand specifikuje dotaz typu SELECT pro daný DataAdapter. 27
3. Návrh Tabulka 3.2: Close-SqlConnection
Parametr
Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) reprezentující spojení, které checme uzavřít. Popis
SqlConnection Návratová hodnota není
Tabulka 3.3: New-SqlAdapter
Parametr SqlConnection SqlCommand Návratová hodnota DataTable
Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) Otevřené spojení k databázovému stroji. String obsahující samotný SQL dotaz. Popis Objekt .NET třídy DataTable (system.Data.DataTable)
DB_functions Modul DB_functions obsahuje sadu funkcí pro komunikaci s databází, získání a zpracování dat. Pro komunikaci s databází využívá funkcí modulu Sql_functions a uložených SQL dotazů. Logika zpracování dat je dána návrhem databáze s ústředním bodem v entitě vm_task. Logika zpracování dat je následující: • Získání nedokončených/nových úloh z vm_task. • Zpracování úloh a získání potřebných dat. • Předání dat funkcím ovládajících hypervisor. • Zapsání výsledku operací do databáze. Následuje popis jednotlivých funkcí a jejich parametrů. Get-Tasks Funkce získá všechny nedokončené úlohy z databáze a uloží je do fronty úloh k vykonání. Get-VMInfo Funkce získá všechny potřebné informace o virtuálním stroji (VM) z databáze a uloží je do samostatného objektu. Objekt s daty o VM se přiřadí ke korespondující úloze. 28
3.3. Softwarová architektura Tabulka 3.4: Get-Tasks
Parametr SqlConnection Návratová hodnota Tasks
Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) Otevřené spojení k databázovému stroji. Popis Pole obsahující objekty jednotlivých úloh Tabulka 3.5: Get-VMInfo
Parametr SqlConnection Task Návratová hodnota Task
Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) Otevřené spojení k databázovému stroji. Objekt úlohy Popis Objekt úlohy doplněný získanými daty o VM
Invoke-Task Funkce zjistí typ úlohy ze seznamu podporovaných akcí viz Tabulka 3.7. Po určení požadované úlohy zavolá odpovídající funkce ovládající Hyper-V 3.3.2.2. Následuje zápis návratové hodnoty a případných dalších dat zpět do databáze. Tato funkce pracuje s databází i hypervisorem, ale vzhledem k časté práci s databází a zpracováním dat jsem ji zařadil do modulu DB_functions. Funkce obsahuje aplikační logiku pro obsluhu hypervisoru. Funkce komunikuje se správcovskou službou 3.3.2.3 pomocí návratových kódů a zároveň návratové kódy zapisuje do databáze. Tabulka 3.6: Invoke-Task
Parametr SqlConnection Task Návratová hodnota ErrorCode
Popis Objekt .NET třídy SqlConnection (system.Data.SqlClient.SqlConnection) Otevřené spojení k databázovému stroji. Objekt úlohy Popis Návratový kód 3.10
Set-State Funkce zapisuje do databáze aktuální stav obsluhovaného VM. Stav se zapisuje do tabulky virtual_machine jako atribut state_id. Seznam podporovaných stavů lze nalézt v Tabulce 3.8. 29
3. Návrh Tabulka 3.7: Podporované akce Název akce create update delete start shut_down turn_off save
Popis Vytvoří nový VM v systému Hyper-V podle specifikací získaných z databáze. Upraví již existující VM v systému Hyper-V podle specifikací získaných z databáze. Smaže specifikovaný VM ze systému Hyper-V a označí tuto skutečnost v databázi. Spustí specifikovaný VM. Pošle požadavek na vypnutí VM hostovanému OS. Vypne specifikovaný VM bez oznamování hostitelskému OS. Uloží stav VM a VM vypne. Opětovným spuštěním je možné navázat na stávající stav.
Tabulka 3.8: Podporované stavy
Název stopped started saved to_create
to_update deleted
3.3.2.2
Popis VM existuje v Hyper-V a je vypnutý. VM existuje v Hyper-V a je zapnutý. VM existuje v Hyper-V a jeho vypnutý s uloženým stavem. VM není vytvořen v Hyper-V a čeká se na dokončení úlohy k jeho vytvoření. VM nelze spustit. VM je vytvořen a čeká se na dokončení úlohy modifikující jeho konfiguraci. VM nelze spustit. VM je smazán z Hyper-V. Existuje pouze v databázi pro uchování informací.
Ovládání Hyper-V
Ovládání hypervisoru zprostředkovává modul v jazyce PowerShell. Modul VM_functions obsahuje sadu funkcí vycházejících z původního návrhu, ovšem reflektující návrh prototypu více zaměřený na komunikaci skrz databázi. Funkce jsou volány po získání potřebných dat z databáze a realizují tak úlohy uložené v tabulce vm_task na úrovni samotného hypervisoru HyperV. Funkce reprezentují jednotlivé akce specifikované v Tabulce 3.7. Všechny funkce přijímají jako parametr objekt s informacemi o VM a vracejí návratovou hodnotu podle tabulky 3.10. Viz Tabulka 3.9. Následuje popis jednotlivých funkcí. New-HyperVVM Funkce vytvoří nový virtuální stroj (VM) podle parametrů předaných v objektu úlohy. Vytvořením se rozumí vytvoření VM v databázi 30
3.3. Softwarová architektura Tabulka 3.9: Parametry funkcí modulu VM_functions Parametr VirtualMachine Návratová hodnota ErrorCode
Popis Objekt VMInfo Popis Návratový kód 3.10
Hyper-V a případné vytvoření souborů virtuální disků. Update-HyperVVM Funkce upraví VM podle parametrů předaných v objektu úlohy. Remove-HyperVVM Funkce vymaže VM z hypervisoru. Vymazáním se rozumí odstranění VM z databáze Hyper-V, odstranění konfiguračních souborů a případných souborů virtuálních disků. Start-HyperVVM Funkce zkontroluje stav VM, specifikovaném v objektu úlohy. Pokud je to možné VM spustí. Stop-HyperVVM Funkce vypne VM specifikovaný v objektu úlohy. Pomocí přepínače -Force je možné zvolit, zda odešle požadavek hostovanému operačnímu systému (OS) na vypnutí, nebo je VM vypnut bez oznamování této skutečnosti hostovanému OS. Save-HyperVVM Funkce uloží aktuální stav VM a vypne jej. VM je specifikován v objektu úlohy. 3.3.2.3
Správcovská služba
Správcovská služba je v navrhovaném prototypu reprezentována jednoduchým skriptem, který využívá funkce z modulu DB_functions pro zjištění, zda do databáze nepřibyla nová úloha. Skript je spouštěn periodicky a tím simuluje funkci služby sledující změny v databázi. V kombinaci s předdefinovanými SQL dotazy a nebo ručně vytvořenými záznamy tak lze simulovat provoz uživatelského rozhraní a vyvolat reakci v backendu navrhovaného systému. 3.3.2.4
Chybové stavy
Výsledek prováděné akce bude signalizován návratovým kódem zapsaným k příslušné úloze do databáze. Tímto způsobem bude možné zpětně zjistit, zda úloha uspěla, a pokud neuspěla, tak příslušný návratový kód specifikuje chybu, která nastala. 31
3. Návrh Hodnoty návratových kódů byly navrženy v analytické práci [1]. Implementace prototypu bude tento návrh respektovat, avšak nevyužije všech možností, které návrh obsahuje. Oproti původnímu návrhu byl přidán kód číslo 24 (ERR_INV_TEMPLATE). Kompletní seznam návratových kódů a jejich význam obsahuje Tabulka 3.10. Tabulka 3.10: Návratové kódy (zdroj [1]) Návratový kód 0 (SUCCESS) 10 (ACCESS_DENIED) 11 (ERR_PERMS) 12 (ERR_SYSLIMS) 13 (VM_IS_USED) 14 (CLIENT_NOT_FOUND) 15 (DUPLICATE_USERNAME) 20 (ERR_HW_CPU) 21 22 23 24 30 31 32 40 41 42 43 50
32
(ERR_HW_DISK) (ERR_HW_MEM) (ERR_INV_ISO) (ERR_INV_TEMPLATE) (ERR_USR_UNKNOWN) (ERR_VM_UNKNOWN) (ERR_SN_UNKNOWN) (ERR_DB) (ERR_AD) (ERR_HYPERV) (ERR_CON) (ERR_UNSPEC)
Význam Operace proběhla v pořádku Přístup k systému byl odmítnut, nesprávné přihlašovací údaje Nedostatečná práva k provedení operace Uživatel překročil přidělené systémové limity VM je používán (problém pro modifikaci / smazání VM) Nelze spustit potřebnou klientskou aplikaci (při přístupu k VM) Duplicitní uživatelské jméno Nelze přidělit požadovaný počet jader procesoru (při vytváření VM) Nelze přidělit požadovaný vHDD(při vytváření VM) Nelze přidělit požadovanou vRAM(při vytváření VM) Neplatný instalační soubor .iso Nelze použít požadovanou šablonu OS Požadovaný uživatel nenalezen Požadovaný VM nenalezen Požadovaný snapshot nenalezen Chyba připojení k DB Chyba připojení k AD Chyba komunikace s hypervisorem Obecná chyba připojení Nespecifikovaná / neznámá chyba
Kapitola
Implementace V této kapitole se budu zabývat samotnou implementací prototypu virtualizačního systému podle návrhu popsaného v kapitole [Návrh]. Implementace zahrnuje řadu úkonů od konfigurace samotného serverového systému Windows Server 2012, databázového stroje Microsoft SQL Server 2012 a tvorbu skriptů v jazyce Microsoft PowerShell. Jednotlivé implementační kroky je možné rozdělit do následujících bodů: • Konfigurace Windows Server 2012. • Konfigurace hypervisoru Hyper-V. • Konfigurace virtuální infrastruktury. • Konfigurace databázového stroje SQL Server 2012. • Tvorba PowerShell modulů. Jednotlivé body implementační body podrobně popíši v samostatných sekcích.
4.1
Konfigurace Windows Server 2012
Operační systém (OS) Windows Server 2012 byl vybrán jako základní stavební prvek realizovaného virtualizačního prostředí. Zvolena byla nejvyšší edice Datacenter, převážně z důvodů výhodné licenční politiky a neomezené dostupnosti všech potřebných služeb. Podrobný rozbor volby tohoto konkrétního OS jsem popsal v kapitole 2. Zvolil jsem anglickou jazykovou verzi operačního systému, tudíž možnosti konfigurace a názvy služeb budu uvádět v původním znění s vysvětlením. Obsah obrázků obrazovek při postupu konfigurace bude z tohoto důvodu také v anglickém jazyce. 33
4
4. Implementace
4.1.1
Instalace operačního systému
Operační systém Windows Server 2012 Datacenter jsem nainstaloval jako jediný systém na svůj notebook. Tento stroj bude sloužit pro vývoj prototypu a jeho testování. Stroj splňuje všechny hardwarové požadavky na provoz operačního systému a Hyper-V. Hardwarové vybavení stroje je následující: • Procesor Intel Core i7 • 10 GB RAM • 500 GB HDD Instalace byla provedena klasickým způsobem pomocí instalačního prostředí Microsoft Windows. Při samotné instalaci Windows Server 2012 je možné vybrat ze dvou typů instalace: • Server Core Installation • Server with GUI Server Core Installation je minimální instalace OS, která neobsahuje grafické rozhraní známé z ostatních OS Windows a minimalizuje tak nároky na hardware a diskový prostor umožňuje tak dosáhnout nejvyššího možného výkonu. Jedná se o preferovanou volbu v případě instalace na serverový hardware (HW). Správa serveru pak probíhá pomocí PowerShell příkazové řádky. Server with GUI je kompletní instalace OS včetně grafického rozhraní typického pro ostatní OS z rodiny MS Windows. Obsahuje množství grafických nástrojů pro správu serveru. Stejně jako Core Installation obsahuje i kompletní sadu nástrojů pro správu serveru v PowerShell. Vzhledem k plánovanému vývoji skriptů na tomtéž stroji a zjednodušené konfiguraci jsem zvolil možnost kompletní instalace Server with GUI. Instalace dále pokračovala standardním způsobem známým z ostatních nových OS rodiny Windows. Architektura Windows Server 2012 je značně modulární. Veškeré funkce a služby existují jako samostatný modul. Díky této skutečnosti je možné OS konvertovat mezi režimem s grafickým rozhraním (GUI) a příkazovou řádkou i po dokončení instalace a konfigurace. Pro tento účel lze použít PowerShell cmdlet Install-WindowsFeature. Případně lze využít grafických nástrojů pro správu jako je Server Manager (Správce Serveru). Konverze z GUI na Core: Uninstall-WindowsFeature Server-Gui-Mgmt-Infra –Restart Konverze zpět na GUI: Install-WindowsFeature Server-Gui-Shell –Restart 34
4.1. Konfigurace Windows Server 2012 Obrázek 4.1: Add Roles and Features
Pro konverzi z Core instalace na GUI instalaci je nutné specifikovat instalační zdroj obsahující potřebné soubory [14]. Grafické rozhraní je rozděleno na tři moduly a je tak možno dosáhnout různých stupňů grafického rozšíření operačního systému. Jednotlivé moduly je možné vidět na obrázku obrazovky 4.1 z grafického programu Server Manager (Správce Serveru). Instalace na používaný stroj proběhla v pořádku bez jakýkoliv komplikací a její náročnost se dá přirovnat k běžné instalaci desktopového systému Windows 8.
4.1.2
Konfigurace serveru
Čistý serverový operační systém je třeba nakonfigurovat podle požadavků na provoz našeho virtualizačního prostředí. Server bude sloužit jako host pro virtualizovanou infrastrukturu a sám by tedy neměl zastávat žádné nadstandardní služby, které může zastoupit samostatný virtuální stroj (VM). Samotný fyzický stroj bude zastávat následující role: • Hyper-V • Remote Desktop Services 35
4. Implementace Obrázek 4.2: Server Manager – nainstalované role
Pro provoz finálního virtualizačního prostředí podle návrhu [1] včetně uživatelského prostředí by server měl dále zastávat roli webového serveru. • Web Server (IIS) Role Hyper-V obsahuje samotný hypervisor Hyper-V a nástroje pro jeho správu, včetně cmdletů pro Windows PowerShell. Hypervisor umožňuje na fyzickém serveru hostovat virtuální stroje (VM) a tudíž je tato role základním stavebním kamenem našeho virtualizačního prostředí. Role Remote Desktop Services umožnuje správu vzdáleného připojení k serveru a virtuálním strojům. Pomocí přidružených služeb Remote Desktop Gateway a Remote Desktop Virtualization Host umožňuje směrování připojení pomocí protokolu RDP (Remote Desktop Protocol) na hostované virtuální stroje (VM). Jednotlivé služby této role může zastávat několik samostatných serverů. Náš server, primárně slouží jako Hyper-V server, a tak musí mít nainstalovanou minimálně službu Remote Desktop Virtualization Host. Pro zjednodušení infrastruktury potřebné k provozu prostředí jsem se rozhodl server nakonfigurovat jako jediný server role Remote Desktop Services, který zastává všechny potřebné služby pro směrování vzdáleného připojení na VM. Pro instalaci jednotlivých rolí jsem zvolil postup využívající aplikaci Server Manager a průvodce pro přidání rolí a funkcí. Postup přidání rolí a funkcí je díky průvodci velmi jednoduchý a spolehlivý. Postup je podrobně popsaný na stránkách technické podpory společnosti Microsoft [15]. Výsledný pohled do programu Server Manager ukazuje obrázek obrazovky 4.2. Lze vidět, že jsou nainstalované všechny potřebné role. Pro kompletní konfiguraci serveru a hlavně role Remote Desktop Services je nutné, aby server byl členem domény Active Directory. Náš fyzický server, ale nemůže zastávat roli řadiče domény (Active Directory Domain Services) 36
4.2. Konfigurace hypervisoru Hyper-V Obrázek 4.3: Hyper-V Manager
a Remote Desktop Services. Tato konfigurace není doporučena výrobcem a ve Windows Server 2012 už ani není možné obě role nainstalovat na jeden stroj. Roli doménového řadiče bude zastávat samostatný virtuální server. Konfiguraci doménového prostředí popisuje sekce 4.3.
4.2
Konfigurace hypervisoru Hyper-V
Samotný hypervisor Hyper-V byl do operačního nainstalován pomocí stejnojmenné role, jak již bylo uvedeno v předchozí sekci. Po dokončení instalace je Hyper-V připraveno k provozu a lze s ním v podstatě bez omezení pracovat. Přesto je vhodné před vytvářením samotné virtuální infrastruktury provést základní konfiguraci. Standartní nástroj pro správu Hyper-V v grafické prostředí se jmenuje Hyper-V Manager. Jedná se o jednoduchý grafický nástroj pro správu hypervisoru, který je dostupný vždy po instalaci role Hyper-V na server (pozn. Pouze pokud používáme grafické rozhraní). Umožňuje kompletní konfiguraci hypervisoru a správu virtuálních strojů. Prostředí je přehledné a relativně jednoduché na ovládání. Jak prostředí vypadá, je možné vidět na následujícím obrázku obrazovky 4.3. Pro prvotní konfiguraci nás budou zajímat položky Hyper-V Settings a Virtual Switch Manager z pravého sloupce s nástroji Actions. 37
4. Implementace
4.2.1
Hyper-V Settings
Položka Hyper-V Settings nabízí přístup k obecným nastavením hypervisoru, které jsou společné pro všechny virtuální stroje (VM) na tomto serveru. Je zde také možné konfigurovat chování serveru pro replikaci a migraci VM na další Hyper-V servery v případě, že by se náš server nacházel v Hyper-V clusteru. Pro konfiguraci našeho serveru je podstatné nastavit cesty pro ukládání konfiguračních souborů VM a jejich virtuálních disků. Položka Virtual Hard Disks, jak je již z názvu zřejmé, určuje cestu do úložiště souborů virtuálních disků. Položka Virtual Machines pak určuje cestu do úložiště konfiguračních souborů pro jednotlivé VM. Cesta pro ukládání souborů virtuálních disků byla zvolena následovně. Cesta pro ukládání souborů virtuálních disků byla zvolena následovně. D:\Hyper-V\Virtual Hard Disks Cesta pro ukládání konfigurační souborů. D:\Hyper-V Nastavené cesty a ukázku konfiguračního dialogu je možné vidět na obrázku obrazovky 4.4.
4.2.2
Virtual Switch Manager
Položka Virtual Switch Manager umožnuje správu virtuálních switchů používaných pro virtuální stroje v Hyper-V serveru. Hyper-V virtuální switch je softwarovou reprezentací síťového switche pracující na linkové vrstvě síťového modelu. Umožnuje připojení virtuálních strojů do virtuální i fyzické počítačové sítě. Virtuální switch také obsahuje funkce umožňující zabezpečení sítě, kontrolu provozu a izolaci zvolených VM. Samozřejmá je také podpora identifikátoru virtuálních sítí standardu VLAN. Architektura virtuálního switche v Hyper-V umožňuje vývojářům třetích stran vytvářet vlastní rozšíření [16]. Například firma Cisco nabízí pro Hyper-V implementaci jejich switche s Cisco NX-OS pod názvem Cisco Nexus 1000V [17]. 4.2.2.1
Možnosti připojení
Hyper-V umožňuje vytvořit virtuální switch tří základních typů. • External • Internal • Private 38
4.2. Konfigurace hypervisoru Hyper-V Obrázek 4.4: Hyper-V Settings
Switch typu External umožnuje připojení virtuálních strojů do fyzické sítě. Při vytváření virtuálního switche typu External je třeba přiřadit fyzický síťový adaptér, který se pro komunikace bude používat. Každý fyzický adaptér lze použít pouze pro jeden virtuální switch. Po vytvoření virtuálního switche bude v hostujícím operačním systému vytvořen nový virtuální síťový adaptér. Fyzický adaptér slouží pouze jako bridge (síťový most) a veškerá komunikace přes tento fyzický adaptér prochází skrz virtuální Hyper-V switch [18]. Tuto skutečnost ilustruje diagram obrázek obrazovky z nastavení síťových adaptérů OS Windows 4.5. Switch typu Internal umožňuje komunikaci mezi VM připojenými do tohoto switche a hostujícím fyzickým strojem. Pro tento účel je v hostujícím operačním systému vytvořen virtuální síťový adaptér, který je připojen do tohoto switche. Viz Obrázek 4.5. 39
4. Implementace Obrázek 4.5: Nastavení síťových adaptérů
Switch typu Private umožňuje izolovat VM od hostujícího stroje. Síťová komunikace je možná pouze mezi VM připojených do tohoto switche. 4.2.2.2
Konfigurace
Pro účely vývoje prototypu je primárně potřeba umožnit virtuálním strojům komunikovat mezi sebou a hostujícím (fyzickým) strojem. Virtuální infrastruktura potřebuje komunikovat s fyzickým strojem zejména z důvodu zpřístupnění virtuálních strojů přes službu Remote Desktop Services 4.1.2. Fyzický stroj naopak potřebuje komunikovat s virtuálními stroji pro využití jejich služeb (Doménový řadič, databázový server). Pro tento účel jsem vytvořil virtuální switch typu Internal a nazval jej Hyper-V internal. Pro ulehčení práce s virtuálními stroji a jejich snadnému připojení k internetu jsem vytvořil i druhý virtuální switch tentokrát typu External, který jsem nazval Hyper-V external.
4.3
Konfigurace virtuální infrastruktury
V této sekci se budu věnovat návrhu a konfiguraci virtuální infrastruktury pro naše virtualizační prostředí. Kombinace služeb samotného fyzického serveru a serverů virtuálních bude poskytovat komplexní infrastrukturu umožňující běh back-endu tohoto prostředí. Virtuální severy reprezentují zejména datovou vrstvu viz 3.3.
4.3.1
Konfigurace virtuálních serverů
Pro účel provozu databázového stroje Microsoft SQL 2012 a doménového řadiče jsem vytvořil pomocí nástroje Hyper-V Manager dva virtuální stroje. Jejich názvy jsem zvolil dle hlavní funkce, kterou poskytují. • Domain Controller 40
4.3. Konfigurace virtuální infrastruktury • SQL Oba virtuální stroje využívají operační systém Windows Server 2012, který jsem nainstaloval a provedl základní konfiguraci pomocí stejného postupu jako u fyzického stroje 4.1. 4.3.1.1
Domain controller
Domain Controller je virtuální stroj, který bude vykonávat roli doménového řadiče Active Directory. Pro správnou funkci domény Active Directory je nutný správně fungující server DNS, který bude nainstalován také na tento stroj. Další vhodnou síťovou službou, kterou bude stroj poskytovat je server DHCP. Výsledný seznam rolí stroje Domain Controller je následující: • Active Directory Domain Services • DNS Server • DHCP Server Před instalací rolí je třeba zajistit, aby server splňoval podmínky pro provoz těchto služeb. Hlavní podmínkou je pevná IP adresa alespoň na jednom síťovém adaptéru a vhodný název serveru. Tyto dva požadavky jsem splnil a server nakonfiguroval následujícím způsobem. • IP adresa – 33.0.0.101 • Jméno serveru – DC-Win2012 Instalace doménového řadiče se provádí pomocí průvodce v nástroji Server Manager. Nástroj dcpromo známý ze starších verzí Windows Server už není nadále podporován. Proces vytvoření doménového řadiče Active Directory je následující. • Instalace role Active Directory Domain Services pomocí průvodce Add Roles and Features z nástroje Server Manager. • Povýšení serveru na řadič domény pomocí průvodce Active Directory Domain Services Configuration. Při vytváření domény pomocí průvodce Active Directory Domain Services Configuration, jsem zvolil možnost Add a new forest, která vytvoří nový doménový les s kořenovou doménou, jejímž řadičem bude náš virtuální server. Součástí průvodce je také kontrola DNS serveru, který v našem případě není zatím nainstalován. Průvodce nabízí automatickou instalaci a konfiguraci role DNS Server pro vytvářenou doménu. Podrobnou dokumentaci postupu uvádí Microsoft na svých stránkách podpory [19]. Doménu jsem nazval kadecond.local 41
4. Implementace DHCP server jsem nainstaloval společně s rolí Active Directory Domain Services pomocí průvodce Add Roles and Features. Konfigurace pak probíhá pomocí MMC (Microsoft Management Console) nástroje s názvem DHCP. Pro naše účely jsem vytvořil jednoduchý obor obsahující čtyřicet IPv4 adres, který jsem nazval hyper-v guests. 4.3.1.2
SQL
SQL je virtuální stroj, který bude sloužit jako databázový server. Pro tento účel je třeba zajistit, aby stroj měl pevnou IP adresu a vhodné jméno, stejně jako u doménového řadiče. • IP adresa – 33.0.0.102 • Jméno serveru – SQL-Win2012 Na virtuální stroj jsem nainstaloval databázový server Microsoft SQL Server 2012 Express a stroj připojil do domény kadecond.local Konfigurace databázového severu bude podrobně popsaná v další sekci 4.4.
4.3.2
Přehled virtuální infrastruktury
Jak jsem uvedl v úvodu této sekce, o zajištění funkcí pro podporu vyvíjeného virtualizačního prostředí se dělí fyzický server a dva servery virtuální. Fyzický server umožňuje samotnou virtualizaci pomocí hypervisoru HyperV a poskytuje možnosti pro připojení k virtuálním strojům pomocí funkcí role Remote Desktop Services. Virtuální servery poskytují doménové adresářové služby Active Directory a datové úložiště zajištěné databázovým strojem Microsoft SQL Server 2012. Přehled kompletní infrastruktury lze pozorovat na diagramu 4.6. Diagram znázorňuje vnější pohled na kompletní systém. Ústředním bodem je fyzický server, který je připojen do počítačové sítě a k internetu. Levá část znázorňuje virtuální infrastrukturu a klientské virtuální stroje. Pravá část pak znázorňuje možnosti připojení uživatele.
4.4
Konfigurace databázového stroje SQL Server 2012
Jako databázový stroj slouží virtuální server s Windows Sever 2012 viz [Konfig Virt. Inf. – SQL]. Stroj bude sloužit pouze jako databázový server a tudíž jedinou instalovanou službou je Microsoft SQL Server 2012. Pro provoz databáze vyvíjeného virtualizačního systému jsem zvolil nejnižší edici Express dostupnou zdarma. 42
4.4. Konfigurace databázového stroje SQL Server 2012 Obrázek 4.6: Diagram přehled virtuální infrastruktury
4.4.1
Instalace
Microsoft SQL Server 2012 Express je dodáván jako samostatný instalační balíček, který je možné nainstalovat na podporovaný operační systém Windows. Verze Express je kompaktní balíček určený pro nasazení v nenáročných podmínkách. Minimální požadavky verze Express jsou proto také velmi malé, jak lze pozorovat v Tabulce 4.1. Tabulka 4.1: Minimální požadavky SQL Server 2012 Express Operační systém Operační paměť Pevný disk Procesor
Windows Vista, nebo Server 2008 a novější 512 MB 6 GB volného místa x86 nebo x64 - 1.0 GHz nebo 1.4 GHz a více
Pokud stroj splní minimální požadavky, je možné SQL Server nainstalovat. Před započetím samotné instalace nás instalační průvodce provede základní konfigurací instalovaného serveru. Je třeba zvolit typ instalované instance a její případný název. Vhodné je také nastavit způsob autentizace uživatelů. V tomto kroku je také možné změnit umístění jednotlivých instalovaných součástí. Při instalaci jsem zvolil instalaci nové pojmenované instance. Název instance jsem ponechal výchozí SQLEXPRESS. Jako způsob autentizace uživa43
4. Implementace Obrázek 4.7: SQL Server Properties
telů jsem zvolil Mixed Mode, který umožňuje autentizaci pomocí uživatelských účtů Windows i pomocí samostatných SQL účtů. V tomto případě je nutné nastavit bezpečné heslo pro SQL uživatele sa. Po dokončení instalace je možné začít se serverem pracovat. Pro konfiguraci a správu serveru se používá nástroj Microsoft SQL Server Management Studio. Výslednou konfiguraci serveru je možné pozorovat po zobrazení vlastností (Server Properties). Přikládám obrázek obrazovky 4.7 zachycující konfiguraci mého severu.
4.4.2
Konfigurace databáze
Na připraveném databázovém stroji jsem vytvořil novou databázi s názvem hyper-v. Databáze bude sloužit jako úložiště dat pro vyvíjený virtualizační systém a její struktura vychází z návrhu, uvedeném v kapitole Návrh 3.3.1. Pro vytvoření základní struktury a tabulek jsem využil možnosti vygenerování DDL v nástroji Enterprise Architect, ve kterém jsem vytvářel konceptuální model databáze 3.3. Jelikož vygenerovaný DDL skript nedokázal vytvořit strukturu bez chyb, bylo potřeba databázi následně upravit. Důvod chybného DDL skriptu byla pravděpodobná nekompatibilita mezi verzemi SQL Server 2008, pro kterou bylo DLL generováno a novější verzí SQL Server 2012, kterou používám pouze v odlehčené verzi Express. Pro úpravy databáze jsem využil nástroje Microsoft SQL Server Management Studio. Nástroj nabízí možnost úpravy tabulek a jejich vztahů pomocí přímo v diagramu databáze. Výsledné tabulky a vztahy mezi nimi znázorňuje diagram 4.8. 44
4.4. Konfigurace databázového stroje SQL Server 2012
Obrázek 4.8: Relační model databáze
45
4. Implementace
4.5
Tvorba Powershell modulů
Jak již bylo zmíněno v kapitole Návrh [Návrh ], tak samotnou aplikační logiku pro naše virtualizační prostředí zprostředkovávají funkce napsané v jazyce PowerShell. Podle zamýšleného použití jsem funkce rozdělil do třech modulů a o jejich spouštění se stará samostatný správcovský skript napsaný taktéž v jazyce PowerShell. • Hyper-V_management.ps1 – správcovský skript zajištující spouštění funkcí z dalších modulů. • Sql_functions.psm1 – modul obsahuje funkce pro zajištění samotné komunikace s SQL serverem. • DB_functions.psm1 – modul obsahuje funkce pro získání potřebných dat z databáze. • VM_functions.psm1 – modul obsahuje funkce pro ovládání hypervisoru Hyper-V. Pro samostatné použití funkcí z implementovaných modulů je nutné nejdříve moduly načíst do prostředí PowerShell pomocí cmdletu Import-Module. Import-Module Sql_functions Import-Module DB_functions Import-Module VM_functions Podporované funkce je možné vypsat pomocí cmdletu Get-Command. Například pro vypsání funkcí z modulu VM_functions použijeme následující příkaz. Get-Command -Module VM_functions
4.5.1
Komunikace s DB
Pro komunikaci s databázovým strojem používám nástroje .NET frameworku, konkrétně data provider System.Data.SqlClient. Tato knihovna poskytuje třídy a metody umožňující kompletní komunikaci s SQL serverem. Postup získání dat z databáze je následující. • Vytvoření a otevření sql spojení – je nutné specifikovat ConnectionString. • Vytvoření data adaptéru. • Naplnění DataSet/DataTable pomocí uložené SQL procedury. 46
4.5. Tvorba Powershell modulů ConnectionString specifikuje databázový stroj a databázi, ke které se chceme připojit a způsob autentizace. V prototypu je použit následující ConnectionString: Data Source=33.0.0.102\SQLEXPRESS;Initial Catalog=hyper-v; User ID=sa;Password=SQLWin2012 Využívám tedy SQL autentizace a je třeba uvést uživatele a heslo. Toto řešení není z bezpečnostního hlediska příliš dobré a v budoucím nasazení by bylo nutné změnit způsob autentizace na autentizaci pomocí účtu Windows. Přikládám ukázku kódu v jazyce PowerShell, která získá data z tabulky virtual_machine z naší databáze hyper-v na virtuálním databázovém stroji SQLWin2012. \$con = New-Object system.Data.SqlClient.SqlConnection; \$con.ConnectionString = "Data Source=SQL-Win2012\SQLEXPRESS ;Initial Catalog=hyper-v;User ID=sa;Password=SQLWin2012"; \$con.Open(); \$sql = "SELECT * FROM virtual_machine"; \$cmd = New-Object system.Data.SqlClient.SqlCommand \$sql, \$con; \$sqladapter = New-Object System.Data.SqlClient.SqlDataAdapter \$sqladapter.SelectCommand = \$cmd \$DataSet = New-Object System.Data.DataSet \$sqladapter.Fill(\$DataSet)
4.5.2
Ovládání Hyper-V
Pro komunikaci s hypervisorem jsem vytvořil modul VM_functions v jazyce PowerShell. Modul pro svou správnou funkci vyžaduje modul Hyper-V, který obsahuje sadu cmdletů pro práci s hypervisorem. Modul Hyper-V je dostupný v operačním systému Windows 2012 po instalaci stejnojmenné role. Umožňuje přímé ovládání hypervisoru a konfiguraci virtuálních strojů a disků. Pro jeho využití je jej třeba načíst následujícím příkazem. Import-Module Hyper-V Implementovaný modul VM_functions obsahuje funkce realizující podporované úlohy uvedené v Tabulce 3.7. V následující sekci uvádím popis modelového případu činnosti skriptů. Postup v ostatních případech je analogický, pouze se volá jiná funkce z modulu VM_functions. 47
4. Implementace Obrázek 4.9: Vytvoření VM
4.5.3
Vytvoření VM
Jako modelový příklad funkce implementovaného modulu použiji proces vytvoření nového virtuálního stroje (VM). Proces vyobrazuje UML diagram aktivit Diagram 4.9. Aktivity prováděné uživatelem lze simulovat pomocí SQL skriptů nebo ručním zápisem do databáze. V budoucnosti by toto místo mělo zastoupit webové uživatelské rozhraní. PowerShell aktivity reprezentují jednotlivé funkce v implementovaných modulech. Následuje popis jednotlivých aktivit a funkcí, které je provádějí. 48
4.6. Instalace modulů 4.5.3.1
Získání task z DB
Realizováno pomocí funkcí modulu DB_functions. Funkce jsou volány v následujícím pořadí. • Get-Tasks získá z databáze seznam nedokončených úloh. • Get-VMInfo získá z databáze informace o konkrétním VM pro danou úlohu. • Invoke-Task volá funkce modulu VM_functions. 4.5.3.2
Vytvoření VM, Kontrola šablony a Vytvoření VHD
Vytvoření stroje podle předané specifikace zajištuje funkce z modulu VM_functions. • New-HyperVVM funkce vytvoří VM a nakonfiguruje jeho HW podle specifikace z databáze. Funkce zároveň provede kontrolu zadaných údajů a vytvoří virtuální disky (VHD). 4.5.3.3
Zapsání výsledků do DB
Zapsání výsledků do databáze zajištují následující funkce z modulu DB_functions. • Invoke-Task po zavolání funkce New-HyperVVM zapíše výsledek této úlohy do databáze, aktualizuje časová razítka a pokud se změnil stav VM, volá funkci Set-State. • Set-State funkce do databáze zapíše aktuální stav, ve kterém se nachází VM. Seznam podporovaných stavů lze najít v Tabulce 3.8.
4.6
Instalace modulů
Moduly prostředí Powershell se instalují jednoduchým překopírováním adresáře obsahujícím modul do jednoho z adresářů obsažených v proměnné prostředí $env:PSModulePath. Adresář obsahující samotný modul je pojmenován stejně jako modul. Minimální adresářová struktura modulu je tedy: <module_name>.......................adresář obsahující samotný modul <module_name>.psm1...............zdrojový kód PowerShell modulu Standardní cesty pro instalaci modulů jsou následující: %windir%\System32\WindowsPowerShell\v1.0\Modules %UserProfile%\Documents\WindowsPowerShell\Modules 49
4. Implementace Moduly je možné díky tomu instalovat pro celý stroj a také pro každého uživatele. Moduly implementované v této práci je vhodné nainstalovat do systémové složky, aby k nim měl přístup každý uživatel stroje, což v budoucnu umožní spouštění funkcí pro ovládání našeho prostředí z bezpečného uživatelského účtu k tomu určenému, ale stále neomezí využití funkcí i jinými uživateli např. administrátorem serveru.
50
Kapitola
Testování Implementované moduly pro back-end virtualizačního systému byly otestovány na základě požadavků od analytického týmu. Provedené testy a jejich výsledky popíši v této kapitole. Testování implementovaného back-endu bylo provedeno na stejném stroji jako vývoj. Jedná se o můj osobní notebook, který bohužel není nejvhodnějším strojem na provoz většího množství virtuálních strojů. Použitý stroj omezuje výkon systému hlavně kvůli velmi omezenému počtu fyzických procesorových jader a velmi pomalým diskovým operacím. Nebylo tedy možné provést příliš objektivní výkonové testy. Tabulka 5.1: Hardwarová konfigurace testovacího stroje Procesor Počet CPU jader Velikost RAM Pevný disk
Intel Core i7 3517U 1,9 GHz 2 (4 logické - Intel Hyperthreading) 10 GB 5400 ot/min 500 GB
Samotný implementovaný back-end z velké části spoléhá na obsah databáze generovaný prozatím neimplementovaným uživatelským prostředím. Tento vstup jsem simuloval několika SQL skripty, které poskytly základní vstupy do databáze. Spouštění funkcí obsažených v implementovaných modulech obstarával testovací skript Hyper-V_management.ps1. Skript využívá modulu DB_functions k získání připravených úloh a jejich provedení na testovacím stroji. Import-Module -force -Name DB_functions \$sw = [Diagnostics.Stopwatch]::StartNew() Write-Host "Start Test" \$Tasks = Get-Tasks 51
5
5. Testování
foreach (\$Task in \$Tasks) { \$Task.vm = Get-VMInfo \$Task \$result = Invoke-Task \$Task Write-Host "Invoke action \$(\$Task.action) for VM: \$(\$Task.vm.name) return code: \$result" } Close-DBModule \$sw.Stop() Write-Host "Test ended time:\$(\$sw.Elapsed.TotalSeconds)s" Následující sekce popisují jednotlivé provedené testy.
5.1
Vytvoření VM
Pro otestování vytvoření VM jsem připravil dvě sady testovacích dat. • SQL skript test_data_create_VM.sql vytvoří v databázi VM s názvem Win2012_Create_TEST a úlohu pro jeho vytvoření v Hyper-V. • SQL skript test_data_create_start_5VMs.sql pět VM s úlohy pro jejich vytvoření a spuštění. Oba testy proběhly v pořádku. Hromadné vytvoření více virtuálních strojů popíši v následující sekci s podrobnějšími informacemi. 5.1.0.4
Vytvoření 5 VM
Hromadné vytvoření VM je úloha, která bude při plánovaném využití virtualizačního prostředí využívána asi nejčastěji, proto jsem se na tento test zaměřil a provedl podrobnější rozbor. Testovací skript test_data_create_start_5VMs.sql vyplní do databáze následující úlohy. • Vytvořit VM - Win2012_Create_TEST1 až Win2012_Create_TEST5 pomocí šablony Win2012. • Spustit vytvořené VM. Stav Hyper-V server před spuštěním testovací úlohy ilustruje výpis cmdletu Get-VM. 52
5.1. Vytvoření VM PS C:\Users\Ondra> get-vm | select Name,Statže, Uptime | Format-Table -AutoSize Name State Uptime -------- -----Domain Controller Running 01:13:15 Linux Mint Off 00:00:00 Solaris 11 Off 00:00:00 SQL Running 01:13:09 Ubuntu x64 Off 00:00:00 Windows 2008 R2 Web Off 00:00:00 Windows7 x64 Off 00:00:00 Následuje spuštění PowerShell skriptu skript Hyper-V_management.ps1, který získá úlohy z databáze a spustí potřebné funkce. Výstup skriptu ukazuje, že všechny operace se podařily a dodává časové měření běhu testů. PS C:\Users\Ondra> D:\Dokumenty\Ondra\school\FIT CVUT\BP\work\ Hyper-V_management.ps1 Start Test Invoke action create for VM: Win2012_Create_TEST5 return code: 0 Invoke action create for VM: Win2012_Create_TEST4 return code: 0 Invoke action create for VM: Win2012_Create_TEST3 return code: 0 Invoke action create for VM: Win2012_Create_TEST2 return code: 0 Invoke action create for VM: Win2012_Create_TEST1 return code: 0 Invoke action start for VM: Win2012_Create_TEST4 return code: 0 Invoke action start for VM: Win2012_Create_TEST3 return code: 0 Invoke action start for VM: Win2012_Create_TEST5 return code: 0 Invoke action start for VM: Win2012_Create_TEST2 return code: 0 Invoke action start for VM: Win2012_Create_TEST1 return code: 0 Test ended time elapsed: 29.7171033s Je možné pozorovat, že i na velmi pomalém testovacím stroji trvalo vytvoření pěti virtuálních strojů z připravené šablony pouze 30 sekund. Následný start do hostovaného operačního systému trvá delší dobu, v řádu několika minut, hlavně díky malému výkonu testovacího stroje a malým HW prostředkům virtuálních strojů, které byly při testu zvoleny. Výsledný stav Hyper-V serveru po provedení této úlohy zobrazuje výpis cmdletu Get-VM. [fontsize=\small] PS C:\Users\Ondra> get-vm | select Name,State, Uptime | Format-Table -AutoSize Name
State Uptime 53
5. Testování ---Domain Controller Linux Mint Solaris 11 SQL Ubuntu x64 Win2012_Create_TEST1 Win2012_Create_TEST2 Win2012_Create_TEST3 Win2012_Create_TEST4 Win2012_Create_TEST5 Windows 2008 R2 Web Windows7 x64
5.2
----Running Off Off Running Off Running Running Running Running Running Off Off
-----02:29:11 00:00:00 00:00:00 02:29:05 00:00:00 00:01:31 00:01:39 00:01:28 00:01:39 00:01:35 00:00:00 00:00:00
Smíšená sada úloh
Posledním provedeným testem byl test obsahující sadu čtyř úloh. Obsahem testu jsou tyto úlohy. • Vytvořit VM – Win7 x64_TEST_MIXED • Vytvořit VM – Win2012_TEST_MIXED • Spustit VM – Windows7 x64 • Upravit VM – Windows 2008 R2 Web Testovací data pro vytvoření testovacích úloh v databázi obsahuje skript test_data_mixed_task.sql. Test proběhl v pořádku a výsledkem je vytvoření nových VM, spuštění VM Windows7 x64 a úprava HW konfigurace VM Windows 2008 R2 Web.
5.3
Podpora OS
Do testování jsem zařadil také několik testů na ověření podpory operačním systémů v Microsoft Hyper-V. Testoval jsem několik zástupců OS Windows, Linuxu a Solaris. Výsledky testování lze pozorovat v Tabulce 5.2. Obecně lze říci, že běžné linuxové distribuce lze pod Hyper-V provozovat jen s mírným omezením. Jiné unixové systémy už ale podporu pro běh pod Hyper-V často nemají, nebo je provoz takového OS velmi omezený. Podpora dynamického přiřazování paměti je pouze pro OS Windows a to jen Windows 7 a vyšší. Unixové operační systémy a starší verze Windows musí mít přidělené množství paměti staticky. 54
5.4. Shrnutí výsledků testování Tabulka 5.2: Podpora OS OS
Poznámky k virtualizovanému provozu OS
Připojení Uživatele
Windows XP
není podporováno Dynamic Memory
Hyper-V Virtual Machine 4*Connection, RDP
Windows 7 Windows Server 2008 R2 Windows Server 2012 Ubuntu 12 Linux Mint Solaris
5.4
není podporováno Dynamic Memory připojení k síti pouze pomocí Legacy Adapter (pomalejší) není podporován - provoz možný, ale velmi problematický
Hyper-V Virtual Machine Connection
Shrnutí výsledků testování
Provedené testování prokázalo základní funkčnost back-end skriptů pro projekt komplexního virtualizačního prostředí. Z výsledků také vyplynulo množství připomínek k implementaci prototypu, i k samotnému hypervisoru HyperV, které se v budoucích fázích projektu musí zohlednit. Připomínky k implementaci: • Chybějící podpora snapshotů – Implementace prozatím nepodporuje vytvoření a obnovení snapshotu virtuálního stroje. • Chybějící kontrola systémových limitů – Chybějící kontrola systémových limitů by mohla zapříčinit jejich překročení a způsobit tak chybu na hostitelském serveru. • Chybějící kontrola uživatelských práv • Zátěž DB při úloze start/shut_down/turn_off – Úlohy pro změnu stavu virtuálního stroje by mohly být spouštěny pomocí samostatného skriptu mimo databázi. Snížilo by se zatížení DB a zvýšila rychlost provedení těchto úloh. Samotné prostředí Windows Server 2012 a hypervisoru Hyper-V také vzbudilo několik připomínek. Nejzávažnější je dle mého názoru omezená podpora jiných OS než Windows a s tím související omezené možnosti připojení se k takovým VM a nutnost pro připojení se k VM používat stroj s OS Windows.
55
Závěr Cílem bakalářské práce bylo navrhnout a implementovat serverový back-end virtualizačního prostředí na platformě Microsoft Hyper-V na základě návrhu provedeném v analytické práci [BP Jan Beran]. Práce v první kapitole seznamuje čtenáře se základní teorií virtualizace serverů a pracovních stanic architektury x86 a poskytuje stručný přehled v dnešní době nejpoužívanějších virtualizačních systémů a jejich vlastností. Další kapitola je věnována podrobnému popisu nástrojů zvolených pro realizaci projektu komplexního virtualizačního prostředí na základě virtualizační platformy Microsoft Hyper-V a zdůvodňuje jejich volbu. Následující kapitoly se pak věnují návrhu, implementaci a testování back-endu pro plánované virtualizační prostředí. Ve spolupráci s analytickým týmem se podařilo navrhnout a implementovat prototyp back-endu ve formě modulů pro prostředí Windows PowerShell. Moduly byly podrobeny sadě testů prokazující jejich funkčnost. Výsledky testování byly následně vyhodnoceny a na základě výsledků je možné postoupit do další fáze projektu, kterou je testovací provoz na serverovém hardware.
Budoucnost projektu Cílem projektu, jehož součástí je tato práce je mimo jiné také ověřit možnost realizace nadstavby pro Microsoft Hyper-V dle specifických požadavků. Tato práce tuto myšlenku podporuje funkčním prototypem back-endu takového prostředí. Návrh komunikace ovšem velmi spoléhá na podporu ze strany uživatelského rozhraní (UI), které prozatím implementováno nebylo a vzhledem k náročnosti takového projektu by jeho implementace mohla být náplní další bakalářské práce. Následujícím krokem souběžným s implementací UI by mělo být nasazení prototypu na vhodný serverový hardware a vyřešení připomínek, které vznikli při jeho testování. Pro plnou funkci by také bylo potřebné moduly dále rozšířit o zbývající funkce navržené v analytické práci. 57
Závěr
Osobní přínos Během tvorby této bakalářské práce se prohloubily mé znalosti serverových produktů společnosti Microsoft. Získal jsem cenné zkušenosti s prací v operačním systému Windows Server 2012 a jeho konfigurací. Dále jsem získal přehled o možnostech virtualizační platformy Hyper-V a v neposlední řadě jsem se zdokonalil v programování složitějších nástrojů v jazyce PowerShell. Přínosem byla také zajisté spolupráce s kolegou pracujícím na analýze a návrhu, díky čemuž jsem získal zkušenosti práce v týmu na rozsáhlejším projektu, které se mi zcela určitě budou hodit i do budoucna.
58
Literatura [1]
Beran, J.: Komplexní Hyper-V virtualizační prostředí pro vývojářské/testovací/ akademické použití: analýza. Bakalářská práce, ČVUT v Praze, Fakulta informačních technologií, 2013.
[2]
Tavangarian, D.: Virtual Computing: The Emperor’s New Clothes? In Software Service and Application Engineering, Lecture Notes in Computer Science, ročník 7365, editace M. Heisel, Springer Berlin Heidelberg, 2012, ISBN 978-3-642-30834-5, s. 53–70, doi:10.1007/978-3-642-30835-2_5. Dostupné z: http://dx.doi.org/10.1007/978-3-642-30835-2_5
[3]
Kábrt, T.: Virtualizace operačních systémů v serverech. Bakalářská práce, ČVUT v Praze, Fakulta informačních technologií, 2012.
[4]
Hernandz, P.: Survey 51% of x86 Servers Now Virtualized. [online], Leden 2013, [Cited 2014-04-16]. Dostupné z: http://www.serverwatch.com/ server-trends/survey-51-of-x86-servers-now-virtualized.html
[5]
VMware Inc.: Understanding Full Virtualization, Paravirtualization, and Hardware Assist. [Cited 2014-04-30]. Dostupné z: http:// www.vmware.com/files/pdf/VMware_paravirtualization.pdf
[6]
FindTheBest.com, Inc.: How to Find Virtualization Tool. [cit. 2014-0501]. Dostupné z: http://virtualization.findthebest.com/guide
[7]
Microsoft Corporation: Installing Windows Server 2012. [cit. 201405-11]. Dostupné z: http://technet.microsoft.com/en-us/library/ jj134246.aspx
[8]
Corporation, M.: Memory Limits for Windows and Windows Server Releases. [cit. 2013-05-29]. Dostupné z: http://msdn.microsoft.com/en-us/ library/windows/desktop/aa366778(v=vs.85).aspx 59
Literatura [9]
ten Seldam, M.: Windows Server - Sockets, Logical Processors, Symmetric Multi Threading. [online], Říjen 2012, [cit. 2013-05-19]. Dostupné z: http://blogs.technet.com/b/matthts/archive/2012/10/14/ windows-server-sockets-logical-processors-symmetric-multithreading.aspx
[10] Microsoft Corporation: Windows Server 2012 Informační list. [cit. 2013-05-29]. Dostupné z: http://download.microsoft.com/ download/4/B/2/4B23E1AB-94B6-486F-A5BA-68E30DB33C05/ WS2012_Datasheet_Prehled_CZ.pdf [11] Microsoft Corporation: Windows Server 2012 Informační list k licencování. [cit. 2013-05-29]. Dostupné z: http://www.microsoft.com/click/ services/Redirect2.ashx?CR_EAC=300059822 [12] Kelbley, J.; Sterling, M.; Stewart, A.: Windows Server 2008 Hyper-V: Insiders Guide to Microsoft’s Hypervisor. Wiley Publishing, Inc., Indianapolis, Indiana, 2009, ISBN 978-0-470-44096-4. [13] Microsoft Corporation: Set-ExecutionPolicy. [cit. 2014-01-15]. Dostupné z: http://technet.microsoft.com/en-us/library/hh849812.aspx [14] Tulloch, M.: Introducing Windows Server 2012. Microsoft Press A Division of Microsoft Corporation, One Microsoft WayRedmond, Washington 98052-6399, 2012, ISBN 978-0-7356-7535-3. [15] Microsoft Corporation: Install or Uninstall Roles, Role Services, or Features. [cit. 2014-05-08]. Dostupné z: http://technet.microsoft.com/ cs-cz/library/hh831809.aspx [16] Microsoft Corporation: Hyper-V Virtual Switch Overview. [cit. 201405-10]. Dostupné z: http://technet.microsoft.com/cs-cz/library/ hh831823.aspx [17] Cisco Systems, Inc: Cisco Nexus 1000V Switch for Microsoft HyperV. [cit. 2014-05-10]. Dostupné z: http://www.cisco.com/c/en/us/ products/switches/nexus-1000v-switch-microsoft-hyper-v/ index.html [18] Posey, B.: Hyper-V networking: The three virtual switches that fuel connectivity. [online], [cit. 2014-05-12]. Dostupné z: http://searchsdn.techtarget.com/tip/Hyper-V-networking-Thethree-virtual-switches-that-fuel-connectivity [19] Microsoft Corporation: Install a New Windows Server 2012 Active Directory Forest. [cit. 2014-05-13]. Dostupné z: http: //technet.microsoft.com/cs-cz/library/jj574166.aspx
60
Příloha
Seznam použitých zkratek GUI Graphical user interface XML Extensible markup language AD Active Directory API Application programming interface DB Databáze DNS Domain Name System IIS Internet Information Services IP Internet Protocol MS Microsoft MMC Microsoft Management Console OS Operacní systém RDP Remote Desktop Protocol SQL Structured Query Language UI User interface UML Unified Modeling Language VM Virtual machine WMI Windows Management Instrumentation WSDL Web Services Description Language (v)CPU (Virtual) Central processing unit 61
A
A. Seznam použitých zkratek (v)HDD (Virtual) Hard disk drive (v)RAM (Virtual) Random-access memory (ve významu „operacní pamet“) VNC Virtual Network Computing VHD Virtual Hard Disk DDL Data definition language IPsec Internet Protocol Security QoS Quality of Service MAC Media Access Control (v)LAN (virtual) Local Area Network DHCP Dynamic Host Configuration Protocol AMD Advanced Micro Devices
62
Příloha
Obsah přiloženého CD
63
B
B. Obsah přiloženého CD
readme.txt...................................stručný popis obsahu CD src impl...................................zdrojové kódy implementace PowerShell ................... Zdrojové kódy v jazyce PowerShell Modules .................................. Moduly PowerShell DB_functions DB_functions.psm1 DBfunctions.ps1 Sql_functions Sql_functions.psm1 VM_functions VM_functions.psm1 VMfunctions.ps1 Hyper-V_management.ps1 .................... Testovací skript SQL ................................................ SQL skripty DDL....................................DDL pro zavedení DB HyperV_DDL.sql vm_actions_insert.sql vm_states_insert.sql TestData......................................Testovací data test_data_create_start_5VMs.sql test_data_create_VM.sql test_data_mixed_task.sql test_data_vm_os.sql test_data_vm_template.sql thesis ...................... zdrojová forma práce ve formátu LATEX text ....................................................... text práce BP_Kadecka_Ondrej_2014.pdf...........text práce ve formátu PDF
64