【技术实现步骤摘要】
一种解决GlusterFS IO阻塞造成文件系统挂起的方法及系统
[0001]本专利技术涉及分布式存储技术,具体涉及一种解决GlusterFS IO阻塞造成文件系统挂起的方法及系统。
技术介绍
[0002]分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。常见的分布式文件系统有GlusterFS、Ceph、FastDFS、Lustre等,它们均各有所长,其中Glusterfs是一款开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA或Tcp/Ip方式将许多主机,通过网络互联成一个并行的网络文件系统,具有可扩展性、高性能、高可用性等特点。本文将基于GlusterFS介绍一种解决该分布式存储系统的单点IO阻塞造成集群文件系统挂载的方法。
[0003]GlusterFS分布式存储系统通常使用多台服务器共同存储数据,多副本冗余,为保障数据的一致性以及安全性,当同组冗余副本(冗余副本分布在不同主机上)在线的情况下,存储在该组副本中的文件每个写请求均必须等待同组副本写完成,方可返回,如一方挂起或长时间阻塞均会对该文件的访问造成严重影响。当阻塞的请求对应的文件类型为文件夹时
【技术保护点】
【技术特征摘要】
1.一种解决GlusterFS IO阻塞造成文件系统挂起的方法,其特征在于,包括:1)通过服务端副本服务进程glusterfsd定时检测并修复发生IO阻塞的线程;2)判断发生IO阻塞且无法修复的线程与总线程数的占比超过设定阈值是否成立,若不成立,则本轮处理结束,等待指定的间隔时间后跳转执行步骤1);否则,杀死服务端副本服务进程glusterfsd的服务,结束并退出。2.根据权利要求1所述的解决GlusterFS IO阻塞造成文件系统挂起的方法,其特征在于,步骤1)中检测并修复发生IO阻塞的线程时,包括根据链表TL和链表KL来检测并修复发生IO阻塞的线程,所述链表TL由线程结构体对象iot_thread_ctx作为成员Tx以链表方式串联组成,所述线程结构体对象iot_thread_ctx用于存储IO处理线程的状态以及上下文;所述链表KL由文件信息结构体对象iot_killed作为成员Kx以链表方式串联组成,所述文件信息结构体对象iot_killed用于记录因文件操作处理线程fop
‑
threads的发生超过规定的阻塞时间而被曾经杀死的线程对应的文件信息。3.根据权利要求2所述的解决GlusterFS IO阻塞造成文件系统挂起的方法,其特征在于,所述线程结构体对象iot_thread_ctx包括:循环链表头list_head list,用于串联所有线程的线程结构体对象iot_thread_ctx;线程ID id,用于跟踪对应线程,以及根据需要杀死线程;线程处理文件操作请求编号gen,用于统计当前线程所处理的文件操作请求顺序编号,文件操作处理线程每从文件操作请求队列fop
‑
queue取一个文件操作请求处理,则该线程的对应的文件操作请求编号gen加1;原文件操作请求编号oldgen,用于记录上一次线程处理文件操作请求gen的数值,通过比对文件操作请求编号gen与原文件操作请求编号oldgen值以判断线程是否发生阻塞;状态status,用于保存当前线程状态,0代表睡眠状态,线程在空闲时会进入到自主睡眠状态,自主睡眠状态下忽略文件操作请求编号gen与原文件操作请求编号oldgen的比对结果;阻塞状态blocking_statistics,当文件操作请求编号gen与原文件操作请求编号oldgen相等、且状态status的值为1成立时,判定该线程当前处阻塞状态,阻塞状态blocking_statistics的值自增1;当线程结束阻塞状态时,阻塞状态blocking_statistics清零;上下文*stub,用于保存对应线程正在处理的文件操作请求的上下文,用于对应文件操作请求处理线程发生超过规定的阻塞时间时,返回文件操作请求失败给上层调用。4.根据权利要求3所述的解决GlusterFS IO阻塞造成文件系统挂起的方法,其特征在于,所述文件信息结构体对象iot_killed包括:循环链表头list_head list,用于串联所有在规定的一段时间内发生过因IO阻塞而被强制杀死并返回的文件操作请求错误对应的文件信息;文件标记gfid,用于记录对应文件的标记gfid,标记gfid为GlusterFS文件系统对文件的标记,文件标记gfid用于文件匹配;路径*path,用于记录对应文件的具体路径,用于文件匹配。5.根据权利要求4所述的解决GlusterFS IO阻塞造成文件系统挂起的方法,其特征在于,所述根据链表TL和链表KL来检测并修复发生IO阻塞的线程包括:
1.1)重置用于统计本轮检测阻塞线程数量的全局统计变量BTC以及全局分优先级统计数组变量blocked[PR],其中PR代表各个优先级;1.2)检测链表KL的周期是否超期,若链表KL的周期超期,则清空链表KL中所有的成员Kx;跳转下一步;1.3)尝...
【专利技术属性】
技术研发人员:周继峰,孙利杰,陈松政,刘文清,杨涛,
申请(专利权)人:湖南麒麟信安科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。