一种直接纠删的实现方法及装置的制造方法

文档序号:9432209阅读:199来源:国知局
一种直接纠删的实现方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据存储技术领域,特别是涉及一种直接纠删的实现方法及装置。
【背景技术】
[0002]目前,在计算机技术高速发展的今天,数据呈现爆炸式增长;云存储系统的数据存储的安全性和磁盘的利用率越来越倍受关注。在云存储系统中一般情况下纠删码的前端存在一个缓存Cache池,数据先写入缓存Cache中,满足一定条件后数据会从缓存Cache池中转移到纠删池中;而不是有数据写入时直接写入纠删池中。目前在云存储系统中纠删码一般仅仅定位于对冷数据的存储,重要的数据采用多副本存储的方式。
[0003]上述过程为间接纠删的过程,间接纠删需要将数据先写入缓存Cache中,满足一定条件后,数据再从缓存Cache池中转移到纠删池中,而不是数据写入时直接写入纠删池中,这样的间接纠删过程中纠删的请求操作这个数据是先传送到缓存Cache中,再从Cache中写入纠删池中,过程是繁琐的,整个过程中数据的读写效率不高。而且,缓存Cache的容量是有限的,不能存储大容量的数据,所以出现数据的容量瓶颈问题

【发明内容】

[0004]本发明的目的是提供一种直接纠删的实现方法及装置,以实现提高数据的读写效率,并解决数据的容量瓶颈问题。
[0005]为解决上述技术问题,本发明提供一种直接纠删的实现方法,该方法包括:
[0006]接收客户端发送的请求操作,对所述请求操作进行预处理;
[0007]将预处理后的请求操作进行分类处理,将需要读取源数据的请求操作存储至读取列表中,将不需要读取源数据的请求操作放入写入列表中;
[0008]对于写入列表中的请求操作,将写入列表中的请求操作直接在内存中执行;
[0009]对于读取列表中的请求操作,将读取列表中的请求操作进行分析,将读取列表中的请求操作在内存中执行;
[0010]将所述写入列表和所述读取列表中的所有请求操作在内存中进行合并,将合并后的请求操作生成相应的事务,将所述事务进行落盘。
[0011]优选的,所述接收客户端发送的请求操作,对所述请求操作进行预处理,包括:
[0012]判断所述请求操作中的操作参数是否正确;若否,对所述请求操作的操作参数进行调整。
[0013]优选的,所述将预处理后的请求操作进行分类处理,将需要读取源数据的请求操作存储至读取列表中,将不需要读取源数据的请求操作放入写入列表中,包括:
[0014]判断预处理后的请求操作是否为删除操作或者覆盖写操作,若是,将所述请求操作存储至写入列表中;若否,将所述请求操作存储至读取列表中。
[0015]优选的,所述将读取列表中的请求操作进行分析,将读取列表中的请求操作在内存中执行,包括:
[0016]当读取列表中的请求操作为对齐操作时,将所述请求操作直接在内存中执行;
[0017]当读取列表中的请求操作不为对齐操作时,获取所述请求操作需要读取的源数据,将所述请求操作先应用到所述源数据上,再将所述请求操作在内存中执行。
[0018]本发明还提供一种直接纠删的实现装置,该装置包括:
[0019]预处理模块,用于接收客户端发送的请求操作,对所述请求操作进行预处理;
[0020]分类模块,用于将预处理后的请求操作进行分类处理,将需要读取源数据的请求操作存储至读取列表中,将不需要读取源数据的请求操作放入写入列表中;
[0021]第一执行模块,用于对于写入列表中的请求操作,将写入列表中的请求操作直接在内存中执行;
[0022]第二执行模块,用于对于读取列表中的请求操作,将读取列表中的请求操作进行分析,将读取列表中的请求操作在内存中执行;
[0023]合并模块,用于将所述写入列表和所述读取列表中的所有请求操作在内存中进行合并,将合并后的请求操作生成相应的事务,将所述事务进行落盘。
[0024]优选的,所述预处理模块包括:
[0025]判断单元,用于判断所述请求操作中的操作参数是否正确;
[0026]调整单元,用于若所述请求操作中的操作参数不正确,对所述请求操作的操作参数进行调整。
[0027]优选的,所述分类模块包括:
[0028]第一分类单元,用于判断预处理后的请求操作为删除操作或者覆盖写操作时,将所述请求操作存储至写入列表中;
[0029]第二分类单元,用于判断判断预处理后的请求操作不为删除操作且不为覆盖写操作时,将所述请求操作存储至读取列表中。
[0030]优选的,所述第二执行模块包括:
[0031]第一执行单元,用于当读取列表中的请求操作为对齐操作时,将所述请求操作直接在内存中执行;
[0032]第二执行单元,用于当读取列表中的请求操作不为对齐操作时,获取所述请求操作需要读取的源数据,将所述请求操作先应用到所述源数据上,再将所述请求操作在内存中执行。
[0033]本发明所提供的一种直接纠删的实现方法及装置,接收客户端发送的请求操作,对所述请求操作进行预处理;将预处理后的请求操作进行分类处理,将需要读取源数据的请求操作存储至读取列表中,将不需要读取源数据的请求操作放入写入列表中;对于写入列表中的请求操作,将写入列表中的请求操作直接在内存中执行;对于读取列表中的请求操作,将读取列表中的请求操作进行分析,将读取列表中的请求操作在内存中执行;将所述写入列表和所述读取列表中的所有请求操作在内存中进行合并,将合并后的请求操作生成相应的事务,将所述事务进行落盘。可见,采用两个处理操作的队列,将客户端的请求操作按照是否需要读取源数据进行分类,并分别进入这两个队列,最后将请求操作进行合并后落盘,这样一次提交可以完成多个操作,这样与间接纠删相比,直接纠删是直接将请求操作写入内存中,即直接写入到纠删池中,不需要将请求操作先传送到缓存Cache中,再从Cache中写入纠删池中,这样节省了写入缓存Cache的步骤,提高数据的读写效率,并且不需要使用缓存Cache,数据的容量自然不受限制,解决容量瓶颈问题。
【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0035]图1为本发明所提供的一种直接纠删的实现方法的流程图;
[0036]图2为本发明所提供的一种直接纠删的实现装置的结构示意图。
【具体实施方式】
[0037]本发明的核心是提供一种直接纠删的实现方法及装置,以实现提高数据的读写效率,并解决数据的容量瓶颈问题。
[0038]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039]请参考图1,图1为本发明所提供的一种直接纠删的实现方法的流程图,该方法包括:
[0040]Sll:接收客户端发送的请求操作,对请求操作进行预处理;
[0041 ] 其中,判断所述请求操作中的操作参数是否正确;若否,对所述请求操作的操作参数进行调整。
[0042]S12:将预处理后的请求操作进行分类处理,将需要读取源数据的请求操作存储至读取列表中,将不需要读取源数据的请求操作放入写入列表中;
[0043]其中,判断预处理后的请求操作是否为删除操作或者覆盖写操作,若是,将所述请求操作存储至写入列表中;若否,将所述请求操作存储至读取列表中。删除操作或者覆盖写操作是不需要读取源数据的。
[0044]具体的,云存储系统的Server端收到客户端发送的操作,预处理模块首先对这些操作进行预处理。判断这些操作的参数是否正确,是否是重复的操作,是否存在可以忽略的操作,以及对这些操作的参数进行处理。如果不满足条件,则直接返回给客户端。
[0045]S13:对于写入列表中的请求操作,将写入列表中的请求操作直接在内存中执行;
[0046]S14:对于读取列表中的请求操作,将读取列表中的请求操作进行分析,将读取列表中的请求操作在内存中执行;
[0047]其中,当读取列表中的请求操作为对齐操作时,将所述请求操作直接在内存中执行;当读取列表中的请求操作不为对齐操作时,获取所述请求操作需要读取的源数据,将所述请求操作先应用到所述源数据上,再将所述请求操作在内存中执行。对齐操作是不需要读取源数据的。当读取列表中的请求操作不为对齐操作时,请求操作是需要读取源数据的,请求操作包括属性的修改操作,属性的修改操作是需要读取源数据的。
[0048]S15:将写入列表和读取列表中的所有请求操作在内存中进行合并,将合并后的请求操作生成相应的事务,将事务进行落盘。
[0049]需要说明的是,S13和S14是并列的步骤,没有先后顺序,S15是S13及S14之后的步骤。纠删的过程就是请求操作的执行过程。请求操作可以包括删除操作、覆盖写操作、对齐操作、属性修改操作或者其他的操作,这些都是操作指令。
[0050]具体的,在步骤S12中,主要是根据操作是否需要读取源数据进行分类,分类之后的操作将存储到NeedRead列表或者Write列表之中,NeedRead列表为读取列表,Write列表为写入列表,将需要读取源数据的请求操作存储至读取列表NeedRead中,将不需要读取源数据的请求操作放入写入列表Write中。
[0051]分成三种情况进行处理,分别为:Direct_Write操作处理、Read操作处理、Write操作处理。
[0052]Direct-Write操作处理:当NeedRead列表为空而Write列表不为空时,将进入直接写的处理流程;当客户端发送的请求操作中包含WriteFull操作或者Delete操作时,直接进入Direct-Write操作处理;该操作处理方法,忽略WriteFull操作或者Delete操作之前的操作,并把之后的所有操作直接应用到内存中。
[0053]Read操作处理:当NeedRead列表不为空而Write列表为空时,并且NeedR
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1