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。
#使用脚本文件在线快速安装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 -V1.2.2、使用dokcer镜像安装WebVirtCloud【推荐】
Docker容器实践——docker的安装与加速器配置https://blog.csdn.net/xiaochenXIHUA/article/details/160057920
实现Linux的ssh免密登录实操保姆级教程https://blog.csdn.net/xiaochenxihua/article/details/152375722
#【推荐】使用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 切换等同于更换物理主板,客户机大概率蓝屏、丢失磁盘、引导损坏;如需更换建议重装系统。 |
| 搭配固件规则 |
|
| 新建实例选型建议 |
|
注意:当系统启动后加载ISO镜像时提示“BdsDxe: loading Boot0006 "UEFI QEMU DVD-ROM QM00001 " BdsDxe: failed to load Boot0006 ... : Access Denied”时是首先分析:
BdsDxe:OVMF UEFI 固件的启动设备驱动模块;Access Denied:UEFI 固件层面拒绝读取光驱内 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 Manager→Secure 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操作、控制台内容配置、网络修改、虚拟机进行克隆、虚拟机迁移、设置可以操作虚拟机的用户);如下图所示:
