qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v20 5/5] block/gluster: add support for multiple


From: Prasanna Kalever
Subject: Re: [Qemu-devel] [PATCH v20 5/5] block/gluster: add support for multiple gluster servers
Date: Wed, 20 Jul 2016 00:31:32 +0530

On Wed, Jul 20, 2016 at 12:03 AM, Markus Armbruster <address@hidden> wrote:
>
> One more...
>
> Prasanna Kumar Kalever <address@hidden> writes:
>
> > This patch adds a way to specify multiple volfile servers to the gluster
> > block backend of QEMU with tcp|rdma transport types and their port numbers.
> >
> > Problem:
> >
> > Currently VM Image on gluster volume is specified like this:
> >
> > file=gluster[+tcp]://host[:port]/testvol/a.img
> >
> > Say we have three hosts in a trusted pool with replica 3 volume in action.
> > When the host mentioned in the command above goes down for some reason,
> > the other two hosts are still available. But there's currently no way
> > to tell QEMU about them.
> >
> > Solution:
> >
> > New way of specifying VM Image on gluster volume with volfile servers:
> > (We still support old syntax to maintain backward compatibility)
> >
> > Basic command line syntax looks like:
> >
> > Pattern I:
> >  -drive driver=gluster,
> >         volume=testvol,path=/path/a.raw,[debug=N,]
> >         server.0.type=tcp,
> >         server.0.host=1.2.3.4,
> >         server.0.port=24007,
> >         server.1.type=unix,
> >         server.1.socket=/path/socketfile
> >
> > Pattern II:
> >  'json:{"driver":"qcow2","file":{"driver":"gluster",
> >        "volume":"testvol","path":"/path/a.qcow2",["debug":N,]
> >        "server":[{hostinfo_1}, ...{hostinfo_N}]}}'
> >
> >    driver      => 'gluster' (protocol name)
> >    volume      => name of gluster volume where our VM image resides
> >    path        => absolute path of image in gluster volume
> >   [debug]      => libgfapi loglevel [(0 - 9) default 4 -> Error]
> >
> >   {hostinfo}   => {{type:"tcp",host:"1.2.3.4"[,port=24007]},
> >                    {type:"unix",socket:"/path/sockfile"}}
> >
> >    type        => transport type used to connect to gluster management 
> > daemon,
> >                   it can be tcp|unix
> >    host        => host address (hostname/ipv4/ipv6 addresses/socket path)
> >    port        => port number on which glusterd is listening.
> >    socket      => path to socket file
> >
> > Examples:
> > 1.
> >  -drive driver=qcow2,file.driver=gluster,
> >         file.volume=testvol,file.path=/path/a.qcow2,file.debug=9,
> >         file.server.0.type=tcp,
> >         file.server.0.host=1.2.3.4,
> >         file.server.0.port=24007,
> >         file.server.1.type=tcp,
> >         file.server.1.socket=/var/run/glusterd.socket
> > 2.
> >  'json:{"driver":"qcow2","file":{"driver":"gluster","volume":"testvol",
> >          "path":"/path/a.qcow2","debug":9,"server":
> >          [{type:"tcp",host:"1.2.3.4",port=24007},
> >           {type:"unix",socket:"/var/run/glusterd.socket"}] } }'
>
> This example is 1. confusing, and 2. wrong :)
>
> It's wrong, because several member names lack quotes.  Also, the value
> of port should be a string.
>
> It confused me, because I didn't realize that this is the non-option
> image argument.  Two ways to fix that.  One, add context:
>
>     $ qemu-system-x86_64 
> 'json:{"file":{"driver":"gluster","volume":"sample","path":"/fedora23.qcow2","server":[{"type":"tcp","host":"192.168.1.220","port":"24007"},{"type":"unix","socket":"/var/run/glusterd.socket"}]},"driver":"qcow2"}'
>
> Two, use -drive:
>
>     -drive 
> 'file=json:{"file":{"driver":"gluster",,"volume":"sample",,"path":"/fedora23.qcow2",,"server":[{"type":"tcp",,"host":"192.168.1.220",,"port":"24007"},,{"type":"unix",,"socket":"/var/run/glusterd.socket"}]},,"driver":"qcow2"}'
>
> Exquisitely ugly due to the necessary comma escaping.


or


Examples:
1.
 -drive driver=qcow2,file.driver=gluster,
        file.volume=testvol,file.path=/path/a.qcow2,file.debug=9,
        file.server.0.type=tcp,
        file.server.0.host=1.2.3.4,
        file.server.0.port=24007,
        file.server.1.type=unix,
        file.server.1.socket=/var/run/glusterd.socket
2.
  'json:{"driver":"qcow2","file":{"driver":"gluster","volume":"testvol",
         "path":"/path/a.qcow2","debug":9,"server":
         [{"type":"tcp","host":"1.2.3.4","port":"24007"},
          {"type":"unix","socket":"/var/run/glusterd.socket"}
         ]}}'

I have tested this and they are working now after a small alteration
sorry about that

--
Prasanna

>
> Hopefully, the maintainer can touch this up on commit.
>
> > This patch gives a mechanism to provide all the server addresses, which are 
> > in
> > replica set, so in case host1 is down VM can still boot from any of the
> > active hosts.
> >
> > This is equivalent to the backup-volfile-servers option supported by
> > mount.glusterfs (FUSE way of mounting gluster volume)
> >
> > credits: sincere thanks to all the supporters
> >
> > Signed-off-by: Prasanna Kumar Kalever <address@hidden>
>
> R-by stands.



reply via email to

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