Introduction
KVM (Kernel Virtual Machine) is a great implementation for virtualization in Linux on x86 architectures. It has both Intel and AMD virtualization extensions with :
- Kernel module : kvm.ko - core virtualization infrastructure
 - Processor module : kvm-intel.ko or kvm-amd.ko
 - Files can be located e.g.
 
total 936K
-rw-r--r-- 1 root root 95K Oct 9 2012 kvm-amd.ko
-rw-r--r-- 1 root root 195K Oct 9 2012 kvm-intel.ko
-rw-r--r-- 1 root root 642K Oct 9 2012 kvm.ko
Kernel Version Check
- The KVM kernel component has been in Linux since 2.6.20
 - Check your version :
 
Hardware Virtualization Support
- A lot of hardware does not enable virtualization by default
 - You can review the BIOS and check for any virtualization enable options
 - Note : For Dell laptops (and potentially others) I have found you need to go into the BIOS and disable Trusted Execution
 - From the OS we can review flags set on /proc/cpu
 
- If values are returned virtulaization is supported
 - Flags of interest
 - vmx — Intel VT-x, basic virtualization
 - svm — AMD SVM, basic virtualization
 
- Review of dmesg (kernel message buffer) shows if kvm loaded e.g.
 
[ 25.601412] kvm: Nested Virtualization enabled
Package Requirements
qemu-kvm
- qemu-kmv (Quick EMUlator) : allows userspace programs to access virtulization components of supported CPU's
 - As mention previously the kernel modules for KVM are included in mainline Linux
 - qemu features
 - Processor emulator (here x86)
 - Emulated devices e.g. keyboard, mouse, NIC, graphics card, hard disk etc
 - Generic devices connect emulated devices to the related host devices
 - Machine descriptions of virtual machines
 - Debugger
 - User interface
 - Hardware acceleration
 
- Emulated and generic devices comprise its device models for I/O virtualization
 
libvirt-bin
- API that acts as a wrapper for qemu-kvm
 - Toolkit to interact and manage a quemu-kvm hypervisor
 - Features
 - Mange VM's, virtual networks and storage
 - Remote management with TLS and x509 certificates
 - Its possible to use qemu-kvm without libvirtapi
 - VM's created by qemu-kvm are not visible with the libvirt tools
 
bridge-utils
- Contains brctl program to create and manage bridge devices
 - Required for configuring hosted VM ntwork
 
virt-goodies
- A collection of helpful virtualization related tools
 - Tool to convert from VMWare images to kvm/libvirt e.g. vmware2libvirt
 - A libvirt munin plugin
 
Installation
- The following installation is for Linux Mint but other Linux distributions will be similar
 - Install :
 
- This will also install
 
Bridge Setup
- One option is to remove the Linux Mint 'network-manager' but in my case I did not want to remove this component
 - Backup interfaces files
 
- Update /etc/network/interfaces as follows
 
iface lo inet loopback
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_maxwait 0
- Restart networking
 
- Check networking with ifconfig (I have changed the MAC's) :
 
br0 Link encap:Ethernet HWaddr 11:11:11:11:11:11
inet addr:192.168.0.197 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21f:16ff:fe45:49eb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:334 errors:0 dropped:0 overruns:0 frame:0
TX packets:364 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:127873 (127.8 KB) TX bytes:89251 (89.2 KB)
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 11:11:11:11:11:00
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:60003 errors:0 dropped:0 overruns:0 frame:0
TX packets:47724 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:45267129 (45.2 MB) TX bytes:11804118 (11.8 MB)
- Check bridge status
 
bridge name bridge id STP enabled interfaces
br0 8000.001f164549eb no eth0
- Ping Google's DNS to test connectivity
 
- Reboot machine to ensure connection is retained
 
GUI Management
- Install GUI
 
- Check libvirtd group exists
 
libvirtd:x:128:
- Add your username to this group i.e. replace 'cwishaw'
 
- Logout and back in again for group change to take effect
 - Open 'Virtual Machine manager from the Menu and following should appear
 
- If it does not connect locally check libvirtd is running and if not restart
 
root 1622 1 0 14:35 ? 00:00:05 /usr/sbin/libvirtd -d
$ sudo /etc/init.d/libvirt-bin restart
Change Default VM Location
- By default, libvirt stores images in the /var/lib/libvirt/images directory
 - As the owner is root we would like to select our own dir
 - Create directory
 
$ virsh pool-edit default
- Update <path> e.g.
 
- Restart libvirt
 
- Open 'Virtual Machine manager select 'Edit -> Connection Details->Storage -> default'
 - Location should be new folder e.g. /home/cwishaw/KVMImages
 
Custom Storage ISO Location
- Create directory
 
- Open 'Virtual Machine manager select 'Edit -> Connection Details->Storage -> +'
 - Define new Storage Pool then select 'Next'
 
- Define 'Target Path' as new directory then select 'Finish'
 - Disconnect then reconnect to GUI and new Storage Pool will appear
 
Create a VM
- Right Click on 'localhost (QEMU) and select 'New'
 - The following screenshots show examples of setting up a new VM
 
Graphs
- There are some nice graph options that can be enabled in 'Virtual Machine Manager under 'Edit -> Preferences -> Stats
 
- Change view under 'View -> Graph'
 











No comments:
Post a Comment