CN101526959B - 一种数据存储方法和装置 - Google Patents

一种数据存储方法和装置 Download PDF

Info

Publication number
CN101526959B
CN101526959B CN2009100819267A CN200910081926A CN101526959B CN 101526959 B CN101526959 B CN 101526959B CN 2009100819267 A CN2009100819267 A CN 2009100819267A CN 200910081926 A CN200910081926 A CN 200910081926A CN 101526959 B CN101526959 B CN 101526959B
Authority
CN
China
Prior art keywords
data
data block
storage device
identification information
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009100819267A
Other languages
English (en)
Other versions
CN101526959A (zh
Inventor
夏飞
余剑声
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2009100819267A priority Critical patent/CN101526959B/zh
Publication of CN101526959A publication Critical patent/CN101526959A/zh
Application granted granted Critical
Publication of CN101526959B publication Critical patent/CN101526959B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据存储方法和装置,其中,该方法包括:A、将接收的数据划分成一个以上的大小为X字节的数据块,其中,X为正整数;B、分别为划分的各个数据块生成对应的标识信息;C、将步骤B中与已存储在存储系统的数据块对应的标识信息不同的标识信息所对应的数据块确定为需要存储的数据块。本发明并非直接将接收到的数据存储到存储系统中,而是先从该接收的数据中确定出需要存储的数据,这样,大大提高了存储空间的利用率。

Description

一种数据存储方法和装置 
技术领域
本发明涉及存储技术领域,特别涉及一种数据存储方法和装置。
背景技术
目前,随着高性能存储技术的发展,出现了存储区域网络(SAN:StorageArea Network)共享存储系统,其中,SAN共享存储系统通过SAN共享软件统一管理SAN中的存储设备。
参见图1,图1为现有技术中SAN共享存储系统的框架图。如图1所示,SAN共享存储系统包括:应用服务器、SAN共享管理软件客户端、SAN共享管理服务器和存储系统(其中,该存储系统包含一个以上的存储设备),其中,SAN共享管理软件客户端连接在应用服务器上;应用服务器、SAN共享管理服务器和存储系统之间通过SAN共享网络进行通信。基于图1所示的SAN共享存储系统框架图,现有技术中数据的存储流程具体可参见图2所示,包括如下:
步骤201,应用服务器接收SAN共享管理软件客户端发送的需要存储的数据文件。
这里,数据文件中携带了其包含的所有的数据和该数据的大小。
步骤202,应用服务器直接将该接收的数据文件发送给SAN共享管理服务器。
步骤203,SAN共享管理服务器根据数据文件携带的数据大小获取相应的存储空间,将该存储空间发送给应用服务器。
比如,步骤202中应用服务器携带的数据大小为500MB,则SAN共享管理服务器从存储系统中找出能够容纳该500MB大小的存储空间,之后,将该存储空间发送给应用服务器。其中,SAN共享管理服务器获取相应的存储空间的操作为本领域常用的技术手段,这里不再赘述
步骤204,应用服务器将数据文件包含的所有数据划分成多个数据块,将各个数据块存储到上述存储空间中。
需要说明的是,在步骤204执行存储操作时,SAN共享管理服务器可相应同时创建一个该数据文件对应的文件表。其中,该文件表中包括:数据文件的名称、该数据文件所属的应用服务器的名称、存储该数据文件的存储设备的名称、该数据文件包含的所有数据块以及各个数据块存储在存储系统中的逻辑存储地址。
综上所述,上述存储操作时,直接将应用服务器接收的数据文件包含的所有数据确定为需要存储的数据。但是,由于应用服务器在存储数据时需要将数据分成一个以上的数据块,这样,采用现有提供的存储方法,就会使存储系统中的不同存储设备上存储了相同的数据块。比如,假如应用服务器在步骤201接收的数据文件由A、B、C、D和E共5个数据块组成,则在应用服务器存储步骤201接收的数据文件之前,根据SAN共享管理服务器维护的文件表可以知道存储系统中已经有某个存储设备比如存储设备1已存储了数据文件I,其中,该数据文件I由F、C、D、E和G五个数据块组成。而采用现有提供的存储方法,应用服务器仍然需要将A、B、C、D和E数据块存储到对应的存储设备比如存储设备2中,这样,就会使存储设备1和存储设备2存储了相同的数据块,即数据块C、数据块D和数据块E,这样,就会导致存储空间资源的浪费,大大降低了存储空间的利用率。
发明内容
本发明公开了一种数据存储方法和装置,以便于提高存储空间的利用率。
本发明提供的一种数据存储方法,包括:
A、将接收的数据划分成一个以上大小为X字节的数据块,其中,X为正整数;
B、分别为划分的各个数据块生成对应的标识信息;
C、针对每一数据块,判断该数据块对应的标识信息是否在预设的数据表中,如果是,执行步骤D,否则,确定该数据块为需要存储的数据块;其中,所述数据表包含存储系统中各个存储设备已存储的数据块所对应的标识信息和该各个存储设备的标识之间的对应关系;
D,从存储系统中获取用于存储该数据块的存储设备标识,判断该获取的存储设备标识是否与所述数据表中该标识信息对应的存储设备标识相同,如果是,确定该数据块为不需要存储的数据块,如果否,确定该数据块为需要存储的数据块。
本发明提供的一种数据存储装置,划分单元、标识生成单元、确定单元和获取单元;其中,
所述划分单元用于将接收的数据划分成一个以上大小为X字节的数据块,其中,X为正整数;
所述标识生成单元用于分别为所述划分单元划分的各个数据块生成对应的标识信息;
所述确定单元包含:判断子单元和确定子单元;
所述判断子单元用于针对每一数据块,判断该数据块对应的标识信息是否在预设的数据表中;其中,所述数据表包含存储系统中各个存储设备已存储的数据块所对应的标识信息和该各个存储设备的标识之间的对应关系;以及在接收到所述获取单元发送的存储设备标识后,判断该获取的存储设备标识是否与所述数据表中该标识信息对应的存储设备标识相同;
所述获取单元用于在所述判断子单元判断出标识信息在预设的数据表中后,从存储系统中获取用于存储该数据块的存储设备标识,并将获取的存储设备标识发送给所述判断子单元;
所述确定子单元用于在所述判断子单元判断出该获取的存储设备标识与所述数据表中该标识信息对应的存储设备标识相同时,确定该数据块为不需要存储的数据块,在所述判断子单元判断出标识信息不在预设的数据表中,或者判断出该获取的存储设备标识与所述数据表中该标识信息对应的存储设备标识不相同时,确定该数据块为需要存储的数据块。
由上可见,本发明提供的一种数据存储方法和装置,相比于现有技术,并非是将应用服务器接收到的所有数据直接存储到存储系统中;而是将接收的数据划分成一个以上的大小为X字节的数据决,其中,X为正整数;分别为划分的各个数据块生成对应的标识信息;针对生成的每一个标识信息,判断该标识信息是否与已存储在存储系统的数据块所对应的标识信息相同,如果否,将该标识信息所对应的数据块确定为需要存储的数据块。比如,将接收的数据划分为A、B、C、D和E数据块;而存储系统中某个存储设备比如存储设备1已存储了数据文件I,其中,该数据文件I由F、C、D、E和G五个数据块组成。其中,接收的数据中包含的数据块C、数据块D和数据块E分别和已存储的数据文件I包含的数据块C、数据块D和数据块E的标识信息相同,这样,通过本发明,判断出数据块C、数据块D和数据块E为不需要存储的数据块,而数据块A和数据块B确定为需要存储的数据块,如此,可仅将数据块A和数据块B进行存储,而不存储数据块C、数据块D和数据块E到存储系统中,这大大提高了存储空间的利用率。
附图说明
图1为现有技术中SAN共享存储系统的框架图;
图2为现有技术提供的数据存储流程图;
图3为本发明实施例提供的基本流程图;
图4为本发明实施例提供的数据存储的详细流程图;
图5为本发明实施例提供的确定需要存储的数据块的流程图;
图6为本发明实施例提供的确定需要存储的数据块的另一流程图;
图7为本发明实施例提供的数据存储装置结构图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
参见图3,图3为本发明实施例提供的基本流程图,如图3所示,该流程可包括以下步骤:
步骤301,将接收的数据划分成一个以上的大小为X字节的数据块。
这里,接收的数据具体可为应用服务器接收的SAN共享管理软件客户端发送的数据。其中,上述X为正整数,其取值与存储系统存储的数据块的大小有关。
步骤302,分别为划分的各个数据块生成对应的标识信息。
这里,标识信息可为多种形式,比如可为数据块索引,或者为数据块名称等,本发明实施例并不具体限定。优选地,若上述标识信息为数据块索引,本发明实施例可按照预设算法如MD5算法等来生成各个数据块分别对应的数据块索引。
步骤303,将步骤302中与已存储在存储系统的数据块对应的标识信息不同的标识信息所对应的数据块确定为需要存储的数据块。
这里,步骤303具体为:针对步骤302生成的每一个标识信息,判断该标识信息是否与已存储在存储系统的数据块所对应的标识信息相同,如果否,将该标识信息对应的数据块确定为需要存储的数据块。优选地,若上述标识信息为数据块索引,本步骤303具体可为:针对步骤302生成的每一个 数据块索引,判断该数据块索引是否与已存储在存储系统的数据块所对应的数据块索引相同,如果否,确定该数据块索引对应的数据块未存储在存储系统中,如此,即可将该数据块索引对应的数据块确定为需要存储的数据块。这里,之所以通过比较当前的数据块索引和已存储在存储系统的数据块对应的数据块索引来确定当前需要存储的数据块,主要是因为数据块索引是将数据块按照预设算法如MD5算法生成的,其与数据块具有一一对应关系,如此,即可通过比较当前的数据块索引和已存储在存储系统的数据块对应的数据块索引来确定当前需要存储的数据块。
需要说明的是,执行上述步骤301和步骤303的主体可以是SAN共享管理服务器或者为其他能够确定需要存储的数据块的功能实体,本发明实施例并不具体限定。
如此,实现了本发明实施例提供的数据存储的基本流程图。
为使本发明实施例更加清楚,下面结合具体实施例对上述方法进行详述。
参见图4,图4为本发明实施例提供的数据存储的详细流程图。本实施例中,以图1所示的SAN共享存储系统框架图为例,假如应用服务器当前接收了SAN共享管理软件客户端发送的数据,优选地,该数据可以数据文件的形式发送。本实施例中可将该数据文件简称为数据文件II,则如图4所示,该流程可包括以下步骤:
步骤401,SAN共享管理服务器接收应用服务器发送的数据文件II。
这里,数据文件II中携带了其包含的数据和该数据的大小。
步骤402,将接收的数据划分成一个以上的大小为X字节的数据块。
这里,划分的数据块的大小一般与存储系统中各个存储设备存储的数据块的大小对应。假如步骤402划分的数据块分别为F、C、D、E和G数据块。其中,该划分的数据块可以相同,也可以不相同,本发明实施例并不具体限定。
步骤403,为划分的每一个数据块生成数据块索引。
这里,步骤403具体可利用预设算法如MD5算法等来生成每一个数据块对应的数据块索引。假如步骤402划分的数据块分别为F、C、D、E和G数据块,则本步骤为F、C、D、E和G数据块生成数据块索引,具体分别对应为:Index-F、Index-C、Index-D、Index-E和Index-G。
当然,如果步骤402中划分的数据块中有相同的数据块,比如,假如步骤402划分的数据块分别为F、C、D、E和F数据块,为了保证后续查询该数据文件时能够准确获知该数据文件包含的数据信息,则也执行步骤403。
优选地,为便于后续查询数据文件所包含的数据块信息,本实施例可将数据文件的名称、该数据文件包含的数据块所对应的数据块索引的对应关系存储在预设的文件表中。比如,假如存储系统已存储了数据文件I,其中,该数据文件I包含了A至E共5个数据块,A至E数据块分别对应的数据块索引为Index-A、Index-B、Index-C、Index-D和Index-E;则将数据文件II和其包含的数据块所对应的数据块索引存储在上述预设的文件表中,该文件表的结构如表1所示:
表1
  数据文件名称    数据块索引
  数据文件I Index-A;Index-B;Index-C; Index-D;Index-E
  数据文件II Index-F;Index-C;Index-D; Index-E;Index-G
优选地,上述文件表中也可包含数据文件所来自的应用服务器或其他信息,本发明实施例并不特别限定。
步骤404,判断存储系统的状态是否为繁忙,如果是,执行步骤405,否则,执行步骤406。
这里,判断存储系统的状态是否繁忙的方式可有多种。比如判断存储系统在预设时间内的存取(I/O)请求个数是否大于等于预设值,如果是,确 定该存储系统当前的状态为繁忙,否则,确定该存储系统当前的状态为空闲;或者判断存储系统在预设时间内的存取响应时间是否大于等于预设时间,如果是,确定该存储系统当前的状态为繁忙,否则,确定该存储系统当前的状态为空闲等。本发明实施例并不具体限定。
优选地,本发明实施例中,由于数据文件II中携带了数据大小,因此,步骤404可进一步包括:判断数据文件II携带的数据大小是否超过预设值,当判断结果为是时,执行上述判断存储系统的状态是否为繁忙的操作。需要说明的是,判断数据文件II携带的数据大小是否超过预设值与判断存储系统的状态是否为繁忙的操作并未有固定的时间先后顺序,比如,在上述判断出存储系统的状态为繁忙时,步骤404还可进一步包括:判断数据文件II携带的数据大小是否超过预设值,当判断结果为是时,执行步骤405;否则,执行步骤406。其中,判断数据文件II携带的数据大小是否超过预设值主要是为了确定当前要存储的数据量是否超过应用服务器的承受能力。
步骤405,将步骤402划分的所有数据块确定为需要存储的数据。结束流程。
步骤406,将步骤403生成的与已存储在存储系统的数据块对应的数据块索引不同的数据块索引所对应的数据块确定为需要存储的数据块。结束流程。
这里,步骤406中确定出需要存储的数据块的操作具体可参见图5所示的流程。
参见图5,图5为本发明实施例提供的确定需要存储的数据块的流程图。这里,存储系统都是以数据块为单位进行数据存储的,其中,该数据块的大小可根据实际情况设定。并且,需要说明的是,存储系统可包含一个以上的存储设备,其中,每个存储设备存储的数据块的标识信息存储在预设的数据表中,本实施例中数据块的标识信息可为数据块索引。这里,预设的数据表可包含已存储在存储系统中的数据块的数据块索引和存储该数据块的存储设备的标识之间的对应关系。优选地,预设的数据表还可进一步包括:已存 储在存储系统中的数据块对应的逻辑存储地址。本发明实施例中以预设的数据表可包含已存储在存储系统中的数据块的数据块索引、该数据块对应的逻辑存储地址和存储该数据块的存储设备的标识三者之间的对应关系为例。比如,假如存储系统中只有存储设备1存储了数据文件I,其中,数据文件I包含A至E共5个数据块,该5个数据块的数据块索引分别为:Index-A、Index-B、Index-C、Index-D和Index-E;对应的逻辑存储地址分别为:Logicaladdress-A、Logical address-B、Logical address-C、Logical address-D和Logical address-E;则预设的数据表如表2所示:
表2
    数据块索引     存储设备标识    逻辑存储地址
    Index-A     存储设备1    Logical address-A
    Index-B     存储设备1    Logical address-B
    Index-C     存储设备1    Logical address-C
    Index-D     存储设备1    Logical address-D
    Index-E     存储设备1    Logical address-E
如图5所示,确定需要存储的数据块的流程可包括以下步骤:
步骤501,针对步骤403生成的每一个数据块索引,判断该数据块索引是否在预设的数据表中,如果是,则执行步骤502;否则,执行步骤503。
这里,比如针对Index-F,判断该Index-F是否在预设的数据表中,假如表2为预设的数据表,则从表2中可以看出,Index-F不在预设的数据表中,则执行步骤503。
假如预设的数据表如表2所示,则经过上述步骤,可以得到Index-C、Index-D、Index-E在预设的数据表中;而Index-F和Index-G不在预设的数据表中。
需要说明的是,若步骤403中生成的数据块索引中有相同的数据块索 引,比如,步骤403中生成的数据块索引分别为Index-F、Index-C、Index-D、Index-E和Index-F,可以看出,存在两个相同的Index-F;为节省系统资源,可针对其中一个Index-F,执行步骤501中的判断该数据块索引是否在预设的数据表中的操作;而直接将另一个Index-F对应的数据块,即数据块F确定为不需要存储的数据块。而对其他的各个不同的数据块索引,则直接执行上述步骤501。当然,上述只是一种举例,并不限定本发明实施例。
步骤502,确定该数据块索引对应的数据块为不需要存储的数据块。结束流程。
这里,假如步骤501中得到Index-C、Index-D、Index-E在预设的数据表中;则本步骤可确定Index-C、Index-D、Index-E分别对应的数据块,即数据块C、数据块D和数据块E为不需要存储的数据块。
步骤503,确定该数据块索引对应的数据块为需要存储的数据块。
这里,假如步骤501得到Index-F和Index-G不在预设的数据表中,则本步骤可确定Index-F和Index-G分别对应的数据块,即数据块F和数据块G为需要存储的数据块。
步骤504,在存储系统中为步骤503中的数据块获取对应的逻辑存储地址和用于存储该数据块的存储设备的标识。
这里,为数据块获取逻辑存储地址和用于存储该数据块的存储设备的标识的操作与现有技术类似,本发明实施例不再赘述。其中,存储设备的标识一般为存储设备的名称。
这里,若上述步骤503中确定出数据块F和数据块G为需要存储的数据块,则本步骤中,需要分别为数据块F和数据块G获取对应的逻辑存储地址和用于存储该数据块的存储设备的标识,这里,假如存储数据块F和数据块G的存储设备的标识都为存储设备2;分别对应的该逻辑存储地址为Logical address-F和Logical address-G。
步骤505,将上述确定出的需要存储的数据块的标识信息、该数据块对应的逻辑存储地址和用于存储该数据块的存储设备的标识三者之间的对应 关系添加到上述预设的数据表中。
步骤505的操作实质上为本发明实施例提供的更新预设的数据表的操作。
这里,若步骤504获取的存储数据块F和数据块G的存储设备的名称为存储设备2;数据块F和数据块G分别对应的逻辑存储地址为Logicaladdress-F和Logical address-G;则经过本步骤505后,表2可更新为表3,具体如下所示:
表3
    数据块索引     存储设备标识    逻辑存储地址
    Index-A     存储设备1    Logical address-A
    Index-B     存储设备1    Logical address-B
    Index-C     存储设备1    Logical address-C
    Index-D     存储设备1    Logical address-D
    Index-E     存储设备1    Logical address-E
    Index-F     存储设备2    Logical address-F
    Index-G     存储设备2    Logical address-G
这里,步骤504至步骤505主要是为了方便后续数据存储时从接收的数据中确定需要存储的数据的操作。
需要说明的是,为了增强数据的冗余,本实施例中,若步骤501判断出数据块索引在预设的数据表中后,则在步骤502执行确定该数据块索引对应的数据块为不需要存储的数据之前,可进一步包括:获取存储系统中用于存储该数据块索引对应的数据块的存储设备的标识;判断该获取的存储设备的标识是否与预设的数据表中该数据块索引对应的存储设备的标识相同,如果否,则确定该数据块为需要存储的数据块;如果是,则继续步骤502。如此, 预设的数据表中可存储多个对应不同存储设备的标识的相同数据块索引。
比如,在步骤501确定出数据块D对应的数据块索引Index-D已出现在预设的数据表中;则需要获取用于存储Index-D对应的数据块D的存储设备的标识;假如该存储设备的标识为存储设备2,则判断确定出的存储设备的标识与预设的数据表中Index-D对应的存储设备标识是否相同,如果预设的数据表中Index-D对应的存储设备标识为存储设备1,则确定出两者不相同,如此,仍然确定该数据块D为需要存储的数据块。如此,预设的数据表中就会有多个对应不同存储设备标识的相同数据块索引,相应地,存储系统中的不同存储设备就会存储相同的数据块,为节省资源,优选地,本实施例中可在上述判断出获取的用于存储数据块索引对应的数据块的存储设备的标识与预设的数据表中该数据块索引对应的存储设备标识不相同后,并在确定该数据块索引对应的数据块为需要存储的数据块之前,还可执行判断该数据块索引在预设的数据表中出现的次数是否为预设次(其中,该预设次可根据存储系统的资源大小或其他实际情况进行设置),如果是,则确定数据块索引对应的数据块为不需要存储的数据块;否则,继续执行用于确定数据块索引对应的数据块为需要存储的数据块的操作。当然,上述只是一种举例,并不限定本发明。
本发明实施例中,上述步骤405将接收的数据所包含的所有数据块确定为需要存储的数据的操作可进一步包括如图6所示的流程。
参见图6,图6为本发明实施例提供的确定需要存储的数据块的另一流程图。如图6所示,该流程可包括以下步骤:
步骤601:针对步骤402划分的每一个数据块,在存储系统中为该数据块获取对应的逻辑存储地址和用于存储该数据块的存储设备的标识。
步骤602,将各个数据块的标识信息、各个数据块对应的逻辑存储地址和用于存储各个数据块的存储设备的标识的对应关系存储在预设的数据表中。
需要说明的是,上述步骤601至步骤602的执行主体一般是SAN共享 管理服务器;而实际执行数据存储的主体是应用服务器,因此,本实施例中,步骤602可进一步包括:将确定出的需要存储的数据的信息和该数据对应的逻辑存储地址发送给应用服务器。这里,应用服务器为上述步骤401中发送数据文件的服务器。
如此,应用服务器根据接收的需要存储的数据的信息和逻辑存储地址即可实现将其接收的数据存储到存储系统中。
步骤603,当完成上述存储操作后,若存储系统的状态由繁忙转为空闲,则对存储系统已存储数据块中相同的M个数据块,在该M个数据块中选取预设值P个数据块,删除剩余的数据块。
这里,P小于等于M,并且,M大于等于2。比如,存储系统中已存储了4个数据块C,则若上述预设值P为2,则本步骤只需在该4个数据块中任意选取2个数据块C,而删除剩余的两个数据块C。这里,预设值可根据实际情况如存储系统的存储性能等进行设置,本发明实施例并不限定。
步骤604,根据删除的数据块的信息,更新预设的数据表。
这里,若步骤603删除了两个数据块C,则本步骤具体可包括:针对删除的每一个数据块C,获取该数据块C对应的逻辑存储地址和该数据块C所在的存储设备的标识;在预设的数据表中查找该获取的逻辑存储地址和该数据块C所在的存储设备的标识;当查找到时,在该数据表中删除该数据块C的数据块索引、该数据块C对应的逻辑存储地址和存储该数据块C的存储设备的标识的对应关系。
至此,实现了本发明实施例提供的数据存储方法。
需要说明的是,上述预设的数据表通常存储在SAN共享管理服务器中。本实施例为避免该SAN共享管理服务器保存的数据表被损坏影响整个存储系统的工作,本发明实施例可预先在存储系统包含的各个存储设备中划分预设空间,其中,该预设空间用于存储该存储设备已存储的数据块的数据块索引、该数据块对应的逻辑存储地址和该存储设备的标识三者之间的对应关系。这样,即使SAN共享管理服务器存储的数据表被损坏了,还可在存储 设备上获取对应的数据,大大提高了存储系统的性能。比如,假如存储设备1存储了数据文件I,则本发明实施例中该存储设备1中的预设空间还可存储表2中的信息。
上述是对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的装置进行描述。
参见图7,图7为本发明实施例提供的数据存储装置结构图。如图7所示,该装置包括:划分单元701、标识生成单元702和确定单元703。
其中,划分单元701用于将接收的数据划分成一个以上的大小为X字节的数据块,其中,X为正整数。
标识生成单元702用于分别为划分单元701划分的各个数据块生成对应的标识信息;这里,标识信息具体可为数据块索引,其中,标识生成单元702可根据预设算法如MD5算法生成各个数据块对应的数据块索引。
确定单元703用于将标识生成单元702生成的与已存储在存储系统的数据块对应的标识信息不同的标识信息所对应的数据块确定为需要存储的数据块。
优选地,所述存储系统以大小为X字节的数据块为单位存储数据;所述已存储在存储系统的数据块对应的标识信息存储在预设的数据表中;
如图7所示,确定单元703可包含:判断子单元7031和确定子单元7032。
其中,判断子单元7031用于针对标识生成单元702生成的每一个标识信息,判断所述标识信息是否在预设的数据表中。
确定子单元7032用于在接收到判断子单元7031的判断结果为是时,确定该标识信息对应的数据块为不需要存储的数据块;在接收到判断子单元7031的判断结果为否时,确定该标识信息对应的数据块为需要存储的数据块。
优选地,判断子单元7031用于针对标识生成单元702生成的相同的N个标识信息中的一个标识信息,其中,N大于等于2,判断该标识信息是否在预设的数据表中,如果是,发送第一判断通知给确定子单元7032,否则,发送第二判断通知给确定子单元7032;以及针对标识生成单元702生成的各个不相同的标识信息中的每一个标识信息,判断该标识信息是否在预设的数据表中,如 果是,发送第三判断通知给确定子单元7032;否则,发送第四判断通知给确定子单元7032。
确定子单元7032接收第一判断通知,确定该N个相同的标识信息分别对应的数据块为不需要存储的数据块;接收第二判断通知,确定该其中一个标识信息对应的数据块为需要存储的数据块,将剩余的N-1个标识信息分别对应的数据块确定为不需要存储的数据块;接收到第三判断通知,确定该标识信息对应的数据块为不需要存储的数据块;接收到第四判断通知,确定该标识信息对应的数据块为需要存储的数据块。
优选地,如图7所示,该装置还可包括:获取单元704。
其中,获取单元704用于在判断子单元7031判断出标识信息在预设的数据表中后,并在确定子单元7032确定该标识信息对应的数据块为不需要存储的数据块之前,获取存储系统中用于存储该标识信息对应的数据块的存储设备的标识;并将获取的存储设备的标识发送给判断子单元7031。
判断子单元7031判断获取单元704获取的存储设备的标识是否与预设的数据表中该标识信息对应的存储设备的标识相同。
确定子单元7032在接收到判断子单元7031的判断结果为是时,则继续确定该标识信息对应的数据块为不需要存储的数据块的操作;否则,确定该数据块为需要存储的数据块。
优选地,如图7所示,该装置还包含:第一更新单元705。
其中,第一更新单元705用于在确定子单元7032确定出需要存储的数据块时,更新预设的数据表;其中,所述预设的数据表中包含确定子单元7032确定出的需要存储的数据块的标识信息和用于存储该数据块的存储设备的标识之间的对应关系。
优选地,判断子单元7031判断存储系统的状态是否为繁忙;
确定子单元7032在接收到判断子单元7031的判断结果为是时,确定划分单元701划分的所有数据块为需要存储的数据。
优选地,如图7所示,该装置还包含:第二更新单元706。
其中,第二更新单元706用于对存储系统已存储数据块中相同的M个数据块,其中,P小于等于M,并且,M大于等于2,在该M个数据块中选取预设值P个数据块,删除剩余的数据块;并根据删除的数据块的信息,更新所述预设的数据表;其中,所述预设的数据表中包含存储设备已存储的数据块的标识信息和该存储设备的标识之间的对应关系。
可见,相比于现有技术,并非是将应用服务器接收到的所有数据确定为需要存储的数据,直接将该所有的数据存储到存储系统中;而是将接收的数据划分成一个以上的大小为X字节的数据块,其中,X为正整数;分别为划分的各个数据块生成对应的标识信息;将与已存储在存储系统的数据块对应的标识信息不同的标识信息所对应的数据块确定为需要存储的数据块。比如,将接收的数据划分为A、B、C、D和E数据块;而存储系统中某个存储设备比如存储设备1已存储了数据文件I,其中,该数据文件I由F、C、D、E和G五个数据块组成。这样,本发明就可仅将数据块A和数据块B确定为需要存储的数据,而不存储数据块C、数据块D和数据块E到存储系统中,如此,大大提高了存储空间的利用率。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种数据存储方法,其特征在于,该方法包括:
A、将接收的数据划分成一个以上大小为X字节的数据块,其中,X为正整数;
B、分别为划分的各个数据块生成对应的标识信息;
C、针对每一数据块,判断该数据块对应的标识信息是否在预设的数据表中,如果是,执行步骤D,否则,确定该数据块为需要存储的数据块;其中,所述数据表包含存储系统中各个存储设备已存储的数据块所对应的标识信息和该各个存储设备的标识之间的对应关系;
D、从存储系统中获取用于存储该数据块的存储设备标识,判断该获取的存储设备标识是否与所述数据表中该标识信息对应的存储设备标识相同,如果是,确定该数据块为不需要存储的数据块,如果否,确定该数据块为需要存储的数据块。
2.根据权利要求1所述的方法,其特征在于,所述步骤C包括:如果步骤B生成的标识信息中有N个标识信息相同,则针对该N个标识信息的其中一个标识信息,判断该标识信息是否在所述数据表中,如果是,执行步骤D;否则,确定该标识信息对应的数据块为需要存储的数据块,剩余的N-1个标识信息分别对应的数据块确定为不需要存储的数据块,其中,N大于等于2。
3.根据权利要求1所述的方法,其特征在于,所述确定数据块为需要存储的数据的操作进一步包括:
将所述确定出的需要存储的数据块的标识信息和用于存储该数据块的存储设备的标识之间的对应关系添加到所述数据表中。
4.根据权利要求1所述的方法,其特征在于,执行步骤B之后,并在执行步骤C之前,该方法进一步包括:
判断存储系统的状态是否为空闲,如果是,继续执行所述步骤C;否则,将步骤A划分的所有数据块确定为需要存储的数据块。
5.根据权利要求4所述的方法,其特征在于,所述将划分的所有数据块确定为需要存储的数据的操作进一步包括:
针对步骤A划分的每一个数据块,在存储系统中获取用于存储该数据块的存储设备的标识;
将该数据块的标识信息和用于存储该数据块的存储设备的标识的对应关系存储在预设的数据表中。
6.根据权利要求5所述的方法,其特征在于,当所述存储系统的状态由繁忙转为空闲时,该方法进一步包括:
对存储系统已存储数据块中对应相同标识信息的M个数据块,其中,M大于等于2,在该M个数据块中选取预设值P个数据块,删除剩余的数据块,其中,P小于等于M;
根据删除的数据块的标识信息,更新所述预设的数据表。
7.根据权利要求1或2或6所述的方法,其特征在于,该方法进一步包括:
在存储系统包含的每一个存储设备上划分预设空间;
使每一个存储设备在划分的预设空间中记录自身已存储的数据块的标识信息和所述存储设备的标识之间的对应关系。
8.一种数据存储装置,其特征在于,该装置包括:划分单元、标识生成单元、确定单元和获取单元;其中,
所述划分单元用于将接收的数据划分成一个以上大小为X字节的数据块,其中,X为正整数;
所述标识生成单元用于分别为所述划分单元划分的各个数据块生成对应的标识信息;
所述确定单元包含:判断子单元和确定子单元;其中,
所述判断子单元用于针对每一数据块,判断该数据块对应的标识信息是否在预设的数据表中;其中,所述数据表包含存储系统中各个存储设备已存储的数据块所对应的标识信息和该各个存储设备的标识之间的对应关系;以及在接收到所述获取单元发送的存储设备标识后,判断该获取的存储设备标识是否与所述数据表中该标识信息对应的存储设备标识相同;
所述获取单元用于在所述判断子单元判断出标识信息在预设的数据表中后,从存储系统中获取用于存储该数据块的存储设备标识,并将获取的存储设备标识发送给所述判断子单元;
所述确定子单元用于在所述判断子单元判断出该获取的存储设备标识与所述数据表中该标识信息对应的存储设备标识相同时,确定该数据块为不需要存储的数据块,在所述判断子单元判断出标识信息不在预设的数据表中,或者判断出该获取的存储设备标识与所述数据表中该标识信息对应的存储设备标识不相同时,确定该数据块为需要存储的数据块。
9.根据权利要求8所述的装置,其特征在于,
所述判断子单元用于在所述标识生成单元生成的标识信息中有N个标识信息相同时,针对该N个标识信息的其中一个标识信息,判断该标识信息是否在所述数据表中,如果是,发送第一判断通知给所述获取单元,以使所述获取单元接收到第一判断通知后,执行获取存储设备标识的操作,否则,发送第二判断通知给所述确定子单元,其中,N大于等于2;
所述确定子单元接收第二判断通知,确定该标识信息对应的数据块为需要存储的数据块,将剩余的N-1个标识信息分别对应的数据块确定为不需要存储的数据块。
10.根据权利要求8所述的装置,其特征在于,该装置还包括:第一更新单元;其中,
所述第一更新单元用于在所述确定子单元确定出需要存储的数据块时,更新预设的数据表;其中,所述预设的数据表中包含所述确定出需要存储的数据块的标识信息和存储系统中用于存储该数据块的存储设备标识之间的对应关系。
11.根据权利要求8所述的装置,其特征在于,所述判断子单元还用于判断存储系统的状态是否为繁忙;
所述确定子单元在接收到所述判断子单元的判断结果为是时,确定所述划分单元划分的所有数据块为需要存储的数据。
12.根据权利要求11所述的装置,其特征在于,该装置还包括:第二更新单元;
所述第二更新单元对存储系统已存储数据块中对应标识信息相同的M个数据块,其中,M大于等于2,在该M个数据块中选取预设值P个数据块,删除剩余的数据块,其中,P小于等于M;并根据删除的数据块的标识信息,更新所述预设的数据表;其中,所述预设的数据表中包含存储系统所包含的存储设备已存储的数据块的标识信息和该存储设备的标识之间的对应关系。
CN2009100819267A 2009-04-08 2009-04-08 一种数据存储方法和装置 Expired - Fee Related CN101526959B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100819267A CN101526959B (zh) 2009-04-08 2009-04-08 一种数据存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100819267A CN101526959B (zh) 2009-04-08 2009-04-08 一种数据存储方法和装置

Publications (2)

Publication Number Publication Date
CN101526959A CN101526959A (zh) 2009-09-09
CN101526959B true CN101526959B (zh) 2011-06-08

Family

ID=41094825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100819267A Expired - Fee Related CN101526959B (zh) 2009-04-08 2009-04-08 一种数据存储方法和装置

Country Status (1)

Country Link
CN (1) CN101526959B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064757A (zh) * 2012-12-12 2013-04-24 鸿富锦精密工业(深圳)有限公司 数据备份方法及系统
CN103702298B (zh) * 2013-12-12 2017-12-29 惠州Tcl移动通信有限公司 文字信息的处理方法及其处理系统以及移动终端
CN105487821A (zh) * 2015-11-30 2016-04-13 北京奇艺世纪科技有限公司 一种存储虚拟化中的数据存储方法、系统及装置
CN107562368B (zh) * 2016-06-30 2019-11-22 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
CN107454161A (zh) * 2017-07-31 2017-12-08 郑州云海信息技术有限公司 一种数据备份方法及装置

Also Published As

Publication number Publication date
CN101526959A (zh) 2009-09-09

Similar Documents

Publication Publication Date Title
CN108153757B (zh) 一种哈希表管理的方法和装置
CN102932415B (zh) 一种镜像文件存储方法及装置
CN111262726B (zh) 一种配置信息更新方法、装置及计算机可读存储介质
WO2017167171A1 (zh) 一种数据操作方法,服务器及存储系统
CN104090806B (zh) 升级包、升级请求的处理方法及装置
CN103823807B (zh) 一种去除重复数据的方法、装置及系统
US20170031948A1 (en) File synchronization method, server, and terminal
US20120323864A1 (en) Distributed de-duplication system and processing method thereof
CN104298687B (zh) 一种哈希分区管理方法及装置
CN101526959B (zh) 一种数据存储方法和装置
JP2013541083A (ja) 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム及び方法
CN110851474A (zh) 数据查询方法、数据库中间件、数据查询设备及存储介质
WO2013091167A1 (zh) 日志存储方法及系统
CN109165175B (zh) 设备标识生成方法和装置
CN105744001A (zh) 分布式缓存系统扩容方法、数据访问方法及装置和系统
CN116578746A (zh) 对象去重方法及装置
CN105183399A (zh) 一种基于弹性块存储的数据写、读方法及装置
CN110716924B (zh) 删除过期数据的方法和装置
CN111046106A (zh) 缓存数据同步方法、装置、设备及介质
WO2012139331A1 (zh) 分布式话单查询管理系统及方法
CN104424316A (zh) 一种数据存储方法、数据查询方法、相关装置和系统
CN106934066B (zh) 一种元数据处理方法、装置和存储设备
CN109976896B (zh) 业务排重处理方法和装置
CN112817980B (zh) 一种数据索引处理方法、装置、设备及存储介质
CN113760519B (zh) 分布式事务处理方法、装置、系统和电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110608

Termination date: 20200408

CF01 Termination of patent right due to non-payment of annual fee