关于gluster数据不同步的处理
2014-09-18 10:05
211 查看
我们组的云平台后端使用分布式文件系统
采用的就是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,要说这个分布式文件系统确实比较智能
平时重启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的情况的话,要人工来做
相关文章推荐
- 关于c#中两个DataGrid绑定到主表和子表的数据同步问题
- 关于MSSQL Server中DATETIME类型数据的处理[摘]
- 数据同步处理(以sql server 2000为例)
- 4 关于数据仓库维度数据处理的方法探究系列——缓慢变化维处理——覆盖方式
- 1 关于数据仓库维度数据处理的方法探究系列——维的概述
- 关于ASP.NET下临时文件和数据的处理
- 关于SQL与Oracle 数据同步
- 关于showModalDialog()弹出窗口.更改了页面的数据,再次点击页面却没有刷新-cache 处理
- 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
- 关于MS SQL Server中DATETIME类型数据的处理
- 数据同步处理(以sql server 2000为例)
- 数据同步处理(以sql server 2000为例)
- direct=true 错误处理方法 (关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
- 关于异地数据同步的方案
- TT数据不能同步处理
- 数据同步处理(以sql server 2000为例)
- 关于DataList嵌套DataList的问题(重点在于处理某些特殊结构与数据绑定)
- 2 关于数据仓库维度数据处理的方法探究系列——无变化维度处理
- 关于网站大并发情况下的数据的初始化如何处理。
- 3 关于数据仓库维度数据处理的方法探究系列——缓慢变化维概述和原理