一种云存储中纠删码数据的修改方法及系统的制作方法

文档序号:9910875阅读:522来源:国知局
一种云存储中纠删码数据的修改方法及系统的制作方法
【技术领域】
[0001]本发明涉及云存储技术领域,特别是涉及一种云存储中纠删码数据的修改方法及系统。
【背景技术】
[0002]目前,云存储系统为了保证数据的安全性,通常会采用数据多副本的方式实现数据的冗余,随着数据量的持续、不断增长,副本方式带来的存储效率低的问题越来越明显,于是,出现了纠删码方式的数据冗余策略,在同等数据冗余度的情况下,纠删码方式能够带来存储效率至少50%以上的提高。
[0003]在纠删码方式中,通常需要计算数据的校验数据块,为了便于数据管理,在计算时需要先将原始数据划分为固定大小的数据块,然后针对数据块进行校验块的计算,最后将数据块和计算出的校验块分发至不同的存储磁盘。为了保证传输和存储的效率,云存储系统通常以4MB为单位传输和存储数据,一个存储的数据块中会存在多个数据分片的数据。举个例子,如图1所示的3+1纠删码数据存放形式,原始数据分为3个数据块,每个数据块由多个纠删数据分片组成,不同数据块上的数据分片计算后形成与其对应的校验块。其中,为了保证计算效率数据的分片通常为4kB?64kB之间。
[0004]在需要对原始数据进行修改操作时,数据分片内一个字节的修改也意味着整个数据分片和校验块的重新计算,因此,在数据修改时需要将整个数据分片都读取出来恢复原始数据,在修改后重新针对修改后数据进行分片和计算相应的校验块,然后将数据分片和计算得到的校验块重新写入。
[0005]可见,现有的修改方法中,在数据修改时需要将整个数据分片都读取、恢复、修改、重新分片、重新计算后再写入,特别是当修改数据为小块数据时,对其的写入为随机写入,在SATA硬盘上效率远低于顺序写入,耗时长、效率低,尤其是在磁盘压力较大的情况下。

【发明内容】

[0006]有鉴于此,本发明提供了一种云存储中纠删码数据的修改方法及系统,以实现减少数据修改过程中的耗时进而提高修改效率的目的。
[0007]为解决上述技术问题,本发明提供一种云存储中纠删码数据的修改方法,该方法包括:
[0008]对原始数据进行纠删码编码,将编码得到的原始编码数据存至磁盘;
[0009]当检测到对所述原始数据的修改指令时,获取与所述修改指令对应的修改数据;
[0010]判断所述修改数据的大小是否小于或者等于预设数据量阈值;
[0011]当判定所述修改数据的大小小于或者等于所述数据量阈值时,对所述修改数据进行纠删码编码,并将编码得到的修改编码数据作为与所述原始数据相对应的修改编码数据保存至kv数据库。
[0012]上述方法中,优选地,还包括:
[0013]当判定所述修改数据的大小大于所述数据量阈值时,从所述磁盘中获取所述原始编码数据,并利用获取到的所述原始编码数据和所述修改数据,得到修改后数据;
[0014]对所述修改后数据进行纠删编码得到修改后编码数据,并将所述修改后编码数据存回所述磁盘。
[0015]上述方法中,优选地,还包括:
[0016]当检测到对所述原始数据的读取指令时,判断所述kv数据库中是否存在与所述原始数据相对应的修改编码数据;
[0017]当判定存在所述相对应的修改编码数据时,从所述磁盘中获取所述原始编码数据,并从所述kv数据库中所述相对应的修改编码数据;
[0018]分别对所述原始编码数据和所述相对应的修改编码数据进行纠删码解码,得到所述原始数据和所述修改数据;
[0019]合并解码得到的所述原始数据和所述修改数据,并将合并得到的所述修改后数据反馈至读取请求端。
[0020]上述方法中,优选地,当判定所述kv数据库中不存在所述相对应的修改编码数据时,还包括:
[0021]从所述磁盘中获取所述原始编码数据,对所述原始编码数据进行纠删码解码,并将解码得到的所述原始数据反馈至所述读取请求端;
[0022]或者,
[0023]从所述磁盘中获取所述修改后编码数据,对所述修改后编码数据进行纠删码解码,并将解码得到的所述修改后数据反馈至所述读取请求端。
[0024]上述方法中,优选地,所述将编码得到的修改编码数据作为与所述原始数据相对应的修改编码数据保存至kv数据库,包括:
[0025]将所述原始编码数据的数据块标识作为key值存入所述kv数据库中;
[0026]将所述相对应的修改编码数据作为与所述key值对应的value值存入所述kv数据库中。
[0027]本发明还提供了一种云存储中纠删码数据的修改系统,该系统包括:
[0028]数据块存储单元,用于对原始数据进行纠删码编码,将编码得到的原始编码数据存至磁盘;
[0029]修改数据获取单元,用于当检测到对所述原始数据的修改指令时,获取与所述修改指令对应的修改数据;
[0030]阈值判断单元,用于判断所述修改数据的大小是否小于或者等于预设数据量阈值;
[0031]数据库存储单元,用于当判定所述修改数据的大小小于或者等于所述数据量阈值时,对所述修改数据进行纠删码编码,并将编码得到的修改编码数据作为与所述原始数据相对应的修改编码数据保存至kv数据库。
[0032]上述系统中,优选地,还包括:
[0033]修改后数据确定单元,用于当判定所述修改数据的大小大于所述数据量阈值时,从所述磁盘中获取所述原始编码数据,并利用获取到的所述原始编码数据和所述修改数据,得到修改后数据;
[0034]所述数据块存储单元还用于对所述修改后数据进行纠删编码得到修改后编码数据,并将所述修改后编码数据存回所述磁盘。
[0035]上述系统中,优选地,还包括:
[0036]存在判断单元,用于当检测到对所述原始数据的读取指令时,判断所述kv数据库中是否存在与所述原始数据相对应的修改编码数据;
[0037]编码数据获取单元,用于当判定存在所述相对应的修改编码数据时,从所述磁盘中获取所述原始编码数据,并从所述kv数据库中所述相对应的修改编码数据;
[0038]解码单元,用于分别对所述原始编码数据和所述相对应的修改编码数据进行纠删码解码,得到所述原始数据和所述修改数据;
[0039]读取指令反馈单元,用于合并解码得到的所述原始数据和所述修改数据,并将合并得到的所述修改后数据反馈至读取请求端。
[0040]上述系统中,优选地,所述读取指令反馈单元还用于:当判定所述kv数据库中不存在所述相对应的修改编码数据时,从所述磁盘中获取所述原始编码数据,对所述原始编码数据进行纠删码解码,并将解码得到的所述原始数据反馈至所述读取请求端;或者,从所述磁盘中获取所述修改后编码数据,对所述修改后编码数据进行纠删码解码,并将解码得到的所述修改后数据反馈至所述读取请求端。
[0041]上述系统中,优选地,所述数据库存储单元具体用于:将所述原始编码数据的数据块标识作为key值存入所述kv数据库中;将所述相对应的修改编码数据作为与所述key值对应的value值存入所述kv数据库中。
[0042]以上本发明提供的一种云存储中纠删码数据的修改方法及系统中,在原始数据的第一次写入时,将对原始数据进行纠删码编码得到的原始编码数据以数据块形式存至磁盘;当检测到对所述原始数据的修改指令时,获取与所述修改指令对应的修改数据,并判断该修改数据的大小是否小于或者等于预设数据量阈值(例如16k,该阈值可根据纠删编码的条带值进行相适应设定);当判定修改数据的大小小于或者等于所述数据量阈值时,认为该修改数据为小块数据,则对这个修改数据进行纠删码编码,并将编码得到的修改编码数据作为与所述原始数据相对应的修改编码数据保存至kv数据库。
[0043]在修改数据为小块数据时,只需在对其进行编码后存至kv数据库中即可,同时,由于kv数据库在处理少量数据时具有充分的效率优势,可见,相较现有技术(在数据修改时需要将整个数据分片都读取、恢复、修改、重新分片、重新计算后再写入,特别是当修改数据为小块数据时,对其的写入为随机写入,在SATA硬盘上效率远低于顺序写入,耗时长、效率低,尤其是在磁盘压力较大的情况下),本发明充分利用了 kv数据库在处理小文件时候的写操作性能以及纠删码在计算校验块时需要条带为小数据的特性,将两者结合加速了数据的修改速度,进而有效实现了减少数据修改过程中的耗时进而提高修改效率的目的。
【附图说明】
[0044]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0045]图1为现有技术中的3+1纠删码数据存放形式的场景示意图;
[0046]图2为本发明实施例提供的一种云存储中纠删码数据的修改方法的流程图;
[0047]图3为本发明实施例提供的一种云存储中纠删码数据的修改方法的另一流程图;
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1