需先确认CPU硬件虚拟化已启用、内核模块可加载,并完整部署qemu-kvm、libvirt、virt-install等核心组件,否则后续创建虚拟机时会报“no hypervisor found”或无法启动vCPU。

在CentOS 8上安装KVM虚拟机,需先确认CPU硬件虚拟化已启用、内核模块可加载,并完整部署qemu-kvm、libvirt、virt-install等核心组件,否则后续创建虚拟机时会报“no hypervisor found”或无法启动vCPU。
验证硬件与内核支持
执行 egrep -c '(vmx|svm)' /proc/cpuinfo,输出大于0表示CPU支持Intel VT-x或AMD-V;若为0,需进入BIOS开启虚拟化(常见于戴尔、联想品牌机,默认关闭)。
运行 lsmod | grep kvm,应同时看到 kvm 和 kvm_intel(Intel CPU)或 kvm_amd(AMD CPU);若仅显示kvm而无对应架构模块,说明内核未自动加载,需手动执行 modprobe kvm_intel 并检查是否被SELinux或secure boot阻止。
确认 【/dev/kvm 设备存在且当前用户有读写权限】,否则virt-install将拒绝创建虚拟机——普通用户需加入libvirt组:sudo usermod -a -G libvirt $(whoami),然后重新登录终端生效。
安装KVM软件栈
方法一:使用dnf安装官方仓库组件(推荐,兼容性最佳)
执行:sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer bridge-utils
方法二:若需支持UEFI启动和图形界面管理,额外追加:sudo dnf install -y virt-manager ovmf;ovmf提供OVMF_CODE.fd固件,否则创建UEFI虚拟机时会提示“no firmware found”。
注意:CentOS 8 Stream默认启用dnf模块仓库,无需手动配置BaseOS/AppStream源;但若曾禁用或修改过repo,需先运行 sudo dnf config-manager --set-enabled BaseOS AppStream 再安装。
启用并验证libvirtd服务
第一步:启动libvirt守护进程并设为开机自启sudo systemctl enable --now libvirtd
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
第二步:检查服务状态systemctl is-active libvirtd 应返回 active;若为 failed,常见原因是firewalld拦截了libvirt socket或polkit策略拒绝访问,此时可临时停用防火墙测试:sudo systemctl stop firewalld。
第三步:验证宿主机虚拟化能力
执行 sudo virt-host-validate,所有检查项必须显示 PASS;特别关注 QEMU: Checking for device assignment IOMMU support 若为WARN可忽略,但 QEMU: Checking if device /dev/vhost-net exists 为FAIL则需加载vhost_net模块:sudo modprobe vhost_net 并写入 /etc/modules-load.d/vhost.conf 持久化。
创建首个KVM虚拟机(命令行方式)
准备一个CentOS Stream 8的ISO镜像,例如放在 /var/lib/libvirt/images/CentOS-Stream-8-latest-x86_64-dvd1.iso。
执行以下单行命令完成创建与启动:sudo virt-install --name centos8-test --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/centos8-test.qcow2,size=20,format=qcow2 --cdrom /var/lib/libvirt/images/CentOS-Stream-8-latest-x86_64-dvd1.iso --os-variant centos8 --network network=default --graphics none --console pty,target_type=serial --import
该命令中 --os-variant centos8 是关键参数,它会自动启用KVM优化特性(如paravirtualized drivers),若错填为 centos7 或留空,安装后可能无法识别virtio磁盘或网卡。
启动后通过串口连接观察安装过程:sudo virsh console centos8-test,按提示完成系统安装;安装完毕后执行 sudo virsh shutdown centos8-test 正常关机,再用 sudo virsh start centos8-test 启动验证。










