使用Veeam裸机恢复将Windows Server迁移到云端虚拟机

3 分钟阅读·Matthieu·p2vbare-metal-restorewindows-servermigrationvirtioveeam|

使用Veeam Agent裸机恢复将物理或虚拟Windows Server迁移到基于KVM的云端虚拟机。涵盖VirtIO驱动注入恢复介质、磁盘映射及恢复后验证。

Veeam Agent for Windows可以将完整的系统镜像恢复到完全不同的硬件上。这包括将物理服务器(或VMware/Hyper-V虚拟机)迁移到基于KVM的云端VPS。问题在于:KVM使用VirtIO半虚拟化驱动来处理存储和网络。如果恢复介质中没有这些驱动,恢复环境既无法识别目标磁盘,也无法访问备份存储库。

本指南将完整介绍整个过程:在源服务器上准备VirtIO驱动、构建包含这些驱动的恢复ISO、恢复到Virtua.Cloud虚拟机,以及验证恢复结果。

使用Veeam迁移Windows Server之前需要什么?

您需要在源服务器上安装Veeam Agent for Windows(独立模式6.3或更高版本,或由Veeam Backup & Replication管理的版本13),一个存储在网络可访问的SMB或NFS共享上的镜像级备份,以及VirtIO驱动包。源服务器必须运行Windows Server 2016或更高版本。

要求 详情
Veeam Agent for Windows v6.3+(独立模式)或v13(由VBR管理)
备份类型 镜像级(整台计算机或包含系统卷的卷级备份)
备份位置 目标VM网络可达的SMB共享或NFS导出
VirtIO驱动 virtio-win最新稳定版(当前为0.1.285)
Windows ADK 源服务器缺少Windows RE组件时需要
目标VM 磁盘大小 >= 源已用空间 + 10%余量

开始之前,确认Veeam Agent版本(Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "*Veeam*" }),检查所有卷的已用磁盘空间,并验证网络共享上存在最近的镜像级备份。

如何创建包含VirtIO驱动的Veeam恢复ISO?

下载VirtIO驱动包,在源服务器上安装,然后创建Veeam恢复ISO。"Include hardware drivers from this computer"选项会捕获已安装的VirtIO驱动并将其嵌入基于WinPE的恢复镜像中。这是将VirtIO存储和网络驱动放入恢复环境的唯一可靠方法。

为什么云端VM需要VirtIO驱动?

KVM虚拟机管理程序通过VirtIO半虚拟化接口暴露存储和网络设备。标准Windows驱动无法识别这些设备。恢复环境中没有VirtIO驱动,Veeam恢复向导就无法检测目标VM的磁盘,也无法通过网络连接到备份存储库。恢复在开始之前就会失败。

三个驱动对迁移至关重要:

驱动 用途 安装后的Device Manager条目
viostor / vioscsi VirtIO块存储或SCSI存储控制器 Red Hat VirtIO SCSI controller
NetKVM VirtIO网络适配器 Red Hat VirtIO Ethernet Adapter
Balloon 动态内存管理 VirtIO Balloon Driver

如何在源服务器上安装VirtIO驱动?

从Fedora virtio-win项目下载最新稳定版ISO。挂载并运行guest tools安装程序:

# Download the virtio-win ISO
Invoke-WebRequest -Uri "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso" -OutFile "C:\Temp\virtio-win.iso"

# Mount the ISO
$mount = Mount-DiskImage -ImagePath "C:\Temp\virtio-win.iso" -PassThru
$driveLetter = ($mount | Get-Volume).DriveLetter

# Run the guest tools installer (silent, all drivers)
Start-Process -FilePath "${driveLetter}:\virtio-win-guest-tools.exe" -ArgumentList "/silent" -Wait

安装程序会将NetKVM、viostor、vioscsi、Balloon等VirtIO驱动部署到Windows驱动存储中。确认安装结果:

Get-WindowsDriver -Online | Where-Object { $_.ProviderName -eq "Red Hat, Inc." } | Select-Object ClassName, Driver, ProviderName
ClassName   Driver         ProviderName
---------   ------         ------------
Net         oem12.inf      Red Hat, Inc.
SCSIAdapter oem13.inf      Red Hat, Inc.
SCSIAdapter oem14.inf      Red Hat, Inc.
System      oem15.inf      Red Hat, Inc.

输出列出了Net(NetKVM)、SCSIAdapter(viostor/vioscsi)和System(Balloon)类的条目。

如何将驱动嵌入恢复介质?

VirtIO驱动已在Windows驱动存储中,现在创建恢复ISO:

  1. 打开开始 > Veeam > Create Recovery Media
  2. Recovery Media Options步骤,选择ISO file作为介质类型
  3. 勾选Include hardware drivers from this computer。这会捕获刚安装的VirtIO驱动。
  4. 可选勾选Include network connection settings from this computer(如果目标VM将使用类似的网络配置)
  5. Include the following additional storage and network hardware drivers下,点击Add并指向已挂载的VirtIO ISO文件夹${driveLetter}:\作为备用。文件夹必须包含驱动的CAT、INF和SYS文件。不要添加超过1 GB的驱动,因为它们在启动时加载到RAM中,过大可能导致WinPE无法启动。
  6. 选择ISO的输出路径。命名要便于识别:veeam-recovery-virtio.iso
  7. 点击Create,等待向导完成

生成的ISO是一个包含Veeam恢复工具和VirtIO驱动的WinPE镜像。保持其可访问状态,您需要将它发送给Virtua.Cloud技术支持。

如何订购和准备目标VM?

在Virtua.Cloud订购一台Windows兼容的VM,确保磁盘空间足以容纳恢复的数据。在首次启动前将恢复ISO发送给技术支持进行挂载。

目标VM需要多大的磁盘?

目标磁盘至少要等于所有源卷已用空间之和再加10%余量。Veeam可以在恢复时缩小分区,但无法恢复到比实际数据更小的磁盘。

公式:目标磁盘 >= 总已用空间 x 1.1

以之前的例子(42.3 GB + 87.1 GB = 129.4 GB已用),至少需要143 GB。向上取整到最近的可用选项。

不要按照源磁盘的分配大小来选择。如果源服务器有500 GB的磁盘但只用了130 GB,160 GB的目标磁盘就够了。

如何让技术支持挂载ISO?

  1. 通过Virtua.Cloud控制面板订购VM。选择磁盘、内存和CPU满足工作负载需求的方案。
  2. 提交工单请求挂载自定义ISO。附上veeam-recovery-virtio.iso或提供下载链接。
  3. 要求技术支持将ISO设为主要启动设备,并在准备就绪后确认。
  4. 技术支持会确认ISO已挂载且VM将从其启动。

等待期间,从控制面板记下VM的网络信息:IP地址、子网掩码、网关和DNS服务器。在WinPE中配置网络时会用到。

如何将Veeam备份恢复到云端VM?

通过VNC控制台从恢复ISO启动VM,在WinPE中手动配置网络,连接到备份存储库,然后运行裸机恢复向导。

如何启动并访问恢复环境?

  1. 从Virtua.Cloud控制面板打开VM的VNC控制台
  2. VM从挂载的ISO启动,进入Veeam Recovery Media环境
  3. 等待WinPE桌面加载,显示Veeam Bare Metal Recovery界面

如果VM启动到UEFI shell或黑屏而非WinPE,联系技术支持验证启动顺序。ISO必须是第一启动设备。

如何在WinPE恢复环境中配置网络?

恢复环境需要网络访问才能连接备份存储库。云端VM在首次启动时很少获得DHCP地址。需要手动配置网络适配器。

  1. 在Veeam Recovery Media界面,点击Network Settings(右下角)
  2. 如果适配器列表为空,说明VirtIO网络驱动未加载。点击Load network adapter driver,在Hardware Drivers窗口中选择NetKVM驱动,点击Install
  3. 在列表中选择网络适配器。点击Properties
  4. 输入控制面板中VM的静态IP配置:
    • IP地址
    • 子网掩码
    • 默认网关
    • DNS服务器
  5. 点击OK应用

打开恢复环境中的命令提示符测试连通性(必要时按Shift+F10):

ping 8.8.8.8
ping your-backup-server.example.com

如果ping通但DNS解析失败,检查DNS服务器地址。对于SMB共享,直接测试路径:

net use \\backup-server\share /user:domain\username

如何连接到备份存储库?

  1. 回到Veeam界面,点击Bare Metal Recovery
  2. Backup Location,选择Network storage
  3. 选择Shared folder(SMB)或Linux-based(NFS)
  4. 输入备份的UNC路径:\\backup-server\share\VeeamBackup\ServerName
  5. 按提示输入凭据
  6. Veeam扫描位置并列出可用备份
  7. 选择服务器的备份并选取恢复点(通常选最近的)

如何将源磁盘映射到目标VM?

选择恢复点后,选择Entire computer作为恢复模式。Veeam打开Disk Mapping界面,右侧显示源卷,左侧显示目标磁盘。

如果目标磁盘不可见,点击Load driver并从Hardware Drivers列表安装VirtIO SCSI驱动(vioscsi或viostor)。

单磁盘目标VM的操作:

  1. 右键点击目标磁盘,选择Apply Backup Layout。这会在目标磁盘上重建源分区结构。
  2. 如果目标磁盘大于源磁盘,多余空间为未分配状态。之后可在Windows磁盘管理中扩展最后一个分区。
  3. 如果目标磁盘更小(但大于已用数据),Veeam会自动缩小分区以适配。继续前检查建议的布局。

对于多个源磁盘映射到单个目标磁盘的服务器,使用Customize disk mapping手动放置卷。右键点击目标磁盘的未分配空间,选择要恢复的源卷。使用Resize调整分区大小。

勾选Inject these drivers into operating system while performing bare metal recovery复选框。这会将VirtIO驱动写入恢复后的Windows安装中,防止因缺少存储驱动导致的启动失败。

点击Restore开始。持续时间取决于备份大小和备份存储库与VM之间的网络速度。100 GB的恢复通过1 Gbps链路大约需要15-20分钟。

恢复完成后应该检查什么?

恢复完成后,请求技术支持卸载ISO,将VM重启到Windows,验证驱动、网络和激活状态。

恢复后流程

  1. 请求卸载ISO。 打开工单,要求Virtua.Cloud卸载恢复ISO并将硬盘设为主要启动设备。
  2. 重启VM。 使用VNC控制台观察首次启动。Windows检测新硬件和配置驱动时可能比平时慢。
  3. 通过VNC登录。 在确认网络配置之前RDP无法使用。

如何验证VirtIO驱动是否已加载?

打开Device Manager检查是否有带黄色警告图标的设备。然后专门确认VirtIO驱动:

Get-PnpDevice | Where-Object { $_.FriendlyName -like "*VirtIO*" -or $_.FriendlyName -like "*Red Hat*" } | Select-Object Status, Class, FriendlyName
Status Class           FriendlyName
------ -----           ------------
OK     Net             Red Hat VirtIO Ethernet Adapter
OK     SCSIAdapter     Red Hat VirtIO SCSI controller
OK     System          VirtIO Balloon Driver

每条记录应显示OK。如果有条目显示ErrorDegraded,说明驱动安装不正确。在VM上下载VirtIO guest tools安装程序并运行:

# If drivers are missing post-restore
Invoke-WebRequest -Uri "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe" -OutFile "C:\Temp\virtio-win-guest-tools.exe"
Start-Process -FilePath "C:\Temp\virtio-win-guest-tools.exe" -ArgumentList "/silent" -Wait
Restart-Computer

如何验证网络和RDP?

恢复的系统可能保留了源服务器的IP配置。打开网络连接,将适配器更新为控制面板中VM分配的IP、子网掩码、网关和DNS。

使用Test-NetConnection -ComputerName 8.8.8.8 -Port 443测试出站连通性。然后从工作站尝试RDP连接。如果RDP无法连接,启用防火墙规则:

Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

P2V迁移后Windows是否需要重新激活?

是的,通常需要。P2V迁移改变了足够多的硬件标识符,Windows会将其视为新机器并要求重新激活。行为取决于许可证类型:

  • 零售/OEM许可证: 硬件变更触发重新激活。使用slmgr /ato尝试在线激活。失败时需要电话激活或向Microsoft提交工单。
  • KMS(批量许可): VM自动联系KMS服务器。运行slmgr /ato强制立即尝试激活。
  • MAK(多次激活密钥): 使用slmgr /ipk YOUR-MAK-KEY重新输入密钥,然后slmgr /ato
  • AVMA(自动虚拟机激活): 仅适用于运行Windows Server Datacenter的Hyper-V主机。不适用于KVM虚拟机。

检查当前激活状态:

slmgr /dli

弹出对话框显示许可证状态。"Licensed"表示激活成功。"Notification"或"Grace period"表示需要重新激活。

对于批量许可客户,还需验证KMS服务器能从新VM的网络访问到。

常见恢复故障排查

恢复后出现INACCESSIBLE_BOOT_DEVICE蓝屏

这是最常见的故障。Windows在启动时找不到VirtIO磁盘控制器的存储驱动。

原因: VirtIO存储驱动(vioscsi或viostor)未注入到恢复的操作系统中。要么恢复时"Inject these drivers"复选框未勾选,要么恢复介质中不包含VirtIO存储驱动。

解决方法: 重新从恢复ISO启动。不要运行完整恢复,而是打开命令提示符(Shift+F10),手动将VirtIO驱动加载到离线Windows安装中:

drvload X:\Drivers\vioscsi\2k22\amd64\vioscsi.inf

X:替换为恢复介质驱动所在的盘符,2k22替换为您的Windows Server版本文件夹(2k162k192k222k25)。加载驱动后,使用DISM将其永久注入离线操作系统:

dism /image:C:\ /add-driver /driver:X:\Drivers\vioscsi\2k22\amd64

如果问题仍未解决,重新运行完整恢复,确保VirtIO驱动正确嵌入恢复介质且"Inject these drivers"复选框已勾选。

WinPE中看不到网络适配器

原因: 恢复介质中缺少NetKVM驱动。

解决方法: 如果创建介质时添加了VirtIO ISO作为额外驱动源,在Network Settings界面点击Load network adapter driver,浏览到恢复介质上的NetKVM文件夹。选择匹配Windows版本的INF文件。

如果完全没有VirtIO驱动,需要先在源服务器上安装VirtIO驱动,然后重新创建恢复ISO。

磁盘映射界面中看不到目标磁盘

原因: WinPE中未加载VirtIO SCSI驱动。

解决方法: 在Disk Mapping步骤点击Load driver。从Hardware Drivers列表选择vioscsi或viostor驱动。如果驱动未列出,点击Load Driver并浏览到恢复介质上的驱动INF文件。

恢复失败因为目标磁盘太小

原因: 目标磁盘小于备份中的总数据量。

解决方法: 无法缩小到已用空间以下。要么订购更大磁盘的VM,要么在创建新备份前减少源服务器上的数据。删除临时文件,清理Windows Update缓存(Dism.exe /online /Cleanup-Image /StartComponentCleanup),在运行新的镜像级备份前移除不必要的数据。

恢复后Windows激活失败

原因: 硬件指纹已更改。这是任何P2V迁移后的预期行为。

解决方法: 零售密钥运行slmgr /ato。在线激活失败时使用电话激活:slui 4。批量许可密钥验证KMS服务器连通性:nslookup -type=srv _vlmcs._tcp.yourdomain.com。MAK密钥重新输入:slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX然后slmgr /ato


版权所有 2026 Virtua.Cloud。保留所有权利。 本内容为 Virtua.Cloud 团队原创作品。 未经书面许可,禁止复制、转载或再分发。