一种面向大规模归档数据集的分割存储方法及恢复方法与流程

文档序号:11729394阅读:228来源:国知局
一种面向大规模归档数据集的分割存储方法及恢复方法与流程

本发明属于数据存储技术领域,涉及数据分割存储方法和恢复方法,更为具体地,是涉及一种面向大规模归档数据集的分割存储方法及相应的恢复方法。



背景技术:

随着信息技术的不断发展,数据量也在不断地增长。在各个领域,都存储了大量的需要长期保存的归档数据,这些数据一旦被存储,就很少被访问,称之为“冷数据”。通常这些数据通过人工或工具进行整理,存储在固态盘、磁盘、磁带、光盘等存储设备中,固态盘的寿命一般为1年,主流磁盘的寿命一般为10年,磁带的寿命一般为10年。为了保证大量归档数据的长期保存,则需要在一定间隔时间段内,将大量的数据迁移到新的存储介质中,同时,这些归档数据随着年份增加,会在原数据的基础上不断追加新的数据,一般以每年tb级的速率在增长,采用单个存储介质不能够满足大规模的归档数据存储需求,需要将这些归档数据进行分割,分布到多个存储介质中。通常采用人工分配或者按照存储容量边界进行自动分配,人工分配费力且低效率,而现有的自动分配方法会破坏单个数据的完整性,不方便数据的访问。



技术实现要素:

为解决上述问题,本发明公开了一种面向大规模数据集的分割存储方法及相应的恢复方法,按照相关性排序方法,自动进行归档数据的分割和存储,保证单个数据的完整性以及归档数据目录结构的完整一致性。

为了达到上述目的,本发明提供如下技术方案:

一种面向大规模归档数据集的分割存储方法,所述大规模归档数据集具有单一的存取入口,通过相对路径能够访问数据集内部所有数据文件,其方法包括如下步骤:

步骤1,获取归档数据集的入口路径;

步骤2,根据数据集入口路径,依次获取入口路径内文件/子目录信息;

步骤3,依次对入口路径内各级子目录中的文件/子目录进行相关性排序;

步骤4,按照各级子目录中的文件/子目录的排列次序,依次将文件/子目录分配到数据卷中,并存储各个数据卷的存储信息,所有数据卷存储信息构成一个数据卷存储信息列表;

所述依次将文件/子目录分配到数据卷中的过程包括:

步骤4-1,如当前存储介质剩余可用存储空间大于或等于当前文件或目录的数据量,则将该文件或目录分配到当前数据卷中;

步骤4-2,如当前存储介质剩余可用存储空间小于当前文件或目录的数据量,则当前数据卷的数据分配完成,将当前文件或目录分配到下一个数据卷中;

步骤5,根据数据卷存储信息列表,依次将归档数据存储到对应的存储介质中,每个独立的数据卷对应一个独立的存储介质,数据集存储到对应的存储介质中保持其原目录结构,每个文件都需要保存从其所在子目录回溯到最上层入口路径内的全目录路径。

进一步地,所述步骤2中依次获取入口路径内各个目录中的文件/子目录信息过程包括:

步骤2-1,若当前子目录总数据量不超过存储介质的容量,直接为该子目录分配数据卷,不需要获取该子目录下的文件/子目录信息;

步骤2-2,若当前子目录总数据量超过存储介质的容量,则需要获取该子目录下所有文件/子目录信息。

进一步的,所述文件/子目录信息包括:文件/子目录路径、名称、大小、创建时间、文件标记。

进一步地,所述相关性排序方法包括:

步骤3-1,对于某子目录下的所有文件/子目录,根据获取的信息,按照文件/子目录创建时间进行排序;

步骤3-2,对于同期创建的文件/子目录,按照字典序对文件和目录名称排序,或按照文件/子目录夹的名称相似度进行匹配排序。

进一步的,所述数据卷的存储信息包括:入口路径、数据总量、文件/子目录总数目以及各个文件/子目录信息。

进一步地,所述步骤5中依次将归档数据存储到对应的存储介质中的过程包括如下步骤:

步骤5-1,获取数据卷存储信息列表;

步骤5-2,按照各个数据卷的存储信息,保持归档数据集原目录结构,依次将文件数据或子目录内的数据存储到对应的存储介质中。

进一步地,所述步骤5-2中,保持归档数据集原目录结构的过程包括:

步骤5-2-1,以文件在入口路径内的目录结构,在对应存储介质中,在存储介质的入口路径内构建相同的目录结构;

步骤5-2-2,将文件存储到对应存储介质的相应目录中。

一种数据恢复方法,用于恢复通过以上面向大规模归档数据集的分割存储方法分割存储后的数据,包括如下步骤:

步骤1,接收数据恢复请求,获取数据集恢复入口路径;

步骤2,以数据集恢复入口路径为根目录,按照文件数据在各个存储介质中的存储路径,依次将各个独立存储介质中的数据存储到原存储介质中。

进一步的,所述将各个独立存储介质中的数据存储到原存储介质中的过程包括如下步骤:

步骤2-1,如果从两个或多个存储卷恢复的子目录具有完全相同的父目录路径,则在恢复时合并两个目录直接上层父目录,并在该直接上层父目录下创建这两个或者多个子目录;

步骤2-2,如果从两个存储卷恢复的多个文件具有完全相同的父目录路径,则在恢复时合并两个文件直接上层父目录,把这多个文件复制到该目录下。

与现有技术相比,本发明具有如下优点和有益效果:

1.在保证单一数据完整性和归档数据目录结构一致性的基础上,合理分配资源,将大量归档数据合理分散存储到多个独立的存储介质中,并在存储时保持归档数据集原目录结构,使得每个存储介质尽量保留整个目录结构;此外在分割存储后能够方便高效地进行原数据集的恢复。

2.通过相关性的排序方法,保证了相关数据存储在同一或邻近存储介质中,方便归档数据访问。

3.免去人工处理过程,大大提高归档数据的存储效率。

附图说明

图1为面向大规模归档数据集的分割存储方法示意图;

图2为面向大规模归档数据集的分割存储方法整体流程示意图;

图3为面向大规模归档数据集的分割存储方法具体步骤流程示意图;

图4为采用本发明方法的实施样例示意图。

图5为图4实施样例的存储介质中存储目录结构示意图。

具体实施方式

以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。

如图1左侧所示的大规模归档数据集在不能保存到单一存储介质中时,需要分散保存在图1右侧所示的多个独立的存储介质中。本例中,大规模归档数据集具有单一的存取入口,通过相对路径能够访问数据集内部所有数据文件。基于此,本发明提供了一种分割方法,其整体流程如图2所示,具体的步骤如图3所示,包括如下步骤:

步骤(1),获取归档数据集的入口路径后访问数据集,设定当前目录为根目录,当前数据总量sum_size为0,创建数据卷存储信息列表,创建新数据卷,创建该数据卷存储信息项,设定每个数据卷可用存储空间大小为vol_size。数据卷存储信息列表中包含各个数据卷的存储信息,其中数据卷的存储信息包括:入口路径、数据总量、文件/子目录总数目以及各个文件/子目录信息。文件/子目录信息包括:文件/子目录全路径、名称、大小、创建时间、文件标记等等。

步骤(2),访问当前目录,依次获取该目录下所有文件/子目录信息,其信息包括创建日期、名称和大小。

步骤(3),对该目录下所有文件/子目录进行相关性排序。

对某个子目录下文件/子目录相关性具体排序过程为:

步骤(3)-1,根据获取的信息,按照文件/子目录创建时间进行排序。

步骤(3)-2,对于同期创建的文件/子目录,优先按照字典序对文件和目录名称排序,也可以按照文件/子目录夹的名称相似度进行匹配排序。

步骤(4),按照排序顺序依次访问该目录下的文件/子目录,获取其数据总量file_size;

步骤(5),若未获取文件/子目录数据总量信息,即说明所有文件/子目录访问结束,执行步骤(11),否则执行步骤(6)。

步骤(6),如果sum_size+file_size≤vol_size,则说明当前子目录或文件的总数据量不超过存储介质还可以存储的剩余容量,执行步骤(8),否则说明当前子目录或文件的总数据量超过存储介质还可以存储的剩余容量,执行步骤(7)。

步骤(7),如果当前为子目录,则执行步骤(2)继续获取该目录下的文件/子目录的信息,否则执行步骤(9)将当前文件分配到下一个数据卷中。

步骤(8),将该文件/子目录分配到当前数据卷中,添加对应文件/子目录信息项,sum_size=sum_size+file_size,同时将当前数据卷中相同子路径的文件或目录综合为一个文件/子目录信息项,执行步骤(4)继续访问当前目录下下一个文件/子目录。

步骤(9),当前数据卷无法存储该文件,将当前数据卷中相同子目录路径的文件或目录综合为一个文件/子目录信息项,将该数据卷存储信息加入数据卷存储信息列表中,创建新数据卷,创建该数据卷存储信息项,sum_size=0。

步骤(10),将该文件分配到当前数据卷中,添加对应文件/子目录信息项,sum_size=sum_size+file_size,同时将当前数据卷中相同子路径的文件或目录综合为一个文件/子目录信息项,执行步骤(4)。

步骤(11),若当前文件/子目录为根目录下的文件/子目录,执行步骤(12),否则执行步骤(13)。

步骤(12),将当前数据卷中相同子目录路径的文件或目录综合为一个文件/子目录信息项,将该数据卷存储信息加入数据卷存储信息列表中,执行步骤(14)。

步骤(13),当前目录下执行的函数过程结束,返回到上层函数的执行流程中。

步骤(14),获取数据卷存储信息列表,按照各个数据卷的存储信息,依照归档数据集在入口路径内的目录结构,依次将文件数据或子目录内的数据存储到对应的存储介质中,每个独立的数据卷对应一个独立的存储介质,在存储介质中保持归档数据集原目录结构,也就是说每个文件都需要保存从其所在子目录回溯到最上层入口路径内的全目录路径。

保持归档数据集原目录结构的方法具体通过如下步骤实现:

步骤(1),以文件在入口路径内的目录结构,在对应存储介质中,在存储介质的入口路径内构建相同的目录结构;

步骤(2),将文件存储到对应存储介质的相应目录中。

在分配存储完成后,如果需要时,能够进行数据集恢复,即将分割存储到多个独立存储介质中的大规模归档数据集存储到原存储介质中,其过程包括:

步骤(1),接收数据恢复请求,获取数据集恢复入口路径。

步骤(2),以数据集恢复入口路径为根目录,按照文件数据在各个存储介质中的存储路径,依次将各个独立存储介质中的数据存储到原存储介质中。在将各个独立存储介质中的数据存储到原存储介质中的过程中包括如下步骤:

步骤(1),如果从两个或多个存储卷恢复的子目录具有完全相同的父目录路径,则在恢复时合并两个目录直接上层父目录,并在该直接上层父目录下创建这两个或者多个子目录;

步骤(2),如果从两个存储卷恢复的多个文件具有完全相同的父目录路径,则在恢复时合并两个文件直接上层父目录,把这多个文件复制到该目录下。

实施实例:

图4为根据本发明方法针对面向大规模归档数据集进行分割存储的样例示意图,归档文件以dir1为根目录,目录树结构如图4所示,本发明方法自动将该目录下所有文件分割和存储到多个数据卷中,每个数据卷代表一个存储容量为23gb的光盘,归档数据的分割存储包括以下步骤:

设定dir1为根目录,当前数据总量sum_size为0,创建数据卷存储信息列表,创建新数据卷vol1,创建对应数据卷存储信息项,设定每个数据卷可用存储空间大小vol_size为23gb。

访问当前目录dir1,依次获取该目录下所有子目录dir1.1、dir1.2和dir1.3。

对dir1内的子目录dir1.1、dir1.2和dir1.3进行相关性排序,排序结果为dir1.1、dir1.2和dir1.3,按照排序顺序依次访问dir1内的子目录。

访问dir1内的子目录dir1.1,获取子目录dir1.1内数据总量为25gb超过vol_size23gb,当前子目录dir1.1的总数据量超过存储介质还可以存储的剩余容量。

因为当前目录dir1.1为子目录,依次获取该子目录下的所有子目录信息(dir1.1.1、1.1.2)并进行相关性排序,按照排序访问子目录dir1.1内的文件/子目录。

首先访问子目录dir1.1.1,子目录dir1.1.1内数据总量为15gb,由于sum_size(0)+file_size(15gb)<vol_size(23gb),当前存储介质的剩余容量足够存储当前子目录dir1.1.1,则将该子目录分配到当前数据卷中,sum_size=sum_size+15gb,更新数据卷vol1的存储信息,即添加该子目录对应的文件/子目录信息项;

依排序顺序访问子目录dir1.1.2,子目录dir1.1.2内数据总量为10gb,sum_size(15gb)+10gb>vol_size(23gb),当前子目录dir1.1.2的总数据量超过存储介质还可以存储的剩余容量,则访问dir1.1.2内的文件;

子目录dir1.1.2内唯一的文件file1.1.2.1大小为10gb,sum_size(15gb)+10gb>vol_size(23gb),当前数据卷无法存储该文件,将数据卷vol1的数据卷存储信息加入数据卷存储信息列表中。创建新数据卷vol2,创建对应数据卷存储信息项,sum_size=0。对于当前文件file1.1.2.1,由于sum_size(0)+file_size(10gb)<vol_size(23gb),则将该子目录分配到当前数据卷vol2中,sum_size=10gb,更新数据卷vol2的数据存储信息,即添加该子目录对应的文件/子目录信息项。

依次访问子目录dir1.2,子目录dir1.2内数据总量为12gb,由于sum_size(10gb)+file_size(12gb)<vol_size(23gb),当前存储介质的剩余容量足够存储当前子目录dir1.2,则将该子目录dir1.2分配到当前数据卷vol2中,sum_size=sum_size+12gb,更新数据卷vol2的数据存储信息,即添加该子目录对应的文件/子目录信息项;

访问子目录dir1.3,子目录dir1.3内数据总量为21gb,sum_size(22gb)+21gb>vol_size(23gb),当前子目录dir1.3的总数据量超过存储介质还可以存储的剩余容量,访问子目录dir1.3内的文件,并对dir1.3内的文件进行相关性排序;

首先访问子目录dir1.3内的文件file1.3.1,file1.3.1大小为1gb,由于sum_size(20gb)+file_size(1gb)=vol_size(23gb),当前存储介质的剩余容量正好能够存储当前子目录dir1.2,sum_size=sum_size+1gb,更新数据卷vol2的存储信息,即添加该文件对应的文件/子目录信息项。

依次访问子目录dir1.3内的文件file1.3.2,file1.3.2大小为20gb,sum_size(23gb)+20gb>vol_size(23gb),将数据卷vol2的数据卷存储信息加入数据卷存储信息列表中,创建新数据卷vol3,创建对应数据卷存储信息项,sum_size=0。对于当前文件file1.3.2,由于sum_size(0)+file_size(20gb)<vol_size(23gb),则将该子目录分配到当前数据卷vol3中,sum_size=20gb,更新数据卷vol3的存储信息,即添加该文件对应的文件/子目录信息项;

至此所有文件/子目录访问结束,将数据卷vol3数据存储信息加入数据卷存储信息列表中。

获取数据卷存储信息列表,按照各个数据卷的存储信息,保持归档数据集原目录结构,依次将文件数据或子目录内的数据存储到对应的存储介质中,每个独立的数据卷对应一个独立的存储介质。各数据卷内数据存储目录结构如图5所示,与数据集原目录结构保持一致。

本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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