geo-replication
2016-05-04 本文已影响260人
zhllsr
-
启动gsync
glusterd_start_gsync- 检测gsync运行状态:gsync_status
- 添加命令参数:runner_add_args
- 调用shell脚本来运行python代码进行异地备份:runner_start:execvp (runner->argv[0], runner->argv);
-
资源启动
- 检查链接:local.can_connect_to(remote)
- 创建链接: connect---->inhibit
- 创建临时目录: margv = self.make_mount_argv(*a)
- 启动agent---->创建线程:repce.service_loop()
- 启动monitor
-
核心函数crawl,进行数据同步
- 唤醒机制:changlog或者synchronizes stime(现在使用的方式是changlog)
- 同步核心逻辑在Xcrawl中
dem = self.master.server.entries(path) //获取volume根目录的entries,也就是所有的文件
通过比较该文件的xtime与slave的xtime,判断是否进行同步
如果是dir文件:递归调用 -
异地同步机制
- 主要是三个函数在不停的循环:crawlwrap crawl process
- crawlwrap 会循环查询,现在truns 与 上次truns的差值
如果是0,continue;
否则,就会唤醒crawl进行数据同步
- crawl 上面已经讲过
- process会循环查看changlog,看是否有文件操作,如果有就对truns进行 ++操作(还有一些其他操作,不影响主流程)