基于快速持久性存储器的回写储存器高速缓存的制作方法

文档序号:6497057阅读:106来源:国知局
基于快速持久性存储器的回写储存器高速缓存的制作方法
【专利摘要】储存设备使用非易失性存储器设备用于高速缓存。储存设备以这里称为回写模式的模式操作。在回写模式下,储存设备响应于写入数据的请求,永久性地将数据写入到非易失性存储器设备中的高速缓存中,并且向请求者确认数据被永久性地写入到储存设备中。确认是在不一定将请求写入的数据写入到主储存器的情况下发送的。相反,数据稍后被写入到主储存器。
【专利说明】基于快速持久性存储器的回写储存器高速缓存
[0001]相关申请的交叉引用;权益声明
[0002]本申请主张Bharat Chandra Baddepudi等人于2011年9月30日提交的题为 “Write-Back Storage Cache Based On Fast Persistent Memory” 的临时专利申请N0.61/542045的优先权,其内容通过引用合并于此。
[0003]本申请涉及Kiran Badrinarain Goyal等人于2009年12月7日提交的题为“Caching Data Between A Database Server And A Storage System” 的申请N0.12/631985,其内容通过引用合并于此。
[0004]本申请涉及Kothanda Umamageswaran等人于2010年I月21日提交的题为“Selectively Reading Data From Cache And Primary Storage” 的申请 N0.12/691146,其内容通过引用合并于此。
【技术领域】
[0005]本发明涉及数据储存设备。
【背景技术】
[0006]在计算机技术中,数据存储在存储器(memory)设备中,数据可以从存储器设备读取和写入到存储器设备中。存储器设备可以是易失性或非易失性的。易失性存储器设备在断电后不储存数据,而非易失性存储器在断电后继续储存数据。当非易失性存储器设备又被通电时,可以读取断电时储存在非易失性存储器设备上的数据。
[0007]易失性存储器设备的示例包括易失性随机存取存储器(VRAM)。非易失性存储器设备的示例包括盘驱动器设备、闪存设备以及其主要用途是提供对一组盘驱动器或非易失性存储器设备的共享访问的储存服务器。
[0008]易失性存储器设备提供快得多但是更昂贵的访问,而非易失性存储器设备提供持久性,并且成本更低廉。为了提供大量数据的持久性并且平衡储存成本和快速访问,数据主体主要储存在非易失性存储器设备中,数据主体的小部分的临时副本储存在易失性存储器设备中,在那里所述副本被非常快并且有效率地被访问。用于保持储存在更缓慢形式的储存器中的数据的临时副本的诸如非易失性存储器设备中的存储器之类的储存器(storage)此处被称为高速缓存(cache)。储存在高速缓存中有其临时副本的数据的较慢形式的储存器此处相对于高速缓存被称为主储存器。
[0009]通常,高速缓存是易失性存储器设备,主储存器是非易失性存储器设备。然而,可能不会总是如此。高速缓存和主储存器可能都是易失性存储器或可能都是非易失性存储器。此处描述了有效率地使用用于储存器设备中的非易失性主储存器的非易失性高速缓存的方案。
【专利附图】

【附图说明】
[0010]在附图中:[0011]图1是描绘根据本发明一实施例的使用持久性高速缓存和主储存器的储存器设备的图。
[0012]图2是描绘根据本发明一实施例的包括持久性高速缓存元数据的持久性高速缓存设备的图。
[0013]图3描绘了根据本发明一实施例的在回写操作期间执行的操作。
[0014]图4是可用于实施本发明的实施例的计算机系统。
【具体实施方式】
[0015]在下面的描述中,为了说明而阐述了许多特定细节以提供对本发明的全面理解。然而显而易见的是,在没有这些特定细节的情况下也可实施本发明。在另一些情况下,以框图形式示出了已知结构和设备,以避免不必要地模糊本发明。
[0016]一般概览
[0017]此处描述了使用非易失性存储器设备用于高速缓存的储存设备。储存设备以这里称为回写模式的模式操作。在回写模式下,储存设备通过永久性地将数据写入到非易失性存储器设备中的高速缓存中来对写入数据的请求作出响应,并且向请求者确认数据被永久性地写入到储存设备中。确认被发送而不一定已经将请求写入的数据写入到主储存器。相反,数据稍后被写入到主储存器。
[0018]永久性地将数据写入到非易失性高速缓存以及向请求者确认数据已经被永久性地写入到储存设备中而不一定已经将数据写入到主储存器的操作此处被称为回写操作。
[0019]根据一实施例,储存设备也能在写通模式下写入。在写通模式下,储存设备通过永久性地将数据写入到主储存器设备中,并且然后向请求者确认数据被永久性地写入到储存设备中,来对写入数据的请求作出响应。然后,数据可以被写入到非易失性高速缓存中。
[0020]示范性储存设备
[0021]参考图1,其描绘了包括持久性高速缓存设备110的储存设备101,持久性高速缓存设备Iio包括持久性高速缓存设备110-1、110-2以及110-3。持久性高速缓存设备110中的每个都充当用于特定的一组主储存器设备(未标记)的高速缓存。持久性高速缓存设备110和相应的主储存器设备是非易失性存储器设备,持久性高速缓存设备110是比相应的主储存器设备更快形式的存储器设备,但是仅能保持少量数据。
[0022]根据一实施例,持久性高速缓存设备110是闪存设备,相应的主储存器设备是盘驱动器设备。然而,这只是在一实施例中可用来实现储存设备的存储器设备的类型的一个示例。持久性高速缓存设备可以是连接到作为主储存器设备的较大的较低速度的磁盘设备的较小的较高速度的磁盘驱动器。持久性高速缓存设备可以是连接到作为主储存器设备的较大的较低速度的闪存设备的较小的较高速度的闪存设备。
[0023]如图1所示,每个持久性高速缓存设备110都充当用于三个主储存器设备的高速缓存,但是本发明不限于持久性高速缓存设备充当其高速缓存的任意数量的主储存器设备,每个持久性高速缓存设备也不一定要服务于相等数量的主储存器设备。
[0024]储存设备客户端102是储存设备101的客户端。储存设备客户端的一个示例是数据库服务器,包括多节点数据库服务器,每个节点都运行数据库服务器的实例并且具有对储存设备101的共享访问。应指出,本发明不限于数据库服务器作为储存设备客户端,或任何数量的储存设备客户端。
[0025]根据一实施例,储存设备101是具有一个或多个CPU和易失性存储器的计算机系统。CPU根据软件的执行而管理储存设备101的操作。
[0026]储存设备101是块模式设备。块模式设备提供对称为数据块的单位的数据的客户端访问。数据块是储存设备客户端可请求从储存设备读取以及向储存设备写入的数据的最小单位。
[0027]储存设备101中的主储存器设备中的数据也按数据块来组织。数据块与唯一地标识数据块以及数据块在储存设备内的储存位置的数据块地址相关联。数据块的“主块地址”是标识数据块在储存设备101中的主储存器设备内的储存位置的地址。储存设备客户端可以按主块地址或者甚至按数据块的主块地址范围来请求数据块。
[0028]持久性高速缓存设备110中的储存器也按数据块来组织。来自主储存器设备的数据块的副本储存在持久性高速缓存设备110中。储存在持久性高速缓存设备110的数据块中的主储存器设备中的数据块的副本此处被称为高速缓存副本或高速缓存数据块。在操作的任何给定时刻,持久性高速缓存设备110中的高速缓存副本的数量远少于持久性高速缓存设备110中的数据块的数量。
[0029]高速缓存副本也具有标识持久性高速缓存设备内储存高速缓存副本的储存位置的数据块地址(“高速缓存块地址”)。显然,数据块的高速缓存副本的高速缓存块地址不同于数据块的主块地址。
[0030]为了管理持久性高速缓存设备110和相应的主储存器设备之间的数据块的高速缓存,准确地跟踪高速缓存副本是哪个数据块的副本十分重要。为了此功能,储存设备101储存并且管理高速缓存元数据120。高速缓存元数据120将高速缓存副本的高速缓存块地址映射到主储存器设备中的相应数据块的主块地址。
[0031]当储存设备客户端请求块模式储存设备写入数据块时,客户端接收用于确认数据块已经被提交(即,被永久性地写入)的提交确认。于是,当数据块接下来被客户端请求时,返回的数据块应具有最近为其发送提交确认的版本。
[0032]在回写模式下,在数据块可被写入到相应的主储存器设备之前,储存设备101将客户端请求的数据块写入到持久性高速缓存设备并且确认数据块的提交。然后,高速缓存副本可以稍后被写入到主储存器设备。
[0033]尽管高速缓存副本可以稍后写入到主储存器设备,但是在一段时间期间高速缓存副本是储存在相应的主储存器设备上的数据块版本的不同且稍后的版本。在高速缓存副本被复制到主储存器之前已经以任何方式被更新的高速缓存副本此处被称为“脏的”。跟踪高速缓存副本是脏的是非常重要的,高速缓存元数据120用于此。因此,高速缓存元数据120不仅将高速缓存副本映射到主储存器设备中的数据块,而且还指示高速缓存副本是脏的。在从主储存器复制之后尚未被修改的高速缓存副本保持与主储存器上的版本相同,因此被称为是干净的。对于任何特定高速缓存副本,高速缓存元数据120包括指示高速缓存副本是干净的还是脏的的脏标记。
[0034]高速缓存元数据120的准确地将高速缓存块地址映射到主块地址并且正确地指定脏高速缓存副本的特性此处被称为高速缓存元数据连贯性。由于储存设备101可能意外断电和/或发生故障,因此有可能脏的高速缓存副本保留在持久性高速缓存设备110中。脏的高速缓存副本可能是数据块的最近提交版本,能够准确地确定和恢复脏的高速缓存副本从而有效的数据块保持在储存设备101内并且响应于随后的客户端对数据块的读取请求而被返回是重要的。为此,在储存设备发生故障的情况下高速缓存元数据连贯性仍能持续是重要的。
[0035]为了保持高速缓存元数据连贯性,与持久性高速缓存设备的高速缓存数据块相关的高速缓存元数据储存在持久性高速缓存设备中。当数据块响应于来自储存设备客户端的数据块写入请求而被写入时,高速缓存元数据被更新以维持高速缓存元数据连贯性。为了有效率地并且最终地更新高速缓存元数据以有效率地处理数据块写入请求,希望减少保持高速缓存元数据连贯性所需的对持久性高速缓存设备的写入次数。此处描述了用于以减少所需写操作的方式更新持久性高速缓存元数据的技术。
[0036]示范的持久性高速缓存
[0037]图2是示出储存高速缓存元数据的持久性高速缓存设备的图。参考图2,它示出了持久性高速缓存设备110-1。持久性高速缓存设备110-1的一部分储存高速缓存数据块220,另一部分储存高速缓存元数据210,其也储存在数据块中。高速缓存元数据210将高速缓存数据块220中的高速缓存副本的高速缓存块地址映射到储存在主储存器设备中的对应数据块的主块地址。对于每个映射的高速缓存数据块,高速缓存元数据包括脏标记和块校验值。块校验值是从数据块的内容导出的。块校验值可以是根据数据块的内容计算出的校验和值,或者甚至可以仅是来自数据块内容的比特数。储存在持久性高速缓存设备上的数据块的持久性高速缓存元数据可以驻留在相同的持久性高速缓存设备上,或者可以驻留在未用于储存高速缓存副本的不同的持久性高速缓存设备或非易失性存储器设备上。储存在特定的非易失性存储器设备上的持久性高速缓存元数据可以对应于储存在多个非易失性存储器设备上的高速缓存副本。
[0038]示范性回写操作
[0039]图3描绘了在回写操作期间执行的过程,其最小化了对高速缓存元数据210的更新。过程中的操作是响应于从储存设备客户端接收到盘块写入请求而执行的。该请求标识要写入的数据块的主块地址,并且包括要写入的数据块的内容,其在此称为数据块内容。在下面的描述中,所描述的图3中标记了的特定操作在括号中表示。
[0040]参考图3,针对要写入的数据块,生成块校验值(305)。接下来,判断数据块的高速缓存副本是否已经在持久性高速缓存设备中(310)。判断是通过判断主块地址是否通过高速缓存元数据210被映射到高速缓存块地址而作出的。
[0041]可能有各种原因使得在持久性高速缓存设备中已经有数据块的高速缓存副本。例如,高速缓存数据块可能响应于数据块写入请求而已经写入到持久性高速缓存设备,从未复制到主储存器和/或从未在持久性高速缓存的高速缓存管理期间被替换。写通操作可能已经将数据块写入到主储存器并且然后用数据块填充持久性高速缓存设备。最终,将高速缓存副本写入到盘中。例如,通过高速缓存管理策略的执行,储存设备101可能由于各种原因而将高速缓存副本写入到主储存器设备。当高速缓存副本被选择作为受害者用于替代时,将高速缓存副本写入到主储存器中。当高速缓存副本已经驻留在持久性高速缓存中达阈值时间长度时,高速缓存副本可以被写入到持久性储存器。
[0042]如果数据块的高速缓存副本已经在持久性高速缓存设备中,则用数据块写入请求中的数据块内容来覆写高速缓存副本(315)。
[0043]接下来,判断高速缓存块是否已经是脏的(320)。如果块已经是脏的,则过程结束。跳过对高速缓存元数据210的更新的该特征被称为仅第一次写入更新(first-write onlyupdating)。否则,更新高速缓存元数据以设置脏标记,块校验值被设置为在操作305中计算的值(325)。结果,高速缓存元数据指定高速缓存数据块是它和主储存器上的版本之间的最新版本。
[0044]如果判断是数据块的高速缓存副本没有已经驻留在持久性高速缓存设备中(330),那么根据受害者选择标准,选择用于替换的受害者高速缓存副本。根据一实施例,在回写模式下,受害者选择标准要求受害者具有与在操作305中为要写入的数据块确定的块校验值不匹配的块校验值。由于稍后将说明的理由,选择带有非匹配块校验值的受害者。另夕卜,受害者应是干净的高速缓存副本,以避免需要向主储存器写入受害者。
[0045]要替换的高速缓存副本被数据块写入请求中的数据块内容覆写(335)。接下来,更新高速缓存元数据,以把要写入的数据块的主块地址映射到相应的高速缓存块地址,并且设置脏标记以指出高速缓存块是脏的,块校验值被设置为在操作305计算的值(340)。
[0046]在过程结束之后,向储存设备客户端发送提交确认以确认数据块写入请求的提交。
[0047]图3中的某些操作不限于来自客户端的盘块写入请求。例如,响应于来自储存设备客户端的针对一个或多个数据块的数据块读取请求,在确认消息中返回数据块,然后将数据块写入到持久性高速缓存设备中。为了将数据块写入到持久性高速缓存设备中,在操作330中选择受害者,如先前针对回写模式所描述的那样。然后,受害者被覆写,持久性高速缓存元数据被更新,与针对操作335和340描述的类似,除了留下设置为干净的脏标记之外。
[0048]如何保持连贯性以用于恢复
[0049]在储存设备101发生故障之后,储存在其中的数据必须被恢复。恢复需要准确地判断高速缓存块是脏版本还是有效的干净版本。这样的判断要求高速缓存元数据在故障之后是连贯的。由于故障可能在回写操作正在被执行时并且在它完成之前发生,因此重要的是,如果当在此情况下发生故障时,高速缓存元数据是连贯的。当正在执行操作时发生这样的故障时,如下面说明的那样,图3描绘的回写写入操作以跨越故障保持连贯性的方式来更新高速缓存元数据。
[0050]如果在针对需要覆写选定受害者的数据块执行回写操作时发生故障的话,则高速缓存副本受害者可能被部分地覆写,并且高速缓存元数据210从未更新。留下高速缓存元数据210将受害者的高速缓存块地址映射到受害者的对应主块地址,并且指定被部分覆写的高速缓存副本是干净的。然而,部分覆写的受害者高速缓存块的块校验值将不匹配储存在高速缓存元数据中的受害者的块校验值。
[0051]在恢复期间,错误地指定高速缓存副本是干净的的脏标记可以被检测到。对于具有指定闻速缓存副本是干净的的脏标记的闻速缓存副本,闻速缓存兀数据210中为该闻速缓存副本指定的块校验值通过将该块校验值与从高速缓存副本的内容计算的块校验值进行比较而得到验证。如果块校验值不匹配,那么脏标记错误地指定高速缓存副本是干净的。
[0052]如果相反,故障在完全覆写受害者高速缓存副本之后但是在更新高速缓存元数据210之前发生,那么仍留下高速缓存元数据210将受害者的高速缓存块地址映射到受害者的对应主块地址,并且指定部分覆写的高速缓存副本是干净的。回忆一下,被选择用于替换的受害者具有非匹配的块校验值。因此,被完全覆写的高速缓存数据块的块校验值将不匹配储存在高速缓存元数据中的受害者的块校验值。
[0053]如果在对已经在持久性高速缓存设备中具有高速缓存副本的数据块执行回写操作时发生故障,则高速缓存副本的旧版本可能被部分或完全覆写。然而,高速缓存元数据210已经指定高速缓存副本是脏的,并且正确地将高速缓存副本的高速缓存块地址映射到对应的主块地址。事实上,高速缓存元数据无论如何也不会已经被更新。
[0054]在恢复期间,检查持久性高速缓存元数据以确定哪些高速缓存数据块要作为高速缓存副本保留在持久性高速缓存中,哪些是无效的且不会作为高速缓存副本保留。如果持久性高速缓存元数据指定数据块是脏的,那么数据块作为高速缓存副本保留。如果持久性高速缓存元数据指定数据块是干净的,那么比较持久性高速缓存元数据中指定的相应的块校验值和从数据块的内容计算的块校验值。如果块校验值不匹配,那么数据块不作为高速缓存副本被保留。根据一实施例,为了加快恢复,在恢复期间不执行在高速缓存元数据210中为干净数据块指定的块校验值的验证,而是替代地当这样的数据块被储存设备客户端请求时执行。这避免了在恢复期间读取许多高速缓存副本。
[0055]优化
[0056]图3描绘的用于执行写入操作的过程以多种方式优化对高速缓存元数据210的更新。在回写操作期间,对持久性高速缓存设备110至多作出一次写入以更新高速缓存元数据。此外,对于针对已经脏的高速缓存副本的回写操作,仅第一次更新(first-time onlyupdate)特征消除了向持久性高速缓存设备的进一步写入。
[0057]当储存设备101正以回写模式操作时,不需要所有盘块写入请求执行为回写操作。相反,只有某些类别的盘块写入请求需要作为回写操作来执行。例如,储存设备101可以储存数据库服务器的数据库数据。数据块写入请求可以包括针对用户数据(例如,储存在表中的数据)的数据块写入请求和针对日志文件的数据块写入请求。针对用户数据的数据块写入请求可以在回写模式下执行,而针对日志文件的数据块写入请求在不向持久性高速缓存设备110进行写入的情况下被处理。此方案腾出主储存器设备用于写入日志文件。
[0058]如上所述,高速缓存元数据210储存在数据块中。对于高速缓存副本的回写可能需要对储存在持久性高速缓存设备中的同一数据块中的高速缓存元数据进行更新。当判断对于高速缓存副本的回写操作需要对同一高速缓存元数据数据块进行更新时,高速缓存块可以被覆写,并且更新被批处理,从而可以使更新作为对同一数据块的一次更新。根据一实施例,为了向持久性高速缓存设备写入多个块,受害者选择标准可要求受害者的持久性高速缓存元数据在同一个数据块中。
[0059]回写模式具有在持久性高速缓存设备中而非在主储存器设备中吸收写入的优点。然而,持久性高速缓存设备可能不如主储存器设备那样可靠。例如,闪存设备可能比盘驱动器设备更易遭到不可恢复的故障。数据块的脏的和最新的版本可能不是可恢复的。可能必须执行其他更费时的恢复模式。
[0060]根据一实施例,储存设备101能够以回写模式或写通模式操作,当在某一种模式下有利时,自动地在回写和写通模式之间转变。只有当写入操作的级别(“写入操作负载”)在某一阈值水平以上的情况下,处于回写模式可以是有利的。例如,当写入操作负载低于某一阈值时,由持久性高速缓存设备吸收写入操作所提供的减轻可能是极小的,使储存设备101面对不可恢复的故障的风险,好处极少或没有。然而,当写入操作负载超出某一阈值时,可以实现更多的回写模式的好处。储存设备101可以在写通模式下监测写入操作负载。如果判断当在写通模式下负载水平已经达到某一阈值,则储存设备101转变到回写模式。如果判断当在回写模式下负载水平低于某一阈值,则储存设备101转变到写通模式。
[0061]为了从回写模式转变到写通模式,应将脏块写入到主储存器设备以“清洁”持久性高速缓存设备。在写通模式下,持久性高速缓存设备中的高速缓存副本应该是干净的,因为所有写入都首先被提交到主储存器,然后再被传播到持久性高速缓存设备。
[0062]主储存器设备对于数据块写入操作可能不会体验到等效的写入操作负载。在这样的情况下,可以将持久性高速缓存设备的较大部分分配给体验到较重负载的主储存器设备。可以监测每一个主储存器设备上的负载,以自动地在主储存器设备之间变换持久性高速缓存设备的分配。
[0063]硬件概览
[0064]根据一实施例,此处所描述的技术通过一个或多个专用计算设备来实现。专用计算设备可以被硬连线以执行所述技术,或者可以包括被永久地编程为执行所述技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或可以包括被编程为根据固件、存储器、其他存储器或组合中的程序指令来执行技术的一个或多个通用硬件处理器。这样的专用计算设备也可以利用自定义编程来组合自定义硬连线逻辑器、ASIC或FPGA来完成所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、网络设备或包括硬连线和/或程序逻辑器以实现所述技术的任何其他设备。
[0065]例如,图4是示出了在其上可以实现本发明的实施例的计算机系统400的框图。计算机系统400包括用于传递信息的总线402或其他通信机制,以及与总线402连接以用于处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。
[0066]计算机系统400还包括耦合到总线402的主存储器406,诸如随机存取存储器(RAM)或其他动态储存设备,用于储存信息和待由处理器404执行的指令。主存储器406还可以用于在待由处理器404执行的指令的执行过程中存储临时变量或其他中间信息。这样的指令,当存储在可以被处理器404访问的非暂时性存储介质中时,使计算机系统400称为自定义为执行在指令中指定的操作的专用计算机。
[0067]计算机系统400还包括耦合到总线402的只读存储器(ROM) 408或其他静态储存设备,以用于为处理器404存储静态信息和指令。提供了储存设备410,诸如磁盘或光盘,其耦合到总线402以用于储存信息和指令。
[0068]计算机系统400可以通过总线402连接到显示器412,如阴极射线管(CRT),用于向计算机用户显示信息。包括字符和其他键的输入设备414耦合到总线402,以便向处理器404传递信息和命令选择。另一种用户输入设备是光标控制装置416,诸如鼠标、轨迹球或光标方向键,用于向处理器404传递方向信息和命令选择,并且用于控制显不器412上的光标移动。此输入设备通常具有沿两个轴,即第一轴(例如X)和第二轴(例如y)的两个自由度,其允许设备指定平面中的位置。
[0069]计算机系统400可以使用自定义的硬连线逻辑器、一个或多个ASIC或FPGA、固件和/或与计算机系统相结合导致或编程计算机系统400为专用计算机的程序逻辑器,来实现此处所描述的技术。根据一实施例,响应于处理器404执行主存储器406中包含的一个或多个指令的一个或多个序列,由计算机系统400执行此处的技术。可以从另一储存介质诸如储存设备410将这样的指令读取到主存储器406中。执行主存储器406中包含的指令序列会使处理器404执行此处所描述的处理步骤。在替选实施例中,可以使用硬连线的电路系统来代替软件指令或与软件指令相结合。
[0070]如此处所使用的术语“储存介质”是指储存数据和/或导致机器以特定方式来操作的指令的任何非暂时性介质。这样的储存介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如储存设备410。易失性介质包括动态存储器,如主存储器406。储存介质的常见形式包括例如软盘、硬盘、固态驱动器、磁带或任何其他磁数据储存介质、CD-ROM或任何其他光数据储存介质、具有孔图案的任何物理介质、RAM、PROM以及EPROM、FLASH-EPROM、NVRAM、任何其他存储器芯片或盒。
[0071]储存介质不同于传输介质,但是可以和传输介质一起使用。传输介质参与储存介质之间的信息传输。例如、传输介质包括同轴电缆、铜线和光纤,包括构成总线402的线路。传输介质还可以呈现为声波或光波的形式,如在无线电波和红外数据通信的过程中生成的那些。
[0072]各种形式的介质可以涉及向处理器404传送一个或多个指令的一个或多个序列以供其执行。例如,指令最初可以位于远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并且使用调制解调器通过电话线路发送指令。计算机系统400本地的调制解调器可以通过电话线接收数据,并使用红外发射器将数据转换为红外信号。红外检测器可以接收红外信号中携带的数据,合适的电路可以将数据置于总线402上。总线402向主存储器406传送数据,处理器404从主存储器406中检索指令并执行这些指令。在由处理器404执行之前或之后,由主存储器406接收到的指令可以可选地存储在储存设备410中。
[0073]计算机系统400还包括耦合到总线402的通信接口 418。通信接口 418提供连接到网络链路420的双向数据通信,而网络链路又连接到局域网422。例如,通信接口 418可以是用于提供到对应的电话线路类型的数据通信连接的综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器。作为另一个示例,通信接口 418可以是提供到兼容的LAN的数据通信连接的局域网(LAN)卡。还可以实现无线链路。在任何这样的实现中,通信接口 418发送和接收携带了代表各种信息的数字数据流的电的、电磁的或光的信号。
[0074]网络链路420通常通过一个或多个网络提供到其他数据设备的数据通信。例如,网络链路420可以通过局域网422提供到主机计算机424或到由因特网服务提供商(ISP) 426运营的数据设备的连接。ISP426又通过世界范围的现在通常被称为“因特网”428的数据包数据通信网络,提供数据通信业务。局域网422和因特网428两者都使用携带了数字数据流的电的、电磁的或光的信号。向计算机系统400以及从计算机系统400传送数字数据的经过各种网络的信号以及网络链路420上的信号,经过通信接口 418的信号,是传输介质的示例形式。
[0075]计算机系统400可以通过网络、网络链路420和通信接口 418,发送消息和接收数据,包括程序代码。在因特网的情况下,服务器430可以通过因特网428、ISP426、局域网422和通信接口 418为应用程序传输被请求的代码。
[0076]接收到的代码可以在接收时由处理器404执行,和/或存储在储存设备410或其他非易失性储存器中,供以后执行。
[0077]在前述的说明书中,参考可能在各实现之间不同的很多具体细节描述了本发明的各实施例。相应地,说明书和附图应被视为说明性的,而不是限制性的。本发明的范围以及 申请人:想要作为本发明的范围的内容的唯一的并且排它性的指示是本申请以特定形式发布的权利要求书(包括任何随后校正)的书面和等价范围。
【权利要求】
1.一种方法,包括以下步骤: 储存设备从储存设备客户端接收将数据块写入到所述储存设备的数据块写入请求; 其中,所述储存设备包括一个或多个主储存器设备以及一个或多个持久性高速缓存设备; 向所述一个或多个持久性高速缓存设备中的持久性高速缓存设备储存所述数据块,作为储存在所述一个或多个主储存器设备中的数据块版本的高速缓存副本; 响应于将所述数据块储存到所述持久性高速缓存设备,向所述储存设备客户端发送确认以确认所述数据块的写入的提交;以及 在发送所述确认之后,所述储存设备将所述数据块储存到所述一个或多个主储存器设备。
2.如权利要求1所述的方法,所述步骤还包括: 在储存所述数据块作为高速缓存副本之后并且在发送所述确认之前,更新储存在所述一个或多个持久性高速缓存设备中的持久性高速缓存元数据,从而: 将所述数据块的高速缓存块地址映射到所述数据块的主块地址; 与所述闻速缓存副本相关联地储存指定所述闻速缓存副本是脏的的脏标记; 与所述高速缓存副本相关联地储存从所述高速缓存副本的内容计算的块校验值。
3.如权利要求2所述的方法,所述步骤还包括: 在发送所述确认之后并且在向所述一个或多个主储存器设备储存所述数据块之前,所述储存设备从储存设备客户端接收将所述数据块写入到所述储存设备的另一数据块写入请求,所述请求指定所述数据块的数据块内容; 用所述数据块内容覆写所述高速缓存副本; 响应于覆写所述高速缓存副本,向所述储存设备客户端发送另一确认以确认所述数据块的提交;以及 其中,发送所述另一确认是在不更新所述持久性高速缓存元数据以反映所述高速缓存副本的覆写的情况下执行的。
4.如权利要求1所述的方法,其中,所述一个或多个持久性高速缓存设备是闪存设备,所述一个或多个主储存器设备是盘驱动器设备。
5.如权利要求1所述的方法,所述步骤还包括: 当所述储存设备以回写模式操作时,监测所述一个或多个主储存器设备的写操作负载;以及 基于所述写操作负载,确定要从回写模式转变到写通模式。
6.如权利要求1所述的方法,所述步骤还包括: 所述储存设备从储存设备客户端接收将相应的数据块写入到所述储存设备的多个数据块写入请求,所述多个块写入请求中的各个特定的数据块写入请求请求写入不同的数据块; 针对所述多个块写入请求中的各个特定的数据块写入请求,向所述一个或多个持久性高速缓存设备中的所述持久性高速缓存设备储存相应的数据块,作为储存在所述一个或多个主储存器设备中的相应的数据块版本的高速缓存副本; 对储存持久性高速缓存元数据的数据块执行一次写入,以更新所述持久性高速缓存元数据从而反映针对所述多个数据块写入请求中的全部请求的相应的数据块写入; 仅在执行对储存所述持久性高速缓存元数据的数据块的所述一次写入之后,针对所述多个块写入请求中的每个特定的数据块写入请求,向相应的储存设备客户端发送确认以确认相应数据块的提交。
7.如权利要求1所述的方法,还包括以下步骤: 所述储存设备从储存设备客户端接收读取储存在所述一个或多个主储存器设备中的另一数据块的数据块请求; 向所述一个或多个持久性高速缓存设备中的持久性高速缓存设备储存所述另一数据块,作为所述另一数据块的高速缓存副本;以及 更新储存在所述一个或多个持久性高速缓存设备中的持久性高速缓存元数据,从而: 将所述数据块的高速缓存块地址映射到所述数据块的主块地址;以及 与所述高速缓存副本相关联地储存从所述高速缓存副本的内容计算的块校验值。
8.一种方法,包括以下步骤: 储存设备从储存设备客户端接收将数据块写入到所述储存设备的数据块写入请求; 其中,所述储存设备包括一个或多个主储存器设备以及一个或多个持久性高速缓存设备; 选择储存在所述一个或多个持久性高速缓存设备中的要用所述数据块替换的受害者闻速缓存副本; 其中,所述持久性高速缓存元数据: 将所述受害者的高速缓存块地址映射到所述受害者是其高速缓存副本的数据块的主块地址; 包含指定所述受害者是干净的的脏标记; 将块校验值与所述受害者相关联; 用所述数据块的内容覆写所述持久性高速缓存设备中的所述受害者; 在更新所述持久性高速缓存元数据以反映所述受害者的覆写之前,遭遇储存设备故障;以及 所述储存设备执行恢复,其中,执行恢复包括: 基于代替所述受害者储存在所述持久性储存设备中的所述数据块的内容,生成块校验值, 在(1)基于代替所述受害者储存的所述数据块的内容生成的所述块校验值和(2)通过所述持久性高速缓存元数据与所述受害者相关联的所述块校验值之间进行比较,以及基于所述比较,检测所述持久性高速缓存元数据包含错误的脏标记,所述错误的脏标记指定代替所述受害者储存的所述数据块是干净的。
9.一种方法,包括以下步骤: 储存设备从储存设备客户端接收将数据块写入到所述储存设备的数据块写入请求; 其中,所述储存设备包括一个或多个主储存器设备以及一个或多个持久性高速缓存设备; 判断所述数据块的高速缓存副本储存在所述一个或多个持久性高速缓存设备中的持久性高速缓存设备中;其中,所述持久性高速缓存元数据: 将所述高速缓存副本的高速缓存块地址映射到所述高速缓存副本是其副本的数据块的主块地址; 包含指定所述高速缓存副本是脏的的脏标记;以及 将块校验值与受害者相关联; 用所述数据块请求中指定的所述数据块的内容覆写所述持久性高速缓存设备中的所述闻速缓存副本; 向所述储存设备客户端发送确认以确认所述数据块的写入的提交;以及所述储存设备执行恢复,其中执行恢复包括基于所述脏标记,判断所述高速缓存副本的覆写版本是脏的。
【文档编号】G06F12/08GK103917963SQ201280055057
【公开日】2014年7月9日 申请日期:2012年9月28日 优先权日:2011年9月30日
【发明者】B·C·巴德朴迪, J·R·洛伊莎, 胡维民, K·尤玛玛格斯瓦兰, A·特苏科曼, B·厄利克曼, J·W·李, 是佳, K·B·戈亚尔, S·阿亚 申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1