用于虚拟存储设备的高速缓存降级的制作方法_4

文档序号:9769164阅读:来源:国知局
交给存储区域156。作为另一示例,如果另一线程发起清除并且降级线程110确定高速缓存接近预定阈值,则降级线程110可以通过识别候选行120的集合等等发起降级过程。为了说明,在高速缓存已经填充至25%容量时,可以发起降级过程。如果清除发生并且降级线程110确定高速缓存是20%满或更大,那么降级线程110可以发起降级过程。如果另一线程不执行清除,则降级线程可以周期性地确定先前的清除何时发生。如果发生先前清除的时间与当前时间之间已经消逝的时间量超过预定阈值,则降级线程110可以执行清除。因此,通过依附由其他线程所执行的清除,降级线程110可以降低执行清除的频繁,从而降低阻塞向主存储122的写入的频率,由此增加吞吐量,例如在特定时间量内所执行的写入数目。
[0049]针对降低清除数目的一个折衷在于,如果系统在写入的中间崩溃,则在系统已经重启之后,可以重复一些写入。然而,在校验的情况中,在系统崩溃之后,可以不依赖于旧校验。因此,校验日志可以包含将写到主存储的新校验加上到对应的新数据的指针。在系统崩溃之后,在正常降级过程恢复之前,可以对新空间重复“新校验+新数据”写入。无论何时要重新填充队列130、132或134时,降级线程110可以将来自空间的主回放列表的回放分组解除队列,如果分组将被回放则确定哪些列(驱动)将被写入,并且如果针对队列130、132或134中的任一项而言显著/期望的降级写入的队列深度计数器148、150或152小于D,则可以开始回放过程并且因此使队列深度计数器148、150或152增量。回放是重复崩溃之前所执行的降级的过程。对于简单和镜像空间而言,回放过程与降级类似,因为可以在没有任何恶化发生的情况下重复写入。对于使用校验的存储而言,如果在崩溃之前利用“旧校验XOR旧数据XOR新数据”替换“旧校验”并且在系统重启之后再次执行它,则结果可以是“(旧校验XOR旧数据XOR新数据)X0R旧数据XOR新数据”,其不是期望的结果。
[0050]在已经将行写到硬驱动之后,可以发送清除命令,其指令驱动坚持至今写入的每件事物以提交行(例如,将行存储在驱动的存储区域156中),可以从高速缓存112移除行。[0051 ]物理磁盘清除可能使磁盘减速,因为磁盘不具有像何时和如何写入数据那样多的灵活性。因此,使得物理磁盘能够确定何时清除、以什么次序执行清除以及清除多少可以产生较好的结果。
[0052]为了进一步加速降级过程并且使降级过程更高效,清除可以一起排组并且一起(例如,同时)而不是单独地(例如,一次一个地)执行。例如,可以针对候选行的每个集合而不是针对每个行单独地执行一个清除。可以分派等待清除的降级分组以利用高速缓存112的任何清除。
[0053]可以并行(例如,基本上同期地)执行本文所描述的许多技术。例如,在一些情况中,可以并行执行以下技术中的至少两个或两个以上:(I)将来自队列130、132或134的行写到主存储122,(2)从高速缓存112读取候选行的附加集合,(3)删除已经从高速缓存122降级的行(例如,在清除之后),(4)识别用于包括在候选行120的集合中的候选行,以及(5)读取来自候选行120的集合的行并且将行放置在队列130、132或134中的一个或多个中。
[0054]因此,一个或多个技术可以单独地或组合地用于加速降级虚拟存储设备的高速缓存112。例如,基于较小写入中的每一个的目的地位置,可以将来自较小写入的数据聚合到行中并且对其排序。与单独地写入较小写入相比较,将行写到硬驱动可以减少由待定位在一个或多个盘片上的读写头所使用的时间量。可以基于哪些驱动被接合而选择候选行以使得能够并行写入大量驱动。每个硬驱动可以具有写入队列,其中对待写到对应硬驱动的行进行排队。可以针对每个硬驱动维持队列深度以减少每个驱动空闲的时间量。例如,可以将行添加到每个队列,直到到达最大队列深度并且在队列深度下降到预定阈值以下之后将新行添加到队列。可以通过将行写到多个硬驱动达到另外的平行性,同时(例如,基本上同时)选择候选行的附加集合。与常规降级过程相比较,使用这些技术中的一个或多个的结果可以是较快的降级过程。较快的降级过程对于包括几十、几百或甚至几千个硬驱动的虚拟存储系统而言可能是特别地引入注目的。
[0055]图2是根据一些实现方案的包括虚拟存储系统的说明性架构200。虚拟存储系统200可以包括具有M个平板(其中M>0)的虚拟磁盘202,诸如第一平板204、第二平板206直到第M平板208 ο例如,平板204、206和208可以表现为虚拟磁盘,其可以划分为许多卷,卷作为不同驱动字母(例如,G:和H:)而暴露给应用。卷边界可以或可以不与平板边界重合。应用108可以将诸如数据210之类的数据写到一个或多个虚拟卷(例如,平板202、204或206)。可以通过主存储122中的一个或多个主控(例如,使用其物理地存储)平板202、204或206中的每一个。例如,可以通过第一驱动124和第二驱动126主控第一平板204。作为另一示例,可以通过第二驱动126和第N驱动128主控第二平板206。每个平板可以使用其自身的弹性方案。例如,平板I可以是跨磁盘I和2的双向(2-way)镜像,而平板2可以是跨磁盘3-10的单向(1-way)校验。
[0056]如果待写入的数据210大于或等于特定大小(例如,大于或等于256kb),则数据210可以被认为是大写入并且可以将数据210写到虚拟磁盘202。如果待写入的数据210小于特定大小(例如,小于256 kb),则数据210可以被认为是小写入并且可以将数据210写到高速缓存112。因此,虚拟存储系统200可以基于数据210的大小而确定是将数据210写到虚拟磁盘202还是高速缓存112。对于使用校验的虚拟存储设备而言,可以将向虚拟存储设备的所有写入(例如,大写入和小写入二者)发送给高速缓存。
[0057]较小的写入可以存储在数据日志212中。校验日志214可以被用于防止主存储上的数据和校验在降级期间发生崩溃的情况下脱离同步。假如发生崩溃,则可以从数据日志212恢复数据,并且可以从校验日志214恢复校验。高速缓存驱动114、116和118可以是与驱动124、126和128相比较具有较快的访问(例如,读取和/或写入)时间的驱动。例如,可以使用SSD 216实现高速缓存驱动114、116和118。在一些情况中,主存储122和驱动216的内容可以重叠。例如,一些SSD可以被用于主控数据日志212和校验日志214并且主控不具有写回高速缓存的一些快速平板(例如,没有高速缓存、没有降级)。
[0058]在将较小的写入存储于高速缓存112中之后,可以使用本文所讨论的技术中的一个或多个使高速缓存112降级(例如,通过图1的降级线程110)。例如,基于数据的目的地位置,可以将数据日志212中的数据聚合到特定大小(例如,256kb)的行中并且对其排序,基于接合哪些驱动以使得能够并行写入大量驱动,可以从高速缓存112选择候选行,等等。
[0059]图3是根据一些实现方案的包括降级读取阶段的示例过程300的流程图。可以通过图1的降级线程110执行过程300。
[0060]在302处,可以执行降级读取阶段,其中从高速缓存112(例如,从数据日志212)读取数据。
[0061]在304处,可以执行写入校验阶段,其中计算校验(例如,X0R)值并且将其写到高速缓存。在一些实现方案中,可以并行执行降级读取阶段302和写入阶段304(但是并不用于计算新校验之前读取所有元件的相同行)。
[0062]如果执行写入阶段304,则过程可以转到305,其中过程可以等待直到清除高速缓存。例如,在图1中,清除高速缓存112可以包括确定是否已经将高速缓存112中的所有数据提交给主存储122中的一个或多个。
[0063]在308处,可以执行降级写入阶段,其中将数据和可选地校验写到驱动(例如,主存储 122)。
[0064]可以通过专用降级线程(例如,降级线程110中的一个或多个)精心组织降级过程300,其周期性地唤醒以a)将更多候选行放置到队列中,如果必要的话,b)帮助部分候选行通过“等待清除”306,以及c)根据所需要的基础移除已经从高速缓存降级的数据。因为从高速缓存移除数据可能花费长时间执行,所以可以与填充队列异步地(例如,并行)执行该操作。在实现方案中,高速缓存被维持为日志。可以通过降级线程执行新日志开始日志顺序号(LSN)的计算。新日志开始LSN可以存储在虚拟磁盘202中,并且可以对日志推进工作项目排队以清除主存储122并且将日志开始移动到预计算的位置。这是另一优化。日志推进将周期性地执行。日志推进包括:清除主存储122的驱动以将候选行提交给硬驱动的存储区域156,移动数据日志212中的日志开始(LSN)(有效地移除已经降级的记录),并且清除日志驱动(例如,高速缓存112)以将新日志开始LSN提交给SSD的存储区域156。清除高速缓存112和主存储122的驱动可能花费许多时间,因此可以执行清除驱动,同时降级更多数据。例如,可以做出关于可以与选择和/或排队候选行同步地推进日志多少(相当快速的操作)的确定,但是可以分离地执行驱动的实际清除和移动日志开始。
[0065]以类似的方式执行系统崩溃之后附加的校验记录的回放。在作为初始化虚拟存储设备的一部分而完成的高速缓存的初始化期间枚举校验记录,针对其重建回放分组并且将回放分组存储在所链接的列表中。一旦虚拟存储设备准备接受读取和写入请求,则开始降级任务。降级任务将来自列表的许多分组解除队列,并且针对其独立地发动回放过程。回放的第一阶段将读取来自校验日志的新校验/数据,并且第二阶段将该校验/数据写到主存储122上的永久位置。当一些(但是不一定所有)回放分组经过这两个阶段时,将更多回放分组从列表解除队列并且执行。
[0066]图4是根据一些实现方案的示例降级过程400的流程图。可以通过图1的降级线程110中的一个或多个执行过程400。
[0067]在402处,可以清除高速缓存。高速缓存清除是可选的,并且可以仅在特定情况下执行。例如,在图1中,可以通过确
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1