qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/1] block/gluster: add support for multiple glu


From: Deepak C Shetty
Subject: Re: [Qemu-devel] [PATCH 1/1] block/gluster: add support for multiple gluster backup volfile servers
Date: Wed, 9 Sep 2015 15:49:15 +0530
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0



On 09/09/2015 03:16 PM, Stefan Hajnoczi wrote:
On Tue, Sep 08, 2015 at 08:40:58PM +0530, Deepak Shetty wrote:
On Tue, Sep 8, 2015 at 8:32 PM, Daniel P. Berrange <address@hidden>
wrote:

On Tue, Sep 08, 2015 at 06:34:09PM +0530, Prasanna Kumar Kalever wrote:
This patch adds a way to specify multiple backup volfile servers to the
gluster
block backend of QEMU with both tcp and rdma transport types.

Problem:

Currenly VM Image on gluster volume is specified like this:

file=gluster[+tcp]://server1:24007/testvol/a.img

Assuming we have have three servers in trustred pool with replica 3
volume
in action and unfortunately server1 (mentioned in the command above)
went down
for some reason, since the volume is replica 3 we now have other 2
servers
active from which we can boot the VM.

But currently there is no mechanism to pass the other 2 gluster server
addresses to qemu.

Solution:

New way of specifying VM Image on gluster volume with backup volfile
servers:
file=gluster[+transport-type]://server1:24007/testvol/a.img\
      ?backup-volfile-servers=server2&backup-volfile-servers=server3
Comparison with RBD syntax:

   file=rbd:pool/image:auth_supported=none:\
     mon_host=mon1.example.org\:6321\;mon2.example.org\:6322\;\
     mon3.example.org\:6322,if=virtio,format=raw

As Peter already mentioned, you're missing port numbers.

It is slightly unpleasant to have different ways of specifying the first
vs second, third, etc hosts. I wonder if it would be nicer to keep all
the hostnames in the host part of the URI. eg


  
file=gluster[+transport-type]://server1:24007,server2:3553,server3:2423/testvol/a.img\
       ?backup-volfile-servers=server2&backup-volfile-servers=server3

Of course it ceases to be a wellformed URI at that point, so another option
would be to just allow the host part of the URI to be optional, and then
accept mutliple instances ofa  'server' arg, eg

  file=gluster[+transport-type]:///testvol/a.img\
       ?server=server1:2424&server=server2:2423&sever=server3:34222


Is it allowed to have this syntax and be a valid URI ? I admit i haven't
looked at the
URI rfc for a long time now, hence the Q. Also looking at rbd syntax, it
looks
to follow this model already is it ? Whats the difference between using ':'
to
separate key=value pairs Vs using '?" query syntax ? Should we look at
having
a uniform way of specifying URI be it rbd or gluster or sheepdog ... ? If
yes
what that uniform syntax be using ':" or '?" ?
Instead of trying to make a gluster:// URI that accommodates multiple
volfile servers, perhaps the block driver can take a list of URIs.
Something like:

   -drive 
driver=gluster,uri[0]=gluster[+transport-type]://server1:24007/testvol/a.img,
                         
uri[1]=gluster[+transport-type]://server2:24008/testvol/a.img,
                         
uri[2]=gluster[+transport-type]://server3:24009/testvol/a.img

Whats the adv of this Vs extending existing gluster URI ?
This actually sounds like a lot more typing, and making qemu cmd line a lot more lengthier :)

Is -drive file=gluster://.... same as -drive driver=gluster, uri[0]=gluster..... ?

Also this would mean we need to change libvirt support for gluster based network disk completely
and also maintain the old code for backward compat, right ?

thanx,
deepak


This approach allows full flexibility.

I have CCed Kevin in case he has comments.

Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]