面向分布式存储系统带流检测技术的纠删码写缓冲方法

文档序号:9547042阅读:609来源:国知局
面向分布式存储系统带流检测技术的纠删码写缓冲方法
【技术领域】
[0001]本发明涉及计算机存储技术领域,特别地,涉及一种面向分布式存储系统带流检测技术的纠删码写缓冲方法。
【背景技术】
[0002]纠删码(erasure coding,EC)是一种数据保护方法,它将原始数据分割成若干个片段,把冗余数据块扩展、编码,并将其存储在不同的物理位置。纠删码可以用于有大量数据和任何需要容错的应用程序或系统中,比如磁盘阵列系统、数据网格、分布式存储应用程序、对象存储或归档存储。纠删码提供的保护可以用简单的公式来表示:K = M+N。变量“Μ”代表原始数据或符号的值,变量“N”代表添加的提供保护的额外或冗余符号的值,变量“K”代表纠删码过程后创建的符号总值。原始文件可以从K中的任意M个验证片段中重建,磁盘容量利用率为Μ/Κ。
[0003]现在越来越多的分布式存储系统使用纠删码技术对数据进行分块存储,块大小U可以由用户定义,通常为512字节或1024字节。分布式存储系统如图1所示,客户端和服务器端通过网络进行连接,服务器端提供存储服务,客户端将应用程序的数据根据一定规则写入服务器端,或者从服务器端读取数据提供给应用程序使用。支持纠删码的分布式存储系统会将K块数据写入不同的服务器端,则能容忍任意N个服务器端失效。
[0004]在现有的纠删码技术中,参见图2,客户端与服务器端交互的最小操作单位为M*U个字节,在客户端的原始数据结尾处不足M*U个字节,则用零补齐。如果是对原有文件的覆写(在覆盖原始数据的基础上进行数据写入),也就是从偏移量L处,写入S个字节的数据。在该覆盖写过程中,需要将这些数据划分成多个块,使得尽可能多的块其首字节在文件中的偏移量为M*U的整数倍,这个操作我们称之为对齐。对于能够对齐且长度为M*U整数倍的数据块,则可以直接以M*U为单位进行编码写入操作。但是对于不能对齐或者长度不足M*U长度的数据,则需要将客户端原有文件中对应的M*U长度的字节读出,然后用新数据覆盖部分内容,重新编码后再写入。
[0005]因此,在覆盖写的过程中如果存在大量不能对齐且长度不足M*U长度的数据,则会在存储过程中引发大量的读操作,从而大大降低了写操作的效率和性能。

【发明内容】

[0006]本发明目的在于提供一种面向分布式存储系统带流检测技术的纠删码写缓冲方法,以解决现有覆盖写存储过程的读操作过多的技术问题。
[0007]为实现上述目的,本发明提供了一种面向分布式存储系统带流检测技术的纠删码写缓冲方法,包括:
[0008]在对原始数据进行覆写操作时,第一次覆写操作的长度为缓冲层数据起始位置至第一个对齐点,最后一次覆写操作的长度为最后一个对齐点至缓冲层数据结束位置;第一次覆写操作和最后一次覆写操作之间的每一次覆写操作的长度均与任意两个对齐点之间的长度相等,位置对齐。
[0009]优选的,第一次覆写操作和最后一次覆写操作之间的每一次覆写操作的长度均与相邻的两个对齐点之间的长度相等,位置对齐。
[0010]优选的,在客户端建立缓冲层,对写操作进行合并和对齐;
[0011]客户端接收到非写操作,先执行缓冲层中的写操作,再执行非写操作。
[0012]优选的,在客户端建立缓冲层,对写操作进行合并和对齐的步骤包括:
[0013]Al、在客户端建立缓冲层;
[0014]B1、在指定时间内接收应用程序1操作;
[0015]Cl、判断该1操作命令的执行过程是否可以与客户端的缓冲空间内已有的1操作命令的执行过程合并,
[0016]D1、进行1操作命令的执行过程的合并,按对齐规则进行分拆;然后扫描缓冲队列,进行客户端的缓冲空间的整理。
[0017]优选的,加入流检测机制:如果写操作是流式数据,在缓冲层满的时候,将缓冲层全部执行,只留最后进入缓冲层的一个;写操作是非流式数据,在缓冲层满的时候仅执行一个写请求并回收缓冲空间;
[0018]加入流检测机制的步骤包括:
[0019]A2、接收一个1操作命令;
[0020]B2、判断该1操作命令是否为流式数据,是则转C2,否则转D2 ;
[0021]C2、执行缓冲队列内一个1操作命令,回收客户端的缓冲空间;
[0022]D2、按队列顺序执行一个1操作命令,回收客户端的缓冲空间。
[0023]优选的,加入定时机制,防止缓冲层内的操作长时间得不到执行;
[0024]加入定时机制的步骤包括:
[0025]在该1操作命令没有超时时,进行该1操作命令是否为写操作的判断;在1操作命令超时时,则判断缓冲队列是否有写操作。
[0026]优选的,在客户端的缓冲层内空闲空间大小小于执行该1操作命令所需数据所占的空间大小,且在该1操作命令超时时,暂停接收新的1操作命令,执行客户端的缓冲层里的至少一个1操作命令。
[0027]优选的,在客户端建立缓冲层的步骤包括:确定执行写操作的客户端缓冲层空间大小和分配写操作队列的步骤。
[0028]优选的,步骤B还包括判断接收的1操作命令是否为需要进行写操作,若需要进行写操作,则判断客户端的缓冲层内空闲空间大小是否大于执行该1操作命令所需数据所占的空间大小;若不需要进行写操作,则先执行操作队列内的1操作,然后执行步骤A接收的当前1操作。
[0029]优选的,客户端的缓冲队列的数目为10个1操作。
[0030]本发明具有以下有益效果:
[0031]本发明在客户端增加缓冲层进行1操作(Input/Output Operat1n,输入输出操作)命令的执行,使得客户端的1操作命令可在本地缓冲层直接进行修改、合并等操作,将多个写操作在缓冲层合并,可以大大减少覆盖写存储过程中因为非对齐写操作引发的读操作,提高命令响应速度和写操作带宽。
[0032]例如在一个配置为2+1,数据块为512字节的纠删码分布式存储系统中,从文件偏移量256字节开始,每次覆盖写1024字节,总共写I兆字节,共需要1024次写操作,如图2所示。图2中每个方块表示512字节数据,竖直虚线表示要在2*512 = 1024字节处对齐,第一行表示原始数据,第二行表示现有方法覆盖写操作,第三行表示本申请方法使用缓冲层组织后的覆盖写操作。现有方法中每一个覆盖写操作都跨越了对齐点,需要在对齐点划分为两个子写操作。并且因为每个子写操作数据都小于1024字节,所以会引发一次读操作。总共需要的操作数为:1024*2*(1次读操作+1次写操作)。使用本申请方法,在缓冲层重新组织写操作后,会增加一次写操作。但是只有第一个操作没有对齐,最后一个操作数据不满1024字节,这两个操作需要引发读操作,其余的写操作都已经对齐并且数据为1024字节。总共需要的操作数为:(1024+1)写操作+2次读操作。1操作数几乎只有原来的1/4,大大提高了覆盖写的效率。
[0033]中国专利201410154741.5公开了一种基于纠删码缓冲的重构优化方法,提供了在存储服务器失效的情况下,如何解决客户端继续写数据以及重建数据的问题,且将缓冲设置在服务器端。本申请将缓冲设置在客户端,在服务器正常情况下,减少写操作引发的读操作问题。
[0034]除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
【附图说明】
[0035]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0036]图1是分布式存储系统示意图;
[0037]图2是纠删码覆写操作和缓冲层优化后对齐操作示意图;
[0038]图3是本发明优选实施例的流程示意图之一;
[0039]图4是本发明优选实施例的流程示意图之二。
【具体实施方式】
[0040]以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
[0041]本申请存储系统在对原始数据进行覆写操作时,第一次覆写操作的长度为缓冲层数据起始位置至第一个对齐点,最后一次覆写操作的长度为最后一个对齐点至缓冲层数据结束位置;第一次覆写操作和最后一次覆写操作之间的覆写操作的长度均与任意两个对齐点之间的长度相等,位置对齐。相比现有技术的每次覆写操作均需跨越对齐点,而引发的大量读操作,本申请只需在头尾两次覆写操作中进行读操作即可。例如,在存在10个对齐点的数据段中,任意两个对齐点可以指第I个对齐点与第3个对齐点,也可以指第3个对齐点与第4个对齐点等情况。当然,考虑到不对数据进行重复操作,已经进行了覆写操作的数据段则不再列入下一次覆写操作的范围内。例如,已经对第I个对齐点与第3个对齐点之间的数据进行了覆写操作,则不会对第3个对齐点之前的数据进行对齐和覆写操作了。
[0042]也就是说,第一次覆写操作和最后一次覆写操作之间的每一次覆写操作的长度可以均与相邻的两个对齐点之间的长度相等,位置对齐。即第二次覆写操作为第I个对齐点与第2个对齐点之间的数据,第三次覆写操作为第2个对齐点与第3个对齐点之间的数据,依次类推,直至最后一个对齐点。
[0043]另外,本申请在现有的客户端增加缓冲层,对写操作进行合并和对齐。即在接收应用程序1操作后,判断该1操作命令的执行过程是否可以与客户端的缓冲空间内已有的1操作命令的执行过程合并,若可以进行1操作命令的执行过程的合并,则按对齐规则进行分拆;然后扫描缓冲队列,进行客户端的缓冲空间的整理。
[0044]进一步地,在进行写操作的过程中,为减少读写次数,加入了流检测机制。即先检测该1操作命令是否为流式数据,是则执行缓冲队列内一个1操作命令,回收客户端的缓冲空间;否则按队列顺序执行一个1操作命令,回收客户端的缓冲空间。
[0045]为防止缓冲层内的操作长时间得不到执行,还加入了定时机制。即在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1