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

文档序号:9547042阅读:来源:国知局
该1操作命令没有超时时,进行该1操作命令是否为写操作的判断;在1操作命令超时时,则判断缓冲队列是否有写操作。
[0046]各种具体场景下的判断流程请见下各个具体实施例。
[0047]实施例一:
[0048]101.在客户端分配大小为B字节的内存,作为1写操作的缓冲层。B通常设置为1M,最大不超过IG ;
[0049]102.建立1写操作队列,所有缓冲的1写操作以链表结构组成队列。队列头指针指向最先进入的1写操作,队列尾指针指向最后进入的1写操作。队列初始为空。
[0050]103.在指定时间内接收应用程序1操作,即从用户程序接收一个1操作;
[0051]“在指定时间内接收应用程序1操作”指的是客户端等待接收用户操作应用程序发出的1操作命令,如果过了预设时间没有收到1操作,就按超时处理。
[0052]104.判断这个操作是否超时;
[0053]105.在未超时的情况下,判断这个1操作是否是写操作;
[0054]106.如果不是写操作,则清空缓冲后,从头到尾按顺序执行完1写操作队列,然后执行当前接收的1操作。然后转103。
[0055]实施例二:
[0056]201.在客户端分配大小为B字节的内存,作为1写操作的缓冲层。B通常设置为1M,最大不超过IG ;
[0057]202.建立1写操作队列,所有缓冲的1写操作以链表结构组成队列。队列头指针指向最先进入的1写操作,队列尾指针指向最后进入的1写操作。队列初始为空。
[0058]203.从用户程序接收一个1操作;
[0059]204.判断这个操作是否超时;
[0060]205.在未超时的情况下,判断这个1操作是否是写操作;
[0061]206.如果是写操作,判断写操作的数据量(例如128KB)是否大于缓冲层的剩余空间;
[0062]207.如果大于剩余空间(例如256KB),判断缓冲队列是否有其他的写操作;
[0063]208.当前队列没有写操作,则执行当前写操作,然后转203。
[0064]实施例三:
[0065]301.在客户端分配大小为B字节的内存,作为1写操作的缓冲层。B通常设置为1M,最大不超过IG ;
[0066]302.建立1写操作队列,所有缓冲的1写操作以链表结构组成队列。队列头指针指向最先进入的1写操作,队列尾指针指向最后进入的1写操作。队列初始为空。
[0067]303.从用户程序接收一个1操作;
[0068]304.判断这个操作是否超时;
[0069]305.在未超时的情况下,判断这个1操作是否是写操作;
[0070]306.如果是写操作,判断写操作的数据量(例如128KB)是否大于缓冲层的剩余空间;
[0071]307.如果小于剩余空间(例如64KB),则按照文件的offset,将写操作插入缓冲队列;
[0072]308.整理队列后,转303。
[0073]写操作进入队列时,不是按照FIFO的顺序,而是按照文件偏移量offset的顺序进行排列。这样做有利于接下来的整理队列。整理队列指的是合并写缓冲、合并写操作、按照对齐分拆写操作。
[0074]实施例四:
[0075]401.在客户端分配大小为B字节的内存,作为1写操作的缓冲层。B通常设置为1M,最大不超过IG ;
[0076]402.建立1写操作队列,所有缓冲的1写操作以链表结构组成队列。队列头指针指向最先进入的1写操作,队列尾指针指向最后进入的1写操作。队列初始为空。
[0077]403.从用户程序接收一个1操作;
[0078]404.判断这个操作是否超时;
[0079]405.在未超时的情况下,判断这个1操作是否是写操作;
[0080]406.如果是写操作,判断写操作的数据量(例如128KB)是否大于缓冲层的剩余空间;
[0081]407.如果大于剩余空间(例如256KB),判断缓冲队列是否有其他的写操作;
[0082]408.缓冲队列有其他的写操作时,判断是否为流式数据,例如在连续5次写操作都可以融合的前提下,判断为是流式数据;
[0083]409.是流式数据时,则在写缓冲队列中从头指针开始执行写操作,除最后一个写操作外,全执行完毕;转411 ;
[0084]410.不是流式数据时,则在执行缓冲队列中的第一个对齐了的写操作后,转411 ;
[0085]411.回收缓冲空间,转403。
[0086]实施例五:
[0087]501.在客户端分配大小为B字节的内存,作为1写操作的缓冲层。B通常设置为1M,最大不超过IG ;
[0088]502.建立1写操作队列,所有缓冲的1写操作以链表结构组成队列。队列头指针指向最先进入的1写操作,队列尾指针指向最后进入的1写操作。队列初始为空。
[0089]503.从用户程序接收一个1操作;
[0090]504.判断这个操作是否超时;
[0091]505.在当前操作超时时,判断缓冲队列中是否有写操作;
[0092]506.缓冲队列有其他的写操作时,判断是否为流式数据,例如在连续5次写操作都可以融合的前提下,判断为是流式数据;
[0093]507.是流式数据时,则在写缓冲队列中从头指针开始执行写操作,除最后一个写操作外,全执行完毕;转509 ;
[0094]508.不是流式数据时,则在执行缓冲队列中的第一个对齐了的写操作后,转509 ;
[0095]509.回收缓冲空间,转503。
[0096]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种面向分布式存储系统带流检测技术的纠删码写缓冲方法,其特征在于,包括: 在对原始数据进行覆写操作时,第一次覆写操作的长度为缓冲层数据起始位置至第一个对齐点,最后一次覆写操作的长度为最后一个对齐点至缓冲层数据结束位置;第一次覆写操作和最后一次覆写操作之间的每一次覆写操作的长度均与任意两个对齐点之间的长度相等,位置对齐。2.根据权利要求1所述的纠删码写缓冲方法,其特征在于,一次覆写操作和最后一次覆写操作之间的每一次覆写操作的长度均与相邻的两个对齐点之间的长度相等,位置对齐。3.根据权利要求1所述的纠删码写缓冲方法,其特征在于,在客户端建立缓冲层,对写操作进行合并和对齐; 客户端接收到非写操作,先执行缓冲层中的写操作,再执行非写操作。4.根据权利要求3所述的纠删码写缓冲方法,其特征在于,在客户端建立缓冲层,对写操作进行合并和对齐的步骤包括: A1、在客户端建立缓冲层; B1、在指定时间内接收应用程序10操作; C1、判断该10操作命令的执行过程是否可以与客户端的缓冲空间内已有的10操作命令的执行过程合并, D1、进行10操作命令的执行过程的合并,按对齐规则进行分拆;然后扫描缓冲队列,进行客户端的缓冲空间的整理。5.根据权利要求3所述的纠删码写缓冲方法,其特征在于,加入流检测机制:如果写操作是流式数据,在缓冲层满的时候,将缓冲层全部执行,只留最后进入缓冲层的一个命令;写操作是非流式数据,在缓冲层满的时候仅执行一个写请求并回收缓冲空间; 加入流检测机制的步骤包括: A2、接收一个10操作命令; B2、判断该10操作命令是否为流式数据,是则转C2,否则转D2 ; C2、执行缓冲队列内一个10操作命令,回收客户端的缓冲空间; D2、按队列顺序执行一个10操作命令,回收客户端的缓冲空间。6.根据权利要求3所述的纠删码写缓冲方法,其特征在于,加入定时机制,防止缓冲层内的操作长时间得不到执行; 加入定时机制的步骤包括: 在该10操作命令没有超时时,进行该10操作命令是否为写操作的判断;在10操作命令超时时,则判断缓冲队列是否有写操作。7.根据权利要求6所述的纠删码写缓冲方法,其特征在于,在客户端的缓冲层内空闲空间大小小于执行该10操作命令所需数据所占的空间大小,且在该10操作命令超时时,暂停接收新的10操作命令,执行客户端的缓冲里的至少一个10操作命令。8.根据权利要求4所述的纠删码写缓冲方法,其特征在于,在客户端建立缓冲层的步骤包括:确定执行写操作的客户端缓冲空间大小和分配写操作队列的步骤。9.根据权利要求4所述的纠删码写缓冲方法,其特征在于,步骤B还包括判断接收的10操作命令是否为需要进行写操作,若需要进行写操作,则判断客户端的缓冲内空闲空间大小是否大于执行该10操作命令所需数据所占的空间大小;若不需要进行写操作,则先执行操作队列内的10操作,然后执行步骤A接收的当前10操作。10.根据权利要求4所述的纠删码写缓冲方法,其特征在于,客户端的缓冲队列的数目为10个10操作。
【专利摘要】本发明提供了一种面向分布式存储系统带流检测技术的纠删码写缓冲方法,包括:在对原始数据进行覆写操作时,第一次覆写操作的长度为缓冲层数据起始位置至第一个对齐点,最后一次覆写操作的长度为最后一个对齐点至缓冲层数据结束位置;第一次覆写操作和最后一次覆写操作之间的覆写操作的长度均与相邻的对齐点之间的长度相等,位置对齐。将多个写操作在缓冲层合并,缓冲层中只有数据头尾两端的写操作是非对齐的,减少了纠删码存储系统中覆盖写情况下非对齐写操作引发的读操作,提高命令响应速度。
【IPC分类】G06F11/10, G06F3/06
【公开号】CN105302660
【申请号】CN201510751354
【发明人】王全宝, 郭家勇, 黄芳, 张诗芳, 邵江, 王剑雄, 刘友苗
【申请人】湖南安存科技有限公司
【公开日】2016年2月3日
【申请日】2015年11月6日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1