Obsah

Virtualizace pomocí libvirt

Libvirt je knihovna zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro ovládání virtuálních strojů na různých virtualizačních technologiích a to i ve větším množství.

K nainstalování všech součástí potřebných pro použití virtualizace zadejte

yum grouinstall Virtualization

Libvirt v zásadě umí „pouze“ sestavit správné parametry pro daný virtualizační systém. Např. v případě použití qemu se po nastavení virtuálního stroje tento spustí jako qemu proces se všemi potřebnými parametry. Stejně tak lze virtuální stroj pustit přímo pomocí qemu z příkadové řádky. Knohvna libvirt tedy není nezbytně nutná, nicméně při větším množství spravovaných strojů a technologií se již vyplatí ji použít.

Grafické prostředí

Virtuální stroje lze pohodlně zakládat a spravovat z aplikace

virt-manager

virt-manager umí spravovat lokální i vzdálené virtuální stroje.

Ovládání z příkazové řádky

Pro vytváření a správu virtuálních strojů slouží skupina nástrojů postavných nad knihovnou libvirt.

Jak vytvořit virtuál z existující instalace

Tento postup předpokládá použití QEMU a KVM.

Před vytvořením virtuálního stroje musíme překonvertovat stávající OS na virtuální disk. To můžeme udělat buď pomocí příkazu dd, čímž se ovšem vytvoří soubor odpovídající veliskotí veliskosti disku nebo pomocí tzv. sparse souboru, kdy soubor sice zdánlivě má velikost odpovídající disku, nicméně zabýrá pouze tolik místa kolik v něm je skutečně dat. (Tuto vlastnost podporují jen některé souborové systému jako ext3 a ext4.)

Vytvoříme sparse soubor o velikosti obrazu disku

cd /var/lib/libvirt/images
qemu-img create prvni.raw 5GB

Připojíme daný obraz jako loop zařízení

losetup /dev/loop0 prvni.raw

Rozdělíme jako běžný disk príkazem

fdisk /dev/loop0

Změny v oddílech na tomto disku načteme a necháme jádro vytvořit zařízení pro oddíly na tomto virtálním disku

kpartx -a /dev/loop0

Tím se vytvoří zařízení v /dev/mapper/ pro oddíly z /dev/loop0 jako je /dev/mapper/loop0p1 atd.

Nyní můžeme připojit oddíl z virtuálního disku

mkdir /mnt/prvni
mount /dev/mapper/loop0p1 /mnt/prvni

A překopírujeme do něj obsah existujícího OS.

Po dokončení kopírování připojíme do stromu v /mnt/prvni sys, proc a dev, upravíme konfiguraci grubu a fstab, provedeme chroot a znovusestavení initramfs a konfigurace grubu. (Tyto kroky nejsou triviální a vyžadují pokročilé znalosti.)

Odpojení obrazu

umount /mnt/prvni
kpartx -d /dev/loop0
losetup -d /dev/loop0

Pro definici virtuálních strojů se využívají XML soubory. Pro založeního nového stroje použijeme např.

virt-install -n prvni -r 512 --vcpu=2 --import --os-type=linux \
--os-variant=fedora16 --disk /var/lib/libvirt/images/prvni.raw \
-w bridge=br0,model=e1000 --serial pty --graphics vnc

Pro funkci stroje je důležité síťové připojení. Zde je realizováno tzv. síťovým bridgem, který je pořeba nastavit v hostujícím OS

brctl addbr br0 eth0

Ve firewallu nezapomeňte povolit průchod bridgovaných paketů

iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT

pro trvalé použití, pak musíte pravidlo přidat do /etc/sysconfig/iptables.

Správa virtuálního stroje

Virtuální stroj lze poté ovládat pomocí virsh

virsh list --all
virsh start prvni
virsh shutdown prvni

Pro násilné ukončení běhu stroje

virsh destroy prvni

Editaci parametrů v XML

virsh edit prvni

:!: Nikdy needitujte přímo soubory XML na disku v adresáři /etc/libvirt.

Odstranění stroje

virsh undefine prvni

Vzdálené připojení k virtuálu

Na virtuální konzoli stroje se pak lze dívat i vzdáleně příkazem

virt-viewer -c qemu+ssh://root@<ip>/system prvni

na stroji ze kterého chcete virtuální konzoli spustit samozřejmě musí být nainstalován virt-viewer. Na virtulačním serveru nemusí být žádné grafické rozhraní.