CN108628539B - 数据存储、分散、重构、回收方法、装置及数据处理系统 - Google Patents
数据存储、分散、重构、回收方法、装置及数据处理系统 Download PDFInfo
- Publication number
- CN108628539B CN108628539B CN201710162001.XA CN201710162001A CN108628539B CN 108628539 B CN108628539 B CN 108628539B CN 201710162001 A CN201710162001 A CN 201710162001A CN 108628539 B CN108628539 B CN 108628539B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- index information
- dispersed
- storage object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage 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
- 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
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据存储、分散、重构、回收方法、装置及数据处理系统,应用该存储方法,将待存储数据的各个数据片段分别存储至各个存储对象中,存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值,也就是说,本方案中,较均匀地将各个数据片段存储至多个存储对象中,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法对该数据进行数据恢复的情况。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种数据存储、分散、重构、回收方法、装置及数据处理系统。
背景技术
磁盘阵列(Redundant Arrays of Independent Disks,RAID)技术,是指由多个磁盘组成一个大容量的磁盘组;将待存储数据分割成多个片段,分别存放在各个磁盘中。
在磁盘阵列中通常利用纠删码(erasure coding,EC)进行数据保护,纠删码策略可以用n=k+m来表示,其中,k表示原始片段份数,m表示冗余片段份数,n表示总的数据片段份数。具体的,可以将待存储数据分割成k个原始片段,基于这k个原始片段进行扩展、编码,得到m个冗余片段;将这k个原始片段和m个冗余片段分别存储至各个磁盘中;这样,如果某个磁盘出现故障导致数据丢失,则可以根据未丢失的原始片段及冗余片段对丢失的数据片段进行恢复。
上述方案中,通常将各个数据片段(原始片段及冗余片段)随机地存储至各个磁盘中,可能导致多部分数据片段存储至一个磁盘中,如果该磁盘出现故障,该磁盘中存储的多部分数据片段可能全部丢失,导致无法进行数据恢复。
发明内容
本发明实施例的目的在于提供一种数据存储、分散、重构、回收方法、装置及数据处理系统,以避免一个磁盘出现故障,多部分数据片段全部丢失,导致无法进行数据恢复的情况。
为达到上述目的,本发明实施例公开了一种数据存储方法,包括:
根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k 表示原始片段份数,所述m表示冗余片段份数,所述x大于1且不大于k+m,所述存储对象为存储数据的最小单元;
利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到 k+m个数据片段;
将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
为达到上述目的,本发明实施例还公开了一种数据分散方法,包括:
在所记录的索引信息中,确定待分散索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
根据所确定的待分散索引信息,确定待分散数据片段;
为所述待分散数据片段分配分散存储对象;
将所述待分散数据片段分别存储至所述分散存储对象;
更新所述待分散索引信息。
为达到上述目的,本发明实施例还公开了一种数据重构方法,包括:
在所记录的索引信息中,确定待重构索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述待重构索引信息中包含出现故障的存储对象的信息,所述存储对象为存储数据的最小单元;
根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;
将所述目标数据片段进行重构,得到修复片段;
将所述修复片段存储至为其分配的存储对象中;
更新所述待重构索引信息。
为达到上述目的,本发明实施例还公开了一种数据回收方法,包括:
在所记录的索引信息中,确定待回收索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
根据所述待回收索引信息,确定待回收数据片段;
为所述待回收数据片段分配存储对象;
将所述待回收数据片段分别存储至为其分配的存储对象中;
记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;
将所述对应关系替换所述待回收索引信息。
为达到上述目的,本发明实施例还公开了一种数据存储装置,包括:
第一分配模块,用于根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于 1且不大于k+m,所述存储对象为存储数据的最小单元;
切片模块,用于利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;
第一存储模块,用于将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
第一记录模块,用于记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
为达到上述目的,本发明实施例还公开了一种数据分散装置,包括:
第一确定模块,用于在所记录的索引信息中,确定待分散索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
第二确定模块,用于根据所确定的待分散索引信息,确定待分散数据片段;
第二分配模块,用于为所述待分散数据片段分配分散存储对象;
第二存储模块,用于将所述待分散数据片段分别存储至所述分散存储对象;
第一更新模块,用于更新所述待分散索引信息。
为达到上述目的,本发明实施例还公开了一种数据重构装置,包括:
第三确定模块,用于在所记录的索引信息中,确定待重构索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述待重构索引信息中包含出现故障的存储对象的信息,所述存储对象为存储数据的最小单元;
读取模块,用于根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;
重构模块,用于将所述目标数据片段进行重构,得到修复片段;
第三存储模块,用于将所述修复片段存储至为其分配的存储对象中;
第二更新模块,用于更新所述待重构索引信息。
为达到上述目的,本发明实施例还公开了一种数据回收装置,包括:
第四确定模块,用于在所记录的索引信息中,确定待回收索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
第五确定模块,用于根据所述待回收索引信息,确定待回收数据片段;
第三分配模块,用于为所述待回收数据片段分配存储对象;
第四存储模块,用于将所述待回收数据片段分别存储至为其分配的存储对象中;
第二记录模块,用于记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;
替换模块,用于将所述对应关系替换所述待回收索引信息。
为达到上述目的,本发明实施例还公开了一种数据处理系统,包括:平台服务器和管理服务器,其中,
所述平台服务器,根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于1 且不大于k+m,所述存储对象为存储数据的最小单元;
所述管理服务器,利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第四预设阈值;
所述平台服务器,记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
可选的,所述平台服务器,确定待读取数据对应的索引信息;
所述管理服务器,根据所述平台服务器所确定的索引信息,从存储对象中读取所述待读取数据的每个数据片段;将所读取的每个数据片段进行组合,得到所述待读取数据。
可选的,所述平台服务器,在所记录的索引信息中,确定待分散索引信息;
所述管理服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
所述平台服务器,更新所述待分散索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待分散索引信息;
所述审计服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
所述平台服务器,更新所述待分散索引信息。
可选的,所述平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
所述管理服务器,根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
所述平台服务器,更新所述待重构索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
所述审计服务器,根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
所述平台服务器,更新所述待重构索引信息。
可选的,所述平台服务器,在所记录的索引信息中,确定待回收索引信息;
所述管理服务器,根据所述待回收索引信息,确定待回收数据片段;
所述平台服务器,为所述待回收数据片段分配存储对象;
所述管理服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
所述平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待回收索引信息;
所述审计服务器,根据所述待回收索引信息,确定待回收数据片段;
所述平台服务器,为所述待回收数据片段分配存储对象;
所述审计服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
所述平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息。
可选的,所述系统还可以包括:存储服务器,所述存储服务器包含多个存储对象;
所述存储服务器,向所述平台服务器上报自身多个存储对象的运行状态信息,以使所述平台服务器根据每个存储服务器上报的运行状态信息为待存储数据分配存储对象、以及为待分散数据片段分配分散存储对象、以及确定待重构索引信息。
应用本发明实施例,将待存储数据的各个数据片段分别存储至各个存储对象中,存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值,也就是说,本方案中,较均匀地将各个数据片段存储至多个存储对象中,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法对该数据进行数据恢复的情况。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的流程示意图;
图2为本发明实施例提供的一种数据分散方法的流程示意图;
图3为本发明实施例提供的一种数据重构方法的流程示意图;
图4为本发明实施例提供的一种数据回收方法的流程示意图;
图5为本发明实施例提供的一种数据存储装置的结构示意图;
图6为本发明实施例提供的一种数据分散装置的结构示意图;
图7为本发明实施例提供的一种数据重构装置的结构示意图;
图8为本发明实施例提供的一种数据回收装置的结构示意图;
图9为本发明实施例提供的数据处理系统的第一种结构示意图;
图10为本发明实施例提供的数据处理系统的第二种结构示意图;
图11为本发明实施例提供的数据处理系统的第三种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决上述技术问题,本发明实施例提供了一种数据存储、分散、重构、回收方法、装置及数据处理系统。该方法及装置可以应用于服务器、客户端及各种电子设备,具体不做限定。下面首先对本发明实施例提供的数据存储方法进行详细说明。
图1为本发明实施例提供的一种数据存储方法的流程示意图,包括:
S101:根据预设的纠删码策略k+m,为待存储数据分配x个存储对象。
其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于 1且不大于k+m。
存储对象即为存储数据的最小单元,可以理解为存储数据片段(包括原始片段及冗余片段)的最小单元。如果该最小单元为磁盘,则该存储对象为磁盘,如果磁盘能被划分为更小的对象块,则该存储对象为对象块,具体不做限定。下面内容以存储对象为磁盘的情况进行说明。
作为一种实施方式,S101可以包括:
判断可用存储节点的数量是否不小于k+m;
如果不小于,在可用存储节点中确定x个存储对象;其中,所确定的每个存储对象所在的存储节点不同;所述x等于所述k+m;
如果小于,判断全部可用存储节点中的可用存储对象的数量是否不小于 k+m;
如果是,在全部可用存储节点中确定x个存储对象;其中,所述x等于所述 k+m,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值;
如果否,将全部可用存储对象分配给所述待存储数据。
也就是说,在为待存储数据分配存储对象时,如果有足够多的可用存储节点(数量不小于k+m),则分配k+m个可用存储节点以存储该待存储数据,使得该待存储数据的每个数据片段存储至不同的存储节点中。
如果没有足够多的可用存储节点(数量小于k+m),但是有足够多的可用存储对象,也就是可用磁盘的数量不小于k+m,则分配k+m个可用磁盘以存储该待存储数据,使得待存储数据的每个数据片段存储至不同的磁盘中。需要说明的是,在全部可用存储节点中分配k+m个可用磁盘时,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值。也就是保证各数据片段均匀存储至各个存储节点。
如果也没有足够多的可用磁盘(数量小于k+m),则分配全部可用磁盘(x 个可用磁盘)以存储该待存储数据,使得该待存储数据的每个数据片段存储的磁盘尽量不同。
综上所述,也就是将待存储数据尽量分散存储,如果一个磁盘出现故障、或者一个存储节点出现故障,导致数据丢失,仍可以利用其他磁盘或存储节点中存储的数据片段,对丢失的数据片段进行恢复。
作为一种实施方式,也可以根据存储对象的资源占用情况,为待存储数据分配存储对象。具体的,可以优先分配资源占用率较小的存储对象。
分配存储对象的具体方式可以有多种,具体不做限定。
S102:利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段。
具体的,可以将所述待存储数据切分成k个原始片段;将这k个原始片段进行冗余处理,得到m个冗余片段。
S103:将所述k+m个数据片段分别存储至所述x个存储对象。其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值。
第一预设阈值可以根据实际情况进行设定,这里假设为2。
在S101中,已经为待存储数据分配了存储对象,此时,可以把各数据片段存储至分配的存储对象中。
根据上面描述,如果分配了k+m个存储节点,则可以将每个数据片段分别存储至不同存储节点中的存储对象。这样,各个存储对象中存储的数据片段份数都为1,差值为0,小于第一预设阈值。
如果分配了k+m个存储对象(磁盘),则可以将每个数据片段分别存储至不同磁盘。这样,各个存储对象中存储的数据片段份数都为1,差值为0,小于第一预设阈值。
如果分配了x(小于k+m)个磁盘,则可以将这k+m个数据片段均匀划分为x 份,将所述x份数据片段分别存储至所述x个存储对象中。均匀划分可以理解为:如果k+m个数据片段能被平均划分为x份,则把这k+m个数据片段平均划分为x 份;如果k+m个数据片段不能被平均划分为x份,则把这k+m个数据片段尽量平均地划分为x份。
举例来说,如果k为4,m为2,x为3,也就是把6个数据片段划分为3份,能够平均划分,则每份包括2个数据片段。将每2个数据片段存储至1个存储对象中,这样,各个存储对象中存储的数据片段份数都为2,差值为0,小于第一预设阈值。
如果k为4,m为1,x为3,也就是把5个数据片段划分为3份,不能够平均划分,则第一份可以包括2个数据片段,第二份可以包括2个数据片段,第三份可以包括1个数据片段。这样,各个存储对象中存储的数据片段份数分别为2、2、 1,差值为0或1,仍小于第一预设阈值。
综上所述,也就是将k+m个数据片段尽量均匀地存储至各个磁盘中。这样,如果一个磁盘出现故障、或者一个存储节点出现故障,导致数据丢失,仍可以利用其他磁盘或存储节点中存储的数据片段,对丢失的数据片段进行恢复。
S104:记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
假设预设的纠删码策略为4+2,将待存储数据切分成4个原始片段,将这4个原始片段进行冗余处理,得到2个冗余片段;这6个数据片段(4个原始片段和2 个冗余片段)分别为:A1、A2、A3、A4、A5、A6。假设分配了6个磁盘作为该待存储数据的存储对象,这6个磁盘分别为:B1、B2、B3、B4、B5、B6。
具体将哪个数据片段存储至哪个磁盘不做限定,这里假设将A1存储至B1,将A2存储至B2,将A3存储至B3,将A4存储至B4,将A5存储至B5,将A6存储至 B6。这种情况下,记录该待存储数据对应的索引信息可以包括:A1—B1、A2 —B2、A3—B3、A4—B4、A5—B5、A6—B6。
需要说明的是,在索引信息中,也可以区分标识原始片段及冗余片段,上述索引信息只是为了简化说明,具体不做限定。
应用本发明图1所示实施例,将待存储数据的各个数据片段分别存储至各个存储对象中,存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值,也就是说,本方案中,较均匀地将各个数据片段存储至多个存储对象中,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法对该数据进行数据恢复的情况。
图2为本发明实施例提供的一种数据分散方法的流程示意图,包括:
S201:在所记录的索引信息中,确定待分散索引信息。
需要说明的是,本发明图2所示实施例中的数据可以基于本发明图1所示实施例提供的数据存储方法进行存储,或者,也可以基于其他存储方法进行存储。由本发明图1所示实施例中的描述可知,在数据存储过程中,记录了数据的索引信息。因此,可以在所记录的索引信息中,确定待分散索引信息。
或者,应用其他存储方法也需要记录索引信息,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,存储对象为存储数据的最小单元。
具体的,可以针对每条索引信息,确定其所对应的各个存储对象的记录次数;当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息。
举例来说,假设索引信息包括:A1—B1、A2—B1、A3—B1、A4—B4、A5 —B4、A6—B6,其中,存储对象B1被记录了3次,也就是说存储对象B1的记录次数为3,存储对象B4的记录次数为2,存储对象B6的记录次数为1。
假设第三预设阈值为2,则存在记录次数大于2的目标存储对象B1。也就是说,该索引信息对应的数据有3个数据片段存储在同一个存储对象中。这种情况下,将该索引信息确定为待分散索引信息。
可以理解的是,多种情况可能导致数据存储不均匀,使得同一数据的多个数据片段存储至一个存储对象中。比如,当系统扩容时,新的存储节点或磁盘加入系统,可能导致数据存储不均匀的情况;或者,当存储节点数量不足时,也会导致数据存储不均匀的情况。
可以执行本方案对存储不均匀的数据进行分散。如果同一数据的多个数据片段存储至一个存储对象中,则可以将该多个数据片段进行分散。具体的,可以通过数据对应的索引信息,判断该数据是否存在需要分散的数据片段,也就是当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息。
S202:根据所确定的待分散索引信息,确定待分散数据片段。
具体的,可以确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
延续上述例子,第三预设阈值为2,则存在记录次数大于2的目标存储对象 B1,也就是在B1对应的数据片段A1、A2和A3中,确定待分散数据片段。假设将A2和A3确定为待分散数据片段。
S203:为所述待分散数据片段分配分散存储对象。
可以理解的是,同一数据的多个数据片段存储至同一存储对象时,可以将这多个数据片段分散存储至其他存储对象。因此,需要分配新的存储对象,这里将该新的存储对象称为分散存储对象。
分配分散存储对象的原则与本发明图1所示实施例中为待存储数据分配x个存储对象的原则可以相同:
如果有足够多的可用存储节点,则为每个待分散数据片段分配一个可用存储节点;
如果没有足够多的可用存储节点,但是有足够多的可用磁盘,则为每个待分散数据片段分配一个可用磁盘;
如果也没有足够多的可用磁盘,则分配全部可用磁盘以存储这些待分散数据片段。
综上所述,也就是将这些待分散数据片段尽量分散存储,如果一个磁盘出现故障、或者一个存储节点出现故障,导致数据丢失,仍可以利用其他磁盘或存储节点中存储的数据片段,对丢失的数据片段进行恢复。
作为一种实施方式,也可以根据存储对象的资源占用情况,分配分散存储对象。具体的,可以优先分配资源占用率较小的存储对象作为分散存储对象。
分配分散存储对象的具体方式可以有多种,具体不做限定。
S204:将所述待分散数据片段分别存储至所述分散存储对象。
这里假设没有足够多的可用存储节点,但是有足够多的可用磁盘,为每个待分散数据片段分配一个可用磁盘。
假设分散存储对象为磁盘B3和磁盘B5,具体将哪个数据片段存储至哪个磁盘不做限定,这里假设将A2存储至B3,将A3存储至B5。
S205:更新所述待分散索引信息。
将该待分散索引信息更新为:A1—B1、A2—B3、A3—B5、A4—B4、A5 —B4、A6—B6。
应用本发明图2所示实施例,当存在数据存储不均匀的情况时,可以对存储不均匀的数据进行分散,使得各个数据片段较均匀地存储至各个存储对象中,存储对象为存储数据的最小单元,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法进行数据恢复的情况。存储至多个存储对象中,能够避免一个存储对象出现故障,多部分数据片段全部丢失,导致无法进行数据恢复的情况。
图3为本发明实施例提供的一种数据重构方法的流程示意图,包括:
S301:在所记录的索引信息中,确定待重构索引信息。其中,所述待重构索引信息中包含出现故障的存储对象的信息,存储对象为存储数据的最小单元。
需要说明的是,本发明图3所示实施例中的数据可以基于本发明图1所示实施例提供的数据存储方法进行存储,或者,也可以基于其他存储方法进行存储。由本发明图1所示实施例中的描述可知,在数据存储过程中,记录了数据的索引信息。因此,可以在所记录的索引信息中,确定待重构索引信息。
或者,应用其他存储方法也需要记录索引信息,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
执行本方案的电子设备可以获取出现故障的存储对象的信息,这样,该电子设备便可以确定出待重构索引信息:将包含出现故障的存储对象的信息的索引信息确定为待重构索引信息。
举例来说,该电子设备可以定期检测存储节点、磁盘、或者磁盘下更小的存储单元等是否出现故障。根据上面描述,存储对象可以为存储数据片段的最小单元。如果检测到某个存储对象出现了故障,则将包含该存储对象的信息的索引信息确定为待重构索引信息。
假设存储对象C2和C6出现故障,某条索引信息包括:A1—C1、A2—C2、 A3—C3、A4—C4、A5—C5、A6—C6,将该索引信息确定为待重构索引信息。
S302:根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段。所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段。
上述索引信息中未出现故障的存储对象为C1、C3、C4和C5,从C1中读取出 A1、从C3中读取出A3、从C4中读取出A4、从C5中读取出A5。
S303:将所述目标数据片段进行重构,得到修复片段。
利用预设的纠删码策略,对A1、A3、A4和A5进行重构,得到修复片段,也就是新的A2和A6。
S304:将所述修复片段存储至为其分配的存储对象中。
为新的A2和A6重新分配存储对象:C7和C8,假设将A2存储至C7,将A6存储至C8。
S305:更新所述待重构索引信息。
将上述索引信息更新为:A1—C1、A2—C7、A3—C3、A4—C4、A5—C5、 A6—C8。
应用本发明图3所示实施例,当存储对象出现故障导致数据片段丢失时,利用未出现故障的存储对象中存储的数据片段,能够重构出丢失的数据片段,起到数据恢复的作用。
图4为本发明实施例提供的一种数据回收方法的流程示意图,包括:
S401:在所记录的索引信息中,确定待回收索引信息。
需要说明的是,本发明图4所示实施例中的数据可以基于本发明图1所示实施例提供的数据存储方法进行存储,或者,也可以基于其他存储方法进行存储。由本发明图1所示实施例中的描述可知,在数据存储过程中,记录了数据的索引信息。因此,可以在所记录的索引信息中,确定待回收索引信息。
或者,应用其他存储方法也需要记录索引信息,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,存储对象为存储数据的最小单元。
具体的,可以针对所记录的每条索引信息,判断其所包含的无效数据片段份数是否大于第四预设阈值,如果是,将其确定为待回收索引信息;其中,所述无效数据片段为:出现故障的存储对象对应的数据片段。
举例来说,假设索引信息包括:A1—B1、A2—B2、A3—B2、A4—B4、A5 —B4、A6—B6,其中,磁盘B2和B6出现故障。则B2和B6对应的数据片段A2、 A3和A6为无效数据片段,无效数据片段份数为3。
假设第四预设阈值为2,则无效数据片段份数是否大于第四预设阈值,将上述索引信息确定为待回收索引信息。
S402:根据所述待回收索引信息,确定待回收数据片段。
具体的,可以根据所述待回收索引信息中的有效数据片段,确定待回收数据片段,所述有效数据片段为除所述无效数据片段之外的数据片段。
延续上述例子,上述索引信息对应的数据片段包括A1、A2、A3、A4、A5 和A6,其中,A2、A3和A6为无效数据片段,这里将剩余数据片段A1、A4和A5 称为有效数据片段。将有效数据片段确定为待回收数据片段。
S403:为所述待回收数据片段分配存储对象。
作为一种实施方式,可以根据存储对象的资源占用情况,分配存储对象。具体的,可以优先分配资源占用率较小的存储对象。
S404:将所述待回收数据片段分别存储至为其分配的存储对象中。
这里假设没有足够多的可用存储节点,但是有足够多的可用磁盘,为每个待分散数据片段分配一个可用磁盘。
假设分配的存储对象为磁盘B7、磁盘B8和磁盘B9,具体将哪个数据片段存储至哪个磁盘不做限定,这里假设将A1存储至B7,将A4存储至B8,将A5存储至B9。
S405:记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系。
也就是记录A1-B7,A4-B8,A5-B9。
S406:将所述对应关系替换所述待回收索引信息。
也就是将该待分散索引信息更新为:A1-B7,A4-B8,A5-B9。
需要说明的是,如果所记录的索引信息对应的数据片段的份数是固定的,比如,一条索引信息只能对应6份数据片段,这种情况下,需要集齐6份待回收数据片段才能够进行数据回收,而且同一索引信息可以对应不同数据的数据片段。
延续上述例子,假设还有一条索引信息包括:A10—B10、A20—B20、A30 —B20、A40—B40、A50—B40、A60—B60,其中,磁盘B20和B40出现故障。则B20和B40对应的数据片段A20、A30和A60为无效数据片段,无效数据片段份数为3,大于第四预设阈值为2,将该索引信息确定为待回收索引信息。
该索引信息对应的数据片段包括A10、A20、A30、A40、A50和A60,其中, A20、A30和A60为无效数据片段,这里将剩余数据片段A10、A40和A50称为有效数据片段。将有效数据片段确定为待回收数据片段。这样,这两条待回收索引信息集齐了6份待回收数据片段。
假设为待回收数据片段A10、A40和A50分配的存储对象为磁盘B70、磁盘 B80和磁盘B90,具体将哪个数据片段存储至哪个磁盘不做限定,这里假设将A10 存储至B70,将A40存储至B80,将A50存储至B90。
记录A10-B70,A40-B80,A50-B90,将上述两条待分散索引信息替换为: A1-B7,A4-B8,A5-B9,A10-B70,A40-B80,A50-B90。也就是将上述两条待分散索引信息删除,仅保留A1-B7,A4-B8,A5-B9,A10-B70,A40-B80,A50-B90。
应用本发明图4所示实施例,索引信息中的无效数据片段份数较多时,可以对索引信息中的有效片段进行回收,节省存储资源。
与上述方法实施例相对应,还提供一种数据存储、分散、重构、回收装置。
图5为本发明实施例提供的一种数据存储装置的结构示意图,包括:
第一分配模块501,用于根据预设的纠删码策略k+m,为待存储数据分配x 个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x 大于1且不大于k+m,所述存储对象为存储数据的最小单元;
切片模块502,用于利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;
第一存储模块503,用于将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
第一记录模块504,用于记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
在本实施例中,第一分配模块501,可以包括:第一判断子模块和第一确定子模块(图中未示出),其中,
第一判断子模块,用于判断可用存储节点的数量是否不小于k+m;
第一确定子模块,用于当所述第一判断子模块判断结果为是时,在可用存储节点中确定x个存储对象;其中,所确定的每个存储对象所在的存储节点不同;所述x等于所述k+m;
第一存储模块503,可以包括:
第一存储子模块(图中未示出),用于当所述第一判断子模块判断结果为是时,将每个数据片段分别存储至不同存储节点中的存储对象。
在本实施例中,第一分配模块501,可以包括:第二判断子模块和第二确定子模块(图中未示出),其中,
第二判断子模块,用于当所述第一判断子模块判断结果为否时,判断全部可用存储节点中的可用存储对象的数量是否不小于k+m;
第二确定子模块,用于当所述第二判断子模块判断结果为是时,在全部可用存储节点中确定x个存储对象;其中,所述x等于所述k+m,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值;
第一存储模块503,可以包括:
第二存储子模块(图中未示出),用于当所述第二判断子模块判断结果为是时,将每个数据片段分别存储至不同存储对象。
在本实施例中,第一分配模块501,可以包括:
分配子模块(图中未示出),用于当所述第二判断子模块判断结果为否时,将全部可用存储对象分配给所述待存储数据;其中,所述x等于全部可用存储对象的数量;
第一存储模块503,可以包括:
第三存储子模块(图中未示出),用于当所述第二判断子模块判断结果为否时,将所述k+m个数据片段均匀划分为x份,将所述x份数据片段分别存储至所述 x个存储对象。
应用本发明图5所示实施例,将待存储数据的各个数据片段分别存储至各个存储对象中,存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值,也就是说,本方案中,较均匀地将各个数据片段存储至多个存储对象中,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法对该数据进行数据恢复的情况。
图6为本发明实施例提供的一种数据分散装置的结构示意图,本发明图6所示实施例中的数据可以利用本发明图5所示实施例提供的数据存储装置进行存储,或者,也可以利用其他存储装置进行存储,图6中包括:
第一确定模块601,用于在所记录的索引信息中,确定待分散索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
第二确定模块602,用于根据所确定的待分散索引信息,确定待分散数据片段;
第二分配模块603,用于为所述待分散数据片段分配分散存储对象;
第二存储模块604,用于将所述待分散数据片段分别存储至所述分散存储对象;
第一更新模块605,用于更新所述待分散索引信息。
在本实施例中,第一确定模块601,具体可以用于:
针对每条索引信息,确定其所对应的各个存储对象的记录次数;
当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息;
第二确定模块602,具体可以用于:
确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;
在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
应用本发明图6所示实施例,当存在数据存储不均匀的情况时,可以对存储不均匀的数据进行分散,使得各个数据片段较均匀地存储至各个存储对象中,存储对象为存储数据的最小单元,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法进行数据恢复的情况。存储至多个存储对象中,能够避免一个存储对象出现故障,多部分数据片段全部丢失,导致无法进行数据恢复的情况。
图7为本发明实施例提供的一种数据重构装置的结构示意图,本发明图7所示实施例中的数据可以利用本发明图5所示实施例提供的数据存储装置进行存储,或者,也可以利用其他存储装置进行存储,图7中包括:
第三确定模块701,用于在所记录的索引信息中,确定待重构索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述待重构索引信息中包含出现故障的存储对象的信息,所述存储对象为存储数据的最小单元;
读取模块702,用于根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;
重构模块703,用于将所述目标数据片段进行重构,得到修复片段;
第三存储模块704,用于将所述修复片段存储至为其分配的存储对象中;
第二更新模块705,用于更新所述待重构索引信息。
应用本发明图7所示实施例,当存储对象出现故障导致数据片段丢失时,利用未出现故障的存储对象中存储的数据片段,能够重构出丢失的数据片段,起到数据恢复的作用。
图8为本发明实施例提供的一种数据回收装置的结构示意图,本发明图8所示实施例中的数据可以利用本发明图5所示实施例提供的数据存储装置进行存储,或者,也可以利用其他存储装置进行存储,图8中包括:
第四确定模块801,用于在所记录的索引信息中,确定待回收索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元;
第五确定模块802,用于根据所述待回收索引信息,确定待回收数据片段;
第三分配模块803,用于为所述待回收数据片段分配存储对象;
第四存储模块804,用于将所述待回收数据片段分别存储至为其分配的存储对象中;
第二记录模块805,用于记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;
替换模块806,用于将所述对应关系替换所述待回收索引信息。
在本实施例中,第四确定模块801,具体可以用于:
针对所记录的每条索引信息,判断其所包含的无效数据片段份数是否大于第四预设阈值,如果是,将其确定为待回收索引信息;其中,所述无效数据片段为:出现故障的存储对象对应的数据片段。
在本实施例中,第五确定模块802,具体可以用于:
根据所述待回收索引信息中的有效数据片段,确定待回收数据片段,所述有效数据片段为除所述无效数据片段之外的数据片段。
应用本发明图8所示实施例,索引信息中的无效数据片段份数较多时,可以对索引信息中的有效片段进行回收,节省存储资源。
本发明实施例还提供一种数据处理系统,该系统可以如图9所示,包括:平台服务器和管理服务器,下面对该系统进行数据存储的过程进行详细说明:
平台服务器,根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于1且不大于k+m,所述存储对象为存储数据的最小单元;
管理服务器,利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第四预设阈值;
平台服务器,记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
作为一种实施方式,平台服务器可以判断可用存储节点的数量是否不小于 k+m;如果不小于,在可用存储节点中确定x个存储对象;其中,所确定的每个存储对象所在的存储节点不同;所述x等于所述k+m;将每个数据片段分别存储至不同存储节点中的存储对象。
作为一种实施方式,平台服务器可以在判断可用存储节点的数量小于k+m 的情况下,判断全部可用存储节点中的可用存储对象的数量是否不小于k+m;如果是,在全部可用存储节点中确定x个存储对象;其中,所述x等于所述k+m,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值;将每个数据片段分别存储至不同存储对象。
作为一种实施方式,平台服务器可以在判断可用存储节点中的可用存储对象的数量小于k+m的情况下,将全部可用存储对象分配给所述待存储数据;其中,所述x等于全部可用存储对象的数量;将所述k+m个数据片段均匀划分为x份,将所述x份数据片段分别存储至所述x个存储对象。
下面介绍一个具体的实施方式:
1、平台服务器接收用户发送的数据存储请求后,指定接收待存储数据的管理服务器。
2、被指定的管理服务器接收该用户发送的待存储数据。
3、该管理服务器向平台服务器申请条带资源,平台服务器根据预设的纠删码策略k+m,为待存储数据分配条带资源:
例如,预设的纠删码策略为4+1,平台服务器组织4+1的条带资源下发给管理服务器。
具体的,平台服务器为每个条带生成一个唯一的条带ID(stripe id),例如:平台服务器组织4+1的条带资源时,在资源允许的情况下,平台服务器为该条带分配5个存储对象(磁盘)。
分配5个存储对象的规则可以包括:如果有足够多的可用存储节点(数量不小于5),则分配5个可用存储节点以存储该待存储数据,使得该待存储数据的每个数据片段存储至不同的存储节点中。
如果没有足够多的可用存储节点(数量小于5),但是有足够多的可用磁盘 (数量不小于5),则分配5个可用磁盘以存储该待存储数据,使得该待存储数据的每个数据片段存储至不同的磁盘中。需要说明的是,在全部可用存储节点中分配5个可用磁盘时,尽量保证各数据片段均匀存储至各个存储节点。
如果也没有足够多的可用磁盘(数量小于5),则分配全部可用磁盘以存储该待存储数据,使得该待存储数据的每个数据片段存储的磁盘尽量不同。
假设平台服务器为该待存储数据分配的条带为:
{<stripe_id,OSD_1,wwn_1>,<stripe_id,OSD_2,wwn_2>,<stripe_id,OSD_3,wwn_3>,<stripe_id,OSD_4,wwn_4>,<stripe_id,OSD_5,wwn_5>},其中,OSD可以理解为存储节点,OSD_1、OSD_2等可以理解为存储节点的标识信息,wwn可以理解为磁盘,wwn_1、wwn_2等可以理解为磁盘的标识信息。
4、管理服务器根据申请到的条带,也可以理解为根据该预设的纠删码策略为4+1,对该待存储数据进行切片及冗余处理,得到原始片段及冗余片段,并将得到的原始片段及冗余片段分别存储至所分配的存储对象中。
具体的,管理服务器为条带中的每个数据片段生成一个唯一的key信息,这样,条带中的每个数据片段对应一个五元组<stripe_id,OSD,wwn,key,value>,其中,stripe_id表示条带ID,OSD表示存储节点的标识信息,wwn表示磁盘的标识信息,key表示数据片段的key,value表示数据片段的值或内容。
上述条带可以完整表示为:
{<stripe_id,OSD_1,wwn_1,key_1,value_1>,<stripe_id,OSD_2,wwn_2,key_2,va lue_2>,<stripe_id,OSD_3,wwn_3,key_3,value_3>,<stripe_id,OSD_4,wwn_4,key_4,value_4>,<stripe_id,OSD_5,wwn_5,key_5,value_5>}。
5、管理服务器根据上述完整的条带,将数据片段发送给其对应的存储节点。
具体的,管理服务器可以向存储节点发送一个三元组<wwn,key,value>,存储节点根据该三元组,将数据<key,value>存储到对应的磁盘中,存储节点存储完毕后返回给管理服务器存储成功的消息。
6、管理服务器接收到条带对应的每个存储节点发送的存储成功的消息后 (表示该待存储数据存储成功),管理服务器将每个数据片段的 <stripe_id,wwn,key>(也就是索引信息)发送给平台服务器。
7、平台服务器记录待存储数据的每个数据片段的<stripe_id,wwn,key>(也就是索引信息)后,该待存储数据存储完毕。
需要说明的是,在一些实施方式中,同一个磁盘在不同时刻可以属于不同的存储节点,因此,在这种情况下,平台服务器记录的条带中可以不包括存储节点的标识信息,也就是说,管理服务器记录的条带可以为: {<stripe_id,wwn_1,key_1>,<stripe_id,wwn_2,key_2>,<stripe_id,wwn_3,key_3>,<str ipe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>}。
另外,上述存储节点也可以为存储服务器,或者其他,具体不做限定。
下面对数据处理系统进行数据读取的过程进行详细说明:
平台服务器,确定待读取数据对应的索引信息;
管理服务器,根据平台服务器所确定的索引信息,从存储对象中读取所述待读取数据的每个数据片段;将所读取的每个数据片段进行组合,得到该待读取数据。
下面介绍一个具体的实施方式:
1、平台服务器接收用户发送的数据读取请求,根据该数据读取请求,确定待读取数据,并指定执行读取操作的管理服务器。
2、被指定的管理服务器向平台服务器请求该待读取数据的条带信息(也就是该待读取数据对应的索引信息)。
假设该待读取数据对应的纠删码策略为4+1,平台服务器中记录的该待读取数据的条带为:
{<stripe_id,wwn_1,key_1>,<stripe_id,wwn_2,key_2>,<stripe_id,wwn_3,key_3 >,<stripe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>}。
根据上面描述,同一个磁盘在不同时刻可以属于不同的存储节点,在这种情况下,平台服务器记录的条带信息不包括存储节点的标识信息,因此,平台服务器需要根据磁盘的标识信息获取对应的存储节点的标识信息,并将所获取的存储节点的标识信息填充到上述条带中,填充后的条带为:
{<stripe_id,OSD_1,wwn_1,key_1>,<stripe_id,OSD_2,wwn_2,key_2>,<stripe_i d,OSD_3,wwn_3,key_3>,<stripe_id,OSD_4,wwn_4,key_4>,<stripe_id,OSD_5,wwn _5,key_5>};
3、管理服务器可以根据上述填充后的条带,向存储节点发送一个二元组 <wwn,key>,存储节点根据该二元组,使用key读取wwn(磁盘)上的value,存储节点将读取到的<key,value>发送给管理服务器。
4、管理服务器将存储节点发送的每个数据片段的<key,value>进行组合,组合完毕后条带为:
{<key_1,value_1>,<key_2,value_2>,<key_3,value_3>,<key_4,value_4>,<key_ 5,value_5>},这样,就得到了该待读取数据。
5、管理服务器将该待读取数据发送给用户。
另外,上述存储节点也可以为存储服务器,或者其他,具体不做限定。
下面对数据处理系统进行数据分散的过程进行详细说明:
平台服务器,在所记录的索引信息中,确定待分散索引信息;
管理服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
平台服务器,更新所述待分散索引信息。
具体的,平台服务器,可以针对每条索引信息,确定其所对应的各个存储对象的记录次数;当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息。
管理服务器,可以确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
作为另一种实施方式,如图10所示,该数据处理系统还可以包括审计服务器,
平台服务器,在所记录的索引信息中,确定待分散索引信息;
审计服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
平台服务器,更新所述待分散索引信息。
具体的,平台服务器,可以针对每条索引信息,确定其所对应的各个存储对象的记录次数;当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息。
审计服务器,可以确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
下面针对图10介绍一个具体的实施方式:
1、平台服务器扫描记录的条带(也就是各数据片段对应的索引信息),确定各条带所对应的各个存储对象的记录次数,当存在记录次数超过第三预设阈值的目标存储对象时,将该条带确定为待分散条带。
假设确定的待分散条带为:
{<stripe_id,wwn_1,key_1>,<stripe_id,wwn_1,key_2>,<stripe_id,wwn_3,key_3 >,<stripe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>}(其中wwn_1的记录次数为 2,假设第三预设阈值为1,该条带中存在记录次数超过第三预设阈值的目标存储对象时,将该条带确定为待分散条带)。
根据上面描述,同一个磁盘在不同时刻可以属于不同的存储节点,在这种情况下,平台服务器记录的条带信息不包括存储节点的标识信息,因此,平台服务器需要根据磁盘的标识信息获取对应的存储节点的标识信息,并将所获取的存储节点的标识信息填充到上述条带中,填充后的条带为:
{<stripe_id,OSD_1,wwn_1,key_1>,<stripe_id,OSD_1,wwn_1,key_2>,<stripe_i d,OSD_3,wwn_3,key_3>,<stripe_id,OSD_3,wwn_4,key_4>,<stripe_id,OSD_5,wwn _5,key_5>}。
平台服务器将填充后的条带(也就是待分散索引信息)发送给审计服务器。
2、审计服务器接收到该条带。
3、审计服务器对该条带进行分析,确定待分散数据片段:
具体的,<key1,key2>存储在一块磁盘wwn_1上,<key1,key2>、<key3,key4> 存储在一台存储节点OSD_1上,可以将key_1及key_3确定为待分散数据片段。也就是说,当同一磁盘或者同一存储节点中存储了同一数据的多个数据片段时,可以在这多个数据片段中确定待分散数据片段。
审计服务器将<wwn_1,key_1>、<wwn_3,key_3>发送给对应的存储节点读取数据。
4、审计服务器向平台服务器申请用于分散的存储节点、及磁盘 <OSD_x,wwn_x>、<OSD_y,wwn_y>(也就是为待分散数据片段分配分散存储对象)。
5、审计服务器将读取到的数据<OSD_1,wwn_1,key_1,value_1>、 <OSD_3,wwn_3,key_3,value_3>写入到新的存储节点、及磁盘中,写入完成后的数据片段可以表示为三元组:
<OSD_x,wwn_x,key_1,value_1>、<OSD_y,wwn_y,key_3,value_3>。
6、将所记录的分散之前的数据片段的三元组: <OSD_1,wwn_1,key_1,value_1>、<OSD_3,wwn_3,key_3,value_3>删除。
7、审计服务器通知平台服务器分散操作已完成,平台服务器将条带修改为: {<stripe_id,wwn_x,key_1>,<stripe_id,wwn_1,key_2>,<stripe_id,wwn_y,key_3>,<stripe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>}。
也就是更新待分散索引信息。
另外,上述存储节点也可以为存储服务器,或者其他,具体不做限定。
应用上述实施例,当存在数据存储不均匀的情况时,可以对存储不均匀的数据进行分散,使得各个数据片段较均匀地存储至各个存储对象中,存储对象为存储数据的最小单元,能够避免一个存储对象出现故障,同一数据的多部分数据片段全部丢失,导致无法进行数据恢复的情况。存储至多个存储对象中,能够避免一个存储对象出现故障,多部分数据片段全部丢失,导致无法进行数据恢复的情况。
下面对数据处理系统进行数据重构的过程进行详细说明:
平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
管理服务器,根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
平台服务器,更新所述待重构索引信息。
作为另一种实施方式,如图10所示,该数据处理系统还可以包括审计服务器,
平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
审计服务器,根据所述待重构信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
平台服务器,更新所述待重构索引信息。
当存储节点出现故障或者磁盘出与故障等情况时,数据处理系统将启动数据重构。下面针对图10介绍一个具体的实施方式:
1、平台服务器获取出现故障的存储节点或者磁盘的信息;扫描记录的条带 (也就是各数据片段对应的索引信息);将包含出现故障的存储节点或者磁盘的信息的条带确定为待重构条带(也就是确定待重构索引信息);指定执行重构操作的审计服务器。
假设确定的待重构条带为:
{<stripe_id,wwn_1,key_1>,<stripe_id,wwn_2,key_2>,<stripe_id,wwn_3,key_3 >,<stripe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>},其中wwn_1磁盘下线;
根据上面描述,同一个磁盘在不同时刻可以属于不同的存储节点,在这种情况下,平台服务器记录的条带信息不包括存储节点的标识信息,因此,平台服务器需要根据磁盘的标识信息获取对应的存储节点的标识信息,并将所获取的存储节点的标识信息填充到上述条带中,填充后的条带为:
{<stripe_id,OSD_1,wwn_1,key_1>,<stripe_id,OSD_2,wwn_2,key_2>,<stripe_i d,OSD_3,wwn_3,key_3>,<stripe_id,OSD_4,wwn_4,key_4>,<stripe_id,OSD_5,wwn _5,key_5>}。
平台服务器将填充后的条带、以及与需要修复的数据片段 <stripe_id,OSD_1,wwn_1,key_1>(也就是待重构索引信息)发送给审计服务器。
2、审计服务器接收到上述填充后的条带、以及与需要修复的数据片段后,将条带中的信息进行分类:
{<stripe_id,OSD_2,wwn_2,key_2>,<stripe_id,OSD_3,wwn_3,key_3>,<stripe_i d,OSD_4,wwn_4,key_4>,<stripe_id,OSD_5,wwn_5,key_5>}这四条索引信息对应的数据片段未丢失,可以正常读取;<stripe_id,OSD_1,wwn_1,key_1>对应的数据片段丢失,需要利用纠删码策略进行修复。
3、审计服务器将{<wwn_2,key_2>,<wwn_3,key_3>,<wwn_4,key_4>,<wwn_5, key_5>}发送给对应的存储节点读取数据。
4、读取数据完毕后,条带为:
{<wwn_2,key_2,value_2>,<wwn_3,key_3,value_3>,<wwn_4,key_4,value_4>,<wwn_5,key_5,value_5>},利用纠删码策略进行修复出丢失的wwn_1磁盘中的数据片段value_1。
5、审计服务器向平台服务器申请新的存储节点与磁盘<OSD_z,wwn_z>。
6、审计服务器将恢复出的数据片段value_1写入到新的存储节点与磁盘 <OSD_z,wwn_z>中。
7、重构操作完成,审计服务器通知平台服务器更新条带,此时平台服务器更新条带为:
{<stripe_id,wwn_z,key_1>,<stripe_id,wwn_2,key_2>,<stripe_id,wwn_3,key_3 >,<stripe_id,wwn_4,key_4>,<stripe_id,wwn_5,key_5>}。
另外,上述存储节点也可以为存储服务器,或者其他,具体不做限定。
下面对数据处理系统进行数据回收的过程进行详细说明:
平台服务器,在所记录的索引信息中,确定待回收索引信息;
管理服务器,根据所述待回收索引信息,确定待回收数据片段;
平台服务器,为所述待回收数据片段分配存储对象;
管理服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息;
作为另一种实施方式,如图10所示,该数据处理系统还可以包括审计服务器,
平台服务器,在所记录的索引信息中,确定待回收索引信息;
审计服务器,根据所述待回收索引信息,确定待回收数据片段;
平台服务器,为所述待回收数据片段分配存储对象;
审计服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息。
具体的,平台服务器可以针对所记录的每条索引信息,判断其所包含的无效数据片段份数是否大于第四预设阈值,如果是,将其确定为待回收索引信息;其中,所述无效数据片段为:出现故障的存储对象对应的数据片段。
管理服务器可以根据所述待回收索引信息中的有效数据片段,确定待回收数据片段,所述有效数据片段为除所述无效数据片段之外的数据片段。
下面针对图10介绍一个具体的实施方式:
1、平台服务器扫描记录的条带(也就是各数据片段对应的索引信息),确定待回收条带:
假设第四预设阈值为2,如下五个条带中包含的无效数据片段(使用NULL 表示)份数都为4,因此,将这五个条带确定为待回收条带:
{<stripe_id_1,wwn_11,key_11>,NULL,NULL,NULL,NULL},
{<stripe_id_2,wwn_21,key_21>,NULL,NULL,NULL,NULL},
{<stripe_id_3,wwn_31,key_31>,NULL,NULL,NULL,NULL},
{<stripe_id_4,wwn_41,key_41>,NULL,NULL,NULL,NULL},
{<stripe_id_5,wwn_51,key_51>,NULL,NULL,NULL,NULL}。
根据上面描述,同一个磁盘在不同时刻可以属于不同的存储节点,在这种情况下,平台服务器记录的条带信息不包括存储节点的标识信息,因此,平台服务器需要根据磁盘的标识信息获取对应的存储节点的标识信息,并将所获取的存储节点的标识信息填充到上述条带中,填充后的条带为:
{<stripe_id_1,OSD_11,wwn_11,key_11>,NULL,NULL,NULL,NULL},
{<stripe_id_2,OSD_21,wwn_21,key_21>,NULL,NULL,NULL,NULL},
{<stripe_id_3,OSD_31,wwn_31,key_31>,NULL,NULL,NULL,NULL},
{<stripe_id_4,OSD_41,wwn_41,key_41>,NULL,NULL,NULL,NULL},
{<stripe_id_5,OSD_51,wwn_51,key_51>,NULL,NULL,NULL,NULL}。
平台服务器将填充后的条带发送给审计服务器。
2、审计服务器接收到上述5个待重构条带。
3、审计服务器根据所接收到的5个条带,确定待回收数据片段。也就是将条带中除无效数据片段(使用NULL表示)以外的数据片段确定为待回收数据片段。
审计服务器将stripe_id_1中的有效数据片段<wwn_11,key_11>发送给存储节点OSD_11读取数据value11;将stripe_id_2中的有效数据片段<wwn_21,key_21> 发送给存储节点OSD_21读取数据value21;将stripe_id_3中的有效数据片段 <wwn_31,key_31>发送给存储节点OSD_31读取数据value31;将stripe_id_4中的有效数据片段<wwn_41,key_41>发送给存储节点OSD_41读取数据value41;将 stripe_id_5中的有效数据片段<wwn_51,key_51>发送给存储节点OSD_51读取数据value51。
4、审计服务器向平台服务器申请空闲条带,假设申请到的条带为:
{<stripe_id,OSD_1,wwn_1>,<stripe_id,OSD_2,wwn_2>,<stripe_id,OSD_3,wwn_3>,<stripe_id,OSD_4,wwn_4>,<stripe_id,OSD_5,wwn_5>}。
5、审计服务器将读取到的数据按照新的条带进行组织,组织完成后新条带为:
{<stripe_id,OSD_1,wwn_1,key_11,value_11>,<stripe_id,OSD_2,wwn_2,key_21,value_21>,<stripe_id,OSD_3,wwn_3,key_31,value_31>,<stripe_id,OSD_4,wwn_4 ,key_41,value_41>,<stripe_id,OSD_5,wwn_5,key_51,value_51>}。
6、审计服务器根据上述新条带,将数据片段发送给其对应的存储节点。
具体的,审计服务器可以向存储节点发送一个三元组<wwn,key,value>,存储节点根据该三元组,将数据<key,value>存储到对应的磁盘中,存储节点存储完毕后返回给审计服务器存储成功的消息。
7、审计服务器回收完成后通知平台服务器,将上述新条带发送给平台服务器保存。也就是说,平台服务器记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息。
需要说明的是,在一些实施方式中,同一个磁盘在不同时刻可以属于不同的存储节点,因此,在这种情况下,平台服务器记录的条带中可以不包括存储节点的标识信息,也就是说,管理服务器记录的条带可以为:
{<stripe_id,wwn_1,key_11>,<stripe_id,wwn_2,key_21>,<stripe_id,wwn_3,key _31>,<stripe_id,wwn_4,key_41>,<stripe_id,wwn_5,key_51>}。
8、平台服务器删除上述5个待回收条带。
可以理解的是,系统长时间运行,部分存储节点或者磁盘出现故障,或者其他情况会导致条带中的部分数据无效,无效数据仍占据条带资源,这样会造成条带资源浪费。应用本方案,条带中的无效数据片段份数较多时,可以对条带中的有效片段进行回收,节省条带资源。
作为一种实施方式,平台服务器可以每隔预设周期执行本方案,及时对条带中的有效片段进行回收,节省条带资源。
另外,上述存储节点也可以为存储服务器,或者其他,具体不做限定。
需要说明的是,在本发明实施例提供的数据处理系统中还可以包括存储服务器,如图11所示。
作为一种实施方式,存储服务器可以包括上述存储节点,或者,存储服务器也可以为上述存储节点。
存储服务器,向所述平台服务器上报自身多个存储对象的运行状态信息,以使所述平台服务器根据每个存储服务器上报的运行状态信息为待存储数据分配存储对象、以及为待分散数据片段分配分散存储对象、以及确定待重构索引信息。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (18)
1.一种数据存储方法,其特征在于,包括:
根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于1且不大于k+m,所述存储对象为存储数据的最小单元;
利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;
将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的纠删码策略k+m,为待存储数据分配x个存储对象的步骤包括:
判断可用存储节点的数量是否不小于k+m;
如果不小于,在可用存储节点中确定x个存储对象;其中,所确定的每个存储对象所在的存储节点不同;所述x等于所述k+m;
所述将所述k+m个数据片段分别存储至所述x个存储对象的步骤包括:
将每个数据片段分别存储至不同存储节点中的存储对象。
3.根据权利要求2所述的方法,其特征在于,在判断可用存储节点的数量小于k+m的情况下,所述方法还包括:
判断全部可用存储节点中的可用存储对象的数量是否不小于k+m;
如果是,在全部可用存储节点中确定x个存储对象;其中,所述x等于所述k+m,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值;
所述将所述k+m个数据片段分别存储至所述x个存储对象的步骤包括:
将每个数据片段分别存储至不同存储对象。
4.根据权利要求3所述的方法,其特征在于,在判断可用存储节点中的可用存储对象的数量小于k+m的情况下,所述方法还包括:
将全部可用存储对象分配给所述待存储数据;其中,所述x等于全部可用存储对象的数量;
所述将所述k+m个数据片段分别存储至所述x个存储对象的步骤包括:
将所述k+m个数据片段均匀划分为x份,将所述x份数据片段分别存储至所述x个存储对象。
5.一种数据分散方法,其特征在于,包括:
在所记录的索引信息中,确定待分散索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
根据所确定的待分散索引信息,确定待分散数据片段;
为所述待分散数据片段分配分散存储对象;
将所述待分散数据片段分别存储至所述分散存储对象;
更新所述待分散索引信息;
所述在所记录的索引信息中,确定待分散索引信息的步骤包括:
针对每条索引信息,确定其所对应的各个存储对象的记录次数;
当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息;
所述根据所确定的待分散索引信息,确定待分散数据片段的步骤包括:
确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;
在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
6.一种数据重构方法,其特征在于,包括:
在所记录的索引信息中,确定待重构索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述待重构索引信息中包含出现故障的存储对象的信息,所述存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
根据所记录的索引信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所记录的索引信息对应的待重构数据的每个数据片段;
利用预设的纠删码策略,对所述目标数据片段进行重构,得到修复片段;
将所述修复片段存储至为其分配的存储对象中;
更新所述待重构索引信息。
7.一种数据存储装置,其特征在于,包括:
第一分配模块,用于根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于1且不大于k+m,所述存储对象为存储数据的最小单元;
切片模块,用于利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;
第一存储模块,用于将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
第一记录模块,用于记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
8.根据权利要求7所述的装置,其特征在于,所述第一分配模块,包括:
第一判断子模块,用于判断可用存储节点的数量是否不小于k+m;
第一确定子模块,用于当所述第一判断子模块判断结果为是时,在可用存储节点中确定x个存储对象;其中,所确定的每个存储对象所在的存储节点不同;所述x等于所述k+m;
所述第一存储模块,包括:
第一存储子模块,用于当所述第一判断子模块判断结果为是时,将每个数据片段分别存储至不同存储节点中的存储对象。
9.根据权利要求8所述的装置,其特征在于,所述第一分配模块,包括:
第二判断子模块,用于当所述第一判断子模块判断结果为否时,判断全部可用存储节点中的可用存储对象的数量是否不小于k+m;
第二确定子模块,用于当所述第二判断子模块判断结果为是时,在全部可用存储节点中确定x个存储对象;其中,所述x等于所述k+m,每个可用存储节点中确定的存储对象的数量差值小于第二预设阈值;
所述第一存储模块,包括:
第二存储子模块,用于当所述第二判断子模块判断结果为是时,将每个数据片段分别存储至不同存储对象。
10.根据权利要求9所述的装置,其特征在于,所述第一分配模块,包括:
分配子模块,用于当所述第二判断子模块判断结果为否时,将全部可用存储对象分配给所述待存储数据;其中,所述x等于全部可用存储对象的数量;
所述第一存储模块,包括:
第三存储子模块,用于当所述第二判断子模块判断结果为否时,将所述k+m个数据片段均匀划分为x份,将所述x份数据片段分别存储至所述x个存储对象。
11.一种数据分散装置,其特征在于,包括:
第一确定模块,用于在所记录的索引信息中,确定待分散索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
第二确定模块,用于根据所确定的待分散索引信息,确定待分散数据片段;
第二分配模块,用于为所述待分散数据片段分配分散存储对象;
第二存储模块,用于将所述待分散数据片段分别存储至所述分散存储对象;
第一更新模块,用于更新所述待分散索引信息;
所述第一确定模块,具体用于:
针对每条索引信息,确定其所对应的各个存储对象的记录次数;
当存在记录次数超过第三预设阈值的目标存储对象时,将该索引信息确定为待分散索引信息;
所述第二确定模块,具体用于:
确定所述待分散索引信息所对应的、记录次数超过所述第三预设阈值的目标存储对象;
在所确定的目标存储对象对应的数据片段中,确定待分散数据片段。
12.一种数据重构装置,其特征在于,包括:
第三确定模块,用于在所记录的索引信息中,确定待重构索引信息;其中,索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系,所述待重构索引信息中包含出现故障的存储对象的信息,所述存储对象为存储数据的最小单元,各个存储对象中存储的数据片段份数的差值小于第一预设阈值;
读取模块,用于根据所记录的索引信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所记录的索引信息对应的待重构数据的每个数据片段;
重构模块,用于利用预设的纠删码策略,对所述目标数据片段进行重构,得到修复片段;
第三存储模块,用于将所述修复片段存储至为其分配的存储对象中;
第二更新模块,用于更新所述待重构索引信息。
13.一种数据处理系统,其特征在于,包括:平台服务器和管理服务器,其中,
所述平台服务器,根据预设的纠删码策略k+m,为待存储数据分配x个存储对象;其中,所述k表示原始片段份数,所述m表示冗余片段份数,所述x大于1且不大于k+m,所述存储对象为存储数据的最小单元;
所述管理服务器,利用所述纠删码策略k+m,对所述待存储数据进行切片及冗余处理,得到k+m个数据片段;将所述k+m个数据片段分别存储至所述x个存储对象,其中,各个存储对象中存储的数据片段份数的差值小于第四预设阈值;
所述平台服务器,记录所述待存储数据对应的索引信息,所述索引信息包括:每个数据片段与存储所述数据片段的存储对象的对应关系。
14.根据权利要求13所述的系统,其特征在于,
所述平台服务器,确定待读取数据对应的索引信息;
所述管理服务器,根据所述平台服务器所确定的索引信息,从存储对象中读取所述待读取数据的每个数据片段;将所读取的每个数据片段进行组合,得到所述待读取数据。
15.根据权利要求14所述的系统,其特征在于,
所述平台服务器,在所记录的索引信息中,确定待分散索引信息;
所述管理服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
所述平台服务器,更新所述待分散索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待分散索引信息;
所述审计服务器,根据所确定的待分散索引信息,确定待分散数据片段;为所述待分散数据片段分配分散存储对象;将所述待分散数据片段分别存储至所述分散存储对象;
所述平台服务器,更新所述待分散索引信息。
16.根据权利要求13所述的系统,其特征在于,
所述平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
所述管理服务器,根据所述待重构索引信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构索引信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
所述平台服务器,更新所述待重构索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待重构索引信息;其中,所述待重构索引信息中包含出现故障的存储对象的信息;
所述审计服务器,根据所述待重构索引信息中包含的未出现故障的存储对象的信息,从所述未出现故障的存储对象中读取目标数据片段,所述目标数据片段为:所述待重构索引信息对应的待重构数据的每个数据片段;将所述目标数据片段进行重构,得到修复片段;将所述修复片段存储至为其分配的存储对象中;
所述平台服务器,更新所述待重构索引信息。
17.根据权利要求13所述的系统,其特征在于,
所述平台服务器,在所记录的索引信息中,确定待回收索引信息;
所述管理服务器,根据所述待回收索引信息,确定待回收数据片段;
所述平台服务器,为所述待回收数据片段分配存储对象;
所述管理服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
所述平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息;
或者,所述系统还包括审计服务器,
所述平台服务器,在所记录的索引信息中,确定待回收索引信息;
所述审计服务器,根据所述待回收索引信息,确定待回收数据片段;
所述平台服务器,为所述待回收数据片段分配存储对象;
所述审计服务器,将所述待回收数据片段分别存储至为其分配的存储对象中;
所述平台服务器,记录每个待回收数据片段与存储所述待回收数据片段的存储对象的对应关系;将所述对应关系替换所述待回收索引信息。
18.根据权利要求13-17任一项所述的系统,其特征在于,还包括:存储服务器,所述存储服务器包含多个存储对象;
所述存储服务器,向所述平台服务器上报自身多个存储对象的运行状态信息,以使所述平台服务器根据每个存储服务器上报的运行状态信息为待存储数据分配存储对象、以及为待分散数据片段分配分散存储对象、以及确定待重构索引信息。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710162001.XA CN108628539B (zh) | 2017-03-17 | 2017-03-17 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
EP18768099.6A EP3598289B1 (en) | 2017-03-17 | 2018-03-16 | Data storage, distribution, reconstruction and recovery methods and devices, and data processing system |
US16/495,042 US11010072B2 (en) | 2017-03-17 | 2018-03-16 | Data storage, distribution, reconstruction and recovery methods and devices, and data processing system |
PCT/CN2018/079277 WO2018166526A1 (zh) | 2017-03-17 | 2018-03-16 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710162001.XA CN108628539B (zh) | 2017-03-17 | 2017-03-17 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108628539A CN108628539A (zh) | 2018-10-09 |
CN108628539B true CN108628539B (zh) | 2021-03-26 |
Family
ID=63521721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710162001.XA Active CN108628539B (zh) | 2017-03-17 | 2017-03-17 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11010072B2 (zh) |
EP (1) | EP3598289B1 (zh) |
CN (1) | CN108628539B (zh) |
WO (1) | WO2018166526A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664223B (zh) * | 2018-05-18 | 2021-07-02 | 百度在线网络技术(北京)有限公司 | 一种分布式存储方法、装置、计算机设备及存储介质 |
GB201905209D0 (en) * | 2019-04-12 | 2019-05-29 | Vaion Ltd | Method of strong items of data |
CN112653539B (zh) * | 2020-12-29 | 2023-06-20 | 杭州趣链科技有限公司 | 一种待存储数据的存储方法、装置以及设备 |
CN115113819A (zh) * | 2022-06-29 | 2022-09-27 | 京东方科技集团股份有限公司 | 一种数据存储的方法、单节点服务器及设备 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101175011A (zh) * | 2007-11-02 | 2008-05-07 | 南京大学 | 基于dht的p2p系统中获得高可用数据冗余的方法 |
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 |
US8473778B2 (en) * | 2010-09-08 | 2013-06-25 | Microsoft Corporation | Erasure coding immutable data |
CN102279777B (zh) * | 2011-08-18 | 2014-09-03 | 华为数字技术(成都)有限公司 | 数据冗余处理方法、装置和分布式存储系统 |
CN103136215A (zh) * | 2011-11-24 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 存储系统的数据读写方法和装置 |
CN103257831B (zh) * | 2012-02-20 | 2016-12-07 | 深圳市腾讯计算机系统有限公司 | 存储器的读写控制方法及对应的存储器 |
US8799746B2 (en) | 2012-06-13 | 2014-08-05 | Caringo, Inc. | Erasure coding and replication in storage clusters |
CN103631539B (zh) * | 2013-12-13 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 基于擦除编码机制的分布式存储系统及其存储方法 |
US10019323B1 (en) * | 2014-03-25 | 2018-07-10 | EMC IP Holding Company LLC | Method and system for container data recovery in a storage system |
US9665428B2 (en) * | 2015-02-05 | 2017-05-30 | Netapp, Inc. | Distributing erasure-coded fragments in a geo-distributed storage system |
CN105159603B (zh) * | 2015-08-18 | 2018-01-12 | 福建省海峡信息技术有限公司 | 一种分布式数据存储系统的修复方法 |
CN105630423B (zh) * | 2015-12-25 | 2018-11-27 | 华中科技大学 | 一种基于数据缓存的纠删码集群存储扩容方法 |
CN105760116B (zh) * | 2016-03-10 | 2018-11-23 | 天津科技大学 | 一种多网盘下的增量纠删码存储方法及系统 |
US9672905B1 (en) * | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
-
2017
- 2017-03-17 CN CN201710162001.XA patent/CN108628539B/zh active Active
-
2018
- 2018-03-16 WO PCT/CN2018/079277 patent/WO2018166526A1/zh active Application Filing
- 2018-03-16 US US16/495,042 patent/US11010072B2/en active Active
- 2018-03-16 EP EP18768099.6A patent/EP3598289B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3598289B1 (en) | 2023-06-07 |
EP3598289A4 (en) | 2020-03-25 |
US20200097199A1 (en) | 2020-03-26 |
EP3598289A1 (en) | 2020-01-22 |
CN108628539A (zh) | 2018-10-09 |
WO2018166526A1 (zh) | 2018-09-20 |
US11010072B2 (en) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108628539B (zh) | 数据存储、分散、重构、回收方法、装置及数据处理系统 | |
CN109597567B (zh) | 一种数据处理方法和装置 | |
US20200310919A1 (en) | Fast and optimized restore using delta information | |
US20070073990A1 (en) | Distribution of data in a distributed shared storage system | |
CN109992206B (zh) | 数据分布存储方法及相关装置 | |
US11841953B2 (en) | Scanning a backup for vulnerabilities | |
CN108958991B (zh) | 集群节点故障业务快速恢复方法、装置、设备及存储介质 | |
CN112632029B (zh) | 分布式存储系统的数据管理方法、装置及设备 | |
CN110413203A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US8756386B2 (en) | Backup apparatus, backup method and computer readable medium having a backup program | |
CN111858189A (zh) | 对存储盘离线的处理 | |
CN115437581A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN111399761B (zh) | 存储资源分配方法、装置及设备、存储介质 | |
CN116467267A (zh) | 垃圾回收方法、设备、存储介质和系统 | |
EP3803601B1 (en) | Meta-copysets for fault-tolerant data storage | |
CN110737389A (zh) | 存储数据的方法和装置 | |
KR101844528B1 (ko) | 통합 파일을 이용한 백업 방법 및 장치 | |
CN115048061A (zh) | 基于Raft的冷数据存储方法 | |
CN112052124A (zh) | 数据冗余方法及分布式存储集群 | |
CN112486932A (zh) | 一种数据并发写入方法及分布式数据并发写入系统 | |
CN113342274A (zh) | 一种数据处理方法及装置 | |
CN116069545A (zh) | 一种用于数据异步冗余编码的方法、装置及设备 | |
CN112667159A (zh) | 一种基于纠删码的数据并行重构方法及系统 | |
CN112083886A (zh) | 一种nas设备的存储管理方法、系统及装置 | |
US11899651B2 (en) | Automatic reclamation of storage space for database systems |
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 |