On 05/20/2011 03:19 PM, Stefan Hajnoczi wrote:
I'm interested in what the API for snapshots would look like.
Specifically how does user software do the following:
1. Create a snapshot
2. Delete a snapshot
3. List snapshots
4. Access data from a snapshot
There are plenty of options there:
- Run a (unrelated) VM and hotplug the snapshot as additional disk
- Use v2v (libguestfs)
- Boot the VM w/ RO
- Plenty more
5. Restore a VM from a snapshot
6. Get the dirty blocks list (for incremental backup)
It might be needed for additional proposes like efficient delta sync
across sites or any other storage operation (dedup, etc)
We've discussed image format-level approaches but I think the scope of
the API should cover several levels at which snapshots are
implemented:
1. Image format - image file snapshot (Jes, Jagane)
2. Host file system - ext4 and btrfs snapshots
3. Storage system - LVM or SAN volume snapshots
It will be hard to take advantage of more efficient host file system
or storage system snapshots if they are not designed in now.
I agree but it can also be a chicken and the egg problem.
Actually 1/2/3/5 are already working today regardless of live snapshots.
Is anyone familiar enough with the libvirt storage APIs to draft an
extension that adds snapshot support? I will take a stab at it if no
one else want to try it.
I added libvirt-list and Ayal Baron from vdsm.
What you're asking is even beyond snapshots, it's the whole management
of VM images. Doing the above operations is simple but for enterprise
virtualization solution you'll need to lock the NFS/SAN images, handle
failures of VM/SAN/Mgmt, keep the snapshots info in mgmt DB, etc.
Today it is managed by a combination of rhev-m/vdsm and libvirt.
I agree it would have been nice to get such common single entry point
interface.
Stefan