
KVM虚拟化与企业应用实践——KVM虚拟机的克隆、迁移及其磁盘管理与本地使用阿里云镜像文章浏览阅读48次。本文详细介绍了KVM虚拟机的克隆与迁移操作实践。主要内容包括1. 虚拟机的两种克隆方式模板克隆和手动克隆提供完整操作步骤2. 冷迁移和热迁移的实现方法重点解析热迁移在非共享存储和共享存储场景下的配置要点3. 使用AlibabaCloudLinux镜像创建虚拟机的具体步骤及优劣势分析4. qemu-img磁盘管理工具的使用示例。文章包含大量生产环境验证的命令和配置参数特别强调热迁移过程中的网络端口、存储复制等关键配置并对比了不同场景下的迁移方案选择是KVM虚拟化技术在企业环境实施操作指南https://coffeemilk.blog.csdn.net/article/details/162151961一、虚拟化管理平台WebVirtCloud1.1、WebVirtCloud是什么WebVirtCloud 是一个基于 web 的虚拟化私有云管理平台它允许用户通过浏览器管理和配置 KVM基于内核的虚拟机虚拟机。它是开源的并且可以作为一个 Web 服务运行提供了一个用户友好的界面来管理虚拟机的生命周期包括创建、编辑、启动、停止以及删除虚拟机。1.2、WebVirtCloud的安装部署WebVirtCloud有三种安装部署方法【使用脚本文件在线快速安装】【使用dokcer镜像安装】【手动安装】三种方法本文以Almalinux9.3系统为例进行安装部署。1.2.1、使用脚本文件在线快速安装WebVirtCloud注意在线快速安装仅支持的操作系统是Ubuntu 20.04/22.04Debian 10/11Rocky/Alma/OEL/RHEL 10。#使用脚本文件在线快速安装WebVirtCloud #在线快速安装仅支持的操作系统Ubuntu 20.04/22.04Debian 10/11Rocky/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 coffeemilkexample.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 root192.168.1.29 ssh-copy-id -i /data/webvirtcloud/ssh/id_ed25519.pub -p 22 root192.168.1.135 #4-直接拉取并运行WebVirtCloud的容器镜像 docker run -it --cgroupnshost --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-port6080/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芯片组硬件架构对比项目pci440FX PIIX4q35Intel 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芯片组启动、安全、系统支持对比项目pci440FXq35固件模式仅传统 Legacy BIOSUEFI 兼容性极差原生 UEFI完美支持 SecureBoot 安全启动TPM2.0 支持模拟兼容性差Win11 易蓝屏配套 vTPM2.0Windows11 强制要求标配Windows XP/2003完美兼容原生驱动适配无法正常引导极易蓝屏找不到硬盘Win10/Win11/Server2019不支持安全启动Win11 无法安装完全适配满足微软硬件安全要求Linux 老系统 (CentOS6/RHEL6)原生适配稳定运行缺少老 PCI 驱动启动异常现代 Linux (CentOS7/Ubuntu/Debian)可用但 IO、扩展性能弱性能最优官方推荐搭配磁盘加密 / 企业安全规范不支持 SecureBoot无法合规支持 EFI 变量、系统加密、企业安全策略kvm芯片组性能与扩展对比项目pci440FXq35磁盘 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 Server2. 需要显卡、万兆网卡、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”时是首先分析BdsDxeOVMF UEFI 固件的启动设备驱动模块Access DeniedUEFI 固件层面拒绝读取光驱内 ISO 引导文件并非 SATA 控制器硬件不兼容你 CD-ROM 已选 sata控制器本身无问题ISO镜像加载失败的根本原因是OVMF 固件会强制开启 Secure Boot未签名 ISO 引导时直接返回 Access Denied无法在 virt-manager/WebVirtCloud 界面提前关闭必须开机进入 UEFI 图形设置取消勾选Attempt Secure BootSecure 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操作、控制台内容配置、网络修改、虚拟机进行克隆、虚拟机迁移、设置可以操作虚拟机的用户如下图所示