From: Anthony Liguori <aliguori@linux.vnet.ibm.com>
To: Alexander Graf <agraf@suse.de>
Cc: "libvir-list@redhat.com" <libvir-list@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>,
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] QEMU interfaces for image streaming and post-copy block migration
Date: Tue, 07 Sep 2010 09:31:09 -0500 [thread overview]
Message-ID: <4C864CAD.1060706@linux.vnet.ibm.com> (raw)
In-Reply-To: <33283952-3433-4996-8851-6C14CE342D02@suse.de>
On 09/07/2010 09:01 AM, Alexander Graf wrote:
> I'm torn here too. Why not expose both? Have a qemu internal daemon available that gets a sleep time as parameter and an external "pull sectors" command. We'll see which one is more useful, but I don't think it's too much code to justify only having one of the two. And the internal daemon could be started using a command line parameter, which helps non-managed users.
>
Let me turn it around and ask, how would libvirt do this? Would they
just use a sleep time parameter and just make use of our command or
would they do something more clever and attempt to detect system idle?
Could we just do that in qemu?
Or would they punt to the end user?
>> A related topic is block migration. Today we support pre-copy migration which means we transfer the block device and then do a live migration. Another approach is to do a live migration, and on the source, run a block server using image streaming on the destination to move the device.
>>
>> With QED, to implement this one would:
>>
>> 1) launch qemu-nbd on the source while the guest is running
>> 2) create a qed file on the destination with copy-on-read enabled and a backing file using nbd: to point to the source qemu-nbd
>> 3) run qemu -incoming on the destination with the qed file
>> 4) execute the migration
>> 5) when migration completes, begin streaming on the destination to complete the copy
>> 6) when the streaming is complete, shut down the qemu-nbd instance on the source
>>
>> This is a bit involved and we could potentially automate some of this in qemu by launching qemu-nbd and providing commands to do some of this. Again though, I think the question is what type of interfaces would libvirt prefer? Low level interfaces + recipes on how to do high level things or higher level interfaces?
>>
> Is there anything keeping us from making the QMP socket multiplexable? I was thinking of something like:
>
> { command = "nbd_server" ; block = "qemu_block_name" }
> { result = "done" }
> <qmp socket turns into nbd socket>
>
> This way we don't require yet another port, don't have to care about conflicts and get internal qemu block names for free.
>
Possibly, but something that complicates life here is that an nbd
session would be source -> destination but there's no QMP session
between source -> destination. Instead, there's a session from source
-> management node and destination -> management node so you'd have to
proxy nbd traffic between the two. That gets ugly quick.
Regards,
Anthony Liguori
> Alex
>
>
next prev parent reply other threads:[~2010-09-07 14:31 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-07 13:41 [Qemu-devel] QEMU interfaces for image streaming and post-copy block migration Anthony Liguori
2010-09-07 14:01 ` Alexander Graf
2010-09-07 14:31 ` Anthony Liguori [this message]
2010-09-07 14:33 ` Stefan Hajnoczi
2010-09-07 14:51 ` Anthony Liguori
2010-09-07 14:55 ` Stefan Hajnoczi
2010-09-07 15:00 ` Anthony Liguori
2010-09-07 15:09 ` Stefan Hajnoczi
2010-09-07 15:20 ` Anthony Liguori
2010-09-08 8:26 ` Kevin Wolf
2010-09-07 14:34 ` Kevin Wolf
2010-09-07 14:49 ` Stefan Hajnoczi
2010-09-07 14:57 ` Anthony Liguori
2010-09-07 15:05 ` Stefan Hajnoczi
2010-09-07 15:23 ` Anthony Liguori
2010-09-12 12:41 ` Avi Kivity
2010-09-12 13:25 ` Anthony Liguori
2010-09-12 13:40 ` Avi Kivity
2010-09-12 15:23 ` Anthony Liguori
2010-09-12 16:45 ` Avi Kivity
2010-09-12 17:19 ` Anthony Liguori
2010-09-12 17:31 ` Avi Kivity
2010-09-07 14:49 ` Anthony Liguori
2010-09-07 15:02 ` Kevin Wolf
2010-09-07 15:11 ` Anthony Liguori
2010-09-07 15:20 ` Kevin Wolf
2010-09-07 15:30 ` Anthony Liguori
2010-09-07 15:39 ` Kevin Wolf
2010-09-07 16:00 ` Anthony Liguori
2010-09-07 15:03 ` [Qemu-devel] " Daniel P. Berrange
2010-09-07 15:16 ` Anthony Liguori
2010-09-12 10:55 ` [Qemu-devel] " Avi Kivity
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=4C864CAD.1060706@linux.vnet.ibm.com \
--to=aliguori@linux.vnet.ibm.com \
--cc=agraf@suse.de \
--cc=libvir-list@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.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.