On Wed, Jul 20, 2016 at 12:03 AM, Markus Armbruster <arm...@redhat.com> wrote: > > One more... > > Prasanna Kumar Kalever <prasanna.kale...@redhat.com> 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 <prasanna.kale...@redhat.com> > > R-by stands.