Linux KVM(虚拟机技术)
KVMKernel-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 内存管理系统支持 KSMKernel 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,size20 \ --os-variant ubuntu20.04 \ --network networkdefault \ --graphics vnc,listen0.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 bridgebr0 ...KVM 是企业级虚拟化解决方案性能接近物理机是 OpenStack 等云平台的默认 hypervisor 选择。