基于Ubuntu服务器如何配置QEMU-KVM虚拟机?

在 Ubuntu 服务器上配置 QEMU-KVM 虚拟机是一个系统化的过程,主要涉及硬件虚拟化支持检查、软件安装、网络配置和虚拟机管理。以下是详细步骤:


一、确认硬件虚拟化支持

  1. 检查 CPU 是否支持虚拟化
    grep -E 'vmx|svm' /proc/cpuinfo
    • vmx 表示 Intel VT-x 支持,svm 表示 AMD-V 支持。
  2. 检查内核模块是否加载
    lsmod | grep kvm

    若未加载,手动加载:

    sudo modprobe kvm_intel    # Intel CPU
    # 或
    sudo modprobe kvm_amd      # AMD CPU
  3. 确保 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 内)以提升用户体验。


三、配置用户权限

将当前用户加入 libvirtkvm 组,避免频繁使用 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.confvnc_listen = "127.0.0.1"
    • 启用 SELinux/AppArmor(Ubuntu 默认 AppArmor)

八、故障排查要点

问题现象 可能原因 解决命令
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)等架构。需要具体某一步的详细解释或遇到问题,欢迎继续提问!

云服务器