当前位置: 首页 > news >正文

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

# 查看虚拟机状态

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配置

<cpu mode='host-passthrough' check='none'>

  <topology sockets='1' cores='4' threads='1'/>

</cpu>

9.2 磁盘IO优化

# 使用virtio-scsi控制器

--disk path=...,bus=virtio,cache=none,io=native

# 或在XML中配置

<disk type='file' device='disk'>

  <driver name='qemu' type='qcow2' cache='none' io='native'/>

  ...

</disk>

9.3 网络优化

# 使用virtio网卡

--network bridge=br0,model=virtio

# 启用多队列(提升性能)

<interface type='bridge'>

  <source bridge='br0'/>

  <model type='virtio'/>

  <driver name='vhost' queues='4'/>

</interface>

十、故障排查

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 <vm>

关闭虚拟机

virsh shutdown <vm>

强制关闭

virsh destroy <vm>

开机自启

virsh autostart <vm>

查看VNC端口

virsh vncdisplay <vm>

查看虚拟机信息

virsh dominfo <vm>

编辑配置

virsh edit <vm>

查看网络

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

http://www.dtcms.com/a/611683.html

相关文章:

  • 西安知名的网站建设公司wordpress登录失败
  • 如何在会议决策错误后进行纠正与说明
  • 哪个网站免费h5模板多网络推广外包注意哪些
  • 网站的布局怎么做采集文章留在网站
  • 淘宝做导航网站织梦网站搬家教程
  • 男人直接做的视频网站注册网站会不会有问题
  • 在那个网站做直播好赚钱吗企业网站seo模板
  • 无锡网站建设开发外贸自建站类型
  • 晋江网站建设联系电话天眼查网站建设公司
  • 什么网站都有漏洞电脑上安装wordpress
  • 宁波网站搭建公司定制企业营销推广
  • ISTJ+RCI_突然的想法-称之为灵感
  • 手机做网站用什么软件吐鲁番高端网站建设平台
  • Java 黑马程序员学习笔记(进阶篇26)
  • 网站开发的进度怎么写网站开发里程碑
  • Xshell终端连接Ubuntu/Debian无颜色的解决方案
  • 国外推广网站有哪些网页设计介绍北京网站
  • 贵港网站建设兼职企业做网站需要什么
  • 怎样在网站做转向连接网站建设素材模板下载
  • 音乐网站建站如何做视频网站
  • 广东宇晟建设工程有限公司网站注册公司取名推荐
  • 网站开发遵循的标准或规范陕西政务服务网
  • 平板电脑可以做网站不张家港网站网络公司
  • docker中安装conda环境
  • 网站模块顺序调整云服务器服务安全
  • 网站开发和网页上传的说法用vscode做网站
  • Bootstrap Wells
  • 网站设计中下拉列表怎么做网费一年多少钱
  • 网站主页和子页风格如何统一提升网站权重的策略
  • 却持网站招聘网站代做