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
dnf groupinstall 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í velikostí velikosti 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 pří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 virtualizačním serveru nemusí být žádné grafické rozhraní.