mirror of
https://github.com/deepseek-ai/3FS.git
synced 2026-11-05 00:47:47 +00:00
[GH-ISSUE #268] CRAQ链式读过程中,storage_main进程故障会引起在读的客户端挂载目录挂掉的问题 #162
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
deepseek-ai/3FS#162
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Berlin1999 on GitHub (May 7, 2025).
Original GitHub issue: https://github.com/deepseek-ai/3FS/issues/268
【问题】
3FS为CRAQ链式读机制,测试读的时候,任意故障一个后端节点,客户端应该能正常读取,但目前测试发现,storage_main进程故障会引起在读的客户端挂载目录挂掉的问题
【环境情况】
2客户端(client1,client2)+2存储节点(storage1,storage2)
【前期环境确认】
在完成环境部署后,确认节点心跳正常,条带chains正常,所有的HEAD都分布在storage1-10001节点上,所有的TAIL都分布在storage2-10002节点上,状态均为正常
【测试前准备】
先在客户端预埋50G数据,fio下发正常,无error
【测试1】
停止stroage2的主进程(TAIL)
在fuseclient1对预埋的50G数据进行校验读,随后在读的过程中停止stroage2上面的主进程(systemctl stop storage_main),服务停止后IO有短暂的断流,随后恢复
查看list-chains,发现storage2的条带全都offline;查看list-targets,发现所有的TAIL状态都变为offline,符合正常预期;最后fuseclient1读校验正常结束,error=0,符合正常预期
随后恢复storage2节点,确认客户端读写正常,恢复至与初始环境状态一致
【测试2】
停止stroage1的主进程(HEAD)
在fuseclient1对预埋的50G数据进行校验读,随后在读的过程中停止stroage1上面的主进程(systemctl stop storage_main),服务停止后IO断流后无法恢复,当前客户端的挂载目录消失,hf3fs_fuse_main进程faild(core down)
查看list-chains,发现storage1的条带全都offline,storage2的状态为serving;查看list-targets,发现10001所在的Role变为TAIL,10002的Role变为HEAD;用fuseclient2客户端用同样的读校验命令,fio可正常读,最终error=0
不恢复storage1节点状态,重启fuseclient1的hf3fs_fuse_main进程,下发同样的fio,可正常读,最终error=0
@bugwz commented on GitHub (May 9, 2025):
很棒的测试👍
现在有没有解决该问题?有没有排查分析相关日志?位于 /var/log/3fs/ ,或者系统日志中有没有一些有价值的线索?
感觉像是在访问期间会持续访问同一个后端节点,而不是在后端节点通信异常后切换到其他节点。
@WANNA959 commented on GitHub (May 11, 2025):
请问是否测过持续写的情况下,按照storage节点维度,停止head/tail的故障表现呢
@Berlin1999 commented on GitHub (May 28, 2025):
是的,我们在日志中均没有观察到相关的有效的线索,在客户端日志只显示了rpc通信相关的日志。我们在新环境上均能稳定复现这个问题,但不能确定这个问题出在那里
@Berlin1999 commented on GitHub (May 28, 2025):
我们在持续写的时候,没有发现这个问题。停止head之后,很快就能看到全为tail的节点更新为head