著录项信息
专利名称 | 一种数据处理方法、装置和系统 |
申请号 | CN201210034149.2 | 申请日期 | 2012-02-15 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-08-08 | 公开/公告号 | CN102629247A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 成都市华为赛门铁克科技有限公司 | 申请人地址 | 四川省成都市高新区西部园区清水河片区
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为数字技术(成都)有限公司 | 当前权利人 | 华为数字技术(成都)有限公司 |
发明人 | 曹宇 |
代理机构 | 深圳市深佳知识产权代理事务所(普通合伙) | 代理人 | 唐华明 |
摘要
本发明涉及数据处理技术领域,特别是一种数据处理方法、装置和系统,所述方法包括:提供第一接口,通过所述第一接口接收来自应用程序的文件写操作请求;将文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。本发明有效减少了重复数据,节省了存储空间。
1.一种数据处理方法,其特征在于,所述方法应用于数据处理装置,所述数据处理装置与一存储系统相连,所述数据处理装置包括第一接口,所述存储系统包括第二接口,所述第一接口与所述第二接口的类型相同,所述存储系统通过第二接口进行文件读写操作,所述方法包括:
提供第一接口,通过所述第一接口接收来自应用程序的文件写操作请求;
将文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接;
如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。
2.根据权利要求1所述的方法,其特征在于,所述建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接包括:
将所述与所述保存的唯一标识相同的子数据块的指针指向与元数据管理模块中保存的唯一标识对应的数据;
将所述数据的引用计数加1,其中,所述引用计数用于标识数据被引用的次数,当接收到对所述数据的删除请求时,将所述数据的引用计数减1,当所述数据的引用计数为零时,删除所述数据。
3.根据权利要求1所述的方法,其特征在于,所述保存所述与所述保存的唯一标识不同的子数据块的唯一标识包括:保存所述与所述保存的唯一标识不同的子数据块的唯一标识作为所述与所述保存的唯一标识不同的子数据块的逻辑地址;
所述通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据包括:
将所述子数据块的逻辑地址转换为物理地址;通过所述第二接口向存储系统发送数据写操作请求,使得所述存储系统根据所述物理地址保存所述子数据块的数据。
4.根据权利要求1所述的方法,其特征在于,在所述提供第一接口,通过所述第一接口接收来自应用程序的文件写操作请求之前还包括:
定义第一类数据块和第二类数据块,其中,所述第一类数据块存储有所述存储系统的地址信息以及第二类数据块的索引,所述第二类数据块包括元数据块和子数据块;所述第一类数据块和所述第二类数据块之间建立有链接。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
复制所述第一类数据块以及所述第一类数据块与所述第二类数据块之间的链接,创建所述第一类数据块的快照。
6.一种数据处理装置,其特征在于,所述数据处理装置与一存储系统相连,所述数据处理装置包括第一接口,所述存储系统包括第二接口,所述第一接口与所述第二接口的类型相同,所述存储系统通过第二接口进行文件读写操作,其中:
所述第一接口于接收来自应用程序的文件写操作请求;
所述装置还包括:
元数据管理模块,用于存储文件的元数据以及文件分块信息;
重复数据删除模块,用于将通过第一接口接收的文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。
7.根据权利要求6所述的装置,其特征在于,所述重复数据删除模块包括:
切分模块,用于将所述文件的数据切分成至少一个子数据块;
逻辑地址分配模块,用于获取所述子数据块的唯一标识,将所述子数据块的唯一标识作为子数据块的逻辑地址;将所述子数据块的唯一标识与元数据管理模块中保存的唯一标识进行比较;
数据管理模块,用于当子数据块的唯一标识与元数据管理模块中保存的唯一标识不同时,将所述子数据块的逻辑地址转换为物理地址;通过所述第二接口向存储系统发送数据写操作请求,使得所述存储系统根据所述物理地址将所述子数据块的数据保存;
所述元数据管理模块还用于当子数据块的唯一标识与已经保存的唯一标识相同时,建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
数据字典,用于定义第一类数据块和第二类数据块;其中,所述第一类数据块用于保存存储系统的地址信息以及第二类数据块的索引;所述第二类数据块的地址与其数据的唯一标识相关联,所述第二类数据块包括元数据块和子数据块;所述第一类数据块和所述第二类数据块之间建立有链接。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
引用计数模块,用于记录所述第二类数据块的引用次数,当所述引用计数为零时,删除所述第二类数据块;
快照模块,用于复制所述第一类数据块以及所述第一类数据块与所述第二类数据块之间的链接,创建所述第一类数据块的快照。
10.一种数据处理系统,其特征在于,所述系统包括数据处理装置和存储系统,所述数据处理装置具有第一接口,所述数据处理装置通过第一接口接收来自应用程序的数据操作请求;所述存储系统具有第二接口,所述第二接口与第一接口为相同类型的接口,所述存储系统通过第二接口与数据处理装置交互,其中:
所述数据处理装置用于接收应用程序的文件写操作请求;将所述文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存与所述保存的唯一标识不同的子数据块的数据;
所述存储系统用于接收来自数据处理装置的数据写操作请求,保存所述数据。
一种数据处理方法、装置和系统\n技术领域\n[0001] 本发明涉及数据处理技术领域,特别是涉及一种数据处理方法、装置和系统。\n背景技术\n[0002] 重复数据删除技术在本世纪初被提出后,迅速在各个存储企业中得到应用,成为存储技术的标志性功能。重复数据删除意指将相同的数据只存储一份以节省空间。重复数据删除可以有效地减少数据,降低存储成本。\n[0003] 现有的重复数据删除模块一般是集成在存储系统内部的,其过程一般是对数据库进行切片,计算每个切片的hash值(哈希值),并根据hash值生成逻辑地址,从逻辑地址映射为物理地址存储。这种方法适用于新开发的存储系统,但对于一些老存储系统则不适用,需要对原存储系统的架构进行大量修改才能使其支持重复数据删除功能。\n[0004] 目前,现有技术还存在一种方案,可以实现一般的文件系统增加重复数据删除的功能。这种方案通过增加一个额外的数据库来维护重复数据的记录。当一个文件被写入文件系统时,这时并不对文件进行任何操作,而是保存全部数据。当数据保存后另外有一个进程对文件系统进行扫描,如果发现文件在一段时间内没有被访问过,对这个文件执行重复数据删除操作。由于这种操作是在文件被保存之后进行的,因此称为后重删。在后重删执行时,重删进程首先把这个文件读取出来,按照一定规则切分成不等长大小的块,然后把每块数据按照普通文件的方式保存,同时在数据库中记录该文件被拆分保存的信息。然后在文件元数据中加一个标志位,表示这个文件已经被重删过,所以以后读取这个文件时,并不会像普通文件一样直接读取磁盘,而是通过数据库找到其分片文件所在,然后再读取数据。\n[0005] 在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:现有技术提供的方案只能支持后重删,并不能进行实时重删。在第一次存储时,文件系统需要保存全部数据,即便有重复的数据也会保存多份。在执行重删进程时,需要将文件读取出来才能执行重删操作。这种方法使得重复的数据执行了多次读写操作,占用了大量的系统资源,并导致大量存储空间被浪费,并不能有效的节省存储空间。\n发明内容\n[0006] 为解决上述技术问题,本发明实施例提供了一种数据处理方法和装置,可以方便地为一般的文件系统增加重复数据删除功能,所需的花销小,且支持实时重删功能,有效节省存储空间。\n[0007] 一方面,本发明实施例提供了一种数据处理方法,所述方法应用于数据处理装置,所述方法包括:\n[0008] 提供第一接口,通过所述第一接口接收来自应用程序的文件写操作请求;\n[0009] 将文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接;\n[0010] 如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0011] 另一方面,本发明实施例提供了一种数据处理装置,所述装置包括:\n[0012] 第一接口,用于接收来自应用程序的文件写操作请求;所述第一接口与第二接口为相同类型的接口,所述第二接口与存储系统相连;\n[0013] 元数据管理模块,用于存储文件的元数据以及文件分块信息;\n[0014] 重复数据删除模块,用于将通过第一接口接收的文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0015] 再一方面,本发明实施例还提供了一种数据处理系统,所述系统包括:\n[0016] 数据处理装置和存储系统,所述数据处理装置具有第一接口,所述数据处理装置通过第一接口接收来自应用程序的数据操作请求;所述存储系统具有第二接口,所述第二接口与第一接口为相同类型的接口,所述存储系统通过第二接口与数据处理装置交互,其中:\n[0017] 所述数据处理装置用于接收应用程序的文件写操作请求;将所述文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存与所述保存的唯一标识不同的子数据块的数据;\n[0018] 所述存储系统用于接收来自数据处理装置的数据写操作请求,保存所述数据。\n[0019] 本发明实施例能够达到的有益效果为:本发明实施例通过为应用程序提供一个通用的第一接口,接收应用程序的文件写操作请求,如果经过唯一标识比较,判断所述文件的子数据块存在重复数据,则通过数据处理装置进行重复数据删除处理;如果经过唯一标识比较,判断所述文件的子数据块的唯一标识与已有的唯一标识不同,则将子数据块的数据发送至存储系统进行存储。由于在文件进行第一次写操作时,即进行了重复数据删除处理,因此有效减少了重复数据,节省了存储空间。另一方面,本发明实施例为所有应用程序提供了一个通用的第一接口,所述第一接口与原有的存储系统中提供给应用程序的第二接口相同,使得普通的文件系统即存储系统的接口在不需要改动的情况下就能支持重复删除功能,通过较小的花销即实现了普通文件系统具备重复删除功能。\n附图说明\n[0020] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0021] 图1为本发明实施例提供的数据处理方法第一实施例流程图;\n[0022] 图2为本发明实施例重复数据处理流程示意图;\n[0023] 图3为本发明实施例提供的数据处理方法第二实施例流程图;\n[0024] 图4为本发明实施例数据组织方式示意图;\n[0025] 图5a-图5d为本发明实施例提供的数据处理方法第二实施例示意图;\n[0026] 图6为本发明提供的数据处理方法第三实施例流程图;\n[0027] 图7a-图7f为本发明提供的数据处理方法第三实施例示意图;\n[0028] 图8为本发明提供的数据处理方法第四实施例流程图;\n[0029] 图9为本发明实施例提供的数据处理系统示意图;\n[0030] 图10为本发明实施例提供的数据处理装置示意图。\n具体实施方式\n[0031] 本发明实施例提供了一种数据处理方法和装置,可以方便地为一般的文件系统增加重复数据删除功能,所需的花销小,且支持实时重删功能,有效节省存储空间。\n[0032] 为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。\n[0033] 参见图1,为本发明实施例提供的数据处理方法第一实施例流程图。所述方法包括:\n[0034] S101,提供第一接口,通过所述第一接口接收来自应用程序的文件写操作请求。\n[0035] 本发明实施例提供的方法应用于数据处理装置。所述数据处理装置与原有的存储系统相连。数据处理装置具有第一接口,存储系统具有第二接口,其中,所述第一接口与第二接口为相同类型的通用接口。\n[0036] 在原有的不支持重复数据删除功能的存储系统中,应用程序通过第二接口(例如POSIX接口)访问原有存储系统,原有存储系统即原有的存储装置或文件系统。\n[0037] 本发明实施例提供的方法应用于数据处理装置,所述数据处理装置具有第一接口,所述第一接口用于接收来自应用程序的操作请求。其中,所述数据处理装置的第一接口与原有的存储系统提供给应用程序的接口类型相同。对于应用程序来说,其看到的是一个能支持重复数据删除的装置;而对于原有的存储系统来说,仍是通过第二接口进行文件IO访问操作。具体的,第一接口和第二接口可以是通用的标准接口,例如POSIX接口。\n[0038] S102,将文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0039] 在本发明实施例中,子数据块的唯一标识可以是该子数据块的哈希值,或者是以其他算法计算获得的标识符。\n[0040] 参见图3,为本发明实施例重复数据处理流程示意图。\n[0041] 具体的,步骤S102通过以下步骤实现:\n[0042] S201,将文件的数据切分成至少一个子数据块。\n[0043] 具体到本发明实施例中,可以采用定长的或不定长的切分方式将文件的数据切分成一个或多个数据块。需要说明的是,当文件是空文件时,即不含有任何数据时,这时,保存文件的元数据即可,不需要进行数据切分操作。\n[0044] S202,获取各所述子数据块的哈希值,分别将其与已经保存的哈希值进行比较,判断是否存在相同的哈希值。如果相同,进入步骤S203;如果不同,进入步骤S204。\n[0045] 具体在本发明实施例中,当一个新文件创建时,首先要经过hash(哈希)计算,获取文件元数据的地址。下面以一个具体的实例进行说明,比如一个文件名为a.txt的文件创建后,需要经过hash计算,通过一种可能的算法,得到文件元数据的地址是c03b9d52f4\n052f6886f6d1a79701122d(元数据的地址值与具体hash算法有关,本发明对具体的hash算法不进行限定)。这个地址内记录的是数据块的地址,一个文件的元数据可以保存在一个文件中,也可以将多个文件的元数据保存在一个文件中或者保存在数据库中,本发明对元数据的存放形式不进行限定。在本发明实施例中,通过元数据管理模块记录文件的元数据信息,文件的元数据包括文件名、文件的大小、文件类型、创建、修改时间等。将文件的数据切分成一个或多个子数据块后,并分别计算每一个数据块的哈希值(hash),hash可以用于反映数据和数据存放地址之间的映射关系。具体的hash算法可以采用MD4、MD5或SHA-1算法,本发明对此不进行限定。每个子数据块的hash值记录在元数据信息中。例如,a.txt文件包含的数据可以被拆分成两个子数据块,两个子数据块的hash地址分别是\n659df9a166c3cca249ecfa481d074a9b和50f74ff709ed8b9547d21f130f7eefd2,那么这两个hash值就作为内容保存在c03b9d52f4052f6886f6d1a79701122d所指示的块中。而标识为659df9a166c3cca249ecfa481d074a9b和50f74ff709ed8b9547d21f130f7eefd2的数据块则分别保存实际的数据。在本发明实施例中,使用元数据管理模块存储文件的元数据信息以及文件分块信息,其中,元数据信息包括各子数据块的哈希值。\n[0046] 分别将每一个数据块的hash值与元数据管理模块已有的hash值进行比较。如果相同,进入步骤S203;如果不同,进入步骤S204。\n[0047] S203,建立与所述保存的哈希值相同的子数据块与所述保存的哈希值对应的数据之间的链接。\n[0048] 如果某个子数据块的hash值与元数据管理模块已经保存的hash值相同,则说明所述子数据块的数据已存在,所述子数据块的数据是重复的数据,这里不对所述子数据块的数据进行保存,而是直接建立所述子数据块与所述已经保存的哈希值对应的数据之间的链接。具体在本发明实施例中,可以采用指针的方式建立链接。具体的,可以将所述数据块的指针指向与所述已经保存的哈希值对应的数据。当然,也可以采用其他方式建立链接,本发明对此不做限定。同时,将所述数据的引用计数加1。在本发明实施例中,通过引用计数表示子数据块被上级数据块引用的次数。当数据的引用计数为零时,删除所述数据。\n[0049] S204,保存所述与所述保存的哈希值不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的哈希值不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0050] 如果某一个子数据块的hash值与已有的hash值不同,说明上述子数据块的数据不是重复数据,保存所述数据块的hash值至元数据管理模块中,并将hash作为所述数据块的逻辑地址;将所述数据块的逻辑地址转换为物理地址,根据所述物理地址将所述数据块的数据通过所述第二接口存储至存储系统中。\n[0051] 本发明提供的第一实施例中,通过为应用程序提供一个通用的第一接口,接收应用程序的文件写操作请求,如果经过哈希值比较,判断所述文件的子数据块存在重复数据,则通过数据处理装置进行重复数据删除处理;如果经过哈希值比较,判断所述文件的子数据块的哈希值与元数据管理模块中保存的已有的哈希值不同,则将子数据块的数据发送至存储系统进行存储。由于在文件进行第一次写操作时,即进行了重复数据删除处理,因此有效减少了重复数据,节省了存储空间。另一方面,本发明实施例为所有应用程序提供了一个通用的第一接口,所述第一接口与原有的存储系统中提供给应用程序的接口相同,使得普通的文件系统即存储系统接口在不需要改动的情况下就能支持重复删除功能,通过较小的花销即实现了普通文件系统具备重复删除功能。\n[0052] 参见图3,为本发明实施例提供的数据处理方法第二实施例流程图。\n[0053] 下面通过一个具体的示例对本发明提供的方法进行详细地介绍。\n[0054] S301,定义第一类数据块和第二类数据块。\n[0055] 首先我们将数据块划分为第一类数据块和第二类数据块,其中,第一类数据块又可以称为传统地址块,其地址与其内容无关,是按照传统方式直接分配的地址。在第一类数据块即传统地址块中存储有存储系统(文件系统)的地址信息以及第二类数据块的索引。\n其中,可以根据所述索引找到第二类数据块。在第一类数据块中,记录有存储系统(文件系统)的信息,从第一类数据块中能够找到其他元数据和数据块的索引。第二类数据块又可以称为内容地址块,其地址是由其内容的hash值决定的,因此内容不同的数据块,hash值一定不同,地址也就不同。第二类数据块一般包括元数据块和子数据块。\n[0056] 本发明提供的装置可以看作一个文件系统,系统由这些“传统地址块”和“内容地址块”一起组成。假设在一个文件系统中,在一个文件根目录下分别有子目录1和子目录2;\n其中,子目录1下存储有两个文件,分别是文件1和文件2。其中,文件1为空文件,文件2有1k的数据。子目录2为空目录。参见图4,文件根目录代表的数据块为第一类数据块,从这个数据块中可以获取其他元数据块和子数据块的索引。元数据块1、元数据块2、元数据块3和数据块(Data Block)为第二类数据块。对于上文描述的文件系统来说,子目录1对应的元数据存储在元数据块1中,子目录2对应的元数据存储在元数据块2中。由于子目录1中存储有两个文件,这时我们通过hash计算分别得到子目录1中的文件1和文件2的地址,将其保存在元数据块1中。如图4所示,元数据块1中保存有两个地址信息,其中地址1代表文件2的地址,地址2代表文件1的地址。当然,这仅是一种示例,也可以用地址\n1代表文件1的地址,地址2代表文件2的地址。通过这两个地址信息可以分别找到文件1和文件2以及文件1和文件2的元数据信息。这时,我们再通过hash值计算获取文件2中的数据对应的地址,并将其保存在文件2对应的元数据块3中。参见图3,由于文件2中有\n1K的数据,因此地址1指向的元数据块3中保存有文件2的数据对应的地址即地址3,而地址3指向文件2的数据。由于文件1没有数据,所以地址2仅指向元数据块3,元数据块3并没有与具体的数据块有链接。从上图看出,在本发明实施例提供的方法中,一般的元数据和数据是对等的,他们都是通过hash值计算地址然后挂在文件系统树之上,均属于第二类数据块。在每一个第二类数据块上面都有一个引用计数,用于标识这个数据块被多少个上级数据块引用。\n[0057] S302,接收应用程序创建第一文件的请求。\n[0058] S303,保存第一文件的元数据信息。\n[0059] 参见图5a-5d,为本发明第二实施例数据处理方法示意图。\n[0060] FR(Filesystem Root)代表文件系统入口,为第一类数据块。当接收第一文件的创建请求后,即计算第一文件的hash值,并将所述hash值作为第一文件元数据的地址。具体元数据的内容可以包括文件名、文件大小、文件类型、文件创建时间等信息。具体到图5a中,FR代表文件系统入口,MB1代表第一文件的元数据块,块上的数字代表引用计数,MB1的引用计数为1,表明其被上级数据块引用1次。文件系统入口FR与元数据块MB1之间建立有链接。\n[0061] S304,将第一文件切分成至少一个子数据块,获取所述子数据块的哈希值,分别将其与已经保存的哈希值进行比较;如果相同,建立所述子数据块与所述已经保存的哈希值对应的数据之间的链接;如果不同,保存所述子数据块的数据至存储系统。\n[0062] 假设第一文件被切分成一个子数据块,经过比较,所述子数据块的hash值与已经保存的hash值不同,保存第一文件子数据块的hash值以及子数据块的数据,如图5b所示,创建数据块DB1,用以保存子数据块的数据。同时建立元数据块与子数据块之间的链接,即MB1与DB1之间的链接。这样,从元数据块MB1即可找到第一文件子数据块的数据。\n[0063] S305,接收第二文件的创建请求。\n[0064] 其中,第二文件的文件名与第一文件不同,第二文件的内容与第一文件相同。\n[0065] S306,保存第二文件的元数据信息。\n[0066] 保存第二文件的元数据信息。具体到图5c中,MB2代表第二文件的元数据块,块上的数字代表引用计数。\n[0067] S307,将第二文件切分成至少一个子数据块,获取所述子数据块的哈希值,分别将其与已经保存的哈希值进行比较;如果相同,建立所述子数据块与所述已经保存的哈希值对应的数据之间的链接;如果不同,保存所述子数据块的数据至存储系统。\n[0068] 假设将第二文件切分成一个子数据块,获取所述子数据块的hash值,并将其在FR的目录中进行索引查找,发现已经有相同的hash值,即建立所述子数据块与所述相同的hash值对应的数据的链接。如图5d所示,创建MB2,用以存储第二文件的元数据信息,由于第二文件的数据与第一文件的数据内容相同,通过hash计算,发现已有相同的hash值,因此不对第二文件的数据进行存储,仅建立MB2与DB1的链接,同时将DB1的引用计数加1,现在DB1的引用计数为2。\n[0069] 参见图6,为本发明提供的数据处理方法第三实施例流程示意图。\n[0070] 快照作为存储系统的一个特性,其重要性也越来越高,快照的实现方法很多,但一般都要解决快速和数据一致的问题,甚至和其他功能存在冲突,现有技术的方法不能够同时支持重删和快照功能。本发明实施例提供的方法可以支持快照、重删功能同时使用,而且通过很简单的方式真正做到快速、一致。在本发明实施例中,对文件数据进行修改、删除、创建、增加、创建操作,快照功能仍能适用。下面以对文件数据进行删除、增加操作为例进行说明快照功能与重删功能可以同时适用。\n[0071] S601,定义第一类数据块和第二类数据块。\n[0072] S602,复制第一类数据块以及所述第一类数据块与第二类数据块之间的链接,创建第一类数据块的快照。\n[0073] 参见图7a至图7f,为本发明第三实施例示意图。\n[0074] 下面以图7a所示的文件系统为例,对快照实现方法进行说明。将第一类数据块(如图7a所示的FR)复制一份,起名为copy作为快照,并复制第一类数据块与下一级子数据块的链接。如图7b所示,copy为FR的快照,且被copy引用的数据块的引用计数加1,MB1和MB2的引用计数都变为2。\n[0075] S603,接收应用程序的文件删除操作请求。\n[0076] 下面以一个文件删除操作来具体说明上述快照是成功的。这仅是本发明方法的一个具体示例,任何对于文件的修改或删除操作,快照仍是适用的。\n[0077] S604,根据保存的所述文件的元数据信息,获取所述文件的分块信息,并根据所述分块信息断开所述分块与第一类数据块的链接。\n[0078] 具体的,假设要删除的文件为第二文件,根据第二文件的元数据信息,获取其分块数据为MB2所指示的数据块。这时,删除图7c虚线所示的第一类数据块(FR)与子数据块MB2之间的链接,删除结果如图7d所示。这时,从快照copy处仍能访问到第二文件,但第二文件的元数据块MB2的引用计数减1。这时并不删除第二文件对应的元数据块MB2以及数据块DB1,因为他们还被其他数据块引用。当数据块的引用计数为零时,删除所述数据块。\n[0079] S605,接收创建第三文件的请求。\n[0080] 保存第三文件的元数据信息。如图7e所示,增加了一个元数据块MB3,引用计数为\n1。\n[0081] S606,将第三文件切分成至少一个子数据块,获取所述子数据块的哈希值,分别将其与已经保存的哈希值进行比较;如果相同,建立所述子数据块与所述已经保存的哈希值对应的数据之间的链接;如果不同,保存所述子数据块的数据至存储系统。\n[0082] 在本实施例中,假设将第三文件切分成两个子数据块,分别获取两个子数据块的hash值。将第一个数据块的hash值与已有的hash值比较,发现已经存在相同的hash值,建立这个子数据块与hash值对应的数据的链接。如图7f所示,第一个数据块的内容与前面两个数据块的内容相同,建立MB3与DB1的链接,DB1的引用计数加1。第二个数据块的hash值与已经存在的hash值不同,这时,新建一个数据块DB2,并将数据块的数据保存。\n[0083] 从上述实施例可以看出,本发明提供的方法可以同时支持快照与重删功能,且实现方法简单。\n[0084] 现有技术提供的方法中,依靠数据库记录元数据,因此当重删后的文件再次发生修改时,修改部分不能再支持重删。文件经过一次后重删之后,变成了若干文件分片,而这些文件分片具体地址记录于数据库中。这时,每个文件分片可能是很好地满足重删关系的,但是当修改其中某个文件分片的时候,该方案并不会重新给这个文件分片分配新的地址或重新分片,这样在重删文件进行修改后,整个系统重删效果会下降。为了解决这个问题,本发明实施例提供的方法在文件被修改后,仍然对整个文件进行切分,进行重复数据删除操作,因此重删效果优于现有技术的方案。\n[0085] 参见图8,为本发明提供的数据处理方法第四实施例示意图。\n[0086] S801,接收应用程序的文件修改操作请求。\n[0087] S802,根据保存的所述文件的元数据信息,访问存储系统,获取所述文件。\n[0088] 根据文件首次创建时保存的元数据信息,访问存储系统,获取所述文件。\n[0089] S803,接收应用程序的文件写操作请求。\n[0090] 应用程序对所述文件进行修改后,接收写入修改后的文件的请求。\n[0091] S804,对修改后的文件的数据切分成至少一个子数据块,获取所述子数据块的哈希值,分别将其与已经保存的哈希值进行比较;如果相同,建立所述子数据块与所述已经保存的哈希值对应的数据之间的链接;如果不同,保存所述子数据块的数据至存储系统。\n[0092] 在本发明提供的实施例中,文件被修改后,仍然对整个文件进行切分,如果修改后的文件的一个子数据块是重复数据,则不保存所述子数据块;如果修改后的文件的一个子数据块的hash值与已有的hash值不同,则说明其是新的数据,保存所述子数据块的数据。\n[0093] 在这一实施例中,文件被修改后,仍然对其重新进行切分,计算、比较hash值,以判断是否存在重复数据,因此获取了较好的重删效果。\n[0094] 与本发明提供的数据处理方法实施例相对应,本发明还提供了数据处理系统、数据处理装置具体实施例。\n[0095] 参见图9,为本发明实施例提供的数据处理系统示意图。\n[0096] 一种数据处理系统,所述系统包括数据处理装置902和存储系统903,所述数据处理装置902具有第一接口,所述数据处理装置902通过第一接口接收来自应用程序901的数据操作请求;所述存储系统903具有第二接口,所述第二接口与第一接口为相同类型的通用接口,所述存储系统903通过第二接口与数据处理装置902交互,其中,[0097] 所述数据处理装置902用于接收应用程序的文件写操作请求;将所述文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0098] 在本发明实施例中,唯一标识可以是哈希值或者是其他标识符。\n[0099] 所述存储系统903用于接收来自数据处理装置的数据写操作请求,保存所述数据。\n[0100] 在本发明提供的实施例中,数据处理装置具有一个通用的第一接口,所述第一接口与存储系统的第二接口类型相同。存储系统可以是文件系统或存储装置,具有通用的第二接口,具体可以为POSIX接口。数据处理装置具有第一接口,具体可以为POSIX接口。数据处理装置可以独立于存储系统而存在。存储系统可以为通用的存储装置或文件系统。\n[0101] 参见图10,为本发明实施例数据处理装置示意图。所述装置包括:\n[0102] 第一接口,用于接收来自应用程序的写操作请求;所述第一接口与第二接口为相同类型的接口,所述第二接口与存储系统相关联;\n[0103] 元数据管理模块,用于存储文件的元数据以及文件分块信息;\n[0104] 重复数据删除模块,用于将通过第一接口接收的文件的数据切分成至少一个子数据块,获取各所述子数据块的唯一标识,分别将其与元数据管理模块中保存的唯一标识进行比较;如果相同,建立与所述保存的唯一标识相同的子数据块与所述元数据管理模块中保存的唯一标识对应的数据之间的链接;如果不同,则保存所述与所述保存的唯一标识不同的子数据块的唯一标识,并且通过第二接口向存储系统发送数据写操作请求,所述数据写操作请求包括所述与所述保存的唯一标识不同的子数据块的数据,使得所述存储系统保存所述子数据块的数据。\n[0105] 在本发明实施例中,唯一标识可以是哈希值或者其他标识符。\n[0106] 所述重复数据删除模块包括:\n[0107] 切分模块,用于将所述文件的数据切分成至少一个子数据块;\n[0108] 逻辑地址分配模块,用于获取所述子数据块的唯一标识,将所述子数据块的唯一标识作为子数据块的逻辑地址将其与元数据管理模块中保存的唯一标识进行比较;\n[0109] 数据管理模块,用于当子数据块的唯一标识与元数据管理模块中保存的唯一标识不同时,将所述子数据块的逻辑地址转换为物理地址;通过所述第二接口向存储系统发送数据写操作请求,使得所述存储系统根据所述物理地址将所述子数据块的数据通过所述第二接口存储至所述存储系统中。\n[0110] 所述元数据管理模块还用于当子数据块的唯一标识与已经保存的唯一标识相同时,建立所述子数据块与所述已经保存的唯一标识对应的数据之间的链接。\n[0111] 所述装置还包括:\n[0112] 数据字典,用于定义第一类数据块和第二类数据块;其中,所述第一类数据块用于保存存储系统的地址信息以及第二类数据块的索引;所述第二类数据块的地址与其内容的哈希值相关联,所述第二类数据块包括元数据块和子数据块。\n[0113] 所述装置还包括:\n[0114] 引用计数模块,用于记录所述第二类数据块的引用次数,当所述引用计数为零时,删除所述第二类数据块。\n[0115] 所述装置还包括:\n[0116] 快照模块,用于复制所述第一类数据块以及所述第一类数据块与第二类数据块之间的链接,创建所述第一类数据块的快照。\n[0117] 具体的,所述第一接口还用于接收应用程序的文件删除操作请求;\n[0118] 所述装置还包括:\n[0119] 删除模块,用于根据保存的所述文件的元数据信息,获取所述文件的分块信息,并根据所述分块信息断开所述分块与第一类数据块的链接;\n[0120] 所述引用计数模块还用于根据删除模块的请求,将与所述分块对应的数据的引用计数减1。\n[0121] 具体的,所述第一接口还用于接收应用程序的文件读操作请求;\n[0122] 所述装置还包括:\n[0123] 读取模块,用于根据保存的所述文件的元数据信息,访问存储系统,获取所述文件,对所述文件执行读操作。\n[0124] 所述装置还可以包括第三接口,所述第三接口用于与第二接口进行输入、输出访问操作。\n[0125] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0126] 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。\n[0127] 以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
法律信息
- 2022-09-13
专利权的转移
登记生效日: 2022.08.31
专利权人由华为数字技术(成都)有限公司变更为华为技术有限公司
地址由611731 四川省成都市高新区西部园区清水河片区变更为518129 广东省深圳市龙岗区坂田华为总部办公楼
- 2014-09-17
- 2013-01-23
著录事项变更
申请人由成都市华为赛门铁克科技有限公司变更为华为数字技术(成都)有限公司
地址由611731 四川省成都市高新区西部园区清水河片区变更为611731 四川省成都市高新区西部园区清水河片区
- 2012-10-03
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201210034149.2
申请日: 2012.02.15
- 2012-08-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2009-08-12
|
2009-03-04
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |