CN111782152A - 数据存储方法、数据恢复方法、装置、服务器及存储介质 - Google Patents
数据存储方法、数据恢复方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111782152A CN111782152A CN202010636550.8A CN202010636550A CN111782152A CN 111782152 A CN111782152 A CN 111782152A CN 202010636550 A CN202010636550 A CN 202010636550A CN 111782152 A CN111782152 A CN 111782152A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- sub
- stored
- available
- 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.)
- Pending
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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]
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种数据存储方法、数据恢复方法、装置、服务器及存储介质,涉及数据处理技术领域。其中,该存储方法包括:将待存储数据分成多份,对应获得多份子存储数据;计算每份子存储数据的校验数据;以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区,因此,当存储的数据有损坏时,可以根据同一存储区内未损坏的校验数据以及其他存储数据,恢复损坏的数据,保证数据存储的可靠性。
Description
技术领域
本申请涉及数据处理技术领域,更具体地,涉及一种数据存储方法、数据恢复方法、装置、服务器及存储介质。
背景技术
移动互联网时代,每天产生的照片、文档、视频等数据呈现爆炸性增长,这些数据可以存储在云端服务器。因此,如何保证数据存储的可靠性成为亟待解决的问题。
发明内容
鉴于上述问题,本申请提出了一种数据存储方法、数据恢复方法、装置、服务器及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种数据存储方法,所述方法包括:将待存储数据分成多份,对应获得多份子存储数据;计算每份子存储数据的校验数据;以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
第二方面,本申请实施例提供了一种数据恢复方法,用于对根据上述数据存储方法存储的可用区进行数据恢复,所述数据恢复方法包括:当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据;根据读取的未损坏数据对损坏的数据进行数据恢复。
第三方面,本申请实施例提供了一种数据存储装置,所述装置包括:分片模块,用于将待存储数据分成多份,对应获得多份子存储数据;校验模块,用于计算每份子存储数据的校验数据;存储模块,用于以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
第四方面,本申请实施例提供了一种数据恢复装置,用于对根据上述数据存储装置存储或数据存储方法存储的可用区进行数据恢复,所述数据恢复装置包括:数据读取模块,用于当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据;恢复模块,用于根据读取的未损坏数据对损坏的数据进行数据恢复。
第五方面,本申请实施例提供了一种服务器,包括:一个或多个处理器;数据存储器,所述数据存储器包括多个可用区,每个可用区用于存储数据;程序存储器;一个或多个程序,其中所述一个或多个程序被存储在所述程序存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序被所述处理器执行用于执行上述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述的方法。
本申请实施例提供的数据存储方法、数据恢复方法、装置、服务器及存储介质,待存储数据分为多份子存储数据,每一份子存储数据对应计算校验数据。每份子存储数据与其校验数据共同存储于同一可用区,因此,当存储的数据有损坏时,可以根据同一存储区内未损坏的校验数据以及其他存储数据,恢复损坏的数据,保证数据存储的可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的数据存储以及恢复示意图。
图2示出了本申请一实施例提供的数据存储方法的流程图。
图3示出了本申请另一实施例提供的数据存储方法的流程图。
图4示出了本申请又一实施例提供的数据存储方法的流程图。
图5示出了本申请一实施例提供的数据恢复方法的流程图。
图6示出了本申请另一实施例提供的数据恢复方法的流程图。
图7示出了本申请实施例提供的数据存储装置的功能模块图。
图8示出了本申请实施例提供的数据恢复装置的功能模块图。
图9示出了本申请实施例提供的服务器的结构框图。
图10是本申请实施例的用于保存或者携带实现根据本申请实施例的方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
移动互联网时代,可以通过终端设备与服务器进行交互,终端设备产生的大量数据可以存储于服务器,如可以存储于云存储系统中的磁盘等存储介质。由于有大量数据需要存储,则需要极大的存储空间,如通过大规模的集群进行存储。
在大规模存储的情况下,由于磁盘损坏、存储机器故障等现象导致存储的数据损坏是常态,更有甚至出现机房掉电、地震海啸等自然灾害导致整个可用区(Availability-Zone)的数据损坏。其中,可用区为用于存储数据的存储介质,同一可用区内网络延时小。不同的可用区电力和网络互相独立的物理区域,可用区之间可以做到故障隔离,如每个可用区都是一个独立的物理机房以保证可用区的独立性。一个可用区发生故障后不会影响同一区域内下的其它可用区。同一服务区对应的不同可用区之间可相互访问,如通过内网访问,但是不同可用区之间进行访问的网络延时较高,网络负载高,可能导致网络负载成数倍增加。
因此,存储的数据需要保证其可靠性,即使数据损坏,也能及时恢复数据。
发明人发现,保证数据可靠性的一种方式可以是多副本策略,将数据存储于一个可用区内,并对存储的数据进行备份,即将复制的浮标存储于其他可用区内。如设置三个可用区,一个可用区存储数据,两个可用区分别存储一份备份数据,当任意一个可用区内数据损坏,都可以从其他可用区内请求数据进行恢复。
但是,对于该多副本策略,每多存储一个副本,数据就会增加一倍,产生昂贵的存储成本。如通过3个可用区进行存储,1个可用区存储原始数据,2个可用区分别存储一个备份数据,从而将原始数据存储3份,导致存储的数据放大为原来的3倍。
并且,多副本策略下,对数据进行恢复时,需要从其他可用区读取数据,而可用区之间的高网络延时以及高网络负载,影响可用区的性能,导致修复代价大。
保证数据可靠性的另一种存储成本更小的方式可以是校验数据策略。即将根据原始数据生成校验数据,将原始数据以及校验数据存储于不同的可用区内。如通过纠删码算法编码生成校验块,纠删码算法可以容忍最多损坏的数据量与校验块的数据量相同,即最多可以有等于校验块数量的数据块损坏,在该损坏的情况下,可以根据纠删码算法对应的解码方式进行数据恢复。
在该校验数据策略下,当有数据损坏,可以从其他数据读取数据进行恢复。例如图1所示的存储示意图,原始数据为待存储数据,均分为6份,分别表示为D1至D6的6个数据块;通过纠删码编码算法计算6份原始数据的6个校验块,分别表示为P1至P6。将6个校验块以及原始数据对应的6份数据块共12份数据平均存储在3个可用区,该3个可用区分别表示为Z0、Z1以及Z2,每个可用区存储4个数据块。当有任意一个可用区内有数据损坏,可以从其他可用区内读取数据与损坏的可用区内的未损坏数据一起进行数据恢复。如图1中可用区Z0中数据块D2损坏,从可用区Z1以及可用区Z2中读取数据,获得6个未损坏的数据块,根据该6个未损坏的数据块重建D2,实现对D2的恢复。
在该种方式下,任意一个可用区内数据损坏,需要从其他可用区内读取数据对损坏数据进行重建以恢复。由于不同可用区之间访问延时高,网络负载高,修复代价大。
发明人通过对数据故障的大量研究发现,每次产生故障的数据量较少,如将数据分块存储,每个可用区内可存储多个数据块的情况下,单个数据块故障的概率远远大于多个数据块同时故障的概率,这个概率超过90%。因此,发明人提出了本申请实施例提供的数据存储方法以及该数据存储方法进行数据恢复的数据恢复方法,可以将待存储数据分成多份,根据每一部分的子存储数据计算校验数据,将子存储数据以及对应的校验数据存储在同一可用区,因此,在基本都是较少的数据产生故障的客观情况下,当有数据损坏,可以根据同一可用区内的其他数据进行数据恢复,改善由于跨可用区进行数据读取时的高延时以及高负载问题。
下面将通过具体实施例对本申请实施例提供的数据存储方法、数据恢复方法、装置、服务器及存储介质进行详细说明。
请参阅图2,示出了本申请实施例提供的数据存储方法。具体的,该方法包括:
步骤S110:将待存储数据分成多份,对应获得多份子存储数据。
步骤S120:计算每份子存储数据的校验数据。
步骤S130:以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
本申请实施例中,待存储数据可以分成多份,定义每一份为子存储数据。根据每一份子存储数据计算校验数据,并且将子存储数据以及其对应的校验数据存储到同一可用区。当有数据损坏需要修复时,则可以从同一可用区内读取数据进行修复,提高了数据的可靠性。
本申请另一实施例提供的数据存储方法,更详细地描述了存储过程。如图3所示,该数据存储方法包括如下步骤。
步骤S210:将待存储数据分成多份,对应获得多份子存储数据。
待存储数据为需要存储的数据,具体来源在本申请实施例并不限定。例如,当有终端设备产生需要存储的数据并传输到服务器,服务器以接收到的数据作为待存储数据进行存储处理。又如,各个终端设备产生的数据先存储于一个存储空间内,当存储的数据量达到预设的数据量时,将该存储空间内存储的数据作为待存储数据进行存储处理;对应的,该存储空间可删除已存储处理的数据,或者不删除。
将待存储数据分成多份,定义其中的每一份数据为子存储数据。其中,具体分为多少份在本申请实施例中并不限定,可以预先确定。如预先确定为分词3份,预先确定为分词2份,等等。例如,有多少个可用区用于存储子存储数据以及其对应的校验数据,则分为多少份。
可选的,分成的多份数据的数据量可以是相等的,即平均分成多份,每一份的数据量一致。
可选的,当平均分成多份无法平均时,不足的份数可以添加无用数据进行补齐,如添加0使其数据量与其他份数的数据量相等。例如,有7M待存储数据,将其分为2份数据,且每一份为M的整数倍,则两份数据可以都为4M,其中一份为4M待存储数据,一份为3M待存储数据加1M补齐的无用数据。
在本申请实施例中,将待存储数据分为多份时,可以以预设的数据单位进行划分,如以1M为数据单位,以2M为数据单位,以6M为数据单位等。一个数据单位的数据定义为1个数据块,则每份数据中包括多个数据块。
在将待存储数据划分为多份时,可以将待存储数据按照数据块的大小进行划分,获得多个数据块,再将多个数据块划分为多份。例如,有7M待存储数据,每个数据块的数据量为2M,则7M待存储数据对应为4个数据块,其中有一个3个数据块包括的都为待存储数据,有一个数据块包括的为1M待存储数据加1M补齐的无用数据,将该4个数据块分为两份。
可选的,分成的多份数据也可以是不平均的。
步骤S220:计算每份子存储数据的校验数据。
对应每一份数据计算校验数据,获得每一份数据的校验数据。根据该计算方式获得的校验数据,当子存储数据以及对应的校验数据中有数据损坏时,若损坏数据量小于校验数据的数据量,可以通过剩余的未损坏数据中,与子存储数据的数据量等量的数据进行数据恢复,计算获得损坏的数据。例如,每份子存储数据有N个数据块,根据该N个数据块计算获得Q个校验块。当该N+Q个数据块中,有小于或等于Q个数据块损坏,都可以根据其余未损坏的数据块恢复损坏的数据块。N和Q都为正整数。
计算校验数据的具体方式在本申请实施例中并不限定,以在有数据损坏时,且损坏的数据量小于一定量,如损坏的数据量小于或等于校验数据的数据量,未损坏数据可以恢复损坏数据为宜。例如,计算校验数据的方式可以是纠删码编码算法。对每份子存储数据,可以通过纠删码编码算法进行编码,获得的校验块,作为子存储数据的校验数据。对N个数据块通过纠删码编码算法计算获得Q个数据块时,损坏数据小于或等于Q个数据块,都可以根据未损坏数据进行对应的解码操作,实现数据恢复。
获得的校验数据的数据量的大小在本申请实施例中并不限定。
可选的,为了降低存储空间,每份子存储数据计算获得的校验数据的数据量可以不大于对应的子存储数据的数据量。
可选的,不同份的子存储数据计算获得的校验数据的数据量可以相等。
可选的,每份校验数据可以等于对应的子存储数据的数据量。如,每份子存储数据有N个数据块,根据该N个数据块计算获得Q个校验块,N等于Q。
可选的,不同份的子存储数据计算获得的校验数据的数据量可以不等。
步骤S230:以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
将每份子存储数据以及其对应的校验数据共同形成的数据定义为数据集,即一个数据集内包括一份子存储数据以及根据该子存储数据计算获得的校验数据。例如,待存储数据分为2份子存储数据,每份子存储数据有N个数据块,根据该N个数据块计算获得Q个校验块。第一份子存储数据中的N个数据块以及其计算获得的Q个校验块作为一个数据集;第二份子存储数据中的N个数据块以及其对应的Q个校验块作为一个数据集。
在存储数据时,将同一个数据集中的数据存入同一个可用区,即将子存储数据以及其对应的校验数据存入同一可用区。
本申请实施例中,待存储数据分为多份子存储数据,各份子存储数据各自计算校验数据,并将子存储数据以及对应计算的校验数据存储于同一可用区。因此,当有数据损坏需要修复时,可以从同一可用区内读取数据进行修复,提高了数据的可靠性,同时降低了修复代价。
同一可用区的存储量有限,每一份子存储数据的数据量有限,每一份子存储数据对应的校验数据的大小有限。虽然同时有大量数据损坏需要修复的可能性较小,但是若偶然出现同时有大量数据损坏,损坏的数据量大于一个可用区可以修复的数据量。例如,损坏数据量大于校验数据的数据量时,则无法进行修复。如根据N个数据块计算得到Q个纠删码时,若数据块损坏的数量小于Q,可以根据该N+Q个数据块中未损坏的数据块进行恢复;但是若数据块损坏的数量大于Q,则无法根据N+Q个数据块中未损坏的数据块进行恢复。从而,还需要有可用区以外的备份数据,避免在一个可用区内数据损坏过多无法修复。
本申请实施例中,可以将待存储数据再存储一个副本,即将待存储数据存储在一个可用区内,该可用区不同于数据集存储的可用区。从而当存储数据集的可用区内,无法根据子存储数据以及校验数据进行数据修复时,可以从存储副本的可用区内读取损坏的原始数据,并计算损坏的校验数据。原始数据表示的是属于待存储数据的数据。
在本申请实施例中,也可以将不同数据集存入不同的可用区,根据数据集计算新的数据集,将新的数据集存储在不同的可用区,以便于彼此之间可以数据恢复。如图4示出了该实施例提供的数据存储方法,请参见图4,该数据存储方法包括了如下步骤。
步骤S310:将待存储数据分成多份,对应获得多份子存储数据。
步骤S320:计算每份子存储数据的校验数据。
步骤S330:以每份子存储数据以及对应的校验数据作为同一数据集,将不同数据集存入不同的可用区,将每个数据集中的数据存入同一可用区。
步骤S310至步骤S330的具体描述可以参见前述实施例。
其中,在本实施例中,不同的数据集存入不同的可用区。对于任意一个存储数据集的可用区,当可用区内损坏的数据量小于或等于校验数据的数据量,可以从该可用区内读取与子存储数据的数据量相同的未损坏数据,根据读取的未损坏数据对损坏的数据进行数据恢复。
具体修复方式可以根据生成校验数据时的生成方式确定,即若损坏的数据为校验数据,可以根据子存储数据重新生成校验数据;若损坏的数据包括子存储数据的部分或全部,且小于或等于校验数据的数据量,可以根据子存储数据生成校验数据的编码方式,对子存储数据以及校验数据中的未损坏数据进行相应的解码,实现数据恢复。如子存储数据通过纠删码编码方式计算获得校验数据,则可以根据纠删码的解码方式,对数据集中与子存储数据相同数据量的未损坏数据进行解码,恢复子存储数据。
步骤S340:根据多份子存储数据对应的多份数据集,计算生成目标数据集。
根据各个子存储数据对应的各个数据集,可以计算生成一新的数据集,定义该新的数据集为目标数据集。该目标数据集以及多份子存储数据对应的多份数据集中,有数据集中有数据损坏,可以从其他数据集获取数据进行修复。例如某可用区内数据损坏时,可以从其他可用区中获取未损坏的数据,使用于数据恢复的未损坏数据等于该可用区内子存储数据的数据量,根据用于数据恢复的未损坏数据进行计算,恢复损坏的数据。该恢复过程中的计算方式可以参照生成目标数据集过程中的计算方式,如通过纠删码算法生成新的数据集,则可以参照纠删码算法的恢复方式进行恢复。
可选的,可以对每一个数据集进行计算,生成校验数据,将各个数据集分别生成的校验数据共同作为新的数据集。例如,待存储数据分为两份子存储数据,对应生成两个数据集,根据第一个数据集通过纠删码编码算法生成的校验块作为第一份校验数据;根据第二个数据集通过纠删码编码算法生成的校验块作为第二份校验数据。将第一份校验数据以及第二份校验数据一起作为一个新的数据集,定义为目标数据集。当目标数据集中有数据损坏,可以根据多份子存储数据对应的多个数据集分别再次计算生成校验数据,恢复目标数据集中的数据。当子存储数据对应的数据集中有数据损坏,可以从目标数据集中读取对应的校验数据,与其中未损坏的数据共同进行解码恢复。
可选的,可以是多份数据集共同作用,生成新的数据集,定义为目标数据集。例如,通过纠删码编码算法对多份数据集进行编码,生成目标数据集。即通过纠删码编码算法,对多份数据集中的所有数据块或者所有子存储数据对应的数据块进行编码,获得校验块,将获得的校验块作为一个整体,定义为目标数据集。当目标数据集中有数据损坏,可以根据多份子存储数据对应的多个数据集再次共同作用,计算生成目标数据集,恢复目标数据集中的数据。
可选的,多份数据集共同作用,生成目标数据集时,若有两份数据集生成目标数据集,异或可以作为一种特殊的纠删码编码算法,用于获取目标数据集。具体的,两份待存储数据对应的数据集中数据量相同,子存储数据的数据量相同,校验数据的数据量相同,子存储数据与子存储数据对应异或,校验数据与校验数据对应异或,通过对该两份数据集进行异或生成目标数据集。即将两个数据集中的数据逐一进行异或,得到的结果作为目标数据集。当目标数据集中有数据损坏,且损坏数据的数据量小于校验数据的数据量,可以根据目标数据集中与子存储数据的数据量相同的未损坏数据,进行解码,获得恢复数据;当损坏数据大于校验数据的数据量,或者任意数据量的数据损坏,都可以从其他可用区内获取与损坏数据具有异或关系的未损坏数据,通过未损坏数据进行异或实现解码,修复数据。其中,若两个数据异或得到第三个数据,则该三个数据为具有异或关系的数据。
例如,待存储数据分为2份子存储数据,每份子存储数据有N个数据块,对第1个至第N个数据块,通过纠删码编码算法计算获得Q个校验块,并且将该第1个至第N个数据块以及该Q个校验块存储到可用区Z0中;对第(N+1)至第2N个数据块,通过纠删码编码算法计算获得Q个校验块,并且将该第(N+1)至第2N个数据块以及该Q个校验块存储到可用区Z1中。将Z0中的数据以及Z1中存储的数据进行异或,获得(N+Q)个数据块,存储在新的可用区Z2中。
步骤S350:将生成的目标数据集存入目标可用区,所述目标可用区与所述多份数据集存储的可用区不同。
将生成的目标数据集存储在与存储多份子存储数据不同的可用区,从而当一个可用区内数据量损坏过大时,可以从其他可用区读取数据进行恢复。
在本申请实施例中,步骤S330可以在步骤S340之前执行,也可以在步骤S340之后执行。即可以按照上述步骤S330至步骤S350的顺序执行,也可以在生成多份数据集后,根据多份数据集计算得到目标数据集,将多份数据集以及目标数据集分别存入对应的可用区。
本申请实例提供的数据存储方法,待存储数据分为多份子存储数据,各份子存储数据各自计算校验数据,并将子存储数据以及对应计算的校验数据存储于同一可用区。
因此,当有数据损坏需要修复时,若数据损坏量较小,如小于可用区内校验数据的数据量,可以从同一可用区内读取数据进行修复;当数据损坏量较大,大于可用区内的数据修复能力,如数据损坏量大于校验数据的数据量,可以从其他数据集获取数据,进行数据修复。从而,本申请实施例提供的数据存储方法,在数据修复时,可以尽可能降低修复代价,且保证了数据的可靠性。
本申请实施例还提供了一种数据恢复方法,用于对根据前述实施例描述的数据存储方法进行存储的可用区进行数据恢复,具体可以用于存储子存储数据以及其对应的校验数据的可用区进行恢复。如图5所示,该数据恢复方法包括如下步骤。
步骤S410:当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据。
步骤S420:根据读取的未损坏数据对损坏的数据进行数据恢复。
在本申请实施例中,对于任意一个可用区,若其中包括子存储数据以及对应的校验数据,当有可用区内有数据损坏时,若损坏的数据的数据量小于该可用区内校验数据的数据量,即可根据与该可用区内子存储数据的数据量相同的未损坏数据进行恢复计算,恢复该可用区内的数据,降低数据的修复代价,且保证数据的可靠性。
具体恢复方式如前所述,可以根据生成校验数据时的生成方式确定。
例如,校验数据为子存储数据通过纠删码的编码算法生成,则可以获取与子存储数据相同的数据量,根据纠删码的解码方式,解码获得可用区内的子存储数据。若损坏的数据为子存储数据,则实现数据的恢复;若损坏的数据为校验数据,则根据该可用区内的所有子存储数据计算校验数据,实现校验数据的恢复。
另外,若可用区数量为三个,其中两个可用区存储的数据集包括子存储数据以及对应的校验数据,第三个可用区为其他两个可用区异或生成。则该三个可用区中任意一个可用区有数据损坏时,损坏的数据量小于或等于校验数据的数据量,也可以从可用区内读取与子存储数据的数据量相同的未损坏数据,根据读取的未损坏数据对损坏的数据进行数据恢复。
本申请另一实施例提供的数据恢复方法,描述了不同数据集存入不同的可用区,至少一个可用区中的数据集根据其他可用区中的数据集生成的情况下的数据恢复方式。其中,本申请实施例中,定义存储子存储数据以及校验数据的可用区为非目标可用区,非目标可用区为不同于目标可用区的可用区。
可选的,在进行数据修复时,目标可用区的修复可以是,根据非目标可用区内的数据集再次生成目标可用区内的数据。可选的,若可用区包括3个,分别为两个非目标可用区以及一个目标可用区,目标可用区内的数据集为其他两个非目标可用区内数据的异或生成,则目标可用区内的数据修复方式可以与非目标可用区内数据修复方式相同。
如图6所示,该数据修复方法可以包括:
步骤S510:当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据。
步骤S520:根据读取的未损坏数据对损坏的数据进行数据恢复。
当任意一个非目标可用区内损坏的数据量小于或等于校验数据的数据量,可以从该可用区内读取与子存储数据的数据量相同的未损坏数据,根据读取的未损坏数据对损坏的数据进行数据恢复。
可选的,当检测到非目标可用区中有数据损坏,可以判断损坏的数据量是否小于或等于校验数据的数据量,若是,可以执行步骤S510和S520;若否,可以执行步骤S530和S540。
当目标可用区内有数据损坏,可以根据非目标可用区的数据生成目标可用区内数据的方式再次生成。
步骤S530:当可用区内损坏的数据量大于校验数据的数据量,从其他可用区内获取未损坏数据。
步骤S540:根据读取的未损坏数据以及当前可用区内的未损坏数据,恢复当前可用区内损坏的数据。
当可用区内损坏的数据量大于校验数据的数据量,超出了可用区本身的修复能力,可以从其他可用区读取未损坏数据,根据读取的未损坏数据以及当前可用区内的未损坏数据,恢复当前可用区内损坏的数据。
其中,具体恢复方式可以根据目标可用区内数据的生成方式确定。对于目标可用区而言,当目标可用区内有数据损坏,可以根据非目标可用区的数据生成目标可用区内数据的方式再次生成。
对于非目标可用区而言,例如,目标可用区内的数据由非目标可用区内的数据共同编码形成,则可以根据从其他可用区读取的未损坏数据以及当前可用区内的未损坏数据解码恢复。如各个非目标可用区内的数据通过纠删码编码算法生成目标可用区内的数据,则可以读取目标可用区以及各个非目标可用区内的数据,通过纠删码对应的解码算法,恢复数据。
对于非目标可用区而言,例如,目标可用区内的数据为各个非目标可用区内的数据分别编码获得的校验数据形成,可以从目标可用区内读取损坏的非目标可用区对应的校验数据,再通过该非目标可用区内的未损坏数据以及读取的校验数据进行解码,恢复数据。
若包括三个存储数据集的可用区,目标可用区内的数据集根据其他两个可用区内的数据集异或生成,即目标可用区内的数据为两个非目标可用区内的数据异或形成,则可以从待恢复数据的可用区以外的其他两个可用区分别读取与损坏数据具有异或关系的数据;将读取到的数据对应异或,获得的结果作为待恢复数据的可用区中恢复后的数据。
本申请实施例中,大多数情况下,可用区内损坏数据量较小,若非目标可用区内损坏的数据量小于校验数据的数据量,可以通过该可用区内的数据进行恢复,恢复速度快,代价小,且保证了数据的可靠性;而若损坏数据量大于校验数据的数据量,可以从权其他可用区读取未损坏的数据进行恢复,保证数据的可靠性。
本申请另一实施例以三个可用区为例详细说明该数据存储方法以及对应的数据恢复方法。其中,三个可用区分别为Z0,Z1以及Z2。
在数据存储时,待存储数据分为2份,分别包括N个数据块。以第一份的N个数据块根据纠删码编码算法计算获得Q个校验块,每个校验块也是一个数据块,将该N+Q个数据块存入可用区Z0;以第二份的N个数据块根据纠删码编码算法计算获得Q个校验块,将该N+Q个数据块存入可用区Z1。将Z0中的N+Q个数据块以及Z1中的N+Q个数据块逐一异或,异或结果为N+Q个数据块,存入可用区Z2。其中,异或时,可以是校验块逐一异或,待存储数据对应的数据块逐一异或。
在数据恢复恢复时,若某个可用区,如可用区Z0,有K个数据块损坏。若K小于或等于Q,从Z0中读取N个未损坏的数据块,根据纠删码编码算法对应的解码,获得Z0中存储数据对应的N个数据块。若损坏数据中有校验块,再根据获得的N个数据块计算校验块。其中,N、Q以及K都为正整数。
若K大于Q,则从Z1以及Z2中读取与K个损坏数据具有异或关系的K个数据块,将读取到的数据块进行异或,得到的结果为损坏数据未损坏时的值,作为恢复数据。如Z0中有数据块Dx,Z1中有数据块Dy,D1以及Dy异或生成数据块Dz并存储于Z2。则恢复Dx时,可以读取Dy以及Dz进行异或,获得恢复后的Dx。
Z1以及Z2中数据恢复方式与Z0相同。
当K小于或等于Q时,通过可用区内的数据进行恢复,不必跨区获取数据,恢复速度快,网络负载低,恢复代价小;当K大于Q时,通过异或进行数据恢复,计算简单,恢复速度快。
当该数据存储方法和恢复方法应用于云存储系统,在云存储系统中单个数据块损坏的概率远远大于多个数据块损坏的概率,基于这实际情况,本方案结合纠删码和异或计算实现的数据存储方法,可保证数据的可靠性,有效的解决单独使用纠删码修复数据时需要大量的跨可用区读取数据的问题,并且支持整个可用区损坏级别的容灾,在保证云存储系统的可靠性的前提下,提升了数据存储效率和节约了存储成本。
本申请实施例还提供了一种数据存储装置700,如图7所示,所述该数据存储装置700包括:分片模块710,用于将待存储数据分成多份,对应获得多份子存储数据;校验模块720,用于计算每份子存储数据的校验数据;存储模块730,用于以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
可选的,将不同数据集存入不同的可用区,该数据存储装置700还可以包括数据生成模块,用于根据多份子存储数据对应的多份数据集,计算生成目标数据集;存储模块730还可以用于将生成的目标数据集存入目标可用区,所述目标可用区与所述多份数据集存储的可用区不同。
可选的,数据生成模块可以用于通过纠删码编码算法对所述多份数据集进行编码,生成目标数据集。
可选的,所述多份为两份,每份数据集中数据量相同。数据生成模块可以用于通过对所述两份数据集进行异或生成所述目标数据集。
本申请实施例还提供了一种数据恢复装置800,用于对本申请实施例中数据存储的可用区进行数据恢复,如图8所示,所述数据恢复装置800包括:数据读取模块810,用于当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据;恢复模块820,用于根据读取的未损坏数据对损坏的数据进行数据恢复。
可选的,不同数据集存入不同的可用区,至少一个可用区中的数据集根据其他可用区中的数据集生成,该数据恢复装置800的数据读取模块810还可以用于当可用区内损坏的数据量大于校验数据的数据量,从其他可用区内获取未损坏数据;恢复模块820还可以用于根据读取的未损坏数据以及当前可用区内的未损坏数据,恢复当前可用区内损坏的数据。
可选的,可以包括三个存储数据集的可用区,目标可用区内的数据集根据其他两个可用区内的数据集异或生成,数据读取模块810还可以用于从待恢复数据的可用区以外的其他两个可用区分别读取与损坏数据具有异或关系的数据;恢复模块820还可以用于将读取到的数据对应异或,获得的结果作为待恢复数据的可用区中恢复后的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述的各个方法实施例之间可以相互参照;上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。各个模块可以配置在不同的服务器中,也可以配置在相同的服务器中,本申请实施例并不限定。
请参考图9,其示出了本申请实施例提供的一种服务器900的结构框图。该服务器可以包括一个或多个处理器910(图中仅示出一个),存储器920以及一个或多个程序。其中,存储器可以包括数据存储器以及程序存储器,数据存储器可以包括多个可用区,分别用于存储数据。程序存储器可以用于存储所述一个或多个程序。该一个或多个程序并被配置为由所述一个或多个处理器910执行。所述一个或多个程序被处理器执行用于执行前述实施例所描述的方法。
处理器910可以包括一个或者多个处理核。处理器910利用各种接口和线路连接整个服务器900内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行服务器900的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器910可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。
存储器920可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质1000中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1000可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1000包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1000具有执行上述方法中的任何方法步骤的程序代码1010的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1010可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种数据存储方法,其特征在于,所述方法包括:
将待存储数据分成多份,对应获得多份子存储数据;
计算每份子存储数据的校验数据;
以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
2.根据权利要求1所述的方法,其特征在于,将不同数据集存入不同的可用区,所述方法还包括:
根据多份子存储数据对应的多份数据集,计算生成目标数据集;
将生成的目标数据集存入目标可用区,所述目标可用区与所述多份数据集存储的可用区不同。
3.根据权利要求2所述的方法,其特征在于,所述根据多份子存储数据对应的多份数据集,计算生成目标数据集,包括:
通过纠删码编码算法对所述多份数据集进行编码,生成目标数据集。
4.根据权利要求2或3所述的方法,其特征在于,所述多份为两份,每份数据集中数据量相同,所述根据多份子存储数据对应的多份数据集,计算生成目标数据集,包括:
通过对所述两份数据集进行异或生成所述目标数据集。
5.一种数据恢复方法,其特征在于,用于对根据权利要求1至4任一项所述的数据存储方法存储的可用区进行数据恢复,所述数据恢复方法包括:
当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据;
根据读取的未损坏数据对损坏的数据进行数据恢复。
6.根据权利要求5所述的数据恢复方法,其特征在于,不同数据集存入不同的可用区,至少一个可用区中的数据集根据其他可用区中的数据集生成,所述数据恢复方法还包括:
当可用区内损坏的数据量大于校验数据的数据量,从其他可用区内获取未损坏数据;
根据读取的未损坏数据以及当前可用区内的未损坏数据,恢复当前可用区内损坏的数据。
7.根据权利要求5所述的数据恢复方法,其特征在于,包括三个存储数据集的可用区,目标可用区内的数据集根据其他两个可用区内的数据集异或生成,所述数据恢复方法还包括:
从待恢复数据的可用区以外的其他两个可用区分别读取与损坏数据具有异或关系的数据;
将读取到的数据对应异或,获得的结果作为待恢复数据的可用区中恢复后的数据。
8.一种数据存储装置,其特征在于,所述装置包括:
分片模块,用于将待存储数据分成多份,对应获得多份子存储数据;
校验模块,用于计算每份子存储数据的校验数据;
存储模块,用于以每份子存储数据以及对应的校验数据作为同一数据集,将每个数据集中的数据存入同一可用区。
9.一种数据恢复装置,其特征在于,用于对根据权利要求8的数据存储装置存储的可用区进行数据恢复,所述数据恢复装置包括:
数据读取模块,用于当可用区内损坏的数据量小于或等于校验数据的数据量,从所述可用区内读取与子存储数据的数据量相同的未损坏数据;
恢复模块,用于根据读取的未损坏数据对损坏的数据进行数据恢复。
10.一种服务器,其特征在于,包括:
一个或多个处理器;
数据存储器,所述数据存储器包括多个可用区,每个可用区用于存储数据;
程序存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述程序存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序被所述处理器执行用于执行如权利要求1-7任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010636550.8A CN111782152A (zh) | 2020-07-03 | 2020-07-03 | 数据存储方法、数据恢复方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010636550.8A CN111782152A (zh) | 2020-07-03 | 2020-07-03 | 数据存储方法、数据恢复方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782152A true CN111782152A (zh) | 2020-10-16 |
Family
ID=72758624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010636550.8A Pending CN111782152A (zh) | 2020-07-03 | 2020-07-03 | 数据存储方法、数据恢复方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782152A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626649A (zh) * | 2021-08-02 | 2021-11-09 | Oppo广东移动通信有限公司 | 数据存储方法、装置、存储介质以及电子设备 |
CN114756404A (zh) * | 2022-06-15 | 2022-07-15 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115543697A (zh) * | 2022-11-30 | 2022-12-30 | 北京网智易通科技有限公司 | 电子档案存储方法、装置、电子设备和存储介质 |
WO2023070935A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为云计算技术有限公司 | 一种数据存储方法、装置及相关设备 |
WO2024040919A1 (zh) * | 2022-08-24 | 2024-02-29 | 华为技术有限公司 | 一种数据修复方法及存储设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
CN107615248A (zh) * | 2015-06-17 | 2018-01-19 | 华为技术有限公司 | 分布式数据存储方法、控制设备和系统 |
US20180217898A1 (en) * | 2017-01-31 | 2018-08-02 | Acronis International Gmbh | System and method for supporting integrity of data storage with erasure coding |
-
2020
- 2020-07-03 CN CN202010636550.8A patent/CN111782152A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105393225A (zh) * | 2013-06-25 | 2016-03-09 | 微软技术许可有限责任公司 | 跨多个区的纠删编码 |
CN107615248A (zh) * | 2015-06-17 | 2018-01-19 | 华为技术有限公司 | 分布式数据存储方法、控制设备和系统 |
US20180217898A1 (en) * | 2017-01-31 | 2018-08-02 | Acronis International Gmbh | System and method for supporting integrity of data storage with erasure coding |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113626649A (zh) * | 2021-08-02 | 2021-11-09 | Oppo广东移动通信有限公司 | 数据存储方法、装置、存储介质以及电子设备 |
WO2023070935A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为云计算技术有限公司 | 一种数据存储方法、装置及相关设备 |
CN114756404A (zh) * | 2022-06-15 | 2022-07-15 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114756404B (zh) * | 2022-06-15 | 2024-04-05 | 上海江波龙数字技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
WO2024040919A1 (zh) * | 2022-08-24 | 2024-02-29 | 华为技术有限公司 | 一种数据修复方法及存储设备 |
CN115543697A (zh) * | 2022-11-30 | 2022-12-30 | 北京网智易通科技有限公司 | 电子档案存储方法、装置、电子设备和存储介质 |
CN115543697B (zh) * | 2022-11-30 | 2023-03-10 | 北京网智易通科技有限公司 | 电子档案存储方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782152A (zh) | 数据存储方法、数据恢复方法、装置、服务器及存储介质 | |
US11327840B1 (en) | Multi-stage data recovery in a distributed storage network | |
CN109885256B (zh) | 一种基于数据分片的数据存储方法、设备及介质 | |
US9098447B1 (en) | Recovery of corrupted erasure-coded data files | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
US20160006461A1 (en) | Method and device for implementation data redundancy | |
US11210169B2 (en) | Data storage method, apparatus, and system | |
CN110089035B (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
US20200319973A1 (en) | Layered error correction encoding for large scale distributed object storage system | |
WO2023151290A1 (zh) | 一种数据编码方法、装置、设备及介质 | |
WO2023116238A1 (zh) | 基于纠删码的编码方法、分布式系统、设备及存储介质 | |
CN113687975B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN107153661A (zh) | 一种基于hdfs系统的数据的存储、读取方法及其装置 | |
US10331519B2 (en) | Application of secret sharing schemes at multiple levels of a dispersed storage network | |
US9098446B1 (en) | Recovery of corrupted erasure-coded data files | |
CN111381767B (zh) | 一种数据处理方法及装置 | |
CN115113816A (zh) | 一种纠删码数据处理系统、方法、计算机设备及介质 | |
WO2022198429A1 (zh) | 一种数据冗余备份方法、装置、存储介质及电子设备 | |
US20210218419A1 (en) | Method, device and apparatus for storing data, computer readable storage medium | |
CN112000509B (zh) | 一种基于向量指令的纠删码编码方法、系统及装置 | |
CN115269258A (zh) | 一种数据恢复的方法和系统 | |
CN114691414A (zh) | 一种校验块生成方法及一种数据恢复方法 | |
CN111541512A (zh) | 数据的处理方法、终端设备、可读存储介质 | |
CN107615248B (zh) | 分布式数据存储方法、控制设备和系统 | |
WO2024001876A1 (zh) | Rs译码硬件实现方法、电子设备及存储介质 |
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 |