Cloud Computing 15 min read

Master KVM: Deploy and Manage Virtual Machines on Linux with Libvirt

This guide walks through KVM’s background, features, architecture, and step‑by‑step deployment—including hardware checks, module loading, qemu‑kvm options, bridge configuration, script creation, VM installation, and Libvirt‑based management with virt‑install and virt‑manager—providing a comprehensive tutorial for Linux virtualization.

MaGe Linux Operations
MaGe Linux Operations
MaGe Linux Operations
Master KVM: Deploy and Manage Virtual Machines on Linux with Libvirt

Introduction

KVM (Kernel Virtual Machine) is a virtualization solution originally developed by Qumranet, merged into the Linux kernel since version 2.6.20, and supported by Red Hat after acquiring Qumranet in 2008. This article explains how to deploy and manage KVM.

KVM Overview

Features

KVM runs on x86 CPUs with Intel VT or AMD‑V, uses the kvm.ko kernel module (or kvm‑intel.ko / kvm‑amd.ko) and a modified QEMU ( qemu‑kvm) as the user‑space controller. Memory management relies on the Linux kernel, and KVM can use any storage supported by Linux. Performance reaches about 95 % of native speed, and it scales to many CPUs and large memory.

Architecture

KVM consists of a kernel module and QEMU that emulates hardware; each VM is a regular Linux process managed by the kernel.

KVM architecture diagram
KVM architecture diagram

Platform Deployment

Hardware detection

Check CPU flags for virtualization support: egrep --color '(vmx|svm)' /proc/cpuinfo If the output contains vmx (Intel) or svm (AMD), the hardware supports KVM.

Load modules:

modprobe kvm
modprobe kvm_intel   # or kvm_amd
lsmod | grep kvm

Install management tools

yum install qemu-kvm qemu-kvm-tools -y
ln -s /usr/libexec/qemu-kvm /usr/sbin/

qemu‑kvm command options

Common options include:

-name name – set VM name

-M machine – select machine type

-m megs – RAM size

-cpu model – CPU model

-smp … – SMP configuration

-drive … – define disk devices

-net … – network configuration

Create disk image

qemu-img create -f qcow2 -o size=50G,preallocation=metadata /kvm/images/centos6.qcow2

Configure bridge

vim /etc/sysconfig/network-scripts/ifcfg-br0

Set DEVICE=br0, TYPE=Bridge, ONBOOT=yes, BOOTPROTO=none, IPADDR=172.16.10.124, PREFIX=16, GATEWAY=172.16.0.1, DNS1=172.16.0.1 vim /etc/sysconfig/network-scripts/ifcfg-eth0 Set DEVICE=eth0, TYPE=Ethernet, ONBOOT=yes, BRIDGE=br0

service network restart

Bridge scripts

#!/bin/bash
switch=br0
if [ -n "$1" ]; then
  ip link set $1 up
  sleep 1
  brctl addif $switch $1
  exit 0
else
  echo "Error: No Interface."
  exit 1
fi
#!/bin/bash
switch=br0
if [ -n "$1" ]; then
  brctl delif $switch $1
  ip link set $1 down
  exit 0
else
  echo "Error: No Interface."
  exit 1
fi
chmod -R +x /kvm/script/

Install a VM with qemu‑kvm

yum install tigervnc -y
qemu-kvm -name "centos6.6" \
 -m 512 -smp 2 \
 -drive file=/kvm/images/centos6.qcow2,media=disk,format=qcow2 \
 -drive file=CentOS-6.6-x86_64-bin-DVD1.iso,media=cdrom \
 -net nic -net tap,ifname=vnet0,script=/kvm/script/qemu-ifup,downscript=/kvm/script/qemu-ifdown \
 -boot order=dc,once=d

VNC server runs on ::1:5900; connect with vncviewer :5900.

Libvirt‑based management

Libvirt provides an API and CLI tools to simplify VM lifecycle management. Install components:

yum install libvirt virt-manager virt-viewer python-virtinst -y

Start the daemon: service libvirtd start Create a bridge with libvirt:

virsh iface-bridge eth0 br0

virt‑install

virt‑install creates VMs via libvirt. Common options:

-n NAME – VM name

-r MEMORY – RAM in MB

--vcpus … – CPU count

--cpu … – CPU model

-c CDROM – installation media

--network … – network configuration

--disk … – storage definition

--boot … – boot order

--autostart – start VM on host boot

Example virt‑install command

virt-install -n "centos6.6" \
 --vcpus=2 -r 512 -c CentOS-6.6-x86_64-bin-DVD1.iso \
 --disk path=/kvm/images/centos6.6.qcow2,bus=virtio,size=50,sparse \
 --network bridge=br0,model=virtio --force

virt‑manager

virt‑manager is a Python‑based graphical front‑end that uses libvirt to manage VMs. After mounting the installation ISO and configuring an HTTP repository, start the GUI with virt-manager & and create a new VM, optionally using network installation.

Conclusion

KVM can be managed directly with qemu‑kvm commands or more conveniently through libvirt tools such as virt‑install and virt‑manager; the choice depends on personal preference.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

cloud computingLinuxVirtualizationSystem AdministrationQEMUKVMlibvirt
MaGe Linux Operations
Written by

MaGe Linux Operations

Founded in 2009, MaGe Education is a top Chinese high‑end IT training brand. Its graduates earn 12K+ RMB salaries, and the school has trained tens of thousands of students. It offers high‑pay courses in Linux cloud operations, Python full‑stack, automation, data analysis, AI, and Go high‑concurrency architecture. Thanks to quality courses and a solid reputation, it has talent partnerships with numerous internet firms.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.