I've used QEMU to read .vmdk snapshots.  The VM directory layout in my case (Fusion, and I've seen Workstation do the same) created a .vmdk file per snapshot, and qemu-img could use that .vmdk file and the base .vmdk to convert the disk image to a raw image. IIRC there is a manifest file that ties .vmdk files to the snapshot they represent.<div>
<br></div><div>So, from my experience, qemu does read disk snapshots in the .vmdk format. It might need a little extending to also look for and parse that manifest file, to treat a directory with .vmdk's as a snapshot tree.<span></span></div>
<div><br></div><div>Does this help?</div><div><br></div><div>--Alex<br><div><br><br>On Sunday, June 9, 2013, Richard W.M. Jones  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Sun, Jun 09, 2013 at 03:40:42PM +0800, 雨居轩 wrote:<br>
> Hi dear all:<br>
>   I have browsed almost all architecture of libGuestFs and use it on Fedora 18. It really seems greate!<br>
>   However,<br>
>   1. No virtual disk (*.vdi, *.vmdk...) based snashot analysis code<br>
> Current LibGuestFs could recognize and virtual disk format<br>
> (e.g. *.VDI) and the file syste inside it (e.g. NTFS ), but find<br>
> no support for snapshot virtual disk.<br>
<br>
libguestfs relies on qemu for all disk / format support.  So we<br>
support whatever qemu supports.  As qemu doesn't appear to be able to<br>
read snapshots (except for the "top" one obviously) from a VMDK or VDI<br>
file, we can't read them either.  If support for this was added to<br>
qemu, then libguestfs would get it for free, or nearly for free.<br>
<br>
> Virtual Machine such VirtualBox will generate snapshot (*.VDI for<br>
> virtual disk diff, *.sav for virtual memory diff), and these<br>
> snapshots are always diff towards based virtutual disk.<br>
><br>
>   2. So I missed this feature? Or these feature not supported now?<br>
>    If not support, so does libguestFs will support it in the future?<br>
<br>
It totally depends on qemu.  You or someone would have to add this<br>
feature to qemu.  libguestfs would get it for free after that.<br>
<br>
Rich.<br>
<br>
--<br>
Richard Jones, Virtualization Group, Red Hat <a href="http://people.redhat.com/~rjones" target="_blank">http://people.redhat.com/~rjones</a><br>
libguestfs lets you edit virtual machines.  Supports shell scripting,<br>
bindings from many languages.  <a href="http://libguestfs.org" target="_blank">http://libguestfs.org</a><br>
<br>
_______________________________________________<br>
Libguestfs mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'Libguestfs@redhat.com')">Libguestfs@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/libguestfs" target="_blank">https://www.redhat.com/mailman/listinfo/libguestfs</a></blockquote></div></div>