Understanding KVM Virtualization: From Basics to Advanced Monitoring
This article explains virtualization concepts, the relationship between virtualization and cloud computing, details KVM architecture and installation, and shows how to manage and monitor KVM virtual machines using tools like libvirt, virt‑manager, virsh, and BCC tracing.
Virtualization is the logical abstraction, isolation, and reallocation of resources, ranging from platform, application, storage, network, and device virtualization, while the narrow sense refers to running multiple operating systems on a single computer.
The goal is efficient, flexible, isolated, and secure resource utilization, providing a reliable and scalable computing environment.
Relationship with Cloud Computing
Cloud computing is defined as a model delivering dynamically scalable virtualized resources as a service over the Internet.
It builds on virtualization, offering higher‑level abstractions such as VM instances, containers, and function services, with multi‑tenant, automated, elastic features.
Virtualization supplies the resource pool and management capabilities that enable cloud resource sharing and dynamic allocation.
KVM Virtualization Technology
KVM (Kernel‑based Virtual Machine) is a full‑virtualization solution using hardware‑assisted virtualization. It integrates into the Linux kernel (since 2.6) and turns the kernel into a hypervisor, while I/O devices are handled either by QEMU emulation or virtio.
Each KVM guest corresponds to a Linux process; each vCPU maps to a thread within that process, allowing the kernel’s scheduler and optimization mechanisms to manage VMs.
KVM relies on CPU hardware virtualization support (Intel VT‑x or AMD‑V), with optional additional hardware features improving performance.
Installation and Management
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-managerStart and enable the libvirtd service:
sudo systemctl start libvirtd
sudo systemctl status libvirtd
sudo systemctl enable libvirtdManage VMs with virt-manager (GUI) or virsh (CLI). Common virsh commands include: virsh list – list running VMs virsh start <domain> – start a VM virsh shutdown <domain> – shut down a VM virsh reboot <domain> – reboot a VM virsh create <xmlfile> – create from XML virsh destroy <domain> – force stop virsh undefine <domain> – remove configuration virsh console <domain> – access console virsh dominfo <domain> – show info virsh domstate <domain> – show state
KVM Architecture
KVM consists of a kernel module (architecture‑agnostic kvm and architecture‑specific kvm_intel or kvm_amd) and the QEMU userspace tool that provides device emulation and interacts with the kernel via /dev/kvm.
Each guest runs as a separate QEMU process; the kernel module handles CPU and memory virtualization, while QEMU simulates BIOS, PCI/PCIe, disks, network, graphics, etc.
Monitoring KVM Events
The BCC example kvm_hypercall.py demonstrates tracing of KVM events such as kvm_entry, kvm_exit, and kvm_hypercall, showing exit reasons and hypercall numbers.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Open Source Linux
Focused on sharing Linux/Unix content, covering fundamentals, system development, network programming, automation/operations, cloud computing, and related professional knowledge.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
