VirtualBox je virtualizační řešení, původně vyvíjené německou společností InnoTek. Tu později koupil Sun Microsystems, pod kterým dnes vývoj pokračuje. Program existuje ve dvou variantách: ta open-source je součástí mnoha distribucí, ale nenabízí některé pokročilejší správcovské funkce, které umí binární balík. Většina kódů je samozřejmě stejná, binární varianta však obsahuje několik „bonusových“ modulů, ke kterým firma nedodává zdrojový kód.
Aplikace si zakládá na intuitivním a příjemném grafickém rozhraní, ve kterém je možno pohodlně ovládat všechny funkce týkající se vytváření a správy virtuálních prostředí. Barevné rozhraní ale předurčilo VirtualBox pro život na desktopech, kde jej také řada uživatelů využívá.
Pro nasazení podobného nástroje na serveru je ale potřeba víc – minimálně rozhraní pro správu z příkazové řádky. Vývojáři vyslyšeli prosby uživatelů a nová řada 2.x přišla s plnohodnotnou řádkovou obsluhou programu.
VirtualBox se tak může pro mnohé stát plnohodnotnou náhradou za populárním VMWare, ať už bude důvodem otevřenost či dostupnost v repositářích mnoha distribucí. V tomto článku si představíme některé možnosti správy virtuálních strojů právě z řádky třeba na serveru.
Úvodní poznámky
Správu z příkazové řádky může využít každý uživatel, který je ve skupině vboxusers
, není tedy potřeba pracovat pod rootem. Na úvod je ještě dobré zmínit, že lze zcela libovolně kombinovat řádkové i grafické ovládání, veškeré změny se ihned projeví v obou.
Základní ovládání
Hlavním příkazem, který budete pro ovládání VirtualBoxu používat, je příkaz VBoxManage
. Ten bohužel v oficiálním balíčku nemá svou manuálovou stránku, ale podrobnosti je možné vyčíst v dokumentaci (nebo tomto článku).
Nejprve si necháme vypsat všechny virtuální stroje, které náš program zná:
$ VBoxManage list vms
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.
Name: Slax
Guest OS: Linux 2.6
UUID: ba708a27-5a82-4298-b9a0-faab8989cf34
Config file: /home/petr/.VirtualBox/Machines/Slax/Slax.xml
Memory size: 256MB
VRAM size: 8MB
Boot menu mode: message and menu
ACPI: on
IOAPIC: off
PAE: off
Time offset: 0 ms
Hardw. virt.ext: off
Nested Paging: off
State: powered off (since 2008-10-30T21:50:37.000000000)
Monitor count: 1
Floppy: empty
SATA: disabled
DVD: /home/petr/src/slax-6.0.7.iso (UUID: edc32d23-2e12-4cf8-b78a-56620f402589)
NIC 1: MAC: 0800276EED7E, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: Am79C973, Reported speed: 0 Mbps
NIC 2: disabled
NIC 3: disabled
NIC 4: disabled
UART 1: disabled
UART 2: disabled
Audio: disabled (Driver: Unknown, Controller: Unknown)
Clipboard Mode: Bidirectional
VRDP: disabled
USB: disabled
USB Device Filters:
<none>
Shared folders: <none>
Guest:
Statistics update: disabled
Vidíte, že stránka s informacemi je zcela vyčerpávající a říká o mém virtuálním stroji Slax vše potřebné. Myslím, že většina informací nevyžaduje komentář, snad si jen povšimněte informace o tom, že počítač neběží, doplněné o to, od kdy tomu tak je.
Poměrně důležitá je také položka UUID, kterou vidíte hned na třetím řádku. Ta jednoznačně identifikuje konkrétní virtuální stroj a je také doporučovaným způsobem pro volbu stroje při jeho správě. Pokud máte jednotlivé položky pojmenované jedinečnými názvy, můžete pro přehlednost používat přímo ty. I já budu v následujících příkladech používat název „Slax“ místo komplikovaného identifikátoru.
Už víme, jak jsme na tom s nastavením a můžeme se pustit do bootu:
$ VBoxManage startvm Slax
Na první pohled se nestane nic a program ihned ukončí svou činnost. Dá ale signál VirtualBoxu, který začne na pozadí startovat virtuální počítač Slax. Ten je po startu dostupný přes síť, kde jej můžeme normálně spravovat třeba přes SSH.
Běžící stroj můžeme samozřejmě také spravovat, a to pomocí parametru controlvm
.
$ VBoxManage controlvm Slax reset
Kromě resetu je možno vyvolat další akce jako poweroff, pause, resume a užitečný acpipowerbutton, který simuluje stisk vypínacího tlačítka na bedně počítače. Osvědčila se mi také možnost výměny DVD média za běhu virtuálního stroje (třeba při instalaci):
$ VBoxManage controlvm Debian dvdattach /home/petr/DVD/Debian-install-DVD2.iso
Modifikace počítače
Už umíme počítač spustit a zastavit, ale důležitá je také změna jeho parametrů. Možností je celá řada a jsme schopni jednoduše změnit vše jako v grafickém rozhraní. Několik příkladů pro představu:
$ VBoxManage modifyvm Slax -name Nove_jmeno
$ VBoxManage modifyvm Slax -memory 1024MB
$ VBoxManage modifyvm Slax -vram 32MB
$ VBoxManage modifyvm Slax -acpi off
$ VBoxManage modifyvm Slax -boot1 dvd -boot2 disk -boot3 floppy -boot4 net
První příklad modifikuje jméno virtuálního počítače, druhý zvětšuje jeho paměť na 1 GB, následuje rozšíření video paměti, vypnutí ACPI a volba pořadí startu.
Velmi potřebná je možnost správy virtuálních disků. Pokud budete potřebovat nějaký nový, stačí jej jednoduše vytvořit:
$ VBoxManage createvdi -filename disk2 -size 16384 -register
Tímto příkazem VirtualBox vytvoří nový disk s nápaditým názvem disk2
, který bude mít velikost 16 GB a program jej rovnou zaregistruje a přiřadí mezi své disky k použití. Následně je možno přímo disk přidat konkrétnímu stroji:
$ VBoxManage modifyvm Slax -hdb disk2
Disk byl připojen k virtuálnímu stroji Slax jako hdb, tedy primary slave. Stejně tak je možno přidat stroji DVD médium. Tato volba se na rozdíl od dříve uvedené výměny DVD zapíše do konfigurace natrvalo.
$ VBoxManage modifyvm Debian -dvd /home/petr/Nejake_CD.iso
Správa snapshotů
Velmi užitečnou službou je možnost pořizování a správy takzvaných snapshotů, neboli obrazů běžícího systému. Pomocí nich můžeme na disk uložit konkrétní stav systému, jakýsi snímek virtuálního stroje. To se nám hodí v případě, že chceme provést nějaké nevratné změny a rádi bychom provedli zálohu pro případ nenadálých problémů.
Práce se snapshoty je i na řádce velmi pohodlná a jednoduchá. Obraz běžícího systému pořídíme snadno:
$ VBoxManage snapshot Debian take poinstalaci
Tímto si například uděláme zálohu našeho virtuálního serveru ihned po instalaci, kdy jsme si připravili a nastavili všechny služby. Pořízení a uložení snapshotu samozřejmě nějakou dobu trvá a virtuální systém je po dobu této činnosti nedostupný.
V případě pozdějších problémů zastavíme běžící systém a vrátíme se k poslednímu provedenému snapshotu:
$ VBoxManage snapshot Debian discardcurrent -state
Nezapomeňte ale na to, že při obnovení snapshotu přijdete o veškerá data, která jste mezi tím vytvořili či upravili na běžícím systému. Pokud tomu chcete zabránit, budete potřebovat takzvaný „writethough“ disk, na který se snapshoty nevztahují. Můžete tak jednoduše ze snapshotového schématu vyjmout třeba /home
svazek a podobně. Při vytváření nového disku je třeba příkazu createvdi
přidat parametr -type writethough
.
Sběr dat o virtuálním stroji
VirtualBox nabízí ještě jednu specifickou vlastnost, která je užitečná při reálném provozním nasazení na serveru. Jedná se o možnost měření a ukládání průběžných informací o běhu hostovaných systémů.
Měřit je možno mnoho různých veličin, jejichž seznam si můžete nechat jednoduše vypsat:
$ VBoxManage metrics list
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.
Object Metric Unit Minimum Maximum Period Count Description
---------- -------------------- ---- ---------- ---------- ---------- ---------- -----------
host CPU/Load/User % 0 100000 0 0 Percentage of processor time spent in user mode.
host CPU/Load/User:avg % 0 100000 0 1
host CPU/Load/User:min % 0 100000 0 1
host CPU/Load/User:max % 0 100000 0 1
host CPU/Load/Kernel % 0 100000 0 0 Percentage of processor time spent in kernel mode.
host CPU/Load/Kernel:avg % 0 100000 0 1
host CPU/Load/Kernel:min % 0 100000 0 1
host CPU/Load/Kernel:max % 0 100000 0 1
host CPU/Load/Idle % 0 100000 0 0 Percentage of processor time spent idling.
host CPU/Load/Idle:avg % 0 100000 0 1
host CPU/Load/Idle:min % 0 100000 0 1
host CPU/Load/Idle:max % 0 100000 0 1
host CPU/MHz MHz 0 2147483647 0 0 Average of current frequency of all processors.
host CPU/MHz:avg MHz 0 2147483647 0 1
host CPU/MHz:min MHz 0 2147483647 0 1
host CPU/MHz:max MHz 0 2147483647 0 1
host RAM/Usage/Total kB 0 2147483647 0 0 Total physical memory installed.
host RAM/Usage/Total:avg kB 0 2147483647 0 1
host RAM/Usage/Total:min kB 0 2147483647 0 1
host RAM/Usage/Total:max kB 0 2147483647 0 1
host RAM/Usage/Used kB 0 2147483647 0 0 Physical memory currently occupied.
host RAM/Usage/Used:avg kB 0 2147483647 0 1
host RAM/Usage/Used:min kB 0 2147483647 0 1
host RAM/Usage/Used:max kB 0 2147483647 0 1
host RAM/Usage/Free kB 0 2147483647 0 0 Physical memory currently available to applications.
host RAM/Usage/Free:avg kB 0 2147483647 0 1
host RAM/Usage/Free:min kB 0 2147483647 0 1
host RAM/Usage/Free:max kB 0 2147483647 0 1
Monitorovat je možno například využití procesoru, průměrnou frekvenci procesoru, volnou a obsazenou paměť a podobně. Samotná aktivace měření je velmi jednoduchá:
$ VBoxManage metrics setup -period 60 -samples 10 Slax
Tím sdělíme VirtualBoxu, že má provést celkem deset měření, mezi kterými bude vždy 60 sekund. Měřen bude konkrétní běžící virtuální počítač. Je možno dokonce specifikovat konkrétní veličiny, které chceme monitorovat:
$ VBoxManage metrics setup -period 30 -samples 20 Debian CPU/Load/User, RAM/Usage/Used
Výpis naměřených informací získáme opět zavoláním našeho oblíbeného programu:
$ VBoxManage metrics query Debian
Případně můžeme opět specifikovat konkrétní údaje, které nás zajímají.
$ VBoxManage metrics query Debian CPU/Load/User
Data je možné měřit a zobrazovat také průběžně, pomocí mírně modifikovaného příkazu:
$ VBoxManage metrics collect -period 5 -samples 5 Debian CPU/Load/User,RAM/Usage/Used
V tomto případě jsou každých pět sekund vypisovány přímo na obrazovku údaje o měřených vlastnostech systému. Proces běží až do klasického zastavení pomocí Ctrl+C.
Vzdálený přístup k monitoru a klávesnici
Častým problémem takto provozovaných virtuálních serverů je nedostupnost reálného monitoru a klávesnice. Občas se vám může stát, že selže některá důležitá součást systému a vy se nemůžete připojit po síti, abyste například službu restartovali.
Typickým problémem může být také špatně nastavený boot manager (GRUB), kdy byste potřebovali před startem ručně změnit nastavení, ale jelikož nemáte jak (hardware je virtuální), dostáváte se do nepříjemné situace.
VirtualBox naštěstí nabízí řešení tohoto problému, kterým je RDP neboli Remote Desktop Protocol. Ten umožňuje na síť hostitelského (tedy reálného) počítače exportovat výstupy virtuálního hardware běžícího stroje.
Můžeme se tak odkudkoliv připojit pomocí RDP klienta po síti na speciální port našeho serveru a uvidíme výstup virtuálního serveru, jako bychom u něj reálně seděli. Dostaneme se tak k bootovací nabídce, můžeme sledovat samotný start a v případě potíží se na terminál nalogovat a problém vyřešit.
Upozornění: Podpora RDP serveru je zahrnuta jen v binární variantě VirtualBoxu. V distribuční open-source verzi ji tedy nenajdete.
Samozřejmě je potřeba nejprve virtuální stroj na použití RDP připravit. Nejprve modifikujeme záznam VirtualBoxu a podporu aktivujeme:
$ VBoxManage modifyvm Debian -vrdp
Při spuštění pak RDP protokol aktivujeme. Standardně se otevře port 3389:
$ VBoxManage startvm Debian -type vrdp
Port můžeme samozřejmě dodatečně změnit:
$ VBoxManage modifyvm Debian -vrdpport 12345
Pro reálné použití je ale ještě třeba zapnout podporu autentizace, aby se k RDP portu nemohl připojit kdokoliv:
$ VBoxManage modifyvm Debian -vrdpauthtype external
Tato modifikace využívá modulů PAM, takže uživatel je autentizován proti standardním účtům, které jsou k dispozici na hostitelském počítači. Pokud si vše takto připravíme, můžeme přímo k připojení využít třeba příkaz rdesktop-vrdp
následovaný adresou našeho reálného serveru.
Závěr
Z výše uvedeného výkladu je zřejmé, že dnes dokáže VirtualBox zaujmout zcela právoplatné místo i na serveru, kde není k dispozici grafické rozhraní, na kterém bychom mohli vše potřebné naklikat a zobrazit. Pokud budete příště uvažovat nad řešením pro virtualizaci na vašem serveru, určitě se vyplatí počítat i s VirtualBoxem.
Tento článek je jen náhledem na zmíněnou funkcionalitu a rozhodně si neklade za cíl být zcela kompletním výčtem všech možností. Další informace naleznete v rozsáhlé 220stránkové dokumentaci na webu VirtualBox.org.
Používáte virtualizaci na serveru?