CN104040507B - 数据存储方法和客户端设备及客户端计算机程序产品 - Google Patents
数据存储方法和客户端设备及客户端计算机程序产品 Download PDFInfo
- Publication number
- CN104040507B CN104040507B CN201280003038.3A CN201280003038A CN104040507B CN 104040507 B CN104040507 B CN 104040507B CN 201280003038 A CN201280003038 A CN 201280003038A CN 104040507 B CN104040507 B CN 104040507B
- Authority
- CN
- China
- Prior art keywords
- file destination
- segmentation
- storage address
- memory node
- burst
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储方法和客户端设备及客户端计算机程序产品,获取目标文件的特征值,获取特征值对应的第一存储节点,将目标文件的存储地址写入到目标文件特征值对应的第一存储节点上,或者从第一存储节点上读取目标文件的存储地址,在存储地址指向的存储空间读取目标文件,采用上述数据存户方法,提高了存储可靠性。
Description
技术领域
本发明涉及数据存储技术,尤其涉及一种数据存储方法和客户端设备及客户端计算机程序产品。
背景技术
随着互联网(简称Internet)技术和计算机技术的不断发展,基于对等(Peer topeer,简称P2P)的分布式存储系统也随之快速发展。
P2P存储系统,多个存储节点以一种功能对等的方式组成一个存储网络,将不同的文件存储在各个节点上,将记录文件与文件对应的存储地址的位置关系表存放于中心服务器。当客户端需要读写文件时,通过向中心服务器发出读写请求,从中心服务器存储的位置关系表中读取待读写的文件对应的存储地址,然后将该文件读写到相应的存储地址对应的P2P节点中,完成文件的读写操作。
采用上述现有的P2P存储系统,将文件与文件对应的存储地址的位置关系表存放于单一的中心服务器,中心服务器成为可靠性的焦点,中心服务器发生故障会导致P2P存储系统发生读写错误甚至瘫痪,因此,现有的P2P存储系统的可靠性差。
发明内容
本发明实施例提供数据存储方法和客户端设备及客户端计算机程序产品,以解决现有技术的缺陷,提高数据存储的可靠性。
第一方面,一种数据存储方法,包括:
接收目标文件的读取请求或写入请求;
获得所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点;
当接收的是所述目标文件的写入请求时,获得所述目标文件的存储地址, 在所述获取的第一存储节点上写入所述目标文件的存储地址;
当接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的存储地址,在所述目标文件的存储地址指向的存储空间中读取所述目标文件。
结合第一方面,在第一种可能的实现方式中,所述获得所述目标文件的特征值包括:
在对等P2P存储系统中,获得所述目标文件的全路径文件名,获取所述全路径文件名的特征值作为代表所述目标文件的特征值。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述特征值为哈希值;
所述预先设定的特征值和存储节点的对应关系通过下面方法建立:
建立哈希空间;
将所述哈希空间划分成至少两个分区,每个所述分区包括至少一个哈希值;
确定所述分区与存储节点的对应关系,每个所述存储节点对应至少一个所述分区,每个所述分区对应一个所述存储节点。
结合第一方面或第一方面的第一种至第二种可能的实现方式中的任一种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:当接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段;
所述获得所述目标文件的存储地址包括:获得所述目标文件的所述分段的标识ID以及每个所述分段的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包括:在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址之后,读取所述目标文件包括:在每个所述分段的存储地址指向的存储空间读取所述分段,根据所述目标文件的所述分段的ID将所述分段组成所述目标文件。
结合第一方面或第一方面的第一种可能的实现方式至第二种可能的实现 方式中任一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:当接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,将每个所述分段划分成至少两个分片;
所述获得所述目标文件的存储地址包括:获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包括:在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述将每个所述分段划分成至少两个分片包括:
根据可靠性级别要求,确定原始片的数量和校验片的数量;
按照所述原始片的数量和校验片的数量,将每个所述分段划分成原始片和校验片。
结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址之后,读取所述目标文件包括:在每个所述分片的存储地址指向的存储空间中读取所述分片,根据所述目标文件的所述分段的ID和所述分段的所述分片的ID,将所述分片组成所述目标文件。
第二方面,一种客户端设备,包括:
接收单元,用于接收目标文件的读取请求或写入请求;
获取单元,用于获得所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点;
写入单元,用于在接收的是所述目标文件的写入请求时,获得所述目标文件的存储地址,在所述获取的第一存储节点上写入所述目标文件的存储地址;
读取单元,用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的存储地址,在所述目标文件的存储地址指向的存储空间中读取所述目标文件。
结合第二方面,在第一种可能的实现方式中,所述获取单元具体用于在对等P2P存储系统中,获得所述目标文件的全路径文件名,获取所述全路径文件名的特征值作为代表所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述特征值为哈希值;
所述获取单元还用于建立哈希空间,将所述哈希空间划分成至少两个分区,每个所述分区包括至少一个哈希值,确定所述分区与存储节点的对应关系,每个所述存储节点对应至少一个所述分区,每个所述分区对应一个所述存储节点。
结合第二方面或第二方面的第一种可能的实现方式至第二种可能的实现方式中任一种可能的实现方式,在第三种可能的实现方式中,所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,获得所述目标文件的所述分段的标识ID以及每个所述分段的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址。
结合第二方面第三种可能的实现方式,在第四种可能的实现方式中,所述读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述分段的ID以及每个所述分段的存储地址,在每个所述分段的存储地址指向的存储空间读取所述分段,根据所述目标文件的所述分段的ID将所述分段组成所述目标文件。
结合第二方面或第二方面的第一种可能的实现方式至第二种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式中,所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,将每个所述分段划分成至少两个分片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
结合第二方面第五种可能的实现方式,在第六种可能的实现方式中,所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,根据可靠性级别要求,确定原始片的数量和校验片的数量,按照所述原始片的数量和校验片的数量,将每个所述分段划分成原始片和校验片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
结合第二方面第五种可能的实现方式,在第七种可能的实现方式中,所述读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在每个所述分片的存储地址指向的存储空间中读取所述分片,根据所述目标文件的所述分段的ID和所述分段的所述分片的ID,将所述分片组成所述目标文件。
第三方面,一种客户端设备,包括:处理器,通信接口,存储器和总线:
其中处理器、通信接口、存储器通信总线完成相互间的通信;
所述通信接口,用于接收目标文件的读取请求或写入请求;
所述处理器,用于执行程序;
所述存储器,用于存放程序;
其中所述处理器执行所述程序使得所述客户端设备执行如上述第一方面所述的各方法。
本发明实施例提供的数据存储方法和客户端设备及客户端计算机程序产品,通过获取目标文件的特征值,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点,当接收到目标文件的写入请求时,获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址,当接收到目标文件的读取请求时,在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间中读取目标文件,由于在第一存储节点上存储目标文件的存储地址,与现有技术中将目标文件的存储地址存储于单一的中心服务器相比,避免了当中心服务器发生故障而存储地址丢失,导致存储系统发生读写错误甚至瘫痪的问题,本实施例的技术方案提高了存储系统的可靠性。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一的数据存储方法流程示意图;
图2为本发明实施例一的数据存储方法的特征值与存储节点对应关系的示意图;
图3为本发明实施例二的数据存储方法流程示意图;
图4为本发明实施例三的数据存储方法流程示意图;
图5为本发明实施例四的客户端设备的结构示意图;
图6为本发明实施例五的客户端设备的结构示意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一的数据存储方法流程示意图。本发明实施例的数据存储方法,应用于由客户端和多个存储节点组成存储系统中,客户端将数据存储于对应的存储节点中,或从对应的存储节点中读取数据,各存储节点功能对等,本实施例中的执行主体为客户端,如图1所示,本实施例的方法包括:
步骤101:接收目标文件的读取请求或写入请求。
上述目标文件指待存储的文件或待读取的文件,用户从存储系统中读取或者写入目标文件时,会向客户端发送目标文件的读取请求或写入请求,客户端接收用户发送的目标文件的读取请求或写入请求。
用户向客户端发送目标文件的读取请求或写入请求的方式可以采用现有技术的任何一种方式,此处不再赘述。
步骤102:获得目标文件的特征值,目标文件的特征值用于代表该目标 文件,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点。
客户端接收到用户发送的读写指令后,会根据目标文件,获得目标文件的特征值,存储系统中会预先设定特征值和存储节点的对应关系,存储系统中,一个特征值对应一个存储节点,一个存储节点可对应一个或者多个特征值,根据预先设定的特征值和存储节点的对应关系,可以获取到目标文件的特征值对应的第一存储节点。
步骤103:判断客户端接收到的是否为目标文件的写入请求,若是,执行步骤104,若否,执行步骤105。
步骤104:获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址。
客户端获得目标文件的存储地址,目标文件的存储地址可以是客户端根据一定的策略分配的,也可以是通过其他的方式获得的,此处不作限制,在步骤102中获取的第一存储节点上写入目标文件的存储地址。
目标文件的写入过程与在第一存储点上写入目标文件的存储地址过程的先后顺序,本发明不做限制,一种可行的实施方式是,客户端获得目标文件的存储地址之后,将目标文件写在对应的存储地址上,然后在第一存储节点上写入目标文件的存储地址。另一种可行的实施方式是,客户端获得目标文件的存储地址之后,在第一存储节点上写入目标文件的存储地址,然后根据第一存储节点上的目标文件的存储地址,将目标文件写在对应的存储地址上,即可完成目标文件的写入。
步骤105:在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间中读取目标文件。
客户端接收到用户发送的目标文件的读取请求后,在步骤102中获取的第一存储节点上读取目标文件的存储地址,目标文件的存储地址是在目标文件写入过程中存储到第一存储节点中的,在目标文件对应的存储地址指向的存储空间中读取目标文件,即可完成目标文件的读取。
本步骤的读取操作是在之前已经完成写入操作的基础上进行的。
附图说明
值得说明的是,在目标文件的写入和读取过程中,所采用的获得目标文件的特征值的方法相同,即针对同一目标文件,在写入和读取过程中,所对 应的的特征值相同。
本实施例的存储系统是由多个存储节点组成的,各个存储节点功能对等,本实施例通过获取目标文件的特征值,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点,当接收到目标文件的写入请求时,获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址,当接收到目标文件的读取请求时,在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间中读取目标文件,由于在第一存储节点上存储目标文件的存储地址,与现有技术中将目标文件的存储地址存储于单一的中心服务器相比,避免了当中心服务器发生故障而存储地址丢失,导致存储系统发生读写错误甚至瘫痪的问题,本实施例的技术方案提高了存储系统的可靠性。
获得目标文件的特征值,可以通过计算目标文件的哈希值来实现;在一种实现方式中,本实施例方法可应用于P2P存储系统中,相应地,获得目标文件的特征值的方式也可以为:获得目标文件的全路径文件名,然后获取目标文件的全路径文件名的特征值,作为获得代表目标文件的特征值。
P2P存储系统不同于传统的本地存储系统。本地存储系统的目录结构与实际的存储地址是一致的,例如,在Windows下的C盘的目录Document下存放目标文件A.txt,采用全路径文件名表示目标文件的目录结构,则上述目标文件的全路径文件名为“C:\Document\A.txt”,该文件对应的存储地址是:C盘下目录Document下的名称为A.txt的文件;而在P2P存储系统中,展现给用户的文件的目录结构与该文件在系统中的实际的存储地址并不一致,从文件的目录结构无法获知该文件存储的实际地址,而需要通过其他的方式获取目标文件对应的实际存储地址,写入或读取目标文件,例如,展现给用户的目录是:将目标文件A.txt存储于P2P系统的目录文件root的子目录namespace-1下,则展现给用户的全路径文件名为:“/root/namespace-1/A.txt”,而该目标文件的实际存储地址要根据元数据文件获知。在本发明的下述实施例中,提出一种根据目标文件的特征值确定存储节点,根据该存储节点存储的元数据文件获知实际存储地址,从而实现数据存储的方法以及采用该方法的P2P存储系统。
上述目标文件指待存储的文件或待读取的文件,对于待存储的文件,其目标文件的全路径文件名为展示给用户的该文件将要存入的目录,例如,如 果要将文件“A.txt”存入目录“/root/namespace-2/”中,则全路径文件名为“/root/namespace-2/A.txt”。对于待读取的文件,其目标文件的全路径文件名为展示给用户的当前存储该文件的目录,例如,如果从目录“/root/namespace-2/”中读取文件“A.txt”,则全路径文件名为“/root/namespace-2/A.txt”。目标文件的全路径文件名具有唯一性,因此通过目标文件的全路径文件名进行计算,获得的目标文件的全路径文件名特征值也具有唯一性,即一个目标文件的全路径文件名对应唯一特征值。
本发明实施例对获取全路径文件名的方法不做限制,其中,获取全路径文件名的一种可行的实施方式可以为:获取用户读写指令,从该读写指令中获取全路径文件名,在读文件的过程中,例如,用户是预先知道目标文件的存储目录的,例如目标文件A.txt的存储目录为“/root/namespace-2/A.txt”,则用户可以依次点击目录名root->namespace-2->A.txt,相当于给系统发送读指令,可通过该读指令获取目标文件的全路径文件名,即“/root/namespace-1/B.txt”;同理,在写文件的过程中,例如,用户想把一个B.txt文件写入到目录下“/root/namespace-1/B.txt”则用户会在namespace-1目录下新建文件名为B的txt类型文件,相当于给系统发送写指令,可通过该些指令获取目标文件的全路径文件名,即“/root/namespace-1/B.txt”。本领域技术人员可以理解,还可以通过其他的方式获得全路径文件名,在此不再赘述。
本实施例中,通过获得目标文件的全路径文件名的特征值的方式获得目标文件的特征值。是对获取目标文件的特征值的一种可行的实施方式的详细描述,在获取到目标文件的特征之后的步骤与图1所示实施例的步骤相同,此处不再赘述。
具体实施方式
图2为本发明实施例一的数据存储方法的特征值与存储节点对应关系的示意图。在图1所示实施例中,特征值可以为哈希值,因此,本实施例中建立特征值与存储节点的对应关系,可以以建立哈希值与存储节点的对应关系为例来说明,包括以下步骤:
首先,建立哈希空间。
由P2P存储系统的管理节点设备建立一个完整的哈希空间,根据哈希值的大小顺时针排列。请参见图2,图2所示为120位的哈希空间。本发明实 施例中对建立哈希空间的方法不做限制,可采用任何建立哈希空间的方法实现,例如,可以采用chord技术建立哈希空间。
然后,将哈希空间划分成至少两个分区,每个分区包括至少一个哈希值。各个分区的大小可以根据不同的存储节点存储空间的大小确定,分区的大小在此不做限制。分区的总数可以为两个及两个以上,数目不做限制,每个分区至少包括一个哈希值。例如,在图2中,第一分区包括N0-N210范围内的所有哈希值,第二分区包括N220一个哈希值,第三分区包括N230-N240范围内的所有的哈希值,第四分区包括N250-N260范围内的所有的哈希值,第五分区包括N270一个哈希值,第七分区包括N2160-1一个哈希值,第六分区包括哈希空间中剩余的哈希值,在此,对每个分区中哈希值的数目也不做限制。
最后,确定分区与存储节点的对应关系,每个存储节点对应至少一个分区,每个分区对应一个存储节点。将至少存在两个分区的哈希空间中的分区与存储节点建立对应的关系,每个存储节点对应至少一个分区。表1为分区与存储节点映射关系表,对于图2所示的哈希空间,其分区与存储节点映射关系表如表1所示。
表1.分区与存储节点映射关系表
第一分区 | 存储节点1 |
第二分区 | 存储节点2 |
第三分区 | 存储节点2 |
第四分区 | 存储节点2 |
第五分区 | 存储节点3 |
第六分区 | 存储节点4 |
第七分区 | 存储节点4 |
在本实施例中,首先建立哈希空间,哈希空间由若干哈希值组成;然后,将哈希空间划分至少两个分区,每个分区包括至少一个哈希值,建立了哈希值与分区之间的对应关系;最后,通过确定分区与存储节点的对应关系;进而得到哈希值与存储节点的对应关系。从而可以在步骤102中根据该预设的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点。在步骤103中,在获取的第一存储节点上写入目标文件的存储地址,或者,当目标文件的存储地址存储在元数据,则在获取的第一存储节点上存储有目 标文件的存储地址的元数据。在步骤S104中,在获取的第一存储节点上读取目标文件的存储地址,或者,当目标文件的存储地址存储在元数据中,在获取的第一存储节点上读取目标文件的元数据,从读取的元数据中获取目标文件的存储地址,根据获取的存储地址读取目标文件。
下面采用几个实施例,对图1所示方法实施例的技术方案进行详细说明。客户端接收目标文件的写入请求之后,还可以包括对目标文件的预处理过程,上述对目标文件的预处理过程可以采用两种方式:
预处理过程的第一种方式:客户端将目标文件划分成至少两个分段。上述分段的数目根据分段的大小而定。分段的大小可以设置成一个固定值,最后一段的大小是等于或小于设置的固定值,分段的大小默认值为64M,也可以设置成其他值,如128K,256K,512K,1M,2M,4M,8M,16M,32M等。或者,分段的大小也可以设置成不同长度的大小,如第1段长为128K,第2段长为256K。本发明实施例中对分段的方法不做限制,可以采用任何文件分段的方法实现。
客户端可指定预处理后的目标文件的每个分段的具体存储地址,也可只指定第一个分段的存储地址,按照预定规则获取其他分段的存储地址,例如,每个分段存储于相邻存储节点的相同位置,即第一个分段存储在存储节点1的D磁盘的第10块中,则第二个分段存储在存储节点2的D磁盘的第10块中,依次类推,获取到其他分段的存储地址,预定规则本发明对此不做限制。
相应地,目标文件的分段以及每个分段的存储地址,包括,目标文件与分段的对应关系以及每个分段与存储地址的对应关系,例如,将目标文件分为N段,段1、段2、......、段N,目标文件与分段的对应关系可以表示为如下形式:
目标文件的组成={段1、段2、......、段N};
每个分段与存储地址的对应关系可以表示为如下形式:
段1的实际存储地址={段的信息(段ID号,段的偏移量,段的长度)
段的存储地址(存储节点,磁盘,块号)};
段2的实际存储地址={段的信息(段ID号,段的偏移量,段的长度)
段的存储地址(存储节点,磁盘,块号)};
段N的实际存储地址={段的信息(段ID号,段的偏移量,段的长度)
段的存储地址(存储节点,磁盘,块号)}。
其中,段标识(Identity,简称ID)号为目标文件与分段的对应关系,例如:段1的ID号表示为:“目标文件名.1”,段2的ID号表示为:“目标文件名.2”,依次建立对应关系,段的偏移量为段相对于文件内容首段的偏移量,段的长度为段的大小,段的存储地址为段的实际存储地址。
需要说明的是,对于目标文件与分段的对应关系以及每个分段与存储位置的对应关系的具体形式,本发明对此不做限制,可以采用任何能够体现目标文件与分段的对应关系以及每个分段与存储位置的对应关系的形式实现。
客户端在目标文件对应的第一存储节点写入目标文件对应的分段的ID以及每个分段的存储地址,也就是在第一存储节点写入目标文件与分段的对应关系以及每个分段与存储位置的对应关系;或者客户端将目标文件对应的分段ID以及每个分段的存储地址存储在元数据中,也就是,将目标文件与分段的对应关系以及每个分段与存储位置的对应关系存储在元数据中。
相应地,图3为本发明实施例二的数据存储方法流程示意图。如图3所示,该方法包括如下过程。
本实施例中以获取目标文件的全路径文件名对应的哈希值作为特征值进行详细过程描述。
步骤301:接收目标文件的写入请求。
上述目标文件指待存储的文件,用户向存储系统中写入目标文件时,会向客户端发送目标文件的写入请求指令,客户端接收用户发送的目标文件的写入请求指令,用户向客户端发送目标文件的写入请求指令的方式可以采用现有技术的任何一种方式,此处不再赘述。
步骤302:获得目标文件的全路径文件名对应的哈希值,根据预先设定的哈希值和存储节点的对应关系,获取目标文件的哈希值对应的第一存储节点。
上述目标文件的全路径文件名具有唯一性,因此通过目标文件的全路径文件名进行哈希运算,获得的目标文件的全路径文件名的哈希值也具有唯一性,即一个目标文件的全路径文件名对应唯一的哈希值,根据预先设定的哈希值和存储节点的对应关系,获取目标文件的哈希值对应的第一存储节点。
步骤303:获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址。
上述获得目标文件的存储地址,包括获得目标文件的分段的ID以及每个分段的存储地址,也就是,获得目标文件与分段的对应关系以及每个分段与存储地址的对应关系,在获取的第一存储节点上写入目标文件对应的分段的ID以及每个分段的存储地址,也就是,在第一存储节点上写入目标文件与分段的对应关系以及每个分段与存储地址的对应关系。具体地,在获取的第一存储节点上写入目标文件的分段的ID以及每个分段的存储地址,可以是分别将每个分段的ID与存储地址作为一条存储记录,写入第一存储节点,也可以将每个分段的ID按一定顺序写在一起,根据存储地址与分段ID的对应关系,将存储地址按照与分段ID相同的顺序写在一起,本发明对在第一存储节点上写入目标文件的存储地址的具体方式不做限定。
如果,在预处理过程中,目标文件对应的分段的ID以及每个分段的存储地址存储在元数据中,也就是,目标文件与分段的对应关系以及每个分段与存储位置的对应关系存储在元数据中,则在获取的第一存储节点上写入目标文件的元数据。
步骤304:在目标文件的存储地址上写入目标文件。
本步骤可以在预处理的第一种方式中,为目标文件分配了存储地址之后,在目标文件的存储地址上写入目标文件,也可以是在第一存储节点上写入目标文件的存储地址之后,根据第一存储节点上的存储地址,将目标文件写入到对应的存储地址上。本步骤中存储地址具体到对应的存储节点的磁盘的块号。在目标文件写入完毕后,当接收到目标文件的读取请求后,执行如下步骤305至步骤306。
步骤305:获得目标文件的全路径文件名对应的哈希值,根据预先设定的哈希值和存储节点的对应关系,获取目标文件的哈希值对应的第一存储节点。
步骤306:在获取的第一存储节点上读取目标文件的存储地址,在目标文件对应的存储地址指向的存储空间中读取目标文件。
本步骤中在获取的第一存储节点上读取目标文件的存储地址,与目标文件存储地址的写入方式有关,当目标文件的存储地址是直接写在第一存储节 点上,也就是,目标文件与分段的对应关系以及每个分段与存储位置的对应关系直接写在第一存储节点上,则在第一存储节点上直接读取目标文件的存储地址,包括目标文件的分段的ID以及每个分段的存储地址,也就是目标文件与分段的对应关系以及每个分段与存储位置的对应关系;当目标文件的存储地址是存储在元数据中,将目标文件的元数据写在第一存储节点上,则在第一存储节点上读取目标文件的元数据,在元数据中读取目标文件的存储地址,包括目标文件的分段的ID以及每个分段的存储地址,也就是目标文件与分段的对应关系以及每个分段与存储位置的对应关系;在每个分段对应的存储地址指向的存储空间中读取分段,根据目标文件对应的分段的ID将分段组成目标文件,也就是,根据目标文件与分段的对应关系将分段组成目标文件。
本实施例,由于目标文件的存储地址存储在第一存储节点中,而第一存储节点是根据目标文件的全路径文件名对应的的哈希值获得的,不同的哈希值可能对应不同的第一存储节点,实现了将不同的目标文件的存储地址存储在不同的存储节点中,与现有技术中将目标文件的存储地址存储于单一的中心服务器相比,避免了当中心服务器发生故障而存储地址丢失,导致存储系统发生读写错误甚至瘫痪的情况,本实施例的技术方案提高了存储系统的可靠性。并且,本实施例对目标文件进行预处理,由于目标文件进行了分段,并将其存储与不同的存储节点中,不需要将目标文件整体存储于同一存储节点中,提高了存储空间的利用率。
预处理过程的第二种方式:客户端将目标文件划分成至少两个分段,将每个分段划分成至少两个分片;上述分段方法与预处理第一种方式的实施例对应的分段方法相同,在此不再赘述;在将目标文件划分成至少两个分段之后,将上述分段划分成至少两个分片,分片的数目可以为两个和两个以上,与分片所用的方法有关,上述分片的方法可以为普通的切片方式,也可以为纠偏码切片方式。在采用纠偏码切片方式的情况下,根据可靠性的级别要求,确定纠偏码的原始片与校验片的数量,按照原始片的数量和校验片的数量,将每个分段划分成原始片和校验片。其中,原始片为目标文件的原始数据的分割,校验片为原始片之间的关系函数,当有原始片丢失时,可根据校验片与原始片计算出丢失的原始片,实现了片之间的冗余,若可靠性要求高,则校验片的数目相对较多,若可靠性要求不高,则校验片的数目相对较少。按 照原始片和校验片的数目将分段划分成原始片和校验片,本发明实施例中对切片的方法不做限制,可以采用任何文件切片的方法实现。
客户端可指定预处理后的目标文件的每个分片的具体存储地址,也可只指定第一个分片的存储地址,按照预定规则获取其他分段的存储地址,例如,一段的每个分片存储与相邻存储节点的相同位置,即第一个分片存储在存储节点1的D磁盘的第10块中,则第二个分片存储在存储节点2的D磁盘的第10块中,依次类推,获取到其他分片的存储地址,其他段的每个分片的存储地址的确定方法于此相似,在此不再赘述,预定规则本发明对此不做限制。
相应地,目标文件的分段、分段的分片以及每个分片的存储地址,包括,目标文件与分段的对应关系、每个分段与分片的对应关系以及每个分片与存储位置的对应关系。建立目标文件与分段之间的对应关系与预处理第一种方式实施例相同,在此不再赘述;在建立目标文件与分段之间的对应关系之后,建立分段与分片之间的对应关系以及每个分片与存储地址的对应关系,例如,将目标文件的段1分为N片,表示为:片11、片12、片13、......片1N,段1与分片的对应关系可以表示为如下形式:
目标文件的段1的组成={片11、片12、片13、......片1N};
分片与存储地址的对应关系可以表示为如下形式:
片11的实际存储地址={片的信息(片ID号、片的偏移量、片的长度)
片的存储地址(存储节点,磁盘,块号)};
片12的实际存储地址={片的信息(片ID号、片的偏移量、片的长度)
片的存储地址(存储节点,磁盘,块号)};
片1N的实际存储地址={片的信息(片ID号、片的偏移量、片的长度)
片的存储地址(存储节点,磁盘,块号)}。
其中,片ID号为段1与分片的对应关系,例如:片11的ID号表示为:“段1.1”,片12的ID号表示为:“段1.2”,依次建立对应关系,片的偏移量为片相对与段内容的首片的偏移量,片的长度为片的大小,片的存储位置为片的实际存储地址。结合第一种方式目标文件与分段的对应关系,可以建立目标文件与分片之间的对应关系,例如:片11的ID号也可以表示为:“目标文件名.1.1”,片12的ID号表示为:“目标文件名.1.2”,依次建立对应关系, 目标文件的段2至段N与各段分片的对应关系及各段分片与存储地址的对应关系与段1采用的表示方法相同,在此不再赘述。
需要说明的是,对于目标文件与分段的对应关系,每个分段与分片的对应关系以及分片与存储位置的对应关系的具体形式,本发明对此不做限制,可以采用任何能够体现目标文件与分段的对应关系,每个分段与分片的对应关系以及分片与存储位置的对应关系的形式实现。
相应地,图4为本发明实施例三的数据存储方法流程示意图。如图4所示,该方法包括如下过程。
本实施例中以获取目标文件的全路径文件名对应的哈希值作为特征值进行详细过程描述。
步骤401:接收目标文件的写入请求。
步骤402:获得目标文件的全路径文件名对应的哈希值,根据预先设定的哈希值和存储节点的对应关系,获取目标文件的哈希值对应的第一存储节点。
步骤401与步骤402与实施例二步骤301与步骤302相似,此处不再赘述。
步骤403:获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址。
本步骤与实施例二的步骤303不同的是,本步骤中获得目标文件的存储地址,包括获得目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,也就是获得目标文件与分段的对应关系、每个分段与分片的对应关系以及每个分片与存储位置的对应关系。在获取的第一存储节点上写入目标文件对应的分段ID以及每个分段的存储地址,也就是写入目标文件与分段的对应关系、每个分段与分片的对应关系以及每个分片与存储位置的对应关系,如果,在预处理过程中,目标文件对应目标文件的分段、分段的分片以及每个分片的存储地址存储在元数据中,则在获取的第一存储节点上写入目标文件的元数据。
步骤404:在目标文件的存储地址上写入目标文件。
在本步骤中,存储地址具体到对应的存储节点的磁盘的块号。在将目标文件的每个分片存储到对应的存储地址之后,完成了目标文件写入的过程。 在目标文件写入完毕后,当接收到目标文件的读取请求后,执行如下步骤405至步骤406。
步骤405:获得目标文件的全路径文件名对应的哈希值,根据预先设定的哈希值和存储节点的对应关系,获取目标文件的哈希值对应的第一存储节点。
步骤406:在获取的第一存储节点上读取目标文件的存储地址,在目标文件对应的存储地址指向的存储空间中读取目标文件。
本步骤中在获取的第一存储节点上读取目标文件的存储地址,与目标文件存储地址的写入方式有关,当目标文件的存储地址是直接写在第一存储节点上,则在第一存储节点上直接读取目标文件的存储地址,包括目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,也就是目标文件与分段的对应关系、每个分段与分片的对应关系以及每个分片与存储位置的对应关系;当目标文件的存储地址是存储在元数据中,将目标文件的元数据写在第一存储节点上,则在第一存储节点上读取目标文件的元数据,在元数据中读取目标文件的存储地址,包括目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,也就是目标文件与分段的对应关系、每个分段与分片的对应关系以及每个分片与存储位置的对应关系;在每个分片对应的存储地址指向的存储空间中读取分片,根据目标文件对应的分段和分段对应的分片,将读取的分片组成目标文件,也就是,根据目标文件与分段的对应关系、每个分段与分片的对应关系,将读取的分片组成目标文件。
本实施例,由于目标文件的存储地址存储在第一存储节点中,而第一存储节点是根据目标文件的全路径文件名对应的的哈希值获得的,不同的哈希值可能对应不同的第一存储节点,实现了将不同的目标文件的存储地址存储在不同的存储节点中,与现有技术中将目标文件的存储地址存储于单一的中心服务器相比,避免了当中心服务器发生故障而存储地址丢失,导致存储系统发生读写错误甚至瘫痪的情况,本实施例的技术方案提高了存储系统的可靠性。并且,本实施例通过对目标文件进行预处理,将目标文件分段,将每个分段划分成分片,并建立目标文件与每个分段的对应关系、每个分段与每个分片的对应关系以及每个分片与存储地址的对应关系;将目标文件写入到目标文件的分片对应的存储地址,或从对应的存储地址指向的存储空间中读 取目标文件的分片,实现根据每个分段与分段的分片的对应关系以及目标文件与目标文件的分段的对应关系写入或读取目标文件。由于将段划分为片时,采用原始片与校验片的方式,实现了片之间的冗余,因此当有某一个或某几个存储节点出现故障时,在可靠性范围内,可以通过校验片与原始片的关系还原出丢失的分片数据,提高了存储系统的可靠性。
图5为本发明实施例四的客户端设备的结构示意图,如图5所示,本实施例的客户端设备50包括接收单元51、获取单元52、写入单元53和读取单元54,其中,接收单元51用于接收目标文件的读取请求或写入请求;获取单元52用于获得目标文件的特征值,目标文件的特征值用于代表目标文件,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点;写入单元53用于在接收的是目标文件的写入请求时,获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址;读取单元54用于在接收的是目标文件的读取请求时,在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间中读取目标文件。
本实施例客户端设备中的各单元对应的可执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,获取单元52具体用于在对等P2P存储系统中,获得目标文件的全路径文件名,获取全路径文件名的特征值作为代表目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点。
在上述实施例的基础上,进一步地,特征值为哈希值;获取单元52还用于建立哈希空间,将哈希空间划分成至少两个分区,每个分区包括至少一个哈希值,确定分区与存储节点的对应关系,每个存储节点对应至少一个分区,每个分区对应一个存储节点。
本实施例客户端设备中的各单元对应的可执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,写入单元53具体用于在接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,获得目标文件的分 段的标识ID以及每个分段的存储地址,在获取的第一存储节点上写入目标文件的分段的ID以及每个分段的存储地址。
在上述实施例的基础上,进一步地,读取单元54具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述分段的ID以及每个所述分段的存储地址,在每个分段的存储地址指向的存储空间读取分段,根据目标文件的分段的ID将分段组成目标文件。
本实施例客户端设备中的各单元对应的可执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,写入单元53具体用于在接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,将每个分段划分成至少两个分片,获得目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,在获取的第一存储节点上写入目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址。
在上述实施例的基础上,进一步地,写入单元53具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,根据可靠性级别要求,确定原始片的数量和校验片的数量,按照原始片的数量和校验片的数量,将每个分段划分成原始片和校验片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
在上述实施例的基础上,进一步地,读取单元54具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在每个分片的存储地址指向的存储空间中读取分片,根据目标文件的分段的ID和分段的分片的ID,将分片组成目标文件。
本实施例客户端设备中的各单元对应的可执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本发明实施例五的客户端设备的结构示意图,如图6所示,本实施例的客户端设备60包括:处理器61,通信接口62,存储器63和总线64,其中处理器61、通信接口62、存储器63通过总线64完成相互间的通信; 通信接口62用于接收目标文件的读取请求或写入请求;处理器61用于执行程序64;存储器63用于存放程序65;
其中,程序65可以包括:
获取单元用于获得目标文件的特征值,目标文件的特征值用于代表目标文件,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点;写入单元用于在接收的是目标文件的写入请求时,获得目标文件的存储地址,在所述获取的第一存储节点上写入目标文件的存储地址;读取单元用于在接收的是目标文件的读取请求时,在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间中读取目标文件。
本实施例客户端设备中的各单元对应的可执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,获取单元具体用于在对等P2P存储系统中,获得目标文件的全路径文件名,获取全路径文件名的特征值作为代表目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点。
在上述实施例的基础上,进一步地,特征值为哈希值;获取单元还用于建立哈希空间,将哈希空间划分成至少两个分区,每个分区包括至少一个哈希值,确定分区与存储节点的对应关系,每个存储节点对应至少一个分区,每个分区对应一个存储节点。
本实施例客户端设备中的各单元对应的可执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,写入单元具体用于在接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,获得目标文件的分段的标识ID以及每个分段的存储地址,在获取的第一存储节点上写入目标文件的分段的ID以及每个分段的存储地址。
在上述实施例的基础上,进一步地,读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述分段的ID以及每个所述分段的存储地址,在每个分段的存储地址指向的存储空间读取分 段,根据目标文件的分段的ID将分段组成目标文件。
本实施例客户端设备中的各单元对应的可执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,写入单元具体用于在接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,将每个分段划分成至少两个分片,获得目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,在获取的第一存储节点上写入目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址。
在上述实施例的基础上,进一步地,写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,根据可靠性级别要求,确定原始片的数量和校验片的数量,按照原始片的数量和校验片的数量,将每个分段划分成原始片和校验片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
在上述实施例的基础上,进一步地,读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在每个分片的存储地址指向的存储空间中读取分片,根据目标文件的分段的ID和分段的分片的ID,将分片组成目标文件。
本实施例客户端设备中的各单元对应的可执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
以下介绍本发明实施例六的客户端计算机程序产品,本实施例的客户端计算机程序产品包括存储了程序代码的计算机可读存储介质;程序代码包括的指令用于接收目标文件的读取请求或写入请求,获得目标文件的特征值,目标文件的特征值用于代表目标文件,根据预先设定的特征值和存储节点的对应关系,获取目标文件的特征值对应的第一存储节点,当接收的是目标文件的写入请求时,获得目标文件的存储地址,在获取的第一存储节点上写入目标文件的存储地址,当接收的是目标文件的读取请求时,在获取的第一存储节点上读取目标文件的存储地址,在目标文件的存储地址指向的存储空间 中读取目标文件。
本实施例的客户端计算机程序产品可用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,程序代码包括的指令具体用于在对等P2P存储系统中,获得目标文件的全路径文件名,获取全路径文件名的特征值作为代表目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点。
在上述实施例的基础上,进一步地,特征值为哈希值;
程序代码包括的指令具体用于建立哈希空间,将哈希空间划分成至少两个分区,每个分区包括至少一个哈希值,确定分区与存储节点的对应关系,每个存储节点对应至少一个分区,每个分区对应一个存储节点。
本实施例的客户端计算机程序产品可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,程序代码包括的指令还用于在接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,获得目标文件的分段的标识ID以及每个分段的存储地址,在获取的第一存储节点上写入目标文件的分段的ID以及每个分段的存储地址。
在上述实施例的基础上,进一步地,程序代码包括的指令具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述分段的ID以及每个所述分段的存储地址,在每个分段的存储地址指向的存储空间读取分段,根据目标文件的分段的ID将分段组成目标文件。
本实施例的客户端计算机程序产品可用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在上述实施例的基础上,进一步地,程序代码包括的指令还用于当接收的是目标文件的写入请求时,将目标文件划分成至少两个分段,将每个分段划分成至少两个分片,获得目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址,在获取的第一存储节点上写入目标文件的分段的ID、分段的分片的ID以及每个分片的存储地址。
在上述实施例的基础上,进一步地,程序代码包括的指令具体用于在接 收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,根据可靠性级别要求,确定原始片的数量和校验片的数量,按照原始片的数量和校验片的数量,将每个分段划分成原始片和校验片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
在上述实施例的基础上,进一步地,程序代码包括的指令具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在每个分片的存储地址指向的存储空间中读取分片,根据目标文件的分段的ID和分段的分片的ID,将分片组成目标文件。
本实施例的客户端计算机程序产品可用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (17)
1.一种数据存储方法,其特征在于,包括:
客户端设备接收目标文件的读取请求或写入请求;
所述客户端设备获得所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点;
当所述客户端设备接收的是所述目标文件的写入请求时,获得所述目标文件的存储地址,在所述获取的第一存储节点上写入所述目标文件的存储地址;
当所述客户端设备接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的存储地址,在所述目标文件的存储地址指向的存储空间中读取所述目标文件。
2.根据权利要求1所述的方法,其特征在于,所述获得所述目标文件的特征值包括:
在对等P2P存储系统中,获得所述目标文件的全路径文件名,获取所述全路径文件名的特征值作为代表所述目标文件的特征值。
3.根据权利要求1或2所述的方法,其特征在于,所述特征值为哈希值;
所述预先设定的特征值和存储节点的对应关系通过下面方法建立:
建立哈希空间;
将所述哈希空间划分成至少两个分区,每个所述分区包括至少一个哈希值;
确定所述分区与存储节点的对应关系,每个所述存储节点对应至少一个所述分区,每个所述分区对应一个所述存储节点。
4.根据权利要求1或2所述的方法,其特征在于,还包括:当接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段;
所述获得所述目标文件的存储地址包括:获得所述目标文件的所述分段的标识ID以及每个所述分段的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包括:在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址。
5.根据权利要求4所述的方法,其特征在于,
在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址之后,读取所述目标文件包括:在每个所述分段的存储地址指向的存储空间读取所述分段,根据所述目标文件的所述分段的ID将所述分段组成所述目标文件。
6.根据权利要求1或2所述的方法,其特征在于,
还包括:当接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,将每个所述分段划分成至少两个分片;
所述获得所述目标文件的存储地址包括:获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包括:在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
7.根据权利要求6所述的方法,其特征在于,所述将每个所述分段划分成至少两个分片包括:
根据可靠性级别要求,确定原始片的数量和校验片的数量;
按照所述原始片的数量和校验片的数量,将每个所述分段划分成原始片和校验片。
8.根据权利要求6所述的方法,其特征在于,
在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址之后,读取所述目标文件包括:在每个所述分片的存储地址指向的存储空间中读取所述分片,根据所述目标文件的所述分段的ID和所述分段的所述分片的ID,将所述分片组成所述目标文件。
9.一种客户端设备,其特征在于,包括:
接收单元,用于接收目标文件的读取请求或写入请求;
获取单元,用于获得所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点;
写入单元,用于在接收的是所述目标文件的写入请求时,获得所述目标文件的存储地址,在所述获取的第一存储节点上写入所述目标文件的存储地址;
读取单元,用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的存储地址,在所述目标文件的存储地址指向的存储空间中读取所述目标文件。
10.根据权利要求9所述的设备,其特征在于,
所述获取单元具体用于在对等P2P存储系统中,获得所述目标文件的全路径文件名,获取所述全路径文件名的特征值作为代表所述目标文件的特征值,所述目标文件的特征值用于代表所述目标文件,根据预先设定的特征值和存储节点的对应关系,获取所述目标文件的特征值对应的第一存储节点。
11.根据权利要求9或10所述的设备,其特征在于,
所述特征值为哈希值;
所述获取单元还用于建立哈希空间,将所述哈希空间划分成至少两个分区,每个所述分区包括至少一个哈希值,确定所述分区与存储节点的对应关系,每个所述存储节点对应至少一个所述分区,每个所述分区对应一个所述存储节点。
12.根据权利要求9或10所述的设备,其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,获得所述目标文件的所述分段的标识ID以及每个所述分段的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID以及每个所述分段的存储地址。
13.根据权利要求12所述的设备,其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述分段的ID以及每个所述分段的存储地址,在每个所述分段的存储地址指向的存储空间读取所述分段,根据所述目标文件的所述分段的ID将所述分段组成所述目标文件。
14.根据权利要求9或10所述的设备,其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,将每个所述分段划分成至少两个分片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
15.根据权利要求14所述的设备,其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时,将所述目标文件划分成至少两个分段,根据可靠性级别要求,确定原始片的数量和校验片的数量,按照所述原始片的数量和校验片的数量,将每个所述分段划分成原始片和校验片,获得所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址。
16.根据权利要求14所述的设备,其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时,在所述获取的第一存储节点上读取所述目标文件的所述分段的ID、所述分段的所述分片的ID以及每个所述分片的存储地址,在每个所述分片的存储地址指向的存储空间中读取所述分片,根据所述目标文件的所述分段的ID和所述分段的所述分片的ID,将所述分片组成所述目标文件。
17.一种客户端设备,其特征在于,包括:处理器,通信接口,存储器和总线:
其中处理器、通信接口、存储器通信总线完成相互间的通信;
所述通信接口,用于接收目标文件的读取请求或写入请求;
所述处理器,用于执行程序;
所述存储器,用于存放程序;
其中所述处理器执行所述程序使得所述客户端设备执行如所述权利要求1-8任一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/085734 WO2014085956A1 (zh) | 2012-12-03 | 2012-12-03 | 数据存储方法和客户端设备及客户端计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104040507A CN104040507A (zh) | 2014-09-10 |
CN104040507B true CN104040507B (zh) | 2017-08-04 |
Family
ID=50882727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280003038.3A Active CN104040507B (zh) | 2012-12-03 | 2012-12-03 | 数据存储方法和客户端设备及客户端计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104040507B (zh) |
WO (1) | WO2014085956A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110803A (zh) * | 2021-04-19 | 2021-07-13 | 浙江中控技术股份有限公司 | 一种数据存储方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727639B (zh) * | 2019-10-08 | 2023-09-19 | 深圳市网心科技有限公司 | 碎片数据读取方法、电子设备、系统及介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010553A1 (en) * | 2002-07-15 | 2004-01-15 | International Business Machines Corporation | Peer to peer location based services |
CN101374087A (zh) * | 2007-08-20 | 2009-02-25 | 华为技术有限公司 | 一种移动自组网络、节点及其区域划分方法 |
US8509407B2 (en) * | 2009-03-23 | 2013-08-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Event identification in peer to peer networks |
CN101710901B (zh) * | 2009-10-22 | 2012-12-05 | 乐视网信息技术(北京)股份有限公司 | 一种具有p2p功能的分布式存储系统和方法 |
CN102055777A (zh) * | 2009-10-29 | 2011-05-11 | 中兴通讯股份有限公司 | 一种通用的内容共享业务的实现方法及系统 |
-
2012
- 2012-12-03 CN CN201280003038.3A patent/CN104040507B/zh active Active
- 2012-12-03 WO PCT/CN2012/085734 patent/WO2014085956A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110803A (zh) * | 2021-04-19 | 2021-07-13 | 浙江中控技术股份有限公司 | 一种数据存储方法及装置 |
CN113110803B (zh) * | 2021-04-19 | 2022-10-21 | 浙江中控技术股份有限公司 | 一种数据存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2014085956A1 (zh) | 2014-06-12 |
CN104040507A (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104361119B (zh) | 一种数据清理的方法及系统 | |
CN102629247B (zh) | 一种数据处理方法、装置和系统 | |
US20160274980A1 (en) | Distributed file system | |
CN103324533B (zh) | 分布式数据处理方法、装置及系统 | |
CN103581331B (zh) | 虚拟机在线迁移方法与系统 | |
CN103973810B (zh) | 基于互联网协议ip盘的数据处理方法和装置 | |
US20100312749A1 (en) | Scalable lookup service for distributed database | |
CN104184812B (zh) | 一种基于私有云的多点数据传输方法 | |
CN104408091A (zh) | 分布式文件系统的数据存储方法及系统 | |
CN1983266A (zh) | 闪速类介质中存储事务记录的文件系统 | |
CN105404561B (zh) | 一种分布式存储的纠删码实现方法及装置 | |
US9940331B1 (en) | Proactive scavenging of file system snaps | |
CN105426375B (zh) | 一种关系网络的计算方法及装置 | |
CN106815218A (zh) | 数据库访问方法、装置和数据库系统 | |
US20130325817A1 (en) | Linear sweep filesystem checking | |
CN108875061A (zh) | 一种分布式文件系统的一致性测试方法及相关装置 | |
CN110427364A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN104536908B (zh) | 一种面向单机的海量小记录高效存储管理方法 | |
CN108228390A (zh) | 数据回档方法及装置 | |
CN107357920A (zh) | 一种增量式的多副本数据同步方法及系统 | |
US20210286766A1 (en) | Validating storage virtualization metadata supporting redirection | |
CN102170466A (zh) | 一种数据处理方法及系统 | |
CN104040507B (zh) | 数据存储方法和客户端设备及客户端计算机程序产品 | |
CN106682021A (zh) | 数据库迁移方法及装置 | |
CN103841168B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |