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

文档序号:9769164阅读:429来源:国知局
用于虚拟存储设备的高速缓存降级的制作方法
【专利说明】
【背景技术】
[0001]当多个硬驱动被用于存储时,添加使用较快类型的存储媒体的高速缓存可以改进性能。例如,固态驱动(SSD)或类似设备可以被用于提供高速缓存。SSD可以与多个硬驱动捆绑以创建虚拟存储设备。高速缓存可以使软件应用能够以与写到仅多个硬驱动相比较更快的速率写到虚拟存储设备。当应用写到高速缓存时,可以使用被称为降级(还被称为写回)的过程将高速缓存的内容写到多个硬驱动。

【发明内容】

[0002]提供本概述以引入以下在详细说明中进一步描述的简化形式的概念的选择。本概述既不旨在识别所要求保护的主题的关键或基本特征,也不旨在被用于确定或限制所要求保护的主题的范围。
[0003]—些实现方案可以包括将数据写到的虚拟存储系统。虚拟存储系统可以包括高速缓存和多个硬驱动。多个队列可以与多个硬驱动相关联,使得多个硬驱动中的每个硬驱动具有多个队列中的对应队列。可以从高速缓存选择候选行的集合。针对候选行的集合中的每个候选行,可以识别目的地硬驱动。每个候选行可以放置在对应于目的地硬驱动的队列中。来自多个队列的两个或两个以上候选行可以基本上同时地(例如,并行)写到两个或两个以上目的地硬驱动。
【附图说明】
[0004]参考附图描述详细说明。在附图中,参考数字最左边的(多个)数位识别参考数字首先出现的附图。不同附图中的相同参考数字指示类似或同样的项目。
[0005]图1是根据一些实现方案的包括降级模块的说明性架构。
[0006]图2是根据一些实现方案的包括虚拟存储系统的说明性架构。
[0007]图3是根据一些实现方案的包括降级的阶段的示例过程的流程图。
[0008]图4是根据一些实现方案的包括清除高速缓存的示例过程的流程图。
[0009]图5是根据一些实现方案的包括平板(slab)的说明性架构。
[0010]图6是根据一些实现方案的包括基于将接合多少驱动选择候选行的集合的示例过程的流程图。
[0011]图7是包括多个虚拟存储系统的说明性架构。
【具体实施方式】
[0012]本文所描述的系统和技术可以被用于高效地降级用于多个硬驱动的高速缓存。例如,本文所描述的系统和技术可以使用在具有包括上百个硬驱动的虚拟存储设备的计算机系统中。术语“硬驱动”是指用于使用涂有磁性材料的快速旋转的磁盘(盘片)存储和检索数字信息的数据存储设备。甚至在硬驱动断电之后,硬驱动都保持写到硬驱动的数据。可以以随机存取的方式读取写到硬驱动的数据,例如,可以以任何次序而不是顺序地存储或检索单独的数据块。每个硬驱动可以包括一个或多个刚性(“硬”)快速旋转的磁盘(盘片),其具有布置在移动致动器臂上的磁头以将数据读取和写入到表面。
[0013]虚拟存储设备可以包括主存储和高速缓存。可以使用各种类型的设备实现高速缓存和主存储二者。典型地,高速缓存利用一种类型的非易失性存储设备,其具有与主存储相比较快的吞吐量(例如,读取和写入)。出于本文的讨论目的,高速缓存图示为使用SSD实现,并且主存储示出为使用硬驱动实现。然而,在其他实现方案中,可以使用诸如非易失性存储器(NVM)之类的存储设备实现高速缓存,而可以使用SSD实现主存储。
[0014]虚拟存储设备还可以提供某种形式的数据冗余,使得如果特定存储设备故障,则可以恢复存储在故障存储设备上的数据。因为数据可以驻留在驱动高速缓存(例如,内置到一些驱动中的高速缓存)中直到其降级,所以还可以使高速缓存更为可靠。例如,某种形式的镜像可以被用于将数据写到超过一个硬驱动。作为另一示例,可以使用某种形式的校验(parity)。校验是指存储涉及所存储的数据的一种类型的冗余数据,使得在数据丢失的事件中,可以使用冗余数据恢复数据。例如,在存储系统中,一些驱动可以被指定为存储校验(例如,校验数据)。可以使用逻辑异或(XOR)函数从数据导出校验。例如,一种形式的RAID可以使用校验驱动来创建既容错又提供较快性能的系统。实现校验的一种方式是指定一些驱动用于数据并且其他驱动来主控从数据的异或(XOR)逻辑函数导出的校验。如果数据驱动之一故障,则可以使用其余驱动的XOR恢复所丢失驱动的数据。因此,虚拟存储设备可以通过使用高速缓存(例如,使用SSD)提供(I)快速的性能并且通过提供镜像和/或通过使用校验而提供(2)可靠性。
[0015]本文所描述的系统和技术高效地降级用于虚拟存储设备的高速缓存。首先,可以从高速缓存读取数据,可以发起写到硬驱动,并且当写到硬驱动时,数据可以继续从高速缓存读取。因此,可以并行(例如,基本上同时地)执行写到硬驱动和从高速缓存读取。
[0016]改进降级的效率的第二方式可以是一次写到超过一个硬驱动。基于将接合(例如,写到)哪些硬驱动,可以从高速缓存选择数据以用于写到硬驱动。可以从高速缓存选择数据以使得能够并行写到最大数目的驱动。可以对每个特定驱动提供降级队列,其包括待写到特定驱动的数据。在一些情况中,为了提供可靠性,可以将数据写到至少两个驱动,例如(I)初级驱动和(2)要么镜像驱动要么校验驱动。可以并行执行写到至少两个驱动。通过以将数据并行写到尽可能多的驱动的方式选择数据,可以减少在任何给定时间处于空闲的驱动的数目。
[0017]第三,写入可以是有序的,并且取决于每个写入的大小,基于写入中的数据写到的硬驱动上的位置,可以聚合一些写入。例如,涉及将小的(例如,4千字节(kb)数据)写到驱动上的附近位置的写入可以被聚合到单个较大(例如,256 kb)写入中。因为在访问硬驱动中所涉及的大部分时间涉及将读写头定位在硬驱动的(多个)盘片的一部分之上,所以根据目的地排序和聚合数据并且然后写入经排序和聚合的数据与以其写到高速缓存的次序单独写入数据相比较而言可以是更高效的。例如,以该方式写入的数据可能导致数据写入得快得多,因为在初始定位读写头之后,不需要大量的时间来针对其余写入重新定位头。为了基于位置聚合数据,可以使用经修改的先入先出(FIFO)算法,其中数据选自高速缓存以用于基于以下各项的写入:(I)数据已经在高速缓存中的时间长度和(2)将数据写到的位置。将较小的写入(例如,涉及4kb、8kb、16kb等等的写入)聚合到较大的写入(例如,128kb、256kb、512kb等等)可以使得能够取代许多小写入而执行单个写入。另外,对写入排序(例如,聚合和未聚合的较大写入二者)使得读写头能够在没有回溯的情况下连续地写入。因为通过数据的目的地位置对待写入的数据进行排序,读写头可以在写入时在单个方向上移动。相反,写入未排序的数据可能导致读写头重复地搜索驱动上的不同位置以写入数据,从而导致搜索位置所花费的大量时间。因此,通过位置对数据排序可以减少写入数据时读写头的搜索时间量。
[0018]改进降级的效率的第四方式可以是在从高速缓存选择数据以用于写到硬驱动之前允许高速缓存填充到某种水平(例如,容量的25%)。这允许将覆写多次的数据仅一次写到硬驱动。例如,应用可以重复地修改一个或多个数据项目。如果数据项目存储在高速缓存中,则其可以在高速缓存中重复地修改并且然后一次(或周期性地)写到驱动。另外,累积高速缓存中的写入使得数据能够在写入之前排序和聚合。
[0019]第五,每个特定硬驱动可以提供有其中放置待写到特定硬驱动的数据的队列。队列可以充当用于特定硬驱动的数据的管线。通过使用队列对待写到每个硬驱动的数据进行排队,可以减少每个硬驱动处于空闲的时间量。
[0020]因此,通过使用一个或多个技术,诸如写到硬驱动而同时从高速缓存读取并且同时从高速缓存删除先前所降级的数据、通过使用队列接合尽可能多的硬驱动(以减少每个驱动的空闲时间)并且并行写入、基于目的地写入位置而排序和聚合数据以降低重新定位读写头的频繁和/或基于高速缓存的剩余容量而延迟写到硬驱动直到充分地填装高速缓存(以能够使覆写崩溃),可以更快速并且更高效地执行使高速缓存降级。技术中的平行性可以包括将行的集合写到主存储,而同时地从高速缓存读取行的下一集合(例如,已经确认为已经写到高速缓存的行),而同时地从高速缓存删除行的先前的集合(例如,已经确认为已经写到主存储的行)。
[0021 ] 说明性架构
图1是根据一些实现方案的包括降级模块的说明性架构100。架构100包括一个或多个计算设备102。计算设备102中的每一个包括计算机可读媒体104和一个或多个处理器106。计算设备102中的一个或多个可以包括应用108,其生成待写到存储媒体的数据。例如,多个应用108可以跨多个计算设备102分布。一个或多个降级线程110可以执行降级的各种方面。在一些情况中,多个降级线程110可以跨多个计算设备102分布。应用108和降级线程110中的每一个可以包括由一个或多个处理器106可执行以施行诸如本文所描述的那些功能之类的各种降级相关功能的指令。计算机可读媒体104还可以包括操作系统、设备驱动器等等。
[0022]可以将由应用108所生成的数据写到高速缓存112(还被称为降级区域)。高速缓存112可以包括M个存储设备(其中M>0),诸如第一高速缓存驱动114、第二高速缓存驱动116直到第M高速缓存驱动118。高速缓存驱动114、116和118可以包括非易失性存储设备,诸如比硬驱动更快的SSD。
[0023]驱动114、116和118中的每一个可以包括对应于待写到硬驱动的行的数据。在独立磁盘冗余阵列(RAID)中,行可以被称为条带。行是指虚拟存储设备中的顺序位置的分段,其包括以可选地可靠方式跨多个硬驱动分布的顺序位置的一个或多个分段。例如,行可以具有128kb、256kb、512kb等等的容量,并且包括(I)初级硬驱动和可选地(2)要么镜像驱动要么校验驱动。行的实际容量可以基于硬驱动的大小、硬驱动中的盘片数目、读写头的速度等等而变化。当从高速缓存112选择数据以用于写到硬驱动时,降级线程110可以逐行聚合数据。在一些实现方案中,去往虚拟存储设备中的相同行的写入可以初始地在高速缓存112中隔开定位
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1