Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Úvod do virtualizace pomocí XENu

Více co je to virtualizace? Ovládáte termíny guest, host, dom-0... Už jste zkoušeli XEN? Pokud jste aspoň na jednu otázku odpovědeli NE, tak si pojďte se mnou vyjasnit základní termíny virtualizace. Nakonec si položíme otázku, proč to celé vlastně děláme. Jak na XEN v praxi se podíváme příště.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Určitě jste již slyšeli buzzword posledních měsíců: virtualizace, virtuální stroj, virtual appliances… Pojďme si jednotlivé termíny definovat a představíme si jeden z virtuálních strojů: XEN.

Na začátek musím předeslat, že jsem se snažil o maximální jednoduchost a někdy jsem se nevyhnul definici v kruhu. Pokud něčemu nebudete zkraje rozumět, prostě čtěte dál. Pokud vás něco bude zajímat více, využijte externích odkazů v článku. Některé věci jsem musel značně zjednodušit, aby se z toho nestala nudná mnohostránková kni­ha.

Virtualizace je proces, kdy v jednom operačním systému (OS) spustíte pomocí virtualizačního systému jiný OS. Výhodou je, že systémy jsou od sebe odděleny a ani oprávnění roota na jednom počítači vám nepomůže k přístupu do druhého systému.

Virtualizační systém je program, který vám zprostředkovává vlastní virtualizaci. Já budu psát především o open source programu XEN, existují však i další. Nejznámější je komerční VMware, ale známe i KVM, Qemu a další. Např. na KVM je nejzajímavější, že je vyvíjen přímo kernel komunitou a jeho vývoj jde hodně dopředu.

Při virtualizaci se budete dokola setkávat se několika základními termíny: hypervisor, hostitel, host, kruhy a domény. Zkusme si je vyjasnit:

XEN rings

Ve virtualizaci je několik kruhů (angl. rings) ochrany. Hypervisor běží v kruhu 0 (nejzákladnější), kernely OS běží v kruhu 1 a běžné aplikace běží v kruhu 3. Kruh 2 se prakticky nepoužívá.

Hypervisor je věc, která je nahrána ještě dříve než jádro systému. (U KVM je hypervisor přímo součástí kernelu dom-0 jako modul). Jediné, co hypervisor umí, je obhospodařování paměti a obsluha I/O operací, které zprostředkovává hostům. Při bootu je hypervisor nahrán do kruhu 0 a nahraje patchovaný OS se XENem do kruhu 1. Ten je nazván jako dom-0 (doména 0).

Dom-0 se též nazývá hostitel (angl. host) a můžete z něj spouštět další domény, zavírat je, migrovat nebo jim nastavovat parametry. Další domény, které z hostitele spustíte, se označují jako domény U (dom-U) a jádra jejich OS běží taktéž v kruhu 1, stejně jako jádro hostitele.

Host (angl. guest) je každý další operační systém, který se nahraje pomocí virtualizačního systému. Povšimněte si, že český host a anglický host označují dvě odlišné věci!

Pokud nemáte moderní procesor, který podporuje virtualizační rozšíření (Vanderpool v případě Intelu nebo Pacifica v případě AMD), budete muset provozovat paravirtualizaci. V takovém případě musíte mít na dom0 a dom-U systému (host i hostitel) modifikované jádro. V případě XENu zakompilovanou podporu, v případě VMware zavedené jejich ovladače. Jak uvidíte později, paravirtualizace není nic špatného a je nakonec i pohodlnější.

Paravirtualizace znamená, že se některá operace (alokace paměti, IO operace) neprovádí přímo, ale požadavky jsou předávány z kernelu v dom-U do kernelu dom-0 (jedině dom-0 má přístup k HW). Zjednodušeně si lze paravirtualizaci představit jako jednoduchý kód, který předá požadavek na manipulaci s HW dále do dom-0 a sám s HW nedělá. Paravirtualize tedy předpokládá upravené jádro jak hosta, tak hostitele. V případě Linuxu to není žádný problém, protože zdrojové kódy jádra jsou k dispozici. Plná virtualizace nepředpokládá modifikované jádro hosta (guesta) a jeho spolupráci, a proto musí HW emulovat pomocí částí kódu z Qemu. Proto je v současné době paravirtualizace rychlejší než plná virtualizace. Bez plné virtualizace se neobejdete s uzavřenými OS – ty v paravirtualizací nerozjedete.

Jestliže váš procesor podporuje virtualizační rozšíření, můžete v dom-U systému provozovat systém bez nutnosti modifikovat jádro.

Jak poznáte zda váš procesor podporuje virtualizační rozšíření? V příkazové řádce spusťte tento příkaz:

# cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family   : 6
model        : 15
model name   : Intel(R) Core(TM)2 CPU          6300  @ 1.86GHz
...
wp           : yes
flags        : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx
fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
bogomips     : 4653.30

Příznak VMX znamená, že CPU umí plnou virtualizaci (Intel ji nazývá Vanderpool), pokud ji nemáte, tak se musíte spokojit s paravirtualizací. V případě AMD dostanete jiný výstup:

$ cat /proc/cpuinfo
processor    : 0
vendor_id    : AuthenticAMD
cpu family   : 15
model        : 75
model name   : AMD Athlon(tm) 64 X2 Dual Core Processor 3600+
...
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy
bogomips     : 4024.72

U AMD se stejná technologie nazývá Pacifica a její příznak v cpuinfo objevíte jako SVM.

Nutno poznamenat, že samotný CPU nestačí. Virtualizaci musí podporovat i BIOS a chipset. Ale v podstatě platí, že pokud jste si CPU a desku koupili dohromady a CPU podporuje plnou virtualizaci, pak s deskou nebudou také problémy.

Pokud vás téma zaujalo a chcete vědět více, tak můžete pokračovat hlubším článkem o XENu a zde najdete hezký graf architektury XENu.

davame_internetu_obsah
       

Příště se podíváme, jak si v praxi vytvořit guesta, ale ještě dnes se podíváme na několik otázek, které v diskuzi určitě padnou.

Jak moc jsou virtuální stroje pomalejší oproti běžnému systému?
Pokles je asi o 3 % procenta. Ale např. přenos dat po síti mezi dvěma guesty na stejném hostu je výrazně rychlejší než mezi dvěma fyzickými systémy, protože nejste omezováni rychlostí/pomalostí fyzické vrstvy.
Proč vlastně mám chtít spouštět virtualní systémy? Proč to neudělat na fyzickém novém počítači?
Uvedeme si několik scénářů, kdy se vám virtuální systém může hodit.
  • Webhoster – zákazník by rád root přístup ke stroji, ale vy mu ho nechcete dát, protože na stejném počítači máte data dalších klientů. Řešení – vytvoříte nového hosta, zprovozníte tam služby, které zákazník vyžaduje a dáte přístup klientovi k tomuto questu. Pokud něco zkazí, tak se to neprojeví u jiných klientů.
  • Vývojář – kolikrát jste si chtěli něco vyzkoušet a jenom vám chyběl další počítač (nebo více)? S pomocí virtualizace si můžete v 1GB paměti vytvořit 5 virtuálních počítačů (nebo i více). Navíc pokud se některý guest „kousne“ vaším přičiněním nebo nenabootuje, tak ho můžete jednoduše zrušit a vytvořit si nový. Na skutečném počítači by nastoupilo RescueCD a měli byste zbytečně těžkou hlavu.
  • Nebo chcete zkusit nové či staré programy a nechcete si ničit vaše stabilní prostředí. Vytvoříte si guesta, v něm vyzkoušíte program a pak questa zase zrušíte. Vaše programy a prostředí zůstanou netknuty.
  • Virtuální servery – spuštíte nějakou službu a nevíte, jak silný počítač budete potřebovat. Nainstalujte vše do guesta a můžete kdykoliv migrovat na jiný fyzický stroj s řádově sekundovými výpadky. Zpočátku může být guest na sdíleném počítači, později na vlastním, až nakonec skončíte na mnohaprocesorovém serveru.

Na závěr bych rád poděkoval Karlu Žákovi za věcnou kritiku tohoto textu.

Anketa

Virtualizujete?

       

Miroslav Suchý

Mirek Suchý

Autor pro Root.cz píše převážně Softwarové sklizně. Je zaměstnán ve firmě Red Hat, kde se věnuje projektu Spacewalk.

Školení: Návrh a používání MySQL databáze

 

Naučte se používat jednu z nejrozšířenějších databází. Dozvíte se vše potřebné od návrhu až po samotné využití MySQL v projektech.

Školení pro všechny, kteří se chtějí naučit efektivně pracovat s MySQL nebo se v práci s touto databází zlepšit.

Přihláška a podrobné informace

Ohodnoťte jako ve škole:
Průměrná známka 3,23

Přehled názorů

Podporovane OS
Navi 8. 3. 2007 01:42
Nový
├ 
Re: Podporovane OS
dan 8. 3. 2007 03:54
Nový
└ 
Re: Podporovane OS
Miroslav Suchy 8. 3. 2007 07:59
Nový
 
├ 
Re: Podporovane OS
belgarat 9. 3. 2007 08:52
Nový
 
└ 
Re: Podporovane OS
xx 10. 3. 2007 12:55
Nový
Rezie virtualizace
martin 8. 3. 2007 07:17
Nový
├ 
Re: Rezie virtualizace
czeXit 8. 3. 2007 07:20
Nový
├ 
Re: Rezie virtualizace
hwsoft 8. 3. 2007 07:39
Nový
│
├ 
Re: Rezie virtualizace
martin 8. 3. 2007 08:14
Nový
│
│
├ 
Re: Rezie virtualizace
martin 8. 3. 2007 08:16
Nový
│
│
│
└ 
Re: Rezie virtualizace
Miroslav Suchy 8. 3. 2007 08:27
Nový
│
│
│
 
└ 
Re: Rezie virtualizace
-nf- 8. 3. 2007 09:16
Nový
│
│
│
 
 
└ 
Re: Rezie virtualizace
Miroslav Suchy 8. 3. 2007 09:26
Nový
│
│
│
 
 
 
└ 
Re: Rezie virtualizace
alfa111 14. 3. 2007 11:53
Nový
│
│
├ 
Re: Rezie virtualizace
Miroslav Suchy 8. 3. 2007 08:37
Nový
│
│
│
├ 
Re: Rezie virtualizace
martin 8. 3. 2007 09:07
Nový
│
│
│
└ 
Re: Rezie virtualizace
ch-in-A 8. 3. 2007 09:10
Nový
│
│
│
 
└ 
Re: Rezie virtualizace
martin 8. 3. 2007 10:16
Nový
│
│
│
 
 
└ 
Re: Rezie virtualizace
dustin 8. 3. 2007 11:19
Nový
│
│
│
 
 
 
└ 
Re: Rezie virtualizace
martin 8. 3. 2007 12:24
Nový
│
│
└ 
Re: Rezie virtualizace
anonymní uživatel 9. 3. 2007 23:10
Nový
│
│
 
└ 
Re: Rezie virtualizace
martin 10. 3. 2007 11:07
Nový
│
└ 
Re: Rezie virtualizace
anonymní uživatel 8. 3. 2007 08:25
Nový
│
 
├ 
Re: Rezie virtualizace
Zero 8. 3. 2007 08:36
Nový
│
 
├ 
Re: Rezie virtualizace
Archie 8. 3. 2007 09:30
Nový
│
 
│
└ 
Re: Rezie virtualizace
anonymní uživatel 8. 3. 2007 10:31
Nový
│
 
└ 
Re: Rezie virtualizace
Zito 8. 3. 2007 09:45
Nový
│
 
 
└ 
Re: Rezie virtualizace
anonymní uživatel 8. 3. 2007 10:32
Nový
└ 
Re: Rezie virtualizace
kerala 8. 3. 2007 10:43
Nový
 
└ 
Re: Rezie virtualizace
martin 8. 3. 2007 13:22
Nový
SMP a xen
miro 8. 3. 2007 08:23
Nový
└ 
Re: SMP a xen
Miroslav Suchy 8. 3. 2007 08:41
Nový
flakani serveru a bezpecnost
Martin Hassman 8. 3. 2007 08:33
Nový
├ 
Re: flakani serveru a bezpecnost
martin 8. 3. 2007 09:09
Nový
└ 
Re: flakani serveru a bezpecnost
Mikuláš Patočka 8. 3. 2007 15:55
Nový
bsd
jirib 8. 3. 2007 09:21
Nový
└ 
Re: bsd
Archie 8. 3. 2007 09:35
Nový
bios?
jirib 8. 3. 2007 09:58
Nový
Solaris a zones
macko 8. 3. 2007 10:19
Nový
├ 
Re: Solaris a zones
jirib 8. 3. 2007 10:21
Nový
│
└ 
Re: Solaris a zones
P 8. 3. 2007 11:23
Nový
└ 
Re: Solaris a zones
zelo 9. 3. 2007 02:58
Nový
 
└ 
Re: Solaris a zones
trpaslik 9. 3. 2007 11:01
Nový
 
 
├ 
Re: Solaris a zones
Tomas Dzik 9. 3. 2007 17:22
Nový
 
 
└ 
Re: Solaris a zones
nh 9. 3. 2007 23:15
Nový
Chybky
Jan Marek 8. 3. 2007 10:43
Nový
Dík za článek,
pajout 8. 3. 2007 11:01
Nový
podpora vmx
Peter 8. 3. 2007 11:48
Nový
└ 
Re: podpora vmx
Mikuláš Patočka 8. 3. 2007 15:59
Nový
 
└ 
Re: podpora vmx
Ondrej "SanTiago" Zajicek 8. 3. 2007 18:34
Nový
 
 
└ 
Re: podpora vmx
Mikuláš Patočka 8. 3. 2007 23:51
Nový
Clanek o Virtualizace Storage. KDY?
delphym 8. 3. 2007 14:33
Nový
└ 
Re: Clanek o Virtualizace Storage. KDY?
martin 8. 3. 2007 15:00
Nový
 
├ 
Re: Clanek o Virtualizace Storage. KDY?
martin 8. 3. 2007 15:01
Nový
 
└ 
Re: Clanek o Virtualizace Storage. KDY?
delphym 8. 3. 2007 15:48
Nový
Core 2 duo v notebooku
kvr 8. 3. 2007 15:25
Nový
├ 
Re: Core 2 duo v notebooku
Martin Hassman 8. 3. 2007 15:27
Nový
├ 
Re: Core 2 duo v notebooku
Lister 8. 3. 2007 20:30
Nový
└ 
Re: Core 2 duo v notebooku
jezkovy zraky 8. 3. 2007 23:04
Nový
dik za clanek
petrpo 9. 3. 2007 07:02
Nový
└ 
Re: dik za clanek
martin 9. 3. 2007 08:38
Nový
 
└ 
Re: dik za clanek
dalda.cz 9. 3. 2007 10:13
Nový
 
 
└ 
Re: dik za clanek
martin 9. 3. 2007 10:32
Nový
 
 
 
└ 
Re: dik za clanek
Karlos 9. 3. 2007 10:57
Nový
co mi tu chybalo
Peter D. 9. 3. 2007 10:54
Nový
└ 
Re: co mi tu chybalo
dc 9. 3. 2007 11:48
Nový
 
└ 
Re: co mi tu chybalo
Izak 9. 3. 2007 15:08
Nový
 
 
└ 
Re: co mi tu chybalo
Peter D. 9. 3. 2007 16:13
Nový
WinXP + Linux
unknown unknown 9. 3. 2007 12:26
Nový
├ 
Re: WinXP + Linux
Palo 9. 3. 2007 16:25
Nový
└ 
Re: WinXP + Linux
1234 10. 3. 2007 13:44
Nový
Zjednoduseni systemove administrace
xx 10. 3. 2007 13:35
Nový
Virtualbox
coward 10. 3. 2007 16:51
Nový
└ 
Re: Virtualbox
Ondra 14. 3. 2007 10:44
Nový
Virtual SMP
xb 12. 3. 2007 12:26
Nový
└ 
Re: Virtual SMP
Miroslav Suchý 12. 3. 2007 20:34
Nový
To je trocha malo!
Peter Ambrož 13. 3. 2007 19:48
Nový
└ 
Re: To je trocha malo!
x 18. 3. 2007 12:03
Nový
Kruhy ochrany
alfa111 14. 3. 2007 12:27
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem