KVM/QEMU self hosted hypervisor

Published by @ultradesu on 2020-07-14

Requirements

  • Ubuntu Linux server (tested on 18.04 and 20.04)
  • CPU with virtualisation enabled

Installing

Installing VT staff

sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils

I'd like to assign IPs for my VMs in the same network as server.

Here is netplan config:

# /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    enp2s0f0:
      dhcp4: false
      dhcp6: false
  bridges:
    br0:
      interfaces: [enp2s0f0]
      dhcp4: true
      dhcp6: true
  version: 2

Generate and apply network config:

sudo netplan generate
sudo netplan --debug apply

# Check bridge
sudo networkctl
IDX LINK       TYPE     OPERATIONAL SETUP
  1 lo         loopback carrier     unmanaged
  2 enp2s0f0   ether    enslaved    configured
  3 br0        bridge   routable    configured
  4 virbr0     bridge   no-carrier  unmanaged
  5 virbr0-nic ether    off         unmanaged

# Check DHCP lease on new bridge
sudo ip a 
2: enp2s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether xxx brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether xxx brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.28/24 brd 192.168.88.255 scope global dynamic br0
       valid_lft 535sec preferred_lft 535sec

Managing VMs

Grant permissions to use virtmanager to your user on server:

sudo adduser $USER libvirt-qemu
sudo adduser $USER libvirt

Use virt-manager GUI utility on client or virsh CLI tool for managing VMs and data pools.