[libvirt PATCH 8/9] qemu: Allow migration over UNIX socket
Martin Kletzander
mkletzan at redhat.com
Wed Aug 26 09:11:32 UTC 2020
On Wed, Aug 26, 2020 at 09:20:20AM +0100, Daniel P. Berrangé wrote:
>On Wed, Aug 26, 2020 at 12:14:44AM +0200, Martin Kletzander wrote:
>> On Tue, Aug 25, 2020 at 04:31:29PM +0100, Daniel P. Berrangé wrote:
>> > On Tue, Aug 25, 2020 at 07:47:14AM +0200, Martin Kletzander wrote:
>> > > This allows:
>> > >
>> > > a) migration without access to network
>> > >
>> > > b) complete control of the migration stream
>> > >
>> > > c) easy migration between containerised libvirt daemons on the same host
>> > >
>> > > Resolves: https://bugzilla.redhat.com/1638889
>> > >
>> > > Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>> > > ---
>> > > docs/manpages/virsh.rst | 17 ++++-
>> > > docs/migration.html.in | 33 ++++++++++
>> > > src/qemu/qemu_migration.c | 128 +++++++++++++++++++++++++++-----------
>> >
>> >
>> > > +virsh migrate web1 [--p2p] --copy-storage-all 'qemu+unix:///system?socket=/tmp/migdir/test-sock-driver' 'unix://?socket=/tmp/migdir/test-sock-qemu' [--listen-address /tmp/migdir/test-sock-qemu] --disks-socket /tmp/migdir/test-sock-nbd
>> > > + </pre>
>> >
>> > Why unix://?socket=/tmp/migdir/test-sock-qemu instead of the more obvious
>> > unix:///tmp/migdir/test-sock-qemu ? It feels like ?socket is just
>> > reinventing the URI path component.
>> >
>> > That ?socket syntax makes sense for the libvirtd URIs, because we use
>> > the path component to identify the libvirtd instance.
>> >
>> > For the migration URI nothing is using the path component, so we should
>> > use that for the UNIX path.
>> >
>>
>> I, personally, would prefer to have it unified. Having different way of
>> specifying a unix socket for each parameter is just anti-UX. And since the
>> libvirt URI and NBD URI [1] might use the path component, I did not want to
>> reinvent the wheel of specifying socket paths. And I'm not getting to anonymous
>> sockets and the like.
>
>Both the libvirt URI and NBD URI are doing multiple different jobs,encoding
>both the address of the server and a bunch of extra components. Libvirt
>choose to use the path as a "instance name" which effectively should be
>thought of as ust an alias/symlink for the socket path. IOW, libvirt should
>really not have added a "socket" parameter at all, just accepted the UNIX
>socket path as the URI path.
>
>NBD, was dealing with the fact that UNIX path had to be retrofitted after
>the URI path had alrady seen common use for the export name. If it was
>not for existing practice, export name would have been better as a URI
>parameter IMHO
>
>In the case of the URIs we need for migration stream and NBD stream, the
>only thing we need is the address of the target. There's no compelling
>reason to avoid using the URI path in that sense. I don't find following
>the libvirt / NBD URI approach compelling because we're not following the
>rest of their URI scheme, and they are both flawed due to historical
>mistakes.
>
OK, I'll rewrite that.
>Regards,
>Daniel
>--
>|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org -o- https://fstop138.berrange.com :|
>|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200826/d8277794/attachment-0001.sig>
More information about the libvir-list
mailing list