CN109814807B - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN109814807B CN109814807B CN201811624963.3A CN201811624963A CN109814807B CN 109814807 B CN109814807 B CN 109814807B CN 201811624963 A CN201811624963 A CN 201811624963A CN 109814807 B CN109814807 B CN 109814807B
- Authority
- CN
- China
- Prior art keywords
- data
- full
- original data
- original
- stripes
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种数据存储方法,包括:客户端将非满条带的原始数据发送至一个数据节点;在数据节点处将非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,非满条带的原始数据的个数小于N;写入M份的原始数据之后响应客户端。本发明的实施例在不降低可靠性的前提下,将N+M纠删码非满条带写转化为M+1副本的方式,这样可以大大降低N+M纠删码补齐所带来的额外开销,从而降低了写的延迟。对于小块随机写的应用程序有较大的性能提升,并且保持了可靠性。另外,本发明还公开了相应的数据存储装置。
Description
技术领域
本发明涉及数据存储技术领域,具体来说,涉及一种数据存储方法及装置。
背景技术
存储系统容错通常有数据备份和纠删码两种技术。使用备份技术带来的额外存储开销很大,导致存储成本非常高。随着信息系统规模的不断扩大,备份技术难以兼顾存储系统的空间利用率和容错能力的要求。相较之下,纠删码具有更高的空间利用率、更好的适应性和更高的可靠性。在分布式存储系统中,纠删码技术将原始数据进行编码得到冗余,并将原始数据和冗余存储起来,从而达到容错效果。当前纠删码技术的研究主要包括RS类编码、再生码、局部冗余编码、高性能新型编码方式等几个方面。
(1)RS类编码
RS码因其简单的编解码方式和灵活的参数选择被广泛应用于实际系统中,如Google、Facebook和Microsoft旗下的存储系统。虽然RS码可以在维持与副本方式同等可靠性的前提下大大减少存储开销,但其在数据修复阶段需要大量的数据读取、传输等开销。许多纠删码策略在RS基础进行了改进。Rotated-RS编码方式通过使用一些数据块在解码时重复使用来减少修复过程中数据的读取和网络传输量。Z-code的编码在数据修复方面的网络带宽传输量和磁盘开销都可以达到再生码的最优权衡,但该编码方式极大地牺牲了可靠性。
(2)再生码
针对纠删码节点修复需要消耗大量的网络带宽问题,Dimakis等人基于网络编码提出了优化修复带宽的再生码,在修复失效节点时,取较多的节点参与修复过程,且参与修复的节点首先会通过编码向量等在本地首先进行线性组合再传输,降低了维持系统可靠性所需要的存储开销和节点修复所需的带宽开销。再生码相较于RS码大大减少了单错修复的数据开销。
Rashmi等提出了一个名为MISER的再生码,该编码利用干扰对齐方式保证了数据信息的再生。但是其校验信息的修复是产生了全新的校验数据。Exact-Repair MSR方法通过干扰对齐方式确保了所有节点信息都可以精确地恢复。不过,这两种方式和最新提出的PM-RBT都是必须要求校验节点个数大于数据节点个数(存储开销大于2X),数据的有效存储率较低,不具备实用性。FMSR是功能性修复的一种,且其不是系统码,只保存编码后的校验节点信息,所以要获取有效数据都需要进行高额的计算开销。Butterfly codes是可以应用在2X存储开销之下的系统再生码,数据丢失后可以精确修复,不会产生额外计算开销。但该编码方式只能容两个错,而这在现在的分布式系统中是完全不够用的,难以维持系统的高可靠性。所以总的来说再生码因其不同的局限性而难以被应用到实际系统中。
(3)局部冗余编码(LRC)
Facebook的LRC(Local Repairable Code)采用LRC(16,6,5)编码,其中使用CRS(14,4)来保障任意4块故障,同时增加了2块局部的校验块,从而使任意单块故障的修复成本由10降到5。微软的LRC也是通过增加局部校验块来提高单块故障的重构效率。富士通的Shec实现了多硬盘LRC,提出了局部校验组的概念,并相互遮掩来提高多块故障的重构效率。HACFS系统则利用了局部重建码的特点,在系统内部使用同一编码系列的两组不同编码参数。因为编码结构相似,所以可以动态地根据工作负载转换编码需求。快编码可以提供较为快速的重建修复,紧凑编码可以提供较为小的存储开销。
(4)新型高性能编码方式
SD编码考虑潜在扇区故障(latent sector failure)和SSD块的故障,设计能够同时容忍磁盘和扇区(或SSD块)的纠删码。Product-matrix-MSR编码能够同时优化磁盘IO、存储成本和网络传输带宽,将网络流量和IO从16*6=96M减少为2.7*11=29.7M,已经很接近单个数据块的大小16M。Hitchhicker提出了一种新的编码方式,将一个CRS编码条带划分为两个相关子条带来提升恢复性能。将Rozofs with MT用于IO密集应用,证实了纠删码用于IO密集型应用场景的可行性(如视频编辑)。
N+M纠删码方法是指:对N个原始数据块,经过编码后,产生N+M个编码数据块,其中包含M个冗余数据块,获取其中的任何N个编码数据块之后,都可恢复原来的N个原始数据块。从上述描述可知,每次的写操作需要凑齐N个数据块才能计算出M个冗余数据块,当应用程序的写操作块比较大时,N个数据块直接来自于应用程序即可。但是,当应用程序每次只写小于N个数据块时,需要从存储端补齐读出其他的数据块才能计算出M个冗余数据块。这样对于小块的写操作延迟比较大。
针对小块的写操作延迟比较大的技术问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中针对小块的写操作延迟较大的问题,本发明提出一种数据存储和装置,能够减小写操作延迟。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据存储方法,包括:
客户端将非满条带的原始数据发送至一个数据节点;
在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N;
写入M份的所述原始数据之后响应所述客户端。
在一些实施例中,所述数据存储方法还包括:
如果后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据,并将N+M个数据分别发送到原先的各个数据节点。
在一些实施例中,所述数据存储方法还包括:
如果后续没有数据到达,则从底层存储设备中补齐相关数据再计算校验数据。
在一些实施例中,在从底层存储设备中补齐相关数据再计算校验数据的步骤之后,包括:
删除所述M份的副本,以为缓存其他数据提供空间。
根据本发明的另一方面,提供了一种数据存储装置,包括:
第一发送模块,用于客户端将非满条带的原始数据发送至一个数据节点;
复制发送模块,用于在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N;
响应模块,用于在写入M份的所述原始数据之后响应所述客户端。
在一些实施例中,所述数据存储装置还包括:
第一计算模块,用于当后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据;
第二发送模块,用于将N+M个数据分别发送到原先的各个数据节点。
在一些实施例中,所述数据存储装置还包括:
补齐模块,用于当后续没有数据到达时,从底层存储设备中补齐相关数据;
第二计算模块,用于计算出校验数据。
在一些实施例中,所述数据存储装置还包括:
删除模块,用于删除所述M份的副本,以为缓存其他数据提供空间。
本发明的实施例在不降低可靠性的前提下,将N+M纠删码非满条带写转化为M+1副本的方式,这样可以大大降低N+M纠删码补齐所带来的额外开销,从而降低了写的延迟。对于小块随机写的应用程序有较大的性能提升,并且保持了可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的满条带纠删码的存储方法;
图2是根据本发明实施的数据存储方法的流程图;
图3是根据本发明实施例的满条带纠删码的存储方法;
图4是根据本发明实施的数据存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
纠删码有多种配比,不同的配比支持的可靠性不同,一般用户会根据数据的重要性来选择。如果定义N表示原始数据的个数、M表示校验数据的个数,那么M=2表示任意两份数据被破坏都能根据纠删码计算出原始数据来。在写原始用户数据的时候,数据节点需要根据原始数据N计算出M份校验数据,然后分别存到各自的节点上的硬盘里。如图1所示是客户端以N=4、M=2的配比写数据到数据节点,并且N份数据是完整的,只需要进行纠删码计算即可。
具体的是,客户端通过文件中记录的元数据信息找到文件所对应的数据节点D1,然后将数据发过去。由于原始数据是满条带的,所以直接在这个节点上计算出M份校验数据,然后将N+M份数据分发到各个数据节点上,其中一份存入本节点。只需要放入各节点的内存中即可返回,这样客户端的延迟将会大大减少。这N+M个节点任意坏M个都不会导致数据丢失。
以上是最简单的情况,实际使用过程中远比这个复杂,特别是随机写的应用程序,到达数据节点的数据一般不是满条带的,这样如果计算校验就需要从硬盘中读出其他数据补全然后再计算,对于客户端来说延迟较长。跟硬盘阵列比起来差距明显,无法满足用户的需求。所以,非满条带写的性能将成为系统性能的瓶颈。
为此,如图2所示,本申请提出一种数据存储方法来解决这个问题。具体方法包括:
S101:客户端将非满条带的原始数据发送至一个数据节点。
S102:在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N。
S103:写入M份的所述原始数据之后响应所述客户端。
基于以上的实施例,如图3所示,客户端只向数据节点D1发送了条带的一部分内容(比如随机4K或者8K的写数据),这时为了保证N+M的语义(M份数据丢失不影响数据的可靠性),将原始数据形成M+1份数据存入各个节点,这样在M份数据损坏的情况下仍能保证数据本身不丢失(还有一份数据存在某个数据节点)。在M+1份数据写到各自节点的内存中后就可以响应客户端,所以,可以做到非满条带的性能和满条带的性能一致。
因此,本申请所提供的实施例可以在不降低可靠性的前提下,将N+M纠删码非满条带写转化为M+1副本的方式,这样可以大大降低N+M纠删码补齐所带来的额外开销,从而降低了写的延迟。对于小块随机写的应用程序有较大的性能提升,并且保持了可靠性。
在一些实施例中,如果后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据,并将N+M个数据分别发送到各个数据节点。
在一些实施例中,如果后续没有数据到达,则从底层存储设备中补齐相关数据再计算校验数据。
在一些实施例中,在从底层存储设备中补齐相关数据再计算校验数据的步骤之后,包括:删除所述M份的副本,以为缓存其他数据提供空间。而且,由于后续的补齐操作不在正常写流程内,所以不影响延迟,只要在一定时间内将其补齐读出即可。
另一方面,参见图4,根据本发明的实施例,提供了一种数据存储装置,包括:
第一发送模块10,用于客户端将非满条带的原始数据发送至一个数据节点;
复制发送模块12,用于在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N;
响应模块14,用于在写入M份的所述原始数据之后响应所述客户端。
因此,本申请所提供的实施例可以在不降低可靠性的前提下,将N+M纠删码非满条带写转化为M+1副本的方式,这样可以大大降低N+M纠删码补齐所带来的额外开销,从而降低了写的延迟。对于小块随机写的应用程序有较大的性能提升,并且保持了可靠性。
在一些实施例中,所述数据存储装置还包括:
第一计算模块,用于当后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据;
第二发送模块,用于将N+M个数据分别发送到各个数据节点。
在一些实施例中,所述数据存储装置还包括:
补齐模块,用于当后续没有数据到达时,从底层存储设备中补齐相关数据;
第二计算模块,用于计算出校验数据。
在一些实施例中,所述数据存储装置还包括:
删除模块,用于删除所述M份的副本,以为缓存其他数据提供空间。
综上所述,借助于本发明的上述技术方案,本申请对小块随机写的应用程序有较大的性能提升,降低了写的延迟。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种数据存储方法,其特征在于,包括:
客户端将非满条带的原始数据发送至一个数据节点;
在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N;
写入M份的所述原始数据之后响应所述客户端,
如果后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据,并将N+M个数据分别发送到原先的各个数据节点,
如果后续没有数据到达,则从底层存储设备中补齐相关数据再计算校验数据。
2.根据权利要求1所述的数据存储方法,其特征在于,在从底层存储设备中补齐相关数据再计算校验数据的步骤之后,包括:
删除所述M份的副本,为缓存其他数据提供空间。
3.一种数据存储装置,其特征在于,包括:
第一发送模块,用于客户端将非满条带的原始数据发送至一个数据节点;
复制发送模块,用于在所述数据节点处将所述非满条带的原始数据额外复制M份并发送至其他M个数据节点,从而将N+M纠删码在非满条带时转为M+1副本存储,其中,N表示满条带时原始数据的个数,M表示校验数据的个数,所述非满条带的原始数据的个数小于N;
响应模块,用于在写入M份的所述原始数据之后响应所述客户端,
第一计算模块,用于当后续写入的数据和所述非满条带的原始数据组成N个数据的满条带,则计算出M个校验数据;
第二发送模块,用于将N+M个数据分别发送到原先的各个数据节点;
补齐模块,用于当后续没有数据到达时,从底层存储设备中补齐相关数据;
第二计算模块,用于计算出校验数据。
4.根据权利要求3所述的数据存储装置,其特征在于,所述数据存储装置还包括:
删除模块,用于删除所述M份的副本,为缓存其他数据提供空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624963.3A CN109814807B (zh) | 2018-12-28 | 2018-12-28 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811624963.3A CN109814807B (zh) | 2018-12-28 | 2018-12-28 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814807A CN109814807A (zh) | 2019-05-28 |
CN109814807B true CN109814807B (zh) | 2022-05-06 |
Family
ID=66602715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811624963.3A Active CN109814807B (zh) | 2018-12-28 | 2018-12-28 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814807B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347344A (zh) * | 2019-07-19 | 2019-10-18 | 北京计算机技术及应用研究所 | 一种基于分布式存储系统的自动配置块存储方法 |
CN113835637A (zh) * | 2020-03-19 | 2021-12-24 | 北京奥星贝斯科技有限公司 | 一种数据的写入方法、装置以及设备 |
CN111858126B (zh) * | 2020-07-29 | 2022-07-22 | 苏州浪潮智能科技有限公司 | 一种基于k+m纠删集群的数据处理方法及装置 |
CN112364294B (zh) * | 2020-10-27 | 2022-12-27 | 中国核动力研究设计院 | 堆芯数值计算矩阵的自动转换方法、装置、设备及介质 |
CN113568580A (zh) * | 2021-07-29 | 2021-10-29 | 广州市品高软件股份有限公司 | 分布式存储系统的实现方法、装置、介质及存储系统 |
CN115437581B (zh) * | 2022-11-08 | 2023-03-24 | 浪潮电子信息产业股份有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN117420969B (zh) * | 2023-12-19 | 2024-04-16 | 中电云计算技术有限公司 | 一种分布式数据存储方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503706A (zh) * | 2014-12-23 | 2015-04-08 | 中国科学院计算技术研究所 | 一种基于磁盘阵列的数据存储及读取方法 |
CN104571959A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业股份有限公司 | 数据处理方法和装置 |
CN104731526A (zh) * | 2015-03-17 | 2015-06-24 | 中国科学院计算技术研究所 | 一种不满条带写的方法及装置 |
-
2018
- 2018-12-28 CN CN201811624963.3A patent/CN109814807B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503706A (zh) * | 2014-12-23 | 2015-04-08 | 中国科学院计算技术研究所 | 一种基于磁盘阵列的数据存储及读取方法 |
CN104571959A (zh) * | 2014-12-31 | 2015-04-29 | 曙光信息产业股份有限公司 | 数据处理方法和装置 |
CN104731526A (zh) * | 2015-03-17 | 2015-06-24 | 中国科学院计算技术研究所 | 一种不满条带写的方法及装置 |
Non-Patent Citations (1)
Title |
---|
多重条带布局的混合RAID系统研究;蔡杰明等;《小型微型计算机系统》;20170531;第1143页-第1151页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109814807A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814807B (zh) | 一种数据存储方法及装置 | |
CN111149093B (zh) | 分布式存储系统的数据编码、解码及修复方法 | |
CN107885612B (zh) | 数据处理方法和系统及装置 | |
US8433685B2 (en) | Method and system for parity-page distribution among nodes of a multi-node data-storage system | |
US11307776B2 (en) | Method for accessing distributed storage system, related apparatus, and related system | |
US20170060686A1 (en) | Intelligent read strategy within a dispersed storage network (dsn) | |
CN110442535B (zh) | 提高分布式固态盘键值缓存系统可靠性的方法及系统 | |
WO2014056381A1 (zh) | 数据冗余实现方法及装置 | |
CN109491835B (zh) | 一种基于动态分组码的数据容错方法 | |
CN110515541B (zh) | 分布式存储中纠删码非对齐数据更新方法 | |
CN103944981A (zh) | 一种基于纠删码技术改进的云存储系统及实现方法 | |
CA2715967C (en) | Video media data storage system and related methods | |
CN110427156B (zh) | 一种基于分片的mbr的并行读方法 | |
JP2018508073A (ja) | データ除去、割り当て、及び再構築 | |
US11748009B2 (en) | Erasure coding with overlapped local reconstruction codes | |
CN105530294A (zh) | 一种海量数据分布式存储的方法 | |
WO2011015134A1 (zh) | 多磁盘容错系统及生成校验块、恢复数据块的方法 | |
CN103761195A (zh) | 一种利用分布式数据编码的存储方法 | |
CN114816837A (zh) | 一种纠删码融合方法、系统、电子设备及存储介质 | |
CN109358980A (zh) | 一种对数据更新和单磁盘错误修复友好的raid6编码方法 | |
CN113377569A (zh) | 用于恢复数据的方法、设备和计算机程序产品 | |
CN103605582A (zh) | 一种基于写重定向的纠删码存储重构优化方法 | |
CN114237971A (zh) | 一种基于分布式存储系统的纠删码编码布局方法及系统 | |
CN112000278B (zh) | 一种热数据存储的自适应局部重构码设计方法及云存储系统 | |
US8316258B2 (en) | System and method for error detection in a data storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220722 Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing Patentee after: Dawning Information Industry (Beijing) Co.,Ltd. Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd. Address before: 100193 No. 36 Building, No. 8 Hospital, Wangxi Road, Haidian District, Beijing Patentee before: Dawning Information Industry (Beijing) Co.,Ltd. |