KVM 虚拟化安装与配置报告

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. 环境检查
  2. 安装软件包
  3. 桥接网络配置
  4. 服务管理
  5. 验证结果
  6. 使用指南
  7. 故障排除

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 主守护进程 :white_check_mark:
libvirtd.socket /var/run/libvirt/libvirt-sock 客户端连接 :white_check_mark:
libvirtd-ro.socket 只读套接字 只读管理 :white_check_mark:
libvirtd-admin.socket 管理套接字 管理员接口 :white_check_mark:
virtlockd.socket 虚拟机锁管理 :white_check_mark:
virtlogd.socket 虚拟机日志管理 :white_check_mark:

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 :white_check_mark: kvm_amd 已加载
libvirtd 服务 systemctl is-active libvirtd :white_check_mark: 运行中
桥接网卡 IP ip addr show br0 :white_check_mark: 192.168.3.88/24
桥接成员状态 bridge link show :white_check_mark: enp2s0 state forwarding
默认路由 ip route :white_check_mark: default via 192.168.3.1 dev br0
网关连通性 ping 192.168.3.1 :white_check_mark: 0.3ms
virsh 可用 virsh list --all :white_check_mark:
virt-manager 可用 which virt-manager :white_check_mark: /usr/bin/virt-manager
virt-install 可用 which virt-install :white_check_mark: /usr/bin/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