CN105095013A - 数据存储方法、恢复方法、相关装置以及系统 - Google Patents
数据存储方法、恢复方法、相关装置以及系统 Download PDFInfo
- Publication number
- CN105095013A CN105095013A CN201510304374.7A CN201510304374A CN105095013A CN 105095013 A CN105095013 A CN 105095013A CN 201510304374 A CN201510304374 A CN 201510304374A CN 105095013 A CN105095013 A CN 105095013A
- Authority
- CN
- China
- Prior art keywords
- target
- ecblock
- node
- memory node
- message
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Abstract
本发明实施例公开了一种数据存储方法,用于提高分布式存储系统的存储一致性。本发明实施例方法包括:主存储节点对待存储的数据段进行EC编码得到目标EC条带;确定所述存储节点组中,用于存储目标EC条带的m+k个目标EC?block的m+k个目标存储节点;向目标存储节点发送准备消息;接收目标存储节点发送的响应消息;在接收到了所有目标存储节点的响应消息后,向目标存储节点发送执行消息,指示目标存储节点写入准备日志中的目标EC?block。本发明实施例还提供数据恢复方法以及相关装置。
Description
技术领域
本发明涉及数据存储领域,尤其涉及数据存储方法、恢复方法、相关装置以及系统。
背景技术
现阶段的分布式存储系统越来越多的采用纠删码(EC,ErasureCode)技术对数据进行存储。纠删码技术原理是将数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块称为一个EC条带。其中,数据块或校验块也称为ECblock,每个EC条带能容忍k个ECblock的丢失。
为了保证存储的可靠性,分布式存储系统会将每个EC条带的m+k个ECblock交给m+k个存储节点进行存储。这样,即使某个节点出现了故障,也能够根据其他节点中存储的数据将故障节点中存储的ECblock恢复出来。可以理解的,采用EC技术的分布式存储系统能够容忍k个存储节点同时出现故障。
但是,将ECblock写入存储节点需要一定的时间。若用于存储某个EC条带的m+k个存储节点中,有存储节点在写入ECblock时发生了故障,则会出现部分存储节点上有该EC条带的ECblock,而另一部分存储节点没有该EC条带的ECblock的情况,导致该EC条带的存储不一致,分布式存储系统的存储一致性较差。
发明内容
本发明实施例提供了一种数据恢复方法,用于提升分布式存储系统的存储一致性。
本发明实施例的第一方面提供了一种数据存储方法,用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述任意一个存储节点组的主存储节点执行所述方法,包括:接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式还包括:
若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第一方面的第二种实现方式,本发明实施例的第一方面的第三种实现方式还包括:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例的第二方面提供了一种数据恢复方法,用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
在所述任意一个存储节点组的备存储节点中存在故障存储节点时,所述任意一个存储节点组的主存储节点执行所述方法,包括:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,所述依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储包括:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第二种实现方式中,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
本发明实施例的第二方面、第二方面的第一种或第二种实现方式,本发明实施例的第二方面的第三种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
本发明实施例的第三方面提供了一种数据存储装置,用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述数据存储装置部署在任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据编码模块,用于接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
节点确定模块,用于确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
消息发送模块,用于向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
消息接收模块,接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
所述消息发送模块还用于:在消息接收模块接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第三方面,本发明实施例的第三方面的第一种实现方式中,所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
结合本发明实施例的第三方面的第一种实现方式,本发明实施例的第三方面的第二种实现方式中,所述装置还包括:
版本判断模块,用于在检测到所述m+k个目标存储节点中存在故障存储节点时,待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
所述消息发送模块具体用于:若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第三方面的第二种实现方式,本发明实施例的第三方面的第三种实现方式中,所述消息发送模块还用于:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例的第四方面提供了一种数据恢复装置,用于分布式存储系统,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述分布式存储系统的任意一个存储节点组的备存储节点中存在故障存储节点,所述数据恢复装置部署在所述故障存储节点所在的存储节点组的主存储节点上,所述数据恢复装置包括:
修复消息模块,用于当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
数据计算模块,用于根据所述存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
数据发送模块,用于:依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
key值判断模块,用于:若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中,是否存在与所述第一ECblock的key值相同的第二ECblock;
所述数据发送模块还用于:若所述key值判断模块确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
结合本发明实施例的第四方面,本发明实施例的第四方面的第一种实现方式中,所述数据发送模块具体用于:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
结合本发明实施例的第四方面的第一种实现方式,本发明实施例的第四方面的第二种实现方式中,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
结合本发明实施例的第四方面、第四方面的第一种或第二种实现方式,本发明实施例的第四方面的第三种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
本发明实施例的第五方面提供了一种数据存储装置,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第五方面,本发明实施例的第五方面的第一种实现方式中,所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
结合本发明实施例的第五方面的第一种实现方式,本发明实施例的第五方面的第二种实现方式中,所述处理器还用于:
若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第五方面的第二种实现方式,本发明实施例的第五方面的第三种实现方式中,所述处理器还用于:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例的第六方面提供了一种数据恢复装置,所述数据恢复装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
结合本发明实施例的第六方面,本发明实施例的第六方面的第一种实现方式中,所述处理器还用于:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
结合本发明实施例的第六方面的第一种实现方式,本发明实施例的第六方面的第二种实现方式中,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
结合本发明实施例的第六方面、第六方面的第一种或第二种实现方式,本发明实施例的第六方面的第三种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
本发明实施例的第七方面提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第七方面,本发明实施例的第七方面的第一种实现方式中,所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
结合本发明实施例的第七方面的第一种实现方式,本发明实施例的第七方面的第二种实现方式中,所述计算机还执行如下方法:
若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
结合本发明实施例的第七方面的第二种实现方式,本发明实施例的第七方面的第三种实现方式中,所述计算机还执行如下方法:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例的第八方面提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
结合本发明实施例的第八方面,本发明实施例的第八方面的第一种实现方式中,所述计算机还执行如下方法:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
结合本发明实施例的第八方面的第一种实现方式,本发明实施例的第八方面的第二种实现方式中,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
结合本发明实施例的第八方面、第八方面的第一种或第二种实现方式,本发明实施例的第八方面的第三种实现方式中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
本发明实施例的第九方面提供了一种存储节点,包括本发明实施例的第三方面、第三方面的第一种至第三种实现方式中任一项所述的数据存储装置,和/或,本发明实施例的第四方面、第四方面的第一种至第三种实现方式中任一项所述的数据恢复装置,和/或,包括本发明实施例的第五方面、第五方面的第一种至第三种实现方式中任一项所述的数据存储装置,和/或,本发明实施例的第六方面、第六方面的第一种至第三种实现方式中任一项所述的数据恢复装置,和/或,包括本发明实施例的第七方面、第七方面的第一种至第三种实现方式中任一项所述的计算机可读介质,和/或,本发明实施例的第八方面、第八方面的第一种至第三种实现方式中任一项所述的计算机可读介质。
本发明实施例提供数据存储方法包括:主节点对待存储的数据段进行EC编码得到目标EC条带,目标EC条带包括m+k个目标ECblock;确定存储节点组的备存储节点中,用于存储该m+k个目标ECblock的m+k个目标存储节点;向目标存储节点发送准备消息,准备消息中携带有该目标存储节点要存储的一个目标ECblock;接收目标存储节点发送的响应消息;在接收到所有目标存储节点发送的响应消息后,向所有的目标存储节点发送执行消息,指示目标存储节点写入准备消息中的目标ECblock。本实施例提供的方法中,用于存储目标EC条带的m+k个目标存储节点并不是直接写入要存储的目标ECblock,而是先将要存储的目标ECblock写入本地生成的准备日志中,当所有的目标存储节点都生成了准备日志之后,再一同写入目标ECblock。由于只有在所有的目标存储节点都生成了准备日志的情况下,目标存储节点才执行将目标ECblock写入正确的位置的操作,因此即使在目标存储节点写入目标ECblock的过程中出现故障,目标ECblock也已经保存到了目标存储节点的准备日志中,这样就能保证不论写入目标ECblock的操作是否成功,目标ECblock都不会丢失,避免了部分目标存储节点上有目标EC条带的目标ECblock,而另一部分目标存储节点没有目标EC条带的目标ECblock的情况,使得目标EC条带能够一致存储,提高了分布式存储系统的存储一致性。
附图说明
图1(a)为EC条带的结构图;
图1(b)为本发明实施例中分布式存储系统的一个结构示意图;
图2为本发明实施例中数据存储方法一个实施例流程图;
图3为本发明实施例中数据存储方法另一个实施例流程图;
图4为本发明实施例中数据存储方法另一个实施例流程图;
图5为本发明实施例中数据恢复方法一个实施例流程图;
图6为本发明实施例中数据存储装置一个实施例结构图;
图7为本发明实施例中数据分发装置另一个实施例结构图;
图8为本发明实施例中数据恢复装置另一个实施例结构图;
图9为本发明实施例中数据存储装置另一个实施例结构图;
图10为本发明实施例中数据分发装置另一个实施例结构图;
图11为本发明实施例中数据恢复装置另一个实施例结构图。
具体实施方式
本发明实施例提供了一种数据存储方法,用于提升分布式存储系统的一致性。本发明实施例还提供了同步方法、相关装置以及系统,以下将分别进行说明。
分布式存储系统中包括多个存储节点。上层的数据下发装置将待存储的数据分为多个数据块,然后下发给分布式存储系统的多个存储节点进行存储。将数据分布式存储能够降低数据丢失的风险,提高分布式存储系统的可靠性。其中,数据下发装置可以为客户端、服务器或其他设备。
EC技术原理是将待存储的数据进行分割成m个数据块,并且采用冗余算法对m个数据块进行校验编码,生成k个校验块,该m个数据块与k个校验块组成一条EC条带,EC条带的基本结构请参阅图1(a)。其中,每个数据块或校验块也可以称为一个ECblock,该m个数据块和k个校验块组成每个EC条带的所有ECblock。每个EC条带能容忍k个ECblock的丢失。分布式存储系统使用EC技术进行数据存储时,数据下发装置会根据待存储的数据生成多条EC条带,并将每个EC条带的m+k个ECblock下发给分布式存储系统的m+k个存储节点进行存储。这样,当分布式存储系统中有节点故障时,可以根据非故障节点上的ECblock将故障节点上存储的ECblock恢复出来。除非存储某条EC条带的m+k个存储节点中有多于k个存储节点发生故障,否则该条EC条带的数据可以被数据下发装置完整的读写。因此,采用EC技术存储数据的分布式存储系统具有很高的可靠性。
存储到分布式存储系统中的EC条带可以被数据下发装置取读或改写。值得指出的是,数据下发装置在取读时,只需要取读EC条带中用于存储数据的数据块,但是在改写时,例如对某条EC条带的m个数据块中的第i个数据块进行改写时,该条EC条带的其余数据块无需被改动,但是需要重新生成该条EC条带的校验块。
特别的,本发明实例中对分布式存储系统中的存储节点进行了分组,具体的,将存储节点分为多个存储节点组,每个存储节点组包括的存储节点的个数不小于m+k,且每个存储节点组指定一个主存储节点(下文简称主节点),其余的存储节点为备存储节点(下文简称备节点)。其中,m、k均为正整数。其中,不同的存储节点组的存储节点可以重复,例如,存储节点组1的主节点可以是存储节点组2的备节点。图1(b)本发明实施例中分布式存储系统的一个结构示意图。其中,图1(b)仅用于表示分布式存储系统中的存储节点的一种组成结构,分布式存储系统中各个存储节点也可以为其他结构。
基于上面所述的分布式存储系统,本发明实施例提出了一种数据存储方法,适用于分布式存储系统的任意一个存储节点组中的主节点,其基本流程请参阅图2:
201、对待存储的数据段进行EC编码得到目标EC条带;
主节点接收数据下发装置下发的待存储的数据段,其中,待存储的数据段的大小不大于Z,Z为m个数据块的大小。编码后的目标EC条带包括m+k个目标ECblock,具体包括m个目标数据块和k个目标校验块。
202、确定m+k个目标存储节点;
主节点在生成了m+k个目标ECblock后,在所在的存储节点组中,确定用于存储该m+k个目标ECblock的m+k个目标存储节点。其中,该m+k个目标存储节点可以包括该主节点和m+k-1个备节点,也可以包括m+k个备节点。其中,每个目标存储节点至多只能存储一个ECblock。
特别的,若该存储节点组只有m+k个存储节点(主节点和m+k-1个备节点),则主节点直接确定该m+k个存储节点为目标存储节点。
203、向目标存储节点发送准备消息;
主节点确定了目标存储节点后,向该m+k个目标存储节点分别发送准备消息,每个准备消息中携带有每个目标存储节点需要存储的一个目标ECblock。
对于身份为备节点的目标存储节点,主节点向该目标存储节点发送的准备消息为通过网络发送的节点间的消息。但步骤202中提到,主节点也可能为目标存储节点之一。若主节点为目标存储节点,则本步骤中主节点也会向主节点自身发送准备消息,但向自身发送的准备消息为不经过网络的、节点内部的消息。
204、接收目标存储节点发送的响应消息;
当目标存储节点接收到了主节点发送的准备消息后,会根据该准备消息生成准备日志,其中,准备日志保存在目标存储节点本地,准备日志的作用主要为暂时保存该目标存储节点要存储的ECblock,因此准备日志的保存位置并不是目标ECblock最终的保存位置。准备日志在实际应用中可以为日志、数据块或其他任意形式,本实施例中不做限定,但准备日志中需包括该目标存储节点接收到的准备消息中的目标ECblock。
目标存储节点生成了准备日志后,会向主节点发送响应消息,用于告知主节点,当前发送该响应消息的目标备存储节点已经根据准备消息生成了准备日志。
身为备节点的目标存储节点向主节点发送的响应消息为通过网络发送的节点间的消息。但若主节点也为目标存储节点之一,则本步骤中,主节点也会向主节点自身发送响应消息,但向自身发送的响应消息为不经过网络的、节点内部的消息。
主节点接收该m+k个个目标存储节点中的任意一个或多个目标存储节点发送的响应消息,并在接收到该m+k个目标存储节点中的所有目标存储节点发送的响应消息后,执行步骤205。
205、向目标存储节点发送执行消息;
主节点在接收到所有目标存储节点发送的响应消息后,向该m+k个目标存储节点发送执行消息,指示该m+k个目标存储节点写入准备日志中的目标ECblock。该m+k个目标存储节点接收到该执行消息后,从准备日志的存储位置将准备日志读出,并将准备日志中的目标ECblock写入到目标存储节点中用于存储该目标ECblock的位置。
对于身份为备节点的目标存储节点,主节点向该目标存储节点发送的执行消息为通过网络发送的节点间的消息。但步骤202中提到,主节点也可能为目标存储节点之一。若主节点为目标存储节点,则本步骤中主节点也会向主节点自身发送执行消息,但向自身发送的执行消息为不经过网络的、节点内部的消息。
本实施例提供了一种数据存储方法,包括:对待存储的数据段进行EC编码得到目标EC条带,目标EC条带包括m+k个目标ECblock;确定存储节点组的备存储节点中,用于存储该m+k个目标ECblock的m+k个目标存储节点;向目标存储节点发送准备消息,准备消息中携带有该目标存储节点要存储的一个目标ECblock;接收目标存储节点发送的响应消息;在接收到所有目标存储节点发送的响应消息后,向所有的目标存储节点发送执行消息,指示目标存储节点写入准备消息中的目标ECblock。本实施例提供的方法中,用于存储目标EC条带的m+k个目标存储节点并不是直接写入要存储的目标ECblock,而是先将要存储的目标ECblock写入本地生成的准备日志中,当所有的目标存储节点都生成了准备日志之后,再一同写入目标ECblock。由于只有在所有的目标存储节点都生成了准备日志的情况下,目标存储节点才执行将目标ECblock写入正确的位置的操作,因此即使在目标存储节点写入目标ECblock的过程中出现故障,目标ECblock也已经保存到了目标存储节点的准备日志中,这样就能保证不论写入目标ECblock的操作是否成功,目标ECblock都不会丢失,避免了部分目标存储节点上有目标EC条带的目标ECblock,而另一部分目标存储节点没有目标EC条带的目标ECblock的情况,使得目标EC条带能够一致存储,提高了分布式存储系统的存储一致性。
优选的,作为本发明的又一个实施例,为了保证在目标存储节点故障时,目标存储节点生成的准备日志不丢失,因此目标存储节点可以将准备日志写入掉电保护介质中。
本发明实施例中引入EC条带的key值的概念。具体的,EC条带的key值与EC条带的数据部分的地址范围对应,数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同。EC条带可以在EC条带的每个ECblock中携带该key值。
其中,EC条带的key值可以来源于数据下发装置向主节点下发的数据段。例如,分布式存储系统的卷逻辑可以分为多个逻辑区域,每个逻辑区域的大小均为k个数据块的大小。数据下发装置将带存储的数据划分为多个数据段,具体的,将落在一个逻辑区域内的数据划分为一个数据段。其中,分布式存储系统的每个逻辑区域设置有唯一的key值,每个数据段落在的逻辑区域所对应的key值,就是该数据段对应的key值。数据下发装置将key值携带在数据段中下发给主节点,主节点根据该数据段生成的EC条带具有与该数据段相同的key值。
从上述描述可以看出,key值可以用来标识数据的地址范围。另外,步骤205中提到,目标存储节点接收到执行消息后,从准备日志的存储位置将准备日志读出,并将准备日志中的目标ECblock写入到目标存储节点中用于存储该目标ECblock的位置。具体的,若该目标存储节点中并没有存储过与准备日志中的目标ECblock携带的key值相同的ECblock,则目标存储节点为该目标ECblock分配新的存储位置。若该目标存储节点中存储过与准备日志中的目标ECblock携带的key值相同的ECblock,则说明目标ECblock的地址范围已经写入了旧的数据,目标存储节点将目标ECblock写入原本用来存储与目标ECblock的key值相同的ECblock的位置上,以实现新数据对旧数据的覆盖。可以理解的,由于新数据会对旧数据进行覆盖,因此每个存储节点上存储的多个ECblock的key值各不相同。
本发明实施例中还引入EC条带的版本号的概念,具体的,版本号用于标识key值相同的两条EC条带的新旧程度,写入较新的EC条带会覆盖较旧的EC条带。例如在某一时刻,某个主节点生成了数据部分的地址范围为4M~8M,key值为2的EC条带,该EC条带的版本号为1,主节点将版本号为1的EC条带分配给6个存储节点进行存储。一小时后,主节点再次生成了数据部分的地址范围为4M~8M,key值为2的另一个EC条带,该EC条带的版本号为2。主节点将版本号为2的EC条带写入原本用于存储版本号为1的EC条带的位置,使得版本号为2的EC条带覆盖掉版本号为1的EC条带。其中,目标EC条带的版本号可以在目标EC条带的每个目标ECblock中携带。
本发明实施例中,主节点向目标存储节点发送的准备消息中还包括目标EC条带的版本号,进而目标存储节点根据准备消息生成的准备日志中也包括该目标EC条带的版本号。执行消息具体指示该m+k个目标存储节点写入准备消息中的目标ECblock以及目标EC条带的版本号。引入了版本号的概念之后,就可以根据版本号来判断EC条带的存储是否一致,若存储目标EC条带的目标存储节点上写入的目标EC条带的版本号相同,则说明目标EC条带的存储一致,若存储目标EC条带的目标存储节点上写入的目标EC条带的版本号不相同,则说明目标EC条带的存储不一致。
由于分布式存储系统的存储节点组中的存储节点随时可能发生故障,因此需要对存储节点组进行维护。存储节点组的维护有很多种方式,例如,可以设置额外的节点组管理模块。该节点组管理模块可以部署在数据下发装置上,也可以部署在存储节点上,本发明实施例中不做限定。其中,节点组管理模块负责维护各个存储节点组,具体的,节点组管理模块可以负责收集各个存储节点组所包括的存储节点、确定主节点,并通过心跳连接实时监控各存储节点的状态。当存储节点状态变化或节点组主节点变更时,节点组管理模块均需要更新收集到的信息。节点组管理模块将收集到的信息告知每个存储节点进行记录,使得每个数据下发装置和存储节点都能获知每个节点组的信息。节点组管理模块收集到的信息可以简单的表示为表(1)的形式:
表(1)
其中,表(1)仅为节点组管理模块收集到的信息的一种表现形式,节点组管理模块可以用其他形式来表现收集到的信息,本发明实施例中不做限定。
若主节点在步骤202确定了目标存储节点之后,通过节点组管理模块检测到该m+k个目标存储节点中存在故障存储节点,则主节点需要中断数据存储流程,并修复故障存储节点。故障存储节点修复后,主节点需要继续数据存储流程,具体请参阅步骤一至三:
步骤一:判断该m+k个目标存储节点上,目标EC条带的版本号是否相同。其中,若目标存储节点已生成准备日志,则目标存储节点上的目标EC条带的版本号可以为准备日志中目标EC条带的版本号,若目标存储节点没有准备日志,则目标存储节点上的目标EC条带的版本号可以为目标存储节点已经存储的目标EC条带的版本号。
若该m+k个目标存储节点中所有目标存储节点上的目标EC条带的版本号相同,则说明没有准备日志的目标存储节点已经完成了写入准备日志中要存储的目标ECblock的操作,执行步骤二;
若该m+k个目标存储节点上的目标EC条带的版本号不相同,则说明没有准备日志的目标存储节点没有生成准备日志,更没有写入要存储的目标ECblock,执行步骤三。
步骤二:向已生成准备日志的目标存储节点发送执行消息,该执行消息用于指示目标存储节点写入准备日志中的目标ECblock。已生成准备日志的目标存储节接收该执行消息后,写入准备日志中的目标ECblock,使得目标EC条带被一致保存到目标存储节点中。
步骤三:向已生成准备日志的目标存储节点发送删除消息,该删除消息用于指示目标存储节点删除准备日志。已生成准备日志的目标存储节接收该删除消息后,删除本地保存的准备日志,使得目标EC条带的目标ECblock不被写入任何一个目标存储节点中。
特别的,若故障存储节点为主节点,则主节点管理模块可以指定一个备节点为新的主节点,然后重新执行步骤一至三。
上面的实施例从主节点的角度解释了本发明实施例提供的数据存储方法,下面的实施例将站在一个备节点的角度解释本发明实施例提供的数据存储方法,其基本流程请参阅图3,包括:
301、接收主节点发送的准备消息;
主节点生成目标EC条带,并确定用于存储该目标EC条带的m+k个目标存储节点。本实施例中所述的备节点为该目标存储节点中的一个节点。
备节点接收主节点发送的准备消息,该准备消息用于在主节点确定该备节点为用于存储目标ECblock的目标存储节点时发送,该准备消息中包括该备节点要存储的目标ECblock。
302、根据该准备消息生成准备日志;
备节点收到了主节点发送的准备消息后,会根据该准备消息生成准备日志,其中,准备日志保存在该备节点本地,准备日志的作用主要为暂时保存该备节点要存储的ECblock,因此准备日志的保存位置并不是目标ECblock最终的保存位置。准备日志在实际应用中可以为日志、数据块或其他任意形式,本实施例中不做限定,但准备日志中需包括准备消息中携带的目标ECblock。所述准备日志中包括所述备存储节点要存储的目标ECblock。
303、向主节点发送响应消息;
备节点生成了准备日志后,向主节点发送响应消息,该响应消息用于表示备节点根据准备消息生成了准备日志。
可以理解的,存储节点组中的其他目标存储节点也会向主节点发送该响应消息。
304、接收主节点发送的送执行消息;
备节点接收主节点发送的执行消息,该执行消息由主节点在接收到所有目标存储节点的响应消息后发送,该执行消息用于指示写入准备日志中的目标ECblock。
305、写入准备日志中的目标ECblock。
备节点接收到执行消息后,写入准备日志中携带的目标ECblock。
本实施例站在一个备节点的角度来描述本发明实施例提供的数据存储方法。其中,备节点接收主节点发送的准备消息;根据该准备消息生成准备日志;向主节点发送响应消息;接收主节点发送的送执行消息;根据执行消息,写入准备日志中的目标ECblock。本实施例提供的方法中,备节点并不是直接写入要存储的目标ECblock,而是先将要存储的目标ECblock写入本地生成的准备日志中,当接收到主节点发送的执行消息后,再写入目标ECblock,因此即使备节点在写入目标ECblock的过程中出现故障,目标ECblock也已经保存到了备节点的准备日志中,这样就能保证不论写入目标ECblock的操作是否成功,目标ECblock都不会丢失。若主节点确定的所有目标存储节点上的目标ECblock都不丢失,就可以避免部分目标存储节点上有目标EC条带的目标ECblock,而另一部分目标存储节点没有目标EC条带的目标ECblock的情况,使得目标EC条带能够一致存储,提高了分布式存储系统的存储一致性。
优选的,作为本发明的又一个实施例,备节点接收到的主节点发送的准备消息中,还包括主节点生成的目标EC条带的版本号,进而备节点根据准备消息生成的准备日志中也包括该目标EC条带的版本号。备节点根据执行消息,写入目标ECblock的同时,也写入目标EC条带的版本号。
优选的,作为本发明的又一个实施例,为了备节点保证在故障时,生成的准备日志不丢失,因此备节点可以将准备日志写入掉电保护介质中。
图1所示的实施例中,步骤三种提到,若主节点确定目标存储节点上的目标EC条带的版本号不相同,则主节点向已生成准备日志的目标存储节点发送删除消息。因此优选的,作为本发明的又一个实施例,备节点在步骤304之前,还可以接收主节点发送的删除消息。接收到删除消息后,删除本地保存的准备日志。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述,具体流程请参阅图4:
分布式存储系统以EC条带的形式存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。
401、生成目标EC条带。节点A接收数据下发装置下发的数据段,并对数据段进行EC编码,得到目标EC条带。其中,目标EC条带的版本号为3,目标EC条带的数据部分的地址范围为4M~8M。
402、确定目标存储节点。节点A确定用于存储该目标EC条带的6个ECblock的目标存储节点为节点A~F。
403、发送准备消息。节点A向节点A~F发送准备消息,发送给每个节点的准备消息中均携带有一个目标ECblock和目标EC条带的版本号,节点A~F接收该准备消息。
404、生成准备日志。节点A~F生成准备日志,该准备日志中包括要存储的目标ECblock和目标EC条带的版本号。
405、发送响应消息。节点A~F在生成了准备日志后,向节点A发送响应消息。节点A接收节点A~F发送的响应消息。
406、发送执行消息。节点A在接收到节点A~F发送的响应消息后,向节点A~F发送执行消息,节点A~F接收该执行消息。
407、节点A~E写入准备日志中的目标ECblock和版本号,节点F出现故障。在节点A发送执行消息后,节点A~E写入准备日志中的目标ECblock和版本号,节点F在接收到执行消息的过程中出现故障。
408、确定目标EC条带的版本号相同。节点A确定节点F出现故障,则待节点F故障恢复后,判断节点A~F上,目标EC条带的版本号是否相同。其中,节点A~E上没有准备日志,已经存储的目标ECblock中携带的目标EC条带的版本号为3。节点F上有准备日志,准备日志中目标ECblock中携带的目标EC条带的版本号为3。
409、节点A向节点F发送执行消息。节点F接收该执行消息。
410、节点F写入准备日志中的目标ECblock和版本号。
上面的实施例中提到,若有目标存储节点发生故障,则需要待故障存储节点的故障修复后再执行数据存储流程。但发生的故障有可能会导致故障存储节点中的数据丢失,此时主节点需要根据存储节点组中其他的存储节点上存储的ECblock,使用EC技术计算得到故障存储节点缺失的ECblock,然后将计算得到的ECblock同步到修复后的估值存储节点中。为此,本发明实施例提供了一种数据恢复方法,具体包括:
501、接收故障存储节点发送的修复消息;
分布式存储系统中任意存储节点组存在故障存储节点,故障存储节点修复后,向主节点发送修复消息,该修复消息用于表示该故障存储节点已修复。主存储节点接收该修复消息。
502、计算得到N个故障存储节点的缺失的ECblock;
上文中已经提到,分布式存储系统使用EC技术,以EC条带的形式存储数据,一个EC条带包括m+k个ECblock,分别存储在一个存储节点组中的m+k个存储节点上,一个EC条带能够容忍k个ECblock的丢失。以EC条带A为例,若故障存储节点上丢失了EC条带A的ECblock,主节点可以根据非故障节点上存储的EC条带A的其他ECblock,通过EC技术计算得到故障存储节点丢失的ECblock。
因此本实施例中,主节点接收到修复消息后,根据主节点所在的本存储节点组中的非故障存储节点(即除故障存储节点之外的存储节点)上存储的ECblock,计算得到N个故障存储节点缺失的ECblock。
上文中已经提到,每个存储节点上存储的多个ECblock的key值各不相同,因此故障存储节点所缺失的N个ECblock应携带有不同的key值。
503、依次将N个缺失的ECblock发送给故障存储节点以执行存储,若主节点在依次将N个缺失的ECblock发送给故障存储节点的过程中生成了第一ECblock,并确定由故障存储节点存储该第一ECblock,则判断故障存储节点当前未成功存储的缺失的ECblock中,是否存在与第一ECblock的key值相同的第二ECblock,若判断结果为是,则待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储。
主节点计算得到N个故障存储节点缺失的ECblock后,将该N个缺失的ECblock排成发送队列,并依次向故障存储节点发送该N个缺失的ECblock。
若主节点在依次向故障存储节点发送该N个缺失的ECblock的过程中,又生成了新的EC条带,并确定由该故障存储节点来存储该新的EC条带中的第一ECblock,则主节点判断该N个缺失的ECblock中,故障存储节点当前尚未成功存储的缺失的ECblock中是否存在第二ECblock,其中第二ECblock与第一ECblock的key值相同。
可以理解的,若主节点在生成第一ECblock后直接将第一ECblock发送给了故障存储节点以执行存储,而故障存储节点当前尚未成功存储的缺失的ECblock中又存在第二ECblock,则当主节点继续执行依次向故障存储节点发送N个缺失的ECblock的操作时,会造成第二ECblock将第一ECblock的数据覆盖掉的情况。为了避免较新的第一ECblock被较旧的第二ECblock覆盖,本实施例中,若主节点确定故障存储节点当前未成功存储的缺失的ECblock中存在第二ECblock,则主节点将第一ECblock插入发送队列中第二ECblock后面,即先不将第一ECblock发送给故障存储节点,待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储。
本实施例提供了一种数据恢复方法,其中,主节点在故障存储节点修复后,计算得到N个故障存储节点缺失的ECblock,并依次将该N个缺失的ECblock发送给故障存储节点以执行存储。若主节点在依次将N个缺失的ECblock发送给故障存储节点的过程中又生成了新的EC条带,并确定由该故障存储节点来存储该新的EC条带中的第一ECblock,则主节点判断故障存储节点当前尚未成功存储的缺失的ECblock中是否存在第二ECblock,其中第二ECblock与第一ECblock的key值相同。若确定存在该第二ECblock,则主节点待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储。通过这样的方法,能够避免新数据被旧数据覆盖,保证了修复后的故障存储节点上存储的ECblock为当前的最新版本。
步骤503中,主节点依次将N个缺失的ECblock发送给故障存储节点以执行存储。具体的,主节点从该N个缺失的ECblock中的第1个缺失的ECblock开始发送给故障存储节点,且主节点在将第n个缺失的ECblock发送给故障存储节点后,接收该第n个缺失的ECblock对应的响应消息,该响应消息由故障存储节点发送,用于表示故障存储节点成功存储了该第n个缺失的ECblock。主节点在接收了该第n个缺失的ECblock对应的响应消息后,再向故障存储节点发送下一个缺失的ECblock,其中1≤n≤N。主节点依次将N个缺失的ECblock发送给故障存储节点可以归纳为如下步骤:
步骤一:主节点将第n个缺失的ECblock发送给故障存储节点,其中,n在流程开始时的起始值为1,且n不大于N;
步骤二:主节点将第n个缺失的ECblock发送给故障存储节点后,接收该第n个缺失的ECblock对应的响应消息;
步骤三:主节点在接收到第n个缺失的ECblock对应的响应消息后,若n<N,则n值加1,并再次执行步骤一。
主节点通过循环执行步骤一至步骤三,可以实现将该N个缺失的ECblock发送给故障存储节点以执行存储。
若使用响应消息来表示故障存储节点成功存储了缺失的ECblock,则步骤503中,主节点待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储具体应为:主节点在将第二ECblock发送给故障存储节点,并接收到故障存储节点发送的第二ECblock的响应消息后,再将第一ECblock发送给故障存储节点以执行存储。
步骤503中,主节点需要判断该N个缺失的ECblock中,故障存储节点当前尚未成功存储的缺失的ECblock中是否存在第二ECblock。可以理解的,该故障存储节点当前尚未成功存储的缺失的ECblock应包括:主节点当前还未发送给故障存储节点的缺失的ECblock,以及当前已发送给故障存储节点但没有接收到对应的响应消息的缺失的ECblock。
上文中提到,分布式存储系统的卷逻辑可以分为多个逻辑区域,每个逻辑区域的大小均为k个数据块的大小且互不重叠。分布式存储系统的每个逻辑区域设置有唯一的key值,每个数据段落在的逻辑区域所对应的key值,就是该数据段对应的key值。数据下发装置将key值携带在数据段中下发给主节点,主节点根据该数据段生成的EC条带具有与该数据段相同的key值,而EC条带的key值在EC条带的ECblock中携带。因此可以理解的,每个ECblock落在的逻辑区域的key值即为该ECblock的key值。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统以EC条带的形式存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。某时刻,节点F发生故障。三小时后节点F修复但数据已丢失。
节点F向节点A发送修复消息,告知节点A节点F的故障已修复。节点A接收该修复消息。
节点A在接收到该修复消息后,根据节点A、节点B、节点C、节点D、节点E上存储的所有ECblock,计算得到200个节点F缺失的ECblock。
主节点每次向节点F发送一个缺失的ECblock,在接收到节点F对该缺失的ECblock的响应消息后,再发送下一个缺失的ECblock。这样依次将200个缺失的ECblock发送给节点F。
在将第151个缺失的ECblock发送给节点F后,节点A根据数据下发装置下发的数据段生成了新的EC条带,并确定由节点F存储该新的EC条带中的第一ECblock,其中第一ECblock的key值为25。
由于节点A当前并没有接收到节点F发送的第151个缺失的ECblock的响应消息,因此节点A判断第151~第200个缺失的ECblock中,是否存在key值为25的第二ECblock。节点A确定第190个缺失的ECblock的key值为25。
节点A暂时不向节点F发送第一ECblock,在将第190个缺失的ECblock发送给节点F,并接收到节点F发送的第190个缺失的ECblock的响应消息后,再向节点F发送第一ECblock。
节点A将全部200个缺失的ECblock发送给节点F,节点F就完成了数据恢复。
上面的实施例给出了本发明实施例提供的数据存储或数据恢复方法,下面将提供相应的装置,以实现上述方法。
本发明实施例提供了一种数据存储装置,该数据存储装置部署在任意一个存储节点组的主存储节点上,具体包括:
数据编码模块601,用于接收待存储的数据段,对待存储的数据段进行EC编码得到目标EC条带。其中,待存储的数据段的大小不大于Z,Z为m个数据块的大小,目标EC条带包括m+k个目标ECblock,具体包括m个目标数据块和k个目标校验块;
节点确定模块602,用于确定存储节点组中用于存储m+k个目标ECblock的m+k个目标存储节点,其中,每个目标存储节点用于存储一个目标ECblock;
消息发送模块603,用于向该m+k个目标存储节点分别发送准备消息,其中,每个准备消息中包括每个目标存储节点需要存储的目标ECblock;
消息接收模块604,用于接收m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,该响应消息用于表示当前发送所述响应消息的目标备存储节点根据准备消息生成了准备日志,其中,准备日志中包括当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
消息发送模块603还用于:在消息接收模块604接收到了该m+k个目标存储节点中的所有目标存储节点的响应消息后,向该m+k个目标存储节点发送执行消息,该执行消息用于指示该m+k个目标存储节点写入准备日志中的目标ECblock。
本实施例提供的数据存储装置中,数据编码模块601对待存储的数据段进行EC编码得到目标EC条带;节点确定模块602确定存储节点组的备存储节点中,用于存储该m+k个目标ECblock的m+k个目标存储节点;消息发送模块603向目标存储节点发送准备消息;消息接收模块604接收目标存储节点发送的响应消息;消息发送模块603在接收到所有目标存储节点发送的响应消息后,向所有的目标存储节点发送执行消息,指示目标存储节点写入准备消息中的目标ECblock。本实施例提供的数据存储装置使得用于存储目标EC条带的m+k个目标存储节点并不是直接将要存储的目标ECblock写入,而是先将要存储的目标ECblock写入本地生成的准备日志中,当所有的目标存储节点都生成了准备日志之后,再一同写入目标ECblock。由于只有在所有的目标存储节点都生成了准备日志的情况下,目标存储节点才执行将目标ECblock写入正确的位置的操作,因此即使在目标存储节点写入目标ECblock的过程中出现故障,目标ECblock也已经保存到了目标存储节点的准备日志中,这样就能保证不论写入目标ECblock的操作是否成功,目标ECblock都不会丢失,避免了部分目标存储节点上有目标EC条带的目标ECblock,而另一部分目标存储节点没有目标EC条带的目标ECblock的情况,使得目标EC条带能够一致存储,提高了分布式存储系统的存储一致性。
优选的,作为本发明的又一个实施例,为了保证在目标存储节点故障时,目标存储节点生成的准备日志不丢失,因此目标存储节点可以将准备日志写入掉电保护介质中。
优选的,作为本发明的又一个实施例,主节点向目标存储节点发送的准备消息中还包括目标EC条带的版本号,进而目标存储节点根据准备消息生成的准备日志中也包括该目标EC条带的版本号。执行消息具体指示该m+k个目标存储节点写入准备消息中的目标ECblock,以及目标EC条带的版本号。
优选的,作为本发明的又一个实施例,数据存储装置还可以包括版本判断模块605,用于在检测到该m+k个目标存储节点中存在故障存储节点时,待故障存储节点的故障修复后,判断该m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,该m+k个目标存储节点上的目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号。消息发送模块603具体用于:若该m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息;若该m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,该删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例还提供了一种数据存储装置,用于部署在备节点上。其结构请参阅图7,包括:
接收消息模块701,用于接收主存储节点发送的准备消息,准备消息中包括该数据存储装置所在的备存储节点要存储的目标ECblock;
日志生成模块702,用于根据准备消息生成准备日志,该准备日志中包括该备存储节点要存储的目标ECblock;
发送消息模块703,用于向主存储节点发送响应消息,该响应消息用于表示备存储节点根据准备消息生成了准备日志;
接收消息模块701还用于:接收主存储节点发送的执行消息;
数据写入模块704,用于根据该执行消息,写入准备日志中的目标ECblock。
本实施例提供的数据存储装置中,接收消息模块701接收主节点发送的准备消息;日志生成模块702根据该准备消息生成准备日志;发送消息模块703向主节点发送响应消息;接收消息模块701接收主节点发送的送执行消息;数据写入模块704根据执行消息,写入准备日志中的目标ECblock。本实施例提供的数据存储装置并不是直接写入要存储的目标ECblock,而是先将要存储的目标ECblock写入本地生成的准备日志中,当接收到主节点发送的执行消息后,再写入目标ECblock,因此即使备节点在写入目标ECblock的过程中出现故障,目标ECblock也已经保存到了备节点的准备日志中,这样就能保证不论写入目标ECblock的操作是否成功,目标ECblock都不会丢失。若主节点确定的所有目标存储节点上的目标ECblock都不丢失,就可以避免部分目标存储节点上有目标EC条带的目标ECblock,而另一部分目标存储节点没有目标EC条带的目标ECblock的情况,使得目标EC条带能够一致存储,提高了分布式存储系统的存储一致性。
优选的,作为本发明的又一个实施例,该备存储节点要存储的目标ECblock为主存储节点生成的目标EC条带中的一个数据块或校验块,该准备消息中,还包括主节点生成的目标EC条带的版本号,进而备节点根据准备消息生成的准备日志中也包括该目标EC条带的版本号。备节点根据执行消息,写入目标ECblock的同时,也写入目标EC条带的版本号。
优选的,作为本发明的又一个实施例,接收消息模块701还用于接收所述主存储节点发送的删除消息;数据存储装置还可以包括数据删除模块705,用于根据该删除消息删除准备日志。
可以理解的,存储节点的身份是主节点或者备节点是可以自由设定的,且一个存储节点可以为一个存储节点组的主节点,同时又为另一个存储节点组的备节点,因此图6和图7所示的数据存储装置可以位于同一个存储节点上。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述,具体流程请仍参阅图4:
分布式存储系统以EC条带的形式存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。
401、生成目标EC条带。节点A接收数据下发装置下发的数据段,节点A的数据编码模块对数据段进行EC编码,得到目标EC条带。其中,目标EC条带的版本号为3,目标EC条带的数据部分的地址范围为4M~8M。
402、确定目标存储节点。节点A的节点确定模块确定用于存储该目标EC条带的6个ECblock的目标存储节点为节点A~F。
403、发送准备消息。节点A的消息发送模块向节点A~F发送准备消息,发送给每个节点的准备消息中均携带有一个目标ECblock和目标EC条带的版本号,节点A~F的接收消息模块接收该准备消息。
404、生成准备日志。节点A~F的日志生成模块生成准备日志,该准备日志中包括要存储的目标ECblock和目标EC条带的版本号。
405、发送响应消息。在生成了准备日志后,节点A~F的发送消息模块向节点A发送响应消息。节点A的消息接收模块接收节点A~F发送的响应消息。
406、向节点A~F发送执行消息。在接收到节点A~F发送的响应消息后,节点A的消息发送模块向节点A~F发送执行消息,节点A~F的接收消息模块接收该执行消息。
407、节点A~E写入准备日志中的目标ECblock和版本号,节点F出现故障。在节点A发送执行消息后,节点A~E的数据写入模块写入准备日志中的目标ECblock和版本号,节点F在接收到执行消息的过程中出现故障。
408、确定目标EC条带的版本号相同。节点A确定节点F出现故障,则待节点F故障恢复后,节点A的版本判断模块判断节点A~F上,目标EC条带的版本号是否相同。其中,节点A~E上没有准备日志,已经存储的目标ECblock中携带的目标EC条带的版本号为3。节点F上有准备日志,准备日志中目标ECblock中携带的目标EC条带的版本号为3。
409、节点A的消息发送模块向节点F发送执行消息。节点F的接收消息模块接收该执行消息。
410、节点F的数据写入模块写入准备日志中的目标ECblock和版本号。
本发明实施例还提供了一种数据恢复装置,用于恢复故障存储节点中缺失的数据,该数据恢复装置部署在故障存储节点所在的存储节点组的主存储节点上,具体结构请参阅图8,包括:
修复消息模块801,用于当故障存储节点的故障修复后,接收故障存储节点发送的修复消息,该修复消息用于表示故障存储节点的故障已被修复;
数据计算模块802,用于根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个故障存储节点的缺失的ECblock,N为正整数;
数据发送模块803,用于:依次将N个缺失的ECblock发送给故障存储节点以执行存储;
key值判断模块804,用于:若在依次将N个缺失的ECblock发送给故障存储节点的过程中,主存储节点生成了第一ECblock,并确定由故障存储节点存储该第一ECblock,则判断故障存储节点当前未成功存储的缺失的ECblock中,是否存在与第一ECblock的key值相同的第二ECblock;
数据发送模块803还用于:若故障存储节点当前未成功存储的缺失的ECblock中,存在第二ECblock,则待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储。
本实施例提供了一种数据恢复装置,其中,数据计算模块802在故障存储节点修复后,计算得到N个故障存储节点缺失的ECblock,数据发送模块803依次将该N个缺失的ECblock发送给故障存储节点以执行存储。若主节点在依次将N个缺失的ECblock发送给故障存储节点的过程中生成了新的EC条带,并确定由该故障存储节点来存储该新的EC条带中的第一ECblock,则Key值判断模块804判断故障存储节点当前尚未成功存储的缺失的ECblock中是否存在第二ECblock,其中第二ECblock与第一ECblock的key值相同。若确定存在该第二ECblock,则数据发送模块803待故障存储节点成功存储了第二ECblock后,再将第一ECblock发送给故障存储节点以执行存储。通过这样的方法,能够避免新数据被旧数据覆盖,保证了修复后的故障存储节点上存储的ECblock为当前的最新版本。
优选的,作为本发明的又一个实施例,数据发送模块803具体用于:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
优选的,作为本发明的又一个实施例,当前未成功存储的缺失的ECblock包括:当前还未发送给故障存储节点的缺失的ECblock,以及当前已发送给故障存储节点但没有接收到对应的响应消息的缺失的ECblock。
优选的,作为本发明的又一个实施例,分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为该ECblock的key值。
为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。
分布式存储系统以EC条带的形式存储数据,每个EC条带包括4个数据块和2个校验块。分布式存储系统包括100个存储节点组,其中存储节点组1包括6个存储节点,主节点为节点A,备节点为节点B、节点C、节点D、节点E和节点F。某时刻,节点F发生故障。三小时后节点F修复但数据已丢失。
节点F向节点A发送修复消息,告知节点A节点F的故障已修复。节点A的修复消息模801接收该修复消息。
节点A在接收到该修复消息后,数据计算模块802根据节点A、节点B、节点C、节点D、节点E上存储的所有ECblock,计算得到200个节点F缺失的ECblock。
主节点的数据发送模块803每次向节点F发送一个缺失的ECblock,在接收到节点F对该缺失的ECblock的响应消息后,再发送下一个缺失的ECblock。这样依次将200个缺失的ECblock发送给节点F。
在数据发送模块803将第151个缺失的ECblock发送给节点F后,节点A根据数据下发装置下发的数据段生成了新的EC条带,并确定由节点F存储该新的EC条带中的第一ECblock,其中第一ECblock的key值为25。
由于节点A当前并没有接收到节点F发送的第151个缺失的ECblock的响应消息,因此节点A的key值判断模块804判断第151~第200个缺失的ECblock中,是否存在key值为25的第二ECblock。节点A确定第190个缺失的ECblock的key值为25。
节点A的数据发送模块803暂时不向节点F发送第一ECblock,在将第190个缺失的ECblock发送给节点F,并接收到节点F发送的第190个缺失的ECblock的响应消息后,再向节点F发送第一ECblock。
节点A的数据发送模块803将全部200个缺失的ECblock发送给节点F,节点F就完成了数据恢复。
上面从单元化功能实体的角度对本发明实施例中的各装置进行了描述,下面从硬件处理的角度对本发明实施例中的装置进行描述。
请参阅图9,本发明实施例提供的数据存储装置的另一实施例包括:
输入装置901、输出装置902、处理器903和存储器904(其中数据存储装置900中的处理器903的数量可以一个或多个,图9中以一个处理器903为例)。在本发明的一些实施例中,输入装置901、输出装置902、处理器903和存储器904可通过总线或其它方式连接,其中,图9中以通过总线连接为例。
其中,通过调用存储器904存储的操作指令,处理器903用于执行如下步骤:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
本发明的一些实施例中,所述准备消息中还包括所述目标EC条带的版本号;
所述目标备存储节点根据所述准备消息生成的所述准备日志中,还包括所述目标EC条带的版本号;
所述执行消息具体用于:指示目标存储节点写入所述准备消息中的目标ECblock,和所述目标EC条带的版本号。
本发明的一些实施例中,处理器903还执行如下步骤:
若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
本发明的一些实施例中,处理器903还执行如下步骤:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
本发明实施例提供的数据存储装置的另一实施例请参阅图10,包括:
输入装置1001、输出装置1002、处理器1003和存储器1004(其中数据存储装置1000中的处理器1003的数量可以一个或多个,图10中以一个处理器1003为例)。在本发明的一些实施例中,输入装置1001、输出装置1002、处理器1003和存储器1004可通过总线或其它方式连接,其中,图10中以通过总线连接为例。
其中,通过调用存储器1004存储的操作指令,处理器1003用于执行如下步骤:
接收所述主存储节点发送的准备消息,所述准备消息中包括所述备存储节点要存储的目标ECblock;
根据所述准备消息生成准备日志,所述准备日志中包括所述备存储节点要存储的目标ECblock;
向所述主存储节点发送响应消息,所述响应消息用于表示所述备存储节点根据所述准备消息生成了准备日志;
接收所述主存储节点发送的送执行消息;
根据所述执行消息,写入所述准备日志中的目标ECblock。
本发明的一些实施例中,所述备存储节点要存储的目标ECblock为所述主存储节点生成的目标EC条带中的一个数据块或校验块,所述准备消息中还包括所述目标EC条带的版本号;
所述备存储节点根据所述准备消息生成的所述准备日志中,还包括所述目标EC条带的版本号;
所述执行消息具体用于:指示目标存储节点写入所述准备消息中的目标ECblock,和所述目标EC条带的版本号。
本发明的一些实施例中,处理器1003还执行如下步骤:
接收所述主存储节点发送的删除消息;
根据所述删除消息删除所述准备日志。
本发明实施例提供的数据恢复装置的另一实施例请参阅图11,包括:
输入装置1101、输出装置1102、处理器1103和存储器1104(其中数据存储装置1100中的处理器1103的数量可以一个或多个,图11中以一个处理器1103为例)。在本发明的一些实施例中,输入装置1101、输出装置1102、处理器1103和存储器1104可通过总线或其它方式连接,其中,图11中以通过总线连接为例。
其中,通过调用存储器1104存储的操作指令,处理器1103用于执行如下步骤:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
本发明的一些实施例中,处理器1103还执行如下步骤:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
本发明的一些实施例中,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
本发明的一些实施例中,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
本发明实施例还提供了一种存储节点,包括图6至图11中任意一幅或多幅所示的装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (21)
1.一种数据存储方法,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述任意一个存储节点组的主存储节点执行所述方法,包括:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
2.根据权利要求1所述的数据存储方法,其特征在于:
所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
3.根据权利要求2所述的数据存储方法,其特征在于,所述方法在向所述目标存储节点发送准备消息之后还包括:
若检测到所述m+k个目标存储节点中存在故障存储节点,则待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
4.根据权利要求3所述的数据存储方法,其特征在于,所述方法还包括:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
5.一种数据恢复方法,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
在所述任意一个存储节点组的备存储节点中存在故障存储节点时,所述任意一个存储节点组的主存储节点执行所述方法,包括:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
6.根据权利要求5所述的数据恢复方法,其特征在于,所述依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储包括:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
7.根据权利要求6所述的数据恢复方法,其特征在于,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
8.根据权利要求5至7中任一项所述的数据恢复方法,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
9.一种数据存储装置,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述数据存储装置部署在任意一个存储节点组的主存储节点上,所述数据存储装置包括:
数据编码模块,用于接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
节点确定模块,用于确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
消息发送模块,用于向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
消息接收模块,接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
所述消息发送模块还用于:在消息接收模块接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
10.根据权利要求9所述的数据存储装置,其特征在于:
所述准备消息中还包括所述目标EC条带的版本号;
所述准备日志中还包括所述目标EC条带的版本号;
所述执行消息具体用于指示所述m+k个目标存储节点写入所述准备消息中的目标ECblock和所述目标EC条带的版本号。
11.根据权利要求10所述的数据存储装置,其特征在于,所述装置还包括:
版本判断模块,用于在检测到所述m+k个目标存储节点中存在故障存储节点时,待所述故障存储节点的故障修复后,判断所述m+k个目标存储节点上的目标EC条带的版本号是否相同,其中,所述m+k个目标存储节点上的所述目标EC条带的版本号包括:已生成准备日志的目标存储节点上的准备日志中目标EC条带的版本号,和/或,没有准备日志的目标存储节点所存储的目标EC条带的版本号;
所述消息发送模块具体用于:若所述m+k个目标存储节点中的所有目标存储节点上的目标EC条带的版本号相同,则向已生成准备日志的目标存储节点发送执行消息,所述执行消息用于指示目标存储节点写入所述准备日志中的目标ECblock。
12.根据权利要求11所述的数据存储装置,其特征在于,所述消息发送模块还用于:
若所述m+k个目标存储节点中的目标存储节点上的目标EC条带的版本号不相同,则向已生成准备日志的目标存储节点发送删除消息,所述删除消息用于指示目标存储节点删除所述准备日志。
13.一种数据恢复装置,用于分布式存储系统,其特征在于,所述分布式存储系统通过纠删码EC条带来存储数据,每个EC条带包括数据部分和校验部分,所述每个EC条带的数据部分包括m个数据块,所述每个EC条带的校验部分包括对所述m个数据块进行校验编码后得到的k个校验块,所述m个数据块和所述k个校验块组成所述每个EC条带的ECblock;每个EC条带对应有key值,且数据部分的地址范围相同的EC条带的key值相同,数据部分的地址范围不同的EC条带的key值不同;所述分布式存储系统包括多个存储节点组,每个存储节点组包括不少于m+k个存储节点,每个存储节点组指定一个主存储节点,所述每个存储节点组中除主存储节点之外的节点为备存储节点,所述m、k均为正整数;
所述分布式存储系统的任意一个存储节点组的备存储节点中存在故障存储节点,所述数据恢复装置部署在所述故障存储节点所在的存储节点组的主存储节点上,所述数据恢复装置包括:
修复消息模块,用于当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
数据计算模块,用于根据所述存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
数据发送模块,用于:依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
key值判断模块,用于:若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中,是否存在与所述第一ECblock的key值相同的第二ECblock;
所述数据发送模块还用于:若所述key值判断模块确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
14.根据权利要求13所述的数据恢复装置,其特征在于,所述数据发送模块具体用于:
将第n个缺失的ECblock发送给所述故障存储节点,其中1≤n≤N;
接收所述第n个缺失的ECblock对应的响应消息,所述响应消息由所述故障存储节点发送,所述响应消息用于表示所述故障存储节点成功存储了所述第n个缺失的ECblock;
在接收所述故障存储节点对所述第n个缺失的ECblock的响应消息后,若n<N,则n值加1,并再次执行所述将第n个缺失的ECblock发送给所述故障存储节点的步骤。
15.根据权利要求14所述的数据恢复装置,其特征在于,所述当前未成功存储的所述缺失的ECblock包括:当前还未发送给所述故障存储节点的所述缺失的ECblock,以及当前已发送给所述故障存储节点但没有接收到对应的响应消息的所述缺失的ECblock。
16.根据权利要求13至15中任一项所述的数据恢复装置,其特征在于,所述分布式存储系统的逻辑卷包括多个逻辑区域,每个逻辑区域为k个数据块的大小且互不重叠,每个所述逻辑区域唯一对应一个key值,每个ECblock落在的逻辑区域的key值即为所述ECblock的key值。
17.一种数据存储装置,其特征在于,所述数据存储装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
18.一种数据恢复装置,其特征在于,所述数据恢复装置包括输入装置、输出装置、处理器和存储器,其中,通过调用存储器存储的操作指令,所述处理器用于:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
19.一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
接收待存储的数据段,对所述待存储的数据段进行EC编码得到目标EC条带,所述待存储的数据段的大小不大于Z,所述Z为m个数据块的大小,所述目标EC条带包括m+k个目标ECblock,所述m+k个目标ECblock包括m个目标数据块和k个目标校验块;
确定m+k个目标存储节点,其中,所述m+k个目标存储节点用于存储所述m+k个目标ECblock,每个目标存储节点存储一个所述目标ECblock;
向所述m+k个目标存储节点分别发送准备消息,每个准备消息中包括所述每个目标存储节点需要存储的目标ECblock;
接收所述m+k个目标存储节点中的任意一个目标存储节点发送的响应消息,所述响应消息用于表示当前发送所述响应消息的目标备存储节点已经根据所述准备消息生成了准备日志,所述准备日志中包括所述当前发送所述响应消息的目标存储节点需要存储的目标ECblock;
在接收到了所述m+k个目标存储节点中的所有目标存储节点的响应消息后,向所述m+k个目标存储节点发送执行消息,所述执行消息用于指示所述m+k个目标存储节点写入所述准备日志中的目标ECblock。
20.一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行如下方法:
当所述故障存储节点的故障修复后,接收所述故障存储节点发送的修复消息;
根据本存储节点组内非故障存储节点存储的ECblock,计算得到N个所述故障存储节点的缺失的ECblock,所述N为正整数;
依次将所述N个缺失的ECblock发送给所述故障存储节点以执行存储;
若在所述依次将所述N个缺失的ECblock发送给所述故障存储节点的过程中,所述主存储节点生成了第一ECblock,并确定由所述故障存储节点存储所述第一ECblock,则判断所述故障存储节点当前未成功存储的所述缺失的ECblock中是否存在与所述第一ECblock的key值相同的第二ECblock;
若确定存在所述第二ECblock,则待所述故障存储节点成功存储了所述第二ECblock后,再将所述第一ECblock发送给所述故障存储节点以执行存储。
21.一种存储节点,其特征在于,包括权利要求9至12中任一项所述的数据存储装置,和/或,权利要求13至16中任一项所述的数据恢复装置。
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710825442.3A CN107748702B (zh) | 2015-06-04 | 2015-06-04 | 一种数据恢复方法和装置 |
CN201510304374.7A CN105095013B (zh) | 2015-06-04 | 2015-06-04 | 数据存储方法、恢复方法、相关装置以及系统 |
EP16172079.2A EP3109757B1 (en) | 2015-06-04 | 2016-05-31 | Data storage method, data recovery method, related apparatus, and system |
EP18213250.6A EP3575964B1 (en) | 2015-06-04 | 2016-05-31 | Data storage method, data recovery method in a distributed storage system with m+k storage nodes |
US15/173,327 US9710331B2 (en) | 2015-06-04 | 2016-06-03 | Data storage method, data recovery method, related apparatus, and system |
BR122018006762A BR122018006762B8 (pt) | 2015-06-04 | 2016-06-03 | Método de armazenamento de dados, método de recuperação de dados, aparelho relacionado e sistema |
JP2016111409A JP6347802B2 (ja) | 2015-06-04 | 2016-06-03 | データ記憶方法、データ回復方法、関係する装置及びシステム |
BR102016012742A BR102016012742B8 (pt) | 2015-06-04 | 2016-06-03 | Método de armazenamento de dados, método de recuperação de dados, aparelho relacionado, e sistema |
US15/603,413 US9823970B2 (en) | 2015-06-04 | 2017-05-23 | Data storage method, data recovery method, related apparatus, and system |
JP2017211519A JP6649340B2 (ja) | 2015-06-04 | 2017-11-01 | データ記憶方法、データ回復方法、関係する装置及びシステム |
US15/817,298 US10133633B2 (en) | 2015-06-04 | 2017-11-20 | Data storage method, data recovery method, related apparatus, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510304374.7A CN105095013B (zh) | 2015-06-04 | 2015-06-04 | 数据存储方法、恢复方法、相关装置以及系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710825442.3A Division CN107748702B (zh) | 2015-06-04 | 2015-06-04 | 一种数据恢复方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095013A true CN105095013A (zh) | 2015-11-25 |
CN105095013B CN105095013B (zh) | 2017-11-21 |
Family
ID=54575514
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510304374.7A Active CN105095013B (zh) | 2015-06-04 | 2015-06-04 | 数据存储方法、恢复方法、相关装置以及系统 |
CN201710825442.3A Active CN107748702B (zh) | 2015-06-04 | 2015-06-04 | 一种数据恢复方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710825442.3A Active CN107748702B (zh) | 2015-06-04 | 2015-06-04 | 一种数据恢复方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9710331B2 (zh) |
EP (2) | EP3109757B1 (zh) |
JP (2) | JP6347802B2 (zh) |
CN (2) | CN105095013B (zh) |
BR (2) | BR122018006762B8 (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893169A (zh) * | 2016-03-31 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种基于纠删码的文件存储方法和系统 |
CN106201766A (zh) * | 2016-07-25 | 2016-12-07 | 深圳市中博科创信息技术有限公司 | 数据存储控制方法及数据服务器 |
CN106662983A (zh) * | 2015-12-31 | 2017-05-10 | 华为技术有限公司 | 分布式存储系统中的数据重建的方法、装置和系统 |
CN106776130A (zh) * | 2016-11-30 | 2017-05-31 | 华为技术有限公司 | 一种日志恢复方法、存储装置和存储节点 |
WO2017101016A1 (zh) * | 2015-12-15 | 2017-06-22 | 华为技术有限公司 | 用于存储节点同步业务请求的方法和装置 |
CN107273048A (zh) * | 2017-06-08 | 2017-10-20 | 浙江大华技术股份有限公司 | 一种数据写入方法及装置 |
CN107562569A (zh) * | 2016-06-30 | 2018-01-09 | 杭州海康威视数字技术股份有限公司 | 一种数据重构方法及装置 |
CN107562368A (zh) * | 2016-06-30 | 2018-01-09 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN107590019A (zh) * | 2016-07-07 | 2018-01-16 | 北京金山云网络技术有限公司 | 一种数据存储的方法和装置 |
CN107609161A (zh) * | 2017-09-26 | 2018-01-19 | 北京思特奇信息技术股份有限公司 | 一种数据写入、读取方法和系统 |
CN107748702A (zh) * | 2015-06-04 | 2018-03-02 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
WO2018059441A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 数据处理方法和系统及装置 |
WO2018107828A1 (zh) * | 2016-12-13 | 2018-06-21 | 杭州海康威视数字技术股份有限公司 | 一种信息处理方法及装置 |
CN108769146A (zh) * | 2018-05-11 | 2018-11-06 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置及区块链系统 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN109814803A (zh) * | 2018-12-17 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种分布式存储系统中容错能力自适应调整方法和装置 |
CN109962797A (zh) * | 2017-12-23 | 2019-07-02 | 华为技术有限公司 | 一种存储系统和推送业务视图的方法 |
WO2019184758A1 (zh) * | 2018-03-27 | 2019-10-03 | 杭州海康威视数字技术股份有限公司 | 数据处理 |
CN110325958A (zh) * | 2017-10-13 | 2019-10-11 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
CN110337633A (zh) * | 2017-06-30 | 2019-10-15 | 华为技术有限公司 | 一种数据存储方法及设备 |
CN110347640A (zh) * | 2019-06-26 | 2019-10-18 | 北京三快在线科技有限公司 | 文件储存方法、装置、存储介质和电子设备 |
CN110515542A (zh) * | 2019-07-30 | 2019-11-29 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
CN110825552A (zh) * | 2018-08-14 | 2020-02-21 | 华为技术有限公司 | 数据存储方法、数据恢复方法、节点及存储介质 |
CN111221679A (zh) * | 2018-11-26 | 2020-06-02 | 丰田自动车株式会社 | 车辆对车辆分布式数据存储系统的丢失数据恢复 |
WO2020124608A1 (zh) * | 2018-12-22 | 2020-06-25 | 华为技术有限公司 | 分布式存储系统及计算机程序产品 |
CN111625400A (zh) * | 2020-05-26 | 2020-09-04 | 平安科技(深圳)有限公司 | 一种数据冗余处理方法、装置及存储介质 |
CN111666043A (zh) * | 2017-11-03 | 2020-09-15 | 华为技术有限公司 | 一种数据存储方法及设备 |
CN112783689A (zh) * | 2021-02-08 | 2021-05-11 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN114064346A (zh) * | 2021-11-02 | 2022-02-18 | 北京大道云行科技有限公司 | 一种纠删码数据一致性保障方法及系统 |
CN114844910A (zh) * | 2022-04-19 | 2022-08-02 | 重庆紫光华山智安科技有限公司 | 分布式存储系统的数据传输方法、系统、设备及介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6542152B2 (ja) * | 2016-03-29 | 2019-07-10 | 東芝メモリ株式会社 | オブジェクトストレージ、コントローラおよびプログラム |
CN106708651B (zh) * | 2016-11-16 | 2020-09-11 | 北京三快在线科技有限公司 | 基于纠删码的部分写入方法及装置、存储介质、设备 |
US10445199B2 (en) * | 2016-12-22 | 2019-10-15 | Western Digital Technologies, Inc. | Bad page management in storage devices |
CN107197324B (zh) * | 2017-05-15 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种分布式文件系统的视频容错方法及装置 |
WO2018229944A1 (ja) * | 2017-06-15 | 2018-12-20 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US10379950B2 (en) * | 2017-11-30 | 2019-08-13 | Western Digital Technologies, Inc. | Updating write-in-place storage devices |
US10942807B2 (en) | 2018-06-12 | 2021-03-09 | Weka.IO Ltd. | Storage system spanning multiple failure domains |
CN110865901B (zh) * | 2018-08-28 | 2021-05-04 | 华为技术有限公司 | 组建ec条带的方法和装置 |
CN109933374B (zh) * | 2019-01-23 | 2021-10-22 | 西安微电子技术研究所 | 一种计算机启动方法 |
CN110515541B (zh) * | 2019-07-29 | 2020-10-27 | 西安交通大学 | 分布式存储中纠删码非对齐数据更新方法 |
CN111935243B (zh) * | 2020-07-17 | 2023-06-30 | 杭州海康机器人股份有限公司 | 一种数据信息的传输方法、装置、系统及设备 |
CN113258936B (zh) * | 2021-06-03 | 2021-10-15 | 成都信息工程大学 | 一种基于循环移位的双重编码的构造方法 |
US20230153213A1 (en) * | 2021-11-16 | 2023-05-18 | Netapp, Inc. | Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors |
CN114221975B (zh) * | 2021-11-30 | 2024-01-30 | 浙江大华技术股份有限公司 | 基于smr盘的云存储数据恢复方法及装置、电子设备 |
CN114415976B (zh) * | 2022-03-28 | 2022-07-01 | 深圳市杉岩数据技术有限公司 | 一种分布式数据存储系统与方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091556A1 (en) * | 2003-10-23 | 2005-04-28 | Svend Frolund | Method of recovering data |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
US20110208995A1 (en) * | 2010-02-22 | 2011-08-25 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
CN103051691A (zh) * | 2012-12-12 | 2013-04-17 | 华为技术有限公司 | 分区分配方法、装置以及分布式存储系统 |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储系统 |
CN103827806A (zh) * | 2011-08-11 | 2014-05-28 | 净睿存储股份有限公司 | 闪存阵列中的逻辑扇区映射 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
WO2015057240A1 (en) * | 2013-10-18 | 2015-04-23 | Hitachi Data Systems Engineering UK Limited | Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system |
US20150149819A1 (en) * | 2013-11-27 | 2015-05-28 | Electronics And Telecommunications Research Institute | Parity chunk operating method and data server apparatus for supporting the same in distributed raid system |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761785B1 (en) | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
JP3155836B2 (ja) * | 1992-10-08 | 2001-04-16 | 富士通株式会社 | ディスクアレイ装置 |
US6223323B1 (en) * | 1998-07-17 | 2001-04-24 | Ncr Corporation | Method for storing parity information in a disk array storage system |
US6725392B1 (en) * | 1999-03-03 | 2004-04-20 | Adaptec, Inc. | Controller fault recovery system for a distributed file system |
US6275898B1 (en) * | 1999-05-13 | 2001-08-14 | Lsi Logic Corporation | Methods and structure for RAID level migration within a logical unit |
US6643748B1 (en) * | 2000-04-20 | 2003-11-04 | Microsoft Corporation | Programmatic masking of storage units |
US6985995B2 (en) * | 2002-03-29 | 2006-01-10 | Panasas, Inc. | Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data |
US6938123B2 (en) * | 2002-07-19 | 2005-08-30 | Storage Technology Corporation | System and method for raid striping |
US7263629B2 (en) * | 2003-11-24 | 2007-08-28 | Network Appliance, Inc. | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array |
US8726129B1 (en) * | 2004-07-23 | 2014-05-13 | Hewlett-Packard Development Company, L.P. | Methods of writing and recovering erasure coded data |
US7870464B2 (en) * | 2004-11-02 | 2011-01-11 | International Business Machines Corporation | System and method for recovery of data for a lost sector in a storage system |
US8055845B2 (en) * | 2005-02-03 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | Method of cooperative caching for distributed storage system |
US7370261B2 (en) * | 2005-05-09 | 2008-05-06 | International Business Machines Corporation | Convolution-encoded raid with trellis-decode-rebuild |
US7725655B2 (en) * | 2006-02-16 | 2010-05-25 | Hewlett-Packard Development Company, L.P. | Method of operating distributed storage system in which data is read from replicated caches and stored as erasure-coded data |
US7761663B2 (en) * | 2006-02-16 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Operating a replicated cache that includes receiving confirmation that a flush operation was initiated |
US7743276B2 (en) * | 2006-09-27 | 2010-06-22 | Hewlett-Packard Development Company, L.P. | Sufficient free space for redundancy recovery within a distributed data-storage system |
US8751859B2 (en) * | 2007-05-10 | 2014-06-10 | International Business Machines Corporation | Monitoring lost data in a storage system |
US7925927B2 (en) * | 2008-06-23 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Simulator for determining data loss in a fault tolerant system |
US8051205B2 (en) * | 2008-10-13 | 2011-11-01 | Applied Micro Circuits Corporation | Peer-to-peer distributed storage |
US8037391B1 (en) * | 2009-05-22 | 2011-10-11 | Nvidia Corporation | Raid-6 computation system and method |
US8132073B1 (en) * | 2009-06-30 | 2012-03-06 | Emc Corporation | Distributed storage system with enhanced security |
US8103904B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8156368B2 (en) * | 2010-02-22 | 2012-04-10 | International Business Machines Corporation | Rebuilding lost data in a distributed redundancy data storage system |
US8839076B2 (en) * | 2011-03-31 | 2014-09-16 | International Business Machines Corporation | Encoding a data word for writing the encoded data word in a multi-level solid state memory |
CN102918509B (zh) * | 2011-05-31 | 2014-06-04 | 华为技术有限公司 | 数据读写方法、装置和存储系统 |
US8874863B2 (en) * | 2011-08-01 | 2014-10-28 | Actifio, Inc. | Data replication system |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
CN102624866B (zh) * | 2012-01-13 | 2014-08-20 | 北京大学深圳研究生院 | 一种存储数据的方法、装置及分布式网络存储系统 |
CN103577274B (zh) * | 2012-07-31 | 2016-07-06 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
US9495246B2 (en) * | 2013-01-21 | 2016-11-15 | Kaminario Technologies Ltd. | Raid erasure code applied to partitioned stripe |
JP6089884B2 (ja) * | 2013-03-29 | 2017-03-08 | 富士通株式会社 | 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 |
CN104111880B (zh) * | 2013-04-16 | 2016-03-02 | 华中科技大学 | 一种容三盘失效纠删码的单数据盘失效快速重建方法 |
US9495255B2 (en) * | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9870284B2 (en) * | 2015-05-27 | 2018-01-16 | International Business Machines Corporation | First responder parities for storage array |
CN105095013B (zh) * | 2015-06-04 | 2017-11-21 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
-
2015
- 2015-06-04 CN CN201510304374.7A patent/CN105095013B/zh active Active
- 2015-06-04 CN CN201710825442.3A patent/CN107748702B/zh active Active
-
2016
- 2016-05-31 EP EP16172079.2A patent/EP3109757B1/en active Active
- 2016-05-31 EP EP18213250.6A patent/EP3575964B1/en active Active
- 2016-06-03 BR BR122018006762A patent/BR122018006762B8/pt active IP Right Grant
- 2016-06-03 BR BR102016012742A patent/BR102016012742B8/pt active IP Right Grant
- 2016-06-03 JP JP2016111409A patent/JP6347802B2/ja active Active
- 2016-06-03 US US15/173,327 patent/US9710331B2/en active Active
-
2017
- 2017-05-23 US US15/603,413 patent/US9823970B2/en active Active
- 2017-11-01 JP JP2017211519A patent/JP6649340B2/ja active Active
- 2017-11-20 US US15/817,298 patent/US10133633B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091556A1 (en) * | 2003-10-23 | 2005-04-28 | Svend Frolund | Method of recovering data |
CN101488104A (zh) * | 2009-02-26 | 2009-07-22 | 北京世纪互联宽带数据中心有限公司 | 一种实现高效安全存储的系统和方法 |
US20110208995A1 (en) * | 2010-02-22 | 2011-08-25 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
CN103827806A (zh) * | 2011-08-11 | 2014-05-28 | 净睿存储股份有限公司 | 闪存阵列中的逻辑扇区映射 |
CN103051691A (zh) * | 2012-12-12 | 2013-04-17 | 华为技术有限公司 | 分区分配方法、装置以及分布式存储系统 |
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
WO2015057240A1 (en) * | 2013-10-18 | 2015-04-23 | Hitachi Data Systems Engineering UK Limited | Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system |
US20150149819A1 (en) * | 2013-11-27 | 2015-05-28 | Electronics And Telecommunications Research Institute | Parity chunk operating method and data server apparatus for supporting the same in distributed raid system |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储系统 |
Cited By (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107748702A (zh) * | 2015-06-04 | 2018-03-02 | 华为技术有限公司 | 数据存储方法、恢复方法、相关装置以及系统 |
CN107710165A (zh) * | 2015-12-15 | 2018-02-16 | 华为技术有限公司 | 用于存储节点同步业务请求的方法和装置 |
WO2017101016A1 (zh) * | 2015-12-15 | 2017-06-22 | 华为技术有限公司 | 用于存储节点同步业务请求的方法和装置 |
CN107710165B (zh) * | 2015-12-15 | 2020-01-03 | 华为技术有限公司 | 用于存储节点同步业务请求的方法和装置 |
CN106662983A (zh) * | 2015-12-31 | 2017-05-10 | 华为技术有限公司 | 分布式存储系统中的数据重建的方法、装置和系统 |
US10387255B2 (en) | 2015-12-31 | 2019-08-20 | Huawei Technologies Co., Ltd. | Data reconstruction method in distributed storage system, apparatus, and system |
WO2017113276A1 (zh) * | 2015-12-31 | 2017-07-06 | 华为技术有限公司 | 分布式存储系统中的数据重建的方法、装置和系统 |
CN105893169A (zh) * | 2016-03-31 | 2016-08-24 | 乐视控股(北京)有限公司 | 一种基于纠删码的文件存储方法和系统 |
CN107562569A (zh) * | 2016-06-30 | 2018-01-09 | 杭州海康威视数字技术股份有限公司 | 一种数据重构方法及装置 |
CN107562368A (zh) * | 2016-06-30 | 2018-01-09 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN107562368B (zh) * | 2016-06-30 | 2019-11-22 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN107590019B (zh) * | 2016-07-07 | 2021-03-16 | 北京金山云网络技术有限公司 | 一种数据存储的方法和装置 |
CN107590019A (zh) * | 2016-07-07 | 2018-01-16 | 北京金山云网络技术有限公司 | 一种数据存储的方法和装置 |
WO2018018827A1 (zh) * | 2016-07-25 | 2018-02-01 | 深圳市中博科创信息技术有限公司 | 数据存储控制方法及数据服务器 |
CN106201766A (zh) * | 2016-07-25 | 2016-12-07 | 深圳市中博科创信息技术有限公司 | 数据存储控制方法及数据服务器 |
WO2018059441A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 数据处理方法和系统及装置 |
US11003533B2 (en) | 2016-09-30 | 2021-05-11 | Huawei Technologies Co., Ltd. | Data processing method, system, and apparatus |
CN107885612A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 数据处理方法和系统及装置 |
CN107885612B (zh) * | 2016-09-30 | 2020-02-21 | 华为技术有限公司 | 数据处理方法和系统及装置 |
CN106776130A (zh) * | 2016-11-30 | 2017-05-31 | 华为技术有限公司 | 一种日志恢复方法、存储装置和存储节点 |
WO2018107828A1 (zh) * | 2016-12-13 | 2018-06-21 | 杭州海康威视数字技术股份有限公司 | 一种信息处理方法及装置 |
CN107273048A (zh) * | 2017-06-08 | 2017-10-20 | 浙江大华技术股份有限公司 | 一种数据写入方法及装置 |
CN107273048B (zh) * | 2017-06-08 | 2020-08-04 | 浙江大华技术股份有限公司 | 一种数据写入方法及装置 |
CN110337633A (zh) * | 2017-06-30 | 2019-10-15 | 华为技术有限公司 | 一种数据存储方法及设备 |
CN107609161A (zh) * | 2017-09-26 | 2018-01-19 | 北京思特奇信息技术股份有限公司 | 一种数据写入、读取方法和系统 |
CN110325958B (zh) * | 2017-10-13 | 2021-09-17 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
CN110325958A (zh) * | 2017-10-13 | 2019-10-11 | 华为技术有限公司 | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 |
CN111666043A (zh) * | 2017-11-03 | 2020-09-15 | 华为技术有限公司 | 一种数据存储方法及设备 |
CN108780386B (zh) * | 2017-12-20 | 2020-09-04 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
US10915397B2 (en) | 2017-12-20 | 2021-02-09 | Huawei Technologies Co., Ltd. | Data storage method, apparatus, and system |
US11487618B2 (en) | 2017-12-20 | 2022-11-01 | Huawei Cloud Computing Technologies Co., Ltd. | Data storage method, apparatus, and system |
WO2019119311A1 (zh) * | 2017-12-20 | 2019-06-27 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN109962797B (zh) * | 2017-12-23 | 2022-01-11 | 华为技术有限公司 | 一种存储系统和推送业务视图的方法 |
CN109962797A (zh) * | 2017-12-23 | 2019-07-02 | 华为技术有限公司 | 一种存储系统和推送业务视图的方法 |
US11841762B2 (en) | 2018-03-27 | 2023-12-12 | Hangzhou Hikvision Digital Technology Co., Ltd. | Data processing |
WO2019184758A1 (zh) * | 2018-03-27 | 2019-10-03 | 杭州海康威视数字技术股份有限公司 | 数据处理 |
CN108769146B (zh) * | 2018-05-11 | 2022-01-21 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置及区块链系统 |
CN108769146A (zh) * | 2018-05-11 | 2018-11-06 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置及区块链系统 |
CN110825552B (zh) * | 2018-08-14 | 2021-04-09 | 华为技术有限公司 | 数据存储方法、数据恢复方法、节点及存储介质 |
CN110825552A (zh) * | 2018-08-14 | 2020-02-21 | 华为技术有限公司 | 数据存储方法、数据恢复方法、节点及存储介质 |
CN111221679B (zh) * | 2018-11-26 | 2022-12-06 | 丰田自动车株式会社 | 车辆对车辆分布式数据存储系统的丢失数据恢复 |
CN111221679A (zh) * | 2018-11-26 | 2020-06-02 | 丰田自动车株式会社 | 车辆对车辆分布式数据存储系统的丢失数据恢复 |
CN109814803A (zh) * | 2018-12-17 | 2019-05-28 | 创新科存储技术(深圳)有限公司 | 一种分布式存储系统中容错能力自适应调整方法和装置 |
WO2020124608A1 (zh) * | 2018-12-22 | 2020-06-25 | 华为技术有限公司 | 分布式存储系统及计算机程序产品 |
CN110347640A (zh) * | 2019-06-26 | 2019-10-18 | 北京三快在线科技有限公司 | 文件储存方法、装置、存储介质和电子设备 |
CN110347640B (zh) * | 2019-06-26 | 2022-02-18 | 北京三快在线科技有限公司 | 文件储存方法、装置、存储介质和电子设备 |
CN110515542A (zh) * | 2019-07-30 | 2019-11-29 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
CN110515542B (zh) * | 2019-07-30 | 2021-08-31 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
WO2021017780A1 (zh) * | 2019-07-30 | 2021-02-04 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
US11809738B2 (en) | 2019-07-30 | 2023-11-07 | Huawei Technologies Co., Ltd. | Data storage method and apparatus, computing device, storage system, and storage medium |
CN111625400A (zh) * | 2020-05-26 | 2020-09-04 | 平安科技(深圳)有限公司 | 一种数据冗余处理方法、装置及存储介质 |
CN111625400B (zh) * | 2020-05-26 | 2024-01-16 | 平安科技(深圳)有限公司 | 一种数据冗余处理方法、装置及存储介质 |
WO2021151298A1 (zh) * | 2020-05-26 | 2021-08-05 | 平安科技(深圳)有限公司 | 一种数据冗余处理方法、装置、设备及存储介质 |
CN112783689A (zh) * | 2021-02-08 | 2021-05-11 | 上海交通大学 | 一种基于lrc编码的部分条带写优化方法及装置 |
CN114064346A (zh) * | 2021-11-02 | 2022-02-18 | 北京大道云行科技有限公司 | 一种纠删码数据一致性保障方法及系统 |
CN114844910A (zh) * | 2022-04-19 | 2022-08-02 | 重庆紫光华山智安科技有限公司 | 分布式存储系统的数据传输方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
BR102016012742B1 (pt) | 2019-02-12 |
CN107748702B (zh) | 2021-05-04 |
CN105095013B (zh) | 2017-11-21 |
US20170255522A1 (en) | 2017-09-07 |
US20160357634A1 (en) | 2016-12-08 |
EP3575964A1 (en) | 2019-12-04 |
US10133633B2 (en) | 2018-11-20 |
EP3575964B1 (en) | 2021-03-10 |
US20180074898A1 (en) | 2018-03-15 |
EP3109757B1 (en) | 2019-01-23 |
BR122018006762B1 (pt) | 2020-11-24 |
US9823970B2 (en) | 2017-11-21 |
JP6649340B2 (ja) | 2020-02-19 |
EP3109757A3 (en) | 2017-02-22 |
US9710331B2 (en) | 2017-07-18 |
JP2018022530A (ja) | 2018-02-08 |
JP6347802B2 (ja) | 2018-06-27 |
CN107748702A (zh) | 2018-03-02 |
BR102016012742B8 (pt) | 2022-08-23 |
EP3109757A2 (en) | 2016-12-28 |
BR122018006762B8 (pt) | 2022-08-23 |
JP2017004514A (ja) | 2017-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095013A (zh) | 数据存储方法、恢复方法、相关装置以及系统 | |
CN104932953A (zh) | 一种数据分发方法、数据存储方法、相关装置以及系统 | |
US11003533B2 (en) | Data processing method, system, and apparatus | |
TWI746845B (zh) | 用於儲存資料的系統以及方法 | |
JP2017102964A (ja) | 不揮発性メモリシステムにおける同期ミラーリング | |
CN105468479B (zh) | 一种磁盘阵列raid坏块处理方法及装置 | |
CN105357294A (zh) | 一种存储数据的方法及集群管理节点 | |
US20190317872A1 (en) | Database cluster architecture based on dual port solid state disk | |
CN113626256A (zh) | 一种虚拟机磁盘数据备份方法、装置、终端及存储介质 | |
CN103530206B (zh) | 一种数据恢复的方法和设备 | |
CN106201772A (zh) | 一种基于数据中心的操作系统备份、恢复方法及装置 | |
CN111045865A (zh) | 一种基于块复制的实时同步方法及系统 | |
CN104579717A (zh) | Dcn的故障定位方法及装置 | |
CN115878381A (zh) | 基于srm盘的数据恢复方法及装置、存储介质、电子装置 | |
US20140173337A1 (en) | Storage apparatus, control method, and control program | |
CN103870355A (zh) | Bios存取系统及方法 | |
CN108366217B (zh) | 监控视频采集存储方法 | |
CN108174136B (zh) | 云盘视频编码存储方法 | |
CN104572350A (zh) | 一种元数据处理方法及装置 | |
CN112988461B (zh) | 数据备份方法、边缘节点、数据中心及计算机存储介质 | |
CN117667834B (zh) | 存算解耦系统、数据处理方法及存储介质 | |
CN111858126A (zh) | 一种基于k+m纠删集群的数据处理方法及装置 | |
CN104361043A (zh) | 数据库切换方法及数据库切换系统 | |
CN116860521A (zh) | 故障节点的数据恢复方法、装置、电子设备及介质 | |
CN117312047A (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 | ||
TR01 | Transfer of patent right | ||
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. |