What is a hypervisor?
KVM is a hypervisor that creates and run virtual machines. A server on which a hypervisor is running is called as a host machine. Each virtual machine is referred to as a guest machine. Using KVM, you can run multiple operating systems such as CentOS, OpenBSD, FreeBSD, MS-Windows running unmodified.
KERNEL-BASED VIRTUAL MACHINE (KVM)
- The host server located in the remote data center and it is a headless server.
- All commands in this tutorial typed over the ssh based session.
- You need a vnc client to install the guest operating system.
01 STEP – INSTALL KVM
from terminal run:
$: sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker
02 STEP – VERIFY KVM INSTALLATION
from terminal run:
$: kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
03 STEP: CONFIGURATION BRIDGED NETWORKING
from terminal run:
$: sudo cp /etc/network/interfaces /etc/network/interfaces.backup
$: sudo nano /etc/network/interfaces
Edit/append as follows:
auto br0 iface br0 inet static address 10.18.44.26 netmask 255.255.255.192 broadcast 10.18.44.63 dns-nameservers 10.0.80.11 10.0.80.12 # set static route for LAN post-up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.18.44.1 post-up route add -net 126.96.36.199 netmask 255.255.0.0 gw 10.18.44.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 # br1 setup with static wan IPv4 with ISP router as a default gateway auto br1 iface br1 inet static address 188.8.131.52 network 255.255.255.248 netmask 255.255.255.0 broadcast 184.108.40.206 gateway 220.127.116.11 bridge_ports eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0
Save and close the file. Restart the networking service, enter:
$: sudo systemctl restart networking
$: sudo brctl show
04 STEP – CREATE OUR FIRST VM
We’re going to create a Debian 8.x VM: In this example, I’m creating Debian 8.5 VM with 2GB RAM, 2 CPU core, 2 nics (1 for lan and 1 for wan) and 40GB disk space, enter:
$: cd /var/lib/libvirt/boot/
$: sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso $: sudo virt-install \ --virt-type=kvm \ --name=debina8 \ --ram=2048 \ --vcpus=2 \ --os-variant=debian8 \ --virt-type=kvm \ --hvm \ --cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \ --network=bridge=br0,model=virtio \ --network=bridge=br1,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2
To configure vnc login from another terminal over ssh and type:
$: sudo virsh dumpxml debian8 | grep vnc <graphics type='vnc' port='5904' autoport='yes' listen='127.0.0.1'>
Please note down the port value (i.e. 5904). You need to use an SSH client to setup tunnel and a VNC client to access the remote vnc server. Type the following SSH port forwarding command from your client/desktop:
$ ssh email@example.com -L 5904:127.0.0.1:5904
Once you have ssh tunnel established, you can point your VNC client at your own 127.0.0.1 (localhost) address and port 5904 to continue with Debian Linux 8.5 installation.
05 STEP – USEFUL COMMANDS
Let us see some useful commands.
List a running vms/domains
$: sudo virsh list
Shutodwn a vm/domain called openbsd
$: sudo virsh shutdown openbsd
Start a vm/domain called openbsd
$: sudo virsh start openbsd
Suspend a vm/domain called openbsd
$: sudo virsh suspend openbsd
Reboot (soft & safe reboot) a vm/domain called openbsd
$: sudo virsh reboot openbsd
Reset (hard reset/not safe) a vm/domain called openbsd
$: sudo virsh reset openbsd
Delete/remove a vm/domain called openbsd
$: sudo virsh undefine openbsd $: sudo virsh destroy openbsd
Disclaimer: All the tutorials included on this site are performed in a lab environment to simulate a real world production scenario. As everything is done to provide the most accurate steps to date, we take no responsibility if you implement any of these steps in a production environment.
“We learn from our mistakes”