一种分层缓存方法、系统及相关组件技术方案

技术编号:37440617 阅读:13 留言:0更新日期:2023-05-06 09:12
本申请公开了一种分层缓存方法、系统及相关组件,涉及分布式存储领域,该分层缓存方法应用于分布式存储系统的每一计算节点,包括:利用客户端进程监测客户端向分布式存储系统发出的文件IO操作请求,当监测到文件IO操作请求,将文件IO操作请求重定向到服务端进程;利用服务端进程判断文件IO操作请求对应的目标存储位置是否为聚合缓存层;若否,从分布式存储系统底层读取文件IO操作请求对应的数据,并将数据缓存到聚合缓存层;若是,从聚合缓存层中读取数据,并将数据返回到客户端进程,以便客户端进程将数据返回至客户端。本申请能够提高海量小文件数据集的IO性能,改善高并发元数据密集型文件系统业务中元数据造成的性能瓶颈。颈。颈。

【技术实现步骤摘要】
一种分层缓存方法、系统及相关组件


[0001]本申请涉及分布式存储领域,特别涉及一种分层缓存方法、系统及相关组件。

技术介绍

[0002]随着HPC(High Performance Computing,高性能计算机群)计算能力的快速增长,大规模、高并发应用程序对分布式存储系统IO(Input Output,输入输出)带来了较大压力。高性能HPC场景所涉及的三个关键要素:要素一,每个高性能计算节点的数据和标签元数据属性均需要进行大规模、高并发存储IO,其中80%的IO包括加载、修饰数据集,用于HPC训练和随机数据检索,典型的密集型IO模型为;要素二,HPC高性能计算过程,包括数据预处理,数据标记,数据压缩等;要素三,分布式数据一致性同步更新。
[0003]通过分析HPC场景的三个关键要素发现,高性能计算产生的海量小文件高并发IO和随机访问,容易造成分布式存储系统IO读写性能饱和,例如常见的HPC数据集,一般包含3000个不同种类的超过200万以上的小文件,如果存储IO读写软件栈无法满足大规模运行的HPC需求,将会阻塞高性能计算业务,因此,分布式存储系统IO性能对高性能计算业务至关重要。现有的技术方案提出了一些针对高性能计算提高存储IO性能的优化方案,如预取和缓存,然而,在HPC高性能计算场景上采用现有解决方案进行大规模、高并发存储IO依然存在许多技术挑战,如针对小文件读取密集型的高性能IO,会产生巨大的分布式存储系统元数据服务开销,进而影响数据存储效率。
[0004]因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

技术实现思路

[0005]本申请的目的是提供一种分层缓存方法、系统及相关组件,能够提高海量小文件数据集的IO性能,改善高并发元数据密集型文件系统业务中元数据造成的性能瓶颈。
[0006]为解决上述技术问题,本申请提供了分层缓存方法,应用于分布式存储系统的每一计算节点,所述分层缓存方法包括:利用客户端进程监测客户端向所述分布式存储系统发出的文件IO操作请求,当监测到所述文件IO操作请求,将所述文件IO操作请求重定向到服务端进程;利用所述服务端进程判断所述文件IO操作请求对应的目标存储位置是否为聚合缓存层;若否,从所述分布式存储系统底层读取所述文件IO操作请求对应的数据,并将所述数据缓存到所述聚合缓存层;若是,从所述聚合缓存层中读取所述数据,并将所述数据返回到所述客户端进程,以便所述客户端进程将所述数据返回至所述客户端。
[0007]可选的,利用所述服务端进程判断所述文件IO操作请求对应的目标存储位置是否为聚合缓存层的过程包括:
利用所述服务端进程将接收到的所述文件IO操作请求插入到共享队列中;在所述共享队列中,确定所述文件IO操作请求对应的数据是否为已缓存数据;若是,则判定所述文件IO操作请求对应的目标存储位置为聚合缓存层。
[0008]可选的,在所述共享队列中,确定所述文件IO操作请求对应的数据是否为已缓存数据的过程包括:在所述共享队列中,通过数据线程确定所述文件IO操作请求对应的数据是否为已缓存数据;所述数据线程为构建服务端进程实例时生成的线程。
[0009]可选的,所述分层缓存方法还包括:当监测到所述客户端向所述分布式存储系统发出的文件IO操作请求,启动所述服务端进程,利用本计算节点的状态和与本计算节点相邻的其他计算节点的状态动态构建所述服务端进程实例。
[0010]可选的,从所述聚合缓存层中读取所述数据的过程包括:通过数据线程将所述文件IO操作请求重定向至所述聚合缓存层,以便从所述聚合缓存层读取所述数据。
[0011]可选的,利用所述服务端进程将接收到的所述文件IO操作请求插入到共享队列中的同时,该分层缓存方法还包括:将所述共享队列配置互斥锁。
[0012]可选的,所述共享队列为FIFO队列。
[0013]可选的,所述文件IO操作请求对应的数据包括文件描述符、读取偏移量和长度。
[0014]可选的,所述分层缓存方法还包括:基于文件路径和所属计算节点确定所述数据在所述聚合缓存层中的存储位置。
[0015]可选的,所述分层缓存方法还包括:将所述文件IO操作请求广播给与本计算节点相邻的计算节点。
[0016]可选的,所述分层缓存方法还包括:判断所述文件IO操作请求对应的数据集是否大于本地存储介质的总容量;若是,执行缓存逐出操作和替换操作。
[0017]可选的,所述分层缓存方法还包括:基于环境变量构建动态链接库;所述动态链接库用于拦截所述文件IO操作请求。
[0018]可选的,将所述文件IO操作请求重定向到服务端进程的过程包括:通过哈希算法将所述文件IO操作请求重定向到服务端进程。
[0019]可选的,所述聚合缓存层为由所述分布式存储系统中各个所述计算节点中的高速存储介质构成的缓存层。
[0020]可选的,所述高速存储介质为Nvme SSD。
[0021]可选的,所述分层缓存方法还包括:当满足清除条件,清除本计算节点上中高速存储介质中存储的数据。
[0022]为解决上述技术问题,本申请还提供了一种分层缓存系统,应用于分布式存储系统的每一计算节点,所述分层缓存系统包括:监测模块,用于利用客户端进程监测客户端向所述分布式存储系统发出的文件IO操作请求,当监测到所述文件IO操作请求,将所述文件IO操作请求重定向到服务端进程;
处理模块,用于利用所述服务端进程判断所述文件IO操作请求对应的目标存储位置是否为聚合缓存层,若否,触发第一读取模块,若是,触发第二读取模块;第一读取模块,用于从所述分布式存储系统底层读取所述文件IO操作请求对应的数据,并将所述数据缓存到所述聚合缓存层;第二读取模块,用于从所述聚合缓存层中读取所述数据,并将所述数据返回到所述客户端进程,以便所述客户端进程将所述数据返回至所述客户端。
[0023]为解决上述技术问题,本申请还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上文任意一项所述的分层缓存方法的步骤。
[0024]为解决上述技术问题,本申请还提供了一种分布式存储系统,包括存储底层模块和多个节点,每个所述节点均包括分层客户端进程、分层服务端进程及存储介质,各个所述节点的存储介质构成聚合缓存层,其中:所述分层客户端进程,用于监测客户端发出的文件IO操作请求,当监测到所述文件IO操作请求,将所述文件IO操作请求重定向到所述分层服务端进程;所述分层服务端进程,用于判断所述文件IO操作请求对应的目标存储位置是否为所述聚合缓存层,若否,从所述存储底层模块读取所述文件IO操作请求对应的数据,并将所述数据发送到所述聚合缓存层,若是,从所述聚合缓存层中读取所述数据,并将所述数据返回到所述分层客户端进程,以便所述分层客户端进程将所述数据返回至所述客户端;所述聚合缓存层,用于存储所述分层服务端进程发送的数据。
[0025]为解决上述技术问题,本申请还提供了一种计算机本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分层缓存方法,其特征在于,应用于分布式存储系统的每一计算节点,所述分层缓存方法包括:利用客户端进程监测客户端向所述分布式存储系统发出的文件IO操作请求,当监测到所述文件IO操作请求,将所述文件IO操作请求重定向到服务端进程;利用所述服务端进程判断所述文件IO操作请求对应的目标存储位置是否为聚合缓存层;若否,从所述分布式存储系统底层读取所述文件IO操作请求对应的数据,并将所述数据缓存到所述聚合缓存层;若是,从所述聚合缓存层中读取所述数据,并将所述数据返回到所述客户端进程,以便所述客户端进程将所述数据返回至所述客户端。2.根据权利要求1所述的分层缓存方法,其特征在于,利用所述服务端进程判断所述文件IO操作请求对应的目标存储位置是否为聚合缓存层的过程包括:利用所述服务端进程将接收到的所述文件IO操作请求插入到共享队列中;在所述共享队列中,确定所述文件IO操作请求对应的数据是否为已缓存数据;若是,则判定所述文件IO操作请求对应的目标存储位置为聚合缓存层。3.根据权利要求2所述的分层缓存方法,其特征在于,在所述共享队列中,确定所述文件IO操作请求对应的数据是否为已缓存数据的过程包括:在所述共享队列中,通过数据线程确定所述文件IO操作请求对应的数据是否为已缓存数据;所述数据线程为构建服务端进程实例时生成的线程。4.根据权利要求3所述的分层缓存方法,其特征在于,所述分层缓存方法还包括:当监测到所述客户端向所述分布式存储系统发出的文件IO操作请求,启动所述服务端进程,利用本计算节点的状态和与本计算节点相邻的其他计算节点的状态动态构建所述服务端进程实例。5.根据权利要求3所述的分层缓存方法,其特征在于,从所述聚合缓存层中读取所述数据的过程包括:通过数据线程将所述文件IO操作请求重定向至所述聚合缓存层,以便从所述聚合缓存层读取所述数据。6.根据权利要求2所述的分层缓存方法,其特征在于,利用所述服务端进程将接收到的所述文件IO操作请求插入到共享队列中的同时,该分层缓存方法还包括:将所述共享队列配置互斥锁。7.根据权利要求2所述的分层缓存方法,其特征在于,所述共享队列为FIFO队列。8.根据权利要求1所述的分层缓存方法,其特征在于,所述文件IO操作请求对应的数据包括文件描述符、读取偏移量和长度。9.根据权利要求1所述的分层缓存方法,其特征在于,所述分层缓存方法还包括:基于文件路径和所属计算节点确定所述数据在所述聚合缓存层中的存储位置。10.根据权利要求1所述的分层缓存方法,其特征在于,所述分层缓存方法还包括:将所述文件IO操作请求广播给与本计算节点相邻的计算节点。11.根据权利要求1所述的分层缓存方法,其特征在于,所述分层缓存方法还包括:判断所述文件IO操作请求对应的数据集是否大于本地存储介质的总容量;
若是,执行缓存逐出操作和替换操作。12.根据权利...

【专利技术属性】
技术研发人员:臧林劼何怡川
申请(专利权)人:浪潮电子信息产业股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1