KVM虚拟机域就是Linux内核虚拟化模块KVM配合QEMU和libvirt管理的一个虚拟机实例,它用XML描述,可通过virsh或virt-manager创建与管理。 理解域的概念,是掌握KVM虚拟化的第一步。
KVM虚拟机域是什么?先搞懂内核模块与libvirt的关系
很多人第一次听到“域”会以为是Windows域控,在KVM语境里,域(domain)就是一台虚拟机,libvirt用这个术语来统一描述虚拟机的CPU、内存、磁盘、网卡等配置,你可以把它看作一份可执行的XML说明书。
从KVM到QEMU再到域:三层架构拆解
- KVM:Linux内核模块,负责CPU和内存虚拟化,加载后出现
/dev/kvm设备。 - QEMU:用户态程序,模拟磁盘、网卡、显卡等硬件,KVM加速QEMU的执行。
- libvirt:管理抽象层,提供API和工具,域就是libvirt对QEMU进程的封装。
三者关系:KVM提供加速,QEMU提供设备,libvirt提供管理,域是最终交付给用户的虚拟机对象。
为什么说域不是普通的进程?
虽然每个运行中的域背后都有一个QEMU进程,但域有独立的XML配置文件、存储卷、网络接口和生命周期状态,用virsh list --all能看到所有域,包括运行中和已关闭的,域的状态包括运行、暂停、关闭、崩溃等。
业内专家指出,KVM在云基础设施中的采用率近年来持续上升,尤其在对成本和可控性敏感的场景中,域作为基本调度单元,其管理效率直接影响资源利用率。
KVM虚拟机域如何创建?在Ubuntu上从零到一的实操路径
创建域之前,先确认CPU支持虚拟化,Intel平台看vmx,AMD平台看svm。
创建前的环境检查与依赖安装

依次执行以下命令:
egrep -c '(vmx|svm)' /proc/cpuinfo,返回值大于0表示支持。lsmod | grep kvm,确认kvm模块已加载。sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utilssudo systemctl enable --now libvirtdsudo usermod -aG libvirt $USER,把当前用户加入libvirt组,避免每次用sudo。
安装完成后,virsh list --all应该能正常输出。
用virt-install命令行创建第一个域
准备一个Ubuntu ISO文件,然后运行:
virt-install --name=ubuntu2004
--memory=2048 --vcpus=2
--disk size=20,format=qcow2
--cdrom=/var/lib/libvirt/images/ubuntu-20.04.iso
--network network=default
--graphics spice
--os-variant=ubuntu20.04
参数含义:--name指定域名,--memory分配内存,--vcpus分配CPU核心,--disk创建磁盘,--cdrom挂载安装镜像,--network使用默认NAT网络,--graphics开启图形控制台,执行后会弹出virt-viewer窗口,进入系统安装流程。
用virt-manager图形界面创建域
桌面环境下更直观,打开virt-manager,点击“新建虚拟机”,选择本地ISO,分配CPU、内存、磁盘,网络选默认NAT,最后点击完成,virt-manager底层也是调用libvirt,效果与命令行一致。
创建后检查域状态
virsh list --all:查看所有域。virsh dominfo ubuntu2004:查看指定域的详细信息。virsh console ubuntu2004:连接串口控制台,退出按Ctrl+]。
KVM虚拟机域管理命令有哪些?virsh核心操作与日常维护

域创建之后,日常管理围绕生命周期、配置和资源调整展开。
生命周期管理:启动、停止、重启、删除
virsh start ubuntu2004:启动域。virsh shutdown ubuntu2004:发送ACPI关机信号,优雅停止。virsh destroy ubuntu2004:强制断电,相当于拔电源。virsh reboot ubuntu2004:重启域。virsh undefine ubuntu2004:删除域定义,磁盘文件默认保留。
配置修改与XML备份
域的所有配置都在/etc/libvirt/qemu/域名.xml,修改前先备份:
virsh dumpxml ubuntu2004 > backup.xmlvirsh edit ubuntu2004:直接编辑XML,保存后需重启域生效。virsh define backup.xml:从XML恢复域定义。
快照、迁移与资源调整
- 快照:
virsh snapshot-create-as ubuntu2004 snap1,用virsh snapshot-list ubuntu2004查看。 - 热调整内存:
virsh setmem ubuntu2004 4G --live。 - 热调整CPU:
virsh setvcpus ubuntu2004 4 --live,需域支持。 - 在线迁移:
virsh migrate --live ubuntu2004 qemu+ssh://目标主机/system。
KVM虚拟机域与VMware对比:企业选型该看哪些维度
选型没有绝对答案,行业共识认为,选择虚拟化平台需权衡成本、性能、生态与运维习惯,下面从几个维度对比。
| 维度 | KVM | VMware |
|---|---|---|
| 授权成本 | 开源免费 | 商业授权,按CPU或核心收费 |
| 性能表现 | 接近原生,依赖调优 | 稳定成熟,驱动优化好 |
| 管理工具 | virsh、virt-manager、OpenStack | vCenter、ESXi |
| 生态支持 | Linux发行版集成,云厂商广泛 | 企业级支持完善 |
| 适用场景 | 私有云、开发测试、大规模云 | 传统企业虚拟化、混合云 |
北京地区KVM虚拟机域部署价格大概多少?
KVM软件本身零授权费,北京地区部署成本主要看硬件和运维,一台二手双路服务器价格在几千元,新服务器从一万到数万不等,如果托管到IDC,机柜和带宽另算,运维人力方面,据统计,北京地区Linux运维工程师月薪中位数在1.5万到2.5万之间,小规模测试几乎零成本,大规模生产环境需综合计算服务器、网络、电力和人力。
KVM虚拟机域常见问题解答(Q&A)
KVM虚拟机域和容器有什么区别?
域是完整虚拟机,有独立内核,隔离性强,容器共享宿主机内核,启动快、开销小,需要强隔离或运行不同内核时选域,微服务快速迭代选容器。
KVM虚拟机域支持Windows吗?
支持,安装Windows时需要加载virtio驱动,尤其是磁盘和网卡驱动,使用--os-variant=win10等参数可以优化配置,图形界面用SPICE或VNC。
KVM虚拟机域如何查看IP地址?
对于默认NAT网络,执行virsh net-dhcp-leases default可以查看已分配IP,对于桥接网络,需登录域内用ip addr查看,也可以virsh domifaddr 域名获取接口地址。
KVM虚拟机域本质是libvirt管理的虚拟机实例,掌握virsh和virt-install就能完成大部分创建与管理任务。 对于追求开源成本和Linux生态的团队,KVM是值得深入的技术栈。
