我有一个双节点 GlusterFS 设置。每个节点都有 2 个副本。其中一个系统不知何故超载了。然后事情开始出错。目前我已关闭所有应用程序。我不知道如何恢复。我可以启动卷,但某些文件似乎已损坏。
我运行了gluster volume heal kvm1
,现在gluster volume heal kvm1 info
显示了一长串“gfid”,例如
<gfid:57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3>
<gfid:c725a364-93c5-4d98-9887-bc970412f124>
<gfid:8178c200-4c9a-407b-8954-08042e45bfce>
<gfid:b28866fa-6d29-4d2d-9f71-571a7f0403bd>
我不确定它是否真的在“治愈”任何东西。条目数量一直很稳定。我如何确认治愈过程确实有效?
# gluster volume heal kvm1 info|egrep 'Brick|entries'
Brick f24p:/data/glusterfs/kvm1/brick1/brick
Number of entries: 5
Brick f23p:/data/glusterfs/kvm1/brick1/brick
Number of entries: 216
Brick f23p:/bricks/brick1/kvm1
Number of entries: 6
Brick f24p:/bricks/brick2/kvm1
Number of entries: 1
# gluster volume status
Status of volume: kvm1
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick f24p:/data/glusterfs/kvm1/brick1/brick 49160 Y 5937
Brick f23p:/data/glusterfs/kvm1/brick1/brick 49153 Y 5766
Brick f23p:/bricks/brick1/kvm1 49154 Y 5770
Brick f24p:/bricks/brick2/kvm1 49161 Y 5941
NFS Server on localhost 2049 Y 5785
Self-heal Daemon on localhost N/A Y 5789
NFS Server on f24p 2049 Y 5919
Self-heal Daemon on f24p N/A Y 5923
There are no active volume tasks
答案1
我当时也是同样的状态:
- 2 次重复
- gluster volume heal myVolume 信息显示其中一个砖块上的 gfid
我找到了这个脚本(将 gfid 解析为文件路径)https://gist.github.com/semiosis/4392640
我的解释如下(即:你的第一行 gfid)在显示 gfid 的节点上(gluster 命令的结果)
文件 %yourBrickPath%/.glusterfs/57/d6/57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3 是指向 inode 的硬链接。
在正常情况下,您应该有一个文件(在您的生产目录中)指向相同的 inode,但由于某种原因,这个硬链接不再存在。
我看到两个解决方案:
- 您在生产目录中重新创建丢失的硬链接(并确保在另一个节点上具有相同的状态)
- 您无法找出文件名是什么(这是我的情况,因为其他节点上没有任何东西)并且您删除了 %yourBrickPath%/.glusterfs/57/d6/57d68ac5-5ae7-4d14-a65e-9b6bbe0f83a3
编辑:该文件的内容可能会有所帮助
答案2
如果您运行的是 3.7.7 以下版本,则可能遇到了这个错误:
https://bugzilla.redhat.com/show_bug.cgi?id=1284863
检查您的 glustershd 日志是否显示“无法获取 xlator xl-0”。
修复已在 3.7.7 中。不过,如果有人能找到解决方法就太好了。