只有运行 sudo kvm-ok 输出“kvm acceleration can be used”才表示kvm真正可用,需确认cpu支持(egrep '(vmx|svm)' /proc/cpuinfo)、bios开启虚拟化、内核模块加载成功、用户加入libvirt和kvm组。

kvm-ok 输出 “KVM acceleration can be used” 才算真正可用,光装包不等于能跑虚拟机。
怎么确认 CPU 真支持 KVM
很多人装完 qemu-kvm 就以为万事大吉,结果 virt-install 报错 “internal error: unable to start guest: Domain installation does not appear to have been successful”,根源常在硬件层没过筛。
-
egrep '(vmx|svm)' /proc/cpuinfo有输出只是基础门槛;Intel 要看到vmx,AMD 要看到svm - 必须进 BIOS 把
Intel Virtualization Technology或SVM Mode设为 Enabled(很多新主板默认是 Disabled) - 装完驱动后运行
sudo kvm-ok—— 只有输出包含 “KVM acceleration can be used” 才代表内核模块加载成功、硬件辅助开启正常 - 如果报 “
modprobe: FATAL: Module kvm-intel not found”,说明内核没编译该模块(常见于某些定制内核或旧 CentOS 6),得换标准 kernel 或手动编译
CentOS/RHEL 和 Ubuntu 的安装命令差异
包名、组名、依赖路径都不一样,混用会直接卡在 yum install kvm 找不到包——因为从 RHEL 7/CentOS 7 开始,kvm 包已废弃,统一归入 @virtualization 组或 qemu-kvm 主包。
- CentOS 7+/RHEL 7+:
sudo yum groupinstall "@virtualization"(注意引号和 @ 符号) - Ubuntu 20.04+:
sudo apt install qemu-kvm libvirt-daemon-system virtinst virt-manager(virt-manager是可选 GUI,但调试时很有用) - 别再用
yum install kvm kmod-kvm—— 这是 CentOS 5/6 时代的写法,现在会提示 No package available - 装完必须加当前用户进
libvirt和kvm用户组:sudo usermod -a -G libvirt,kvm $USER,否则virsh list权限拒绝
网卡不联网?大概率是桥接没配对
装完 KVM 后新建虚拟机 ping 不通外网,90% 出在网络配置上。默认的 nat 模式(virbr0)能让虚拟机上网,但宿主机无法主动访问它;要双向通信或生产部署,必须桥接到物理网卡。
- 不要直接改
ifcfg-eth0加BRIDGE=br0—— 容易导致宿主机断网;正确做法是新建ifcfg-br0并把 IP、子网等参数全挪过去 -
brctl show必须能看到br0下挂载着物理接口(如ens33),否则桥没生效 - 启动虚拟机时若报 “
cannot set interface eth0: Operation not supported”,说明没启用virtio-net驱动,要在virt-install加--network bridge=br0,model=virtio - 桥接模式下,虚拟机获得的是和宿主机同网段的 IP,不是 192.168.122.x —— 这点常被误判为“没联网”
第一次 virt-install 容易失败的三个硬坑
命令看着简单,但参数顺序、路径权限、镜像格式稍错一点就起不来,尤其新手容易在这些地方卡住半小时。
-
--disk路径必须可写,且所在分区要有足够空间;推荐用qcow2格式:--disk path=/var/lib/libvirt/images/centos8.qcow2,size=20,format=qcow2,bus=virtio -
--location指 ISO 时,路径必须是宿主机本地绝对路径,不能是http://或相对路径;若要用网络源,得用--pxe或指定--initrd-inject配合 kickstart - CentOS 7+ / RHEL 8+ 安装时需加
--extra-args "inst.ks=http://..."或至少--extra-args "console=ttyS0,115200n8",否则串口无输出、卡在黑屏 - 忘记加
--graphics vnc或--console pty,target_type=serial,会导致安装过程看不到界面,以为卡死
kvm-ok 验证和 usermod -G 加组这两步,而它们恰恰决定后续所有操作是否走得通。









