KVM虚拟化需三步:一、BIOS启用VT-x/AMD-V并验证;二、加载kvm及厂商模块,确认/dev/kvm存在;三、安装qemu-kvm、libvirt等工具链并配置桥接网络。

如果您计划在Linux服务器上启用KVM虚拟化能力,但系统尚未具备运行虚拟机的基础环境,则可能是由于硬件虚拟化未启用、内核模块未加载或必要软件包缺失所致。以下是完成KVM虚拟机安装与配置的多种可行路径:
一、验证并启用CPU硬件虚拟化支持
此步骤确保物理CPU具备Intel VT-x或AMD-V指令集,并已在BIOS/UEFI中激活,这是KVM正常工作的前提条件。
1、执行命令检查CPU是否报告虚拟化标志:
grep -Eoc '(vmx|svm)' /proc/cpuinfo
2、若返回值为0,运行以下命令进一步确认:
lscpu | grep Virtualization
3、若输出显示“Virtualization: None”,需重启服务器并进入BIOS/UEFI设置界面,在Configuration、Security或Advanced菜单中查找Intel Virtualization Technology、Intel VT-x或AMD-V选项,将其设为Enabled。
4、保存设置后重启,再次运行grep命令验证输出值大于0。
二、加载KVM内核模块
即使CPU支持虚拟化,若kvm及相关厂商模块未被Linux内核加载,/dev/kvm设备将不可用,导致所有虚拟机操作失败。
1、检查当前已加载的KVM相关模块:
lsmod | grep -E '^(kvm|kvm_intel|kvm_amd)'
2、若无任何输出,依次手动加载基础模块:
sudo modprobe kvm
3、根据CPU厂商加载对应扩展模块:
Intel平台执行:sudo modprobe kvm_intel
AMD平台执行:sudo modprobe kvm_amd
4、验证/dev/kvm设备是否存在且权限正确:
ls -l /dev/kvm
输出应显示crw-rw-rw-且所属组为kvm。
三、安装KVM核心工具链(Ubuntu/Debian系)
该方案适用于使用apt包管理器的发行版,提供图形界面与命令行双模管理能力。
1、更新软件包索引:
sudo apt update
2、安装完整KVM运行时组件:
sudo apt install -y qemu-kvm virt-manager virt-install libvirt-daemon-system libvirt-clients bridge-utils
3、确保libvirtd服务已启用并运行:
sudo systemctl enable --now libvirtd
4、将当前用户加入kvm及libvirt组以获得无密码管理权限:
sudo usermod -aG kvm,libvirt $USER
5、重新登录或执行newgrp libvirt使组变更生效。
四、安装KVM核心工具链(CentOS/RHEL 7/8系)
该方案适配yum或dnf包管理器,强调最小化依赖与服务稳定性,适合生产环境部署。
1、对于CentOS 7或RHEL 7:
sudo yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-install virt-viewer bridge-utils
2、对于CentOS 8/RHEL 8或Fedora:
sudo dnf install -y @virtualization
3、启动并设为开机自启:
sudo systemctl enable --now libvirtd
4、验证libvirt守护进程状态:
sudo systemctl status libvirtd | grep "active (running)"
5、检查KVM加速是否可用:
sudo virt-host-validate qemu
关键项“QEMU: Checking for device /dev/kvm”应显示PASS。
五、配置桥接网络(实现虚拟机直连局域网)
默认NAT网络仅允许虚拟机访问外网,桥接模式可使虚拟机获取与宿主机同网段IP,便于SSH、Web等双向通信。
1、查看物理网卡名称:
ip -o link show | awk -F': ' '{print $2}' | grep -v '\(lo\|vir\|docker\|br\)' | head -n1
2、创建桥接接口配置文件(以CentOS 7为例):
sudo vi /etc/sysconfig/network-scripts/ifcfg-br0
3、填入以下内容(根据实际网卡名与网络参数调整):
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
4、修改原物理网卡配置,移除IP并绑定至桥接:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加一行:
BRIDGE=br0
5、重启网络服务:
sudo systemctl restart network
确认br0已获取IP且能ping通网关。

















