Linux: Virtualizace KVM a CentOS
Podívejme se na základní použití a správu VM ve virtualizaci pomocí KVM (Kernel-based Virtual Machine), kterou poskytuje samotné linuxové jádro. Vezmeme v příkladech letem světem instalaci potřebných KVM balíčků, vytvoření VM hostů, jejich správu a síťové nastavení.
Před instalací KVM je dobré zkontrolovat, zda procesor hostitele podporuje virtualizaci:
# Instalace KVM pro CentOS
# Instalace KVM pro Debian, Ubuntu, Linux Mint
File - New virtual machine - proklikat se průvodcem (viz obrázek)
Všechny VM -
Všechny běžící VM -
Start VM -
Pause VM -
Resume VM -
Reboot VM -
Vypnutí VM -
Tvrdé vypnutí VM -
-
Změna konfigurace -
Připojení na konzoly -
Abychom se dostali na VM hosty přes IP ve stejné síti jako je hypervizor (hostitel), tak je na hostujícím stroji potřeba nastavit síťovku do režimu mostu (bridge). Mějme následující situaci - hypervizor má síťovku enp0s25 s IP 192.168.4.28 a chceme jí změnit do režimu mostu.
Někdy je třeba ručně nastavit sťovou kartu do tzv. promiskuitního režimu (promisc mode), díky kterému NIC bude zachytávat i pakety, které nejsou určeny přímo pro ni (packet sniffing) = ale mimo jiné i pro virtuální NIC pro dané VM hosty.
#alternativně
Před instalací KVM je dobré zkontrolovat, zda procesor hostitele podporuje virtualizaci:
grep -E '(vmx|svm)' /proc/cpuinfo
.Instalace a spuštění KVM
# Instalace KVM pro CentOS
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils
systemctl start libvirtd
systemctl enable libvirtd
# Instalace KVM pro Debian, Ubuntu, Linux Mint
sudo apt-get install qemu-system qemu-utils libvirt-bin virt-manager python-spice-client-gtk virt-viewer
Vytvoření hosta (VM, guest)
Přes virt-manager pro X windows
virt-manager &
File - New virtual machine - proklikat se průvodcem (viz obrázek)
Přes terminál
virt-install --name=Xubuntu --file=/var/lib/libvirt/images/xubuntu.dsk --file-size=20 --nonsparse --graphics spice --vcpus=2 --ram=2048 --cdrom=xubuntu-dvd-install.iso --network bridge=br0 --os-type=linux --os-variant=generic
Správa KVM hostů přes terminál
Všechny VM -
virsh list --all
Všechny běžící VM -
virsh list
Start VM -
virsh start VM
Pause VM -
virsh suspend VM
Resume VM -
virsh resume VM
Reboot VM -
virsh reboot VM
Vypnutí VM -
virsh shutdown VM
Tvrdé vypnutí VM -
virsh destroy VM
-
Změna konfigurace -
virsh edit VM
Připojení na konzoly -
virsh console VM
Network
Abychom se dostali na VM hosty přes IP ve stejné síti jako je hypervizor (hostitel), tak je na hostujícím stroji potřeba nastavit síťovku do režimu mostu (bridge). Mějme následující situaci - hypervizor má síťovku enp0s25 s IP 192.168.4.28 a chceme jí změnit do režimu mostu.
vim /etc/sysconfig/network-scripts/ifcfg-enp0s25
TYPE=Ethernet
BOOTPROTO=static
DEVICE=enp0s25
ONBOOT=yes
BRIDGE=br0
PROMISC=yes
vim ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.4.28
NETMASK=255.255.255.0
GATEWAY=192.168.4.254
DNS1=192.168.4.254
systemctl restart network
ip addr show br0
brctl show
Promiskuitní režim
Někdy je třeba ručně nastavit sťovou kartu do tzv. promiskuitního režimu (promisc mode), díky kterému NIC bude zachytávat i pakety, které nejsou určeny přímo pro ni (packet sniffing) = ale mimo jiné i pro virtuální NIC pro dané VM hosty.
ip link set eth0 promisc on
#alternativně
vim /etc/sysconfig/network-scripts/ifcfg-enp0s25
PROMISC=yes
ALLMULTI=yes