Virtualizácia
Martin Štrbák, 396563@mail.muni.cz
Obsah
Úvod do virtualizácie
Virtualizácia je činnosť zahrňujúca vytvorenie virtuálneho prostredia na jednom stroji a
rozdelenie jeho výpočtového výkonu a úložného priestoru pre viac súbežne bežiacich operačných
systémov (klientov). Taktiež hardware hostiteľského počítača sa javí ako virtuálny, čo umožňuje spúšťanie
aplikácií inak určených na inú architektúru, prípadne testovacie účely, keďže OS nemá priamy prístup k
hardvéru.
Zoznam použitých pojmov
- Host
Server, ktorý poskytuje svoje hardvérové zdroje klientským systémom (virtuálnym strojom).
- Klient
Klient je už priamo bežiaci virtuálny stroj, ktorý má svoje technické parametre, ako napríklad
pridelený počet jadier procesora, veľkosť pamäte RAM alebo pevného disku. Do klienta už môžeme
priamo nainštalovať OS.
-alternatívny názov: Guest
- Hypervisor
Schováva pred užívateľom fyzický hardvér a miesto neho sprístupňuje hardvér virtuálny. Tento softvér beží
na fyzickom počítači, riadi virtualizáciu a sprostredkováva klientom služby.
-alternatívny názov: Virtual Machine Monitor
- Obraz virtuálneho stroja
Uloženie aktuálneho stavu virtuálneho stroja pre účely zálohy, alebo migrácie.
-alternatívny názov: Snapshot
Dôvody prečo virtualizovať
- Šetrenie zdrojov
Namiesto množstva menších fyzických počítačov postačí jeden výkonnejší server. V prípade potreby nového stroja,
nie je nutné investovať peniaze do kúpy nového, ale stačí spustiť novú inštanciu na serveri. Taktiež šetrí ľudské zdroje,
keďže sa administruje len jeden väčší stroj a nie mnoho menších.
- Rýchlejšia "oprava"
V prípade že sa bežiaci systém istým zásahom alebo nastavením znefunkční, nie je potrebná formátovať disky, stačí
zmazať stroj a vytvoriť nový z funkčnej kópie.
- Testovacie účely
Jednoduché otestovanie novej verzie systému bez potreby zasahovať do chodu fyzického stroja.
- Migrácia
Virtuálny stroj môžeme preniesť na iný systém tým, že ho dočasne zastavíme, spravíme aktuálny snímok (snapshot), presunieme a
znovu spustíme.
- Cloud
Hodí sa pri poskytovaní hostingových služieb. Zákazník si môže jednoducho nastaviť aké zdroje potrebuje, dá sa aj zautomatizovať
v prípade vyššej záťaže počas dňa. Zmeny sú vykonávané veľmi rýchlo.
Úrovne virtualizácie
Kontajnerová virtualizácia
- Chroot
Systémové volanie, ktoré vykonávanému procesu (a podprocesom) zmení root adresár. Takýto proces nemôže pristupovať k súborom
mimo tie ktoré mu boli priradené.
- BSD jail
Je podobný ako chroot, ale neobmedzuje proces len v oblasti prístupu k súborom, ale v rámci prístupu k celému systému, a teda
aj k užívateľom alebo sieťovým rozhraniam.
Vďaka nemu môžeme skutočne vytvoriť virtuálne stroje s vlastnou konfiguráciou. Procesy uväznené v BSD jail sa z neho nemôžu
dostať, čo neplatí o Chroot. (prevzaté z manuálových stránok chroot(2): mkdir foo; chroot foo; cd ..)
- VServer, OpenVZ
Upravené Linuxové jadrá, priamo podporujúce virtualizáciu. Sú veľmi podobné BSD jail, kontajnerové riešenie virtualizácie,
izolácie procesov a správy zdrojov.
Emulácia HW
Software emuluje hardware a ten sa potom javí operačnému systému bežiacemu v VM ako skutočný fyzický. Emulácia je zvyčajne pomerne
pomalá, kedže požiadavky OS sa musia prekladať na požiadavky smerujúce skutočnému fyzickému zariadeniu. Tvorí akúsi medzivrstvu
medzi virtuálnym strojom a fyzickým zariadením. Typický zástupca takéhoto
softvéru je QEMU (Quick EMUlator) alebo XEN. QEMU v kombinácii s KVM(Kernel Virtual Machine) a podporou virtualizácie na procesore
funguje veľmi efektívne.
Paravirtualizácia
Virtuálny stroj sa netvári ako samostatný stroj, neemuluje úplný hardware (napríklad počítač na inej architektúre ako je hostitelský server).
Nad systémom sa tvári mierne abstraktne, takže môžeme dosiahnuť citeľne vyšší výkon než na plne virtuálnych strojoch (s plne emulovaným HW).
Z možných paravirtualizačných riešení môžeme spomenúť XEN, KVM alebo VMware. Od bežiaceho OS sa vyžaduje úprava, aby bol schopný
na tomto systéme bežať, v opačnom prípade nemusí byť schopný pristupovať ku všetkým zariadeniam a rozozná že beží na virtuálnom stroji.
Plná virtualizácia
Host je emulovaný pomocou virtualizačného hardvéru, okrem procesora (takže platdormy musia byť zhodné) a operačné systémy vo virtuálnych
strojoch bežia natívne a teda bez straty výkonu. Problém nastáva pri pristupovaní k HW hostiteľského PC, lebo napríklad čítanie
z virtuálneho disku sa musím previezť na čítanie adekvátneho miesta na fyzickom disku a pod. Všetky I/O operácie vyžadujú veľkú réžiu.
Plnú virtualizáciu podporujú XEN, VMware, VirtualBox.
Najväčšími výhodami sú hrubý výkon a žiadna potreba upravovať hostovaný OS.
Formáty virtuálnych diskov
Asi najjednoduchší formát je RAW, používa riadke súbory. Disk vo formáte QCOW je súbor, ktorý reprezentuje blokové
zariadenie fixnej dĺžky. Medzi jeho výhody patrí šifrovanie AES, kompresia pomocou zlib a podpora snímkov (snapshot).
Tento formát používa QEMU.
QCOW2 podporuje viacero obrazov virtuálnych strojov. Hlavnou nevýhodou formátu QCOW je že nedokáže byť namontovaný priamo,
ako napríklad RAW, ale potrebuje špeciálnu utilitu ktorá dokáže čítať súbory QCOW.
Ďalšie formáty:
VirtualBox: vdi
VMware: VMDK
Prístup k virtuálnemu stroju
Virtuálny stroj nám umožnuje zdieľanie pracovnej plochy buď cez VNC, alebo cez iný remote desktop protokol,
napr. SPICE (Simple Protocol for Independent Computing). Ak už na stroji beží operačný systém, je možné sa k nemu pripojiť
priamo cez SSH.
Nástroje na správu virtuálnych strojov
- Virsh
Virsh je CLI nástroj na manažovanie hypervizora a klientských virtuálnych strojov. Beží na knižnici libvirt a funguje ako
alternatíva k nástrojom ako qemu-kvm alebo ku grafickému virt-manager. Používa sa nielen na nastavovanie jendotlivých
inštancií virtuálnych strojov, ale aj virtuálnych sietí.
- virt-install
CLI nástroj na inštalovanie nových strojov. Podporuje textové aj grafické inštalácie (cez SPICE alebo VNC).
Inštalačné médium môže byť lokálne, alebo umiestnené na vzdialenom počítači a pripojené cez NFS, resp. stiahnuté z
cez HTTP alebo FTP. Dokáže byť zautomatizovaný, čo uľahčuje inštaláciu.
- virt-*
Ďalšie nástroje s prefixom virt-*, napríklad virt-df (využitie disku na virtuálnom stroji), virt-inspector (zistenie info o
systéme), ...
Literatura