Linux KVM(虚拟机技术)
KVM(Kernel-based Virtual Machine)是 Linux 内核的一个虚拟化模块,它将 Linux 系统转变为一个 type-1(裸金属)hypervisor。以下是 KVM 的核心概念和架构:
一、KVM 的核心架构
┌─────────────────────────────────────┐ │ 用户空间 (QEMU) │ │ - 模拟硬件设备 │ │ - I/O 处理 │ └────────────────┬────────────────────┘ │ /dev/kvm ┌─────────────────▼────────────────────┐ │ 内核空间 (KVM) │ │ - CPU虚拟化支持 (Intel VT/AMD-V) │ │ - 内存虚拟化管理 │ └─────────────────┬────────────────────┘ │ 硬件辅助虚拟化 ┌─────────────────▼────────────────────┐ │ 物理硬件 │ │ - CPU (支持虚拟化技术) │ │ - 内存 │ │ - 其他设备 │ └─────────────────────────────────────┘
二、主要组件
KVM 内核模块
kvm.ko:核心虚拟化模块kvm-intel.ko或kvm-amd.ko:处理器特定模块
QEMU:用户空间工具,提供设备模拟和 I/O 处理
Libvirt:虚拟化管理 API 和守护进程
管理工具:
virsh、virt-manager、virt-install等
三、KVM 的主要特性
硬件辅助虚拟化:利用 Intel VT-x 或 AMD-V 技术
内存管理:使用 Linux 内存管理系统,支持 KSM(Kernel Same-page Merging)
存储支持:支持 RAW、QCOW2 等多种格式
网络:支持 NAT、桥接、VLAN 等多种网络模式
实时迁移:支持在线迁移虚拟机
嵌套虚拟化:可以在虚拟机中运行 KVM
四、安装和配置示例(Ubuntu/Debian)
# 检查 CPU 是否支持硬件虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo # 安装 KVM 和相关工具 sudo apt update sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager # 将当前用户添加到 libvirt 组 sudo usermod -aG libvirt $USER # 启动并启用 libvirt 服务 sudo systemctl enable --now libvirtd # 验证安装 virsh list --all五、基本操作示例
# 使用 virt-install 创建虚拟机 sudo virt-install \ --name ubuntu-vm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=20 \ --os-variant ubuntu20.04 \ --network network=default \ --graphics vnc,listen=0.0.0.0 \ --cdrom /path/to/ubuntu.iso # 查看虚拟机状态 virsh list --all # 启动虚拟机 virsh start ubuntu-vm # 关闭虚拟机 virsh shutdown ubuntu-vm # 强制关闭 virsh destroy ubuntu-vm # 删除虚拟机 virsh undefine ubuntu-vm六、网络配置示例(桥接网络)
# 创建桥接接口 sudo nano /etc/netplan/01-netcfg.yamlnetwork: version: 2 renderer: networkd ethernets: enp0s3: dhcp4: false bridges: br0: interfaces: [enp0s3] dhcp4: true# 应用网络配置 sudo netplan apply # 在虚拟机中使用桥接网络 virt-install --network bridge=br0 ...KVM 是企业级虚拟化解决方案,性能接近物理机,是 OpenStack 等云平台的默认 hypervisor 选择。
