关于gluster数据不同步的处理

我们组的云平台后端使用分布式文件系统

采用的就是gluster,要说这个分布式文件系统确实比较智能

平时重启gluster也不会导致数据丢失和影响服务

如果一个gluster的brick无法使用,还可以自动同步数据

不过总会有特殊情况发生

我们组运维的某云平台就出现了问题,gluster数据不同步

情况是这样的,该gluster有两个brick

其中有07、08这两台存储

08这台存储大概停了一两个月

gluster在这一点上还算健壮,一个存储挂掉了,还能正常使用

后来把08这台存储启动起来,然后数据就可以自动同步

但是问题又出现了,大部分数据都可以同步

只有两个disk文件无法同步,导致了两台虚机不可用

如果把08停掉,这两台虚机照样可用,启动08就不可用

这个可纠结了,虽然不可用虚机比较少,但也导致了无法启动两台存储

后来我发现07的disk比较大,08 的比较小

然后把08的disk删除,把07的disk复制到08的相同位置上

结果启动起来后还是不行

虚机还是不能够启动

后来我发现了问题所在,那就是时间戳

两个disk的时间戳相差太大,所以gluster内部认为文件不可用

据我观察,两台存储时间戳相差2分钟内还是可以用的

后来改了一下两个disk的时间戳,重启gluster

果然一切都正常了

==========================================================

下面再写一点其他的原理

gluster做到文件同步,也是因为每个文件都是有隐藏状态的

查看隐藏状态使用getfattr -m . -d -e hex 这样的命令

会看到状态如下:

file: disk
trusted.afr.eccp-instances-client-0=0x000000780000000000000000
trusted.afr.eccp-instances-client-1=0x000000000000000000000000
trusted.gfid=0xda22c205e6d147b299951f374f09a942

像我这个文件就出现了问题

client0的修改次数是0x78,而且没有同步到client1上

这里就说client0是明智的,以client0 的文件为主

正常的文件都会是0

如果出现两个文件都不是0的情况的话,要人工来做

你可能感兴趣的:(关于gluster数据不同步的处理)