Features/VMSnapshotEnchancement: Difference between revisions

From QEMU
No edit summary
Line 14: Line 14:
* 2 vmstate live save as internal/external data, export async API for external data, fix the size problem.
* 2 vmstate live save as internal/external data, export async API for external data, fix the size problem.
* 3 combination(internal block snapshot + internal vmstate save, internal block snapshot + external vmstate save, external block snapshot  external vmstate save).
* 3 combination(internal block snapshot + internal vmstate save, internal block snapshot + external vmstate save, external block snapshot  external vmstate save).
* 4 a way to screen dump in the time of snapshot complete.


= Component Details =
= Component Details =
Line 42: Line 43:
Advantage:
Advantage:
   less dependence, chain and block bitmap are managed by qemu.
   less dependence, chain and block bitmap are managed by qemu.


* Case 2: internal image snapshot data + external vmstate data
* Case 2: internal image snapshot data + external vmstate data
Line 56: Line 58:
Lack:
Lack:
   live commit internal snapshots now, so fit more for desktop usage now.
   live commit internal snapshots now, so fit more for desktop usage now.


* Case 3: internal image blank data (drain) + external vmstate data
* Case 3: internal image blank data (drain) + external vmstate data
Line 67: Line 70:
   Fix the vmstate size issue, add block device drain support, provide a interface integrate the calls.
   Fix the vmstate size issue, add block device drain support, provide a interface integrate the calls.
Advantage:
Advantage:
   Fast, backing chain and block bitmap management can be offloaded from qemu to lower component,
   Fast, backing chain and block bitmap management can be offloaded from qemu to lower component, this also gives a chance to lower software/hardware to accelerate it.
this also gives a chance to lower software/hardware to accelerate it.
 


* Case 4: internal image snapshot data + internal vmstate data
* Case 4: internal image snapshot data + internal vmstate data

Revision as of 09:54, 18 January 2013

VM Back up enhancement

This feature will enhance VM backup functionality, to make it possible taking internal/external snapshots lively, and make it works better with underlining components such as LVM.

  • Name: Wenchao Xia
  • Email: xiawenc@linux.vnet.ibm.com, xiaxia347os@163.com

General Summary

This feature would provide APIs that can do:

  • 1 block device live snapshot as internal/external/blank delta data, export sync API for all type.
  • 2 vmstate live save as internal/external data, export async API for external data, fix the size problem.
  • 3 combination(internal block snapshot + internal vmstate save, internal block snapshot + external vmstate save, external block snapshot external vmstate save).
  • 4 a way to screen dump in the time of snapshot complete.

Component Details

Now qemu support block device live external snapshot, live migration to file, static internal block snapshot + internal vmstate save, following are the blanks need to be filled:

  • 1 block device live internal snapshot, block device data drain, provide the interfaces in unified style.
  • 2 change vmstate save from static to live, fix the problem that size is not predictable, add support to save vmstate to external file format that qemu support(raw, qcow2...).
  • 3 an API allow management stack configure the combination.
  • 4 qmp/hmp for related information retrieving.

User Cases

General goal from backup application persperctive: Vmbackup Common goal.jpg

take LVM2 as an example as third party tool:

  • Case 1: external image snapshot data + external vmstate data

This is what qemu 1.3 support. Step:

 1 save vmstate to external place.
 2 blkdev-snapshot-sync each block device.
 3 Copy out data.
 4 Resume.

Todo:

 Fix the vmstate size issue(may introduce a new API), provide a interface integrate the calls.

Advantage:

 less dependence, chain and block bitmap are managed by qemu.


  • Case 2: internal image snapshot data + external vmstate data

Step:

 1 save vmstate to external place.
 2 pause VM(may call GA before).
 3 internal snapshot each block device.
 4 LVM create snapshot.
 5 resume.

Todo:

 Fix the vmstate size issue, add block internal snapshot support, provide an interface integrate the calls.

Advantage:

 Internal snapshot are a bit faster, qemu managed the block snapshot consistence.

Lack:

 live commit internal snapshots now, so fit more for desktop usage now.


  • Case 3: internal image blank data (drain) + external vmstate data

Step:

 1 save vmstate to external place.
 2 pause VM(may call GA before).
 3 drain each block device.
 4 LVM create snapshot.
 5 resume.

Todo:

 Fix the vmstate size issue, add block device drain support, provide a interface integrate the calls.

Advantage:

 Fast, backing chain and block bitmap management can be offloaded from qemu to lower component, this also gives a chance to lower software/hardware to accelerate it.


  • Case 4: internal image snapshot data + internal vmstate data

This is what qemu support as static method. Step:

 1 save vmstate to internal place.
 2 internal snapshot each block device.
 (3) pause the vm.
 (4) LVM create snapshot.
 (5) resume.

Todo:

 Fix the vmstate size issue, change it to commit.

Advantage:

 qemu can manage bitmap and backing chain, so it is consistent.

Lack:

 Can't delete internal snapshit lively, so fit better for desktop usage.