这与那么:您可以更新 Hyper-V 父差异磁盘以将更新推送给所有子磁盘吗?
我已经设置了父磁盘是操作系统的 syspreped 映像。我使用 syspreped 映像作为父磁盘创建了一个具有差异磁盘的子虚拟机。
是否可以在不影响子磁盘的情况下更新 syspreped 映像?是否有其他配置在更新 (syspreped) 父磁盘时不会破坏子磁盘?
我无法成功将更改应用到父级虚拟机,并且子虚拟机中出现以下错误:
Failed to Power on with Error 'The chain of virtual hard disks is corrupted.
There is a mismatch in the identifiers of the parent virtual hard disk and differencing disk.'.
当我启动主计算机、完成激活(从 sysprep)、更新操作系统,然后在主计算机上再次执行 sysprep 时,会出现此消息。此后,子差异磁盘将无法再次启动。
答案1
文件系统将大量文件跟踪信息放在磁盘上。如果磁盘上的块发生任何变化,则跟踪信息就会过期。发生这种情况时,文件会损坏,chkdsk
并且会很麻烦。
差异磁盘通过跟踪自创建差异磁盘以来已写入的块来工作。新的写入进入子 VHD(或 AVHD),如果存在,则读取来自该子磁盘。如果读取对应的块不在子磁盘中,则它来自父磁盘。文件系统跟踪结构经常被重写,并且往往主要存在于子磁盘中。(即使最后一部分不是真的,这里仍然会存在问题。)
如果您单独安装父 VHD 并更改其上的文件系统,则子 VHD 中表示的许多块将在父 VHD 中发生更改,因此在子 VHD 中会过期,包括一些跟踪结构。因此,如果您再次尝试安装子 VHD,它将尝试从父 VHD 中获取现在未对齐的内容。这将被视为损坏的文件系统。
许多人最终都会问你刚才问的问题。他们的困惑通常源于不理解磁盘处理的是块,而不是文件。他们期望 VHD(虚拟块设备,而不是文件系统)向 VM 公开文件。但事实并非如此。它只公开块。然后,客户操作系统会设置其选择的文件系统。虚拟化系统(在本例中为 Hyper-V)对文件一无所知,只知道块。
您真正希望的是差异文件系统,而不是差异磁盘。它们是作为网络附加存储存在的。但是 Windows 不会从远程文件系统启动,因此它们可能无法解决您的问题。