CN107844268A - 一种数据分发方法、数据存储方法、相关装置以及系统 - Google Patents

一种数据分发方法、数据存储方法、相关装置以及系统 Download PDF

Info

Publication number
CN107844268A
CN107844268A CN201710943780.7A CN201710943780A CN107844268A CN 107844268 A CN107844268 A CN 107844268A CN 201710943780 A CN201710943780 A CN 201710943780A CN 107844268 A CN107844268 A CN 107844268A
Authority
CN
China
Prior art keywords
data
data segment
bands
memory node
distributed
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.)
Granted
Application number
CN201710943780.7A
Other languages
English (en)
Other versions
CN107844268B (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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710943780.7A priority Critical patent/CN107844268B/zh
Publication of CN107844268A publication Critical patent/CN107844268A/zh
Application granted granted Critical
Publication of CN107844268B publication Critical patent/CN107844268B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例公开了一种数据分发方法,用于提升分布式存储系统的性能。本发明实施例方法包括:数据分发装置接收用户的存储指令,将存储指令指示存储的待存储的数据划分为P个数据段,并确定每个数据段对应的存储节点组,最后将每个数据段分发到对应的存储节点组的主节点上。本发明实施例还提供了相关的数据存储方法、相关装置以及系统。

Description

一种数据分发方法、数据存储方法、相关装置以及系统
技术领域
本发明涉及数据存储领域,尤其涉及一种数据分发方法、数据存储方法、相关装置以及系统。
背景技术
现阶段的分布式存储系统越来越多的采用纠删码(EC,Erasure Code)技术对数据进行存储。纠删码技术原理是将数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一个EC条带。每个EC条带能容忍k个数据块或者校验块的丢失。
在纠删码技术中,数据分发装置对数据进行EC编码,生成m个数据块与k个校验块后分发给m+k个存储节点。若有多个数据分发装置同时读写相同的EC条带的数据,则需要使用分布式锁来解决多个数据分发装置之间的冲突问题。
但是若采用分布式锁方式来解决多数据分发装置冲突的问题,则当遇到上层应用在不同数据分发装置分发IO的情况时,将导致数据分发装置之间频繁的抢锁和锁切换。由于锁切换是一种较为费时的操作,因此频繁的锁切换会产生较大的读写时延,不能满足实际应用的需求。
发明内容
本发明实施例提供了一种数据分发方法,用于提升分布式存储系统的读写性能。
本发明实施例的第一方面提供了一种数据分发方法,应用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述方法包括:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述将所述待存储的数据划分为P个数据段包括:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第三种实现方式还包括:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述确定所述每个数据段对应的存储节点组包括:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第一方面的第三种实现方式,本发明实施例的第一方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述预先设置并记录所述每个逻辑区域与所述每个存储节点组的对应关系包括:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组包括:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第二方面提供了一种数据存储方法,适用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述多个存储节点组中的任意一个存储节点组的主存储节点执行所述数据存储方法,所述方法包括:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第二种实现方式中,在所述将所述第一EC条带分发给m+k个存储节点以执行存储之前,所述方法还包括:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述将所述第一EC条带分发给m+k个存储节点以执行存储具体包括:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第二方面的第二种实现方式,本发明实施例的第二方面的第三种实现方式中,所述确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点以执行存储包括:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第四种实现方式中,在根据所述第一数据段进行EC编码得到第一EC条带之前还包括:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第二方面、第二方面的第一种至第四种实现方式中的任一项,本发明实施例的第二方面的第五种实现方式中,所述根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块包括:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第三方面提供了一种数据分发装置,应用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据分发装置包括:
指令接收模块,用于接收存储指令,所述存储指令携带待存储的数据;
数据段划分模块,用于将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
节点组确定模块,用于确定所述每个数据段对应的存储节点组;
数据段分发模块,用于将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述数据段划分模块具体用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。
结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第三种实现方式中,所述数据分发装置还包括:
关系对应模块,用于预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述节点组确定模块具体用于:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第三方面的第三种实现方式,本发明实施例的第三方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述关系对应模块具体用于:
预先设置并记录所述每个存储节点组对应的key值k;
所述节点组确定模块具体用于:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第四方面提供了一种数据存储装置,适用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据存储装置部署在所述多个存储节点组中的任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据接收模块,用于接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
数据编码模块,用于根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块,用于将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第二种实现方式中,所述数据接收模块还用于:接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
所述数据编码模块还用于:根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述数据分发模块具体用于:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第四方面的第二种实现方式,本发明实施例的第四方面的第三种实现方式中,所述数据分发模块具体用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第四种实现方式中,所述数据接收模块还用于:
确定是否接收到第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
所述数据编码模块还用于:在所述数据接收模块确定接收到所述第三数据段后,将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第四方面、或第四方面的第一种至第四种实现方式中的任一项,本发明实施例的第四方面的第五种实现方式中,所述数据编码模块还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第五方面提供了一种数据分发装置,所述数据分发装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,处理器用于:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第五方面,本发明实施例的第五方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述处理器还用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第五方面的第一种实现方式,本发明实施例的第五方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第五方面的第一种实现方式,本发明实施例的第五方面的第三种实现方式中,所述处理器还用于:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第五方面的第三种实现方式,本发明实施例的第五方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述处理器还用于:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第六方面提供了一种数据存储装置,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第六方面,本发明实施例的第六方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第六方面的第一种实现方式,本发明实施例的第六方面的第二种实现方式中,所述处理器还用于:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第六方面的第二种实现方式,本发明实施例的第六方面的第三种实现方式中,所述处理器还用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第六方面的第一种实现方式,本发明实施例的第六方面的第四种实现方式中,所述处理器还用于:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第六方面、第六方面的第一种至第四种实现方式中的任一项,本发明实施例的第六方面的第五种实现方式中,所述处理器还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第七方面提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
结合本发明实施例的第七方面,本发明实施例的第七方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述计算机还执行如下方法:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
结合本发明实施例的第七方面的第一种实现方式,本发明实施例的第七方面的第二种实现方式中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
结合本发明实施例的第七方面的第一种实现方式,本发明实施例的第七方面的第三种实现方式中,所述计算机还执行如下方法:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
结合本发明实施例的第七方面的第三种实现方式,本发明实施例的第七方面的第四种实现方式中,每个所述逻辑区域唯一对应一个key值,所述计算机还执行如下方法:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
本发明实施例的第八方面提供了一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
结合本发明实施例的第八方面,本发明实施例的第八方面的第一种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第二种实现方式中,所述计算机还执行如下方法:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
结合本发明实施例的第八方面的第二种实现方式,本发明实施例的第八方面的第三种实现方式中,所述计算机还执行如下方法:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第四种实现方式中,所述计算机还执行如下方法:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
结合本发明实施例的第八方面、第八方面的第一种至第四种实现方式中的任一项,本发明实施例的第八方面的第五种实现方式中,所述计算机还执行如下方法:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例的第九方面提供了一种分布式存储系统,包括多个存储节点,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述存储系统还包括如本发明实施例第四方面、第四方面的第一种至第五种实现方式中的任一项所提供的数据存储装置,或本发明实施例第六方面、第六方面的第一种至第五种实现方式中的任一项所提供的数据存储装置,或本发明实施例第八方面、第八方面的第一种至第五种实现方式中的任一项所提供的计算机可读介质。
本发明实施例提供的数据分发方法中,数据分发装置确定待存储的数据;将所述待存储的数据按照所述存储区域进行划分,得到P个数据段;确定每段数据段对应的节点组;将每段数据段分发到对应的节点组的主节点上。本发明实施例中数据分发装置将待存储的数据划分为预置的大小后分发给分布式存储系统的节点组中的主节点,交由主节点进行EC编码,数据分发装置本身不对数据进行EC编码,这样就不存在多个数据分发装置同时读写相同的EC条带的数据的问题,数据分发装置之间不存在冲突。因此,本发明实施例中数据分发装置之间无需使用分布式锁来解决数据分发装置之间的读写冲突,进而不会因抢锁而造成读写时延,提升了分布式存储系统的读写性能,能够满足实际应用的需求。
附图说明
图1(a)为EC条带的结构图;
图1(b)为本发明实施例中分布式存储系统的一个结构示意图;
图2为本发明实施例中数据分发方法一个实施例流程图;
图3为本发明实施例中数据存储方法一个实施例流程图;
图4为本发明实施例中数据分发装置一个实施例结构图;
图5为本发明实施例中数据存储装置一个实施例结构图;
图6为本发明实施例中数据分发装置另一个实施例结构图;
图7为本发明实施例中数据存储装置另一个实施例结构图。
具体实施方式
本发明实施例提供了一种数据分发方法,用于提升分布式存储系统的性能。本发明实施例还提供了相关的数据存储方法、相关装置以及系统,以下将分别进行描述。
分布式存储系统中包括多个存储节点。上层的数据分发装置将待存储的数据分为多个数据块,然后分发给分布式存储系统的多个存储节点进行存储。将数据分布式存储能够降低数据丢失的风险,提高分布式存储系统的可靠性。其中,数据分发装置可以为客户端、服务器或其他设备。
EC技术原理是将待存储的数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一条EC条带,EC条带的基本结构请参阅图1(a)。其中,每个数据块或校验块也可以称为一个EC block。每个EC条带能容忍k个EC block的丢失。分布式存储系统使用EC技术进行数据存储时,数据分发装置会根据待存储的数据生成多条EC条带,并将每个EC条带的m+k个EC block分发给分布式存储系统的m+k个存储节点进行存储。这样,当分布式存储系统中有节点故障时,可以根据非故障节点上的EC block将故障节点上存储的EC block恢复出来。除非存储某条EC条带的m+k个存储节点中有多于k个存储节点发生故障,否则该条EC条带的数据可以被数据分发装置完整的读写。因此,采用EC技术存储数据的分布式存储系统具有很高的可靠性。
存储到分布式存储系统中的EC条带可以被数据分发装置取读或改写。值得指出的是,数据分发装置在取读时,只需要取读EC条带中用于存储数据的数据块,但是在改写时,例如对某条EC条带的m个数据块中的第i个数据块进行改写时,该条EC条带的其余数据块无需被改动,但是需要重新生成该条EC条带的校验块。
若有多个数据分发装置同时对一条EC条带范围内的数据进行读写,则会造成读写冲突,需要使用分布式锁来解决多个数据分发装置之间的冲突问题。但是若采用分布式锁方式来解决多数据分发装置冲突的问题,则当遇到上层应用在不同数据分发装置分发IO的情况时,将导致数据分发装置之间频繁的抢锁和锁切换。由于锁切换是一种较为费时的操作,因此频繁的锁切换会产生较大的读写时延,不能满足实际应用的需求。
本发明实施例致力于提供一种可靠的数据分发方法与数据存储方法,以解决上述问题。首先,本发明实施例中对分布式存储系统中的存储节点进行了分组,具体的,将存储节点分为多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,且每个存储节点组指定一个主存储节点(下文简称主节点),主存储节点负责与数据分发装置进行交互,还负责控制所在的存储节点组的节点进行数据存储。存储节点组中其余的存储节点为备存储节点(下文简称备节点)。其中,m、k均为正整数。其中,不同的存储节点组的存储节点可以重复,例如,存储节点组1的主节点可以是存储节点组2的备节点。图1(b)本发明实施例中分布式存储系统的一个结构示意图。其中,图1(b)仅用于表示分布式存储系统中的存储节点的一种组成结构,分布式存储系统中各个存储节点也可以为其他结构。
存储节点组的维护有很多种方式,例如,可以设置额外的节点组管理模块。该节点组管理模块可以部署在数据分发装置上,也可以部署在存储节点上,本发明实施例中不做限定。其中,节点组管理模块负责维护各个存储节点组,具体的,节点组管理模块可以负责收集各个存储节点组所包括的存储节点、确定主节点,并通过心跳连接实时监控各存储节点的状态。当存储节点状态变化或节点组主节点变更时,节点组管理模块均需要更新收集到的信息。节点组管理模块将收集到的信息告知每个数据分发装置和存储节点进行记录,使得每个数据分发装置和存储节点都能获知每个节点组的信息。节点组管理模块收集到的信息可以简单的表示为表(1)的形式:
表(1)
其中,表(1)仅为节点组管理模块收集到的信息的一种表现形式,节点组管理模块可以用其他形式来表现收集到的信息,本发明实施例中不做限定。
本发明实施例中,数据分发装置将待存储的数据划分为多个数据段,并将每个数据段分发给对应的节点组的主节点,其流程请参阅图2:
201、接收存储指令;
数据分发装置接收用户的存储指令,该存储指令用于指示存储待存储的数据。
202、将待存储的数据划分为P个数据段;
数据分发装置将待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,每个数据段的大小不大于Z,其中Z为m个数据块的大小。
203、确定每个数据段对应的存储节点组;
数据分发装置确定每个数据段对应的存储节点组。具体的确定方法有很多,将在后面的实施例中详述,此处不做限定。
204、将每个数据段分发到对应的存储节点组的主存储节点上。
数据分发装置确定了每个数据段对应的存储节点组之后,将每个数据段分发到该数据段对应的存储节点组的主节点上。
本实施例提供了一种数据分发方法,其中,数据分发装置接收用户的存储指令,将存储指令指示存储的待存储的数据划分为P个数据段,并确定每个数据段对应的存储节点组,最后将每个数据段分发到对应的存储节点组的主节点上。由于本实施例中,数据分发装置直接将划分后的数据段分发给存储节点,不再对待存储的数据进行EC编码,这样就无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
步骤201中,数据分发装置解析存储指令,可以获得待存储数据的起始地址、大小或其他信息。步骤202中,数据分发装置划分数据段的方法有很多,例如,分布式存储系统的逻辑卷(Logical Volume)可以包括多个逻辑区域,每个逻辑区域的大小均为Z且互不重叠。数据分发装置在进行数据段划分时,可以根据待存储数据的逻辑地址,将落在一个逻辑区域内的数据划分为一个数据段。例如,若Z为4M,则分布式存储系统的逻辑卷可以分为多个逻辑区域,第一个逻辑区域的逻辑地址为0~4M、第二个逻辑区域的逻辑地址为4M~8M、第三个逻辑区域的逻辑地址为8M~12M……,假设待存储的数据的逻辑地址为5M~12M,则由于5M~8M落在第二个逻辑区域的逻辑地址的范围内,8M~12M落在第三个逻辑区域的逻辑地址的范围内,则数据分发装置将该5M~12M的待存储的数据划分为两个数据段,该两个数据段的逻辑地址分别为5M~8M和8M~12M。
从上一段的例子可以总结出,待存储的数据划分出的P个数据段中,第1个数据段的逻辑地址为该待存储的数据的起始地址,第p个数据段的起始地址为第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
若将分布式存储系统的逻辑卷分为多个逻辑区域,则可以预先设置每个逻辑区域和每个存储节点组的对应关系,这样步骤203中,数据分发装置就可以将每个数据段落在的逻辑区域所对应的存储节点组,确定为该数据段对应的存储节点组。更为具体的,可以为分布式存储系统的每个逻辑区域设置唯一的key值,数据分发装置预先设置并记录每个存储节点组对应的key值。这样,数据分发装置就可以将每个数据段落在的逻辑区域所对应的key值,确定为该数据段对应的key值,然后根据每个数据段的key值和key值与存储节点组的对应关系确定每个数据段对应的存储节点组。
可以理解的,若分布式存储系统上层的多个数据分发装置均采用步骤201至204中所述的方法进行数据分发,则即使是多个数据分发装置分发的数据段,只要分发的数据段落在分布式存储系统的相同的逻辑区域内,就会被分发给相同的节点组的主节点。
主节点接收到数据分发装置分发的数据段后,对接收到的数据段进行EC编码得到EC条带,并将EC条带中的m+k个EC block分配给所在的节点组的m+k个存储节点进行存储。图2所示的实施例中,数据分发装置共分发P个数据段,因此要将P个数据段分发给P个存储节点组的主节点。下面将以其中一个存储节点组的主节点为例进行说明,请参阅图3。
301、接收第一数据段;
主节点接收数据分发装置分发的第一数据段,其中,第一数据段为数据分发装置分发的P个数据段中的一个数据段。其中,第一数据段的大小不大于Z。
特别的,当步骤302中数据分发装置按照分布式存储系统的逻辑区域来划分数据段时,则:若第一数据段是该P个数据段中的第1个或最后一个数据段,则第一数据段的大小可以小于Z;若第一数据段是该P个数据段中的第2个至(P-1)个数据段中的任意一个数据段,则第一数据段的大小应等于Z。
302、根据第一数据段进行EC编码得到第一EC条带;
主节点根据第一数据段进行EC编码,得到第一EC条带。该第一EC条带中包括m+k个第一EC block,分别为m个第一数据块和k个第一校验块。
303、将m+k个第一EC block分别分发给所在的节点组的m+k个节点以执行存储。
主节点将第一EC条带的m个第一数据块和k个第一校验块分别分发给主节点所在的存储节点组的m+k个存储节点以执行存储,该m+k个存储节点中每个存储节点负责存储一个第一EC block。其中,主节点可以自己存储一个EC block(可以为第一数据块,也可以为第一校验块),然后将剩余的m+k-1个第一EC block发送给m+k-1个备节点存储,每个备节点存储一个第一EC block。主节点也可以不存储第一EC block,直接将m+k个第一EC block发送给m+k个备节点存储,本实施例中不做限定。
图2所示的实施例给出了数据分发装置进行数据分发的方法,本实施例对应的提供了一种数据存储方法,用于存储数据分发装置分发的数据。其中,主节点接收数据分发装置分发的第一数据段,根据第一数据段进行EC编码得到第一EC条带,并将第一EC条带的m+k个数据块分配给m+k个存储节点进行存储。与现有技术相比,本实施例提供的方法将原本由数据分发装置执行的EC编码操作改为由主节点执行,由这样就不存在数据分发装置进行EC编码造成的冲突问题,进而无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
可以理解的,分布式存储系统中任何一个存储节点组的主节点均可以执行图3所示的实施例提供的数据存储方法。
之前的实施例中提到,分布式存储系统的逻辑卷可以包括多个不重叠的逻辑区域,数据分发装置将落在一个逻辑区域内的数据划分为一个数据段。且存储节点组和逻辑区域存在对应关系。可以理解的,本实施例中主节点接收的第一数据段的逻辑地址,应落在该主节点所在的存储节点组所对应的一个逻辑区域中。可以理解的,不同存储节点组的主节点接收到的数据段的逻辑地址不存在重叠。
其中,主节点在生成EC条带时,还可以生成EC条带对应的版本号。
在实际应用中,主节点在接收到第一数据段时,也可能接收到同一个或另一个数据分发装置分发的数据段。此时主节点进行的EC编码可以被分为如下情况:
情况一:主节点接收第二数据段,其中第二数据段与第一数据段落在相同的逻辑区域且第二数据段的逻辑地址与第一数据段的逻辑地址存在重叠;主节点根据第二数据段进行EC编码得到第二EC条带,其中第二EC条带包括m个第二数据块和k个第二校验块;主节点确定第一EC条带与第二EC条带的串行分发顺序,并根据该串行分发顺序,将第一EC条带与第二EC条带串行分发给该m+k个存储节点。具体的,若主节点先接收了第一数据段,再接收了第二数据段,则主节点先将第一EC条带的m+k个第一EC block分别分发给m+k个存储节点以执行存储,待接收到该m+k个存储节点发送的响应消息之后,再将第二EC条带的m+k个第二EC block分别分发给m+k个存储节点以执行存储,其中,响应消息用于表示第一数据段在该m+k个存储节点上存储成功,第二EC条带的版本号大于第一EC条带的版本号;若主节点先接收了第二数据段,再接收了第一数据段,则主节点先将第二EC条带的m+k个第二ECblock分别分发给m+k个存储节点以执行存储,再将第一EC条带的m+k个第一EC block分别分发给m+k个存储节点以执行存储,其中第一EC条带的版本号大于第二EC条带的版本号。
情况二:主节点接收第三数据段,其中第一数据段与第三数据段落在同一个逻辑区域内,且第一数据段与第三数据段的逻辑地址不存在重叠。在这种情况下,主节点将第三数据段合并到第一数据段中,然后将合并后的第一数据段作为步骤302中要编码的第一数据段,然后继续执行步骤302与步骤303。例如,第一数据段的逻辑地址的范围为4M~5M,第三数据段的逻辑地址的范围为5M~8M,第一数据段与第三数据段的逻辑地址均落在逻辑区域4M~8M中。主节点将第三数据段合并到第一数据段中,然后根据合并后的第一数据段进行EC编码,得到第一EC条带。
情况三:主节点接收第四数据段,其中第一数据段与第四数据段落在不同的逻辑区域内。这种情况一般发生在身为两个或多个存储节点组的主节点的存储节点身上,或对多个逻辑区域对应的同一个存储节点组的主节点身上。这种情况下,第一数据段与第四数据段落在不同的逻辑区域内,因此第一数据段与第四数据段的逻辑地址不存在重叠,主节点只需正常对第一数据段与第四数据段进行编码与数据分发即可,不会造成存储冲突。上述三种情况不仅可以用在主节点同时接收到两个数据段的场景下,也可以用在主节点同时接收到三个或更多个数据段的场景中,本实施例中不做限定。
其中,图2所示的实施例中已经说明了,分布式存储系统的每个逻辑区域对应有唯一的key值,每个数据段所落在的逻辑区域的key值,就是该数据段的key值。由于情况一中,第一数据段与第二数据段落在相同的逻辑区域内,因此第一数据段与第二数据段具有相同的key值;情况二中,第一数据段与第三数据段落在相同的逻辑区域内,因此第一数据段与第三数据段具有相同的key值;情况三中,第一数据段与第四数据段落在不同的逻辑区域内,因此第一数据段与第四数据段具有不同的key值。主节点可以根据数据段的key值判断两个数据段是否落在同一个逻辑区域内。
特别的,可以将数据段的key值作为对应的EC条带的key值,以标识EC条带数据部分的逻辑地址的范围。EC条带的key值可以在EC条带的每个EC block中携带。
步骤302中,主节点根据第一数据段进行EC编码得到第一EC条带。具体的,若第一数据段的大小为Z,则第一数据段可以恰好被分为m个第一数据块,然后主节点对该m个第一数据块进行校验编码得到k个第一校验块,这样就得到了第一EC条带。
若第一数据段的大小小于Z,则第一数据段不足以被分为m个数据块,主节点需要使用已存储的数据将第一数据段的大小补齐为Z,然后将补齐后的第一数据段作为步骤302中要编码的第一数据段,执行将第一数据段分为m个第一数据块,并对该m个第一数据块进行校验编码得到k个第一校验块的步骤。其中,为了保证第一数据段能够落在一个逻辑区域中,主节点应该从已存储的数据中,选取与第一数据段处于同一逻辑区域的数据来补齐第一数据段。例如,若第一数据段的逻辑地址为5M~8M,落在逻辑区域4M~8M中,则主节点应选取已存储的逻辑地址为4M~5M的数据,将第一数据段补齐为4M~8M。
主节点根据第二、第三、第四数据段进行EC编码的方法与据第一数据段进行EC编码的方法类似,此处不做赘述。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统上层有数据分发装置A与数据分发装置B。分布式存储系统通过EC条带来存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,每个存储节点组均指定一个主节点。其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为4M,即第一个逻辑区域的逻辑地址的范围为0~4M、第二个逻辑区域的逻辑地址的范围为4M~8M、第三个逻辑区域的逻辑地址的范围为8M~12M……,每个逻辑区域对应有唯一的key值,第一个逻辑区域对应的key值为1,第二个逻辑区域对应的key值为2,第三个逻辑区域对应的key值为3……
数据分发装置A接收用户的存储指令,该存储指令中携带有待存储的数据,待存储的数据的逻辑地址为5M~7M。
由于5M~8M落在第二个逻辑区域内,8M~12M落在第三个逻辑区域内,因此数据分发装置A将待存储的数据划分为2个数据段,其中数据段1的逻辑地址为5M~8M,key值为2;数据段2的逻辑地址为8M~12M,key值为3。
数据分发装置A预先设置并记录有key值与存储节点组的对应关系,确定key值2对应存储节点组1,key值3对应存储节点组6。
数据分发装置A将数据段1分发到存储节点组1的主节点(即节点A)上,将数据段2分发到存储节点组6的主节点上。
节点A接收数据段1,之后还接收了数据分发装置B分发的数据段3,数据段3的逻辑地址为4M~7M。节点A将数据段1的4M~5M部分的数据补齐,然后对补齐后的数据段1进行EC编码,得到EC条带1,EC条带1的key值为2,版本号为1;节点A还将数据段3的7M~8M部分的数据补齐,然后对补齐后的数据段3进行EC编码,得到EC条带3,EC条带3的key值也为2,版本号为2。其中,每条EC条带包括6个EC block,分别为4个数据块和2个校验块。
对于EC条带1,节点A自己存储EC条带1的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带1的EC block。节点B~F成功存储了EC条带1的EC block后,向节点A发送响应消息,节点A接收到响应消息后,自己存储EC条带2的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带2的EC block。
上面的方法详细描述了本发明实施例中数据分发与数据存储的方法,下面的实施例将提供相应的装置,以实现上述方法。
本发明实施例提供的数据分发装置的基本结构请参阅图4,包括:
指令接收模块401,用于接收存储指令,其中存储指令携带待存储的数据;
数据段划分模块402,用于将待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,每个数据段的大小不大于Z,Z为m个数据块的大小,P为正整数;
节点组确定模块403,用于确定每个数据段对应的存储节点组;
数据段分发模块404,用于将每个数据段分发到节点组确定模块403确定的每个数据段对应的存储节点组的主存储节点上。
本实施例提供的一种数据分发装置中,指令接收模块401接收用户的存储指令,数据段划分模块402将存储指令指示存储的待存储的数据划分为P个数据段,节点组确定模块403确定每个数据段对应的存储节点组,数据段分发模块404将每个数据段分发到对应的存储节点组的主节点上。由于本实施例中,数据分发装置直接将划分后的数据段分发给存储节点,不再对待存储的数据进行EC编码,这样就无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
优选的,作为本发明的又一个实施例,分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;数据段划分模块402具体用于:
根据待存储的数据的逻辑地址,将待存储的数据划分为P个数据段,其中,每个数据段落在一个逻辑区域中。
优选的,作为本发明的又一个实施例,数据段划分模块402划分的P个数据段中,第1个数据段的起始地址为待存储的数据的起始地址,第p个数据段的起始地址为第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
优选的,作为本发明的又一个实施例,数据分发装置还包括关系对应模块405,用于预先设置并记录每个逻辑区域与每个存储节点组的对应关系;节点组确定模块403具体用于:根据每个逻辑区域与每个存储节点组之间的对应关系,确定每个数据段所落在的逻辑区域对应的存储节点组。其中,关系对应模块405为可选模块,数据分发装置也可以不具有关系对应模块405。
优选的,作为本发明的又一个实施例,分布式存储系统的每个逻辑区域唯一对应一个key值,关系对应模块405具体用于:预先设置并记录存储节点组对应的key值;节点组确定模块403具体用于:根据每个数据段所落在的逻辑区域,确定每个数据段的key值;根据每个数据段的key值确定每个数据段对应的存储节点组。
本发明实施例还提供了相关的数据存储装置,适用于分布式存储系统的任何一个存储节点组的主节点上,其基本结构请参阅图5,包括:
数据接收模块501,用于接收第一数据段,其中,第一数据段的大小不大于Z,Z为m个数据块的大小;
数据编码模块502,用于根据第一数据段进行EC编码得到第一EC条带,其中,第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块503,用于将第一EC条带分发给m+k个存储节点以执行存储,其中,该m+k个存储节点中的每个存储节点负责存储第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
图4所示的实施例给出了一种数据分发装置,本实施例对应的提供了一种数据存储装置,用于存储数据分发装置分发的数据。主节点的数据存储装置中,数据接收模块501接收数据分发装置分发的第一数据段,数据编码模块502对第一数据段进行EC编码得到第一EC条带,数据分发模块503将第一EC条带的m+k个数据块分配给m+k个存储节点进行存储。与现有技术相比,本实施例将原本由数据分发装置执行的EC编码操作改为由数据存储装置执行,由这样就不存在数据分发装置进行EC编码造成的冲突问题,进而无需采用分布式锁来解决冲突问题,不会产生频繁的锁切换,提高了分布式存储系统的性能。
优选的,作为本发明的又一个实施例,分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠。其中第一数据段落在一个逻辑区域中。
优选的,作为本发明的又一个实施例,数据接收模块501还用于:
接收第二数据段,其中,第二数据段与第一数据段落在相同的逻辑区域且第二数据段的逻辑地址与第一数据段的逻辑地址存在重叠;数据编码模块502还用于:根据第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;数据分发模块503具体用于:确定第一EC条带与第二EC条带的串行分发顺序,并根据该串行分发顺序,将第一EC条带与第二EC条带串行分发给m+k个存储节点以执行存储,其中,该串行分发操作用于规避第一EC条带与第二EC条带在m+k个存储节点上的存储冲突,该m+k个存储节点中的每个存储节点负责存储第一EC条带的m个第一数据块或者k个第一校验块中的任一个,和第二EC条带的m个第二数据块或者k个第二校验块中的任一个。优选的,作为本发明的又一个实施例,数据分发模块503通过如下方法将第一EC条带与第二EC条带串行分发给m+k个存储节点以执行存储:
若第一数据段的接收时间早于第二数据段的接收时间,则先将第一EC条带分发给m+k个存储节点以执行存储;在接收到该m+k个存储节点成功存储第一EC条带的响应消息之后,再将第二EC条带分发给该m+k个存储节点以执行存储;或者,
若第一数据段的接收时间晚于所述第二数据段的接收时间,则先将第二EC条带分发给m+k个存储节点以执行存储;在接收到该m+k个存储节点成功存储第二EC条带的响应消息之后,再将第一EC条带分发给m+k个存储节点以执行存储。
优选的,作为本发明的又一个实施例,数据接收模块501还用于:接收第三数据段,其中,第三数据段与第一数据段落在相同的逻辑区域且第三数据段的逻辑地址与第一数据段的逻辑地址不存在重叠;
数据编码模块502还用于:将第三数据合并到所述第一数据段中,并触发根据第一数据段进行EC编码得到第一EC条带的步骤。
优选的,作为本发明的又一个实施例,数据编码模块502通过如下方法对第一数据段进行EC编码:若第一数据段的大小等于Z,则将第一数据段划分为m个第一数据块,并对m个第一数据块进行校验编码得到的k个第一校验块;若第一数据段的大小小于Z,则使用已存储的数据将第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对m个第一数据块进行校验编码得到的k个第一校验块。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统上层有数据分发装置A与数据分发装置B。分布式存储系统通过EC条带来存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,每个存储节点组均指定一个主节点。其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。分布式存储系统的逻辑卷分为多个逻辑区域,每个逻辑区域的大小为4M,即第一个逻辑区域的逻辑地址的范围为0~4M、第二个逻辑区域的逻辑地址的范围为4M~8M、第三个逻辑区域的逻辑地址的范围为8M~12M……,每个逻辑区域对应有唯一的key值,第一个逻辑区域对应的key值为1,第二个逻辑区域对应的key值为2,第三个逻辑区域对应的key值为3……
数据分发装置A的指令接收模块401接收用户的存储指令,该存储指令中携带有待存储的数据,其中待存储的数据的逻辑地址为为5M~7M。
由于5M~8M落在第二个逻辑区域内,8M~12M落在第三个逻辑区域内,因此数据段划分模块402将待存储的数据划分为2个数据段,其中数据段1的逻辑地址为5M~8M,key值为2;数据段2的逻辑地址为8M~12M,key值为3。
节点组确定模块403预先设置并记录有key值与存储节点组的对应关系,确定key值2对应存储节点组1,key值3对应存储节点组6。
数据段分发模块404将数据段1分发到存储节点组1的主节点(即节点A)上,将数据段2分发到存储节点组6的主节点上。
节点A的数据接收模块501接收数据段1,之后还接收了数据分发装置B分发的数据段3,数据段3的逻辑地址为4M~7M。数据编码模块502将数据段1的4M~5M部分的数据补齐,然后对补齐后的数据段1进行EC编码,得到EC条带1,EC条带1的key值为2,版本号为1;数据编码模块502还将数据段3的7M~8M部分的数据补齐,然后对补齐后的数据段3进行EC编码,得到EC条带3,EC条带3的key值也为2,版本号为2。其中,每条EC条带包括6个EC block,分别为4个数据块和2个校验块。
对于EC条带1,数据分发模块503为节点A分配EC条带1的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带1的EC block。。节点B~F成功存储了EC条带1的EC block后,向节点A发送响应消息,数据分发模块503在节点A接收到响应消息后,自己存储EC条带2的一个EC block,并将剩余的5个EC block分配给节点B~F存储,使得节点B~F分别存储一个EC条带2的EC block。
上面从单元化功能实体的角度对本发明实施例中的数据分发装置进行了描述,下面从硬件处理的角度对本发明实施例中的数据分发装置进行描述,请参阅图6,本发明实施例中的数据分发装置600另一实施例包括:
输入装置601、输出装置602、处理器603和存储器604(其中数据分发装置600中的处理器603的数量可以一个或多个,图6中以一个处理器603为例)。在本发明的一些实施例中,输入装置601、输出装置602、处理器603和存储器604可通过总线或其它方式连接,其中,图6中以通过总线连接为例。
其中,通过调用存储器604存储的操作指令,处理器603用于执行如下步骤:
接收存储指令,所述存储指令携带待存储的数据;
根据所述待存储的数据,将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
本发明的一些实施例中,分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,处理器603还用于执行如下步骤:
根据所述待存储的数据,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。
本发明的一些实施例中,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
本发明的一些实施例中,处理器603还用于执行如下步骤:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
本发明的一些实施例中,每个所述逻辑区域唯一对应一个key值,处理器603还用于执行如下步骤:
预先设置并记录每个存储节点组对应的key值;
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
下面从硬件处理的角度对本发明实施例中的数据存储装置进行描述,请参阅图7,本发明实施例中的数据存储装置700另一实施例包括:
输入装置701、输出装置702、处理器703和存储器704(其中数据存储装置700中的处理器703的数量可以一个或多个,图7中以一个处理器703为例)。在本发明的一些实施例中,输入装置701、输出装置702、处理器703和存储器704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
其中,通过调用存储器704存储的操作指令,处理器703用于执行如下步骤:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
本发明的一些实施例中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
本发明的一些实施例中,处理器703还用于执行如下步骤:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
本发明的一些实施例中,处理器703还用于执行如下步骤:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储;
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储;
在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
本发明的一些实施例中,处理器703还用于执行如下步骤:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
本发明的一些实施例中,处理器703还用于执行如下步骤:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
本发明实施例还提供了一种分布式存储系统,该分布式存储系统包括多个存储节点,该分布式存储系统通过EC条带来存储数据,每个EC条带包括数据部分和校验部分,每个EC条带的数据部分包括m个数据块,每个EC条带的校验部分包括对该m个数据块进行校验编码后得到的k个校验块该多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
该分布式存储系统还包括图5或图7所示的数据存储装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (24)

1.一种数据分发方法,应用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述方法包括:
接收存储指令,所述存储指令携带待存储的数据;
将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
确定所述每个数据段对应的存储节点组;
将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
2.根据权利要求1所述的数据分发方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述将所述待存储的数据划分为P个数据段包括:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个数据段落在一个所述逻辑区域中。
3.根据权利要求2所述的数据分发方法,其特征在于,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
4.根据权利要求2所述的数据分发方法,其特征在于,所述方法还包括:
预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述确定所述每个数据段对应的存储节点组包括:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
5.根据权利要求4所述的数据分发方法,其特征在于,每个所述逻辑区域唯一对应一个key值,所述预先设置并记录所述每个逻辑区域与所述每个存储节点组的对应关系包括:
预先设置并记录所述每个存储节点组对应的key值;
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组包括:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
6.一种数据存储方法,适用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述多个存储节点组中的任意一个存储节点组的主存储节点执行所述数据存储方法,所述方法包括:
接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
7.根据权利要求6所述的数据存储方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
8.根据权利要求7所述的数据存储方法,其特征在于,在所述将所述第一EC条带分发给m+k个存储节点以执行存储之前,所述方法还包括:
接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述将所述第一EC条带分发给m+k个存储节点以执行存储具体包括:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
9.根据权利要求8所述的数据存储方法,其特征在于,所述确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点以执行存储包括:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
10.根据权利要求7所述的数据存储方法,其特征在于,在根据所述第一数据段进行EC编码得到第一EC条带之前,所述方法还包括:
接收第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
11.根据权利要求6至10中任一项所述的数据存储方法,其特征在于,所述根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块包括:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
12.一种数据分发装置,应用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据分发装置包括:
指令接收模块,用于接收存储指令,所述存储指令携带待存储的数据;
数据段划分模块,用于将所述待存储的数据划分为P个数据段,其中,每个数据段对应于一个EC条带,所述每个数据段的大小不大于Z,所述Z为m个数据块的大小,所述P为正整数;
节点组确定模块,用于确定所述每个数据段对应的存储节点组;
数据段分发模块,用于将所述每个数据段分发到确定的所述每个数据段对应的存储节点组的主存储节点上。
13.根据权利要求12所述的数据分发装置,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠;
所述数据段划分模块具体用于:
根据所述待存储的数据的逻辑地址,将所述待存储的数据划分为P个数据段,其中,每个所述数据段落在一个所述逻辑区域中。
14.根据权利要求13所述的数据分发装置,其特征在于,所述P个数据段中的第1个数据段的起始地址为所述待存储的数据的起始地址,所述P个数据段中的第p个数据段的起始地址为所述第p个数据段所落在逻辑区域的起始地址,2≤p≤P。
15.根据权利要求13所述的数据分发装置,其特征在于,所述数据分发装置还包括:
关系对应模块,用于预先设置并记录所述每个逻辑区域与所述每个存储节点组之间的对应关系;
所述节点组确定模块具体用于:
根据所述每个逻辑区域与所述每个存储节点组之间的对应关系,确定所述每个数据段所落在的逻辑区域对应的存储节点组。
16.根据权利要求15所述的数据分发装置,其特征在于,每个所述逻辑区域唯一对应一个key值,所述关系对应模块具体用于:
预先设置并记录所述每个存储节点组对应的key值k;
所述节点组确定模块具体用于:
根据所述每个数据段所落在的逻辑区域,确定所述每个数据段的key值;
根据所述每个数据段的key值,确定所述每个数据段对应的存储节点组。
17.一种数据存储装置,适用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述分布式存储系统包括多个存储节点,所述多个存储节点组成多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,每个存储节点组指定一个主存储节点,所述m、k均为正整数;
所述数据存储装置部署在所述多个存储节点组中的任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据接收模块,用于接收第一数据段,所述第一数据段的大小不大于Z,其中,Z为m个数据块的大小;
数据编码模块,用于根据所述第一数据段进行EC编码得到第一EC条带,所述第一EC条带包括m个第一数据块和k个第一校验块;
数据分发模块,用于将所述第一EC条带分发给m+k个存储节点以执行存储,其中,所述m+k个存储节点中的每个存储节点负责存储所述第一EC条带的m个第一数据块或者k个第一校验块中的任一个。
18.根据权利要求17所述的数据存储装置,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域的大小为Z且互不重叠,所述第一数据段落在一个所述逻辑区域中。
19.根据权利要求18所述的数据存储装置,其特征在于,所述数据接收模块还用于:接收第二数据段,所述第二数据段与所述第一数据段落在相同的逻辑区域且所述第二数据段的逻辑地址与所述第一数据段的逻辑地址存在重叠;
所述数据编码模块还用于:根据所述第二数据段进行EC编码得到第二EC条带,所述第二EC条带包括m个第二数据块和k个第二校验块;
所述数据分发模块具体用于:确定所述第一EC条带与所述第二EC条带的串行分发顺序,并根据所述串行分发顺序,将所述第一EC条带与所述第二EC条带串行分发给所述m+k个存储节点。
20.根据权利要求19所述的数据存储装置,其特征在于,所述数据分发模块具体用于:
若所述第一数据段的接收时间早于所述第二数据段的接收时间,则将所述第一EC条带先分发给m+k个存储节点以执行存储,
在接收到所述m+k个存储节点成功存储所述第一EC条带的响应消息之后,再将所述第二EC条带分发给所述m+k个存储节点以执行存储;或者,
若所述第一数据段的接收时间晚于所述第二数据段的接收时间,则将所述第二EC条带先分发给m+k个存储节点以执行存储,在接收到所述m+k个存储节点成功存储所述第二EC条带的响应消息之后,再将所述第一EC条带分发给所述m+k个存储节点以执行存储。
21.根据权利要求18所述的数据存储装置,其特征在于,所述数据接收模块还用于:
确定是否接收到第三数据段,所述第三数据段与所述第一数据段落在相同的逻辑区域且所述第三数据段的逻辑地址与所述第一数据段的逻辑地址不存在重叠;
所述数据编码模块还用于:在所述数据接收模块确定接收到所述第三数据段后,将所述第三数据合并到所述第一数据段中,并触发所述根据所述第一数据段进行EC编码得到第一EC条带的步骤。
22.根据权利要求17至21中任一项所述的数据存储装置,其特征在于,所述数据编码模块还用于:
当所述第一数据段的大小等于Z,则将所述第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块;或者,
当所述第一数据段的大小小于Z,则使用已存储的数据将所述第一数据段的大小补齐为Z,然后将补齐后的第一数据段划分为m个第一数据块,并对所述m个第一数据块进行校验编码得到的k个第一校验块。
23.一种数据存储装置,其特征在于,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于执行如权利要求1-11中任一所述的方法。
24.一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如权利要求1-11中任一所述的方法。
CN201710943780.7A 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统 Active CN107844268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710943780.7A CN107844268B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710943780.7A CN107844268B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统
CN201510304621.3A CN104932953B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201510304621.3A Division CN104932953B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统

Publications (2)

Publication Number Publication Date
CN107844268A true CN107844268A (zh) 2018-03-27
CN107844268B CN107844268B (zh) 2021-09-14

Family

ID=54120126

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510304621.3A Active CN104932953B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统
CN201710943780.7A Active CN107844268B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510304621.3A Active CN104932953B (zh) 2015-06-04 2015-06-04 一种数据分发方法、数据存储方法、相关装置以及系统

Country Status (5)

Country Link
US (1) US20160357440A1 (zh)
EP (1) EP3101530B1 (zh)
JP (1) JP6259868B2 (zh)
CN (2) CN104932953B (zh)
BR (1) BR102016012739B1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111936960A (zh) * 2018-12-25 2020-11-13 华为技术有限公司 分布式存储系统中数据存储方法、装置及计算机程序产品
CN113326006A (zh) * 2021-06-17 2021-08-31 上海天玑科技股份有限公司 一种基于纠删码的分布式块存储系统

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108141228A (zh) * 2015-10-09 2018-06-08 华为技术有限公司 分布式存储系统的编码
CN105426483B (zh) * 2015-11-19 2019-01-11 华为技术有限公司 一种基于分布式系统的文件读取方法及装置
CN105404561B (zh) * 2015-11-19 2019-04-12 浙江宇视科技有限公司 一种分布式存储的纠删码实现方法及装置
CN107203559B (zh) * 2016-03-17 2021-01-01 华为技术有限公司 一种划分数据条带的方法和装置
CN106202271A (zh) * 2016-06-30 2016-12-07 携程计算机技术(上海)有限公司 Ota的产品数据库的读取方法
CN107590019B (zh) * 2016-07-07 2021-03-16 北京金山云网络技术有限公司 一种数据存储的方法和装置
CN106201354A (zh) * 2016-07-12 2016-12-07 乐视控股(北京)有限公司 数据存储方法及系统
CA2978927C (en) * 2016-11-25 2019-09-17 Huawei Technologies Co., Ltd. Data check method and storage system
CN108614670B (zh) * 2016-12-13 2020-07-03 杭州海康威视数字技术股份有限公司 一种信息处理方法及装置
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
CN106776146A (zh) * 2016-12-29 2017-05-31 华为技术有限公司 一种数据校验方法、装置及系统
JP6807457B2 (ja) * 2017-06-15 2021-01-06 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
WO2018235132A1 (en) * 2017-06-19 2018-12-27 Hitachi, Ltd. DISTRIBUTED STORAGE SYSTEM
CN109213420A (zh) * 2017-06-29 2019-01-15 杭州海康威视数字技术股份有限公司 数据存储方法、装置及系统
CN107728936B (zh) * 2017-09-05 2020-10-09 华为技术有限公司 用于传输数据处理请求的方法和装置
CN107609161A (zh) * 2017-09-26 2018-01-19 北京思特奇信息技术股份有限公司 一种数据写入、读取方法和系统
CN107707395B (zh) * 2017-09-28 2021-02-02 浙江大华技术股份有限公司 一种数据传输方法、装置和系统
WO2019080015A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN108780386B (zh) * 2017-12-20 2020-09-04 华为技术有限公司 一种数据存储的方法、装置和系统
CN108897497B (zh) * 2018-06-29 2021-10-08 吴俊杰 一种无中心的数据管理方法及装置
CN109194566B (zh) * 2018-08-27 2022-01-04 惠州Tcl移动通信有限公司 一种重发信息的方法、存储介质及终端设备
CN109032536B (zh) * 2018-08-31 2021-08-10 郑州云海信息技术有限公司 基于分布式集群系统的数据存储方法、装置、系统及设备
CN109491968B (zh) * 2018-11-13 2021-01-22 恒生电子股份有限公司 一种文件处理方法、装置、设备及计算机可读存储介质
CN112714910B (zh) * 2018-12-22 2022-12-27 华为云计算技术有限公司 分布式存储系统及计算机程序产品
CN110046160B (zh) * 2019-03-15 2021-07-20 中国科学院计算技术研究所 一种基于条带的一致性哈希存储系统构建方法
CN109977077B (zh) * 2019-03-25 2021-09-24 腾讯科技(深圳)有限公司 模型文件存储方法、装置、可读存储介质和计算机设备
CN110162525B (zh) * 2019-04-17 2023-09-26 平安科技(深圳)有限公司 基于b+树的读写冲突解决方法、装置及存储介质
CN111142799A (zh) * 2019-12-26 2020-05-12 深圳市网心科技有限公司 分布式存储方法及装置、网络节点及存储介质
US11604697B2 (en) * 2020-03-26 2023-03-14 Quantum Corporation Distributed erasure encoding in shared file system
CN111611317B (zh) * 2020-06-08 2023-05-30 杭州复杂美科技有限公司 区块链分布式存储分组方法、设备和存储介质
CN112083892B (zh) * 2020-09-25 2021-05-18 上海依图网络科技有限公司 一种数据存储方法、装置、设备和介质
CN116710899A (zh) * 2021-03-23 2023-09-05 深圳市欢太科技有限公司 一种数据冗余备份方法、装置、存储介质及电子设备
CN113010120B (zh) * 2021-04-27 2022-07-29 宏图智能物流股份有限公司 一种通过轮循方式实现语音数据分布式存储的方法
CN113010119B (zh) * 2021-04-27 2022-09-30 宏图智能物流股份有限公司 一种通过主备方式实现语音数据分布式存储的方法
CN113419684B (zh) * 2021-07-09 2023-02-24 深圳大普微电子科技有限公司 一种数据处理方法、装置、设备及可读存储介质
CN115599315B (zh) * 2022-12-14 2023-04-07 阿里巴巴(中国)有限公司 数据处理方法、装置、系统、设备及介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138285A1 (en) * 2003-12-17 2005-06-23 Hitachi, Ltd. Computer system management program, system and method
US7783600B1 (en) * 2006-02-27 2010-08-24 Symantec Operating Corporation Redundancy management service for peer-to-peer networks
US20110229104A1 (en) * 2009-10-22 2011-09-22 Hundemer Hank J System And Method For Recording and Playback Of Multimedia Content
US8103789B1 (en) * 2001-03-01 2012-01-24 Juniper Networks, Inc. Method and apparatus for computing a backup path using fate sharing information
US8255739B1 (en) * 2008-06-30 2012-08-28 American Megatrends, Inc. Achieving data consistency in a node failover with a degraded RAID array
CN103152395A (zh) * 2013-02-05 2013-06-12 北京奇虎科技有限公司 一种分布式文件系统的存储方法及装置
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN103944981A (zh) * 2014-04-14 2014-07-23 中国科学院计算技术研究所 一种基于纠删码技术改进的云存储系统及实现方法
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3367510B2 (ja) * 1993-04-28 2003-01-14 株式会社日立製作所 データベース管理方法およびシステム
US7644136B2 (en) * 2001-11-28 2010-01-05 Interactive Content Engines, Llc. Virtual file system
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
US7546342B2 (en) * 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
CN101188569B (zh) * 2006-11-16 2011-05-04 饶大平 在网络上构建数据量子空间的方法及分布式文件存储系统
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8051205B2 (en) * 2008-10-13 2011-11-01 Applied Micro Circuits Corporation Peer-to-peer distributed storage
US8458287B2 (en) * 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US8554994B2 (en) * 2009-09-29 2013-10-08 Cleversafe, Inc. Distributed storage network utilizing memory stripes
AU2012398211B2 (en) * 2012-12-28 2016-12-08 Huawei Technologies Co., Ltd. Caching method for distributed storage system, a lock server node, and a lock client node
CN104639661A (zh) * 2015-03-13 2015-05-20 华存数据信息技术有限公司 分布式存储系统及文件存储和读取方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103789B1 (en) * 2001-03-01 2012-01-24 Juniper Networks, Inc. Method and apparatus for computing a backup path using fate sharing information
US20050138285A1 (en) * 2003-12-17 2005-06-23 Hitachi, Ltd. Computer system management program, system and method
US7783600B1 (en) * 2006-02-27 2010-08-24 Symantec Operating Corporation Redundancy management service for peer-to-peer networks
US8255739B1 (en) * 2008-06-30 2012-08-28 American Megatrends, Inc. Achieving data consistency in a node failover with a degraded RAID array
US20110229104A1 (en) * 2009-10-22 2011-09-22 Hundemer Hank J System And Method For Recording and Playback Of Multimedia Content
CN103152395A (zh) * 2013-02-05 2013-06-12 北京奇虎科技有限公司 一种分布式文件系统的存储方法及装置
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN103944981A (zh) * 2014-04-14 2014-07-23 中国科学院计算技术研究所 一种基于纠删码技术改进的云存储系统及实现方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111936960A (zh) * 2018-12-25 2020-11-13 华为技术有限公司 分布式存储系统中数据存储方法、装置及计算机程序产品
US11775194B2 (en) 2018-12-25 2023-10-03 Huawei Cloud Computing Technolgoies Co., Ltd. Data storage method and apparatus in distributed storage system, and computer program product
CN113326006A (zh) * 2021-06-17 2021-08-31 上海天玑科技股份有限公司 一种基于纠删码的分布式块存储系统
CN113326006B (zh) * 2021-06-17 2023-09-29 上海天玑科技股份有限公司 一种基于纠删码的分布式块存储系统

Also Published As

Publication number Publication date
BR102016012739B1 (pt) 2019-04-24
EP3101530B1 (en) 2019-05-08
CN104932953A (zh) 2015-09-23
EP3101530A1 (en) 2016-12-07
JP2017004513A (ja) 2017-01-05
JP6259868B2 (ja) 2018-01-10
CN107844268B (zh) 2021-09-14
CN104932953B (zh) 2017-11-21
US20160357440A1 (en) 2016-12-08
BR102016012739A2 (pt) 2017-09-19

Similar Documents

Publication Publication Date Title
CN104932953B (zh) 一种数据分发方法、数据存储方法、相关装置以及系统
CN105095013B (zh) 数据存储方法、恢复方法、相关装置以及系统
CN104166606B (zh) 文件备份方法和主存储设备
CN107870730A (zh) 用于管理存储系统的方法和系统
CN108170555A (zh) 一种数据恢复方法及设备
CN104408154B (zh) 重复数据删除方法及装置
CN104246707A (zh) 存储系统和存储装置
CN104346373A (zh) 分区日志队列同步管理方法及设备
CN110377226A (zh) 基于存储引擎bluestore的压缩方法、装置及存储介质
CN110597655B (zh) 迁移和基于纠删码的重构相耦合快速预知修复方法及装置
CN107515726A (zh) 用于管理存储设备的方法和系统
CN105960635A (zh) 从具有不同时间点的源数据的存储库中的源数据的拷贝创建复原拷贝
CN103914474A (zh) 一种数据迁移方法及系统
WO2024077860A1 (zh) 元数据的管理方法、装置和计算机设备和存储介质
CN104461705B (zh) 一种业务访问的方法及存储控制器、集群存储系统
CN110413454A (zh) 基于存储阵列的数据重建方法、装置及存储介质
CN106326082A (zh) 网络系统中记录日志的方法和装置
CN106775481B (zh) 数据读取方法及设备
CN103842954A (zh) 一种存储系统中的数据处理方法、装置和系统
CN103744751B (zh) 存储设备配置信息连续优化备份系统及其使用方法
CN105703941B (zh) 配置事务的处理方法及装置
CN108874314A (zh) 一种独立冗余磁盘阵列的重构方法及装置
CN104246716B (zh) 存储空间对象的处理方法及设备
CN111143130B (zh) 数据恢复方法、装置、计算机可读存储介质和计算机设备
CN109558066A (zh) 存储系统中恢复元数据的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220223

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right