- 论坛徽章:
- 0
|
当我停掉所有服务器,把storage的存储目录全部删除,重新布置,但tracker中dat 记录文件没有删除时,重新启动所有服务时,发现storage连接不上tracker, 我debug了一下,发现是因为storage找不到同步源(我一个组内有两个storage),而自己有不能变成active 状态,因为在tracker的内存空间中有另个storage,他们两之间相互无法找到可以的active 作为同步源。我把tracker的.dat文件删除,就好了。
后来发现是因为storage的.data_init_flag 文件被删除了,里面有个g_sync_old 字段,所以导致两个storage都无法上线,如果该组内有一个上线的storage就不会出现该问题。
但是.data_init_flag 不被删除,只删除data 会不会出现同步只会同步到以后的数据,而以前的数据无法同步到?
而删除.data_init_flag 文件,而同组内所有的storage都删除了.data_init_flag, 而tracker 的*.dat 文件没有删除,就会出现不能连接到tracker的现象。
所有,个人觉得,删除storage 可以先调用client 的delete API 让tracker 把*.dat文件刷新,再全部格式化storage.
或者,或者把某个storage 下线删除格式掉,但是要保证同组内至少有个storage是active 的,这样才能保证这个被删除的storage在下次连接时,获取到同步源,而且可以从同步不会出现问题。
不知道这样理解对不对,等版主哥答复
还有个问题
删除文件的同时下载文件,会不会出现什么问题? |
|