openEuler 22.03 ARM64 KVM虚拟化安装

适用于: openEuler 22.03 SP4 ARM64(aarch64)架构服务器

安装流程总览

环境检查 → 安装软件包 → 配置网络 → 启动服务 → 验证环境 → 创建虚拟机

一、环境检查

1.1 系统信息确认

查看系统架构(必须是aarch64)

uname -m

查看系统版本

cat /etc/openEuler-release

查看CPU信息

lscpu | grep -E "Architecture|CPU\(s\)|Model name"

1.2 虚拟化支持检查

检查虚拟化扩展

lscpu | grep Virtualization

检查KVM设备

ls -l /dev/kvm

如果/dev/kvm不存在,加载KVM模块

modprobe kvm

lsmod | grep kvm

1.3 查看网卡信息

查看所有网络接口

ip link show

查看网卡详细信息

nmcli device status

记录物理网卡名称(后面配置Bond需要,下图是我已经做过聚合的网卡,可忽略,不影响后续配置,只记住物理网卡名就行)

示例: enp125s0f0, enp125s0f1

二、软件包安装(一键完成)

2.1 核心虚拟化组件安装

更新系统

dnf update -y

安装虚拟化组

dnf groupinstall "Virtualization Host" -y

安装核心组件

dnf install -y \

qemu-kvm \

qemu-img \

qemu-system-aarch64 \

libvirt \

libvirt-client \

libvirt-daemon \

libvirt-daemon-driver-qemu \

virt-install \

virt-manager \

virt-viewer \

libguestfs-tools

安装ARM64 UEFI固件

dnf install -y edk2-aarch64

安装网络工具

dnf install -y \

bridge-utils \

NetworkManager \

net-tools

安装Web管理界面

dnf install -y \

cockpit \

cockpit-machines \

cockpit-storaged \

cockpit-networkmanager

安装VNC服务器

dnf install -y tigervnc-server

安装监控工具

dnf install -y htop iotop sysstat bash-completion

启动libvirtd

systemctl enable --now libvirtd

systemctl status libvirtd

三、网络配置(Bond+Bridge高可用)

3.1 配置说明

架构: 物理网卡(enp125s0f0 + enp125s0f1) → Bond0(主备) → Bridge(br0) → 虚拟机

优势: 网卡冗余 + 虚拟机直连物理网络

3.2 清理旧配置(如有)

查看现有连接

nmcli connection show

停止并删除旧的连接(根据实际情况调整)

for uuid in (nmcli -t -f UUID,DEVICE connection show \| grep ':-\*' | cut -d: -f1); do

echo "Deleting $uuid"

nmcli connection delete $uuid

done

3. 3 创建 Bond 聚合

假设你使用 模式 802.3ad (LACP) 或 mode=balance-rr (轮询),可以根据交换机支持选择。

创建 bond0

nmcli connection add type bond ifname bond0 con-name bond0 mode 802.3ad

添加物理网口到 bond0

nmcli connection add type bond-slave ifname enp125s0f0 master bond0

nmcli connection add type bond-slave ifname enp125s0f1 master bond0

设置 bond0 IP (静态为例)

nmcli connection modify bond0 ipv4.addresses 192.168.10.3/24

nmcli connection modify bond0 ipv4.gateway 192.168.10.1

nmcli connection modify bond0 ipv4.dns "8.8.8.8 114.114.114.114"

nmcli connection modify bond0 ipv4.method manual

nmcli connection modify bond0 ipv6.method ignore

启动 bond

nmcli connection up bond0

如果交换机不支持 LACP,可以使用 mode=balance-rr 或 mode=active-backup。

3. 4 在 Bond 上创建桥接 br0

创建桥接 br0,绑定到 bond0

nmcli connection add type bridge ifname br0 con-name br0

nmcli connection modify br0 bridge.stp no # 禁用生成树,可选

nmcli connection modify br0 ipv4.addresses 192.168.10.3/24

nmcli connection modify br0 ipv4.gateway 192.168.10.1

nmcli connection modify br0 ipv4.method manual

nmcli connection modify br0 ipv6.method ignore

将 bond0 作为桥接接口

nmcli connection add type bridge-slave ifname bond0 master br0

启动桥接

nmcli connection up br0

3. 5 验证网络状态

查看 bond 状态cat /proc/net/bonding/bond0

查看桥接状态

bridge link

ip addr show br0

测试网络,ping网关

ping -c 3 192.168.10.1

四、服务启动和配置

4.1 启动核心服务

启动libvirt服务

systemctl start libvirtd

systemctl enable libvirtd

启动日志服务

systemctl start virtlogd

systemctl enable virtlogd

检查服务状态

systemctl status libvirtd --no-pager

4.2 配置存储池(使用/home目录)

创建存储目录结构

mkdir -p /home/kvm/images # 虚拟机磁盘存储

mkdir -p /home/kvm/iso # ISO镜像存储

mkdir -p /home/kvm/nvram # UEFI NVRAM存储

mkdir -p /home/kvm/backup # 备份目录

设置权限

chmod 755 /home/kvm

chmod 755 /home/kvm/images

chmod 755 /home/kvm/iso

chmod 755 /home/kvm/nvram

chmod 755 /home/kvm/backup

设置SELinux上下文(如果启用了SELinux)

setenforce 0 2>/dev/null || true

chcon -R -t virt_image_t /home/kvm 2>/dev/null || true

停止并删除旧的default存储池(如果存在)

virsh pool-destroy default 2>/dev/null || true

virsh pool-undefine default 2>/dev/null || true

定义新的default存储池(指向/home/kvm/images)

virsh pool-define-as default dir --target /home/kvm/images

启动存储池

virsh pool-start default

设置开机自启

virsh pool-autostart default

创建ISO存储池(可选)

virsh pool-define-as iso dir --target /home/kvm/iso

virsh pool-start iso

virsh pool-autostart iso

virsh pool-list --all

virsh pool-info default

ls -lh /home/kvm/

4.3 启动Cockpit Web界面

启动Cockpit

systemctl start cockpit.socket

systemctl enable cockpit.socket

检查状态

systemctl status cockpit.socket --no-pager

显示访问地址

echo "Cockpit访问: https://$(hostname -I | awk '{print $1}'):9090"

4.4 配置VNC服务器(可选)

设置VNC密码

vncpasswd

创建启动配置

cat > ~/.vnc/xstartup << 'EOF'

#!/bin/sh

unset SESSION_MANAGER

unset DBUS_SESSION_BUS_ADDRESS

启动 GNOME 桌面环境

exec gnome-session &

EOF

设置权限

chmod +x ~/.vnc/xstartup

启动VNC服务器

vncserver :1

查看VNC进程

vncserver -list

五、防火墙配置

添加libvirt服务

firewall-cmd --permanent --add-service=libvirt

添加Cockpit

firewall-cmd --permanent --add-service=cockpit

添加VNC端口

firewall-cmd --permanent --add-port=5900-5910/tcp

firewall-cmd --permanent --add-port=5901/tcp

添加虚拟机VNC端口范围

firewall-cmd --permanent --add-port=5920-5950/tcp

重载防火墙

firewall-cmd --reload

验证配置

firewall-cmd --list-all

、创建第一个虚拟机

7.1 下载ARM64镜像

进入ISO存储目录

cd /home/kvm/iso

下载openEuler ARM64镜像(约4GB)

wget https://repo.openeuler.openatom.cn/openEuler-22.03-LTS-SP4/ISO/aarch64/openEuler-22.03-LTS-SP4-aarch64-dvd.iso

wget https://mirrors.openanolis.cn/anolis/23.3/isos/GA/aarch64/AnolisOS-23.3-aarch64-dvd.iso

查看下载的镜像

ls -lh /home/kvm/iso/

7.2 准备UEFI固件

NVRAM目录已在存储池配置时创建

/home/kvm/nvram

验证UEFI固件文件存在

ls -lh /usr/share/edk2/aarch64/

复制UEFI固件到NVRAM目录(可选,首次创建虚拟机时会自动生成)

确保 nvram 目录存在

mkdir -p /home/kvm/nvram && \

复制 UEFI 固件文件

cp /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /home/kvm/nvram/QEMU_EFI.fd && \

检查是否成功

-f /home/kvm/nvram/QEMU_EFI.fd \] \&\& echo "✓ UEFI固件准备完成" \|\| echo "⚠ 复制固件失败,请检查权限或磁盘空间" #### ******7.3 创建虚拟机(推荐方式)****** # 确保 nvram 目录存在 mkdir -p /home/kvm/nvram # 提前创建虚拟机磁盘,这里我使用了两块盘符,一块作为数据盘,一块作为系统盘 qemu-img create -f qcow2 /home/kvm/images/vm01_system.qcow2 500G qemu-img create -f qcow2 /home/kvm/images/vm01_data.qcow2 10T # 生成独立 VARS 文件(对应后续创建的虚拟机,建议前缀相同方便区分) cp /usr/share/edk2/aarch64/vars-template-pflash.raw /home/kvm/nvram/vm01_VARS.fd # 使用桥接网络 + UEFI启动 + /home存储 # 重点来了,我试了几次都未能成功启动openEuler-22.03-LTS-SP4的系统,无奈暂时放弃安装欧拉,同志可以试试其他欧拉版本 virt-install \\ --connect qemu:///system \\ --virt-type kvm \\ --name vm01 \\ --arch aarch64 \\ --vcpus 4 \\ --memory 4096 \\ --os-variant centos8 \\ --cdrom /home/kvm/iso/openEuler-22.03-LTS-SP4-aarch64-dvd.iso \\ --disk path=/home/kvm/images/vm01_system.qcow2,size=500,format=qcow2,bus=virtio \\ --disk path=/home/kvm/images/vm01_data.qcow2,size=10240,format=qcow2,bus=virtio \\ --network bridge=br0,model=virtio \\ --noautoconsole # 已成功安装AnolisOS,照着抄即可,如果失败建议更换其他版本AnolisOS virt-install \\ --connect qemu:///system \\ --virt-type kvm \\ --name vm02 \\ --arch aarch64 \\ --vcpus 4 \\ --memory 4096 \\ --os-variant centos8 \\ --cdrom /home/kvm/iso/AnolisOS-23.3-aarch64-dvd.iso \\ --disk path=/home/kvm/images/vm02_system.qcow2,size=500,format=qcow2,bus=virtio \\ --disk path=/home/kvm/images/vm02_data.qcow2,size=10240,format=qcow2,bus=virtio \\ --network bridge=br0,model=virtio \\ --noautoconsole ![](https://i-blog.csdnimg.cn/direct/ba7430df88514dcfbb03985e5c999be9.png) # 查看虚拟机状态 virsh list --all 1️⃣ 查看虚拟机状态 virsh list --all 2️⃣ 连接到安装控制台(文本模式) virsh console vm01 按 Ctrl+\] 退出控制台。 3️⃣ 查看磁盘信息 virsh domblklist vm02 4️⃣ 停止/启动虚拟机 virsh shutdown vm02 virsh start vm02 #如果你希望 通过 VNC 图形界面安装,可以指定端口,例如:不过需要你的电脑安装相关VNC 图形界面操作软件比如MobaXterm.exe等,网上搜很多哈 virt-viewer --connect qemu:///system vm02 ### ******八、虚拟机管理****** #### ******8.1 常用命令****** # 查看所有虚拟机 virsh list --all # 启动虚拟机 virsh start vm01 # 关闭虚拟机 virsh shutdown vm01 # 强制关闭 virsh destroy vm01 # 重启 virsh reboot vm01 # 开机自启 virsh autostart vm01 # 查看虚拟机信息 virsh dominfo vm01 # 查看VNC端口 virsh vncdisplay vm01 # 查看虚拟机IP(需要虚拟机运行且安装guest agent) virsh domifaddr vm01 # 编辑虚拟机配置 virsh edit vm01 #### ******8.2 连接虚拟机****** # 方式1: VNC客户端 # 地址: 服务器IP:VNC端口 # 例如: 192.168.10.3:5902 # 方式2: 串口控制台 virsh console vm01 # 方式3: virt-viewer virt-viewer vm01 # 方式4: Cockpit Web界面 # https://192.168.10.3:9090 ### ******九、性能优化****** #### ******9.1 CPU优化****** # 编辑虚拟机 virsh edit vm01 # 修改CPU配置 \ \ \ #### ******9.2 磁盘IO优化****** # 使用virtio-scsi控制器 --disk path=...,bus=virtio,cache=none,io=native # 或在XML中配置 \ \ ... \ #### ******9.3 网络优化****** # 使用virtio网卡 --network bridge=br0,model=virtio # 启用多队列(提升性能) \ \ \ \ \ ### ******十、故障排查****** #### ******10.1 常见问题****** **问题1: 虚拟机无法启动** # 查看详细错误 virsh start vm01 # 查看日志 tail -50 /var/log/libvirt/qemu/vm01.log # 验证UEFI固件 ls -l /usr/share/edk2/aarch64/ **问题2: 网络不通** # 检查网桥 ip addr show br0 bridge link show # 检查libvirt网络 virsh net-list --all virsh net-start br0 # 检查防火墙 firewall-cmd --list-all **问题3: VNC无法连接** # 查看VNC端口 virsh vncdisplay vm01 # 检查防火墙 firewall-cmd --list-ports # 检查监听 netstat -tlnp \| grep 590 ### ******十一、备份和快照****** #### ******11.1 创建快照****** # 创建快照 virsh snapshot-create-as vm01 snapshot1 "安装完成后的快照" # 查看快照列表 virsh snapshot-list vm01 # 恢复快照 virsh snapshot-revert vm01 snapshot1 # 删除快照 virsh snapshot-delete vm01 snapshot1 #### ******11.2 备份虚拟机****** # 备份单个虚拟机 backup_vm() { local VM_NAME=$1 local BACKUP_DIR="/home/kvm/backup" local BACKUP_DATE=$(date +%Y%m%d_%H%M%S) local VM_BACKUP_DIR="$BACKUP_DIR/${VM_NAME}_${BACKUP_DATE}" echo "备份虚拟机: $VM_NAME" mkdir -p $VM_BACKUP_DIR # 备份配置文件 virsh dumpxml $VM_NAME \> $VM_BACKUP_DIR/${VM_NAME}.xml # 关闭虚拟机(如果运行中) if virsh list --state-running \| grep -q $VM_NAME; then echo "关闭虚拟机..." virsh shutdown $VM_NAME sleep 10 fi # 备份磁盘文件 echo "备份磁盘文件..." cp /home/kvm/images/${VM_NAME}\*.qcow2 $VM_BACKUP_DIR/ # 备份NVRAM文件 if \[ -f /home/kvm/nvram/${VM_NAME}_VARS.fd \]; then cp /home/kvm/nvram/${VM_NAME}_VARS.fd $VM_BACKUP_DIR/ fi # 压缩备份 echo "压缩备份..." cd $BACKUP_DIR tar -czf ${VM_NAME}_${BACKUP_DATE}.tar.gz ${VM_NAME}_${BACKUP_DATE} rm -rf ${VM_NAME}_${BACKUP_DATE} echo "✓ 备份完成: $BACKUP_DIR/${VM_NAME}_${BACKUP_DATE}.tar.gz" } # 使用示例 backup_vm vm01 # 恢复虚拟机 restore_vm() { local BACKUP_FILE=$1 local RESTORE_DIR="/tmp/restore_$" echo "恢复虚拟机: $BACKUP_FILE" mkdir -p $RESTORE_DIR # 解压备份 tar -xzf $BACKUP_FILE -C $RESTORE_DIR # 恢复磁盘文件 cp $RESTORE_DIR/\*/\*.qcow2 /home/kvm/images/ # 恢复NVRAM文件 cp $RESTORE_DIR/\*/\*.fd /home/kvm/nvram/ 2\>/dev/null \|\| true # 恢复虚拟机定义 virsh define $RESTORE_DIR/\*/\*.xml # 清理临时目录 rm -rf $RESTORE_DIR echo "✓ 恢复完成" } # 使用示例 # restore_vm /home/kvm/backup/vm01_20250114_120000.tar.gz #### ******管理命令速查****** |---------|-------------------------| | 功能 | 命令 | | 查看虚拟机 | virsh list --all | | 启动虚拟机 | virsh start \ | | 关闭虚拟机 | virsh shutdown \ | | 强制关闭 | virsh destroy \ | | 开机自启 | virsh autostart \ | | 查看VNC端口 | virsh vncdisplay \ | | 查看虚拟机信息 | virsh dominfo \ | | 编辑配置 | virsh edit \ | | 查看网络 | virsh net-list --all | | 查看存储池 | virsh pool-list --all | 技术支持 openEuler官方文档: https://docs.openeuler.org/ KVM/QEMU文档: https://www.linux-kvm.org/ libvirt文档: https://libvirt.org/docs.html

相关推荐
偶像你挑的噻2 小时前
2-Linux驱动开发-内核;内核模块;设备树;设备树插件
linux·运维·驱动开发
张暮笛2 小时前
Linux内核LED驱动开发:实现可控制闪烁与常亮的GPIO驱动
linux·驱动开发
CheungChunChiu2 小时前
[特殊字符] 嵌入式音频接口全景图解:I2S、TDM、PDM、SPDIF、AC’97 与 PCM 的关系
linux·audio·pulseaudio
Nimsolax3 小时前
Linux网络数据链路层
linux·网络
小武~3 小时前
嵌入式网络编程实战:从Socket基础到高并发优化
linux·网络
大聪明-PLUS3 小时前
Rsync:管理员详细指南 第2部分
linux·嵌入式·arm·smarc
chenzhou__3 小时前
LinuxC语言文件i/o笔记(第十七天)
linux·c语言·笔记·学习
chenzhou__3 小时前
LinuxC语言文件i/o笔记(第十八天)
linux·c语言·笔记·学习
DisonTangor3 小时前
【百度拥抱开源】介绍ERNIE-4.5-VL-28B-A3B-Thinking:多模态AI的重大突破
人工智能·百度·语言模型·开源·aigc