在 Ubuntu 服务器上配置 QEMU-KVM 虚拟机是一个系统化的过程,主要涉及硬件虚拟化支持检查、软件安装、网络配置和虚拟机管理。以下是详细步骤:
一、确认硬件虚拟化支持
- 检查 CPU 是否支持虚拟化:
grep -E 'vmx|svm' /proc/cpuinfovmx表示 Intel VT-x 支持,svm表示 AMD-V 支持。
- 检查内核模块是否加载:
lsmod | grep kvm若未加载,手动加载:
sudo modprobe kvm_intel # Intel CPU # 或 sudo modprobe kvm_amd # AMD CPU - 确保 BIOS/UEFI 中已启用虚拟化(如未启用需重启进入 BIOS 开启)。
二、安装必要软件包
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
qemu-kvm:核心虚拟化引擎libvirt:管理工具链(含virsh)bridge-utils:用于创建网桥网络virt-manager:图形化管理界面(可选,服务器环境通常用命令行)
💡 建议同时安装
spice-vdagent(Guest OS 内)以提升用户体验。
三、配置用户权限
将当前用户加入 libvirt 和 kvm 组,避免频繁使用 sudo:
sudo usermod -aG libvirt,kvm $USER
重要:执行后需重新登录或重启会话使组生效。
验证:
groups $USER
# 应包含 libvirt 和 kvm
四、启动并设置 Libvirt 服务
sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd
确认服务运行正常且监听默认端口(TCP 16509 / UNIX socket)。
五、配置网络(推荐:网桥模式)
方案 A:NAT 模式(简单,适合测试)
默认由 libvirt 自动创建 virbr0 网桥,无需额外配置。
方案 B:桥接模式(虚拟机直连物理网络)
假设物理网卡为 eth0:
sudo apt install bridge-utils
sudo nano /etc/network/interfaces.d/br0.conf
内容示例(Ubuntu 22.04+ 推荐使用 Netplan,此处以传统 ifupdown 为例):
auto br0
iface br0 inet static
address 192.168.1.100 # 替换为你的静态 IP
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
dns-nameservers 8.8.8.8
⚠️ 若使用 Netplan(Ubuntu 默认),请编辑
/etc/netplan/*.yaml,参考官方文档配置bridge字段。
重启网络:
sudo netplan apply
# 或
sudo systemctl restart networking
六、创建虚拟机(命令行方式)
1. 准备镜像(ISO 或磁盘文件)
# 下载 Ubuntu Server ISO(示例)
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
2. 使用 virt-install 创建 VM
sudo virt-install
--name ubuntu24
--ram 4096
--vcpus 2
--disk path=/var/lib/libvirt/images/ubuntu24.qcow2,size=40,format=qcow2
--cdrom ./ubuntu-24.04-live-server-amd64.iso
--network network=default
--graphics vnc,listen=0.0.0.0
--os-type linux
--os-variant ubuntu24.04
--boot cdrom,hd
--noautoconsole
参数说明:
--network network=default:使用 NAT 网桥;若用自定义网桥可改为--network bridge=br0,model=virtio--graphics vnc:启用 VNC 远程访问(需配合virt-viewer或浏览器 VNC 客户端)--noautoconsole:不自动附加控制台,便于后台管理
3. 启动与监控
sudo virsh start ubuntu24
sudo virsh list --all
sudo virsh console ubuntu24 # 查看实时输出(需 Guest 内配置 serial console)
七、高级配置(可选但推荐)
- 快照管理:
sudo virsh snapshot-create-as ubuntu24 snap1 "Initial setup" sudo virsh snapshot-list ubuntu24 sudo virsh snapshot-revert ubuntu24 snap1 - 热迁移/动态调整:需配合共享存储和 libvirt 集群(略复杂,生产环境考虑 Ceph/NFS)。
- 安全加固:
- 限制 VNC 绑定 IP:修改
/etc/libvirt/qemu.conf中vnc_listen = "127.0.0.1" - 启用 SELinux/AppArmor(Ubuntu 默认 AppArmor)
- 限制 VNC 绑定 IP:修改
八、故障排查要点
| 问题现象 | 可能原因 | 解决命令 |
|---|---|---|
error: Failed to get capability |
KVM 模块未加载 | sudo modprobe kvm_intel && dmesg | grep -i kvm |
Permission denied |
用户不在 libvirt/kvm 组 | 重新登录 + groups $USER |
| 网络不通 | 防火墙/网桥配置错误 | sudo ufw allow in on br0, ip addr show br0 |
| VNC 无法连接 | 未开放端口或认证缺失 | 检查 qemu.conf + sudo iptables -L |
九、替代方案对比
| 方案 | 适用场景 | 优势 |
|---|---|---|
virt-install + virsh |
自动化脚本、CI/CD | 轻量、可编程 |
virt-manager GUI |
桌面运维、教学 | 可视化操作 |
cloud-init 自动化 |
大规模部署 | 快速初始化系统 |
如需批量部署,可结合 Ansible 模板化创建 VM。
完成以上步骤后,即可在 Ubuntu 服务器上稳定运行 QEMU-KVM 虚拟机。后续可根据需求扩展存储(LVM/NFS)、高可用(Pacemaker+Corosync)等架构。需要具体某一步的详细解释或遇到问题,欢迎继续提问!
CLOUD技术笔记