一种文件处理方法、系统及相关设备与流程

文档序号:20683202发布日期:2020-05-08 18:35阅读:156来源:国知局
一种文件处理方法、系统及相关设备与流程

本发明涉及分布式数据存储技术领域,尤其涉及一种文件处理方法、系统及相关设备。



背景技术:

在分布式文件系统中,常见的存储解决方案有ceph数据存储系统,其存储过程如图1所示。集群从客户端获取到一个或多个对象(object),然后将这些object进行分组,分为不同pg(placementgroup,归置组,一个虚拟的对象集合),再根据一定的策略(例如crush算法)存储到集群的osd(objectstoragedevice)节点中。

现有的分布式文件系统中,文件的处理是在客户端,首先客户单需要从服务端拿到小文件的元数据中的映射关系,然后再发起对聚合对象的操作,需要传输小文件的元数据,浪费带宽资源。当pg分配的存储的空间达到上限需要扩容时,例如由一个磁盘扩容为两个磁盘,发生扩容分裂会导致聚合失效。聚合失效是指,同一个pg内的文件对象需要与原有的pg分离,导致无法基于原有的逻辑映射关系对文件对象进行操作。尤其是数量庞大的小文件聚合失效时,需要重新建立逻辑上的映射关系,费时费力,操作复杂,存储效率低。



技术实现要素:

本发明实施例提供了一种文件处理方法、系统及相关设备,用于提高存储空间利用率,降低文件管理的复杂度。

本发明实施例第一方面提供了一种文件处理方法,运用于服务端,可包括:

获取需要存储的多个目标文件,所述目标文件占用的存储空间小于指定阈值;

采用预设的哈希算法对所述目标文件的文件名称字符进行计算,得到所述目标文件的哈希值字符串;

按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,所述第一预设数量为正整数;

将所述多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,所述第二预设数量为小于第一预设数量的正整数;

将归置哈希值相同的聚合归置组归类到同一个归置组中,采用预设的映射算法将归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理方法,还可以包括:

在接收到扩容指令之后,将所述目标归置组拆分为至少两个新归置组,并将所述目标归置组的所有聚合归置组归置到所述新归置组中;

采用预设的映射算法将所述新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,作为一种可能的实施方式,本发明实施例中,将所述目标归置组拆分为至少两个新归置组,包括:将所述目标归置组拆分为第三预设数量的新归置组,所述第三预设数量为所述目标归置组内聚合归置组的数量。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

按照预设命名规则为所述聚合归置组中的聚合对象命名,所述预设命名规则包括:

为每个聚合对象分配唯一标识符;

以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

记录每个目标文件的元数据,所述元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

接收文件查询请求,所述查询请求中包含所需读取的目标文件的文件名称;

根据所述目标文件的文件名称查询所述目标文件的元数据;

根据所述目标文件的元数据读取所述目标文件。

本发明实施例第二方面提供了一种文件处理系统,可包括:

获取单元,用于获取需要存储的多个目标文件,所述目标文件占用的存储空间小于指定阈值;

计算单元,用于采用预设的哈希算法对所述目标文件的文件名称字符进行计算,得到所述目标文件的哈希值字符串;

第一读取单元,用于按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,所述第一预设数量为正整数;

聚合单元,用于将所述多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

第二读取单元,用于按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,所述第二预设数量为小于第一预设数量的正整数;

第一映射单元,用于将归置哈希值相同的聚合归置组归类到同一个归置组中,采用预设的映射算法将归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

拆分单元,用于在接收到扩容指令之后,将所述目标归置组拆分为至少两个新归置组,并将所述目标归置组的所有聚合归置组归置到所述新归置组中;

第二映射单元,用于采用预设的映射算法将所述新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统中,拆分单元包括:

拆分模块,用于将所述目标归置组拆分为第三预设数量的新归置组,所述第三预设数量为所述目标归置组内聚合归置组的数量。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

命名单元,用于按照预设命名规则为所述聚合归置组中的聚合对象命名,所述命名单元包括:

分配模块,用于为每个聚合对象分配唯一标识符;

拼接模块,以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

记录模块,用于记录每个目标文件的元数据,所述元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

接收单元,用于接收文件查询请求,所述查询请求中包含所需读取的目标文件的文件名称;

查询单元,用于根据所述目标文件的文件名称查询所述目标文件的元数据;

读取单元,用于根据所述目标文件的元数据读取所述目标文件。

本发明实施例第三方面提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面及第一方面中任意一项所述文件处理方法的步骤。

本发明实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如第一方面及第一方面中任意一项所述文件处理方法的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,文件处理系统在获取到需要存储的多个目标文件之后,可以在服务端采用预设的哈希算法计算目标文件的哈希值字符串,按照相同的读取规则读取到每个目标文件的聚合哈希值,将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中。最后在服务端按照相同的读取规则读取到每个聚合归置组的归置哈希值,将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。相对于现有方案,本发明实施例将多个目标文件以聚合的方式存储,提高了存储空间的利用率,同时,在归置组中提前对目标文件进行了分组聚合,当归置组发生扩容时,同一个聚合归置组中的各个目标文件始终处于一个逻辑集合中,无需将每一个目标文件重新进行逻辑映射至新的归置组,只需要将聚合归置组整体进行逻辑映射至新的归置组即可,大大减少了逻辑映射的工作量,降低了文件管理的操作复杂,提高了文件管理效率。由于整个处理过程在服务端进行实施,减少了目标文件元数据在客户端与服务端之间的数据跳转,节约了带宽资源。

附图说明

图1为现有技术中ceph数据存储系统中数据存储流程示意图;

图2为本发明实施例中一种文件处理方法的一个实施例示意图;

图3为本发明实施例中一种文件处理方法的另一个实施例示意图;

图4为本发明实施例中一种文件处理方法中目标文件聚合为聚合归置组一个具体运用实施例示意图;

图5为本发明实施例中一种文件处理方法中归置组扩容过程的一个具体运用实施例示意图;

图6为本发明实施例中一种文件处理系统的一个实施例示意图;

图7为本发明实施例中一种计算机设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种文件处理方法、系统及相关设备,用于提高存储空间利用率,降低文件管理的复杂度。

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

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

现有的分布式文件系统中往往是在客户端对获取到的文件对象进行归置处理,现有技术在客户端一侧聚合的话,则后续对文件操作通常要经过两跳,首先客户单需要从后端拿到小文件的映射关系,然后再发起对聚合对象的操作。而本发明在服务端来实现聚合,聚合本身对客户端来说是透明的,后续操作在客户端和服务器之间保持1跳,客户端只需要发送数据请求即可获取到对应的文件。避免了客户端读取映射元数据的步骤,从而减少一些额外数据传输开销。同时,本发明也保证了小文件与其聚合对象能始终处在逻辑和物理的管理单元内,因此本地磁盘io也不增加多余的跳数,同时能较好的做到事务性。

为了便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图2,本发明实施例中一种文件处理方法的一个实施例可包括:

201、获取需要存储的多个目标文件,目标文件占用的存储空间小于指定阈值;

当存储池中产生需要存储的数据文件时,对于文件大小大于基本区块的大文件可以按照现有的文件存储策略进行处理。例如直接按照ceph数据存储流程进行处理。对于文件的大小小于指定阈值的小文件需要特殊处理。为此,需要设置指定阈值,以识别出需要存储的目标文件。

其中,指定阈值可以设置为基本区块的存储空间值,也可以根据用户的需要设置更小的值,具体此处不做限定。

202、采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串;

在获取到目标文件之后,可以采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串。经过相同的哈希算法计算之后,多个目标文件的哈希字符串均为长度相同的字符串。

可以理解的是,具体的哈希算法此处不做限定,只需要保证所有的目标文件使用相同的哈希算法即可。

203、按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值;

为了便于对目标文件进行归类,本发明实施例中,可以按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,其中,第一预设数量为正整数。

示例性的,例如目标文件a的哈希值字符串为二进制10001(实际运用中哈希值字符串的位数可以是64位或其它数位,具体此处不做限定),可以设置以哈希值字符串的后四位作为聚合哈希值(即0001)。具体的读取规则此处不做限定,只需要保证所有的目标文件的聚合哈希值读取规则相同即可。

204、将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

现有的空间使用的粒度为固定大小的基本区块,对于文件对象数据存储,一个大文件往往会占用多个基本区块,而一个小文件往往占用不满一个完整基本区块,造成存储空间浪费。为了提高存储空间的利用率,本发明实施例中,可以将获取到的多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中。

聚合方式存储是指,多个小文件在存储时充分利用对象内的空间,以一个小文件挨着另一个小文件的方式来进行存储。例如,一个小文件可以存储在对象中分条的一个条带中。这样一来,对于小文件存储,相较于传统的一个小文件单独占用一个完整对象,造成空间浪费,本发明实施例在进行小文件存储时是以条带为单位进行存储,将多个小文件聚合存储到文件对象中,如此,对于小文件存储的粒度更小,充分利用了存储空间,提高了存储空间的利用率。

205、按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值;

实际运用中,目标文件(小文件)对象的数量极为庞大,逻辑管理中对应的操作对象也极为庞大,为了减少逻辑操作对象,提高文件对象的管理效率,本发明实施例中,还可以进一步将多个聚合归置组归置到一个逻辑集合中。

具体的,在完成文件聚合之后,每个聚合归置组就继承了其包含的目标文件的聚合哈希值。文件处理系统可以按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,第二预设数量为小于第一预设数量的正整数。

示例性的,如步骤103中的示例,目标文件a的哈希值字符串为二进制10001(实际运用中哈希值字符串的位数可以是64位或其它数位,具体此处不做限定),可以设置以哈希值字符串的后四位作为聚合哈希值(即0001),可以设置以聚合哈希值的后两位作为归置哈希值(即01)。具体的读取规则此处不做限定,只需要保证所有的聚合归置组的归置哈希值字符串读取规则相同即可。

206、将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。

在得到每个聚合归置组的归置哈希值之后,可以将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。例如,同一个归置组中的的聚合归置组可以关联存储在同一个磁盘中,不同归置组到不同的物理磁盘上。

具体的映射算法可以是crush(controlledreplicationunderscalablehashing)算法或一致性哈希算法(consistenthashing),或其它数据存储位置映射算法,具体此处不做限定。

本发明实施例中,文件处理系统在获取到需要存储的多个目标文件之后,可以采用预设的哈希算法计算目标文件的哈希值字符串,按照相同的读取规则读取到每个目标文件的聚合哈希值,将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中。最后按照相同的读取规则读取到每个聚合归置组的归置哈希值,将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。相对于现有方案,将多个目标文件以聚合的方式存储,提高了存储空间的利用率,同时,在归置组中提前对目标文件进行了分组聚合,当归置组发生扩容时,同一个聚合归置组中的各个目标文件始终处于一个逻辑集合中,无需将每一个目标文件重新进行逻辑映射至新的归置组,只需要将聚合归置组整体进行逻辑映射至新的归置组即可,大大减少了逻辑映射的工作量,降低了文件管理的操作复杂,提高了文件管理效率。由于整个处理过程在服务端进行实施,减少了目标文件元数据在客户端与服务端之间的数据跳转,节约了带宽资源。

在上述图2所示的实施例的基础上,下面将对归置组所属的存储空间扩容时的场景进行描述。

请参阅图3,本发明是实施例中的一种文件处理方法的另一个实施例可包括:

301、获取需要存储的多个目标文件,目标文件占用的存储空间小于指定阈值;

302、采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串;

303、按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值;

304、将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

305、按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值;

306、将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中;

本实施例中的步骤301至306中所描述的内容与上述图2所示的实施例中的步骤201至206中描述的内容类似,具体可以参阅步骤201至206,此处不做赘述。

307、在接收到扩容指令之后,将目标归置组拆分为至少两个新归置组,并将目标归置组的所有聚合归置组归置到新归置组中;

在实际运用中,随着业务的发展,目标归置组原先所属的存储空间的被占用的越来越多,存储空间不够用时,需要对目标归置组所属的存储空间扩容。现有技术中,当目标归置组所属的存储空间扩容时需要将归置组中的所有对象与原有的归置组分离重新进行逻辑映射。为了减少扩容过程中,重新生成逻辑映射的工作量,本发明实施例中,可以将以扩容之前的目标目标归置组拆分为至少两个新归置组,以目标归置组中的聚合归置组为基本单位,将目标归置组的所有聚合归置组归置到新归置组中。

示例性的,如图4所示,假设当前归置组id为01,该归置组内存在聚合归置组0001、聚合归置组0101、聚合归置组1001、聚合归置组1101,有四个目标文件分别为a(哈希值字符串为10001)、b(哈希值字符串为00001)、c(哈希值字符串为11101)、d(哈希值字符串为01101),如果取哈希值字符串后四位为聚合哈希值,聚合哈希值的后两位为归置哈希值,则目标文件a、b、c、d均可归置于id为01的归置组内,且目标文件a与b以聚合的方式存储于聚合归置组0001内,c与d以聚合的方式存储于聚合归置组1101内。

当归置组01扩容时,可以直接以其内的聚合归置组为基本单位进行数据重映射,可以将分裂为4个新归置组(分别为聚合归置组0001、聚合归置组0101、聚合归置组1001、聚合归置组1101),对于目标文件a、b、c、d而言,其映射逻辑依然归属于原有的聚合归置组,无需改变目标文件a、b、c、d的元数据,只需要在聚合归置组的存储位置改变之后,统一修改聚合归置组的元数据即可,大大减少了逻辑映射修改的工作量,提高了文件管理效率。

可以理解的是,当目标归置组所属的存储空间扩容时,目标归置组拆分新归置组的数量可以与目标归置组中原有的聚合归置组的数量相同,也可以不同,具体此处不做限定。

可选的,目标归置组中的聚合归置组的数量还可以根据第一预设数量与第二预设数量之间的差值进行计算。例如,对于二进制的哈希字符串,若第一预设数量与第二预设数量之间的差值为2,则目标归置组中的聚合归置组的数量为22=4个。

308、采用预设的映射算法将新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

在目标归置组扩容过程中,将目标归置组中的聚合归置组重新归置到新的归置组之后,可以采用预设的映射算法将新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

本发明实施例中,文件处理系统在获取到需要存储的多个目标文件之后,可以采用预设的哈希算法计算目标文件的哈希值字符串,按照相同的读取规则读取到每个目标文件的聚合哈希值,将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中。最后按照相同的读取规则读取到每个聚合归置组的归置哈希值,将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。相对于现有方案,将多个目标文件以聚合的方式存储,提高了存储空间的利用率,同时,在归置组中提前对目标文件进行了分组聚合,当归置组发生扩容时,同一个聚合归置组中的各个目标文件始终处于一个逻辑集合中,无需将每一个目标文件重新进行逻辑映射至新的归置组,只需要将聚合归置组整体进行逻辑映射至新的归置组即可,大大减少了逻辑映射的工作量,降低了文件管理的操作复杂,提高了文件管理效率。由于整个处理过程在服务端进行实施,减少了目标文件元数据在客户端与服务端之间的数据跳转,节约了带宽资源。

实际运用中,如果聚合归置组内始终只保持固定的一个聚合对象,那么聚合对象名可以直接用聚合归置组id作为名称,让不同聚合归置组之间的聚合对象区别开即可。但是实际中这么做是不可取的,原因是聚合对象本身作为底层存储的一个单元,不能无限制的大,也要考虑到聚合对象本身的故障和恢复。这样,聚合归置组需要根据当前的聚合对象的存储情况重新生成新的聚合对象(切分)。

为此,在上述图2或图3所示的实施例的基础上,为了进一步提高文件的管理效率,需要按照统一的预设命名规则为聚合归置组中的聚合对象命名,可选的,预设命名规则可包括:为每个聚合对象分配唯一标识符;以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。具体的拼接过程中的拼接顺序此处不做限定。

上述实施例对数据的存储的过程进行了描述,下面将对数据查询的过程进行描述。

在聚合存储目标文件之后,文件处理系统可以记录每个目标文件的元数据,可选的,元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

在需要查询目标文件时,文件处理系统可以接收到客户端的文件查询请求,查询请求中包含所需读取的目标文件的文件名称,文件处理系统可以根据文件名称查询目标文件的元数据;根据目标文件的元数据读取目标文件。具体的,文件处理系统可以在目标文件的元数据中查询到目标文件所属的聚合归置组的对象名称,以及偏移地址以及文件长度,最后基于聚合归置组的聚合对象名称查询到聚合对象的元数据得到聚合对象的起始地址,并基于起始地址偏移地址以及文件长度读取到目标文件。

为了便于理解,下面将结合具体的运用实施例,对本发明实施例中的文件处理方法进行描述。

本实施例的基本思路是,考虑到本归置组未来可能发生扩容分裂的情况下,提前将归置到本归置组内的小文件做二次归置划分。为此,引入了聚合归置组(compoundplacegroup)来计算小文件二次归置划分所映射的聚合对象的位置。聚合归置组是纯虚拟的概念,并未为聚合归置组本身设置逻辑实体,聚合归置组作用体现在聚合归置组内的小文件都具体相同的归置哈希值。

具体的,创建存储池时,指定cpg_num(聚合归置组数量)及pg_num(归置组数量)来预设当前存储池的聚合归置组数量,其中,cpg_num大于等于pg_num,每个归置组(pg)可以管理多个聚合归置组(cpg)。在确定聚合归置组及归置组的数量之后,需要确定各个归置组及归置组的数量的id。本实施例中,可以采用预设的哈希算法对需要存储的小文件的文件名称字符进行计算,得到小文件的哈希值字符串,按照相同的读取规则从每个小文件的哈希值字符串中读取第一预设数量的字符组成每个小文件的聚合哈希值,具体的第一预设数量可以根据公式pg_bits=log2(cpg_num)进行计算,然后将聚合哈希值相同的小文件以聚合的方式存储到同一个聚合归置组中,并将对应的聚合哈希值作为该聚合归置组的id。按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,具体的第一预设数量可以根据公式pg_bits=log2(pg_num)进行计算,然后将归置哈希值相同的聚合归置组归类到同一个归置组中,将对应的归置哈希值作为该聚合归置组的id。最后,采用crush算法将各个归置组中的聚合对象映射至物理存储介质中。

其中,pg_bits为归置组的id的数位,cpg_bits为聚合归置组的id的数位,pgid(归置组id)取值范围是:[0,(2^pg_bits)-1]。特定归置组下管理的聚合归置组集合是:[pgid,((2^(cpg_bits-pg_bits)-1)<<(pg_bits))|pgid]。pg内可以管理的聚合归置组的数量是:2^(cpg_bits-pg_bits)。

示例性的,如图5所示,假设当前归置组id为01,该归置组内存在聚合归置组0001、聚合归置组1001、聚合归置组0101、聚合归置组1101,有四个目标文件分别为a(哈希值字符串为10001)、b(哈希值字符串为00001)、c(哈希值字符串为11101)、d(哈希值字符串为01101),如果取哈希值字符串后四位为聚合哈希值,聚合哈希值的后两位为归置哈希值,则目标文件a、b、c、d均可归置于id为01的归置组内,且目标文件a与b以聚合的方式存储于聚合归置组0001内,c与d以聚合的方式存储于聚合归置组1101内。

当归置组01扩容时,可以直接以其内的聚合归置组为基本单位进行数据重映射,可以将分裂为2个新归置组(分别为新归置组001,新归置组101),对于目标文件a、b、c、d而言,其映射逻辑依然归属于原有的聚合归置组,无需改变目标文件a、b、c、d的元数据,只需要在聚合归置组的存储位置改变之后,统一修改聚合归置组的元数据即可,聚合归置组0001、聚合归置组1001归置于新归置组001,聚合归置组0101、聚合归置组1101归置于新归置组101,pg层面在处理小文件(a、b、c、d)的聚合时,始终可以在本pg范围内进行小文件和聚合对象的操作,也不必考虑扩容导致小文件和聚合对象分离大大减少了逻辑映射修改的工作量,提高了管理效率。

请参阅图6,本发明实施例还提供了一种文件处理系统,可包括:

获取单元601,用于获取需要存储的多个目标文件,目标文件占用的存储空间小于指定阈值;

计算单元602,用于采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串;

第一读取单元603,用于按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,第一预设数量为正整数;

聚合单元604,用于将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

第二读取单元605,用于按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,第二预设数量为小于第一预设数量的正整数;

第一映射单元606,用于将归置哈希值相同的聚合归置组归类到同一个归置组中,采用预设的映射算法将归置组中的文件对象关联存储在同一个物理存储介质中。

本发明实施例中,文件处理系统在获取到需要存储的多个目标文件之后,可以采用预设的哈希算法计算目标文件的哈希值字符串,按照相同的读取规则读取到每个目标文件的聚合哈希值,将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中。最后按照相同的读取规则读取到每个聚合归置组的归置哈希值,将归置哈希值相同的聚合归置组归类到相同的归置组中,采用预设的映射算法将同属一个归置组的聚合归置组中的文件对象关联存储在物理存储介质中。相对于现有方案,将多个目标文件以聚合的方式存储,提高了存储空间的利用率,同时,在归置组中提前对目标文件进行了分组聚合,当归置组发生扩容时,同一个聚合归置组中的各个目标文件始终处于一个逻辑集合中,无需将每一个目标文件重新进行逻辑映射至新的归置组,只需要将聚合归置组整体进行逻辑映射至新的归置组即可,大大减少了逻辑映射的工作量,降低了文件管理的操作复杂,提高了文件管理效率。由于整个处理过程在服务端进行实施,减少了目标文件元数据在客户端与服务端之间的数据跳转,节约了带宽资源。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

拆分单元,用于在接收到扩容指令之后,将目标归置组拆分为至少两个新归置组,并将目标归置组的所有聚合归置组归置到新归置组中;

第二映射单元,用于采用预设的映射算法将新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统中,拆分单元包括:

拆分模块,用于将目标归置组拆分为第三预设数量的新归置组,第三预设数量为目标归置组内聚合归置组的数量。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

命名单元,用于按照预设命名规则为聚合归置组中的聚合对象命名,命名单元包括:

分配模块,用于为每个聚合对象分配唯一标识符;

拼接模块,以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

记录模块,用于记录每个目标文件的元数据,元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

可选的,作为一种可能的实施方式,本发明实施例中的文件处理系统,还可以包括:

接收单元,用于接收文件查询请求,查询请求中包含所需读取的目标文件的文件名称;

查询单元,用于根据目标文件的文件名称查询目标文件的元数据;

读取单元,用于根据目标文件的元数据读取目标文件。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上面从功能化的角度对本申请实施例中的文件处理系统进行了描述,下面从硬件处理的角度对本申请实施例中的计算机设备进行描述。

本申请实施例还提供了一种计算机设备,如图7所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。参考图7,计算机设备7包括:存储器710、处理器720以及存储在存储器中并可在处理器上运行的计算机程序。处理器执行计算机程序时实现上述各个文件处理方法实施例中的步骤,例如图2所示的步骤201至206。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。

本申请实施例中的一些实施例中,处理器用于执行存储器中存储的计算机程序时实现如下步骤:

获取需要存储的多个目标文件,目标文件占用的存储空间小于指定阈值;

采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串;

按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,第一预设数量为正整数;

将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,第二预设数量为小于第一预设数量的正整数;

将归置哈希值相同的聚合归置组归类到同一个归置组中,采用预设的映射算法将归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

在接收到扩容指令之后,将目标归置组拆分为至少两个新归置组,并将目标归置组的所有聚合归置组归置到新归置组中;

采用预设的映射算法将新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

将目标归置组拆分为第三预设数量的新归置组,第三预设数量为目标归置组内聚合归置组的数量。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

按照预设命名规则为聚合归置组中的聚合对象命名,预设命名规则包括:

为每个聚合对象分配唯一标识符;

以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

记录每个目标文件的元数据,元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

接收文件查询请求,查询请求中包含所需读取的目标文件的文件名称;

根据目标文件的文件名称查询目标文件的元数据;

根据目标文件的元数据读取目标文件。

本领域技术人员可以理解,图7中示出的结构并不构成对计算机设备的限定,计算机设备7可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如还可以包括输入输出设备、总线等。

所称处理器可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:

获取需要存储的多个目标文件,目标文件占用的存储空间小于指定阈值;

采用预设的哈希算法对目标文件的文件名称字符进行计算,得到目标文件的哈希值字符串;

按照相同的读取规则从每个目标文件的哈希值字符串中读取第一预设数量的字符组成每个目标文件的聚合哈希值,第一预设数量为正整数;

将多个目标文件中聚合哈希值相同的目标文件以聚合的方式存储到同一个聚合归置组中;

按照相同的读取规则从每个聚合归置组的聚合哈希值中读取第二预设数量的字符组成每个聚合归置组的归置哈希值,第二预设数量为小于第一预设数量的正整数;

将归置哈希值相同的聚合归置组归类到同一个归置组中,采用预设的映射算法将归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

在接收到扩容指令之后,将目标归置组拆分为至少两个新归置组,并将目标归置组的所有聚合归置组归置到新归置组中;

采用预设的映射算法将新归置组中的聚合归置组中的文件对象关联存储在同一个物理存储介质中。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

将目标归置组拆分为第三预设数量的新归置组,第三预设数量为目标归置组内聚合归置组的数量。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

按照预设命名规则为聚合归置组中的聚合对象命名,预设命名规则包括:

为每个聚合对象分配唯一标识符;

以每个聚合对象所属的聚合哈希值、唯一标识符以及切分序列号拼接得到每个聚合对象的文件名称。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

记录每个目标文件的元数据,元数据中包含文件名称、所属的聚合归置组的聚合对象名称、偏移地址以及文件长度。

可选的,本申请的一些实施例中,处理器还可以用于实现如下步骤:

接收文件查询请求,查询请求中包含所需读取的目标文件的文件名称;

根据目标文件的文件名称查询目标文件的元数据;

根据目标文件的元数据读取目标文件。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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