OK, I'll adjust the code into the upstream framework, thanks for your
declaration.

> OK, I will try to give a short overview on the functionality.
> 
> First, we decided to use 'internal' snapshots for our 'live snapshot' 
> implementation.
> Internal snapshots almost always use some kind of reference counting, making
> snapshot action (like 'create/delete snapshot') quite efficient and fast.
> 
> Internal snapshot totally depends on the storage backend. For now we can 
> create
> internal snapshots on the following storage backend:
> 
> * qcow2 files
> * rbd
> * sheepdog
> * nexenta iscsi
> 
> As you can see, creating internal snapshots sometimes needs external tool. 
> For example we use  the
> nexenta API to create snapshots, while we use libiscsi to access them inside 
> qemu.
> 
> So our snapshot implementation uses the following steps:
> 
> 1.) qmp: savevm-start [statefile]
> 
> This save the VM state into [statefile] and then stops the VM.
> 
> 2.) qga freezefs
> 
> 3.) create snapshots: either using external tools or by qmp: snapshot-drive
> 
> 4.) gqa unfreezefs
> 
> 5.) qmp: savevm-end
> 
> This restarts/resumes the VM
> 
>>     Have some questions:
>>     in qmp_savevm_start(), vm_stop(RUN_STATE_SAVE_VM), I think this will
>> stop the VM running make it not lively, am I right?
> 
> Yes, we need to halt the VM for a short period of time while we make
> snapshots. But that time is usually short.
> 
> - Dietmar
> 


-- 
Best Regards

Wenchao Xia


Reply via email to