Basic KVM on CentOS 5
I've been using kvm for my virtualisation needs lately, instead of xen, and finding it great. Disadvantages are that it requires hardware virtualisation support, and so only works on newer Intel/AMD CPUs. Advantages are that it's baked into recent linux kernels, and so more or less Just Works out of the box, no magic kernels required.
There are some pretty useful resources covering this stuff out on the web - the following sites are particularly useful:
There's not too much specific to CentOS though, so here's the recipe I've been using for CentOS 5:
# Confirm your CPU has virtualisation support egrep 'vmx|svm' /proc/cpuinfo # Install the kvm and qemu packages you need # From the CentOS Extras repository (older): yum install --enablerepo=extras kvm kmod-kvm qemu # OR from my repository (for most recent kernels only): ARCH=$(uname -i) OF_MREPO=http://www.openfusion.com.au/mrepo/centos5-$ARCH/RPMS.of/ rpm -Uvh $OF_MREPO/openfusion-release-0.3-1.of.noarch.rpm yum install kvm kmod-kvm qemu # Install the appropriate kernel module - either: modprobe kvm-intel # OR: modprobe kvm-amd lsmod | grep kvm # Check the kvm device exists ls -l /dev/kvm # I like to run my virtual machines as a 'kvm' user, not as root chgrp kvm /dev/kvm chmod 660 /dev/kvm ls -l /dev/kvm useradd -r -g kvm kvm # Create a disk image to use cd /data/images IMAGE=centos5x.img # Note that the specified size is a maximum - the image only uses what it needs qemu-img create -f qcow2 $IMAGE 10G chown kvm $IMAGE # Boot an install ISO on your image and do the install MEM=1024 ISO=/path/to/CentOS-5.2-x86_64-bin-DVD.iso # ISO=/path/to/WinXP.iso qemu-kvm -hda $IMAGE -m ${MEM:-512} -cdrom $ISO -boot d # I usually just do a minimal install with std defaults and dhcp, and configure later # After your install has completed restart without the -boot parameter # This should have outgoing networking working, but pings don't work (!) qemu-kvm -hda $IMAGE -m ${MEM:-512} &
That should be sufficient to get you up and running with basic outgoing networking (for instance as a test desktop instance). In qemu terms this is using 'user mode' networking which is easy but slow, so if you want better performance, or if you want to allow incoming connections (e.g. as a server) you need some extra magic, which I'll cover in a "subsequent post":kvm_bridging.
blog comments powered by Disqus