GlusterFS数据不一致的产生与恢复

1 说明

软件版本:GlusterFS6.10

操作系统CentOS Linux release 7.8.2003 (Core)

本文以2副本+1仲裁卷进行解释说明,卷参数配置如下

Volume Name: vol1
Type: Replicate
Volume ID: dba77e5d-3e70-4ff5-98d9-de2583a05f62
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: 10.10.176.232:/c001_vol1
Brick2: 10.10.176.221:/c001_vol1
Brick3: 10.10.176.188:/c001_vol1_arbiter (arbiter)
Options Reconfigured:
performance.client-io-threads: off
nfs.disable: on
transport.address-family: inet

2 数据不一致的产生

2.1 数据写入

gluster副本卷会同时写入多个副本,每个基于写入的 FOP 都采用由 5 个阶段组成的写入事务模型:

  1. Lock 阶段 锁定正在修改文件,以便其他客户端的 AFR 在尝试同时修改同一文件时被阻止;
  2. Pre-op 阶段 在所有参与的 brick 上将 xattr (trusted.afr.dirty) 增加 1,作为即将发生 FOP 的指示;
  3. FOP 阶段 在所有 brick 上执行实际的 FOP(比如 setfattr)
  4. Post-op 阶段 在 FOP 成功的 brick 上将脏 xattr (trusted.afr.dirty) 减 1。此外,还要增加成功 brick 上的“待处理”xattr (trusted.afr.$VOLNAME-client-x) xattr,以识别 FOP 失败的 brick;
  5. Unlock 阶段 释放在阶段 1 中获得的锁。任何竞争客户端现在都可以继续自己的写入事务。

2.2 扩展属性说明

2.2.1 trusted.afr.dirty

trusted.afr.dirty 的前8个数字表示数据(data)的变化,接下来的8个数字表示元数据(metadata)的变化 最后8个数字表示目录项目(entry)的变化

不同的文件操作会导致扩展属性值变化:

FOP Value after pre-op phase Value after post-op phase
afr_writev trusted.afr.dirty=0x00000001 00000000 00000000 trusted.afr.dirty=0x00000000 00000000 00000000
afr_setattr trusted.afr.dirty=0x00000000 00000001 00000000 trusted.afr.dirty=0x00000000 00000000 00000000
afr_create trusted.afr.dirty=0x00000000 00000000 00000001 trusted.afr.dirty=0x00000000 00000000 00000000

因此,根据FOP的类型(即数据/元数据/目录项事务),dirty xattr的不同字节集会递增/递减,只有在某些brick上的FOP失败时,它才会在操作后增加。

2.2.2 trusted.afr.volname-client-subvolume-index

trusted.afr.volname-client-subvolume-index用来维护文件的changelog。该值是由glusterfs客户端(fuse或nfs服务器)进程计算的。

当glusterfs客户端修改文件或目录时,客户端会联系每个brick,并根据brick的响应更新扩展属性。

subvolume-index是在gluster volume info<volname>输出中的(brick number - 1),以我们的测试卷为例,对应的3个bri

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值