目录树操作方法、文件系统、电子设备及存储介质技术方案

技术编号:38329426 阅读:13 留言:0更新日期:2023-07-29 09:12
本申请实施例提供一种目录树操作方法、文件系统、电子设备及存储介质,在本申请实施例中,通过在目录树的节点属性中增设锁标识,基于锁标识的有效性便可控制节点持有并引用锁对象,以及对引用的锁对象进行加锁操作。在节点属性中增设锁标识占用的内存资源较少,同时,有效地控制了需要创建的锁对象的数量,较好地均衡解决了“增加锁对象的数量太多会增加较多的内存使用量”和“锁对象太少会导致锁冲突的概率增加”的问题,极大地改善了目录树的加锁性能。特别地,为文件系统提升元数据操作性能和整体性能提供了可靠的基础。性能和整体性能提供了可靠的基础。性能和整体性能提供了可靠的基础。

【技术实现步骤摘要】
目录树操作方法、文件系统、电子设备及存储介质


[0001]本申请涉及计算机
,尤其涉及一种目录树操作方法、文件系统、电子设备及存储介质。

技术介绍

[0002]文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备或分区上组织文件的方法。文件系统利用目录树对整个文件系统中的文件进行组织管理,任何一个文件的操作都伴随着至少一次的元数据操作,元数据操作需要访问目录树。为了保证多线程并发操作下目录树的完整性和一致性,需要对元数据操作涉及到的目录树上的节点进行加锁操作。目录树加锁操作的性能瓶颈会制约元数据操作性能,直接影响文件系统的整体性能。

技术实现思路

[0003]本申请的多个方面提供一种目录树操作方法、文件系统、电子设备及存储介质,用以提高目录树操作性能,为文件系统提升元数据操作性能和整体性能提供了可靠的基础。
[0004]本申请实施例提供一种目录树操作方法,包括:响应于对目录树中的目标节点的加锁请求,判断目标节点的节点属性中第一锁标识的有效性;
[0005]若第一锁标识无效,则创建第二锁标识对应的锁对象;在目标节点的节点属性中的第一锁标识成功更新为第二锁标识的情况下,控制目标节点持有并引用第二锁标识对应的锁对象;若第一锁标识有效,则在第一锁标识对应的锁对象的持有者标识是目标节点的节点标识的情况下,控制目标节点引用第一锁标识对应的锁对象;对目标节点引用的目标锁对象执行加锁操作,目标锁对象为第一锁标识或第二锁标识对应的锁对象。
[0006]本申请实施例还提供一种电子设备,包括:存储器和处理器;存储器,用于存储计算机程序;处理器耦合至存储器,用于执行计算机程序以用于执行目录树操作方法中的步骤。
[0007]在本申请实施例中,通过在目录树的节点属性中增设锁标识,基于锁标识的有效性便可控制节点持有并引用锁对象,以及对引用的锁对象进行加锁操作。在节点属性中增设锁标识占用的内存资源较少,同时,有效地控制了需要创建的锁对象的数量,较好地均衡解决了“增加锁对象的数量太多会增加较多的内存使用量”和“锁对象太少会导致锁冲突的概率增加”的问题,极大地改善了目录树的加锁性能。特别地,为文件系统提升元数据操作性能和整体性能提供了可靠的基础。
附图说明
[0008]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0009]图1为示例性的分布式文件系统的系统架构图;
[0010]图2为本申请实施例提供的一种目录树操作方法的流程图;
[0011]图3为本申请实施例提供的另一种目录树操作方法的流程图;
[0012]图4为本申请实施例提供的另一种目录树操作方法的流程图;
[0013]图5为本申请实施例提供的一种目录树操作装置的结构示意图;
[0014]图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0015]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0016]在本申请的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的访问关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本申请的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。此外,在本申请实施例中,“第一”、“第二”、“第三”、等只是为了区分不同对象的内容而已,并无其它特殊含义。
[0017]下面介绍几种常见的文件系统的目录树的加锁方案。
[0018]1、全局锁方案
[0019]在锁机制实现上,有的分布式文件系统(Distributed File System,DFS)使用全局锁来统一控制并发读写。在目录树操作中,获取目录树上任一节点的信息必须先拿到全局读锁;目录树上任一节点新增、删除、修改都必须先拿到全局写锁。全局锁方案简化了锁模型,不需要额外考虑锁依赖关系,降低了复杂度,减少工程量。但是,使用全局锁来统一控制并发读写,在任何时候一个写请求会阻塞其他读请求或者写请求操作目录树,造成整个集群的目录树操作串行执行,目录树加锁操作的性能较差,严重制约元数据操作性能的提升,影响文件系统的整体性能。
[0020]2、层锁方案
[0021]由于全局锁方案严重制约元数据操作性能的提升,有些文件系统使用层锁方案。针对目录树的每一层,文件系统在每层维护一组锁对象(包括多个锁对象),每个锁对象对应一个锁地址。具体而言,在路径解析的过程中,对于目录树中当前层的目录或者文件,计算hash(哈希)值,通过hash值确定该目录或者文件在当前层的锁地址;根据应用需求对当前层的锁地址对应的锁对象加读锁或加写锁。
[0022]采用层锁方案,因为同样的目录或者文件名的hash值相同,所以达到了互斥的作用,而只在真正需要加写锁的地方对锁对象有冲突的操作执行互斥操作,加读锁可以并发得到锁对象,有效地提升了文件系统的并发能力。
[0023]然而,因为存在hash冲突的情况,不同目录的访问有概率映射到相同的锁对象,也即发生锁冲突,为了降低锁冲突,增加锁对象的数量又会增加内存使用量。另外,层锁方案每层需要预先创建固定大小的锁数量,锁对象太多会浪费内存空间,锁对象太少会导致锁冲突的概率增加。用户在目录树上创建的文件层数不固定,而且越往深层目录空间越大,导致锁冲突的概率指数级增加,虽然克服了全局锁的问题,但是在大并发压力下,锁冲突还是
非常明显,难以满足应用需求。
[0024]3、锁表(也称作为锁池)方案
[0025]全局锁只能串行执行,层锁有hash冲突问题,较优的方案是为目录树中的每个节点生成一个锁对象。但是,对于分布式文件系统,目录树规模大,为每个节点生成一个锁对象是不现实的,会极大地增加内存使用量。为此,为了取得均衡,通常使用外挂锁表(锁池)的方案。
[0026]在该方案中,可以通过高效的hash表管理一个目录树中节点到锁对象的映射关系,而且只在节点需要锁保护的时候创建,从而降低了内存使用量,也能解决层锁的hash冲突问题。但是使用这种方案,在多线程并发场景下,把目录树的冲突转换成了hash表的并发插入删除的冲突,很容易把hash表的操作变成热点影响性能,从而还是不能让文件系统满负荷服务。
[0027]为此,本申请实施例提供一种目录树操作方法、文件系统、电子设备及存储介质,在本申请实施例中,通过在目录树的节点属性中增设锁标识,基于锁标识的有效性便可控制节点持有并引用锁对象,以及对引用的锁对象进行加锁本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种目录树操作方法,包括:响应于对目录树中的目标节点的加锁请求,判断所述目标节点的节点属性中第一锁标识的有效性;若所述第一锁标识无效,则创建第二锁标识对应的锁对象;在所述目标节点的节点属性中的所述第一锁标识成功更新为所述第二锁标识的情况下,控制所述目标节点持有并引用所述第二锁标识对应的锁对象;若所述第一锁标识有效,则在所述第一锁标识对应的锁对象的持有者标识是所述目标节点的节点标识的情况下,控制所述目标节点引用所述第一锁标识对应的锁对象;对所述目标节点引用的目标锁对象执行加锁操作,所述目标锁对象为所述第一锁标识或所述第二锁标识对应的锁对象。2.根据权利要求1所述的方法,在所述目标节点的节点属性中的所述第一锁标识成功更新为所述第二锁标识的情况下,控制所述目标节点持有并引用所述第二锁标识对应的锁对象,包括:在所述目标节点的节点属性中的所述第一锁标识成功更新为所述第二锁标识的情况下,则将所述第二锁标识对应的锁对象的持有者标识设置为所述目标节点的节点标识,以及将所述第二锁标识对应的锁对象的引用计数值设置为1,以使所述目标节点持有并引用所述第二锁标识对应的锁对象,其中,所述第二锁标识对应的锁对象的引用计数值记录所述第二锁标识对应的锁对象的引用次数。3.根据权利要求1所述的方法,在所述第一锁标识对应的锁对象的持有者标识是所述目标节点的节点标识的情况下,控制所述目标节点引用所述第一锁标识对应的锁对象,包括:在所述第一锁标识对应的锁对象的持有者标识是所述目标节点的节点标识的情况下,则将所述第一锁标识对应的锁对象的引用计数值加1,所述第一锁标识对应的锁对象的引用计数值记录所述第一锁标识对应的锁对象的引用次数;若所述第一锁标识对应的锁对象的引用计数值加1成功,则确定所述目标节点引用所述第一锁标识对应的锁对象。4.根据权利要求3所述的方法,还包括:若所述第一锁标识对应的锁对象的引用计数值加1失败,则返回执行判断所述目标节点的节点属性中第一锁标识的有效性的步骤。5.根据权利要求1至4任一项所述的方法,还包括:若所述第一锁标识无效,在所述目标节点的节点属性中的所述第一锁标识未成功更新为所述第二锁标识的情况下,则删除所述第二锁标识对应的锁对象,以及返回执行判断所述目标节点的节点属性中第一锁标识的有效性的步骤;或,若所述第一锁标识有效,则在所述第一锁标识对应的锁对象的持有者标识不是所述目标节点的节点标识的情况下,返回执行判断所述目标节点的节点属性中第一锁标识的有效性的步骤。6.根据权利要求1所述的方法,在判断所述目标节点的节点属性中第一锁标识的有效性之前,还包括:判断所述目标节点是否为所述目录树中新创...

【专利技术属性】
技术研发人员:赵树起
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1