KVM Virtualization Installation and Configuration Report

KVM Virtualization Installation and Configuration Report

System: openEuler 25.09 (x86_64)
CPU: AMD (SVM hardware virtualization support)
Date: 2026-07-12
Physical NIC: enp2s0 (30:85:a9:a3:66:47)
Host IP: 192.168.3.88/24


Table of Contents

  1. Environment Check
  2. Install Software Packages
  3. Bridge Network Configuration
  4. Service Management
  5. Verification Results
  6. Usage Guide
  7. Troubleshooting

1. Environment Check

1.1 CPU Virtualization Support

The CPU flags include svm (AMD SVM virtualization extension), indicating hardware acceleration support.

1.2 KVM Kernel Modules

Loaded modules before installation:

kvm_amd    241664  0
ccp        196608  1 kvm_amd
kvm       1449984  1 kvm_amd
irqbypass   12288  1 kvm

1.3 Original Network Configuration

enp2s0: 192.168.3.88/24, gateway 192.168.3.1, DNS 192.168.3.1

2. Install Software Packages

2.1 Installation Command

dnf install -y qemu-kvm qemu-img libvirt libvirt-daemon \
  libvirt-daemon-driver-qemu virt-manager bridge-utils \
  virt-install libguestfs-tools

2.2 Package List

Package Version Description
qemu / qemu-img 8.2.0 KVM virtualization engine and disk image tools
libvirt 9.10.0 Virtualization management library
libvirt-daemon 9.10.0 Virtualization management daemon
libvirt-daemon-driver-qemu 9.10.0 QEMU driver
virt-manager 4.1.0 Graphical management interface
virt-install 4.1.0 Command-line VM creation tool
bridge-utils 1.7.1 Bridge networking utilities
libguestfs 1.56.2 VM disk editing tools

Total: 135 packages installed (including dependencies), download size 65 MB, disk usage 227 MB.


3. Bridge Network Configuration

3.1 Network Topology

                    ┌──────────────────┐
                    │      br0         │  ← 192.168.3.88/24, GW 192.168.3.1
                    │   (Linux Bridge)  │
                    └────────┬─────────┘
                             │
                    ┌────────┴─────────┐
                    │     enp2s0       │  ← Physical NIC (bridge slave)
                    │  (slave/port)    │
                    └──────────────────┘
                              │
                    ┌─────────┴──────────┐
                    │    Local Network Switch  │
                    │  (192.168.3.0/24)   │
                    └────────────────────┘

3.2 Configuration Steps

Use nmcli to create the bridge:

# 1. Create bridge connection br0 with static 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. Add enp2s0 as a bridge port
nmcli connection add type ethernet con-name br0-port-enp2s0 \
  ifname enp2s0 master br0

# 3. Restart network service
systemctl restart NetworkManager

3.3 Persistent Configuration Files

File Purpose
/etc/sysconfig/network-scripts/ifcfg-br0 Bridge interface configuration (IP, gateway, DNS)
/etc/sysconfig/network-scripts/ifcfg-br0-port-enp2s0 Physical NIC bridge slave configuration
/etc/sysconfig/network-scripts/ifcfg-enp2s0.bak Backup of original enp2s0 configuration

4. Service Management

4.1 Start and Enable Services

systemctl start libvirtd
systemctl enable libvirtd

4.2 Service Status

Service Port/Socket Purpose Startup Enabled
libvirtd.service Main daemon :white_check_mark:
libvirtd.socket /var/run/libvirt/libvirt-sock Client connections :white_check_mark:
libvirtd-ro.socket Read-only socket Read-only management :white_check_mark:
libvirtd-admin.socket Admin socket Administrator interface :white_check_mark:
virtlockd.socket VM lock management :white_check_mark:
virtlogd.socket VM logging management :white_check_mark:

4.3 Default libvirt Network

  • Name: default
  • Mode: NAT
  • Subnet: 192.168.122.0/24
  • DHCP Range: 192.168.122.2 – 192.168.122.254
  • Status: Active

5. Verification Results

5.1 Check Summary

Check Item Command Result
KVM kernel module lsmod | grep kvm :white_check_mark: kvm_amd loaded
libvirtd service systemctl is-active libvirtd :white_check_mark: Running
Bridge IP ip addr show br0 :white_check_mark: 192.168.3.88/24
Bridge member status bridge link show :white_check_mark: enp2s0 state forwarding
Default route ip route :white_check_mark: default via 192.168.3.1 dev br0
Gateway connectivity ping 192.168.3.1 :white_check_mark: 0.3ms
virsh available virsh list --all :white_check_mark:
virt-manager available which virt-manager :white_check_mark: /usr/bin/virt-manager
virt-install available which virt-install :white_check_mark: /usr/bin/virt-install

5.2 Detailed Output

=== Bridge Interface Status ===
br0: UP 192.168.3.88/24

=== Bridge Members ===
enp2s0: master br0 state forwarding

=== Routing Table ===
default via 192.168.3.1 dev br0
192.168.3.0/24 dev br0

=== Default libvirt Network ===
default (NAT) 192.168.122.0/24 — Active

6. Usage Guide

6.1 Graphical Management (Recommended)

virt-manager

Requires desktop environment (GNOME/KDE/Xfce, etc.). When creating a VM in virt-manager, select network br0 to use bridged mode.

6.2 Command-Line VM Creation

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 Common virsh Commands

virsh list --all                    # List all VMs
virsh start <vm-name>              # Start VM
virsh shutdown <vm-name>           # Graceful shutdown
virsh destroy <vm-name>            # Force stop
virsh dominfo <vm-name>            # View VM info
virsh vncdisplay <vm-name>         # View VNC port
virsh net-list --all               # List networks
virsh net-info default             # View network details

6.4 VM Disk Path

Default storage pool: /var/lib/libvirt/images/


7. Troubleshooting

7.1 Bridge Interface DOWN

# Check if physical NIC is attached to bridge
bridge link show

# Reload NetworkManager config
nmcli connection reload
systemctl restart NetworkManager

7.2 libvirtd Fails to Start

# View detailed logs
journalctl -u libvirtd -n 50 --no-pager

# Check configuration syntax
virsh net-dumpxml default

7.3 VM Cannot Obtain IP (Bridged Mode)

  • Confirm physical Ethernet cable is connected
  • Ensure upstream switch does not have port security or MAC filtering enabled
  • Check logs in /var/lib/libvirt/dnsmasq/

7.4 Restore Original Network Configuration

# Remove bridge configuration
nmcli connection delete br0
nmcli connection delete br0-port-enp2s0

# Restore physical NIC config
cp /etc/sysconfig/network-scripts/ifcfg-enp2s0.bak \
   /etc/sysconfig/network-scripts/ifcfg-enp2s0

# Restart network
systemctl restart NetworkManager

Appendix

A. Backup Files

  • ifcfg-enp2s0.bak — Original physical NIC configuration, located at /etc/sysconfig/network-scripts/

B. Key Ports

Port Purpose
16509/TCP libvirt TLS
5900-59xx/TCP VNC console
16514/TCP libvirt TCP
69/UDP DHCP (dnsmasq)

C. Log Locations

Log Path
libvirt logs /var/log/libvirt/libvirtd.log
QEMU VM logs /var/log/libvirt/qemu/<vm-name>.log
dnsmasq logs /var/lib/libvirt/dnsmasq/
System logs journalctl -u libvirtd
1 Like