在Azure和Proxmox之间迁移虚拟机的两种方式
2026-07-24
Microsoft Azure 等云平台以及 Proxmox 虚拟环境(Proxmox VE)等虚拟化解决方案,已成为现代 IT 团队不可或缺的工具。许多组织同时采用这两种技术,以兼顾成本、控制权、可扩展性或合规性需求。但若您需要在两者之间迁移虚拟机,又该如何操作?本指南将为您详细说明如何在 Proxmox 与 Azure 之间双向迁移虚拟机,并为不同技术水平的用户分别提供切实可行的操作步骤。
Azure 和 Proxmox 是什么?
Azure 是微软的公有云平台,提供可扩展的计算能力、多种存储选项、网络功能、托管数据库服务以及全球部署能力,可用于运行 Windows 或 Linux 工作负载。
Proxmox VE 是一个开源虚拟化平台,它通过统一的基于 Web 的管理界面,将基于 KVM 的虚拟机与 LXC 容器整合在一起。该平台深受寻求高灵活性且无需承担高昂许可费用的企业欢迎。
这两个平台都很强大,但用途不同:Azure 在支持全球访问的云工作负载方面表现出色;而 Proxmox 则在本地部署或私有云环境中大放异彩,适合需要对基础设施进行完全控制的场景。
为何将 Azure 与 Proxmox 连接?
您为何要将这两个环境连接起来?许多企业采用混合架构——部分工作负载出于安全或性能考虑保留在本地,而另一些则迁移至云端以实现弹性扩展或灾难恢复。有时您需要临时迁移用于测试;而有时则因成本节约或合规要求,需进行永久性迁移。
通过将 Azure 与 Proxmox 连接,您可获得灵活性:当业务需求变化时,可在不被单一环境锁定的情况下迁移虚拟机。您可先在云端测试新软件,再将其部署到本地;或当云端出现问题时,快速在本地恢复服务。
方法一:使用 qemu-img 和 AzCopy 将虚拟机从 Proxmox 迁移到 Azure
将虚拟机从 Proxmox 迁移到 Azure 涉及若干关键步骤:准备虚拟机,使其在云环境中正常运行;将其磁盘镜像转换为 Azure 支持的格式;上传镜像;最后在目标环境中创建新的虚拟机。
✅ 第一步:为迁移准备 Proxmox 虚拟机
开始任何迁移操作前,请务必先在源虚拟机的操作系统内正常关机,而不仅仅通过虚拟机管理程序关闭,以避免数据损坏。
对于Linux 虚拟机,请确认您的内核支持 Hyper-V 驱动程序(大多数现代发行版均支持)。如有可能,请安装Azure Linux 代理(waagent),它有助于在迁移后管理网络和诊断功能:
sudo apt-get update sudo apt-get install walinuxagent
请确保网络配置为 DHCP,除非您稍后计划使用静态分配。
对于Windows 虚拟机,请卸载任何特定于 KVM/Proxmox 的客户机工具(例如 QEMU 客户机代理)。如有可能,请在迁移前安装Azure 虚拟机代理——该代理可在 Azure 中启用密码重置和诊断功能:
从微软官方网站下载。
在 Windows 内运行安装程序。
将网络适配器设置为 DHCP 模式,以便迁移后自动获取地址。
检查您的启动方式:对于大多数使用上传磁盘(VHD)进行的迁移,Azure 期望使用 BIOS 启动(第一代虚拟机),而非 UEFI(第二代虚拟机)。如果您的虚拟机在 Proxmox 中使用 UEFI/OVMF 固件,请考虑在导出前将其切换回 BIOS 启动;或者查阅 Microsoft 关于通过托管磁盘支持第二代虚拟机的相关文档。
✅ 第2步:转换磁盘镜像
Proxmox 默认将虚拟机磁盘存储为 QCOW2 或 RAW 文件,但Azure 要求使用固定大小的 VHD 文件(即“页 Blob”)。请在您的 Proxmox 服务器上使用
qemu-img工具:qemu-img convert -f qcow2 -O vpc -o subformat=fixed /path/to/source.qcow2 /path/to/target.vhd
如果您的磁盘已经是 RAW 格式:
qemu-img convert -f raw -O vpc -o subformat=fixed /path/to/source.raw /path/to/target.vhd
如果希望在转换过程中显示进度(处理大容量磁盘时非常有用),请在上述任一命令末尾添加
-p参数!重要提示:仅固定大小的 VHD 文件可用——动态扩展的 VHD 将无法上传!同时请确认您的磁盘大小满足最低要求:Linux 操作系统磁盘至少为 30 GB;Windows 操作系统磁盘至少为 127 GB。
转换完成后,使用校验和验证文件完整性:
sha256sum /path/to/target.vhd
✅ 步骤 3:将磁盘映像上传到 Azure 存储
下一步:将此 .vhd 文件作为页 Blob 上传至 Azure Blob 存储账户。
在Azure 门户中,如有需要,请创建新的存储帐户。
在该账户中创建一个容器。
您可以使用 AzCopy 命令行工具,也可以直接通过浏览器上传——但 AzCopy 速度更快、更可靠:
azcopy copy '/path/to/target.vhd' 'https://<storageaccount>.blob.core.windows.net/<container>/target.vhd<SAS-token>' --blob-type PageBlob --overwrite=true
请相应替换 <storageaccount>、<container> 和 SAS-token(可从 Azure 门户生成 SAS 令牌)。
AzCopy 在传输过程中默认尽可能压缩数据——在网速较慢的连接下非常有用!
✅ 第4步:在Azure中创建托管磁盘和新虚拟机
上传完成后:
1. 在Azure 门户中,转到存储账户 > [您的账户] > 容器 > [您的容器]。
2. 找到您上传的 .vhd 文件。
3. 点击该选项;选择创建托管磁盘。
4. 填写必填字段(资源组/位置必须与目标虚拟机一致)。
5. 创建完成后:转到磁盘,选择新建的托管磁盘。
6. 单击从此磁盘创建虚拟机。
7. 根据原始规格配置CPU/内存/网络设置。
8. 完成向导;等待部署完成。
方法2:使用VHD导出和qemu-img将虚拟机从Azure迁移至Proxmox
将现有虚拟机从微软云环境迁回本地硬件遵循相似原理,但步骤顺序相反:先导出其磁盘镜像,再将其导入Proxmox VE作为一台新虚拟机。
✅ 第一步:准备源 Azure 虚拟机
第一步始终是在客户操作系统内部正常关机/关闭——而不仅仅是通过门户停止实例——以确保状态一致!
对于Windows 虚拟机,请在关机前考虑使用 Sysprep 工具对映像进行通用化处理:
1. 在 Windows 客户机中以管理员身份打开命令提示符,
2. 运行 sysprep.exe,
3. 选择“进入系统开箱体验”,
4. 勾选“泛化”复选框,
5. 选择“关机”。
此操作会移除唯一标识符,以避免克隆镜像在多个主机上后续使用时发生冲突;但除非要在下游创建模板或克隆镜像,否则并非严格必需。
对于Linux 虚拟机,请运行以下命令来取消置备代理数据:
sudo waagent -deprovision+user
然后完全关闭系统(sudo shutdown now)。
✅ 第2步:从Azure导出并下载磁盘映像
在Azure门户中:
1. 前往目标虚拟机,
2. 在“设置”下,点击“磁盘”。
3. 选择操作系统磁盘,
4. 在顶部菜单栏中选择“导出”,
5. 生成下载链接,通常仅在一小时内有效!
6. 立即复制链接;
7a)使用浏览器/cURL/wget 直接下载到工作站/服务器;
7b)或使用命令行直接下载到目标服务器:
wget "<exported-url>" -O /tmp/source.vhd
大文件下载可能需要数小时,具体取决于带宽——请使用 screen 或 tmux 会话,以免连接中断导致下载失败!
下载完成后,验证校验和是否与门户属性窗格中显示的原始值一致(如可用)(sha256sum /tmp/source.vhd)。
✅ 步骤 3:将磁盘转换为适用于 Proxmox VE 的格式
现在,将已下载的 .vhd 文件转换为大多数现代 KVM 环境首选的 QCOW2 格式:
qemu-img convert -f vpc -O qcow2 /tmp/source.vhd /var/lib/vz/images/{vmid}/vm-${vmid}-disk-0.qcow2或者根据存储后端类型/配置,使用 RAW 格式替代 QCOW2:
qemu-img convert -f vpc -O raw /tmp/source.vhd /var/lib/vz/images/{vmid}/vm-${vmid}-disk-0.raw随后设置正确的权限:
chmod +rw /var/lib/vz/images/<vmid>/vm-${vmid}-disk-0.qcow2如果通过网络传输而非本地存储,请使用 SCP、Rsync 等工具挂载已转换的文件,例如:
scp user@host:/tmp/source.qcow2 root@proxmox:/var/lib/vz/images/<vmid>/
✅ 第4步:将镜像导入新的或已有的Proxmox虚拟机
在Web界面中(数据中心 > 节点 > 创建虚拟机)新建一个空虚拟机,其CPU、内存和磁盘大小需与原虚拟机一致。当提示配置硬盘时,请选择“暂不创建磁盘”选项。
创建后,请手动连接已导入的驱动器:
1) 进入新创建的虚拟机条目(硬件选项卡)
2)点击“添加 > 现有磁盘”
3) 浏览/选择 /var/lib/vz/images/<vmid>/...qcow2
4) 设置总线类型 = VirtIO 块设备(“virtio”)
5) 保存 更改
启动机器!为获得最佳效果,请在首次启动后,在客户操作系统内安装最新的 VirtIO 驱动程序,这对 Windows 客户机尤其重要:
通过CD-ROM设备挂载ISO镜像,然后在通过Web图形界面(“控制台”按钮)提供的控制台/VNC会话正常登录后,在客户机系统内运行setup.exe。
在宣布成功之前,请彻底测试所有关键服务/应用程序!
如何使用 Vinchin 迁移 Proxmox 虚拟机?
Vinchin 备份与恢复 提供了一种简单可靠的方式,可通过其无代理备份及跨平台迁移功能,将虚拟机从 Proxmox VE 迁移到其他平台——例如 VMware 或另一台 Proxmox 节点。
与需要转换磁盘镜像并进行复杂重新配置的传统手动迁移方法不同,Vinchin 将迁移过程简化为两个关键步骤:备份与还原。您可以将 Proxmox 虚拟机备份至多种存储目标(包括 Azure Blob 存储),然后直接通过直观的网页界面将其还原到其他平台。
备份 Proxmox 虚拟机
✅ 步骤 1:备份 Proxmox 虚拟机

✅ 步骤2:恢复至目标平台(例如 Azure 或 VMware)

✅ 步骤 3:配置备份策略

✅ 第4步:提交任务。

恢复 Proxmox 虚拟机
✅ 步骤 1:选择还原点

✅ 步骤 2:选择还原目标位置

✅ 步骤3:选择恢复策略

✅ 第 4 步:审核并提交任务

凭借全球数千名满意客户,以及产品在可靠性与易用性方面持续获得的高评分,Vinchin 备份与恢复软件提供功能完整的为期15天的免费试用。立即下载安装程序,快速部署——亲身体验无缝的跨平台备份与迁移功能!
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Azure 与 Proxmox 之间迁移常见问题解答
问题1:能否在 Azure 虚拟机中安装 Proxmox VE,从而实现嵌套虚拟化?
A1:可以——在受支持的实例类型上——但由于微软提供的性能/稳定性保障有限,此配置不建议用于生产环境。
问题2:如何将我本地/本地部署的全部虚拟机直接备份到组织现有的 Blob 存储账户中?
A2:在您的虚拟机管理程序/导出工具集中配置备份任务,然后使用 AzCopy CLI 工具,并指向相应的容器/SAS 凭据。
问题3:我导入的虚拟机可以启动,但没有网络连接——有简单的解决方法吗?
A3:删除持久化网络规则文件 /etc/udev/rules.d/70-persistent-net.rules,然后重启系统——网卡接口将被重新识别。
结论
在 Microsoft Azure 与 Proxmox 之间迁移虚拟机,可为 IT 团队提供跨混合环境的无与伦比灵活性——既能在公有云中快速扩展规模,又可在本地实现精细控制。Vinchin 简化了跨平台迁移流程,在最大限度提升正常运行时间的同时,将风险降至最低。立即试用其免费版本,亲身体验无缝混合管理的魅力!