KVM 虚拟化安装与配置报告
系统: openEuler 25.09 (x86_64)
CPU: AMD (支持 SVM 硬件虚拟化)
日期: 2026-07-12
物理网卡: enp2s0 (30:85:a9:a3:66:47)
宿主机 IP: 192.168.3.88/24
目录
1. 环境检查
1.1 CPU 虚拟化支持
CPU 标记中包含 svm(AMD SVM 虚拟化扩展),支持硬件加速。
1.2 KVM 内核模块
安装前已加载的模块:
kvm_amd 241664 0
ccp 196608 1 kvm_amd
kvm 1449984 1 kvm_amd
irqbypass 12288 1 kvm
1.3 原始网络配置
enp2s0: 192.168.3.88/24, gateway 192.168.3.1, DNS 192.168.3.1
2. 安装软件包
2.1 安装命令
dnf install -y qemu-kvm qemu-img libvirt libvirt-daemon \
libvirt-daemon-driver-qemu virt-manager bridge-utils \
virt-install libguestfs-tools
2.2 安装清单
| 包名 | 版本 | 说明 |
|---|---|---|
qemu / qemu-img |
8.2.0 | KVM 虚拟化引擎与磁盘镜像工具 |
libvirt |
9.10.0 | 虚拟化管理库 |
libvirt-daemon |
9.10.0 | 虚拟化管理守护进程 |
libvirt-daemon-driver-qemu |
9.10.0 | QEMU 驱动 |
virt-manager |
4.1.0 | 图形化管理界面 |
virt-install |
4.1.0 | 命令行创建虚拟机 |
bridge-utils |
1.7.1 | 桥接网络工具 |
libguestfs |
1.56.2 | 虚拟机磁盘编辑工具 |
共安装 135 个软件包(含依赖),总下载量 65 MB,占用磁盘 227 MB。
3. 桥接网络配置
3.1 网络拓扑
┌──────────────────┐
│ br0 │ ← 192.168.3.88/24, GW 192.168.3.1
│ (Linux Bridge) │
└────────┬─────────┘
│
┌────────┴─────────┐
│ enp2s0 │ ← 物理网卡(桥接从属端口)
│ (slave/port) │
└──────────────────┘
│
┌─────────┴──────────┐
│ 局域网交换机 │
│ (192.168.3.0/24) │
└────────────────────┘
3.2 配置步骤
使用 nmcli 创建桥接:
# 1. 创建桥接连接 br0,配置静态 IP
nmcli connection add type bridge con-name br0 ifname br0 \
ipv4.addresses 192.168.3.88/24 \
ipv4.gateway 192.168.3.1 \
ipv4.dns 192.168.3.1 \
ipv4.method manual
# 2. 将 enp2s0 作为桥接端口加入
nmcli connection add type ethernet con-name br0-port-enp2s0 \
ifname enp2s0 master br0
# 3. 重启网络
systemctl restart NetworkManager
3.3 持久化配置文件
| 文件 | 用途 |
|---|---|
/etc/sysconfig/network-scripts/ifcfg-br0 |
桥接网卡配置(IP、网关、DNS) |
/etc/sysconfig/network-scripts/ifcfg-br0-port-enp2s0 |
物理网卡桥接从属配置 |
/etc/sysconfig/network-scripts/ifcfg-enp2s0.bak |
原始 enp2s0 配置备份 |
4. 服务管理
4.1 启动与启用
systemctl start libvirtd
systemctl enable libvirtd
4.2 服务状态
| 服务 | 端口/套接字 | 作用 | 开机自启 |
|---|---|---|---|
libvirtd.service |
— | 主守护进程 | |
libvirtd.socket |
/var/run/libvirt/libvirt-sock | 客户端连接 | |
libvirtd-ro.socket |
只读套接字 | 只读管理 | |
libvirtd-admin.socket |
管理套接字 | 管理员接口 | |
virtlockd.socket |
— | 虚拟机锁管理 | |
virtlogd.socket |
— | 虚拟机日志管理 |
4.3 libvirt 默认网络
- 名称: default
- 模式: NAT
- 网段: 192.168.122.0/24
- DHCP: 192.168.122.2 — 192.168.122.254
- 状态: 活跃
5. 验证结果
5.1 检查项汇总
| 检查项 | 命令 | 结果 |
|---|---|---|
| KVM 内核模块 | lsmod | grep kvm |
|
| libvirtd 服务 | systemctl is-active libvirtd |
|
| 桥接网卡 IP | ip addr show br0 |
|
| 桥接成员状态 | bridge link show |
|
| 默认路由 | ip route |
|
| 网关连通性 | ping 192.168.3.1 |
|
| virsh 可用 | virsh list --all |
|
| virt-manager 可用 | which virt-manager |
|
| virt-install 可用 | which virt-install |
5.2 详细输出
=== 桥接网卡状态 ===
br0: UP 192.168.3.88/24
=== 桥接成员 ===
enp2s0: master br0 state forwarding
=== 路由表 ===
default via 192.168.3.1 dev br0
192.168.3.0/24 dev br0
=== libvirt 默认网络 ===
default (NAT) 192.168.122.0/24 — 活跃
6. 使用指南
6.1 图形化管理(推荐)
virt-manager
需要桌面环境(GNOME/KDE/Xfce 等)。在 virt-manager 中创建虚拟机时,网络选择
br0即可使用桥接模式。
6.2 命令行创建虚拟机
virt-install \
--name vm-name \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/vm-name.qcow2,size=20 \
--network bridge=br0 \
--cdrom /path/to/installer.iso \
--graphics vnc \
--os-variant detect=on,name=generic
6.3 常用 virsh 命令
virsh list --all # 查看所有虚拟机
virsh start <vm-name> # 启动虚拟机
virsh shutdown <vm-name> # 关闭虚拟机
virsh destroy <vm-name> # 强制关闭
virsh dominfo <vm-name> # 查看虚拟机信息
virsh vncdisplay <vm-name> # 查看 VNC 端口
virsh net-list --all # 查看网络列表
virsh net-info default # 查看网络详情
6.4 虚拟机磁盘路径
默认存储池:/var/lib/libvirt/images/
7. 故障排除
7.1 桥接网卡 DOWN
# 检查物理网卡是否已加入桥接
bridge link show
# 重新加载 NetworkManager 配置
nmcli connection reload
systemctl restart NetworkManager
7.2 libvirtd 无法启动
# 查看详细日志
journalctl -u libvirtd -n 50 --no-pager
# 检查配置文件语法
virsh net-dumpxml default
7.3 虚拟机无法获取 IP(桥接模式)
- 确认物理网线已连接
- 确认上级交换机未启用端口安全/MAC 过滤
- 检查
/var/lib/libvirt/dnsmasq/日志
7.4 恢复原始网络配置
# 删除桥接配置
nmcli connection delete br0
nmcli connection delete br0-port-enp2s0
# 恢复物理网卡配置
cp /etc/sysconfig/network-scripts/ifcfg-enp2s0.bak \
/etc/sysconfig/network-scripts/ifcfg-enp2s0
# 重启网络
systemctl restart NetworkManager
附录
A. 备份文件
ifcfg-enp2s0.bak— 原始物理网卡配置备份,位于/etc/sysconfig/network-scripts/
B. 关键端口
| 端口 | 用途 |
|---|---|
| 16509/TCP | libvirt TLS |
| 5900-59xx/TCP | VNC 控制台 |
| 16514/TCP | libvirt TCP |
| 69/UDP | DHCP (dnsmasq) |
C. 日志位置
| 日志 | 路径 |
|---|---|
| libvirt 日志 | /var/log/libvirt/libvirtd.log |
| QEMU 虚拟机日志 | /var/log/libvirt/qemu/<vm-name>.log |
| dnsmasq 日志 | /var/lib/libvirt/dnsmasq/ |
| 系统日志 | journalctl -u libvirtd |