Skip to content

CRAQ链式读过程中,storage_main进程故障会引起在读的客户端挂载目录挂掉的问题 #268

Open
@Berlin1999

Description

@Berlin1999

【问题】
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions