CN107341070B - 一种基于纠删码的随机写方法及系统 - Google Patents
一种基于纠删码的随机写方法及系统 Download PDFInfo
- Publication number
- CN107341070B CN107341070B CN201710519600.2A CN201710519600A CN107341070B CN 107341070 B CN107341070 B CN 107341070B CN 201710519600 A CN201710519600 A CN 201710519600A CN 107341070 B CN107341070 B CN 107341070B
- Authority
- CN
- China
- Prior art keywords
- data
- random
- file
- writing
- random write
- 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
- 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
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1028—Distributed, i.e. distributed RAID systems with parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1095—Writes number reduction, i.e. reducing the number of writes in a RAID array with parity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于纠删码的随机写方法及系统,首先生成随机写文件并唯一标示随机写文件,设置随机写文件的文件数据安全级别;输入随机写文件中随机写数据,根据纠删码和文件数据安全级别将输入的随机写数据条带化,计算随机写数据大小、随机写偏移;获取本次随机写所跨越的条带列表;计算各条带的需要更新的数据存储单元的范围,更新范围内的各数据存储单元;异步重新计算并写入随机写文件更新的所有条带的校验数据。有益效果:在对条带的数据存储单元进行数据写入时,只需要更新部分数据存储单元,不需要将整个条带的数据读取出来进行更新,减少了计算负担;通过异步重新计算校验数据解决了随机写放大问题。
Description
技术领域
本发明涉及数据存储技术领域,尤其是涉及一种基于纠删码的随机写方法及系统。
背景技术
在常规的云存储项目中,用户数据往往只保存一个副本,若发生机器故障,很容易造成用户数据的丢失,而目前网络raid可以做到在节约用户成本的基础上,对用户的数据进行跨节点保护,目前常见的网络raid的实现方式主要是基于纠删码技术(erasure code技术,简称EC)。而EC技术主要是将用户的数据进行条带化,之后为该条带计算相应的校验数据,若此时需要更新已经写入的条带数据时,需要将整个条带的数据读取出来,在重新计算校验数据,这对后端存储的网络压力会造成巨大影响。
如用户数据对应的安全级别为4+2,若用户需要更新条带中的一个字节的数据,后端存储需要读取6MB的数据,然后找出本次需要更新数据的位置,并进行更新,之后重新计算条带的校验数据,并将这6MB的数据写入存储设备中,此过程将用户的写数据放大了6291456倍。正是由于该原因,很多厂家提供出去的网络raid接口根本不支持随机写,那么基于EC,如何实现随机写,成为了一个难题。
发明内容
本发明的目的在于克服上述技术不足,提出一种基于纠删码的随机写方法及系统,解决现有技术中的上述技术问题。
为达到上述技术目的,本发明的技术方案提供一种基于纠删码的随机写方法,包括:
S1、生成随机写文件并唯一标示随机写文件,设置随机写文件的文件数据安全级别;S2、输入随机写文件中的部分随机写数据,根据纠删码和文件数据安全级别将输入的随机写数据条带化,条带由数据存储单元组成,计算随机写数据大小、随机写偏移;
S3、根据随机写数据大小、随机写偏移获取本次随机写所跨越的条带列表;
S4、计算本次随机写所跨越的条带列表中各条带的需要更新的数据存储单元的范围,更新范围内的各数据存储单元,将更新的数据存储单元的数据进行分布式云存储并将存储的位置更新到数据库;
S5、用户再次输入随机写文件中的部分随机写数据,则重复执行步骤S2-S4,直到随机写文件的所有随机写数据输入完毕;
S6、随机写文件的所有随机写数据输入完毕后,异步重新计算并写入随机写文件更新的所有条带的校验数据。
本发明还提供一种基于纠删码的随机写系统,包括:
随机写文件设置模块:生成随机写文件并唯一标示随机写文件,设置随机写文件的文件数据安全级别;
随机写数据输入模块:输入随机写文件中的部分随机写数据,根据纠删码和文件数据安全级别将输入的随机写数据条带化,条带由数据存储单元组成,计算随机写数据大小、随机写偏移;
条带列表获取模块:根据随机写数据大小、随机写偏移获取本次随机写所跨越的条带列表;
数据存储单元写入模块:计算本次随机写所跨越的条带列表中各条带的需要更新的数据存储单元的范围,更新范围内的各数据存储单元,将更新的数据存储单元的数据进行分布式云存储并将存储的位置更新到数据库;
循环模块:用户再次输入随机写文件中的部分随机写数据,则重复执行随机写数据输入模块、条带列表获取模块、数据存储单元写入模块的操作,直到随机写文件的所有随机写数据输入完毕;
校验数据重新计算模块:随机写文件的所有随机写数据输入完毕后,异步重新计算并写入随机写文件更新的所有条带的校验数据。
与现有技术相比,本发明的有益效果包括:基于纠删码进行随机写操作,在对条带的数据存储单元进行数据写入时,只需要更新部分数据存储单元,不需要将整个条带的数据读取出来进行更新,减少了计算负担,提高了计算效率;同时,通过异步重新计算校验数据解决了随机写放大问题。
附图说明
图1是本发明提供的一种基于纠删码的随机写方法流程图;
图2是本发明提供的一种基于纠删码的随机写系统结构框图。
附图中:1、基于纠删码的随机写系统,11、随机写文件设置模块,12、随机写数据输入模块,13、条带列表获取模块,14、数据存储单元写入模块,15、循环模块,16、校验数据重新计算模块。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的实施例中,基于纠删码技术建立条带(Stripe)和条带管理者(StripeManager),条带管理者负责管理用户数据对应的条带,并将计算任务、编码任务下发给编码器;建立编码器(Encoder),负责执行编码任务或计算任务;建立数据存储服务(StoragerService),负责将接收到的数据进行分布式云存储;条带(Stripe)由数据存储单元(UNIT)组成,一个UNIT默认为大小为32KB。
本发明的实施例中,提供一种基于纠删码的随机写方法,包括:
S1、客户端向Encoder请求随机写操作,生成随机写文件并唯一标示随机写文件,设置随机写文件的文件数据安全级别,唯一标示随机写文件后,生成随机写文件的唯一标示信息;唯一标示随机写文件的方法可以为:利用文件名或文件key值或文件唯一hash值标示随机写文件,以便于随机写文件的查找和使用,对应的,标示随机写文件后生成随机写文件的唯一标示信息为:文件名信息或文件key值信息或文件唯一hash值信息。
S2、Encoder将随机写文件的唯一标示信息、文件数据安全级别等参数发送至StripeManager;
S3、StripeManager将随机写文件的唯一标示信息、文件数据安全级别等参数存储到数据库中,并返回Encoder成功;
S4、Encoder返回客户端随机写打开成功;
S5、用户在客户端输入随机写文件中的部分随机写数据,计算随机写数据大小、随机写偏移,并将随机写数据、随机写数据大小、随机写偏移发送给Encoder;
S6、Encoder根据随机写数据大小、随机写偏移向StripeManager获取本次随机写所跨越的条带列表;
S7、Encoder根据StripeManager返回的条带列表,判断StripeManager是否返回了本次需要更新所跨越的所有条带,若只返回部分,则由Encoder将条带信息补全;
S8、Encoder计算本次随机写所跨越的条带列表中各条带的需要更新的数据存储单元(unit)的范围,用S5中用户输入的随机写数据更新范围内的各数据存储单元(unit),将更新的数据存储单元(unit)数据发送至StorageService中进行存储;
S9、Encoder等所有的StorageService返回存储结果之后,将更新后的unit所在的StorageService的位置信息通知给StripeManager,StripeManager将这些信息更新到数据库,并返回Encoder成功;
S10、Encoder返回客户端本次随机写成功;
S11、用户再次在客户端输入随机写文件中的部分随机写数据,则重复执行步骤S5-S10,直到随机写文件的所有随机写数据输入完毕;
S12、随机写文件的所有随机写数据输入完毕后,客户端通知Encoder随机写完成,Encoder通知StripeManager随机写完成,StripeManager为该随机写文件更新的所有条带生成重新计算校验数据的任务,异步重新计算并写入随机写文件更新的所有条带的校验数据,并返回Encoder成功,Encoder返回客户端成功;
S13、整个随机写操作完成。
本发明所述的基于纠删码的随机写方法,步骤S1中:
文件数据安全级别设置为N+M级别,N表示组成一个条带的数据存储单元个数,M表示不发生数据丢失的前提下一个条带允许同时发生故障的数据存储单元个数。
本发明所述的基于纠删码的随机写方法,步骤S12中异步重新计算并写入随机写文件更新的所有条带的校验数据的步骤为:
将重新计算并写入随机写文件更新的所有条带的校验数据的任务均匀分发给不同编码器(Encoder),编码器(Encoder)接受任务后获取条带数据并根据获取的条带数据重新计算条带的校验数据,重新计算条带的校验数据完成后,将重新计算出的校验数据写到StorageService中,写入完成之后通知StripeManager任务执行成功,StripeManager更新本地数据库中条带信息。
本发明还提供一种基于纠删码的随机写系统1,包括:
随机写文件设置模块11:生成随机写文件并唯一标示随机写文件,设置随机写文件的文件数据安全级别;
随机写数据输入模块12:输入随机写文件中的部分随机写数据,根据纠删码和文件数据安全级别将输入的随机写数据条带化,条带由数据存储单元组成,计算随机写数据大小、随机写偏移;
条带列表获取模块13:根据随机写数据大小、随机写偏移获取本次随机写所跨越的条带列表;
数据存储单元写入模块14:计算本次随机写所跨越的条带列表中各条带的需要更新的数据存储单元的范围,更新范围内的各数据存储单元,将更新的数据存储单元的数据进行分布式云存储并将存储的位置更新到数据库;
循环模块15:用户再次输入随机写文件中的部分随机写数据,则重复执行随机写数据输入模块、条带列表获取模块、数据存储单元写入模块的操作,直到随机写文件的所有随机写数据输入完毕;
校验数据重新计算模块16:随机写文件的所有随机写数据输入完毕后,异步重新计算并写入随机写文件更新的所有条带的校验数据。
本发明所述的基于纠删码的随机写系统1,随机写文件设置模块11中:
唯一标示随机写文件后,生成随机写文件的唯一标示信息,将随机写文件的唯一标示信息、文件数据安全级别存储入数据库。
本发明所述的基于纠删码的随机写系统1,随机写文件设置模块11中:
文件数据安全级别设置为N+M级别,N表示组成一个条带的数据存储单元个数,M表示不发生数据丢失的前提下一个条带允许同时发生故障的数据存储单元个数。
本发明所述的基于纠删码的随机写系统1,条带列表获取模块13中:
获取本次随机写所跨越的条带列表后,判断获取的条带列表是否完整,如果不完整则将条带列表补充完整。
本发明所述的基于纠删码的随机写系统1,校验数据重新计算模块16中:
将重新计算并写入随机写文件更新的所有条带的校验数据的任务均匀分发给不同编码器,编码器接受任务后获取条带数据并根据获取的条带数据重新计算条带的校验数据,重新计算条带的校验数据完成后,写入重新计算出的条带的校验数据。
与现有技术相比,本发明的有益效果包括:基于纠删码进行随机写操作,在对条带的数据存储单元进行数据写入时,只需要更新部分数据存储单元,不需要将整个条带的数据读取出来进行更新,减少了计算负担,提高了计算效率;同时,通过异步重新计算校验数据解决了随机写放大问题。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
Claims (8)
1.一种基于纠删码的随机写方法,其特征在于,包括:
S1、生成随机写文件并唯一标示所述随机写文件,设置所述随机写文件的文件数据安全级别;
S2、输入所述随机写文件中的部分随机写数据,根据纠删码和所述文件数据安全级别将输入的随机写数据条带化,条带由数据存储单元组成,计算随机写数据大小、随机写偏移;
S3、根据所述随机写数据大小、所述随机写偏移获取本次随机写所跨越的条带列表;
S4、计算本次随机写所跨越的所述条带列表中各条带的需要更新的数据存储单元的范围,用S2中输入的随机写数据更新范围内的各数据存储单元,将更新的数据存储单元的数据进行分布式云存储并将存储的位置更新到数据库;
S5、用户再次输入所述随机写文件中的部分随机写数据,则重复执行步骤S2-S4,直到所述随机写文件的所有随机写数据输入完毕;
S6、所述随机写文件的所有随机写数据输入完毕后,异步重新计算并写入随机写文件更新的所有条带的校验数据;
步骤S6中异步重新计算并写入随机写文件更新的所有条带的校验数据的步骤为:
将重新计算并写入随机写文件更新的所有条带的校验数据的任务均匀分发给不同编码器,所述编码器接受任务后获取条带数据并根据获取的条带数据重新计算条带的校验数据,重新计算条带的校验数据完成后,写入重新计算出的条带的校验数据。
2.如权利要求1所述的基于纠删码的随机写方法,其特征在于,步骤S1中:
唯一标示所述随机写文件后,生成所述随机写文件的唯一标示信息,将所述随机写文件的所述唯一标示信息、所述文件数据安全级别存储入数据库。
3.如权利要求1所述的基于纠删码的随机写方法,其特征在于,步骤S1中:
所述文件数据安全级别设置为N+M级别,N表示组成一个条带的数据存储单元个数,M表示不发生数据丢失的前提下一个条带允许同时发生故障的数据存储单元个数。
4.如权利要求1所述的基于纠删码的随机写方法,其特征在于,步骤S3中:
获取本次随机写所跨越的所述条带列表后,判断获取的所述条带列表是否完整,如果不完整则将所述条带列表补充完整。
5.一种基于纠删码的随机写系统,其特征在于,包括:
随机写文件设置模块:生成随机写文件并唯一标示所述随机写文件,设置所述随机写文件的文件数据安全级别;
随机写数据输入模块:输入所述随机写文件中的部分随机写数据,根据纠删码和文件数据安全级别将输入的随机写数据条带化,条带由数据存储单元组成,计算随机写数据大小、随机写偏移;
条带列表获取模块:根据所述随机写数据大小、所述随机写偏移获取本次随机写所跨越的条带列表;
数据存储单元写入模块:计算本次随机写所跨越的所述条带列表中各条带的需要更新的数据存储单元的范围,用随机写数据输入模块中输入的随机写数据更新范围内的各数据存储单元,将更新的数据存储单元的数据进行分布式云存储并将存储的位置更新到数据库;
循环模块:用户再次输入所述随机写文件中的部分随机写数据,则重复执行随机写数据输入模块、条带列表获取模块、数据存储单元写入模块的操作,直到所述随机写文件的所有随机写数据输入完毕;
校验数据重新计算模块:所述随机写文件的所有随机写数据输入完毕后,异步重新计算并写入随机写文件更新的所有条带的校验数据;
校验数据重新计算模块中:
将重新计算并写入所述随机写文件更新的所有条带的校验数据的任务均匀分发给不同编码器,所述编码器接受任务后获取条带数据并根据获取的条带数据重新计算条带的校验数据,重新计算条带的校验数据完成后,写入重新计算出的条带的校验数据。
6.如权利要求5所述的基于纠删码的随机写系统,其特征在于,随机写文件设置模块中:
唯一标示所述随机写文件后,生成所述随机写文件的所述唯一标示信息,将所述随机写文件的所述唯一标示信息、所述文件数据安全级别存储入数据库。
7.如权利要求5所述的基于纠删码的随机写系统,其特征在于,随机写文件设置模块中:
所述文件数据安全级别设置为N+M级别,N表示组成一个条带的数据存储单元个数,M表示不发生数据丢失的前提下一个条带允许同时发生故障的数据存储单元个数。
8.如权利要求5所述的基于纠删码的随机写系统,其特征在于,条带列表获取模块中:
获取本次随机写所跨越的所述条带列表后,判断获取的所述条带列表是否完整,如果不完整则将所述条带列表补充完整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710519600.2A CN107341070B (zh) | 2017-06-30 | 2017-06-30 | 一种基于纠删码的随机写方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710519600.2A CN107341070B (zh) | 2017-06-30 | 2017-06-30 | 一种基于纠删码的随机写方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107341070A CN107341070A (zh) | 2017-11-10 |
CN107341070B true CN107341070B (zh) | 2020-07-10 |
Family
ID=60218139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710519600.2A Active CN107341070B (zh) | 2017-06-30 | 2017-06-30 | 一种基于纠删码的随机写方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107341070B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958964A (zh) * | 2018-06-27 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种数据修改方法、装置、设备及可读存储介质 |
CN110874181B (zh) * | 2018-08-31 | 2021-12-17 | 杭州海康威视系统技术有限公司 | 一种数据更新方法及更新装置 |
CN110874185B (zh) * | 2018-09-04 | 2021-12-17 | 杭州海康威视系统技术有限公司 | 一种数据存储方法及存储装置 |
CN109582222B (zh) * | 2018-10-31 | 2020-11-24 | 华中科技大学 | 一种主机感知瓦记录磁盘中持久缓存的清理方法 |
CN111435342B (zh) * | 2019-01-14 | 2023-12-05 | 深圳市茁壮网络股份有限公司 | 海报的更新方法、更新系统以及管理系统 |
CN110795407B (zh) * | 2019-10-14 | 2022-06-10 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 适用于分布式文件系统的文件随机写方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916173A (zh) * | 2010-08-27 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种基于raid的数据读写方法及其系统 |
GB201319286D0 (en) * | 2013-10-31 | 2013-12-18 | Ibm | Writing data cross storage devices in an erasure-coded system |
CN105677508A (zh) * | 2015-12-16 | 2016-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种云存储中纠删码数据的修改方法及系统 |
CN106788468A (zh) * | 2016-11-28 | 2017-05-31 | 北京三快在线科技有限公司 | 一种纠删码更新方法及装置,电子设备 |
-
2017
- 2017-06-30 CN CN201710519600.2A patent/CN107341070B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916173A (zh) * | 2010-08-27 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种基于raid的数据读写方法及其系统 |
GB201319286D0 (en) * | 2013-10-31 | 2013-12-18 | Ibm | Writing data cross storage devices in an erasure-coded system |
CN105677508A (zh) * | 2015-12-16 | 2016-06-15 | 浪潮(北京)电子信息产业有限公司 | 一种云存储中纠删码数据的修改方法及系统 |
CN106788468A (zh) * | 2016-11-28 | 2017-05-31 | 北京三快在线科技有限公司 | 一种纠删码更新方法及装置,电子设备 |
Non-Patent Citations (1)
Title |
---|
Ceph存储系统纠删码覆盖写的设计与实现;瞿天善;《中国优秀硕士学位论文全文数据库信息科技辑》;20161015(第10期);I137-20 * |
Also Published As
Publication number | Publication date |
---|---|
CN107341070A (zh) | 2017-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107341070B (zh) | 一种基于纠删码的随机写方法及系统 | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN108829746B (zh) | 一种基于内存数据库的主数据管理系统及装置 | |
US9372765B2 (en) | System and method for recovering system status consistently to designed recovering time point in distributed database | |
CN107861991B (zh) | 单据数据处理方法、装置、计算机设备和存储介质 | |
CN111241061A (zh) | 状态数据库的写入方法、数据处理装置及存储介质 | |
CN111414362A (zh) | 数据读取方法、装置、设备及存储介质 | |
CN108833133B (zh) | 基于云计算网络的网络配置管理方法、装置和存储介质 | |
CN107391622A (zh) | 一种数据访问方法及设备 | |
CN115794641A (zh) | 基于业务流程的造数方法、装置、设备及存储介质 | |
CN106155838A (zh) | 一种数据库备份数据恢复方法及装置 | |
CN107784073B (zh) | 一种本地缓存的数据查询方法、存储介质和服务器 | |
CN107329966B (zh) | 机器数据存储方法及系统 | |
CN108255946B (zh) | 一种镭雕设备的编码管理方法及装置、设备及存储介质 | |
CN110597821A (zh) | 数据仓库表结构变更方法及装置 | |
CN114036248A (zh) | 高精地图数据的处理方法、装置及电子设备 | |
CN112445514B (zh) | 一种代码评审方法及相关产品 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN110704901B (zh) | 山墙屋面顶导梁的连接节点放置方法和相关产品 | |
CN109739859B (zh) | 一种关系图谱绘制方法、系统及相关装置 | |
CN113064895B (zh) | 一种图谱的增量更新方法、装置及系统 | |
CN110324845B (zh) | 一种资源分配的方法及装置 | |
CN114003172A (zh) | 存储容量校正方法、装置、计算机设备以及存储介质 | |
CN108984793A (zh) | 一种数据更新方法及系统、存储介质 | |
CN105279103A (zh) | 一种数据管理方法及装置 |
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 |