Hlavní navigace

VirtualBox jako řešení pro server

26. 11. 2008
Doba čtení: 9 minut

Sdílet

O virtualizačním nástroji VirtualBox jsme psali již několikrát. Pro většinu uživatelů je to program pro desktopovou virtualizaci, který má příjemné klikací rozhraní, a na server se proto příliš nehodí. Nedávno vydaná nová verze se ale přiblížila serverovému využití tím, že nabídla možnost ovládání z příkazové řádky.

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.

Cloud 24 - tip 1

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?

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.