tino_maier at gmx.de
2018-Jan-22 11:25 UTC
[Gluster-users] geo-replication initial setup with existing data
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Hello everyone,</div> <div> </div> <div>i was searching for a replacement of my rsync dublication of data to second server and ended up with gluster geo-replicaiton. But after reading the documentation and lots of websites I'm still unsure how to setup a geo-replication without retransfering all data. </div> <div>I succeeded in converting my existing data folder to a gluster volume by creating a volume and using the "find /media/brick -noleaf -print0 | xargs --null stat" inside the mounted gluster volume folder on the master.</div> <div>But how to I have to prepare the slave? I try to do it in the same way as with the master, but this will only result in error messages like</div> <div>[2018-01-22 11:17:05.209027] E [repce(/media/brick):209:__call__] RepceClient: call failed on peer call=27401:140641732232960:1516619825.12 method=entry_ops error=OSError<br/> [2018-01-22 11:17:05.209497] E [syncdutils(/media/brick):331:log_raise_exception] <top>: FAIL:<br/> Traceback (most recent call last):<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py", line 210, in main<br/> main_i()<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py", line 801, in main_i<br/> local.service_loop(*[r for r in [remote] if r])<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py", line 1670, in service_loop<br/> g1.crawlwrap(oneshot=True, register_time=register_time)<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py", line 597, in crawlwrap<br/> self.crawl()<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py", line 1555, in crawl<br/> self.process([item[1]], 0)<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py", line 1204, in process<br/> self.process_change(change, done, retry)<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py", line 1114, in process_change<br/> failures = self.slave.server.entry_ops(entries)<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/repce.py", line 228, in __call__<br/> return self.ins(self.meth, *a)<br/> File "/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/repce.py", line 210, in __call__<br/> raise res<br/> OSError: [Errno 42] .gfid/00000000-0000-0000-0000-000000000001</div> <div>I removed now all extended attributes on the slave and deleted the .glusterfs folder in the brick, so the system is hopefully in the inital state again.<br/> Is there any way to setup a geo-replication session without resyncing all data by gluster? Because this will take month with my poor connection over here. I'm using gluster 3.13.1 on two Ubuntu 16.04.3 LTS hosts.</div> <div> </div> <div>I hope someone can help me with some hints, thanks and best regards</div> <div>Tino</div> <div> </div> <div class="signature"> </div></div></body></html>
Kotresh Hiremath Ravishankar
2018-Jan-31 02:54 UTC
[Gluster-users] geo-replication initial setup with existing data
Hi,
Geo-replication expects the gfids (unique identifier similar to inode
number in backend file systems) to be same
for a file both on master and slave gluster volume. If the data is directly
copied by other means other than geo-replication,
gfid will be different. The crashes you are seeing is because of that.
If the data is not huge, I would recommend to sync the data from master
volume using geo-replication. The other way
is to copy directly to slave and set the gfid at the backend for each file
to be same as in master volume and then setup
geo-replication. To do the latter, follow below steps. (Note that it's not
tested extensively)
1. Run the following commands on any one of the master nodes:
# cd /usr/share/glusterfs/scripts/
# sh generate-gfid-file.sh localhost:${master-vol} $PWD/get-gfid.sh
/tmp/tmp.*atyEmKyCjo*/upgrade-gfid-values.txt
# scp /tmp/tmp.*atyEmKyCjo*/upgrade-gfid-values.txt root@${slavehost}:/tmp/
2. Run the following commands on a slave node:
# cd /usr/share/glusterfs/scripts/
# sh slave-upgrade.sh localhost:${slave-vol}
/tmp/tmp.*atyEmKyCjo*/upgrade-gfid-values.txt $PWD/gsync-sync-gfid
3. Setup geo-rep and start
Thanks,
Kotresh HR
On Mon, Jan 22, 2018 at 4:55 PM, <tino_maier at gmx.de> wrote:
> Hello everyone,
>
> i was searching for a replacement of my rsync dublication of data to
> second server and ended up with gluster geo-replicaiton. But after reading
> the documentation and lots of websites I'm still unsure how to setup a
> geo-replication without retransfering all data.
> I succeeded in converting my existing data folder to a gluster volume by
> creating a volume and using the "find /media/brick -noleaf -print0 |
xargs
> --null stat" inside the mounted gluster volume folder on the master.
> But how to I have to prepare the slave? I try to do it in the same way as
> with the master, but this will only result in error messages like
> [2018-01-22 11:17:05.209027] E [repce(/media/brick):209:__call__]
> RepceClient: call failed on peer call=27401:140641732232960:1516619825.12
> method=entry_ops error=OSError
> [2018-01-22 11:17:05.209497] E
[syncdutils(/media/brick):331:log_raise_exception]
> <top>: FAIL:
> Traceback (most recent call last):
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py",
> line 210, in main
> main_i()
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py",
> line 801, in main_i
> local.service_loop(*[r for r in [remote] if r])
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py",
> line 1670, in service_loop
> g1.crawlwrap(oneshot=True, register_time=register_time)
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
> line 597, in crawlwrap
> self.crawl()
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
> line 1555, in crawl
> self.process([item[1]], 0)
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
> line 1204, in process
> self.process_change(change, done, retry)
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py",
> line 1114, in process_change
> failures = self.slave.server.entry_ops(entries)
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/repce.py",
> line 228, in __call__
> return self.ins(self.meth, *a)
> File
"/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/repce.py",
> line 210, in __call__
> raise res
> OSError: [Errno 42] .gfid/00000000-0000-0000-0000-000000000001
> I removed now all extended attributes on the slave and deleted the
> .glusterfs folder in the brick, so the system is hopefully in the inital
> state again.
> Is there any way to setup a geo-replication session without resyncing all
> data by gluster? Because this will take month with my poor connection over
> here. I'm using gluster 3.13.1 on two Ubuntu 16.04.3 LTS hosts.
>
> I hope someone can help me with some hints, thanks and best regards
> Tino
>
>
>
> _______________________________________________
> Gluster-users mailing list
> Gluster-users at gluster.org
> http://lists.gluster.org/mailman/listinfo/gluster-users
>
--
Thanks and Regards,
Kotresh H R
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.gluster.org/pipermail/gluster-users/attachments/20180131/aeecc179/attachment.html>