KVM je virtualizační technologie v Linuxovém jádře, která dalším produktům (např. emulátoru hw počítače - typicky QEMU) zprostředkovává virtualizační technologii na CPU.
KVM je oblíbený hypervisor a je používaný ve velkém množství virtualizačních produktů (oVirt/RHEV, Proxmox, OpenStack,…). Pro naše použití nám bude stačit KVM s minimem nádstaveb nad ním. Pro interaktivní manipulaci s virtuály se spokojíme se produktem virt-manager
, pro interakci z příkazové řádky postačí virsh
.
Pro spokojený běh virtuálů je potřeba jim poskytnout nějaké zdroje. Zase to uděláme maximálně jednoduše - síť bude realizována probridgeováním rozhranní virtuálů s fyzickým rozhraním hostitelského serveru. Diskový prostor budeme alokovat z vyhrazené volume group (podporovaných úložišť je samozřejmě více).
Při instalaci serveru je potřeba pouze pamatovat na to, že pro samostatnou volume groupu je potřeba vytvořit (alespoň jednu) samostatnou physical volume, takže na potřeba na to pamatovat při rozdělování disku.
Ručně by to obnášelo zhruba tyto kroky:
Pokud je /dev/sda3
volný, neobsazený, právě vytvořený oddíl, pak jsou druhé dva kroky
pvcreate /dev/sda3 vgcreate vmdata /dev/sda3
Popisovaná instalace je na distribuci CentOS7 nainstalované z minimal ISO, informace jsou ale imho dost obecné, takže na jiných distribucích to bude velmi podobné.
Vlastní instalace KVM (závislostí je celkem dost…).
yum install libvirt-daemon-kvm qemu-kvm qemu-kvm-tools
Zkontrolujeme, že se libvird bude spouštět po startu…
systemctl is-enabled libvirtd
…a spustíme ho.
service libvirtd start
Instalace managemt utilitky.
yum install virt-manager dejavu-lgc-sans-fonts xorg-x11-xauth
Pozor, jedná se o GUI nástroj a X-windows na serveru nebudeme zbytečně provozovat, takže její spouštění bude následně probíhat pomocí tunelování X-windows session přes SSH. Proto instalujeme i xauth (v minimal verzi se neinstaluje) a také nějaké fonty.
Zdá se, že od nějaké verze CentOS7 (7.3?) je v konfiguraci sshd defaultně tunelování X11 zakázáno. Povolíme…
nano /etc/ssh/sshd_config
... X11Forwarding yes ...
…a otočíme sshd.
service sshd restart
Pokud polezete na server z Linuxu, doporučuji použít dobrodiní config
souboru ssh. Do souboru ~/.ssh/config
doplníme něco jako
Host wintermute #kvm server, labka HostName 1.2.3.4 User root ForwardAgent yes IdentityFile ~/.ssh/id_rsa
pak stačí zadat ssh wintermute
a je hotovo. Jinak je potřeba používat o něco delší ssh -X root@1.2.3.4
.
Pokud polezete z windows, je potřeba mít nainstalovaný X-windows server. TODO
Virt manager se spustí takto:
virt-manager
Pokud správně funguje X11 forwarding, tak se otevře grafické okno managera. Pro základní konfiguraci je potřeba rozkliknout defaultní konexi (z jednoho managera lze spravovat více hostů) QEMU/KVM. Otevře se okno s QEMU/KVM Connection Details
. Postupně nastavíme
Defaultní úložiště pro diskové image virtuálů je filesystém. Přidáme naši volume group - klikneme na + Add Pool
, zvolíme název a vybereme logical: LVM Volume Group
. Target Path
bude naše volume group vmdata, vyplníme cestu k blokovému zařízení - /dev/vmdata
. To je zde vše. Jen zkontrolujeme, že pool vmdata existuje, je Active a spouští se po startu (Autostart On Boot).
Další úložiště doporučuju mít normálně ve filesystému a používat ho pro ISO image instalačních CDček - klikneme na + Add Pool
, zvolíme název a vybereme dir: Filesystem Directory
. Doporučuju něco jako /iso
.
Tato operace je poněkud delikátní, pokud je server někde daleko a nemáte k němu přístup, může to být napínavé Jsou dvě možnosti. Připravit si bridge dopředu, nebo si jej nakliknout z virt-manageru.
Z virt-manageru se to dělá takto.
Klikneme na + Add Interface
, vybereme Interface Type: Bridge
, pojmenujeme jej name br1
. Teď pozor, ať si neuřízneme větev na které sedíme - Start mode: none
a Activate now
nezaškrtávat! Vybereme fyzický interface pro probridgeování (v mém případě enp3s0) a v nastaven IP settings:
by se měla zobrazit volba Copy configuration from enp3s0
a tu nebudeme měnit.
Po potvrzení se připraví konfigurace bridge, jen se neaplikuje. To lze zkontrolovat v klasickém umístění v /etc/sysconfig/network-scripts/ifcfg-br1
a /etc/sysconfig/network-scripts/ifcfg-enp3s0
. Tamtéž bych provedl ruční změnu a nastavil v obou případech ONBOOT=“yes”
a odvážně otočil network - service network restart
.
DOTAZY:
TODO
acpid, start virtual server on host bootup
Mocná commandline utilitka. Pro běžné používání asi stačí
virsh list virsh console <číslo> virsh shutdown <číslo> virsh destroy <číslo> virsh start <jméno>