将Hyper-V虚拟磁盘迁移至SMB共享时最终出现文件未找到错误
Hyper-V虚拟磁盘迁移至SMB共享时「文件未找到」错误的排查方案
我来帮你捋捋这个Hyper-V磁盘迁移踩坑的问题——你遇到的「文件未找到」错误,大概率是权限、路径格式或者服务配置的锅,咱们一步步排查解决:
一、先把SMB共享的权限问题钉死
这是最常见的诱因,很多人容易忽略Hyper-V服务的账户权限:
- 共享权限+NTFS权限双检查:别只给你个人用户开权限!Hyper-V服务是用主机的计算机账户(不是你的个人账户)运行的,一定要把SMB共享的「读取/写入」权限,以及共享所在磁盘的NTFS「完全控制」权限,都分配给Hyper-V主机的计算机账户(格式是
DOMAIN\主机名$,如果是工作组环境就是主机名$)。 - 手动验证访问:在Hyper-V主机上打开命令提示符,运行
net use \\新NAS地址\共享名挂载共享,然后尝试创建一个空文本文件。如果这一步都失败,直接回头调权限就行。
二、确保Hyper-V对SMB存储的支持配置正确
- 启用SMB存储功能:打开PowerShell执行
Enable-WindowsOptionalFeature -Online -FeatureName Hyper-V-SMB,如果已经启用会提示无需操作,没启用的话按提示重启主机。 - 坚决用完整UNC路径:配置磁盘路径时,必须用
\\NAS-SERVER\Hyper-V-Disks\VM1\Disk1.vhdx这种完整的UNC路径,绝对别用映射的驱动器号(比如Z:\)——Hyper-V服务不认映射盘。
三、手动迁移的正确打开方式
别直接复制文件后改配置,按这个流程来能避坑:
- 先彻底关闭目标虚拟机,确保磁盘完全离线。
- 在Hyper-V管理器里右键虚拟机→设置,找到要迁移的磁盘,点击移除(注意是移除配置,不是删除磁盘文件!)。
- 用
robocopy命令复制磁盘,保证权限和属性完整:
这个命令会自动处理文件锁定问题,还能完整复制所有权限属性。robocopy "旧磁盘的完整路径" "\\新NAS地址\共享名" *.vhdx /ZB /E /COPYALL - 回到虚拟机设置,点击添加硬盘→现有硬盘,直接选SMB共享上的磁盘文件,确认路径是正确的UNC格式。
- 启动虚拟机测试。
四、检查Hyper-V服务账户的访问权限
Hyper-V的虚拟机服务默认用「NT Virtual Machine\Virtual Machine Service」账户运行,这个账户也需要对SMB共享有读写权限:
- 把这个账户添加到SMB共享的权限列表里,分配「读取/写入」权限。
- 顺便检查主机的「本地安全策略」,确保「从网络访问此计算机」策略里包含这个服务账户。
五、其他小众排查方向
- SMB版本兼容:如果新NAS只支持SMB 1.0,而Hyper-V主机默认禁用了SMB 1.0,会导致访问失败。可以临时启用SMB 1.0测试(不推荐长期用,不安全),或者给NAS升级到SMB 3.0及以上版本。
- 磁盘文件完整性:先检查旧磁盘有没有损坏,打开PowerShell运行:
如果有错误,先修复(Test-VHD -Path "旧磁盘路径\Disk1.vhdx" -FullRepair-VHD命令)再迁移。
内容的提问来源于stack exchange,提问作者aardbol
相关产品推荐
相关产品推荐

