基于读写锁环检测机制的分布式文件系统重命名操作方法

文档序号:37933338发布日期:2024-05-11 00:12阅读:12来源:国知局
基于读写锁环检测机制的分布式文件系统重命名操作方法

本发明涉及计算机软件,尤其涉及一种基于读写锁环检测机制的分布式文件系统重命名操作方法。


背景技术:

1、随着互联网的高速发展,业界产生了像大数据和训练大模型这样数据量庞大的业务需求,涉及到的业务数据量快速上升,在单机上提升存储容量已经远远不能满足当今业务数据量的飞速发展。于是业界将目标从提升单机的存储容量转变为提升机器数量来提升存储容量,使用多台机器来存储业务所需的数据量,这就是分布式存储,比如分布式文件系统、分布式数据库等等。在单机存储系统中,所有的功能操作并不复杂,因为所有的读写操作都在单机上进行,并不会涉及到其他节点的读写一致性问题,在分布式的运行环境下,由于容错机制,需要将多个副本存储在多台机器上,这样就会导致多个副本在生产环境当中数据的一致性问题;同时随着用户数量的增加,存储系统不仅需要在存储容量上扩容,还需要满足多客户端的并行读写请求,以达到高吞吐量和低延迟的性能要求。

2、在分布式文件系统中,上层对开发者提供了对文件读写的接口,将对底层多副本以及事务一致性的处理封装在底层,这样能够方便开发者的维护成本。而在文件系统为上层提供的读写接口之中,重命名操作(rename操作)是较为复杂的,它包含对文件或目录的路径解析、对修改数据的加锁以及对数据的更改,所以需要将重命名操作在底层封装为事务进行,以保证重命名操作的原子性;同时在多个客户端并发读写的需求下,又需要尽量保证重命名操作的并发度。所以在实现重命名操作的一个挑战是,在设计重命名操作的加锁方案时,既要满足重命名操作在操作时的原子性,又要尽可能满足多线程的并发度以满足高吞吐量和低延迟的性能要求。

3、另一个要求是,重命名操作在并发过程中给不仅需要满足事务的原子性,同样也要防止出现孤儿环问题,简单描述该问题,就是指两个及多个客户端同时对文件目录的目录树进行操作时,有可能发生目录之间成环的结果,即从一个目录开始,不断向上查找父目录,最终发现查找到了该目录自己。倘若发生这种情况,分布式文件系统的解析路径操作无法查找到该目录以及该目录下子目录的所有数据,就会造成数据丢失,严重影响到用户的数据安全。

4、在之前业界的论文中,普遍认为重命名操作在整个分布式文件系统中的操作占比较小,所以在考虑分布式文件系统的性能时,常常忽略重命名操作的性能需求,但在业界最新的大数据工作负载中,分布式文件系统中会产生重命名操作爆发问题,在一段时间内可能会出现重命名操作请求峰值较高,持续时间长等现象。

5、在目前业界使用的重命名操作加锁机制中,主要有四种处理方法:

6、(1)最早的分布式文件系统的传统做法是在分布式文件系统中对所有的重命名操作加一个全局共用的锁,比如,linux内核,hdfs、lustre等分布式文件系统,在这样的情况下,分布式文件系统中的重命名操作是完全无法并发的。

7、(2)对重命名操作的源目录以及该目录下子树的所有目录和文件都加锁,在这种方式可以有效地防止孤儿环的形成,没有父子目录关系的重命名操作是可以并发的,但是由于这种加锁方法对所有的子目录全部加锁,所以加锁的开销随子树的大小的上升而上升,以hopsfs数据为例,这种加锁方式需要亚秒级别的开销,locofs同样使用这种加锁方式来保障重命名操作在并发读写过程中的数据安全。

8、(3)当前业界完成重命名操作环检测也可以加入一个中心节点来专门完成环检测的任务。所有的重命名操作请求必须经过同一个中心节点来检测重命名操作之间的并发可行性,但是由于中心节点的吞吐量有限,以及加锁会导致重命名操作的并发度仍然很低,如百度的分布式文件系统cfs的中心节点会获得源节点与目的节点的最小公共祖先节点,然后将最小公共祖先节点-源节点、最小公共祖先节点-目的节点两条路径上皆加锁,这样粗粒度的加锁方式会使得最小公共祖先节点及其子孙结点下的大部分重命名操作无法在加锁时并发。cephfs使用元数据服务器mds来检测成环,同样会加大性能开销。有些分布式文件系统可能会引入广播,进一步加大性能开销,比如infinifs。

9、(4)有一些分布式文件系统完全放弃了重命名操作的中心检查,比如juicefs,虽然并发度大大上升,但在危险的重命名并发操作出现时,很有可能发生数据的丢失。

10、有鉴于此,特提出本发明。


技术实现思路

1、本发明的目的是提供一种基于读写锁环检测机制的分布式文件系统重命名操作方法,在保证数据安全与数据正确性的情况下,用轻量级的加锁方法,提高重命名操作的并发度,提升集群整体吞吐量。

2、本发明的目的是通过以下技术方案实现的:

3、一种基于读写锁环检测机制的分布式文件系统重命名操作方法,包括:

4、分布式文件系统将接收到所有重命名操作请求发送至中心节点;

5、中心节点在接收到重命名操作请求之后,以读写锁的方式来进行环检测,中心节点利用自身存储的访问元数据,通过路径解析确定重命名操作源节点和目的节点的最小公共祖先节点,并在最小公共祖先节点上创建写锁;然后,从最小公共祖先节点到目的节点的一系列节点之中,按照从上到下的顺序为除去最小公共祖先节点之外的其他节点依次创建读锁;再为源节点创建写锁,并释放最小公共祖先节点的写锁;

6、向下层的元数据存储引擎的存储目录项的节点发送重命名事务请求,执行重命名事务过程,执行完重命名事务之后,释放之前加锁过程中添加的所有读写锁。

7、由上述本发明提供的技术方案可以看出,使用轻量级的分布式文件系统重命名操作环检测机制,能够有效避免孤儿环数据丢失的发生,并且,通过更细粒度的加锁方案机制,有效提升了重命名操作的并发度与吞吐量。



技术特征:

1.一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,包括:

2.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述中心节点利用自身存储的访问元数据,通过路径解析确定重命名操作源节点和目的节点的最小公共祖先节点包括:

3.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述在最小公共祖先节点上创建写锁包括:

4.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述从最小公共祖先节点到目的节点的一系列节点之中,按照从上到下的顺序为除去最小公共祖先节点之外的其他节点依次创建读锁包括:

5.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述为源节点创建写锁包括:中心节点从内存中递归解析源节点的路径,再查找到源节点的路径的最后一个节点,即源节点时,在内存中的哈希表中对该源节点创建写锁;其中,源节点的路径为从最小公共祖先节点到源节点的路径。

6.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述执行重命名事务过程包括:元数据解耦为访问元数据和内容元数据,中心节点保存访问元数据,而在存储目录项的节点中持久化存储访问元数据和内容元数据;执行重命名事务,需要原子化的修改源节点与目的节点的访问元数据和各自父目录的内容元数据,将重命名操作以事务接口执行。

7.根据权利要求1所述的一种基于读写锁环检测机制的分布式文件系统重命名操作方法,其特征在于,所述执行完重命名事务之后,释放之前加锁过程中添加的所有读写锁包括:


技术总结
本发明公开了一种基于读写锁环检测机制的分布式文件系统重命名操作方法,由中心节点统一处理所有的重命名操作的环检测任务,中心节点在接收到重命名操作请求之后,会以读写锁的方式来进行环检测;本发明使用轻量级的分布式文件系统重命名操作环检测机制,能够有效避免孤儿环数据丢失的发生,并且,通过更细粒度的加锁方案机制,有效提升了重命名操作的并发度与吞吐量。

技术研发人员:韩森,李诚,李嘉豪,王一多
受保护的技术使用者:中国科学技术大学
技术研发日:
技术公布日:2024/5/10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1