使用Veeam裸机恢复将Windows Server迁移到云端虚拟机
使用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:
- 打开开始 > Veeam > Create Recovery Media
- 在Recovery Media Options步骤,选择ISO file作为介质类型
- 勾选Include hardware drivers from this computer。这会捕获刚安装的VirtIO驱动。
- 可选勾选Include network connection settings from this computer(如果目标VM将使用类似的网络配置)
- 在Include the following additional storage and network hardware drivers下,点击Add并指向已挂载的VirtIO ISO文件夹
${driveLetter}:\作为备用。文件夹必须包含驱动的CAT、INF和SYS文件。不要添加超过1 GB的驱动,因为它们在启动时加载到RAM中,过大可能导致WinPE无法启动。 - 选择ISO的输出路径。命名要便于识别:
veeam-recovery-virtio.iso - 点击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?
- 通过Virtua.Cloud控制面板订购VM。选择磁盘、内存和CPU满足工作负载需求的方案。
- 提交工单请求挂载自定义ISO。附上
veeam-recovery-virtio.iso或提供下载链接。 - 要求技术支持将ISO设为主要启动设备,并在准备就绪后确认。
- 技术支持会确认ISO已挂载且VM将从其启动。
等待期间,从控制面板记下VM的网络信息:IP地址、子网掩码、网关和DNS服务器。在WinPE中配置网络时会用到。
如何将Veeam备份恢复到云端VM?
通过VNC控制台从恢复ISO启动VM,在WinPE中手动配置网络,连接到备份存储库,然后运行裸机恢复向导。
如何启动并访问恢复环境?
- 从Virtua.Cloud控制面板打开VM的VNC控制台
- VM从挂载的ISO启动,进入Veeam Recovery Media环境
- 等待WinPE桌面加载,显示Veeam Bare Metal Recovery界面
如果VM启动到UEFI shell或黑屏而非WinPE,联系技术支持验证启动顺序。ISO必须是第一启动设备。
如何在WinPE恢复环境中配置网络?
恢复环境需要网络访问才能连接备份存储库。云端VM在首次启动时很少获得DHCP地址。需要手动配置网络适配器。
- 在Veeam Recovery Media界面,点击Network Settings(右下角)
- 如果适配器列表为空,说明VirtIO网络驱动未加载。点击Load network adapter driver,在Hardware Drivers窗口中选择NetKVM驱动,点击Install。
- 在列表中选择网络适配器。点击Properties。
- 输入控制面板中VM的静态IP配置:
- IP地址
- 子网掩码
- 默认网关
- DNS服务器
- 点击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
如何连接到备份存储库?
- 回到Veeam界面,点击Bare Metal Recovery
- 在Backup Location,选择Network storage
- 选择Shared folder(SMB)或Linux-based(NFS)
- 输入备份的UNC路径:
\\backup-server\share\VeeamBackup\ServerName - 按提示输入凭据
- Veeam扫描位置并列出可用备份
- 选择服务器的备份并选取恢复点(通常选最近的)
如何将源磁盘映射到目标VM?
选择恢复点后,选择Entire computer作为恢复模式。Veeam打开Disk Mapping界面,右侧显示源卷,左侧显示目标磁盘。
如果目标磁盘不可见,点击Load driver并从Hardware Drivers列表安装VirtIO SCSI驱动(vioscsi或viostor)。
单磁盘目标VM的操作:
- 右键点击目标磁盘,选择Apply Backup Layout。这会在目标磁盘上重建源分区结构。
- 如果目标磁盘大于源磁盘,多余空间为未分配状态。之后可在Windows磁盘管理中扩展最后一个分区。
- 如果目标磁盘更小(但大于已用数据),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,验证驱动、网络和激活状态。
恢复后流程
- 请求卸载ISO。 打开工单,要求Virtua.Cloud卸载恢复ISO并将硬盘设为主要启动设备。
- 重启VM。 使用VNC控制台观察首次启动。Windows检测新硬件和配置驱动时可能比平时慢。
- 通过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。如果有条目显示Error或Degraded,说明驱动安装不正确。在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版本文件夹(2k16、2k19、2k22或2k25)。加载驱动后,使用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 团队原创作品。 未经书面许可,禁止复制、转载或再分发。
准备好亲自尝试了吗?
部署支持自定义ISO的Windows Server虚拟机 →