[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: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v20 5/5] block/gluster: add support for multiple gluster servers |
Date: |
Tue, 19 Jul 2016 20:33:24 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
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.
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)