Sometime the VHD format of a VDI can become corrupt and result in error trying to read the footer. Vhd-util command can be used to recover the corruption to some extend. This article describe the procedure for that
#xe vdi-list name-label=<VDI name label shown in XenCenter>
Note down the UUID of the VM
#lvchange -ay /dev/mapper/<VHD-path>
For example
lvchange -ay /dev/mapper/VG_XenStorage--8681cbd1--ad58--210a--b32b--22429aac0571-VHD--ee68b172--024d--4972--aa69--1bc95b8ad181
vhd-util repair -n /dev/mapper/VG_XenStorage--8681cbd1--ad58--210a--b32b--22429aac0571-VHD--ee68b172--024d--4972--aa69--1bc95b8ad181
It should return nothing if it works fine
#lvchange -an /dev/mapper/<VHD-path>
For example
lvchange -an /dev/mapper/VG_XenStorage--8681cbd1--ad58--210a--b32b--22429aac0571-VHD--ee68b172--024d--4972--aa69--1bc95b8ad181