环境准备与系统安装
在开始使用KVM(Kernel-based Virtual Machine)构建虚拟机之前,需确保宿主机系统满足基本要求,KVM作为Linux内核的虚拟化模块,仅支持64位CPU且需支持虚拟化技术(如Intel VT-x或AMD-V),通过检查grep -E 'vmx|svm' /proc/cpuinfo确认CPU虚拟化支持已启用,若未启用,需在BIOS/UEFI中开启相关选项。

安装必要的软件包,以Ubuntu/Debian系统为例,执行sudo apt update && sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager命令,安装KVM核心组件、虚拟化管理工具及网络配置工具,安装后,验证KVM模块是否正常加载:lsmod | grep kvm,若显示输出则表示模块已成功加载,将当前用户添加至libvirt和kadmin用户组,以获得无root权限管理虚拟机的权限:sudo usermod -aG libvirt,kadmin $USER,完成后需重新登录使配置生效。
虚拟机创建与配置
创建虚拟机可通过命令行工具virt-install或图形界面工具virt-manager实现,此处重点介绍命令行方式,适合自动化部署场景。virt-install命令需指定虚拟机名称、虚拟机磁盘路径、内存大小、CPU核心数、操作系统类型及安装镜像路径等关键参数。
以下是一个典型的创建示例:
sudo virt-install \ --name vm-centos8 \ --vcpus 2 \ --memory 2048 \ --disk path=/var/lib/libvirt/images/vm-centos8.qcow2,size=20 \ --cdrom /path/to/CentOS-8.4-x86_64-dvd1.iso \ --network bridge=virbr0 \ --os-variant centos8.0 \ --graphics spice \ --noautoconsole
参数说明:

--name:定义虚拟机名称,需全局唯一;--vcpus:分配CPU核心数,建议根据宿主机资源合理分配;--memory:分配内存大小,单位为MB;--disk:指定虚拟机磁盘文件,path为存储路径,size为磁盘大小(GB),格式默认为qcow2(支持动态扩容);--cdrom:指定操作系统安装镜像路径,也可通过--location使用网络安装源;--network:配置网络,bridge=virbr0表示使用NAT模式的虚拟网络(默认由libvirtd创建);--os-variant:指定操作系统类型,优化安装过程(如驱动兼容性);--graphics:设置图形显示协议,spice支持高级图形功能,也可选择vnc或none(无界面)。
执行命令后,虚拟机将自动启动并进入操作系统安装界面,后续操作与物理机安装系统一致,需根据提示完成分区、用户配置等步骤。
虚拟机管理与优化
虚拟机创建后,可通过virsh命令行工具进行全生命周期管理,常用命令包括:
- 启动虚拟机:
sudo virsh start vm-centos8; - 关闭虚拟机:
sudo virsh shutdown vm-centos8(需系统支持 graceful shutdown); - 强制关闭:
sudo virsh destroy vm-centos8(直接断电,可能导致数据丢失); - 查看虚拟机状态:
sudo virsh list --all; - 暂停/恢复虚拟机:
sudo virsh suspend vm-centos8/sudo virsh resume vm-centos8; - 删除虚拟机:
sudo virsh undefine vm-centos8(仅移除配置,磁盘文件需手动删除)。
为提升虚拟机性能,可进行以下优化:
- 磁盘优化:若虚拟机磁盘为机械硬盘,可考虑升级为SSD以提升I/O性能;使用qcow2格式时,可通过
qemu-img resize动态扩容磁盘,例如扩容至30GB:qemu-img resize /var/lib/libvirt/images/vm-centos8.qcow2 +10G,然后在虚拟机内部使用fdisk或parted调整分区大小。 - CPU与内存热插拔:若宿主机硬件支持,可在虚拟机运行时调整CPU/内存配置,例如动态增加1个CPU核心:
sudo virsh setvcpus vm-centos8 3 --live; - 网络优化:默认NAT模式适用于简单场景,若需虚拟机与外部网络直接通信,可配置桥接网络(Bridge),将虚拟网卡桥接到物理网卡,实现与宿主机同网段访问。
高级功能与实战技巧
KVM支持多种高级功能,满足复杂应用场景需求。

- 快照管理:通过
sudo virsh snapshot-create-as vm-centos8 "snap1" "before update"创建快照,记录虚拟机当前状态;恢复快照使用sudo virsh snapshot-revert vm-centos8 snap1,删除快照则使用sudo virsh snapshot-delete vm-centos8 snap1,快照适用于系统更新、测试等场景,可快速回滚至稳定状态。 - 虚拟机克隆:使用
sudo virt-clone --original vm-centos8 --name vm-clone --file /var/lib/libvirt/images/vm-clone.qcow2克隆现有虚拟机,生成配置和磁盘完全相同的副本,适合批量部署相同环境的场景。 - 虚拟机迁移:通过
libvirt支持实时迁移(Live Migration),将运行中的虚拟机从一台宿主机迁移至另一台,需确保宿主机间网络互通、共享存储(如NFS),并配置好SSH免密登录。
结合virt-manager图形工具,可直观查看虚拟机资源使用情况(如CPU、内存、磁盘I/O),并通过控制台直接操作虚拟机界面,降低管理复杂度,对于生产环境,建议结合Ansible等自动化工具,实现虚拟机的批量创建、配置与管理,提升运维效率。
通过以上步骤,即可完成从环境准备到虚拟机部署、管理的全流程,KVM作为开源虚拟化技术,凭借其高性能、稳定性和与Linux内核的深度集成,已成为构建私有云、测试开发环境等场景的首选方案,掌握其核心功能与优化技巧,能有效提升资源利用率并简化运维工作。

















