TLDR;
不正确的功能(0x80070001)意味着硬盘被填充。如果这是你,希望你有备份!
完整的故事
我正在尝试将虚拟机从一个磁盘移动到主机上的另一个磁盘。
但是,当我试图导出VM时,它运行了大约15分钟,状态列中的进度缓慢地前进,然后最终弹出以下错误:
An error occurred while attempting to export the virtual machine.
Failed to copy file during export.
Failed to copy file from 'D:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx'
to 'E:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx':
Incorrect function. (0x80070001).通过powershell导出会以稍微不同的格式产生相同的错误。
Export-VM : Failed to copy file during export.
Failed to copy file from 'D:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx'
to 'E:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx'
: Incorrect function. (0x80070001).
At line:1 char:1
+ Export-VM -Name SuperServer -Path 'E:\VMs\'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Export-VM], VirtualizationException
+ FullyQualifiedErrorId : OperationFailed,Microsoft.HyperV.PowerShell.Commands.ExportVM没有创建文件,只创建一个空文件夹。在同一文件夹中,此磁盘上还有其他VM。
vhdx文件大于100 is,avhdx文件为25 is。
源硬盘有800 and的空闲,目标磁盘有300 and的空闲。我知道更小,但它的SSD。
当我试图导出VM时,它处于"Off“状态。
发生这种情况时,事件查看器中没有错误。
编辑1:
可能与此问题有关的是,所有VM的预定备份也失败了。我们正在使用内置的Windows备份。这给出的错误是:
Error in backup of D:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx during read:
Error [0x80070001] Incorrect function.
Writer Id: {some hexadecimal string}
Component: some other hexadecimal string
Caption : Offline\SuperServer
Logical Path:
Error : 8078010E
Error Message : Copy of the files failed.
Detailed Error : 80070001
Detailed Error Message : (null)备份目标是多个磁盘的跨卷,总共有4TB空闲。所有的磁盘都是健康的。
编辑2:
试图简单地复制文件也会产生错误。我试过Robocopy,但是它在两个最大的文件上失败了。我尝试使用和不使用/J标志来获取未缓冲的副本。
robocopy D:\VMs\SuperServer E:\VMs\SuperServer /E /ZB /DCOPY:T /COPYALL /R:1 /W:1 /V /TEE /LOG:Robocopy.log其余的文件复制得很好,但这两个文件没有成功。
87.5% New File 109.3 g SuperServer.vhdx
2020/10/28 13:22:43 ERROR 5 (0x00000005) Copying File D:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx
Access is denied.
Waiting 1 seconds... Retrying...
87.5% New File 109.3 g SuperServer.vhdx
2020/10/28 13:49:45 ERROR 5 (0x00000005) Copying File D:\VMs\SuperServer\Virtual Hard Disks\SuperServer.vhdx
Access is denied.
ERROR: RETRY LIMIT EXCEEDED.
7.6% New File 23.9 g SuperServer_Some_Hex_String.avhdx
2020/10/28 13:51:21 ERROR 5 (0x00000005) Copying File D:\VMs\SuperServer\Virtual Hard Disks\SuperServer_Some_Hex_String.avhdx
Access is denied.
Waiting 1 seconds... Retrying...
7.6% New File 23.9 g SuperServer_Some_Hex_String.avhdx
2020/10/28 13:51:21 ERROR 5 (0x00000005) Copying File D:\VMs\SuperServer\Virtual Hard Disks\SuperServer_Some_Hex_String.avhdx
Access is denied.同时,事件查看器中也有一些这样的警告:
An error was detected on device \Device\Harddisk3\DR3 during a paging operation.HardDisk3确实是D驱动器。
编辑3:
我运行了一个chkdsk /f,它没有报告错误。我不愿意运行chkdsk /R,因为它必须解除驱动器,而且需要很多小时。我的磁盘上还有其他的VM,所以半天失去它们是件很痛苦的事。但是,一旦运行它,它就会在我无法复制的文件中报告错误的集群。此外,这个磁盘太坏了,无法移动坏扇区的空间。
The disk does not have enough space to replace bad clusters detected in file 88 of name \VMs\SUPERSERVER\VIRTUA~1\SUPERSERVER.vhdx. 如果你想知道,是的,有足够的空间在驱动器上,但坏部门需要一种不同的自由空间。。
更糟糕的是,在chkdsk完成后,同一驱动器上的另一个VM不再能够被引导,必须从备份中恢复。
发布于 2020-10-28 02:47:25
备份和导出有一个共同点:源。您的VHD或其他Hyper-V文件可能有问题。
这个家伙通过使用Robocopy复制VM中的数据来解决这个问题,但是这对你来说可能行不通:https://evotec.xyz/hyper-v-incorrect-function-when-trying-to-move-files/
您更新的帖子显示您的驱动器正在失败。如果chkdsk /r无法修复它,则需要使用不同的恢复方法。在这里,数据丢失几乎是必然的。你需要决定保存这台机器是否值得,或者你是否想重建。无论如何,您都需要停止使用这个磁盘,即使chkdsk /r可以修复它。
发布于 2020-12-01 07:27:23
在不得不从备份中恢复VM一周后,物理硬盘被恢复了!
这是通过从服务器上删除它来完成的,然后重新连接和重新导入,然后重新开始工作。如果其他一切都失败了,还是值得一试的。
发布于 2020-10-28 02:54:26
尝试将VM导出到源磁盘上的文件夹。如果这样做有效,那么问题就在于目的地。
此外,如果这样做有效,那么尝试将导出的VM复制到目的地,并从那里导入它,并查看是否得到相同的错误。
https://serverfault.com/questions/1040194
复制相似问题