Virtualizace
Michal Fabík, 172886@mail.muni.cz
Obsah
Použití
- Testování
- Podpora specifického HW a/nebo SW
- Efektivnější využití fyzického stroje - "konsolidace serverů"
- Možnost přesunutí virt. stroje na jiný fyzický - ochrana proti selhání HW
- Bezpečnost - každá služba může mít svůj vlastní virtuální stroj
Typy virtualizace
Kontejnerová virtualizace
Není virtualizace v pravém slova smyslu. Běží jen jeden OS, nad kterým mohou existovat oddělená
prostředí pro jednotlivé procesy/skupiny procesů/aplikace.
Příklady:
- chroot(2)
- FreeBSD jail(2) - složitější (př.: jls(8), jail_attach(2))
- Linux-VServer - rozdělení systému na security contexts, obsahující jednotlivé
virtual private servers.
Běh VPS je pak vlastně spuštěním /sbin/init
v novém security context.
Softwarová emulace HW
Lze takto podle potřeby vytvořit prakticky jakýkoli virtuální hardware, ale za cenu (velmi) nízkého výkonu.
Příklady:
- QEMU
- Pouze při použití v Complete Computer System režimu. Jinak používá dynamický binární
překlad a kód spouští přímo na procesoru hostitelského stroje.
- Možnost výběru z ca deseti HW platforem.
- bochs
Paravirtualizace
Virtuální prostředí není úplné - je využito podobnosti, resp. shody, některých komponent virtuálního a fyzického (hostitelského) stroje.
Není tedy možné provozovat paravirtualizovaný systém diametrálně odlišný od hostitelského. Hostitelský i paravirtualizovaný systém musí
být speciálně sestaven s podporou paravirtualizace - zpravidla nepoužitelné pro closed-source systémy.
Příklady:
Úplná virtualizace
Podle dokumentace projektu Xen: "Virtuální systém si není vědom toho, že je virtuální." (nepřesná citace.)
Dělení:
- Bez HW akcelerace
- Využívá binárního překladu některých instrukcí, což snižuje výkon.
- S HW akcelerací
- A.k.a Hardware-assisted virtualization, accelerated virtualization, hardware virtual machine (Xen), native virtualization (Virtual Iron).
- Implementace se liší podle výrobce prcesoru: AMD-V a Intel VT, dříve označovány Pacifica a Vanderpool (v tomto pořadí).
- Příklady:
Příklady
Xen
Architektura:
| App | App | App | ...
-----------------------------
Domain0 | DomainU | DomainU | ...
-----------------------------
Hypervisor
----------
HW
- Hypervisor - VMM (Virtual Machine Monitor) - přiděluje systémové zdroje jednotlivým doménám.
- Domény - jednotlivé virtuální stroje.
- Doména 0 - má přístup přímo k HW hostitelského systému a probíhá skrz ni komunikace s hypervisorem a správa
ostatních domén prostřednictvím démona xend a nástroje xm.
(xm create, xm shutdown, xm list atd.)
Projekt libvirt
- Jednotné API pro obsluhu různých virtualizačních technologií.
- Podporuje Xen, QEMU, KVM, LXC, OpenVZ, User Mode Linux, VirtualBox
- Podpora Linux-VServer?
Příklad použití:
#include <stdio.h>
#include <libvirt/libvirt.h>
int main()
{
virConnectPtr conn;
virDomainPtr dom;
char *hv_uri;
char *dom_desc;
conn = virConnectOpen(NULL);
hv_uri = virConnectGetURI(conn);
printf("Connected to %s hypervisor\n", hv_uri);
dom = virDomainLookupByName(conn, "mydomain");
dom_desc = virDomainGetXMLDesc(dom, VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_INACTIVE);
/* do something */
virDomainShutdown(dom);
virConnectClose(conn);
return 0;
}
Při překladu je potřeba přilinkovat knihovnu libvirt.a (přepínač -lvirt).
Literatura