CN111596861B - 数据存储方法和装置,数据恢复方法和装置 - Google Patents
数据存储方法和装置,数据恢复方法和装置 Download PDFInfo
- Publication number
- CN111596861B CN111596861B CN202010374341.0A CN202010374341A CN111596861B CN 111596861 B CN111596861 B CN 111596861B CN 202010374341 A CN202010374341 A CN 202010374341A CN 111596861 B CN111596861 B CN 111596861B
- Authority
- CN
- China
- Prior art keywords
- data
- stored
- blocks
- geometric sequence
- size
- 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/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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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]
Abstract
本申请涉及一种数据存储方法、数据恢复方法、数据存储装置和数据恢复装置。该数据存储方法包括:获取第一待存储对象;基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。这样,通过以几何序列的方式划分待存储对象并分别存储在预定大小的数据桶中,可以平衡恢复效率和读取延迟,从而提高数据恢复性能。
Description
技术领域
本发明总体地涉及分布式数据存储领域,特别是涉及一种数据存储方法、数据恢复方法、数据存储装置和数据恢复装置。
背景技术
诸如Haystack,Amazon S3之类的对象存储系统被广泛用于存储二进制大对象(BLOBS),包括照片,视频和文档。纠删码广泛用于这种可靠的分布式对象存储系统(例如,在Facebook,微软和阿里巴巴云)中,以便与副本相比以更低的存储成本实现可靠性。
在分布式的对象存储系统中,当节点发生故障时,系统必须调用恢复过程以恢复所需的冗余,并且由于需要重建所请求的数据,读取性能会降低。最近,各种纠删码,尤其是再生码相继被提出,以通过最小化恢复和降级读取所需的数据量的方式来提高恢复效率和读取性能。
纠删码的两个重要设计指标分别是恢复效率和降级读延迟,其中,恢复效率指的是系统在硬件资源限制下恢复其原始容错的速度。降级读延迟指的是在系统出现故障时用户感知的读取延迟。
由数据丢失而导致的重建所需的数据量(称为恢复成本)会影响恢复效率和降级读延迟。再生码是一系列特殊的纠删码,旨在最大限度地降低恢复成本。一些再生码,例如MSR编码(最小存储再生码),可以在理论上实现最佳的恢复成本,同时提供和其他纠删码相同的存储效率和可靠性保证。
因此,期望提供适于通过再生码恢复数据的改进的数据存储方案。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种数据存储方法、数据恢复方法、数据存储装置和数据恢复装置,其通过以几何序列的方式划分待存储对象并分别存储在预定大小的数据桶中,来平衡恢复效率和读取延迟,从而提高数据恢复性能。
根据本申请的一方面,提供了一种数据存储方法,包括:获取第一待存储对象;基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在上述数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:划分所述第一待存储对象的预定部分,所述预定部分的大小小于所述几何序列的第一项的值,且所述第一待存储对象除所述预定部分以外的大小为所述几何序列的第一项的值的倍数;以及,将所述预定部分存储在单独的数据桶中。
在上述数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:基于所述几何序列将所述第一待存储对象划分为多个块,且与所述几何序列的每项的值对应的块的数目大于或者等于一。
在上述数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:将所述第一待存储对象按照所述几何序列的每项的值划分为第一组一个或多个块;基于所述第一待存储对象除所述第一组一个或多个块以外的剩余部分的大小确定所述几何序列中的预定项,所述预定项是所述几何序列中小于所述剩余部分的大小的各项中的最大项;以及,将所述剩余部分按照贪心策略分别划分为与所述预定项对应的第二组一个或多个块。
在上述数据存储方法中,进一步包括:获取第二待存储对象;基于所述几何序列将所述第二待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在上述数据存储方法中,进一步包括:对与所述预定大小对应的数据桶分别进行编码以生成校验块。
根据本申请的另一方面,提供了一种数据恢复方法,包括:获取按照如上所述的数据存储方法存储的多个数据桶及其对应的校验块;以及,基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
在上述数据恢复方法中,基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据包括:恢复所述多个数据桶中的较小大小的数据桶的数据;将所恢复的数据返回给用户;以及,与所述数据返回并行地恢复所述多个数据桶中的较大大小的数据桶的数据。
根据本申请的再一方面,提供了一种数据存储装置,包括:获取单元,用于获取第一待存储对象;划分单元,用于基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,存储单元,用于将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在上述数据存储装置中,所述划分单元用于:划分所述第一待存储对象的预定部分,所述预定部分的大小小于所述几何序列的第一项的值,且所述第一待存储对象除所述预定部分以外的大小为所述几何序列的第一项的值的倍数;以及,所述存储单元用于将所述预定部分存储在单独的数据桶中。
在上述数据存储装置中,所述划分单元用于:基于所述几何序列将所述第一待存储对象划分为多个块,且与所述几何序列的每项的值对应的块的数目大于或者等于一。
在上述数据存储装置中,所述划分单元用于:将所述第一待存储对象按照所述几何序列的每项的值划分为第一组一个或多个块;以及,将所述第一待存储对象除所述第一组一个或多个块以外的剩余部分按照贪心策略分别划分为与所述几何序列的最大可能大小对应的第二组一个或多个块。
在上述数据存储装置中,所述获取单元进一步用于获取第二待存储对象;所述划分单元进一步用于基于所述几何序列将所述第二待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,所述存储单元进一步用于将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在上述数据存储装置中,进一步包括:校验单元,用于对与所述预定大小对应的数据桶分别进行编码以生成校验块。
根据本申请的又一方面,提供了一种数据恢复装置,包括:数据单元,用于获取由如上所述的数据存储装置存储的多个数据桶及其对应的校验块;以及,恢复单元,用于基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
在上述数据恢复装置中,所述恢复单元用于:恢复所述多个数据桶中的较小大小的数据桶的数据;将所恢复的数据返回给用户;以及,与所述数据返回并行地恢复所述多个数据桶中的较大大小的数据桶的数据。
根据本申请的再一方面,提供一种电子设备,包括:处理器;以及,存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如上所述的数据存储方法和如上所述的数据恢复方法。
根据本申请的又一方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被计算装置执行时,可操作来执行如上所述的数据存储方法和如上所述的数据恢复方法。
本申请提供的数据存储方法、数据恢复方法、数据存储装置和数据恢复装置,能够通过以几何序列的方式划分待存储对象并分别存储在预定大小的数据桶中,来平衡恢复效率和读取延迟,从而提高数据恢复性能。。
附图说明
从下面结合附图对本发明实施例的详细描述中,本发明的这些和/或其它方面和优点将变得更加清楚并更容易理解,其中:
图1图示了根据本申请实施例的数据存储方法的流程图。
图2图示了根据本申请实施例的数据存储方法的应用示例的示意图。
图3图示了根据本申请实施例的数据恢复方法的流程图。
图4图示了不同布局、块大小和再生码的恢复和降级读取性能的比较。
图5图示了几何划分和条带布局的降级读取延迟。
图6图示了几何划分和条带布局的I/O性能。
图7图示了根据本申请实施例的数据存储装置的框图。
图8图示了根据本申请实施例的数据恢复装置的框图。
图9图示了根据本申请实施例的电子设备的框图。
具体实施方式
下面,将参考附图详细描述根据本申请的示例实施例。显然,所描述的实施例仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解本申请不受这里描述的示例实施例的限制。
申请概述
如上所述,在数据恢复过程中,需要考虑恢复效率和读取延迟,但是恢复成本的最优不一定能提高恢复效率或降低读取延迟。这是因为在实际中,重建性能不仅取决于要检索的数据量,还取决于如何在系统中排布这些数据。在通过最小化恢复期间所需的数据量来优化恢复成本的同时,再生码倾向于引入复杂的细粒度数据段,从而产生碎片并导致分散的读取访问模式,进而导致恢复效率降低。并且,再生码通常与跳跃和耦合技术一起使用以减少不连续读取。这可能导致严重的读取放大,导致许多不必要的字节被读取。
也就是,当使用再生码时,对象存储系统通常选择单个块大小作为编码单元。然后在编码之前将对象拆分成块。块大小的选择对实际性能具有重大意义,即,需要平衡降级读延迟和恢复效率之间的权衡。当块大小很大时,小对象需要被打包在一起。这会导致读放大,因为重建是以块粒度进行的,这提高了读取延迟。另外,对于降级读,用一系列小块表示大对象可以减少用户感知的等待时间,因为每个小块可以被很快地快重建并返回。对于小的块大小,碎片和不连续读取(过多的磁盘寻道)将越来越成为问题,导致恢复效率降低。
因此,本申请的申请人发现,就恢复所需的数据量而言,理论上的最优性并未转化为实际中的最佳性能,这是由于碎片化和由此产生的读取不连续,过多的磁盘寻道和不必要的读放大导致的。再生码的设计通过引入具有更复杂相关性的更细粒度片段而加剧了碎片化程度。同时,由于对象的大小不同,恢复效率(吞吐量)和降级读性能(延迟)之间的权衡,使得编码的块大小的选择变得具有困难。
同时,本申请的申请人发现可以同时实现低降级读延迟和高恢复效率。根据对具有多个EB数据的云对象存储系统的调查,可以看到大对象对于恢复效率和降低的读取延迟都至关重要。这些大对象需要对它们进行划分,并为不同的部分采用不同的块大小和编码方案的方案。通过在每个对象中引入可变块大小,可以为每个对象获得大块和小块的好处,并优化恢复效率和降低的读取延迟。
因此,本申请的基本构思是对单个待存储对象进行基于几何序列的多个块大小的划分,并且将划分出来的相同大小的数据块存储在与该大小对应的数据桶中。
具体地,本申请提供的数据存储方法和数据存储装置首先获取第一待存储对象,然后基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积,最后,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
并且,本申请提供的数据恢复方法和数据恢复装置首先获取按照如上所述的数据存储方法存储的多个数据桶及其对应的校验块;然后基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
在本申请提供的数据存储方法和数据存储装置中,几何划分可以很好地解决提高恢复效率和降低读取延迟之间的权衡。具体地,在几何序列中较大的块大小可以通过有效的顺序读取来实现高恢复效率,而使用小块大小有助于降低降级读取的延迟。
在介绍了本申请的基本原理之后,下面将参考附图来具体介绍本申请的各种非限制性实施例。
示意性数据存储方法
图1图示了根据本申请实施例的数据存储方法的流程图。
如图1所示,根据本申请实施例的数据存储方法包括以下步骤。
步骤S110,获取第一待存储对象。如图2所示,所述第一待存储对象可以是图2中所示的用于存储的对象1。这里,图2图示了根据本申请实施例的数据存储方法的应用示例的示意图。
步骤S120,基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积。也就是,如图2所示,将对象1划分为基于几何序列的大小的多个块,比如4MB,8MB,16MB,32MB,64MB等。
这里,所述几何序列即是等比数列,其有两个预定义参数,s0和q,其中s0是所述几何序列的第一项的值,q是所述几何序列的公共比率。大小为S的对象可以由所述几何序列的组合表示,使得其中R=S mods0,ai是每个大小的块的数目,n是所划分出来的不同大小的数目。
步骤S130,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。这里,每个数据桶都是磁盘上的大文件,且如图2所示,可以包含来自不同对象的相同大小的块。并且,如上所述,这些数据桶所存储的块的大小构成一个几何序列,比如4MB,8MB,16MB,32MB,64MB。相应地,如果每个数据桶存储相同数目的数据块,则这些数据桶的大小也构成一个几何序列。
并且,如图2所示,对于每个数据桶,使用再生码进行编码以生成用于数据恢复的校验块。这样,通过对于单个待存储对象引入可变块大小的方案,很好地解决了再生码在实际数据恢复过程中的高恢复效率与低延时难以同时兼顾的问题。
在根据本申请实施例的数据存储方法中,由于要存储多个待存储对象,可能由大小小于块大小的读取请求引起读放大问题,而这些请求是由于缺少对象对齐带来的。对齐对象的一种简单方法是对具有完全相同大小的对象进行编码,但是,通常很难找到具有相同大小的足够对象(例如10个用于Clay(10,4)编码)。
因此,为了解决读放大问题,在本申请实施例中,切割每个对象的尾部。也就是,对于每个对象,减去它的一部分,使得该对象的剩余大小是s0的倍数,并将该部分放入一个被称为小型存储桶的单独存储桶中。这样,由于对象的剩余大小是s0的倍数,只要s0足够大(例如,4MB),就可以更容易地找到具有相同大小的块,因此可以消除对象的该部分的读取放大。
所述小型存储桶用于存储大小小于s0(例如,4MB)的块。小于s0的对象也会直接放入小型存储桶中。与其他存储桶不同,小型存储桶没有特定的存储桶大小,因此小型存储桶中的对象大小可能不同。在本申请实施例中,可以使用Reed-Solomon(RS)编码对小型桶进行编码,因此可以消除对小型存储桶的读放大。由于小型桶占用的空间小,因此小型桶恢复所产生的磁盘和网络流量很小,这意味着小型桶的存在对恢复效率影响不大。
值得注意的是,应该注意的是,RS编码是一个标量编码,可以保持编码的任何部分对齐。并且,例如,如果使用RS编码对1GB的块进行编码,则可以通过仅读取前1MB的相应部分而不是整个1GB来重建前1MB。
因此,在根据本申请实施例的数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:划分所述第一待存储对象的预定部分,所述预定部分的大小小于所述几何序列的第一项的值,且所述第一待存储对象除所述预定部分以外的大小为所述几何序列的第一项的值的倍数;以及,将所述预定部分存储在单独的数据桶中。
另外,进行对象划分以减少不连续性并启用流水线。具体地,为了提高恢复效率,应该减少子块的总数,从而减少系统中的块数。从理论上讲,对对象进行划分的最佳方法是不进行划分,这样系统的总块数就很少。但是,如果不进行划分,由于缺少流水线操作,大对象的降级读延迟会提高很多。
如上所述,在本申请实施例中,几何划分将经过尾部切割的对象分割成多个块,其大小形成几何数列,从s0开始。例如,32MB对象可以被划分为四个块,4MB,4MB,8MB和16MB。在恢复对象时,首先将4MB块返回给用户。后续块的再生可以与前一块的传输并行地处理。当传输速度慢于修复块时,降级的读取延迟可能接近传输时间。当传输速度更快时,流水线操作仍然可以帮助减少降低读延迟。
除了流水线操作的好处之外,几何序列的桶大小还允许大型对象将大部分数据放入具有大块大小的桶中,从而提高恢复效率。
但是,并非所有的划分都可以帮助流水线操作。例如,假设s0=4MB和q=2,则如果将20MB对象划分为4MB+16MB的两个块,则这两个块可能无法准确地流水线化,因为它们的大小差距很大导致延迟损失。
要解决这个问题,可以确保每个块的系数ai不为零,也就是,保证每个大小的块的数目均大于等于一。这样,如果每个块的系数不为零,则相邻块之间的大小差异将很小。
在本申请实施例中,每个块的系数可以通过两次扫描找到。第一次扫描减去每个桶的大小,直到剩余的大小太小而无法装入桶中。而后续扫描使用贪心策略,尝试选择最大可能的桶大小,直到无法填充桶。
例如,假设对象的大小为73.5MB,第一次扫描将对象拆分为4MB+8MB+16MB+32MB。剩下的大小是13.5M,那么其对应的集合序列中的最大的一项为8。那么,在第二次扫描中,按照贪心策略将剩下的大小分为8MB+4MB+1.5MB。因此,最终结果将是73.5MB=2×4MB+2×8MB+16MB+32MB+1.5MB。
本领域技术人员可以理解,在每次扫描过程中,取决于对象的大小,也可能每次扫描只获得一个块,例如如图2所示的对象3,其大小是5.6M,则第一次扫描将对象拆分出4M的块,然后在第二次扫描中,剩余部分的大小1.6M已经小于几何序列的第一项的值,因此也不再进行划分。
也就是,在根据本申请实施例的数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:基于所述几何序列将所述第一待存储对象划分为多个块,且与所述几何序列的每项的值对应的块的数目大于或者等于一。
并且,在上述数据存储方法中,基于几何序列将所述第一待存储对象划分为多个块包括:将所述第一待存储对象按照所述几何序列的每项的值划分为第一组一个或多个块;基于所述第一待存储对象除所述第一组一个或多个块以外的剩余部分的大小确定所述几何序列中的预定项,所述预定项是所述几何序列中小于所述剩余部分的大小的各项中的最大项;以及,将所述剩余部分按照贪心策略分别划分为与所述预定项对应的第二组一个或多个块。
如上所述,在这里,第一组块对应于第一次扫描将对象拆分出的块,其数目可以为一个,也可以为多个,并且,第二组块对应于第二次扫描将对象拆分出的块,其数目也可以为一个或多个。
并且,如上所述,根据本申请实施例的数据存储方法可以应用于多个待存储对象的存储。因此,根据本申请实施例的数据存储方法进一步包括:获取第二待存储对象;基于所述几何序列将所述第二待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
此外,为了进行数据恢复,如图2所示,对于每个数据桶以再生码进行编码,以生成用于恢复数据的校验块。实验证明,通过根据本申请实施例的数据存储方法,使用Clay码的恢复性能将提高到LRC恢复性能的1.30倍和RS编码恢复性能的1.85倍。
将在下文中关于根据本申请实施例的数据恢复方法进一步详细说明根据本申请实施例的数据存储方法对于恢复性能的改进。
示意性数据恢复方法
图3图示了根据本申请实施例的数据恢复方法的流程图。
如图3所示,根据本申请实施例的数据恢复方法包括:S210,获取按照如上所述的数据存储方法存储的多个数据桶及其对应的校验块;以及,S220,基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
如上所述,在根据本申请实施例的数据恢复方法中,采用流水线操作。也就是,基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据包括:恢复所述多个数据桶中的较小大小的数据桶的数据;将所恢复的数据返回给用户;以及,与所述数据返回并行地恢复所述多个数据桶中的较大大小的数据桶的数据。
图4图示了不同布局、块大小和再生码的恢复和降级读取性能的比较。如图4所示,连续布局的恢复性能取决于块大小的选择。如果具有足够大的块大小,则可以具有比几何划分更好的恢复性能,代价是更长的读取延迟降级。条带布局的性能还取决于块大小的选择,如果具有非常小的块大小,则恢复性能是不可接受的。当选择最大可能的块大小时,如Stripe-Max,恢复要好得多,但代价是降低了读取延迟。即便如此,Stripe-Max的恢复时间仍然比几何划分大1.37倍。
图5图示了几何划分和条带布局的降级读取延迟。如图5所示,几何划分和条带布局的降级读取延迟是相似的,几何划分的延迟略高于小对象的代价布局,因为条带布局更适合流水线操作,但条带布局的代价是降低了恢复效率。另一方面,与连续布局相比,几何划分可以大大减少读取延迟。
图6图示了几何划分和条带布局的I/O性能。如图6所示,在所有情况下,几何划分在I/O性能方面都优于条带布局。
这里,本领域技术人员可以理解,根据本申请实施例的数据恢复方法的其它细节与之前关于根据本申请实施例的数据存储方法所描述的相应细节完全相同,这里为了避免冗余便不再赘述。
示意性装置
图7图示了根据本申请实施例的数据存储装置的框图。
如图7所示,根据本申请实施例的数据存储装置300包括:获取单元310,用于获取第一待存储对象;划分单元320,用于基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,存储单元330,用于将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在一个示例中,在上述数据存储装置300中,所述划分单元320用于:划分所述第一待存储对象的预定部分,所述预定部分的大小小于所述几何序列的第一项的值,且所述第一待存储对象除所述预定部分以外的大小为所述几何序列的第一项的值的倍数;以及,所述存储单元330用于将所述预定部分存储在单独的数据桶中。
在一个示例中,在上述数据存储装置300中,所述划分单元320用于:基于所述几何序列将所述第一待存储对象划分为多个块,且与所述几何序列的每项的值对应的块的数目大于或者等于一。
在一个示例中,在上述数据存储装置300中,所述划分单元320用于:将所述第一待存储对象按照所述几何序列的每项的值划分为第一组一个或多个块;以及,将所述第一待存储对象除所述第一组一个或多个块以外的剩余部分按照贪心策略分别划分为与所述几何序列的最大可能大小对应的第二组一个或多个块。
在一个示例中,在上述数据存储装置300中,所述获取单元310进一步用于获取第二待存储对象;所述划分单元320进一步用于基于所述几何序列将所述第二待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及,所述存储单元330进一步用于将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
在一个示例中,在上述数据存储装置300中,进一步包括:校验单元,用于对与所述预定大小对应的数据桶分别进行编码以生成校验块。
图8图示了根据本申请实施例的数据恢复装置的框图。
如图8所示,根据本申请实施例的数据恢复装置400包括:数据单元410,用于获取由如上所述的数据存储装置300存储的多个数据桶及其对应的校验块;以及,恢复单元420,用于基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
在一个示例中,在上述数据恢复装置400中,所述恢复单元420用于:恢复所述多个数据桶中的较小大小的数据桶的数据;将所恢复的数据返回给用户;以及,与所述数据返回并行地恢复所述多个数据桶中的较大大小的数据桶的数据。
这里,本领域技术人员可以理解,上述数据存储装置300和数据恢复装置400中的各个单元和模块的具体功能和操作已经在上面参考图1到图6描述的数据存储方法和数据恢复方法中详细介绍,并因此,将省略其重复描述。
如上所述,根据本申请实施例的数据存储装置300和数据恢复装置400可以实现在各种终端设备中,例如用于分布式数据存储的存储服务器上。在一个示例中,根据本申请实施例的数据存储装置300和数据恢复装置400可以作为一个软件模块和/或硬件模块而集成到所述终端设备中。例如,该数据存储装置300和数据恢复装置400可以是该终端设备的操作系统中的一个软件模块,或者可以是针对于该终端设备所开发的一个应用程序;当然,该数据存储装置300和数据恢复装置400同样可以是该终端设备的众多硬件模块之一。
替换地,在另一示例中,该数据存储装置300和数据恢复装置400与该终端设备也可以是分立的终端设备,并且该数据存储装置300和数据恢复装置400可以通过有线和/或无线网络连接到该终端设备,并且按照约定的数据格式来传输交互信息。
示意性电子设备
下面,参考图9来描述根据本申请实施例的电子设备。
图9图示了根据本申请实施例的电子设备的框图。
如图9所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的数据存储方法和数据恢复方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如数据块、数据桶等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,该输入装置13可以是例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括存储结果和恢复结果等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图9中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示意性计算机程序产品
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的数据存储方法和数据恢复方法的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“,还语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的数据存储方法和数据恢复方法的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (8)
1.一种数据存储方法,其特征在于,包括:
获取第一待存储对象;
基于几何序列将所述第一待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及
将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中;
基于几何序列将所述第一待存储对象划分为多个块包括:
基于所述几何序列将所述第一待存储对象划分为多个块,且与所述几何序列的每项的值对应的块的数目大于或者等于一;
基于几何序列将所述第一待存储对象划分为多个块包括:
将所述第一待存储对象按照所述几何序列的每项的值划分为第一组一个或多个块;
基于所述第一待存储对象除所述第一组一个或多个块以外的剩余部分的大小确定所述几何序列中的预定项,所述预定项是所述几何序列中小于所述剩余部分的大小的各项中的最大项;以及
将所述剩余部分按照贪心策略分别划分为与所述预定项对应的第二组一个或多个块。
2.根据权利要求1所述的数据存储方法,其特征在于,基于几何序列将所述第一待存储对象划分为多个块包括:
划分所述第一待存储对象的预定部分,所述预定部分的大小小于所述几何序列的的第一项的值,且所述第一待存储对象除所述预定部分以外的大小为所述几何序列的的第一项的值的倍数;以及
将所述预定部分存储在单独的数据桶中。
3.根据权利要求1所述的数据存储方法,其特征在于,进一步包括:
获取第二待存储对象;
基于所述几何序列将所述第二待存储对象划分为多个块,每个块的大小为所述几何序列的第一项的值与公共比率的乘积;以及
将所述多个块中的预定大小的块分别存储在与所述预定大小对应的数据桶中。
4.根据权利要求1到3中任意一项所述的数据存储方法,其特征在于,进一步包括:
对与所述预定大小对应的数据桶以再生码进行编码以生成校验块。
5.一种数据恢复方法,其特征在于,包括:
获取按照如权利要求4所述的数据存储方法存储的多个数据桶及其对应的校验块;以及
基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据。
6.根据权利要求5所述的数据恢复方法,其特征在于,基于所述校验块和所述多个数据桶中的部分数据恢复所述多个数据桶中的数据包括:
恢复所述多个数据桶中的较小大小的数据桶的数据;
将所恢复的数据返回给用户;以及
与所述数据返回并行地恢复所述多个数据桶中的较大大小的数据桶的数据。
7.一种电子设备,包括:处理器;以及,存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如上权利要求1-4任一项所述的数据存储方法和/或权利要求5 到6 任一项所述的数据恢复方法。
8.一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被计算装置执行时,可操作来执行如上权利要求1-4任一项所述的数据存储方法和/或权利要求5到6任一项所述的数据恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010374341.0A CN111596861B (zh) | 2020-05-06 | 2020-05-06 | 数据存储方法和装置,数据恢复方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010374341.0A CN111596861B (zh) | 2020-05-06 | 2020-05-06 | 数据存储方法和装置,数据恢复方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111596861A CN111596861A (zh) | 2020-08-28 |
CN111596861B true CN111596861B (zh) | 2021-07-20 |
Family
ID=72185653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010374341.0A Active CN111596861B (zh) | 2020-05-06 | 2020-05-06 | 数据存储方法和装置,数据恢复方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111596861B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678160A (zh) * | 2012-08-30 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法和装置 |
CN104410897A (zh) * | 2014-12-11 | 2015-03-11 | 深圳市九洲电器有限公司 | 一种数据存储的方法和装置 |
CN107113324A (zh) * | 2015-11-28 | 2017-08-29 | 华为技术有限公司 | 数据备份装置及方法、系统 |
US10268539B2 (en) * | 2015-12-28 | 2019-04-23 | Intel Corporation | Apparatus and method for multi-bit error detection and correction |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102957493B (zh) * | 2011-08-18 | 2016-06-08 | 上海华为技术有限公司 | 内交织地址的处理方法、递推序列处理方法及其相关装置 |
CN104156283B (zh) * | 2014-08-27 | 2017-08-25 | 华为技术有限公司 | 数据恢复方法、装置及存储系统 |
CN110502365B (zh) * | 2019-07-11 | 2024-03-01 | 平安科技(深圳)有限公司 | 数据存储及恢复的方法、装置及计算机设备 |
-
2020
- 2020-05-06 CN CN202010374341.0A patent/CN111596861B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678160A (zh) * | 2012-08-30 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 一种存储数据的方法和装置 |
CN104410897A (zh) * | 2014-12-11 | 2015-03-11 | 深圳市九洲电器有限公司 | 一种数据存储的方法和装置 |
CN107113324A (zh) * | 2015-11-28 | 2017-08-29 | 华为技术有限公司 | 数据备份装置及方法、系统 |
US10268539B2 (en) * | 2015-12-28 | 2019-04-23 | Intel Corporation | Apparatus and method for multi-bit error detection and correction |
Also Published As
Publication number | Publication date |
---|---|
CN111596861A (zh) | 2020-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10410693B2 (en) | Multiprocessor system with independent direct access to bulk solid state memory resources | |
US9626374B2 (en) | Optimizing a partition in data deduplication | |
US9720841B2 (en) | Hardware managed compressed cache | |
US10114578B2 (en) | Solid state disk and data moving method | |
KR101862341B1 (ko) | 데이터 압축 기능을 갖는 데이터 저장 장치 | |
KR20150020137A (ko) | 가변 크기 플래시 변환 계층 | |
US8959522B2 (en) | Full exploitation of parallel processors for data processing | |
US11074124B2 (en) | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage | |
KR20110138076A (ko) | 데이터 저장 장치 및 그것의 쓰기 방법 | |
US10078646B2 (en) | Hardware efficient fingerprinting | |
KR20110124044A (ko) | 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버 | |
CN113687975A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111596861B (zh) | 数据存储方法和装置,数据恢复方法和装置 | |
CN108665940B (zh) | Ecc编码电路、解码电路以及存储器控制器 | |
US20230325101A1 (en) | Systems and methods for hybrid storage | |
US10365828B1 (en) | Techniques for efficiently organizing storage of compressed extents | |
KR20110138707A (ko) | 데이터 저장 장치 및 그것의 쓰기 방법 | |
US11782879B2 (en) | System and method for secure, fast communications between processors on complex chips | |
US20220075530A1 (en) | Method, device, and computer program product for rebuilding storage system | |
US11226740B2 (en) | Selectively performing inline compression based on data entropy | |
US11165440B1 (en) | Systems and methods for geometric partitioning in object storage | |
EP3051699B1 (en) | Hardware efficient rabin fingerprints | |
US11907068B2 (en) | Read request response for reconstructed data in a degraded drive | |
US11838034B2 (en) | System and method for blockchain data compaction | |
JP4773980B2 (ja) | 演算処理装置、及び演算処理方法 |
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 |