WO2014085956A1 - 数据存储方法和客户端设备及客户端计算机程序产品 - Google Patents

数据存储方法和客户端设备及客户端计算机程序产品 Download PDF

Info

Publication number
WO2014085956A1
WO2014085956A1 PCT/CN2012/085734 CN2012085734W WO2014085956A1 WO 2014085956 A1 WO2014085956 A1 WO 2014085956A1 CN 2012085734 W CN2012085734 W CN 2012085734W WO 2014085956 A1 WO2014085956 A1 WO 2014085956A1
Authority
WO
WIPO (PCT)
Prior art keywords
target file
segment
storage
storage address
storage node
Prior art date
Application number
PCT/CN2012/085734
Other languages
English (en)
French (fr)
Inventor
孙志敏
程菊生
王晓峰
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2012/085734 priority Critical patent/WO2014085956A1/zh
Priority to CN201280003038.3A priority patent/CN104040507B/zh
Publication of WO2014085956A1 publication Critical patent/WO2014085956A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata

Definitions

  • the memory is configured to store a program
  • the reading unit is specifically configured to: when the read request of the target file is received, in the acquired Reading the ID of the segment of the target file, the ID of the segment of the segment, and the storage address of each of the segments on the first storage node, in the storage of each of the segments
  • the slice is read from a storage space pointed by the address, and the slice is composed of the target file according to an ID of the segment of the target file and an ID of the slice of the segment.
  • Step 101 Receive a read request or a write request of the target file.
  • Step 102 Obtain a feature value of the target file, where the feature value of the target file is used to represent the target file, and obtain the first storage node corresponding to the feature value of the target file according to the preset relationship between the feature value and the storage node.
  • P2P storage systems are different from traditional local storage systems.
  • the directory structure of the local storage system is the same as the actual storage address.
  • the target file A.txt is stored in the directory Document of the C disk under Windows, and the directory structure of the target file is represented by the full path file name.
  • the full path file name of the file is named "C: ⁇ Document ⁇ A.txt".
  • the corresponding storage address of the file is: A.txt file under the Document C under the C disk; and in the P2P storage system, it is displayed to
  • the directory structure of the user's file is inconsistent with the actual storage address of the file in the system.
  • the actual address of the file is not known from the directory structure of the file, and the actual storage address corresponding to the target file needs to be obtained by other means.
  • the fourth partition includes all hash values in the range N 2 50 -N 2 60
  • the fifth partition includes N2TM-hash values
  • seventh The partition includes N2 16 . -l a hash value
  • the sixth partition includes the remaining hash values in the hash space, here, the hash in each partition There is no limit to the number of values.
  • a hash space is first established, and the hash space is composed of a plurality of hash values; then, the hash space is divided into at least two partitions, each partition includes at least one hash value, and a hash value is established. The correspondence between the partitions; Finally, the correspondence between the partition and the storage node is determined; and the correspondence between the hash value and the storage node is obtained. Therefore, in step 102, the first storage node corresponding to the feature value of the target file is obtained according to the preset feature value and the correspondence relationship of the storage node.
  • segment 1 ⁇ segment information (segment ID number, segment offset, segment length) segment storage address (storage node, disk, block number) ⁇ ;
  • segment 2 actual storage address ⁇ segment Information (segment ID number, segment offset, segment length) segment storage address (storage node, disk, block number) ⁇ ;
  • actual storage address of segment N ⁇ segment information (segment ID number, segment Offset, length of the segment) Storage address of the segment (storage node, disk, block number) ⁇ .
  • ID of the segment identifier (ID) is the correspondence between the target file and the segment.
  • the ID number of segment 1 is expressed as: "target file name.1”
  • the ID number of segment 2 is represented as: "object file Name .2”
  • the correspondence is established in turn, the offset of the segment is the offset of the segment relative to the first segment of the file content, the length of the segment is the size of the segment, and the storage address of the segment is the actual storage address of the segment.
  • the original piece is the segmentation of the original data of the target file
  • the check piece is a relation function between the original pieces.
  • the lost original piece can be calculated according to the check piece and the original piece, and the piece is realized. Redundancy, if the reliability requirements are high, the number of slices is relatively large. If the reliability requirement is not high, the number of slices is relatively small.
  • the segmentation is divided into the original slice and the check slice according to the number of the original slice and the check slice.
  • the method of slicing is not limited, and any file slice may be used. Method implementation.
  • the reading unit is specifically configured to: when the read request of the target file is received, read the target file on the acquired first storage node.
  • the ID of the segment, the ID of the fragment of the segment, and the storage address of each of the fragments, and the slice is read in a storage space pointed to by the storage address of each slice, according to the target file.
  • the ID of the segment and the ID of the segmented fragment form the fragment into the object file.

Abstract

提供了一种数据存储方法和客户端设备及客户端计算机程序产品。数据存储方法包括:获取目标文件的特征值,获取特征值对应的第一存储节点,将目标文件的存储地址写入到目标文件特征值对应的第一存储节点上,或者从第一存储节点上读取目标文件的存储地址,在存储地址指向的存储空间读取目标文件。采用上述数据存储方法,提高了存储可靠性。

Description

数据存储方法和客户端设备及客户端计算机程序产品 技术领域 本发明涉及数据存储技术, 尤其涉及一种数据存储方法和客户端设备 及客户端计算机程序产品。 背景技术
随着互联网 (简称 Internet )技术和计算机技术的不断发展, 基于对等 ( Peer to peer, 简称 P2P ) 的分布式存储系统也随之快速发展。
P2P存储系统 ,多个存储节点以一种功能对等的方式组成一个存储网络 , 将不同的文件存储在各个节点上, 将记录文件与文件对应的存储地址的位置 关系表存放于中心服务器。 当客户端需要读写文件时, 通过向中心服务器发 出读写请求, 从中心服务器存储的位置关系表中读取待读写的文件对应的存 储地址, 然后将该文件读写到相应的存储地址对应的 P2P节点中, 完成文件 的读写操作。
釆用上述现有的 P2P存储系统, 将文件与文件对应的存储地址的位置关 系表存放于单一的中心服务器, 中心服务器成为可靠性的焦点, 中心服务器 发生故障会导致 P2P存储系统发生读写错误甚至瘫痪, 因此, 现有的 P2P存 储系统的可靠性差。 发明内容
本发明实施例提供数据存储方法和客户端设备及客户端计算机程序 产品, 以解决现有技术的缺陷, 提高数据存储的可靠性。
第一方面, 一种数据存储方法, 包括:
接收目标文件的读取请求或写入请求;
获得所述目标文件的特征值, 所述目标文件的特征值用于代表所述目 标文件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文 件的特征值对应的第一存储节点;
当接收的是所述目标文件的写入请求时, 获得所述目标文件的存储地 址, 在所述获取的第一存储节点上写入所述目标文件的存储地址; 当接收的是所述目标文件的读取请求时, 在所述获取的第一存储节点 上读取所述目标文件的存储地址, 在所述目标文件的存储地址指向的存储 空间中读取所述目标文件。
结合第一方面, 在第一种可能的实现方式中, 所述获得所述目标文件 的特征值包括:
在对等 Ρ2Ρ存储系统中, 获得所述目标文件的全路径文件名, 获取所 述全路径文件名的特征值作为代表所述目标文件的特征值。
结合第一方面或第一方面的第一种可能的实现方式, 在第二种可能的 实现方式中, 所述特征值为哈希值;
所述预先设定的特征值和存储节点的对应关系通过下面方法建立: 建立哈希空间;
将所述哈希空间划分成至少两个分区, 每个所述分区包括至少一个哈 希值;
确定所述分区与存储节点的对应关系, 每个所述存储节点对应至少一 个所述分区, 每个所述分区对应一个所述存储节点。
结合第一方面或第一方面的第一种至第二种可能的实现方式中的任 一种可能的实现方式, 在第三种可能的实现方式中, 所述方法还包括: 当 接收的是所述目标文件的写入请求时, 将所述目标文件划分成至少两个分 段;
所述获得所述目标文件的存储地址包括: 获得所述目标文件的所述分 段的标识 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, 将所述分片组成所述目标文件。
第三方面, 一种客户端设备, 包括: 处理器, 通信接口, 存储器和总 线:
其中处理器、 通信接口、 存储器通信总线完成相互间的通信; 所述通信接口, 用于接收目标文件的读取请求或写入请求;
所述处理器, 用于执行程序;
所述存储器, 用于存放程序;
其中程序可以包括:
获取单元, 用于获得所述目标文件的特征值, 所述目标文件的特征值 用于代表所述目标文件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文件的特征值对应的第一存储节点;
写入单元, 用于在接收的是所述目标文件的写入请求时, 获得所述目 标文件的存储地址, 在所述获取的第一存储节点上写入所述目标文件的存 储地址;
读取单元, 用于在接收的是所述目标文件的读取请求时, 在所述获取 的第一存储节点上读取所述目标文件的存储地址, 在所述目标文件的存储 地址指向的存储空间中读取所述目标文件。 结合第三方面, 在第一种可能的实现方式中, 所述获取单元具体用于 在对等 P2P存储系统中, 获得所述目标文件的全路径文件名, 获取所述全 路径文件名的特征值作为代表所述目标文件的特征值, 所述目标文件的特 征值用于代表所述目标文件, 根据预先设定的特征值和存储节点的对应关 系, 获取所述目标文件的特征值对应的第一存储节点。
结合第三方面或第三方面的第一种可能的实现方式, 在第二种可能的 实现方式中, 所述特征值为哈希值;
所述获取单元还用于建立哈希空间, 将所述哈希空间划分成至少两个 分区, 每个所述分区包括至少一个哈希值, 确定所述分区与存储节点的对 应关系, 每个所述存储节点对应至少一个所述分区, 每个所述分区对应一 个所述存储节点。
结合第三方面或第三方面的第一种可能的实现方式至第二种可能的 实现方式中任一种可能的实现方式, 在第三种可能的实现方式中, 所述写 入单元具体用于在接收的是所述目标文件的写入请求时, 将所述目标文件 划分成至少两个分段, 获得所述目标文件的所述分段的标识 ID以及每个 所述分段的存储地址, 在所述获取的第一存储节点上写入所述目标文件的 所述分段的 ID以及每个所述分段的存储地址。
结合第三方面的第三种可能的实现方式, 在第四种可能的实现方式 中, 所述读取单元具体用于在接收的是所述目标文件的读取请求时, 在所 述获取的第一存储节点上读取所述分段的 ID以及每个所述分段的存储地 址, 在每个所述分段的存储地址指向的存储空间读取所述分段, 根据所述 目标文件的所述分段的 ID将所述分段组成所述目标文件。
结合第三方面或第三方面的第一种至第二种可能的实现方式中任一 种可能的实现方式, 在第五种可能的实现方式中, 所述写入单元具体用于 在接收的是所述目标文件的写入请求时, 将所述目标文件划分成至少两个 分段, 将每个所述分段划分成至少两个分片, 获得所述目标文件的所述分 段的 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 " , 而该目标文件的实际存储地址要根据元数据文 件获知。 在本发明的下述实施例中, 提出一种根据目标文件的特征值确定 存储节点, 根据该存储节点存储的元数据文件获知实际存储地址, 从而实 现数据存储的方法以及釆用该方法的 Ρ2Ρ存储系统。
上述目标文件指待存储的文件或待读取的文件, 对于待存储的文件, 其目标文件的全路径文件名为展示给用户的该文件将要存入的目录, 例 如, 如果要将文件 "A.txt" 存入目录 "/root/namespace-2/,, 中, 则全路径文 件名为 "/root/namespace-2/A.txt" 。 对于待读取的文件, 其目标文件的全路 径文件名为展示给用户的当前存储该文件的目录, 例如, 如果从目录 " /root/namespace-2/ " 中读取文件 " A.txt " , 则全路径文件名为 "/root/namespace-2/A.txt"。 目标文件的全路径文件名具有唯一' 1 "生, 因此通 过目标文件的全路径文件名进行计算, 获得的目标文件的全路径文件名特 征值也具有唯一性, 即一个目标文件的全路径文件名对应唯一特征值。
本发明实施例对获取全路径文件名的方法不做限制, 其中, 获取全路 径文件名的一种可行的实施方式可以为: 获取用户读写指令, 从该读写指 令中获取全路径文件名, 在读文件的过程中, 例如, 用户是预先知道目标 文件 的存储 目 录的 , 例 如 目 标文件 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-N2115范 围内的所有哈希值, 第二分区包括 N22°—个哈希值, 第三分区包括
N 230 -N 24Q范围内的所有的哈希值, 第四分区包括 N 250 -N 260范围内的所有 的哈希值, 第五分区包括 N2™—个哈希值, 第七分区包括 N216。-l一个哈 希值, 第六分区包括哈希空间中剩余的哈希值, 在此, 对每个分区中哈希 值的数目也不做限制。
最后, 确定分区与存储节点的对应关系, 每个存储节点对应至少一个 分区, 每个分区对应一个存储节点。 将至少存在两个分区的哈希空间中的 分区与存储节点建立对应的关系, 每个存储节点对应至少一个分区。 表 1 为分区与存储节点映射关系表, 对于图 2所示的哈希空间, 其分区与存储 节点映射关系表如表 1所示。
分区与存储节点映射关系表
Figure imgf000016_0001
在本实施例中, 首先建立哈希空间, 哈希空间由若干哈希值组成; 然 后, 将哈希空间划分至少两个分区, 每个分区包括至少一个哈希值, 建立 了哈希值与分区之间的对应关系; 最后, 通过确定分区与存储节点的对应 关系; 进而得到哈希值与存储节点的对应关系。 从而可以在步骤 102中根 据该预设的特征值和存储节点的对应关系, 获取目标文件的特征值对应的 第一存储节点。 在步骤 103中, 在获取的第一存储节点上写入目标文件的 存储地址, 或者, 当目标文件的存储地址存储在元数据, 则在获取的第一 存储节点上存储有目标文件的存储地址的元数据。 在步骤 S 104中, 在获 取的第一存储节点上读取目标文件的存储地址, 或者, 当目标文件的存储 地址存储在元数据中, 在获取的第一存储节点上读取目标文件的元数据, 从读取的元数据中获取目标文件的存储地址, 根据获取的存储地址读取目 标文件。
下面釆用几个实施例, 对图 1所示方法实施例的技术方案进行详细说 明。 客户端接收目标文件的写入请求之后, 还可以包括对目标文件的预处 理过程, 上述对目标文件的预处理过程可以釆用两种方式:
预处理过程的第一种方式: 客户端将目标文件划分成至少两个分段。 上述分段的数目根据分段的大小而定。 分段的大小可以设置成一个固定 值, 最后一段的大小是等于或小于设置的固定值, 分段的大小默认值为
64M, 也可以设置成其他值, 如 128K, 256K, 512K, 1M, 2M, 4M, 8M, 16M, 32M等。 或者, 分段的大小也可以设置成不同长度的大小, 如第 1 段长为 128K,第 2段长为 256K。本发明实施例中对分段的方法不做限制, 可以釆用任何文件分段的方法实现。 只指定第一个分段的存储地址, 按照预定规则获取其他分段的存储地址, 例如, 每个分段存储于相邻存储节点的相同位置, 即第一个分段存储在存 储节点 1的 D磁盘的第 10块中, 则第二个分段存储在存储节点 2的 D磁 盘的第 10块中, 依次类推, 获取到其他分段的存储地址, 预定规则本发 明对此不做限制。
相应地, 目标文件的分段以及每个分段的存储地址, 包括, 目标文件 与分段的对应关系以及每个分段与存储地址的对应关系, 例如, 将目标文 件分为 Ν段, 段 1、 段 2 段 Ν, 目标文件与分段的对应关系可以 表示为如下形式:
目标文件的组成 ={段 1、 段 2 段 Ν} ;
每个分段与存储地址的对应关系可以表示为如下形式:
段 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

权 利 要 求 书
1、 一种数据存储方法, 其特征在于, 包括:
接收目标文件的读取请求或写入请求;
获得所述目标文件的特征值, 所述目标文件的特征值用于代表所述目 标文件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文 件的特征值对应的第一存储节点;
当接收的是所述目标文件的写入请求时, 获得所述目标文件的存储地 址, 在所述获取的第一存储节点上写入所述目标文件的存储地址;
当接收的是所述目标文件的读取请求时, 在所述获取的第一存储节点 上读取所述目标文件的存储地址, 在所述目标文件的存储地址指向的存储 空间中读取所述目标文件。
2、 根据权利要求 1所述的方法, 其特征在于, 所述获得所述目标文 件的特征值包括:
在对等 P2P存储系统中, 获得所述目标文件的全路径文件名, 获取所 述全路径文件名的特征值作为代表所述目标文件的特征值。
3、 根据权利要求 1或 2所述的方法, 其特征在于, 所述特征值为哈 希值;
所述预先设定的特征值和存储节点的对应关系通过下面方法建立: 建立哈希空间;
将所述哈希空间划分成至少两个分区, 每个所述分区包括至少一个哈 希值;
确定所述分区与存储节点的对应关系, 每个所述存储节点对应至少 ― 个所述分区, 每个所述分区对应一个所述存储节点。
4、 根据权利要求 1〜3任一项所述的方法, 其特征在于, 还包括: 当 接收的是所述目标文件的写入请求时, 将所述目标文件划分成至少两个分 段;
所述获得所述目标文件的存储地址包括: 获得所述目标文件的所述分 段的标识 ID以及每个所述分段的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包 括: 在所述获取的第一存储节点上写入所述目标文件的所述分段的 ID以 及每个所述分段的存储地址。
5、 根据权利要求 4所述的方法, 其特征在于,
在所述获取的第一存储节点上写入所述目标文件的所述分段的 ID以 及每个所述分段的存储地址之后, 读取所述目标文件包括: 在每个所述分 段的存储地址指向的存储空间读取所述分段, 根据所述目标文件的所述分 段的 ID将所述分段组成所述目标文件。
6、 根据权利要求 1〜3任一项所述的方法, 其特征在于,
还包括: 当接收的是所述目标文件的写入请求时, 将所述目标文件划 分成至少两个分段, 将每个所述分段划分成至少两个分片;
所述获得所述目标文件的存储地址包括: 获得所述目标文件的所述分 段的 ID、 所述分段的所述分片的 ID以及每个所述分片的存储地址;
所述在所述获取的第一存储节点上写入所述目标文件的存储地址包 括: 在所述获取的第一存储节点上写入所述目标文件的所述分段的 ID、所 述分段的所述分片的 ID以及每个所述分片的存储地址。
7、 根据权利要求 6所述的方法, 其特征在于, 所述将每个所述分段 划分成至少两个分片包括:
根据可靠性级别要求, 确定原始片的数量和校验片的数量;
按照所述原始片的数量和校验片的数量, 将每个所述分段划分成原始 片和校验片。
8、 根据权利要求 6所述的方法, 其特征在于,
在所述获取的第一存储节点上写入所述目标文件的所述分段的 ID、所 述分段的所述分片的 ID以及每个所述分片的存储地址之后, 读取所述目 标文件包括: 在每个所述分片的存储地址指向的存储空间中读取所述分 片, 根据所述目标文件的所述分段的 ID和所述分段的所述分片的 ID, 将 所述分片组成所述目标文件。
9、 一种客户端设备, 其特征在于, 包括:
接收单元, 用于接收目标文件的读取请求或写入请求;
获取单元, 用于获得所述目标文件的特征值, 所述目标文件的特征值 用于代表所述目标文件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文件的特征值对应的第一存储节点; 写入单元, 用于在接收的是所述目标文件的写入请求时, 获得所述目 标文件的存储地址, 在所述获取的第一存储节点上写入所述目标文件的存 储地址;
读取单元, 用于在接收的是所述目标文件的读取请求时, 在所述获取 的第一存储节点上读取所述目标文件的存储地址, 在所述目标文件的存储 地址指向的存储空间中读取所述目标文件。
10、 根据权利要求 9所述的设备, 其特征在于,
所述获取单元具体用于在对等 P2P存储系统中,获得所述目标文件的 全路径文件名, 获取所述全路径文件名的特征值作为代表所述目标文件的 特征值和存储节点的对应关系, 获取所述目标文件的特征值对应的第一存 储节点。
11、 根据权利要求 9或 10所述的设备, 其特征在于,
所述特征值为哈希值;
所述获取单元还用于建立哈希空间, 将所述哈希空间划分成至少两个 分区, 每个所述分区包括至少一个哈希值, 确定所述分区与存储节点的对 应关系, 每个所述存储节点对应至少一个所述分区, 每个所述分区对应一 个所述存储节点。
12、 根据权利要求 9〜11任一项所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段,获得所述目标文件的所述分段的标识 ID 以及每个所述分段的存储地址, 在所述获取的第一存储节点上写入所述目 标文件的所述分段的 ID以及每个所述分段的存储地址。
13、 根据权利要求 12所述的设备, 其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时, 在所 述获取的第一存储节点上读取所述分段的 ID以及每个所述分段的存储地 址, 在每个所述分段的存储地址指向的存储空间读取所述分段, 根据所述 目标文件的所述分段的 ID将所述分段组成所述目标文件。
14、 根据权利要求 9〜11任一项所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段, 将每个所述分段划分成至少两个分片, 获得所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID以及每个 所述分片的存储地址, 在所述获取的第一存储节点上写入所述目标文件的 所述分段的 ID、所述分段的所述分片的 ID以及每个所述分片的存储地址。
15、 根据权利要求 14所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段, 根据可靠性级别要求, 确定原始片的数 量和校验片的数量, 按照所述原始片的数量和校验片的数量, 将每个所述 分段划分成原始片和校验片, 获得所述目标文件的所述分段的 ID、所述分 段的所述分片的 ID以及每个所述分片的存储地址, 在所述获取的第一存 储节点上写入所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID 以及每个所述分片的存储地址。
16、 根据权利要求 14所述的设备, 其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时, 在所 述获取的第一存储节点上读取所述目标文件的所述分段的 ID、所述分段的 所述分片的 ID以及每个所述分片的存储地址, 在每个所述分片的存储地 址指向的存储空间中读取所述分片, 根据所述目标文件的所述分段的 ID 和所述分段的所述分片的 ID, 将所述分片组成所述目标文件。
17、 一种客户端设备, 其特征在于, 包括: 处理器, 通信接口, 存储 器和总线:
其中处理器、 通信接口、 存储器通信总线完成相互间的通信; 所述通信接口, 用于接收目标文件的读取请求或写入请求;
所述处理器, 用于执行程序;
所述存储器, 用于存放程序;
其中程序可以包括:
获取单元, 用于获得所述目标文件的特征值, 所述目标文件的特征值 用于代表所述目标文件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文件的特征值对应的第一存储节点;
写入单元, 用于在接收的是所述目标文件的写入请求时, 获得所述目 标文件的存储地址, 在所述获取的第一存储节点上写入所述目标文件的存 储地址;
读取单元, 用于在接收的是所述目标文件的读取请求时, 在所述获取 的第一存储节点上读取所述目标文件的存储地址, 在所述目标文件的存储 地址指向的存储空间中读取所述目标文件。
18、 根据权利要求 17所述的设备, 其特征在于,
所述获取单元具体用于在对等 P2P存储系统中,获得所述目标文件的 全路径文件名, 获取所述全路径文件名的特征值作为代表所述目标文件的 特征值和存储节点的对应关系, 获取所述目标文件的特征值对应的第一存 储节点。
19、 根据权利要求 17或 18所述的设备, 其特征在于,
所述特征值为哈希值;
所述获取单元还用于建立哈希空间, 将所述哈希空间划分成至少两个 分区, 每个所述分区包括至少一个哈希值, 确定所述分区与存储节点的对 应关系, 每个所述存储节点对应至少一个所述分区, 每个所述分区对应一 个所述存储节点。
20、 根据权利要求 17〜19任一项所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段,获得所述目标文件的所述分段的标识 ID 以及每个所述分段的存储地址, 在所述获取的第一存储节点上写入所述目 标文件的所述分段的 ID以及每个所述分段的存储地址。
21、 根据权利要求 20所述的设备, 其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时, 在所 述获取的第一存储节点上读取所述分段的 ID以及每个所述分段的存储地 址, 在每个所述分段的存储地址指向的存储空间读取所述分段, 根据所述 目标文件的所述分段的 ID将所述分段组成所述目标文件。
22、 根据权利要求 17〜19任一项所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段, 将每个所述分段划分成至少两个分片, 获得所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID以及每个 所述分片的存储地址, 在所述获取的第一存储节点上写入所述目标文件的 所述分段的 ID、所述分段的所述分片的 ID以及每个所述分片的存储地址。
23、 根据权利要求 22所述的设备, 其特征在于,
所述写入单元具体用于在接收的是所述目标文件的写入请求时, 将所 述目标文件划分成至少两个分段, 根据可靠性级别要求, 确定原始片的数 量和校验片的数量, 按照所述原始片的数量和校验片的数量, 将每个所述 分段划分成原始片和校验片, 获得所述目标文件的所述分段的 ID、所述分 段的所述分片的 ID以及每个所述分片的存储地址, 在所述获取的第一存 储节点上写入所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID 以及每个所述分片的存储地址。
24、 根据权利要求 22所述的设备, 其特征在于,
所述读取单元具体用于在接收的是所述目标文件的读取请求时, 在所 述获取的第一存储节点上读取所述目标文件的所述分段的 ID、所述分段的 所述分片的 ID以及每个所述分片的存储地址, 在每个所述分片的存储地 址指向的存储空间中读取所述分片, 根据所述目标文件的所述分段的 ID 和所述分段的所述分片的 ID, 将所述分片组成所述目标文件。
25、 一种客户端计算机程序产品, 其特征在于, 包括存储了程序代码 的计算机可读存储介质;
所述程序代码包括的指令用于接收目标文件的读取请求或写入请求, 获得所述目标文件的特征值, 所述目标文件的特征值用于代表所述目标文 件, 根据预先设定的特征值和存储节点的对应关系, 获取所述目标文件的 特征值对应的第一存储节点, 当接收的是所述目标文件的写入请求时, 获 得所述目标文件的存储地址, 在所述获取的第一存储节点上写入所述目标 文件的存储地址, 当接收的是所述目标文件的读取请求时, 在所述获取的 第一存储节点上读取所述目标文件的存储地址, 在所述目标文件的存储地 址指向的存储空间中读取所述目标文件。
26、 根据权利要求 25所述的计算机程序产品, 其特征在于, 所述程序代码包括的指令具体用于在对等 P2P存储系统中,获得所述 目标文件的全路径文件名, 获取所述全路径文件名的特征值作为代表所述 预先设定的特征值和存储节点的对应关系, 获取所述目标文件的特征值对 应的第一存储节点。
27、 根据权利要求 25或 26所述的计算机程序产品, 其特征在于, 所述特征值为哈希值;
所述程序代码包括的指令具体用于建立哈希空间, 将所述哈希空间划 分成至少两个分区, 每个所述分区包括至少一个哈希值, 确定所述分区与 存储节点的对应关系, 每个所述存储节点对应至少一个所述分区, 每个所 述分区对应一个所述存储节点。
28、根据权利要求 25〜27任一项所述的计算机程序产品,其特征在于, 所述程序代码包括的指令还用于在接收的是所述目标文件的写入请 求时, 将所述目标文件划分成至少两个分段, 获得所述目标文件的所述分 段的标识 ID以及每个所述分段的存储地址, 在所述获取的第一存储节点 上写入所述目标文件的所述分段的 ID以及每个所述分段的存储地址。
29、 根据权利要求 28所述的计算机程序产品, 其特征在于, 所述程序代码包括的指令具体用于在接收的是所述目标文件的读取 请求时, 在所述获取的第一存储节点上读取所述分段的 ID以及每个所述 分段的存储地址, 在每个所述分段的存储地址指向的存储空间读取所述分 段, 根据所述目标文件的所述分段的 ID将所述分段组成所述目标文件。
30、根据权利要求 25〜27任一项所述的计算机程序产品,其特征在于, 所述程序代码包括的指令还用于当接收的是所述目标文件的写入请 求时, 将所述目标文件划分成至少两个分段, 将每个所述分段划分成至少 两个分片, 获得所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID以及每个所述分片的存储地址,在所述获取的第一存储节点上写入所述 目标文件的所述分段的 ID、 所述分段的所述分片的 ID以及每个所述分片 的存储地址。
31、 根据权利要求 30所述的计算机程序产品, 其特征在于, 所述程序代码包括的指令具体用于在接收的是所述目标文件的写入 请求时, 将所述目标文件划分成至少两个分段, 根据可靠性级别要求, 确 定原始片的数量和校验片的数量, 按照所述原始片的数量和校验片的数 量, 将每个所述分段划分成原始片和校验片, 获得所述目标文件的所述分 段的 ID、 所述分段的所述分片的 ID以及每个所述分片的存储地址, 在所 述获取的第一存储节点上写入所述目标文件的所述分段的 ID、所述分段的 所述分片的 ID以及每个所述分片的存储地址。
32、 根据权利要求 30所述的计算机程序产品, 其特征在于, 所述程序代码包括的指令具体用于在接收的是所述目标文件的读取 请求时, 在所述获取的第一存储节点上读取所述目标文件的所述分段的 ID、 所述分段的所述分片的 ID以及每个所述分片的存储地址, 在每个所 述分片的存储地址指向的存储空间中读取所述分片, 根据所述目标文件的 所述分段的 ID和所述分段的所述分片的 ID, 将所述分片组成所述目标文 件。
PCT/CN2012/085734 2012-12-03 2012-12-03 数据存储方法和客户端设备及客户端计算机程序产品 WO2014085956A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2012/085734 WO2014085956A1 (zh) 2012-12-03 2012-12-03 数据存储方法和客户端设备及客户端计算机程序产品
CN201280003038.3A CN104040507B (zh) 2012-12-03 2012-12-03 数据存储方法和客户端设备及客户端计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/085734 WO2014085956A1 (zh) 2012-12-03 2012-12-03 数据存储方法和客户端设备及客户端计算机程序产品

Publications (1)

Publication Number Publication Date
WO2014085956A1 true WO2014085956A1 (zh) 2014-06-12

Family

ID=50882727

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/085734 WO2014085956A1 (zh) 2012-12-03 2012-12-03 数据存储方法和客户端设备及客户端计算机程序产品

Country Status (2)

Country Link
CN (1) CN104040507B (zh)
WO (1) WO2014085956A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727639B (zh) * 2019-10-08 2023-09-19 深圳市网心科技有限公司 碎片数据读取方法、电子设备、系统及介质
CN113110803B (zh) * 2021-04-19 2022-10-21 浙江中控技术股份有限公司 一种数据存储方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 一种移动自组网络、节点及其区域划分方法
CN101710901A (zh) * 2009-10-22 2010-05-19 乐视网信息技术(北京)股份有限公司 一种具有p2p功能的分布式存储系统和方法
WO2010108535A1 (en) * 2009-03-23 2010-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Event identification in peer to peer networks
CN102055777A (zh) * 2009-10-29 2011-05-11 中兴通讯股份有限公司 一种通用的内容共享业务的实现方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 一种移动自组网络、节点及其区域划分方法
WO2010108535A1 (en) * 2009-03-23 2010-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Event identification in peer to peer networks
CN101710901A (zh) * 2009-10-22 2010-05-19 乐视网信息技术(北京)股份有限公司 一种具有p2p功能的分布式存储系统和方法
CN102055777A (zh) * 2009-10-29 2011-05-11 中兴通讯股份有限公司 一种通用的内容共享业务的实现方法及系统

Also Published As

Publication number Publication date
CN104040507A (zh) 2014-09-10
CN104040507B (zh) 2017-08-04

Similar Documents

Publication Publication Date Title
US10459649B2 (en) Host side deduplication
WO2017201977A1 (zh) 一种数据写、读方法、装置及分布式对象存储集群
US10976932B2 (en) Method for providing a client device access to a plurality of remote storage devices
CN106547859B (zh) 一种多租户数据存储系统下的数据文件的存储方法及装置
US20190245918A1 (en) Distributed replication of an object
WO2017049764A1 (zh) 数据读写方法及分布式存储系统
US10013166B2 (en) Virtual tape library system
CN109684414B (zh) 区块数据的同步方法、装置、设备及存储介质
AU2018355092B2 (en) Witness blocks in blockchain applications
JP6264666B2 (ja) データ格納方法、データストレージ装置、及びストレージデバイス
CN110651246B (zh) 一种数据读写方法、装置和存储服务器
US20190146882A1 (en) Journal-less recovery for nested crash-consistent storage systems
WO2014180232A1 (zh) 请求响应方法、装置及分布式文件系统
WO2021237467A1 (zh) 文件上传方法、文件下载方法和文件管理装置
US10846338B2 (en) Data processing device, data processing method, and non-transitory computer readable medium
WO2017097106A1 (zh) 一种文件差量的传输方法以及装置
JP7139347B2 (ja) 散在ストレージ・ネットワークにおけるデータ・コンテンツの部分更新の方法
CN113157487B (zh) 数据恢复方法及其设备
US20230133533A1 (en) Snapshot copy operation between endpoints
CN105187565A (zh) 一种利用网络存储数据的方法
WO2014085956A1 (zh) 数据存储方法和客户端设备及客户端计算机程序产品
EP2936319B1 (en) Virtual tape library system
JP6376626B2 (ja) データ格納方法、データストレージ装置、及びストレージデバイス
CN105549912A (zh) 同时包含多种类操作系统的服务器集群的存储方法
CN105162891A (zh) 一种基于ip网络的数据存储方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12889715

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12889715

Country of ref document: EP

Kind code of ref document: A1