All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Plotnikov <dplotnikov@virtuozzo.com>
To: Kevin Wolf <kwolf@redhat.com>, Roman Kagan <rkagan@virtuozzo.com>,
	"Daniel P. Berrange" <berrange@redhat.com>,
	Richard Palethorpe <richiejp@f-m.fm>,
	Qemu-block <qemu-block@nongnu.org>,
	quintela@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com,
	Max Reitz <mreitz@redhat.com>,
	rpalethorpe@suse.com, dgilbert@redhat.com,
	Denis Lunev <den@virtuozzo.com>
Subject: Re: [Qemu-devel] [Qemu-block]  [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI
Date: Tue, 13 Feb 2018 19:14:57 +0300	[thread overview]
Message-ID: <e67351ee-f944-4307-dd52-44f4e08612d9@virtuozzo.com> (raw)
In-Reply-To: <20180213144310.GH5083@localhost.localdomain>



On 13.02.2018 17:43, Kevin Wolf wrote:
> Am 13.02.2018 um 15:30 hat Roman Kagan geschrieben:
>> On Tue, Feb 13, 2018 at 11:50:24AM +0100, Kevin Wolf wrote:
>>> Am 11.01.2018 um 14:04 hat Daniel P. Berrange geschrieben:
>>>> Then you could just use the regular migrate QMP commands for loading
>>>> and saving snapshots.
>>>
>>> Yes, you could. I think for a proper implementation you would want to do
>>> better, though. Live migration provides just a stream, but that's not
>>> really well suited for snapshots. When a RAM page is dirtied, you just
>>> want to overwrite the old version of it in a snapshot [...]
>>
>> This means the point in time where the guest state is snapshotted is not
>> when the command is issued, but any unpredictable amount of time later.
>>
>> I'm not sure this is what a user expects.
> 
> I don't think it's necessarily a big problem as long as you set the
> expectations right, but good point anyway.
> 
>> A better approach for the save part appears to be to stop the vcpus,
>> dump the device state, resume the vcpus, and save the memory contents
>> in the background, prioritizing the old copies of the pages that
>> change.
> 
> So basically you would let the guest fault whenever it writes to a page
> that is not saved yet, and then save it first before you make the page
> writable again? Essentially blockdev-backup, except for RAM.
> 
>> No multiple copies of the same page would have to be saved so the
>> stream format would be fine.  For the load part the usual inmigrate
>> should work.
> 
> This is true.
> 
> I think it will require changes to the qcow2 driver, though. Currently,
> you write the VM state into the active layer and then take the disk
> snapshot so that the VM state is automatically snapshotted as well.
> Afterwards, the VM state is discarded again in the active layer.
> 
> If you want to take the snapshot at the point in time when the command
> was issued, you first need to create a qcow2 snapshot to save the disk
> state, but then continue to write the VM state into that snapshot, even
> though it's not the active layer.
> 
> In fact I think this would be more elegant than writing the VM state
> into the active layer and then discarding it again, but inactive
> snapshots haven't been writable so far, so that will require some
> changes.
> 
> I'm sure that Denis has already some thoughts on this, though.
Yes, I stick to the scheme when you write a snapshot as it is now but 
instead of ram writing I just preallocate the space for ram and save the 
actual file offsets of the clusters forming the space, then I resume 
vcpus and write the ram using those cluster offsets with respect to vcpu 
pagefaults.

> 
> Kevin
> 

-- 
Best,
Denis

  parent reply	other threads:[~2018-02-13 16:15 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-07 12:23 [Qemu-devel] [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI Richard Palethorpe
2018-01-07 12:23 ` [Qemu-devel] [PATCH 2/2] Add test cases for saving, loading and deleting snapshots using QAPI Richard Palethorpe
2018-01-08 13:52 ` [Qemu-devel] [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI Eric Blake
2018-01-10 16:19   ` Richard Palethorpe
2018-01-10 16:48     ` Eric Blake
2018-02-03 13:28       ` Markus Armbruster
2018-01-11 12:46   ` Max Reitz
2018-01-11 13:04     ` Daniel P. Berrange
2018-01-11 13:23       ` Dr. David Alan Gilbert
2018-01-11 13:36         ` Daniel P. Berrange
2018-01-11 16:55           ` Juan Quintela
2018-02-12 13:25             ` Richard Palethorpe
2018-02-13 10:50       ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2018-02-13 11:43         ` Dr. David Alan Gilbert
2018-02-13 11:51           ` Daniel P. Berrangé
2018-02-13 13:20             ` Kevin Wolf
2018-02-13 13:25               ` Daniel P. Berrangé
     [not found]         ` <20180213143001.GA2354@rkaganb.sw.ru>
2018-02-13 14:36           ` Daniel P. Berrangé
2018-02-13 14:45             ` Kevin Wolf
2018-02-13 14:48               ` Daniel P. Berrangé
2018-02-13 14:51                 ` Denis V. Lunev
2018-02-13 14:59                 ` Dr. David Alan Gilbert
2018-02-13 15:01                   ` Denis V. Lunev
2018-02-13 15:05                     ` Dr. David Alan Gilbert
     [not found]                       ` <20180213151352.GF2307@rkaganb.sw.ru>
2018-02-13 15:27                         ` Dr. David Alan Gilbert
2018-02-13 15:29                           ` Denis V. Lunev
2018-02-13 16:01                       ` Denis Plotnikov
2018-02-15 15:21                         ` Dr. David Alan Gilbert
2018-02-13 16:46                 ` Eric Blake
2018-02-13 19:45                   ` Denis V. Lunev
2018-02-13 14:43           ` Kevin Wolf
2018-02-13 14:50             ` Denis V. Lunev
2018-02-13 14:58             ` Daniel P. Berrangé
2018-02-13 15:23               ` Kevin Wolf
2018-02-13 15:30                 ` Daniel P. Berrangé
2018-02-13 15:51                   ` Kevin Wolf
2018-02-13 16:14             ` Denis Plotnikov [this message]
2018-01-10  6:17 ` [Qemu-devel] " Peter Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e67351ee-f944-4307-dd52-44f4e08612d9@virtuozzo.com \
    --to=dplotnikov@virtuozzo.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=den@virtuozzo.com \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=richiejp@f-m.fm \
    --cc=rkagan@virtuozzo.com \
    --cc=rpalethorpe@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.