提高散列索引密钥查找高速缓存性能的方法和系统与流程

文档序号:11965045阅读:217来源:国知局
提高散列索引密钥查找高速缓存性能的方法和系统与流程
本发明一般涉及计算机,更特别地,涉及用于增强计算存储环境中的数据处理性能的方法、系统和计算机程序产品。

背景技术:
在当今社会,计算机和计算机系统被应用于各种设置中。在住宅、办公室、学校、政府和其它设置中可找到计算环境和网络。计算环境越来越多地在一个或更多个存储环境中存储数据,在许多情况下,这些环境远离向用户呈现的本地界面。这些计算存储环境可使用常常协作的诸如硬盘驱动的许多存储装置,以存储、检索和更新组多数据,该数据然后可被提供给请求或发送数据的主机计算机。在一些情况下,数个数据存储子系统作为单个数据存储系统被统一管理。可通过组合几个处理单元或处理单元群的主机“sysplex”(系统集合体)配置来管理这些子系统。以这种方式,可以使用常常包含各种类型的存储装置的多层次/多系统计算环境以组织和处理大量的数据。

技术实现要素:
许多多层/多系统计算环境实现数据去复制(de-duplicate)技术以通过减少跨着存储装置的复制存储量来提高存储性能。数据去复制系统越来越多地被利用,原因是它们帮助减少存储数据所需要的物理存储的总量。通过确保复制数据不被多次存储来实现这种减少。事实上,例如,如果数据块与已存储的数据块匹配,那么将原数据的指针存储于虚拟存储映射中而不是对于新的数据块分配新的物理存储空间。因此,数据去复制系统中的各数据块与指示多少虚拟映射要素指向给定的数据块的“参考计数器”相关联。这种数据去复制系统必须应对能够存储将虚拟存储空间映射到物理盘存储空间的大量的映射信息或者例所谓的如映射到已存储的数据块的数据块“指纹”的问题。这种情况至少部分地由于这样一种事实,即,与在算法上确定虚拟到物理映射的常规的独立盘冗余阵列(RAID)系统不同,数据去复制映射可指向物理盘存储的任意随机块。当使用内嵌数据去复制时,由于映射的尺寸,在存储器中存储整个映射一般是不实际或者不可能的。因此,根据访问模式,只高速缓存映射的多个部分。作为结果,这些在特定时间存储映射的最相关部分的正确的高速缓存和检索变得越来越重要。为了快速访问数据,内嵌数据去复制系统必须在存储器内保留上述的存储映射信息(包含参考计数器信息)。否则,当从物理存储取出映射信息时,会引起附加的映射故障惩罚,由此明显增加存储延时。由此,存储控制器必须能够识别去复制映射的在特定的时间必须在存储器内被高速缓存的那些部分。相反,常规的高速缓存算法基于常规的“访问局部性”模型以高速缓存虚拟化映射。需要用于这种存储映射的更有效的高速缓存管理的方式,特别是出于本发明的目的,用于指纹索引或映射。鉴于以上对于更好地管理这种指纹映射信息的高速缓存的需要,提供通过处理器在计算环境中提高散列索引密钥查找高速缓存性能的各种实施例。在一个实施例中,仅作为例子,对于具有与多个数据指纹对应的多个条目的高速缓存的指纹映射,使用参考计数信息以确定在高速缓存中保留多个条目的时间长度。多个条目的具有较高参考计数的那些条目被保留得比具有较低参考计数的那些条目长。除了以上的示例性实施例以外,各种系统和计算机程序实施例被提供并提供相关的优点。附图说明为了更容易理解本发明的优点,参照在附图中示出的特定的实施例,给出以上简要描述的本发明的更具体的描述。在理解这些附图仅示出本发明的典型的实施例并因此不应被视为限制其范围之后,通过使用附图以附加的特征和细节描述和解释本发明,其中,图1是示出可实现本发明的方面的示例性计算环境的框图;图2是表示也可实现本发明的方面的数据存储系统的硬件结构的框图;图3A是示出用于提高高速缓存性能的本发明的高速缓存系统实施例的框图,其示出了数据去复制系统、数据频率索引映射和高速缓存管理模块之间的关系;图3B是示出用于提高高速缓存性能的本发明的高速缓存系统实施例的框图,其示出了高速缓存管理模块与指纹高速缓存之间的关系;图4是可实现本发明的方面的用于增强数据高速缓存性能的示例性实施例的流程图;图5是也可实现本发明的方面的用于增强数据高速缓存性能的附加示例性实施例的流程图;以及图6是也可实现本发明的方面的用于数据段的高速缓存管理的示例性实施例的流程图。具体实施方式本领域技术人员可以理解,伴随计算存储环境的发展,对为了快速访问而高速缓存于存储器中的相关数据段的任何整个存储映射的能力的限制也发展。当实现内嵌数据去复制系统时,这种限制变得更明显,如上面描述的那样,由于映射的尺寸,难以或者不可能在高速缓存存储器中存储整个存储映射。作为结果,在任何特定的时间,存储映射的仅仅多个部分被高速缓存。为了应对和改善现有技术的状态,示出的实施例描述利用由去复制系统(例如,去复制引擎)提供的各种数据段的所谓“参考计数”信息以增强指纹映射高速缓存算法,从而更好地识别必须在存储器中高速缓存的指纹存储映射信息的部分,以确保更快的内嵌数据访问并由此提高存储环境的高速缓存性能的机制。包括数据去复制功能的存储系统实现各数据段的参考计数,例如,该参考计数指示多少虚拟存储段映射到单个物理存储段上。参考计数信息一般是容易得到的,原因是这种参考计数功能可在即使不是全部也是大多数的内嵌数据去复制系统中找到。通过提高指纹存储映射信息的高速缓存性能,可明显降低内嵌数据去复制系统中的输入/输出(I/O)操作的平均延时。在以下的描述中,参照示出本发明的几个实施例并形成其一部分的附图。应当理解,在不背离本发明的范围的情况下,可以利用其它的实施例,并且,可提出结构和操作变化。现在转到图1,示出可实现本发明的方面的示例性计算机系统10。计算机系统10包括与大容量存储装置14和存储器装置16连接的中央处理单元(CPU)12。大容量存储装置可包括可被配置于独立盘冗余阵列(RAID)中的硬盘驱动(HDD)装置。可在位于系统10或其它位置中的装置14上执行进一步描述的高速缓存管理操作。存储器装置16可包括诸如电可擦除可编程只读存储器(EEPROM)的存储器或大量相关装置。存储器装置16和大容量存储装置14通过信号承载介质与CPU12连接。另外,CPU12通过通信端口18与附接有多个附加的计算机系统22和24的通信网络20连接。计算机系统10可包括一个或更多个处理器装置(CPU12)和用于计算机系统10的各单个部件的附加的存储器装置16,以执行并进行这里描述的各操作以实现本发明的目的。图2是表示根据本发明的计算机系统中的数据存储系统的硬件结构的示例性框图200。示出分别用作用于作为数据存储系统200的一部分执行数据处理的中央处理单元的主机计算机210、220、225。主机(物理或虚拟装置)210、220和225可以是数据存储系统200中的用于实现本发明的目的的一个或更多个新的物理装置或逻辑装置。在一个实施例中,仅作为例子,数据存储系统200可实现为SystemStorageTMDS8000TM。网络连接260可以是光纤通道结构、光纤通道点对点链接、以太网结构或点对点链接上的光纤通道、FICON或ESCONI/O接口、任何其它I/O接口类型、无线网络、有线网络、LAN、WAN、异质、同质、公共(即,因特网)、私人或它们的任意的组合。主机210、220和225可位于本地或者分布于一个或更多个位置之间,并且可配有任意类型的结构(或结构通道)(图2未示出)或与存储控制器240的网络适配器260,诸如光纤通道、FICON、ESCON、以太网、光纤、无线或共轴适配器。数据存储系统200因此配有适当的用于通信的结构(图2未示出)或网络适配器260。数据存储系统200在图2中被示为包括存储控制器240和存储230。为了有利于更清楚地理解这里描述的方法,存储控制器240在图2中被示为包括将在后面更详细地描述的微处理器242、系统存储器243和非易失性存储(“NVS”)216的单个处理单元。注意,在一些实施例中,存储控制器240包含多个处理单元,每个具有它们自身的处理器集合和系统存储器并通过数据存储系统200内的专用网络互连。存储230可包含通过存储网络与存储控制器240连接的诸如存储阵列的一个或更多个存储装置。在一些实施例中,包含于存储230中的装置可在回路结构被连接。存储控制器240管理存储230并促进针对存储230的写入和读取请求的处理。存储控制器240的系统存储器243存储处理器242为了执行与管理存储230相关联的功能而访问的程序指令和数据。在一个实施例中,系统存储器243包含操作软件250、与其相关联或者与其通信,并部分地被配置为用于实现本发明的功能。如图2所示,系统存储器243还可包含用于缓冲分别指的是写入/读取请求和它们的相关联的数据的“写入数据”和“读取数据”的用于存储230的数据高速缓存245或者与其通信,该数据高速缓存245在这里也被称为“高速缓存存储器”。在一个实施例中,除了实施这里描述的操作以外,数据高速缓存245被分配于系统存储器243外部的装置中,但仍然保留可被微处理器242访问,并可用于针对数据损失提供附加的安全性。在一些实施例中,为了增强数据存储系统200的性能,数据高速缓存245通过易失性存储器和非易失性存储器被实现,并通过局部总线(图2未示出)与微处理器242耦合。包含于数据存储控制器中的NVS216可被微处理器242访问,并用于为在其它的图中描述的本发明的操作和执行提供附加的支持。也可被称为“永久”高速缓存或“高速缓存存储器”的NVS216通过可以或者可以不利用外部电力以保留存储于其中的数据的非易失性存储器被实现。出于适于实现本发明的目标的任何目的,NVS可被存储于数据高速缓存245中并通过其被存储。在一些实施例中,诸如电池的后备电源(图2未示出)向NVS216供给足够的电力,以在数据存储系统200出现电力损失的情况下保留存储于其中的数据。在某些实施例中,NVS216的容量小于或等于数据高速缓存245的总容量。存储230可在物理上包含诸如存储阵列的一个或更多个存储装置。存储阵列是诸如硬盘的单个存储装置的逻辑分组。在某些实施例中,存储230包含JBOD(简单磁盘簇)阵列或RAID(独立盘冗余阵列)阵列。物理存储阵列的集合可进一步被组合以形成使物理存储与逻辑配置分离的等级(rank)。等级中的存储空间可被分配到逻辑卷中,该逻辑卷限定在写入/读取请求中规定的存储位置。在一个实施例中,图2所示的存储系统可包含具有相应的各种类型的分配的逻辑卷或“卷”。存储230a、230b和230n被示为数据存储系统200中的等级,并在这里被称为等级230a、230b和230n。等级可处于数据存储系统200的本地,或者可位于物理远程位置上。换句话说,局部存储控制器可与远程存储控制器连接,并管理远程位置处的存储。等级230a被示为配有两个整个卷234和236以及一个部分卷232a。等级230b被示为具有另一部分卷232b。因此,卷232跨着等级230a和230b被分配。等级230n被示为完全分配给卷238,即,等级230n指的是卷238的整个物理存储。对于以上的例子,可以理解,等级可被配置为包含一个或更多个部分和/或整个卷。卷和等级可进一步被分成代表固定存储块的所谓的“轨道”。轨道因此与给定的卷相关联并可被给予给定的等级。存储控制器240可包含将进一步描述的数据去复制引擎255、高速缓存管理模块257、块映射259、指纹映射261和指纹高速缓存263。高速缓存管理模块257可与存储控制器240、主机210、220、225和存储230的每个部件一起工作。本领域技术人员可以理解,高速缓存管理模块257可在结构为一个完整的模块或者可与其它的单个模块相关联并且/或者包含于其中。高速缓存管理模块257也可位于数据高速缓存245或其它部件中。存储控制器240包含用于控制对于主机计算机210、220、225的光纤通道协议的控制开关241、用于控制所有存储控制器240的微处理器242、用于存储用于控制存储控制器240的操作的微程序(操作软件)250、用于控制的数据和后面描述的各表的非易失性控制存储器243、用于暂时存储(缓存)数据的数据高速缓存245和用于帮助数据高速缓存245读取和写入数据的缓冲器244、用于控制用于控制去往或者来自存储230的数据传送的协议的控制开关241。多个缓冲器244可通过本发明被实现以帮助这里描述的操作。存储控制器240被示为包含数据去复制引擎255、存储映射/数据频率索引映射(DFIM)259(“存储映射”259)和高速缓存管理模块257。数据去复制引擎255、高速缓存管理模块257和DFIM259可与存储控制器240、主机210、220、225和存储230的每个部件一起操作,以实现根据本发明的功能。数据去复制引擎255、高速缓存管理模块257和DFIM259可在结构上为一个完整的模块或者可与其它的单个模块相关联并且/或者包含于其中。高速缓存管理模块257和DFIM259也可包含于数据高速缓存245或其它部件中。数据去复制引擎255被配置为用于与诸如微处理器242的存储控制器240的其它部件结合对于通过存储控制器240传递到存储230的写入数据执行数据去复制操作。如上所述,简言之,存储控制器240包含数据频率块映射259。数据高速缓存245(或整体称为高速缓存系统245(可包含高速缓存管理模块257、块映射259或者甚至数据去复制引擎255))从主机210、220和225或类似的装置接收然后将被置于数据高速缓存245中的写入数据。数据去复制引擎255然后针对在高速缓存245中的复制而测试写入数据,并然后在块映射259中写入其索引和频率。与块映射259结合,数据去复制引擎产生与存储的数据块对应的指纹信息,在指纹映射261中写入其索引。新数据块的指纹然后被与指纹映射中的索引指纹相比,以确定是否找到数据的确切的复制。指纹映射261可在部分上或整体上暂时存储于指纹高速缓存263中。在一个实施例中,指纹映射261的尺寸使得在任意一个时间指纹映射261的仅仅一部分可被存储于指纹高速缓存263中的“存储器内”(高速缓存)。现在转到图3A,作为示例性流程,示出本发明的各种功能方面300的框图,特别地,示出通过高速缓存管理模块260创建要在后面在高速缓存管理中使用的参考计数信息。具体而言,数据高速缓存系统245被示为接收要作对于数据高速缓存245的写入操作304通过数据去复制引擎255被处理的写入数据302。当写入数据302通过数据去复制引擎255被处理时,并且,如上所述,写入数据302通过现有存储进行复制测试,并且,去复制引擎255将频率和索引信息306传递到数据频率索引/块映射259。图3所示的包含数据去复制功能的存储系统包含用于各数据块的参考计数,它表示多少虚拟存储块映射映射到单个物理存储块上以及其它的指示。当从高速缓存245读取312数据时,块映射259被更新。包含于块映射259中的信息(包含参考计数信息310)作为读取数据312被提供给高速缓存管理模块260,高速缓存管理模块260与数据高速缓存245与存储控制器240(图2)并由此与主机210、220和225进行向双通信。现在转到图3B,作为附加的示例性流程,示出本发明的各种功能方面320的框图,特别是示出使用上述的参考计数信息310以执行对于指纹映射261的高速缓存管理信息。至少部分地基于前面在图3A中描述的活动,根据本发明的方面,高速缓存管理模块260可确定指纹映射261的哪些部分将被置于指纹高速缓存263中以及持续多长的适当的时间长度,将进一步示出这一点。如上所述,参考计数信息310被高速缓存管理模块260使用以确定指纹映射261的哪些部分将保留于指纹高速缓存263中。可通过数据去复制引擎255(例如,图3A)处理写入命令,以获得/产生代表将被写入到存储的写入数据的指纹。指纹信息322然后被提供给示出的高速缓存管理模块260,该高速缓存管理模块260从指纹高速缓存263(通过双边通信316)调用指纹映射261的高速缓存的部分,以确定是否找到确切的匹配。该结果作为指纹数据318被提供给数据去复制引擎255。如果找到确切的匹配,那么可以更新这种数据的参考计数,但是,数据不被重写到物理存储。在一个实施例中,至少部分基于用于确定指纹映射的哪些部分在存储器中被高速缓存的参考计数信息的使用,与传入的指纹信息322对应的指纹映射261的相关部分增加,并且,根据进一步描述的机制减轻对于从存储调用指纹映射261的附加部分的需要。现在转到图4,在一个示例性实施例中表示用于在存储环境中改善高速缓存性能的方法的流程图。方法400开始于(步骤402)使用上述的参考计数信息以确定在指纹高速缓存263中保留上述的指纹映射261(例如,图3B)的特定的条目(例如,部分)的适当的时间长度(步骤404)。方法400结束(406)。下面的图5是另一示例性实施例中的前面在图4中表示的参考计数信息的这种利用的实现方法的流程图。这里,方法500开始(502),然后,检查在上述的去复制操作的过程中从去复制引擎获得的参考计数数据(步骤504)。基于参考计数信息(和/或通过特定的存储策略的实现),建立指纹映射中的特定的条目或指纹映射中的数个条目的保留时间(步骤506)。继续图5,方法500然后询问参照的数据段的参考计数信息是否被更新(例如,根据去复制操作被递增),或者例如在物理块上观察到没有活动的预定的时间间隔是否已到期(步骤508)。如果情况如此,那么前面在步骤506中建立的保留时间被重新访问,以确定在高速缓存中的新的适当的保留时间(步骤510)。返回步骤508,如果参考计数信息未被更新,或者预定时间间隔没有到期,那么方法500在经过一定时间之后返回步骤508以重新询问是否满足这些条件中的任一个或两个。前面在图4和图5中描述的方法可考虑某些加权因子,诸如随时间减小的预定权重,使得甚至看到很少或者看不到活动的具有高参考计数的数据段将看到它们的相关联的权重(并由此将保留于高速缓存中的参照数据段的指纹信息的重要性)缓慢减小。本领域技术人员可以理解,为了适于特定的应用,这些加权因子可在考虑或者不考虑其它的因素的情况下以各种方式被利用,以有效地处理参照的数据段的指纹信息随经过时间的相对重要性、用途和资源利用(诸如带宽和其它缺乏系统资源)等。本领域技术人员可以理解,基于指纹映射中的特定的条目或一组条目(即,多个部分)的当前的参考计数信息,可引入各种存储策略(例如,可借助于管理员/用户建立)以影响该条目或一组条目是否应被保留一定的持续时间。由于参考计数信息对于给定的数据段表示特定的条目被访问的可能性,因此,为了确定存储于应从高速缓存存储器调出的指纹映射中的候选条目,可通过这种策略或者另外在映射高速缓存机制(诸如可通过前面描述的高速缓存管理模块实现的映射高速缓存算法)中智能地使用该同一信息。鉴于以上的情况,考虑以下的例子。十(10)个映射表条目被建立为作为待被调出的候选。在这十个映射表条目中,包含较高参考计数的那些条目(在一个实施例中,对于所有的数据段一起)将比具有较低参考计数的那些条目晚些被调出。以这种方式,具有相应的较高的参考计数的指纹映射部分被保留较长,期望是它们将被再次重新使用,并且,当出现这一点时,将在高速缓存中找到该特定的条目以用于快速访问。以下的图6示出用于使用参考计数值在高速缓存中保留映射表条目的示例性方法的流程图,其中,可以实现本发明的方面。方法600开始(步骤602),然后,询问高速缓存是否是满的,以及是否尽管如此仍从盘取出新的映射条目(由此需要调出其它的映射条目)(604)。如果情况如此,那么指纹映射条目被一并检查以确定这些条目中的哪些将被从高速缓存调出(步骤606)。作为该检查处理的部分,方法600然后询问特定的被检查的条目是否具有较高的参考计数值(例如,在一个实施例中,高于由策略设定的特定阈值)(步骤608)。如果情况如此,那么该条目保留于高速缓存中(步骤610)。如果条目被确定不具有高的值,那么条目被指定为将从高速缓存被调出(步骤612),并且,新的映射条目可在该条目位置被调入到高速缓存中。本领域技术人员可以理解,本发明的方面可体现为系统、方法或计算机程序产品。因此,本发明的方面可采取在这里可一般称为“电路”、“模块”、“处理”或“系统”的完全硬件实施例、完全软件实施例(包含固件、驻留软件、微代码等)或包含软件和硬件方面的实施例的形式。并且,本发明的方面可采取在具有体现于其上面的计算机可读程序代码的一个或更多个计算机可读介质中的计算机程序产品的形式。可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是-但不限于-电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括-但不限于-无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/操作的指令的制造品(articleofmanufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/操作的过程。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。虽然详细示出了本发明的一个或更多个实施例,但是,本领域技术人员可以理解,在不背离在以下的权利要求中阐述的本发明的范围的情况下,可以提出对于这些实施例的修改和适应。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1