home       vmx       vmdk        about this site        forum        downloads  





Therapy : fix CID-chain with embedded descriptors


Case: a VM can not be started - it displays the "parent has been changed" message on a Windows-host.
Difficulty : the VM uses the monolithicSparse disktype so directly editing the vmdks should be avoided.




Overview of the procedure




make a file-list of all vmdks


to do this open a cmd and change directory to the path of the patient - then type

 


dir /b *.vmdk > list.txt


the list may look like this


Windows Vista.vmdk
Windows Vista-000001.vmdk
Windows Vista-000002.vmdk
Windows Vista-000003.vmdk
Windows Vista-000004.vmdk


extract all embedded descriptors

it is convenient to edit the list.txt so that you get a file like this - safe it as list.cmd and run it


dsfo.exe "Windows Vista.vmdk" 512 800 "Windows Vista.txt"
dsfo.exe "Windows Vista-000001.vmdk" 512 800 "Windows Vista-000001.txt"
dsfo.exe "Windows Vista-000002.vmdk" 512 800 "Windows Vista-000002.txt"
dsfo.exe "Windows Vista-000003.vmdk" 512 800 "Windows Vista-000003.txt"
dsfo.exe "Windows Vista-000004.vmdk" 512 800 "Windows Vista-000004.txt"


type all descriptors into a file
again it is convenient to write a btach for it - but feel free to do it manually


echo. > listed-descriptors.txt
echo ###################### "Windows Vista.txt" >> listed-descriptors.txt
echo. >> listed-descriptors.txt
type "Windows Vista.txt" >> listed-descriptors.txt
echo ###################### "Windows Vista-000001.txt" >> listed-descriptors.txt
echo. >> listed-descriptors.txt
type "Windows Vista-000001.txt" >> listed-descriptors.txt
echo ###################### "Windows Vista-000002.txt" >> listed-descriptors.txt
echo. >> listed-descriptors.txt
type "Windows Vista-000002.txt" >> listed-descriptors.txt
echo ###################### "Windows Vista-000003.txt" >> listed-descriptors.txt
echo. >> listed-descriptors.txt
type "Windows Vista-000003.txt" >> listed-descriptors.txt
echo ###################### "Windows Vista-000004.txt" >> listed-descriptors.txt
echo. >> listed-descriptors.txt
type "Windows Vista-000004.txt" >> listed-descriptors.txt


the result looks like this

 

###################### Windows Vista.txt ########################
# Disk DescriptorFile
version=1
CID=848cbe64
parentCID=ffffffff
createType="monolithicSparse"
# Extent description
RW 104857600 SPARSE "Windows Vista.vmdk"
# The Disk Data Base
#DDB
ddb.virtualHWVersion = "6"
ddb.geometry.cylinders = "6527"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "lsilogic"
ddb.toolsVersion = "7238"###################### Windows Vista-000001.txt ########################
# Disk DescriptorFile
version=1
CID=195cf01f
parentCID=c27c3cf2
createType="monolithicSparse"
parentFileNameHint="Windows Vista-000003.vmdk"
# Extent description
RW 104857600 SPARSE "Windows Vista-000001.vmdk"# The Disk Data Base
#DDBddb.toolsVersion = "7238"
###################### Windows Vista-000002.txt ########################
# Disk DescriptorFile
version=1
CID=c750afeb
parentCID=5cdd6af0
createType="monolithicSparse"
parentFileNameHint="Windows Vista-000004.vmdk"
# Extent description
RW 104857600 SPARSE "Windows Vista-000002.vmdk"# The Disk Data Base
#DDBddb.toolsVersion = "7238"###################### Windows Vista-000003.txt ########################
# Disk DescriptorFile
version=1
CID=c27c3cf2
parentCID=c750afeb
createType="monolithicSparse"
parentFileNameHint="Windows Vista-000002.vmdk"
# Extent description
RW 104857600 SPARSE "Windows Vista-000003.vmdk"# The Disk Data Base
#DDB
ddb.toolsVersion = "7238"###################### Windows Vista-000004.txt ########################
# Disk DescriptorFile
version=1
CID=5cdd6af0
parentCID=9a1f1a1f
createType="monolithicSparse"
parentFileNameHint="Windows Vista.vmdk"
# Extent description
RW 104857600 SPARSE "Windows Vista-000004.vmdk"# The Disk Data Base
#DDB
ddb.toolsVersion = "7238"

 

###################### Windows Vista.txt ########################
CID=848cbe64
parentCID=ffffffff
RW 104857600 SPARSE "Windows Vista.vmdk"
###################### Windows Vista-000001.txt ########################
CID=195cf01f
parentCID=c27c3cf2
parentFileNameHint="Windows Vista-000003.vmdk"
RW 104857600 SPARSE "Windows Vista-000001.vmdk"
###################### Windows Vista-000002.txt ########################
CID=c750afeb
parentCID=5cdd6af0
parentFileNameHint="Windows Vista-000004.vmdk"
RW 104857600 SPARSE "Windows Vista-000002.vmdk"
###################### Windows Vista-000003.txt ########################
CID=c27c3cf2
parentCID=c750afeb
parentFileNameHint="Windows Vista-000002.vmdk"
RW 104857600 SPARSE "Windows Vista-000003.vmdk"
###################### Windows Vista-000004.txt ########################
CID=5cdd6af0
parentCID=9a1f1a1f
parentFileNameHint="Windows Vista.vmdk"
RW 104857600 SPARSE "Windows Vista-000004.vmdk"


sort the listing
- start with the basedisk
- next the file that references the basedisk as parent
- next the file that references the first snapshot as parent and so on


- in this case the chain looks like basedisk - 000004 -000002 -000003 -000001

###################### Windows Vista.txt ########################
CID=848cbe64
parentCID=ffffffff
RW 104857600 SPARSE "Windows Vista.vmdk"
ddb.geometry.cylinders = "6527"
###################### Windows Vista-000004.txt ########################
CID=5cdd6af0
parentCID=9a1f1a1f
parentFileNameHint="Windows Vista.vmdk"
RW 104857600 SPARSE "Windows Vista-000004.vmdk"
###################### Windows Vista-000002.txt ########################
CID=c750afeb
parentCID=5cdd6af0
parentFileNameHint="Windows Vista-000004.vmdk"
RW 104857600 SPARSE "Windows Vista-000002.vmdk"
###################### Windows Vista-000003.txt ########################
CID=c27c3cf2
parentCID=c750afeb
parentFileNameHint="Windows Vista-000002.vmdk"
RW 104857600 SPARSE "Windows Vista-000003.vmdk"
###################### Windows Vista-000001.txt ########################
CID=195cf01f
parentCID=c27c3cf2
parentFileNameHint="Windows Vista-000003.vmdk"
RW 104857600 SPARSE "Windows Vista-000001.vmdk"

 




analyse the CID-chain
- the parentCID-value must match the CID-value of the parent
- so following the chain starting from the last snapshot find a break in the chain

in snapshot 4. It does not reference its parent correctly. See the value marked yellow

fix the CID-chain
in this case we just need to edit the CID-value in the basedisk

###################### Windows Vista.txt ########################
CID=9a1f1a1f
parentCID=ffffffff
RW 104857600 SPARSE "Windows Vista.vmdk"
ddb.geometry.cylinders = "6527"
###################### Windows Vista-000004.txt ########################
CID=5cdd6af0
parentCID=9a1f1a1f
parentFileNameHint="Windows Vista.vmdk"
RW 104857600 SPARSE "Windows Vista-000004.vmdk"
###################### Windows Vista-000002.txt ########################
CID=c750afeb
parentCID=5cdd6af0
parentFileNameHint="Windows Vista-000004.vmdk"
RW 104857600 SPARSE "Windows Vista-000002.vmdk"
###################### Windows Vista-000003.txt ########################
CID=c27c3cf2
parentCID=c750afeb
parentFileNameHint="Windows Vista-000002.vmdk"
RW 104857600 SPARSE "Windows Vista-000003.vmdk"
###################### Windows Vista-000001.txt ########################
CID=195cf01f
parentCID=c27c3cf2
parentFileNameHint="Windows Vista-000003.vmdk"
RW 104857600 SPARSE "Windows Vista-000001.vmdk"



check current vmx-file
the vmx-file should reference the last snapshot - in this case it should reference Windows Vista-000001.vmdk

in this case only one value in one file needs to be edited - the CID-value in Windows Vista.vmdk needs to be changed
to do this we need to edit the extracted descriptor Windows Vista.txt so that it looks like this - the only edit is marked yellow

 

# Disk DescriptorFile
version=1
CID=9a1f1a1f
parentCID=ffffffff
createType="monolithicSparse"
# Extent description
RW 104857600 SPARSE "Windows Vista.vmdk"
# The Disk Data Base
#DDB
ddb.virtualHWVersion = "6"
ddb.geometry.cylinders = "6527"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "lsilogic"

to do this use dsfi.exe from the dsfok-tools - it is important that you use the same values as during extraction

dsfi.exe "Windows Vista.vmdk" 512 800 "Windows Vista.txt"



 




DISCLAIMER:

The procedures I suggest for some typical problem often require advanced skills.
I can't take any responsibilty when you mess up your data following this tips.
This just lists up what I would do in such a case.
Please also note that official VMware support will very likely claim that those cases listed as "restore" are lost.
Don't give up too early - you may still be able to rescue some data.

For in depth discussion of the listed procedure use the search function at VMTN , german forum and sanbarrow forum.
Search for username "continuum" and terms from desaster description table.



 top 

 


   home       vmx       vmdk        about this site        forum        downloads