一种打开磁盘写缓存的方法和装置制造方法

文档序号:6512920阅读:196来源:国知局
一种打开磁盘写缓存的方法和装置制造方法
【专利摘要】本发明公开了打开磁盘写缓存的方法和装置:在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列;当每接收到一个写命令时,将该写命令加入到Pending队列中;对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中;当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令;当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。应用本发明所述方案,能够提高磁盘的工作性能。
【专利说明】一种打开磁盘写缓存的方法和装置
【技术领域】
[0001]本发明涉及存储技术,特别涉及一种打开磁盘写缓存的方法和装置。
【背景技术】
[0002]现有存储系统中,通常都采用关闭磁盘(Disk)写缓存(cache)的方式。
[0003]相比于关闭磁盘写缓存的方式,打开磁盘写缓存的方式能够更好地提高磁盘的工作性能,如加快磁盘的处理速度、降低时延等;但现有技术中还没有一种较好的打开磁盘写缓存的方式。

【发明内容】

[0004]有鉴于此,本发明提供了一种打开磁盘写缓存的方法和装置,能够提高磁盘的工作性能。
[0005]为了达到上述目的,本发明的技术方案是这样实现的:
[0006]一种打开磁盘写缓存的方法,包括:
[0007]在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列;
[0008]当每接收到一个写命令时,将该写命令加入到Pending队列中;
[0009]对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中;
[0010]当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令;
[0011]当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
[0012]一种打开磁盘写缓存的装置,包括:
[0013]第一处理模块,用于在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列;
[0014]第二处理模块,用于当每接收到一个写命令时,将该写命令加入到Pending队列中;
[0015]对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中;
[0016]当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令;
[0017]当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
[0018]可见,采用本发明所述方案,通过将写命令在所建立的三个队列之间进行转移等, 实现了打开磁盘写缓存,从而提高了磁盘的工作性能。
【专利附图】

【附图说明】
[0019]图1为本发明打开磁盘写缓存的方法实施例的流程图。
[0020]图2为本发明三个队列中所包括的写命令情况第一示意图。
[0021]图3为本发明三个队列中所包括的写命令情况第二示意图。
[0022]图4为本发明三个队列中所包括的写命令情况第三示意图。
[0023]图5为本发明三个队列中所包括的写命令情况第四示意图。
[0024]图6为本发明三个队列中所包括的写命令情况第五示意图。
[0025]图7为本发明打开磁盘写缓存的装置实施例的组成结构示意图。
【具体实施方式】
[0026]针对现有技术中存在的问题,本发明中提出一种打开磁盘写缓存的方案,能够提高磁盘的工作性能。
[0027]为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步的详细说明。
[0028]图1为本发明打开磁盘写缓存的方法实施例的流程图。如图1所示,包括以下步骤11?15。
[0029]步骤11:在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列。
[0030]初始建立时,三个队列中均为空。
[0031]其中,Pending队列:用于保存所有尚未从磁盘返回处理响应的写命令;
[0032]Done队列:用于保存所有从磁盘返回处理响应、但还未执行sync命令的写命令;
[0033]Sync队列:用于保存所有正在同步磁盘缓存的写命令。
[0034]步骤12:当每接收到一个写命令时,将该写命令加入到Pending队列中。
[0035]本步骤中,当每接收到一个写命令时,根据三个队列的不同功能,将其先加入到Pending队列中。
[0036]图2为本发明三个队列中所包括的写命令情况第一示意图。如图2所示,假设接收到了三个写命令,分别为 Writelto Diskl、Write2to Disk2 以及 Write3to Diskl,那么,将这三个写命令均加入到Pending队列中,此时,Done队列和Sync队列中均为空。
[0037]步骤13:对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中。
[0038]所述预定条件具体是指何种条件可根据实际需要而定,比如:经过预定时长。
[0039]对于Pending队列中的每个写命令,将其下发到对应的磁盘中后,磁盘会按照现有方式对该写命令进行处理,处理完毕后,会返回处理响应;相应地,当接收到磁盘返回的处理响应时,则可将该写命令从Pending队列转移到Done队列中。
[0040]图3为本发明三个队列中所包括的写命令情况第二示意图。如图3所示,结合图2所示情况,假设针对Writelto Diskl和Write3to Diskl已经接收到了从Diskl返回的处理响应,针对Write2to Disk2已经接收到了从Disk2返回的处理响应,那么则将WriteltoDiskl> Write2to Disk2 以及 Write3to Diskl 从 Pending 队列转移到 Done 队列中;假设Write4to Diskl、Write5to Disk2以及Write6to Disk3为新接收到的写命令,那么则将Write4to Diskl> Write5to Disk2 以及 Write6to Disk3 均加入到 Pending 队列中。
[0041]步骤14:当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令。
[0042]所述预定条件具体是指何种条件可根据实际需要而定。
[0043]比如:当Done队列中的写命令数量每次达到预定阈值时,或者,每经过预定时长后,则可将Done队列中的所有写命令均转移到Sync队列中。
[0044]之后,可针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令,即调用sync命令,如何调用为现有技术。
[0045]图4为本发明三个队列中所包括的写命令情况第三示意图。如图4所示,结合图3所示情况,假设经过了预定时长,那么则将Done队列中的WriteIto Diskl、Write2to Disk2以及Write3to Diskl从Done队列转移到Sync队列中,并针对Diskl和Disk2,分别执行sync命令;假设此时已经接收到了针对Write4to Diskl、Write5to Disk2以及Write6toDisk3 的处理响应,那么则将 Write4to Diskl、Write5to Disk2 以及 Write6to Disk3 从Pending队列转移到Done队列中;假设此时还新接收到了一个Write7to Disk3,那么则将Write7to Disk3 加入到 Pending 队列中。
[0046]步骤15:当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
[0047]如步骤14中所述,针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令,各磁盘如何根据sync命令进行相关处理为现有技术,处理完毕后,会返回sync响应。
[0048]当接收到任一磁盘返回的sync响应时,可将Sync队列中与该磁盘对应的所有写命令均删除,并且,可相应地释放所删除的写命令所占用的内存,以节省内存空间,如何释放同样为现有技术。
[0049]图5为本发明三个队列中所包括的写命令情况第四示意图。如图5所示,结合图4所示情况,假设接收到了 Diskl返回的sync响应,那么则可将Writelto Diskl以及Write3to Diskl 从 Sync 队列中删除,并释放 Writelto Diskl 以及 Write3to Diskl 所占用的内存。
[0050]另外,本发明所述方案中还提出:当存储系统掉电时,可将Pending队列、Done队列以及Sync队列中的所有写命令均保存到系统盘中;当存储系统上电时,可取出保存在系统盘中的所有写命令,并将取出的所有写命令均加入到Pending队列中,后续按照图1所示相关流程进行处理即可。
[0051]系统盘通常位于主板上,当存储系统掉电后,按照现有技术,主板上会有短时间的供电存留以对主板进行相关保护,本发明所述方案中即可利用主板的这一特性,当存储系统掉电时,将Pending队列、Done队列以及Sync队列中的所有写命令均保存到系统盘中,然后正常关机;当存储系统上电时,将保存在系统盘中的所有写命令均读取出来,并可认为这些写命令均未持久化到磁盘中,因此将它们全部加入到Pending队列中。
[0052]图6为本发明三个队列中所包括的写命令情况第五示意图。如图6所示,结合图5所示情况,当存储系统上电时,将原Pending队列中的Write7to Disk3、原Done队列中的 Write4to Diskl> Write5to Disk2 和 Write6to Disk3,以及原 Sync 队列中的 Write2toDisk2均加入到Pending队列中,此时,Done队列和Sync队列中均为空;需要说明的是,图6中所示的各写命令的排列顺序仅为举例说明,具体如何排序不作限制。
[0053]基于上述介绍,图7为本发明打开磁盘写缓存的装置实施例的组成结构示意图。如图7所示,包括:
[0054]第一处理模块,用于在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列;
[0055]第二处理模块,用于当每接收到一个写命令时,将该写命令加入到Pending队列中;
[0056]对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中;
[0057]当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令;
[0058]当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
[0059]具体地,
[0060]当Done队列中的写命令数量每次达到预定阈值时,或者,每经过预定时长后,第二处理模块则将Done队列中的所有写命令均转移到Sync队列中。
[0061]另外,
[0062]第二处理模块还可进一步用于,在将Sync队列中与该磁盘对应的所有写命令均删除之后,释放所删除的写命令所占用的内存。
[0063]再有,
[0064]如图7所示,该装置中还可进一步包括:第三处理模块;
[0065]第三处理模块,用于当存储系统掉电时,将Pending队列、Done队列以及Sync队列中的所有写命令均保存到系统盘中;
[0066]当存储系统上电时,取出保存在系统盘中的所有写命令,并将取出的所有写命令均加入到Pending队列中。
[0067]图7所示装置实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再赘述。
[0068]总之,采用本发明所述方案,实现了打开磁盘写缓存,从而提高了磁盘的工作性能;而且,当存储系统掉电时,可及时将未同步到磁盘中的所有写命令均保存到系统盘中,从而避免了数据丢失,进而确保了数据的安全性。
[0069]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种打开磁盘写缓存的方法,其特征在于,包括: 在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列; 当每接收到一个写命令时,将该写命令加入到Pending队列中; 对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中; 当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令; 当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
2.根据权利要求1所述的方法,其特征在于, 所述当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中包括: 当Done队列中的写命令数量每次达到预定阈值时,或者,每经过预定时长后,则将Done队列中的所有写命令均转移到Sync队列中。
3.根据权利要求1所述的方法,其特征在于, 所述将Sync队列中与该磁盘对应的所有写命令均删除之后,进一步包括:释放所删除的写命令所占用的内存。`
4.根据权利要求1或3所述的方法,其特征在于, 该方法进一步包括: 当存储系统掉电时,将Pending队列、Done队列以及Sync队列中的所有写命令均保存到系统盘中; 当存储系统上电时,取出保存在系统盘中的所有写命令,并将取出的所有写命令均加入到Pending队列中。
5.一种打开磁盘写缓存的装置,其特征在于,包括: 第一处理模块,用于在存储系统中建立3个队列,分别为Pending队列、Done队列和Sync队列; 第二处理模块,用于当每接收到一个写命令时,将该写命令加入到Pending队列中; 对于Pending队列中的每个写命令,当满足预定条件时,将该写命令下发到对应的磁盘中,并在当接收到磁盘返回的处理响应时,将该写命令从Pending队列转移到Done队列中; 当每次满足预定条件时,将Done队列中的所有写命令均转移到Sync队列中,并针对Sync队列中的所有写命令所对应的磁盘,分别执行sync命令; 当接收到任一磁盘返回的sync响应时,将Sync队列中与该磁盘对应的所有写命令均删除。
6.根据权利要求5所述的装置,其特征在于, 当Done队列中的写命令数量每次达到预定阈值时,或者,每经过预定时长后,所述第二处理模块则将Done队列中的所有写命令均转移到Sync队列中。
7.根据权利要求5所述的装置,其特征在于,所述第二处理模块进一步用于,在将Sync队列中与该磁盘对应的所有写命令均删除之后,释放所删除的写命令所占用的内存。
8.根据权利要求5或7所述的装置,其特征在于, 该装置中进一步包括: 第三处理模块,用于当存储系统掉电时,将Pending队列、Done队列以及Sync队列中的所有写命令均保存到系统盘中; 当存储系统上电时,取出保存在系统盘中的所有写命令,并将取出的所有写命令均加入到Pending 队列中。
【文档编号】G06F12/08GK103514109SQ201310438672
【公开日】2014年1月15日 申请日期:2013年9月24日 优先权日:2013年9月24日
【发明者】余海滨 申请人:创新科存储技术有限公司, 创新科软件技术(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1