故障排除GlusterFS
文章描述二大GlusterFS问题并提供解决步骤
- 愈合复制量
- 修复二分脑问题
愈合体积
滚动体积中的任何砖都脱机光栅化
剩余节点上的守护程序记录所有未复制到离线块的文件离线砖重新可用时,集群启动愈合过程,复制更新文件到该砖启动进程可耗时10分钟 基于观察
可运行下列命令查看关于哪些文件复制的信息:
gluster量解音量Name信息
可查看修复过程复制文件的信息也可以查看离线节点上独立修改文件的信息(split-brain)或因任何理由无法复制文件以上命令附加下列选项:
gluster卷解析卷名Gluster卷解析卷名
也可以手动调用下命令强制愈合if you使用可选参数全数
中所有没有标记需要治愈的文件都同步
gluster量解音量Name
可选性 :
晶体体积解析
修复二分脑问题
A级分裂脑问题出现时复制节点之一脱机(或与集群脱机),并更新其中一块块文件节点重新加入GlusterFS集群后,愈合过程失败,原因是两个版本文件引发冲突
下例中,问题先人工触发,再固定节点调用gluster4
断开, 并修改块中存储的文件 :
[root@gluster1 ~]# cat /mnt/gluster/gvol0/testfile.txt This is version 1 of the file [root@gluster4 ~]# ifdown eth2 ##Wait just a little bit for the other nodes to see it disconnected [root@gluster1 ~]# gluster peer status | grep -A2 glus4 Hostname: glus4 Uuid: 734aea4c-fc4f-4971-ba3d-37bd5d9c35b8 State: Peer in Cluster (Disconnected) [root@gluster4 ~]# echo "This is new content" >> /var/lib/gvol0/brick4/testfile.txt [root@gluster4 ~]# cat /var/lib/gvol0/brick4/testfile.txt This is version 1 of the file This is new content [root@gluster1 ~]# cat /mnt/gluster/gvol0/testfile.txt This is version 1 of the file [root@gluster4 ~]# ifup eth2 ##Wait just a little bit for the other nodes to see it reconnected [root@gluster1 ~]# gluster peer status | grep -A2 glus4 Hostname: glus4 Uuid: 734aea4c-fc4f-4971-ba3d-37bd5d9c35b8 State: Peer in Cluster (Connected)
恢复过程启动
gluster卷解析信息2/var/lib/gvol0brick3
通知测试文件.txt文件列表表示GlusterFS不知道文件哪个版本正确解决问题很重要,因为它混淆客户并导致客户崩溃
glusterFS每块有隐藏文件夹晶晶片内含十六进制GlusterFSID例子中Gluster4复制Gluster1节点下示例显示GFIDs测试文件.txtgluster1和gluster4
#fattr-m-d -e hex /var/lib/gvol0/brick1/testfile.txt # file: var/lib/gvol0/brick1/testfile.txt trusted.afr.gvol0-client-0=0x000000000000000000000000 trusted.afr.gvol0-client-1=0x000000000000000000000000 trusted.afr.gvol0-client-2=0x000000000000000000000000 trusted.afr.gvol0-client-3=0x000000000000000000000000 trusted.gfid=0xa702251de4c547e2ba2f96b896a43718 [root@gluster4 ~]# getfattr -m .-d -e hex /var/lib/gvol0/brick4/testfile.txt # file: var/lib/gvol0/brick4/testfile.txt trusted.afr.gvol0-client-0=0x000000000000000000000000 trusted.afr.gvol0-client-1=0x000000000000000000000000 trusted.afr.gvol0-client-2=0x000000000000000000000000 trusted.afr.gvol0-client-3=0x000000000000000000000000 trusted.gfid=0xa702251de4c547e2ba2f96b896a43718
节点中,文件本身和关联GFID文件(本例为a702251d-e4c5-47e2ba2f-96b896a43718)必须从底层挂载中删除唯有到那时才能再次触发愈合过程关键是要理解要保存文件的哪个副本可能的话,将文件全拷贝保存到GlusterFS外的位置,从所有节点删除文件,触发愈合过程并复制文件返回挂起点方法比暴力强得多,但如果愈合过程仍然无法通过复制正确修复文件则有效
rm-vf/lib/gvol0brick1/.glusterfs/a7/02/a702251-e4c5-47e2b2f-96b86a43718
更新 约一个月前