[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.
- Re: [Qemu-devel] [PATCH v20 3/5] block/gluster: deprecate rdma support, (continued)