Another area we are working on is support for
virtual machine disks and snapshot chains.
Hetman Partition Recovery and Hetman RAID Recovery can mount either an individual virtual disk file or an entire virtual machine folder. In the latter case, the software analyzes the VM structure, identifies base disks, differencing/overlay files, snapshots, and the relationships between them.
Supported layouts include
fixed/thick, dynamically allocated/thin/sparse, split/multi-part and differencing disks, as well as internal and external snapshots and multi-level snapshot chains.
Main platforms and formats
- VMware Workstation / Fusion / ESXi / vSphere — VMDK, including flat, sparse, split and snapshot/delta disks
- Microsoft Hyper-V — VHD, VHDX, AVHD, AVHDX
- Oracle VirtualBox — VDI, VMDK, VHD and differencing images
- Parallels — HDD, HDS
- QEMU / KVM — QCOW, QCOW2, RAW, IMG
- Proxmox VE — QCOW2, RAW, VMDK and other supported storage types
- XenServer — VHD and RAW disks
- VMware ESXi / VMFS — VMFS datastores and virtual disks stored inside them
For snapshot chains, the software determines
parent-child relationships, finds the base disk and reconstructs the available disk states. For example, this may be a base VMDK plus delta VMDKs in VMware, VHDX plus AVHDX in Hyper-V, or a base QCOW2 plus external overlay files in QEMU/KVM. Each reconstructed state can then be analyzed as a regular disk for partitions, file systems, existing files and deleted data.
Example: Proxmox VEIn this test:
https://www.youtube.com/watch?v=DYHb8K775yEwe created a Windows 10 virtual machine in Proxmox VE and attached disks in
RAW, VMDK and QCOW2 formats. Test files were copied to the disks and some of them were deleted.
We then demonstrated:
- recovering the virtual disk files from an EXT4 storage volume
- mounting the recovered RAW, VMDK and QCOW2 disks
- analyzing the file systems inside the VM disks
- recovering both existing and deleted files
We also tested a scenario where the
virtual disk files themselves had been deleted. The VM disk files were first recovered from EXT4, then mounted and analyzed for the data stored inside the guest system.
Example: Unraid and snapshot chainsIn this test:
https://www.youtube.com/watch?v=JyDpjjelim0we created a virtual machine in Unraid on an
XFS storage volume and attached RAW, IMG and QCOW2 disks. After writing test files to the disks, we created
external snapshots and then deleted part of the data inside the guest system.
After recovering and mounting the VM folder, the software automatically identified the base disks and their related snapshot/overlay files. For the disks, both the state
before the snapshot and the current state
with the snapshot changes applied became available for separate analysis. Both states could be scanned for existing and deleted files.
We also tested a different case where the virtual disk files had been completely deleted from XFS. Instead of recovering the VM disk as an XFS file, a full scan of the physical storage detected the
NTFS filesystem of the guest Windows system directly in the sectors that previously belonged to the virtual disk.
So there are two possible recovery paths:
Host filesystem -> recover VM disk file -> mount VM disk -> recover guest filesor, when the VM disk file itself cannot be recovered:
Host storage -> detect guest filesystem directly -> recover guest filesAnother practical case is a
partially damaged VMDK, VHDX, VDI or QCOW2 file that can no longer be opened by the original hypervisor. If enough of the disk structure remains readable, it may still be possible to mount and scan it without starting the virtual machine.
I would be interested to hear from people who deal with VM recovery in practice: which formats, snapshot chains, damaged-disk scenarios or unusual configurations would be useful to add to our future tests?
_________________
Michael Miroshnichenko — Data Recovery Software Developer at Hetman Software
RAID • NAS • File Systems • Virtual Disks •
https://hetmanrecovery.com/