Is it possible to update syspreped parent image without affecting the child diff disk in hyper-v


This ties to the SO: Can you update a Hyper-V parent differencing disk to push updates to all children?

I have setup where parent disk is the syspreped image of the OS. I have created a child VM with differencing disk using syspreped image as a parent.

Is it possible to update syspreped image without affecting the child? Is there any other configuration that will not destroy the child disk when updating (syspreped) parent?

I have not been successful in applying changes to the parent without getting below error from the child VM:

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.'.

This message occurs when I power up parent machine, complete activation (from sysprep) update the OS and then execute sysprep one more time on the parent. After that child differencing disk will not boot again.

Best Answer

File systems put lots of file tracking information on disk. And if the blocks on the disk change at all, that tracking information is out of date. When this occurs, you get file corruption, chkdsk, and pain.

Differencing disks work by tracking the blocks that have been written since the differencing disk was created. New writes go into the child VHD (or AVHD) and reads come from that child if they exist there. If the block corresponding to the read is not in the child, it comes from the parent. The file system tracking structures are rewritten frequently and tend to exist mostly in the child. (Even if this last part weren't true, there would still be a problem here.)

If you mount a parent VHD separately and change the file system on it, many of the blocks that are represented in the child will be changed in the parent, and thus be out of date in the child, including some of the tracking structures. So if you ever try to mount the child VHD again, it will then try to fetch things from the parent that are now misaligned. This will be seen as the corrupt file system that it is.

Many people end up asking the question that you just asked. Their confusion generally stems from not understanding that disks deal in blocks, not files. They expect that a VHD (which is a virtual block device, not a file system) exposes files to a VM. It doesn't. It exposes only blocks. The guest OS then lays down a file system of its choosing. The virtualization system (Hyper-V in this case) knows nothing about the files, only the blocks.

What you were really hoping for is a differencing file system, not differencing disk. Those exist, as network-attached storage. Windows doesn't boot from remote file systems though, so they probably won't solve your problem.