KVM虚拟化与企业应用实践——虚拟化管理平台WebVirtCloud安装部署与使用教程

KVM虚拟化与企业应用实践------KVM虚拟机的克隆、迁移及其磁盘管理与本地使用阿里云镜像文章浏览阅读48次。本文详细介绍了KVM虚拟机的克隆与迁移操作实践。主要内容包括:1. 虚拟机的两种克隆方式(模板克隆和手动克隆),提供完整操作步骤;2. 冷迁移和热迁移的实现方法,重点解析热迁移在非共享存储和共享存储场景下的配置要点;3. 使用AlibabaCloudLinux镜像创建虚拟机的具体步骤及优劣势分析;4. qemu-img磁盘管理工具的使用示例。文章包含大量生产环境验证的命令和配置参数,特别强调热迁移过程中的网络端口、存储复制等关键配置,并对比了不同场景下的迁移方案选择,是KVM虚拟化技术在企业环境实施操作指南https://coffeemilk.blog.csdn.net/article/details/162151961

一、虚拟化管理平台WebVirtCloud

1.1、WebVirtCloud是什么

WebVirtCloud 是一个基于 web 的虚拟化私有云管理平台,它允许用户通过浏览器管理和配置 KVM(基于内核的虚拟机)虚拟机。它是开源的,并且可以作为一个 Web 服务运行,提供了一个用户友好的界面来管理虚拟机的生命周期,包括创建、编辑、启动、停止以及删除虚拟机。

1.2、WebVirtCloud的安装部署

WebVirtCloud有三种安装部署方法【使用脚本文件在线快速安装】【使用dokcer镜像安装】【手动安装】三种方法;本文以Almalinux9.3系统为例进行安装部署。

1.2.1、使用脚本文件在线快速安装WebVirtCloud

注意:在线快速安装仅支持的操作系统是:Ubuntu 20.04/22.04,Debian 10/11,Rocky/Alma/OEL/RHEL 10。

bash 复制代码
#使用脚本文件在线快速安装WebVirtCloud
#在线快速安装仅支持的操作系统:Ubuntu 20.04/22.04,Debian 10/11,Rocky/Alma/OEL/RHEL 10。
#0-检查系统当前python版本;
#注意:若系统的python版本<3.10则无法使用在线安装操作【若升级后,强行将默认python使用 alternatives 命令修改为升级后的python版本会导致firewalld、dnf、yum、systemd 等相关工具内部依赖系统 dbus、firewalld 底层绑定的内容都发生故障,无法使用(如:服务启动失败、防火墙规则异常、dnf 崩溃)】
python3 -V

#1-创建对应的目录并进入
mkdir -p /data/webvirtcloud
cd /data/webvirtcloud

#2-下载在线安装脚本进行安装
wget https://raw.githubusercontent.com/retspen/webvirtcloud/master/install.sh
chmod 744 install.sh
# run with sudo or root user
./install.sh



#注意:若是安装python3.11版本且强行将系统默认的python设置为安装的python3.11则会导致系统相关的底层工具故障
#1-安装python3.11版本,且使用alternatives命令强行将系统默认的python修改为刚安装的python3.11版本则会导致系统firewalld、dnf、yum、systemd 等相关工具内部依赖系统 dbus、firewalld 底层绑定的内容都发生故障,无法使用(如:服务启动失败、防火墙规则异常、dnf 崩溃)
dnf install -y python3.11 python3.11-devel python3.11-pip
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 11
alternatives --set python3 /usr/bin/python3.11

#2-修复使用alternatives命令强行将系统默认的python修改为刚安装的python3.11版本进行恢复
#2.0-清理你之前添加的 alternatives 条目
alternatives --remove python3 /usr/bin/python3.11
#2.1-删除你之前用 alternatives 创建的错误软链
rm -f /usr/bin/python3
#2.2-恢复系统原生软链接(如:指向 python3.9)
ln -s /usr/bin/python3.9 /usr/bin/python3
#2.3-验证
python3 -V

#3-若必须使用新安装的python3.11则可设置系统全局使用python作为变量操作,然后将所需使用python的脚本或程序的变量修改为python
python -V
echo "alias python=/usr/bin/python3.11" >> /etc/profile
echo "alias pip=/usr/bin/pip3.11" >> /etc/profile
source /etc/profile
python -V

1.2.2、使用dokcer镜像安装WebVirtCloud【推荐】

Docker容器实践------docker的安装与加速器配置https://blog.csdn.net/xiaochenXIHUA/article/details/160057920

实现Linux的ssh免密登录实操保姆级教程https://blog.csdn.net/xiaochenxihua/article/details/152375722

bash 复制代码
#【推荐】使用dokcer镜像安装WebVirtCloud【不用污染当前系统的环境】

#1-创建指定目录配置WebVirtCloud的相关配置
mkdir -p /data/webvirtcloud
cd /data/webvirtcloud/
mkdir ssh

#2-生成私钥(若已经有则不必生成;默认路径是【~/.ssh】)且将公私钥复制一份到【/data/webvirtcloud/ssh】目录下
ssh-keygen -t ed25519 -C "coffeemilk@example.com"
ll ~/.ssh
cp -p ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub /data/webvirtcloud/ssh/
ll /data/webvirtcloud/ssh/

#3-将公钥添加到需要WebVirtCloud免密登录的的KVM虚拟机上(如:192.168.1.29、192.168.1.135)
ssh-copy-id -i /data/webvirtcloud/ssh/id_ed25519.pub -p 22 root@192.168.1.29
ssh-copy-id -i /data/webvirtcloud/ssh/id_ed25519.pub -p 22 root@192.168.1.135

#4-直接拉取并运行WebVirtCloud的容器镜像
docker run -it --cgroupns=host --tmpfs /tmp --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup  -v /data/webvirtcloud/dbconfig:/srv/webvirtcloud/dbconfig -v /data/webvirtcloud/ssh:/var/www/.ssh -p 6080:80 --privileged -d --name webvirtcloud swr.cn-east-3.myhuaweicloud.com/coffeemilk/webvirtcloud:v1

#5-初始化WebVirtCloud容器的数据库配置(192.168.1.29是当前服务器的IP,6080是刚才拉取并运行WebVirtCloud的容器镜像放开的端口)
docker ps
docker exec webvirtcloud /srv/startup.sh 192.168.1.29 6080

#6-放开防火墙的6080端口
firewall-cmd --add-port=6080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

#7-打开浏览器访问部署了该WebVirtCloud容器所在服务器的IP:6080即可【默认账号与密码都是:admin】
ip a

#8-设置容器开机自启(前提是docker也要设置开启自启)
docker update --restart always webvirtcloud
systemctl enable docker
#验证容器是否开启了开机自启配置(如下命令结果显示包含【"Name": "always"】内容则表示开启了)
docker inspect webvirtcloud | grep -A3 RestartPolicy

二、虚拟化管理平台WebVirtCloud的使用

2.1、WebVirtCloud的配置

2.1.1、修改默认用户密码

点击左上角的扳手图标(🔧)选择【用户】进入对应的管理界面,然后选择admin用户后面的铅笔图标(✏️)进入个人信息编辑界面,选择该界面下的【密码-->this form】即可进入密码修改界面输入【新密码、确认密码】后点击【变更】按钮即可完成更改,如下图所示:

2.1.2、修改基础设置

点击左上角的扳手图标(🔧)选择【设置】进入对应的设置管理界面,可以进行语言的设置及其默认创建KVM虚拟机的配置,拉到最下面的【VM NIC Type 】选择【virtio】后自动保存,如下图所示:

2.2、WebVirtCloud的计算节点

2.2.1、WebVirtCloud中添加计算节点

点击顶部的【计算节点】(所谓的计算节点就是KVM-QEMU虚拟机所在的宿主机)可通过【TCP、SSH、TLS、本地】四种方式添加;通常使用SSH添加计算节点(填写计算节点的别名、域名或IP、登录账号、细节填写说明也可不用填写【一般是在WebVirtCloud所在服务器上使用了免密登录配置】)最后点击【保存】按钮即可添加上;若没有问题则添加的该计算节点状态会显示【已连接】;若状态显示"未连接"则点击顶部的【实例】进行查看详情;点击该计算节点右侧的【概览图标】即可查看到该宿主机下所有虚拟机的详情。如下图所示:

2.2.2、WebVirtCloud中指定计算节点添加系统iso镜像

点击顶部的【计算节点】界面计算节点界面,然后选择对应节点右侧的【概览图标】进入节点管理界面,然后选择【存储】接着点击右上角的【加号图标(+) 】选择【ISO】且在路径下填写该计算节点上存储系统iso镜像的路径后点击【创建】按钮即可(这样添加系统iso镜像后,后续再创建新的虚拟机就可以使用这些系统iso镜像了),如下图所示:

2.2.3、WebVirtCloud中指定计算节点创建虚拟机实例

点击顶部的【计算节点】界面计算节点界面,然后选择对应节点右侧的【概览图标】进入节点管理界面,选择【实例-->右上角的加号图标】跟进提示界面即可创建新的虚拟机实例,如下图所示:

kvm芯片组硬件架构对比项目 pc(i440FX + PIIX4) q35(Intel Q35 + ICH9)
底层总线架构 传统 PCI 总线,无原生 PCIe,靠桥转接 原生完整 PCIe 总线,支持 MMCFG、PCIe 热插拔、AER
南桥芯片 PIIX4 老式南桥 ICH9 现代南桥
中断控制器 老式 PIRQ,多核多设备易中断冲突 完整 IO-APIC、vIOMMU,多路 CPU / 多外设稳定
默认磁盘控制器 IDE (PATA),无原生 AHCI 内置 AHCI SATA,支持 NCQ、多盘队列、磁盘热插拔
USB 版本支持 最高 USB2.0,端口数量少 原生支持 USB2.0/USB3.0,扩展端口更多
显卡直通 (VFIO) 兼容性差,易黑屏、性能损耗大,不推荐 完美支持显卡直通,性能损耗极低
网卡 / HBA 直通 多设备直通不稳定,识别异常 PCIe 直通标准方案,多硬件隔离稳定
kvm芯片组启动、安全、系统支持对比项目 pc(i440FX) q35
固件模式 仅传统 Legacy BIOS,UEFI 兼容性极差 原生 UEFI,完美支持 SecureBoot 安全启动
TPM2.0 支持 模拟兼容性差,Win11 易蓝屏 配套 vTPM2.0,Windows11 强制要求标配
Windows XP/2003 完美兼容,原生驱动适配 无法正常引导,极易蓝屏找不到硬盘
Win10/Win11/Server2019+ 不支持安全启动,Win11 无法安装 完全适配,满足微软硬件安全要求
Linux 老系统 (CentOS6/RHEL6) 原生适配,稳定运行 缺少老 PCI 驱动,启动异常
现代 Linux (CentOS7+/Ubuntu/Debian) 可用,但 IO、扩展性能弱 性能最优,官方推荐搭配
磁盘加密 / 企业安全规范 不支持 SecureBoot,无法合规 支持 EFI 变量、系统加密、企业安全策略
kvm芯片组性能与扩展对比项目 pc(i440FX) q35
磁盘 IO 性能 IDE 速度上限低,无队列优化,高负载延迟高 AHCI 多队列,随机 / 顺序读写性能大幅领先
CPU 多核扩展 超过 16 核易出现 IO 卡顿、中断拥堵 32 核以上大虚拟机调度、中断更均衡
硬件热插拔 仅老旧 PCI 设备有限支持 PCIe 网卡、硬盘、设备在线热插拔
PCI 插槽扩展 插槽数量少,拓扑老旧 支持多级 PCIe 交换机,可挂载大量外设
virtio-gpu 显卡 兼容性一般,画面卡顿 完美适配 virtio-gpu,桌面云流畅
分类 pc(i440FX) q35
推荐使用场景 1. Windows XP、2003 等老旧系统 2. CentOS6/RHEL6 老业务工控机 3. 轻量单盘单网卡简单虚拟机 4. 无直通、无 Win11 需求的旧业务 1. Win10/11、新版 Windows Server 2. 需要显卡、万兆网卡、HBA 硬件直通 3. 数据库、多硬盘高 IO 业务 4. 软路由、多网卡多设备扩展 5. 需要 UEFI、TPM、安全启动加密 6. 现代 Linux 生产业务
优点 兼容古董操作系统,架构简单,老旧驱动适配 PCIe 原生、性能强、直通稳定、支持安全启动、扩展性拉满
缺点 无 PCIe、IO 性能差、不支持 Win11、无法硬件直通 不兼容 XP、2003、CentOS6 等老旧系统
行业趋势 QEMU 官方标记为弃用老旧机型 现代虚拟化标准默认芯片组
kvm芯片组操作关键注意点 说明
不可直接切换芯片组开机 同一实例 pc ↔ q35 切换等同于更换物理主板,客户机大概率蓝屏、丢失磁盘、引导损坏;如需更换建议重装系统。
搭配固件规则 * pc 芯片组必须选择BIOS 传统启动。 * q35 必须搭配UEFI才能使用 TPM2.0 与安全启动。
新建实例选型建议 * 老旧工控 / XP 系统选择 pc (i440FX)芯片组。 * 日常服务器、桌面虚拟机、直通设备、Win11选择 q35 芯片组。

**注意:**当系统启动后加载ISO镜像时提示"BdsDxe: loading Boot0006 "UEFI QEMU DVD-ROM QM00001 " BdsDxe: failed to load Boot0006 ... : Access Denied"时是首先分析:

  • BdsDxe:OVMF UEFI 固件的启动设备驱动模块;
  • Access DeniedUEFI 固件层面拒绝读取光驱内 ISO 引导文件,并非 SATA 控制器硬件不兼容(你 CD-ROM 已选 sata,控制器本身无问题);

ISO镜像加载失败的根本原因是 :OVMF 固件会强制开启 Secure Boot,未签名 ISO 引导时直接返回 Access Denied;无法在 virt-manager/WebVirtCloud 界面提前关闭,必须开机进入 UEFI 图形设置取消勾选Attempt Secure Boot(Secure Boot 机制的原理是:UEFI 会校验 ISO 内bootx64.efi引导程序的数字签名,只有微软 / 厂商可信证书签名的介质才允许加载;绝大多数通用 Linux、Windows 原版 ISO 不带私钥签名,直接被 OVMF 拦截,抛出Access Denied)。

**解决方法是:**关闭 OVMF固件UEFI引导界面中的 Secure Boot(详细的操作方法是:

  • 重启虚拟机,在 VNC 控制台快速按 Esc 进入 OVMF UEFI 设置界面;

  • 进入菜单 Device ManagerSecure Boot Configuration

  • Attempt Secure Boot 选项从 Enabled 修改为 Disabled(操作方法是

    按下键盘 空格键 Space ,方括号 [ ] 内会出现 / 取消标记:

    • 框内有内容 = 启用 Secure Boot(当前默认状态,导致 Access Denied)

    • 框内空白 = 关闭 Secure Boot(目标 Disabled 状态)

      按空格直到 Attempt Secure Boot 后面的方框为空。

    );

  • 按 F10 保存配置,重启虚拟机,即可正常从 SATA CD-ROM ISO 引导系统安装了

2.2.4、修改虚拟机实例的配置

若需要对虚拟机的实例配置进行修改,则必须先关闭虚拟机;然后在点击【调整配置】可对(CPU、内存、磁盘进行调整);也可以点击【快照】对虚拟机创建快照;点击【设置】可对(启动内容顺序调整、磁盘与cd-rom操作、控制台内容配置、网络修改、虚拟机进行克隆、虚拟机迁移、设置可以操作虚拟机的用户);如下图所示: