一种文件创建方法及装置与流程

文档序号:13004932阅读:137来源:国知局
一种文件创建方法及装置与流程

本发明涉及分布式文件存储技术领域,更具体的,涉及一种文件创建方法及装置。



背景技术:

目前海量数据的存储方案一般都会采用分布式架构,分布式架构存储容量大,同时在扩展性和安全性方面也有一定保障。

数据存储首先需要创建文件,在某些特定应用下,需要提前创建海量空文件。空文件中没有真正的数据,只有相应的元数据。空文件创建完成后,应用程序会对这部分空文件进行数据写入。在分布式架构中由mds(metadateservice,元数据服务)管理文件的元数据。

在现有技术中,创建文件完全由mds负责,当创建空文件时,mds需要加载全部已创建文件的元数据,并根据全部已创建文件的元数据判断待创建文件的名称是否已经存在,当待创建文件的名称未存在时,创建该待创建文件。创建文件的效率与mds的性能密切相关,当分布式文件系统中已创建了海量文件时,加载所有已创建文件会占用大量mds缓存,降低文件的创建速度。



技术实现要素:

有鉴于此,本发明提供了一种文件创建方法及装置,不必在每次创建文件时都将所有的文件元数据加载到mds缓存,减少资源消耗,提高mds创建文件的速度。

为了实现上述发明目的,本发明的具体技术方案如下:

一种文件创建方法,包括:

确定待创建文件的名称;

基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

根据与所述待创建文件相对应的哈希值,判断所述待创建文件的名称是否在位集合中已存在;

若存在,提示所述待创建文件的名称已存在;

若不存在,创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。

优选的,所述预设哈希算法为预设哈希算法集合中的多种哈希算法,与所述待创建文件相对应的哈希值为分别基于所述预设哈希算法集合中的每种哈希算法对所述待创建文件的名称进行计算后得到的多个不同的哈希值。

优选的,所述根据与所述待创建文件相对应的哈希值,判断所述待创建文件的名称是否在位集合中已存在,包括:

判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在;

其中,当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,确定所述待创建文件的名称不存在;

当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,确定所述待创建文件的名称已存在。

优选的,当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,所述方法还包括:

将所有已创建文件的元数据加载到mds缓存中;

根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在;

若是,提示所述待创建文件的名称已存在;

若否,创建所述待创建文件,并将每个与所述待创建文件相对应的哈希值保存到所述位集合中。

优选的,所述根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在,包括:

获取每个已创建文件的名称;

依次对每个已创建文件的名称与所述待创建文件的名称进行匹配;

若匹配成功,判定所述待创建文件的名称已存在;

若匹配不成功,判定所述待创建文件的名称不存在。

优选的,所述将每个与所述待创建文件相对应的哈希值保存到位集合中,具体为:

将所述位集合中与每个所述哈希值相对应的位的值设置为1。

一种文件创建装置,包括:

确定单元,用于确定待创建文件的名称;

计算单元,用于基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

第一判断单元,用于根据与所述待创建文件相对应的哈希值,判断所述待创建文件的名称是否在位集合中已存在,若存在,触发提示单元,若不存在,触发创建单元;

所述提示单元,用于提示所述待创建文件的名称已存在;

创建单元,用于创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。

优选的,所述预设哈希算法为预设哈希算法集合中的多种哈希算法,与所述待创建文件相对应的哈希值为分别基于所述预设哈希算法集合中的每种哈希算法对所述待创建文件的名称进行计算后得到的多个不同的哈希值。

优选的,所述第一判断单元具体用于:

判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在;

其中,当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,确定所述待创建文件的名称不存在;

当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,确定所述待创建文件的名称已存在。

优选的,当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,所述文件创建装置还包括:

加载单元,用于将所有已创建文件的元数据加载到mds缓存中;

第二判断单元,用于根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在;若是,触发所述提示单元,若否,触发所述创建单元。

优选的,所述第二判断单元包括:

获取子单元,用于获取每个已创建文件的名称;

匹配子单元,用于依次对每个已创建文件的名称与所述待创建文件的名称进行匹配,若匹配成功,触发第一判定子单元;若匹配不成功,触发第二判定子单元;

所述第一判定子单元,用于判定所述待创建文件的名称已存在;

所述第二判定子单元,用于判定所述待创建文件的名称不存在。

优选的,所述创建单元具体用于将所述位集合中与每个所述哈希值相对应的位的值设置为1。

相对于现有技术,本发明的有益效果如下:

本发明提供的文件创建方法,基于预设哈希算法对文件的名称进行计算,得到与文件相对应的哈希值,将得到的哈希值保存到位集合中。当需要创建文件时,根据与所述待创建文件相对应的哈希值判断所述待创建文件的名称是否已存在,若存在,提示所述待创建文件的名称已存在;若不存在,创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。判断待创建文件的名称是否存在时不需要将所有的文件元数据信息加载到mds缓存,从而减少了资源消耗,提高了mds创建文件的速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种文件创建方法流程图;

图2为本发明实施例公开的文件创建示意图;

图3为本发明实施例公开的另一种文件创建方法流程图;

图4为本发明实施例公开的又一种文件创建方法流程图;

图5为本发明实施例公开的再一种文件创建方法流程图;

图6为本发明实施例公开的一种文件创建装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,本实施例公开了一种文件创建方法,具体包括以下步骤:

s101:确定待创建文件的名称;

s102:基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

需要说明的是,所述预设哈希算法可以为一种哈希算法,还可以为一种以上哈希算法,每种哈希算法对应一个待创建文件名称的哈希值。

s103:根据与所述待创建文件相对应的哈希值,判断所述待创建文件的名称是否在位集合中已存在;若存在,执行s104,若不存在,执行s105;

位集合(bitset)是由一系列的0/1位(bit)组成的一个大的集合或者数组。已创建文件的名称以哈希值的形式记录在位集合中,如图2所示,例如已创建文件file经过3种哈希算法的计算,得到哈希值4、7和11,则记录到位集合中后,bit4、bit7和bit11为1。

s104:提示所述待创建文件的名称已存在;

提示所述待创建文件的名称已存在的方式可以为消息提示、语音提示、振动提示和灯光闪烁提示等任意一种提示方式。

可以理解的是,当提示所述待创建文件的名称已存在时,放弃创建所述待创建文件。

s105:创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。

将与所述待创建文件相对应的哈希值保存到所述位集合中具体为:将所述位集合中与所述哈希值相对应的位的值设置为1。

本实施例提供的文件创建方法,基于预设哈希算法对文件的名称进行计算,得到与文件相对应的哈希值,将得到的哈希值保存到位集合中。当需要创建文件时,根据与所述待创建文件相对应的哈希值判断所述待创建文件的名称是否已存在,若存在,提示所述待创建文件的名称已存在;若不存在,创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。判断待创建文件的名称是否存在时不需要将所有的文件元数据信息加载到mds缓存,从而减少了资源消耗,提高了mds创建文件的速度。

为了使基于预设哈希算法对所述待创建文件的名称计算出的哈希值更能准确标识待创建文件的名称,本实施例提供的方案中,所述预设哈希算法为预设哈希算法集合中的多种哈希算法,与所述待创建文件相对应的哈希值为分别基于所述预设哈希算法集合中的每种哈希算法对所述待创建文件的名称进行计算后得到的多个不同的哈希值。

典型的哈希算法包括md2、md4、md5和sha-1等。需要说明的是,所述预设哈希算法集合可以包括现有的任意一种或多种哈希算法,可以根据实际需要预先设置哈希算法集合中哈希算法的数量和具体哈希算法,每种哈希算法对应一个待创建文件名称的哈希值。位集合中保存的哈希值可以为经过任意一种哈希算法对已创建文件的名称计算得到的哈希值。

在此基础上,请参阅图3,本实施例中公开的一种文件创建方法包括:

s201:确定待创建文件的名称;

s202:基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

s203:判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在;

s204:当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,确定所述待创建文件的名称不存在;

假设待创建文件file1(文件名称是file1)经过三个哈希算法,分别得到4、7、12这三个哈希值,我们去位集合中查询,发现bit4和bit7的值是1,但是bit12是0,那我们认为file1在系统不存在。可以理解的是,待创建文件对应的多个哈希值中只要有任何一个哈希值对应的bit的值为0,就认为该待创建文件不存在。

s205:创建所述待创建文件,并将每个与所述待创建文件相对应的哈希值保存到所述位集合中。

所述将每个与所述待创建文件相对应的哈希值保存到位集合中,具体为:

将所述位集合中与每个所述哈希值相对应的位的值设置为1。

文件file(文件的名称就是file),经过三个hash算法会得到三个值,分别是4、7、11,然后我们到bitset中,把bit4、bit7、bit11这三个bit的值从0改成1,以上的描述就是保存一个文件名称的过程。

s206:当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,确定所述待创建文件的名称已存在;

s207:提示所述待创建文件的名称已存在。

本实施例提供的文件创建方法,基于预设哈希算法集合中多个不同的哈希算法对待创建文件的名称进行计算,得到多个不同的、且分别与所述待创建文件相对应的哈希值,并判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在。避免了在海量文件存储的情况下同一哈希算法对不同文件名称计算得到的相同哈希值时,对待创建文件名称是否存在出现判断失误的情况。

下面在图3所示实施例的基础上,进一步描述当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时的处理流程,具体请参阅图4,本实施例中公开的一种文件创建方法包括:

s301:确定待创建文件的名称;

s302:基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

s303:判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在;

s304:当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,确定所述待创建文件的名称不存在;

s305:创建所述待创建文件,并将每个与所述待创建文件相对应的哈希值保存到所述位集合中。

s306:当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,将所有已创建文件的元数据加载到mds缓存中;

由于两个不同的待创建文件的名称经过哈希计算得到的哈希值可能相同,因此,当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,所述待创建文件的名称不存在,而当在所述位集合中存在所有与所述待创建文件相对应的哈希值时并不能完全确定待创建文件的名称已存在。这个时候需要将所有已创建文件的元数据加载到mds缓存中,并根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在。

s307:根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在;若是,执行s308,若否,执行s305;

s308:提示所述待创建文件的名称已存在。

基于预设多个不同的哈希算法对所述待创建文件的名称进行计算,得到多个不同的、且分别与所述待创建文件相对应的哈希值;

优选的,请参阅图5,所述根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在,包括:

s401:获取每个已创建文件的名称;

s402:依次对每个已创建文件的名称与所述待创建文件的名称进行匹配;

s403:若匹配成功,判定所述待创建文件的名称已存在;

s404:若匹配不成功,判定所述待创建文件的名称不存在。

本实施例提供的文件创建方法,当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,将所有已创建文件的元数据加载到mds缓存中,以进一步根据所有已创建文件的元数据准确判断所述待创建文件的名称是否已存在,避免只依据每个与所述待创建文件相对应的哈希值判断所述待创建文件的名称是否已存在造成的错误判断。

基于上述实施例公开的一种文件创建方法,请参阅图6,本实施例公开了一种文件创建装置,具体包括:

确定单元101,用于确定待创建文件的名称;

计算单元102,用于基于预设哈希算法对所述待创建文件的名称进行计算,得到与所述待创建文件相对应的哈希值;

第一判断单元103,用于根据与所述待创建文件相对应的哈希值,判断所述待创建文件的名称是否在位集合中已存在,若存在,触发提示单元104,若不存在,触发创建单元105;

所述提示单元104,用于提示所述待创建文件的名称已存在;

所述创建单元105,用于创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。

本实施例提供的文件创建装置,基于预设哈希算法对文件的名称进行计算,得到与文件相对应的哈希值,将得到的哈希值保存到位集合中。当需要创建文件时,根据与所述待创建文件相对应的哈希值判断所述待创建文件的名称是否已存在,若存在,提示所述待创建文件的名称已存在;若不存在,创建所述待创建文件,并将与所述待创建文件相对应的哈希值保存到所述位集合中。判断待创建文件的名称是否存在时不需要将所有的文件元数据信息加载到mds缓存,从而减少了资源消耗,提高了mds创建文件的速度。

优选的,所述预设哈希算法为预设哈希算法集合中的多种哈希算法,与所述待创建文件相对应的哈希值为分别基于所述预设哈希算法集合中的每种哈希算法对所述待创建文件的名称进行计算后得到的多个不同的哈希值。

在此基础上,所述第一判断单元103具体用于:

判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在;

其中,当有一个或一个以上与所述待创建文件相对应的哈希值在所述位集合中不存在时,确定所述待创建文件的名称不存在;

当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,确定所述待创建文件的名称已存在。

当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,所述文件创建装置还包括:

加载单元,用于将所有已创建文件的元数据加载到mds缓存中;

第二判断单元,用于根据所有已创建文件的元数据判断所述待创建文件的名称是否已存在;若是,触发所述提示单元,若否,触发所述创建单元;

所述创建单元具体用于将所述位集合中与每个所述哈希值相对应的位的值设置为1。

优选的,所述第二判断单元包括:

获取子单元,用于获取每个已创建文件的名称;

匹配子单元,用于依次对每个已创建文件的名称与所述待创建文件的名称进行匹配,若匹配成功,触发第一判定子单元;若匹配不成功,触发第二判定子单元。

所述第一判定子单元,用于判定所述待创建文件的名称已存在;

所述第二判定子单元,用于判定所述待创建文件的名称不存在。

本实施例提供的文件创建装置,基于预设哈希算法集合中多个不同的哈希算法对待创建文件的名称进行计算,得到多个不同的、且分别与所述待创建文件相对应的哈希值,并判断所有与所述待创建文件相对应的哈希值是否在所述位集合中已存在。避免了在海量文件存储的情况下同一哈希算法对不同文件名称计算得到的相同哈希值时,对待创建文件名称是否存在出现判断失误的情况。同时,当所有与所述待创建文件相对应的哈希值在所述位集合中已存在时,将所有已创建文件的元数据加载到mds缓存中,以进一步根据所有已创建文件的元数据准确判断所述待创建文件的名称是否已存在,避免只依据每个与所述待创建文件相对应的哈希值判断所述待创建文件的名称是否已存在造成的错误判断。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1