预防存储控制器的分区高速缓存中写饥饿的装置和方法

文档序号:6611910阅读:201来源:国知局
专利名称:预防存储控制器的分区高速缓存中写饥饿的装置和方法
技术领域
本发明涉及管理存储控制器中的写高速緩存,并且更特别地,涉及预防存储控制器的分区写高速緩存中的写饥饿(write starvation )。
技术背景本发明是在现有技术上的改进,其包括涉及Kevin J. Ash于2004年8 月10日授权的美国专利No. 6,775,738的专利,下文通过引用的方式将其 并入本说明书。存储控制器(例如,来自国际商业机器公司的Enterprise Storage Server )管理从网络上的主计算机到一个或多个存储设备的存储 请求和检索。存储设备可以包括各种形式的硬盘驱动器,例如直接访问存 ^i殳备("DASD")、廉价/独立磁盘冗余阵列("RAID"),以及简单 磁盘捆绑("JBOD")。存储控制器还可以访问诸如磁带驱动器、光驱动器等的其它存储设备。存储控制器通常包括通用高速緩冲存储器(高速緩存),其是易失性 存储器,其中在存储控制器断电、在重新引导时等情况下,会丢失内容。 另外,很多存储控制器包括非易失性存储器("VS")形式的写高速緩 存,其包括某种形式的备用电力,例如电池,以便预防在断电、重新引导 等情况下内容的丢失。通常,当存储控制器接收到将文件更新或完整文件存储到存储控制器 可访问的存#^殳备上的请求时,存储控制器对数据使用快写操作.在快写 操作中,存储控制器向高速緩存写入文件更新或完整文件的一个副本以及 向写高速緩存写入文件更新或完整文件的一个副本,并且然后通知主机写 过程完成。(为了简明起见,此后术语"更新"包括文件更新、完整文件, 或者请求存储到存储设备上的任何其它的数据。)存储控制器然后使用离 台(destage)过程将更新从高速緩存复制到目标存储设备。在向目标存储 设备写入更新时,快写过程比与主机保持连接更有效率。将更新的副M储在写高速緩存中,以确保在电力失效、系统重新引 导或其它问题造成高速緩存的内容在将更新离台至目标存储控制器之前丢 失的情况下不丢失更新。在将更新离台至存储设备之后,高速緩存和写高 速緩存中该更新的位置可以被分配给另 一使用。通常写高速緩存具有比写 操作可用的高速緩存实质上小的存储空间。在对在存储请求中可以使用多少写高速緩存方面没有任何限制的情况 下,存储设备可以控制对损害请求存储更新的其它主机的写高速緩存的使 用。例如,在存在连接至存储控制器的多个存^i殳备的情况下,例如RAID 阵列,高速緩存和写高速緩存可以存储打算给多个存储设备的更新,倘若 写高速緩存实质上充满了给一个目标存^i更备的更新并且该目标存^i殳备 出现故障,那么如果写高速緩存充满了来自故障存储设备的数据,则不能 够对指向幸存(surviving)存^i殳备的写入返回完成状态。除非将更新复 制到高速緩存和写高速緩存二者才返回完成状态.在另一例子中,如果存^i殳^f氐速处理存餘清求,则该存储设备可以 控制写高速緩存。可以在将更新离台至较慢者的程度上对提交存 求的 其它过程进行延迟,控制存^i殳备。如果由于故障驱动器导致重建存^i殳 备中的一个或多个磁盘驱动器,或者如果到写高速緩存中的控制存储设备 的更新主要包括随机(非顺序)更新,则对控制存储设备的离台操作可以 低速运行.随机更新可能花费较长时间离台,因为它们具有较长的磁盘访 问时间,并且在RAID环境中,需要对每个随机更新进行恒定的奇偶校验 重新计算.可以将一个或多个存^i殳备控制写高速緩存并且对处理其它存 储请求造成延迟称为写饥饿。在所引用的Ash的专利(下文称为"Ash")中给出了一种改进。在 Ash中,向存储控制器可访问的存^i殳备分配存^i殳备可以使用的最大比 例的写高速緩存。首先,确定存储控制器可访问的存賴欣备的数目。然后 将存^i殳备写高速緩存限制(NVS阈值)分派给每个等级。等级可以包括
单个存储设备或一组存储设备,例如在RAID阵列或JBOD中。然后可以 向每个等级分派统一的存储设备写高速緩存限制或者可以向每个等级分派 不同的存储设备写高速緩存限制,对于效率,每个等级可用的写高速緩存的数量总计可以超过可用写高 速緩存的100%。通常,如果有四个或更多的等级,则每个等级的存储设 备写高速緩存限制是25%。限制等级的写高速緩存的可用性有助于解决存 储设备或等级控制写高速緩存并造成写饥饿的问题。然而,引入高容量、 低成本的邻线(nearline )存储设备给出了在预防写高速緩存的写饥饿方面 的另外的挑战。邻线存储设备是在线存^i殳备和离线存储设备之间的折衷。 在线存储设备可以以具有对数据恒定、非常快速的访问为特征,离线存储 设备的特征在于出于#目的或长期存储的非常见访问。诸如光纤信道ATA (高级技术配件)驱动器或串行ATA驱动器这样 的邻线存储设备由于其每字节的低成本是具有吸引力的。然而,邻线存储 设备具有与在线、服务器类存^i殳备不同的可靠性特性,其中当施加服务 器类存储设备工作负荷时,服务器类存^f^殳备揭露邻线存储设备有故障. 邻线存储设通it基于工作负荷调整其操作行为来补偿其限制。为了限制 机械部分上的压力以及预防邻线存^i殳备随后的故障,供应商已经实现了 抑制设备活动的方法。虽然抑制设备活动限制了机械压力,但却降低了时 间响应特性和性能。将邻线存储设备引入上述分区高速緩存系统造成了其中可能发生写饥 饿的情况。如果存储控制器可访问多个邻线存储i殳备,而每个邻线存储设 备均可以由分配的存储设备写高速緩存限制所限制,则邻线存储i殳备的组 合可以各自使用其被分配的写高速緩存并且引起写查找.例如,四个或更 多的邻线存储设备可以由存储控制器访问,并且具有25%的存储设备写高 速緩存限制。随着工作负荷在邻线设备上增加,邻线存^i殳备可能开始减 速(throttle back)。当邻线存储储设备减速时,到邻线存储设备的离台花费 比最优操作更多的时间,并且处于负荷之下的每个邻线存储设备然后可能 占用更多的写高速緩存。四个邻线存储设备中的每一个均可以占用达25%
的写高速緩存并且控制整个写高速緩存。根据前述讨论,存在对这样一种装置、系统和方法的需要应该是显而 易见的,即这种装置、系统和方法预防了具有对邻线、低性能存储设备的 访问的存储控制器的写饥饿。有益地,这样的装置、系统和方法将限制存 储控制器可访问的邻线、低性能存储设备可用的写高速緩存的数量。发明内容响应于现有技术的当前状况,并且特别地,响应于现有技术中尚未由 当前可用的存储控制器完全解决的问题和需要已经开发了本发明。因此, 已经开发了本发明以提供一种用于预防在具有对低性能存储设备的访问的 存储控制器中的写饥俄的装置、系统和方法,其克服了现有技术中上述很 多或所有缺点。给出了本发明的一种方法,用于预防在具有对低性能存^^殳备的访问 的存储控制器中的写饥俄.所公开的实施例中的方法实质上包括实现以下关于所描述的装置和系统的IMt所给出的功能所必需的步骤.在一个实施例中,所述方法包括为存储控制器可访问的每个存储设备分》)M^ti殳备写 高速緩存限制'所述存^i殳备写高速緩存限制包括对于写操作来iJ^H^殳 备可用的存储控制器的写高速緩存的最大数量,至少一个存^i殳备包括低 性能存储设备,并且所述存^i殳备可用的存储总量包括大于所述写高速緩 存的总存储容量的数量,所述方法包括设置低性能写高速緩存限制.所述低性能写高速緩存限 制包括对于写操作来说可供所述至少一个低性能存储设W用的写高速緩 存的数量。所述至少一个低性能存储i殳备可用的写高速緩存的数量包括小 于所述写高速緩存的总存储容量的数量。在一个实施例中,所述低性能存 餘没备包拾故配置以响应于重工作负荷而降低性能的存^i殳备。在另一实 施例中,所述低性能存储设备包括邻线存储设备.在另一实施例中,所述 写高速緩存包括非易失性存储器。所述方法还可以包括接收将更新存储到低性能存储设备的请求;响
应于所述更新的大小加上待写入所述低性能存^i更备的更新所占用的写高 速緩存的数量小于或等于所述存#^殳备写高速緩存限制,以及所述更新的 大小加上待写入所述存储控制器可访问的低性能存储设备的更新所占用的 写高速緩存的数量小于或等于所述低性能写高速緩存限制,将所述更新存 储在所述写高速緩存中;以及将所述更新写入所述低性能存储设备。在另 一实施例中,所述方法包括接收将更新存储到低性能存储设备的请求; 以及响应于所述更新的大小加上待写入所述低性能存^i殳备的更新所占用 的写高速緩存的数量大于所述存^i殳备写高速緩存限制,或者所迷更新的 大小加上待写入所述存储控制器可访问的低性能存^i殳备的更新所占用的 写高速緩存的数量大于所述低性能写高速緩存限制,延迟对所述更新的存 储。在另一实施例中,延迟对所述更新的存储包括对重新连接请求所述 更新的主机所要求的重新连接参数进行排队,以及从所述主机断开.在进一 步的实施例中,至少 一个存储设备包括廉价磁盘冗余阵列 ("RAID")阵列.在另一实施例中,每个存^i更备可用的写高速緩存的 最大数量大于所述写高速緩存的总存储容量除以所述存储控制器可访问的 存^i殳备的总数。在另一实施例中,所述存储控制器可访问的每个存储设 备的存储设备写高速緩存限制包括对于每个存^i殳备相等的数量,在又一 实施例中,所述存储控制器可访问的每个存储设备的存储设备写高速緩存 限制包括对于每个存^i殳备不同的限制。在一个实施例中,当所迷存储控 制器可访问四个或更多的存^i殳备时,存^i殳备的存^i殳备写高速緩存限 制被限制在所述写高速緩存的总存储容量的25%。在另一实施例中,当所 述存储控制器可访问两个或更多的低性能存^f^殳备时,所述低性能写高速 緩存限制不超过所述写高速緩存的总存储容量的 一半。提供了一种预防存储控制器的分区高速緩存中的写饥饿的装置,其具 有被配置以在功能上执行分派存储写高速緩存限制以及低性能写高速緩存 限制的必要步骤的多个模块.所描述的实施例中的这些模块包括存^i殳备 分配模块,其为存储控制器可访问的每个存^i殳备分派存储写高速緩存限 制,所述存^i殳备写高速緩存限制包括对于写操作来it^f^殳备可用的存 储控制器的写高速緩存的最大数量。至少一个存储设备包括低性能存^i殳 备,并且所迷存^i殳备可用的存储总量包括大于所述写高速緩存的总存储 容量的数量。所述装置包括低性能写高速緩存限制模块,其设置低性能写 高速緩存限制。所述低性能写高速緩存限制包括对于写^^作来说可供所述 至少一个低性能存储设^^吏用的写高速緩存的数量。所述至少一个低性能 存储设备可用的写高速緩存的数量包括小于所述写高速緩存的总存储容量 的数量。在一个实施例中,所述装置被配置以包括请求模块,其接收将更新 存储到低性能存储设备的请求;写高速緩存存储模块,其将所述更新存储 在所述写高速緩存中;以及离台模块,其将所述更新离台至所述低性能存 ^i更备。响应于所述更新的大小加上待写入所述低性能存^i殳备的更新所 占用的写高速緩存的数量小于或等于所述存储设备写高速緩存限制,以及 所述更新的大小加上待写入所述存储控制器可访问的低性能存储设备的更 新所占用的写高速緩存的数量小于或等于所述低性能写高速緩存限制,所 迷写高速緩存存储模块将所述更新存储在所述写高速緩存中。在一个实施 例中,所述存储控制器包括易失性高速緩存,并且所述写高速緩存存储模 块将所述更新的副本存储在所述写高速緩存中以及将所述更新的副;M"储 在所述易失性高速緩存中,并且所述离台模块将所述更新从所述易失性高 速緩存离台至所述低性能存储设备'在一个实施例中,所述装置被进一步配置以包括延i^块,响应于所 述更新的大小加上待写入所述低性能存^i更备的更新所占用的写高速緩存 的数量大于所述存^i殳备写高速緩存限制,或者所述更新的大小加上待写 入所述存储控制器可访问的低性能存^fti殳备的更新所占用的写高速緩存的 数量大于所述低性能写高速緩存限制,所^,块延迟对所述更新的存 储.还给出了本发明的一种预防在具有对低性能存储设备的访问的存储控 制器中的写卡几俄的系统.所述系统可以由多个存^i殳备来体现,其中所述 存储设备中的至少一个包括低性能存储设备,以及连接至所述多个存储设 备的存储控制器。特别地,在一个实施例中,所述存储控制器包括存^i殳 备分配模块,其为所述存储控制器可访问的每个存储设备分派存储写高速 緩存限制。所述存^f殳备写高速緩存限制包括对于写操作来说存^i更备可 用的存储控制器的写高速緩存的最大数量。至少一个存^i殳备包括低性能 存储设备,并且所述存^i殳备可用的存储总量包括大于所述写高速緩存的 总存储容量的数量。所述存储控制器包括低性能写高速緩存限制模块,其设置低性能写高 速緩存限制。所述低性能写高速緩存限制包括对于写操作来说可供所述至 少一个低性能存^i殳备使用的写高速緩存的数量。所述至少一个低性能存 ^i殳备可用的写高速緩存的数量包括小于所述写高速緩存的总存储容量的 数量。所述系统可以进一步包括通过所述存储控制器具有对所述存^i殳备 中至少一个的访问的主机,其中所迷存储控制器用于将更新写入所述至少 一个存储设备。在一个实施例中,主机通过存储区域网与所述存储控制器 进行通信。贯穿本说明书所谈及的特征、优点或类似的语言并不暗指随本发明可 以实现的所有特征和优点应当在或者是在本发明的任何单个的实施例中. 更确切地,将涉及特征和优点的语言理解为意指在本发明的至少一个实施 例中包括了结合实施例所描述的具体特征、优点或特性。因而,贯穿本说 明书所讨论的特征和优点以及类似的语言可以,但不一定,指的是相同的 实施例。此外,可以在一个或多个实施例中以任何适当的方式结合所描述的本 发明的特征、优点以及特性。相关领域的技术人员可以认识到,在不具有 特定实施例的一个或多个具体特征或优点的情况下仍然可以实践本发明。 在其它的实例中,可以在特定的实施例中认识到在本发明的所有实施例中 可能没有呈现的另外的特征和优点,根据下面的描述以及所附的权利要求,本发明的这些特征和优点将变 得更加充分显见,或者通过下文所阐述的本发明的实践可以获悉本发明的 这些特征和优点。


为了将更容易理解本发明的优点,通过参照附图中所说明的具体实施 例将给出对以上简要描述的本发明的更具体的描述。理解到这些附图仅描 绘了本发明的典型实施例,并不因此而被认为是对其范围的限制,通过使用附图,将利用附加的特征和细节描述和解释本发明,其中图l是说明了依照本发明的系统的一个实施例的示意性框图,该系统 预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;图2是说明了依照本发明的存储控制器的高速緩存的一个实施例的示 意性框图,该存储控制器具有对低性能存储设备的访问以及具有预防存储 控制器中的写饥饿的装置;图3是说明了依照本发明的装置的一个实施例的示意性框图,该装置 预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;图4是说明了依照本发明的装置的另一实施例的示意性框图,该装置 预防在具有对低性能存储设备的访问的存储控制器中的写々几俄;图5是说明了依照本发明的方法的一个实施例的示意性流程图,该方 法用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿;以 及图6是说明了依照本发明的方法的另一实施例的示意性流程图,该方 法用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。
具体实施方式
本说明书中所描述的很多功能单元已经被标记为模块,以便更具体地 强调其实现独立性.例如,模块可以作为包括定制VLSI电路或门阵列的 硬件电路、诸如逻辑芯片、晶体管或其它分立元件的现成半导体来实现. 模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备 等的可编程硬件设备中实现。模块还可以在由各种类型的处理器执行的软件中实现。举例来i兌,可
执行代码的标识模块可以包括可以例如组织为对象、过程或函数的计算机 指令的一个或多个物理或逻辑块。然而,标识模块的可执行体不需要在物 理上位于一起,但却可以包括存储在不同位置的不同指令,当在逻辑上连 接在一起时,其包括该模块并且实现对该模块所规定的目的。实际上,可执行代码的模块可以是单个指令或很多指令,并且甚至可 以分布在几个不同的代码段上、在不同的程序间,以及跨几个存储设备。 类似地,文中可以在模块内标识和说明操作数据,并且可以以任何适当的 形式体现以及在任何适当类型的数据结构中组织操作数据。操作数据可以 作为单个数据集来收集,或者可以分布在不同位置上(包括分布在不同存 储设备上),以及可以(至少部分地)仅作为系统或网络上的电子信号而 存在。贯穿本{兌明书所谈及的"一个实施例"、"实施例"或类似的语言意 味着在本发明的至少一个实施例中包括了结合实施例所描述的特定特征、 结构或特性。因而,贯穿本说明书所出现的短语"在一个实施例中"、"在 实施例中"以及类似的语言可以,但不一定,都指的是相同的实施例,涉及的信号承载介质可以采取能够产生信号、导致信号产生或导致执 行数字处理装置上的机器可读指令的程序的任何形式。信号承载介质可以由传输线、压缩磁盘、数字视盘、磁带、Bernoulli驱动器、磁盘、穿孔卡 片、闪速存储器、集成电路或其它数字处理装置存储设备来体现。此外,可以在一个或多个实施例中以任何适当的方式结合所描述的本 发明的特征、结构或特性。在下面的描述中,ll供了各种具体的细节,例 如编程的例子、软件模块、用户选择、网络事务、数据库查询、数据库结 构、硬件模块、硬件电路、硬件芯片等,以便提供对本发明的实施例的透 彻理解。然而,相关领域的技术人员可以认识到,在不具有一个或多个具 体细节的情况下,或者利用其它的方法、组件、材料等,仍然可以实践本 发明。在其它的实例中,并未详细示出或描述公知的结构、材料或操作, 以免模糊本发明的方面。文中所描述的示意性流程图通常作为逻辑流程图来阐述。如此,图示的顺序以及标记的步骤表示的是所给出的方法的一个实施例。可以构想出 在功能、逻辑或效果上等效于所说明的方法的一个或多个步骤或其部分的 其它步骤和方法。另外,提供了所采用的格式和符号来解释该方法的逻辑 步骤,并且可以理解这些格式和符号并不对该方法的范围进行限制。尽管 在流程图中可以采用各种箭头类型和线条类型,然而要理解到它们并不对 相应方法的范围进行限制。实际上,可以使用一些箭头或其它连接符来仅 仅指示该方法的逻辑流程。例如,箭头可以指示在所述方法的枚举步骤之 间,未指定的持续时间的等待或监控周期。另外,其中特定方法发生的顺 序可以或不必严格遵守所示出的相应步猓的顺序。图1描绘了说明依照本发明的系统100的一个实施例的示意性框图, 该系统100预防在具有对低性能存储设备的访问的存储控制器中的写饥 饿。系统IOO包括存储控制器102,其具有对存储i殳备104、 106的访问, 存^i殳备104、 106中的一些是低性能存储设备106。存储控制器102通过 计算机网络110与一个或多个主机108进行通信。存储控制器102包括处 理器112、计算机代码114、高速緩存116以及写高速緩存118.下面对设 备和组件进行描述。系统100包括存储控制器102,存储控制器102可以是Enterprise Storage ServeiKg)或类似的服务器或系统的一部分。存储控制器102可以包 括单个计算机或计算机网络。存储控制器102可以是文件服务器的一部分 或者可以是独立的计算机。存储控制器102访问多个存储设备104、 106. 存储控制器102可以通过存储区域网("SAN")、广域网、局域网、光 纤信道网络、因特网等来访问存储设备104.存^(^i更备104、 106包括多个低性能存^i殳备106a、 b、 ...n。系统IOO 包括至少一个低性能存储设备106a。存储设备通常是硬盘驱动器,但却还 可以包括闪速存储器、光驱动器、磁带驱动器、RAID阵列、JBOD、 DASD 等。低性能驱动器106可以是高容量、低成本的邻线驱动器.低性能驱动 器106可以是邻线存储设备'低性能驱动器106通常在重工作负荷下具有有限的性能能力。例如,
低性能驱动器106可以在重负荷期间减速以便在降低的性能级别操作.降 低的性能可以包括以较低的速度操作、允许较少的读/写操作等。低性能存 ^i殳备106可以包括光纤信道ATA和串行ATA存^i殳备。其它存储设备 104通常是服务器类设备并且可以不在负荷下显著降低性能。存储控制器102通常从通过计算机网络110连接的一个或多个主机 108接收写请求。主机108可以力艮务器、工作站、个人计算机、大型计 算机、膝上型计算机等。计算机网络110可以包括广域网、局域网、SAN、 因特网、光纤信道网络等,并且可以包括网络类型的组合。计算机网络110 可以包括集成服务器、集线器、交换机、电缆、路由器等。存储控制器102包括处理器112,例如执行4戈码114以实现存储控制 器操作的中央处理器("CPU")。计算机代码114可以存储在随机访问 存储器("RAM")或处理器112可访问的其它位置。存储控制器102包 括高速緩存116。高速緩存116通常是易失性存储器并且可以用于写操作。 高速緩存116还可以用于存储控制器102操作必要的其它操作。存储控制器102还包括写高速緩存118。在一个实施例中,写高速緩 存118用于写操作,并且可以被称为非易失性存储器("NVS")。在一 个实施例中,写高速緩存118可以用于其它的输A/输出操作或者其中期望 在电力失效、重新引导或导致高速^存116中婆:据丟失的其它情况下不丢 失教:据的其它功能。写高速緩存118可以由电池、不间断电源等来维护,或者可以包括闪速存储器或者在缺少外加电力的情况下维护其内容的其它 存储器.本领域的技术人员可以认识到在缺少外加电力的情况下能够维护数据的写高速緩存118的其它形式,图2是说明了依照本发明的存储控制器102的写高速緩存118的一个 实施例的示意性框图,该存储控制器102具有对低性能存^i殳备106的访 问以及具有预防存储控制器102中的写饥饿的装置。在一个实施例中,写 高速緩存118包括存^i殳备写高速緩存限制202以及低性能写高速緩存限 制204。写高速緩存118还可以包括重新连接队列206a、 b、…n,使用的 百分比写高速緩存208a、 b、…n,以及存储控制器102可访问的每个存储 设备104、 106的中间计数器210a、 b、…n。限制202、 204、队列206、使用的百分比写高速緩存208以及计数器 210可以如所示位于写高速緩存118中,或者可以位于其它地方,例如高 速緩存116、外部存储器、RAM或处理器112可访问的其它位置。P艮制 202、 204、队列206、使用的百分比写高速緩存208以及计数器210的位 置可以在一起或分开。限制202、 204、队列206、使用的百分比写高速緩 存208以及计数器210可以是变量并且可以位于数据结构、阵列、表格等 中。在一个实施例中,限制202、 204、队列206、使用的百分比写高速緩 存208以及计数器210可以不全部存在。在下面的附图中较为详细地描述 了限制202、 204、队列206、使用的百分比写高速緩存208以及计数器210。图3是说明了依照本发明的装置300的一个实施例的示意性框图,该 装置300预防在具有对低性能存储设备的访问的存储控制器中的写饥饿. 装置300包括具有存储设备分St模块302和低性能写高速緩存限制模块 304的存储控制器102,在下面对其进行了描述。存储控制器102实质上类 似于关于图1所描述的存储控制器102。存^ 更^^配模块302为存储控制器102可访问的每个存^i殳备104、 106分派存储写高速緩存限制202。在一个实施例中,存^i殳备写高速緩存 限制202是对于写操作来i)UM^i殳备104、 106可用的存储控制器102的写 高速緩存118的最大数量.在一个实施例中,存储设备分配模块302为存 储设备104、 106分派一个存^i殳备写高速緩存限制202。在另一实施例中, 存^i殳备分配模块302为每个存储设备104、 106分派唯一的存储设备写高 速緩存限制202。唯一的存储设备写高速緩存限制202对于一些存储设备 104、 106可以是相同的值。在一个实施例中,存储设备分S己模块302为RAID阵列分^M^^i殳备 写高速緩存限制202。在另一实施例中,存储设^^S诚块302为RAID 阵列中的每个存储设备104、 106分派存储设备写高速緩存限制202,在另 一实施例中,存^i殳^^配模块302基于存^i殳备104、 106的大小,为每 个存储设备104、 106分派存^i殳备写高速緩存限制202。在又一实施例中,
存储设M配模块302基于优先级系统分派存^i殳备写高速緩存限制202。 本领域的技术人员可以认识到存#^殳^^配# 302可以分^^i殳备写 高速緩存限制202的其它方式。通常,装置300包括至少一个低性能存^i殳备106。低性能存储设备 106可以是邻线存^i殳备并且实质上类似于关于图1所描述的低性能存储 设备106。同样,通常存储设备104、 106可用的存储总量包括大于写高速 緩存118的总存储容量的数量。选择存^i殳备104、 106可用的存储总量通 常比划分存储空间更有效率,所以分配的总量小于或等于可用空间。在存储控制器102可访问很多存储设备104、 106的情况下,来自主机 108的存储请求可以要求存储设备104、 106在一段时间有效(需要高速緩存116和写高速緩存118的相当大的一部分用于一个或多个写IMt),然 后却可能待用相当长一段时间。在一个实施例中,在有四个或更多的存储 设备104、 106对于存储控制器102是可访问的情况下,存储设备分配模块 302分派写高速緩存118的25%大小的存储设备写高速緩存限制202。本 领域的技术人员可以认识到基于存储控制器102可访问的存^i殳备104、 106的其它存#^殳备写高速緩存限制202.在存储控制器102可访问慢速存^i殳备104、 106的情况下,可能会产 生问题,其中慢速存^i殳备控制写高速緩存118并且导致写饥饿,分^M^ ^^殳备写高速緩存限制202緩解了该问题。然而,当存储控制器102可访 问一组邻线存储设备或类似的低性能存储设备106的时候,该组可能会在 存储控制器102的典型工作负荷之下全部减速.尽管每个低性能存储设备 106均可以由存^^i殳备写高速^^存限制202来限制,然而该组仍可能控制 写高速緩存118并且可能导致写奴應。为此,装置300包括低性能写高速緩存限制模块304,其设置低性能 写高速緩存限制204,在一个实施例中,低性能写高速緩存限制204包括 对于写IMt来说可供至少一个低性能存储设备106使用的写高速緩存118 的数量,低性能存^i殳备106可用的写高速緩存118的数量包括小于写高 速緩存118的总存储容量的数量。通常,当存储控制器102可访问一组低性能存储设备106时,由于在负荷之下往回抑制性能或导致低性能的类似 动作,该组可能控制写高速緩存118。低性能写高速緩存限制模块304设 置低性能写高速緩存限制204,以便预防该组低性能存储设备106控制写 高速緩存118和导致写饥饿。在一个实施例中,低性能写高速緩存限制模 块304设置写高速緩存118的50%大小的低性能写高速緩存限制204。本 领域的技术人员可以认识到在存储控制器102可访问一组低性能存储设备 106的情况下,适于写高速緩存118的其它低性能写高速緩存限制204.低性能写高速緩存限制204通常限制可供存储控制器102可访问的低 性能存储设备106使用的写高速緩存118的数量。通常,由低性能存储设 备106a所使用的写高速緩存118的数量是由分派的存储设备写高速緩存限 制202以及低性能写高速緩存限制204来限制的。例如,如果分派制氐性 能存储设备106a的存储设备写高速緩存限制202是25%,并且写高速緩 存118的10%具有将要离台至低性能存储设备106a的更新,则如果该更 新占用小于写高速緩存118的15%,就会接受来自主机108的对打算錄4氐 性能存储设备106a的更新进行存储的写请求。然而,低性能写高速緩存限 制204被设置在50%,并且写高速緩存118的45。/。包括打算^f氐性能存储 设备106a、 b、 ...n的更新,则不会接受该更新并且将对其进行延迟。在一个实施例中,存储控制器102的写高速緩存118包括使用的写高 速緩存百分比208变量.每个存^i殳备104、 106均具有使用的写高速緩存 百分比变量208a、 b、 ...n。每个使用的写高速緩存百分比变量208a、 b、 ...n 由存储控制器102用来跟踪有多少写高速緩存118充满了给特定存^i殳备 104、 106的更新,在另一实施例中,存储控制器102的写高速緩存118包 括每个存^^殳备104、 106的重新连接队列206a、 b、…n。重新连接队列 206用于在出于某种原因拒绝写请求时存储用于重新连接至主机108的参 数。图4是说明了依照本发明的装置400的另一实施例的示意性框图,该 装置400预防在具有对低性能存^i殳备的访问的存储控制器中的写饥俄, 装置400包括具有存^i殳备分配模块302和低性能写高速緩存限制模块
304的存储控制器102,其实质上类似于关于图3的装置300所描述的存储 控制器102和模块。另外,存储控制器102包括下面描述的请求模块402、 写高速緩存存储模块404、离台模块406以及延i^块408。存储控制器102包括请求模块402,其接收将更新存储到低性能存储 设备106a的请求。通常从主机108接收存储更新的请求,但却还可以从与 存储控制器102通信的任何设备接收。更新可以包括完整文件、部分文件, 或者在低性能存储设备106a上存储数据的其它请求。将更新存储到其它存 储设备104之一的请求可以以类似的方式接收。请求模块402通常通过计 算机网络110接收更新,存储控制器102包括写高速緩存存储模块404,其在写高速緩存118 中存储更新。在更新的大小加上待写入低性能存储设备106a的更新所占用 的写高速緩存118的数量小于或等于存^i殳备写高速緩存限制202,并且 更新的大小加上待写入存储控制器102可访问的低性能存储设备106a、 b、 ...n的更新所占用的写高速緩存的数量小于或等于低性能写高速緩存限 制204的M下,写高速緩存存储模块404存储该更新。出现低性能存储 设备106的地方,通常是两个条件在写高速緩存存储模块404将更新存储 在写高速緩存118中之前均得到满足。在一个实施例中,写高速緩存存储 模块404还将更新存储在高速緩存116中。写高速緩存存储模块404可以 将使用的写高速緩存百分比变量208用于跟踪使用中的写高速緩存118的 数量。存储控制器102包括离台模块406,其将更新离台至低性能存^i殳备 106a。离台模块406还可以离台打算给其它存^f^殳备104的更新.在一个 实施例中,写高速緩存存储模块404和离台模块406是将成功状态返回给 这样的主机108的快写操作的一部分,即该主机108请求写操作并且在写 高速緩存存储模块404将更新存储在写高速緩存118和高速緩存116中之 后发送更新,该类型的写操作通常比在将更新存储在存储设备104、 106 中之后返回成功的操作花费更少的时间。存储控制器102包括延,块408,其延^J"更新的存储,如果以下
两个M之一得到满足,则延i5^块408延i5^t更新的存储更新的大小 加上待写入低性能存^li殳备106a的更新所占用的写高速緩存118的数量大 于存^i殳备写高速緩存限制202,或者更新的大小加上待写入存储控制器 102可访问的低性能存^fti殳备106a、 b、 ...n的更新所占用的写高速緩存 118的数量大于低性能写高速緩存限制204,如果任一条件符合,则延迟模 块408延迟对更新的存储。在一个实施例中,重新连接队列206用于在延迟模块408延迟写请求 时存储重新连接参数。当延i^t块408确定有足够的写高速緩存118可用 于经延迟的更新时,存储控制器102重新连接至发送写请求的主机108, 从而给予主机108将关联更新存储在写高速緩存118中的另一机会。本领 域的技术人员可以认识到存储控制器102何时可以重新连接至主机108以 完成写请求的条件。在一个实施例中,写高速緩存118包括存储控制器102可访问的每个 存^i殳备104、 106的中间计数器210a、 b、 ...n。中间计数器210旨在当 出现这样的情形时允许一些更新,即存^^i更备写高速緩存限制202或低性 能写高速緩存限制204降低并且一个或多个存^i殳备104、 106的使用的写 高速緩存百分比208实质上超过存^i殳备写高速緩存限制202或低性能写 高速緩存限制204。在通过引用并入的Ash专利(参见图5和相关文本) 中详细描迷了关于存^i殳备写高速緩存限制202 (NVS阈值30)的中间计 数器的IMt。中间计数器210还可以以类似的方式用于低性能写高速緩存 限制204。在一个实施例中,中间计数器210n+l (未示出)可以结合低性新正在使用的写高速緩存118的数量。本领域的技术人员可以认识到存储 控制器102以其它方式使用中间计数器210,以便当一个或多个存^i更备 104、 106所使用的写高速緩存118的数量超过存^i殳备写高速緩存限制202 或低性能写高速緩存限制204 &目当大的数量时允许一些更新。图5是说明了依照本发明的方法500的一个实施例的示意性流程图, 该方法500用于预防在具有对低性能存^i殳备106的访问的存储控制器 102中的写饥饿。该方法500开始于邻2,并且存^i更备分配模块302确定 504存储控制器102可访问的存^i殳备104、 106的数目,存储设备104、 106的数目可以确定多个等级,其中每个等级可以是例如在RAID阵列或 JBOD中的存储设备104、 106或一组存^i殳备104、 106。存储设备分配 模块302分派506存储设备写高速緩存限制204。在一个实施例中,存储 设备分配模块302为所有等级或存储设备104、 106分派506 —个存储设备 写高速緩存限制204。在另 一实施例中,存储设备分配模块302基于大小、 优先级或其它准则为每个存^l^i殳备104、 106或等级分派506存储设备写高 速緩存限制204。在一个实施例中,低性能写高速緩存限制模块304确定508存储控制 器102可访问的低性能存储设备106a、 b、 ...n的数目,在一个实施例中, 低性能写高速援存限制模块304确定508低性能存^i殳备106的等级数, 其中一些低性能存储设备106包括RAID阵列、JBOD等。低性能写高速 緩存限制模块304设置510低性能写高速緩存限制204并且方法500结束 于512。低性能写高速緩存限制模块304可以设置510与低性能存储设备 106的数目无关的低性能写高速緩存限制204。将低性能写高速緩存限制 204设置510为小于写高速緩存118的大小以预防写饥饿。在一个实施例 中,将低性能写高速緩存限制204设置为写高速緩存118的大小的50%。 本领域的技术人员可以认识到用于设置510低性能写高速緩存限制204的 其它准则。图6是说明了依照本发明的方法600的另一实施例的示意性流程图, 该方法600用于预防在具有对低性能存^i殳备106的访问的存储控制器 102中的写奴械。该方法600开始于602,并且存^i更备分配模块302确定 604存储控制器102可访问的等级或存储设备104、 106的数目。存储设备 分配模块302为每个存储设备104、 106分派606存储设备写高速緩存限制 202,低性能写高速緩存限制模块304确定608存储控制器102可访问的低 性能存储设备106a、 b、 ...n的数目,低性能写高速緩存限制模块304基
于低性能存储设备106的等级数以及写高速緩存118的可用空间或大小设 置610低性能写高速緩存限制204。请求模块402接收612将更新存储在 低性能存储设备106a上的请求。写高速緩存存储模块404确定614更新加 上充满了打算存储在低性能存^i殳备106a上的其它更新的写高速緩存118 的数量是否会超过存储设备写高速緩存限制202。如果写高速緩存存储模块404确定614不会超过存^i殳备写高速緩存 限制202,则写高速緩存存储模块404确定616更新加上充满了打算i^氐 性能存储设备106中任何一个的更新的写高速緩存118的数量是否会超过 低性能写高速緩存限制204。如果写高速緩存存储模块404确定616更新 加上充满了打算给低性能存储设备106中任何一个的更新的写高速緩存 118的数量不会超过低性能写高速緩存限制204,则写高速緩存存储模块 404向写高速緩存118写入618更新,离台模块406将更新离台620至预 期的低性能存储设备106并且该方法600结束于622。如果写高速緩存存储模块404确定更新将超过存^i殳备写高速緩存限 制202或低性能写高速緩存限制204,则延id^ 408对重新连接请求主 机108所需要的M进行排队624并且断开626主机108。离台模块406 将更新离台620至存储设备104、 106并且该方法600结束于622。随后对 存储更新的请求通常将不需要分派存^i殳备写高速緩存限制202或低性能 写高速緩存限制204,但通常会开始于接收612请求的请求模块402。在不背离本发明的精神或本质特性的情况下可以以其它具体形式来体现本发明。所描述的实施例应当被认为在所有方面仅是作为说明性而非限 制性的。因此,本发明的范围是由所附权利要求而不是由前迷说明来指出 的.属于权利要求的等同物的含义和范围内的所有变化都将包括在本发明 的范围之内。
权利要求
1.一种用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿的方法,其包括为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制,所述存储设备写高速缓存限制包括对于写操作来说存储设备可用的存储控制器的写高速缓存的最大数量,其中至少一个存储设备包括低性能存储设备,并且所述存储设备可用的存储总量包括大于所述写高速缓存的总存储容量的数量;以及设置低性能写高速缓存限制,所述低性能写高速缓存限制包括对于写操作来说可供所述至少一个低性能存储设备使用的写高速缓存的数量,其中所述至少一个低性能存储设备可用的写高速缓存的数量包括小于所述写高速缓存的总存储容量的数量。
2. 根据权利要求l的方法,其中所述低性能存储设备包括被配置以响 应于重工作负荷而降低性能的存储设备。
3. 根据权利要求l的方法,其中所述低性能存储设备包括邻线存储设备。
4. 根据权利要求1的方法,其中所述写高速緩存包括非易失性存储器。
5. 根据权利要求l的方法,其进一步包括 接收将更新存储到低性能存储设备的请求;以及 将所述更新存储在所述写高速緩存中,作为对以下的响应所述更新的大小加上待写入所述低性能存储设备的更新所占用的 写高速緩存的数量小于或等于所述存储设备写高速緩存限制;以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储 设备的更新所占用的写高速緩存的数量小于或等于所述低性能写高速緩存 限制;以及将所述更新写入所述低性能存储设备.
6. 根据权利要求1的方法,其进一步包括 接收将更新存储到低性能存储设备的请求;以及 延迟对所述更新的存储,作为对以下之一的响应所述更新的大小加上待写入所述低性能存^i殳备的更新所占用的 写高速緩存的数量大于所述存條没备写高速緩存限制;以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储 设备的更新所占用的写高速緩存的数量大于所述低性能写高速緩存限制。
7. 根据权利要求6的方法,其中延迟对所述更新的存储进一步包括 对重新连接请求所述更新的主机所要求的重新连接^lt进行排队,以及从 所述主机断开。
8. 根据权利要求l的方法,其中至少一个存^i殳备包括廉价磁盘冗余 阵列阵列,
9. 根据权利要求l的方法,其中每个存储设备可用的写高速緩存的最 大数量大于所述写高速緩存的总存储容量除以所述存储控制器可访问的存 储设备的总数。
10. 根据权利要求1的方法,其中所述存储控制器可访问的每个存储 设备的存储设备写高速緩存限制包括对于每个存^i殳备相等的数量。
11. 根据权利要求l的方法,其中所i^储控制器可访问的每个存储 设备的存储设备写高速緩存限制包括对于每个存储设备不同的限制。
12. 根据权利要求1的方法,其中当所述存储控制器可访问四个或更 多的存^i殳备时,存储设备的所迷存^i殳备写高速緩存限制被限制在所述 写高速緩存的总存储容量的25%。
13. 根据权利要求1的方法,其中当所述存储控制器可访问两个或更 多的低性能存^f^殳备时,所迷低性能写高速緩存限制不超过所迷写高速緩 存的总存储容量的一半。
14. 一种预防在具有对低性能存储设备的访问的存储控制器中的写 饥饿的装置,所述装置包括存^fti更备分配模块,所述存^i殳备分配模块被配置以为存储控制器可 访问的每个存储设备分》)M!"^i殳备写高速緩存限制,所述存^i殳备写高速 緩存限制包括对于写操作来i)t^^i殳备可用的存储控制器的写高速緩存的 最大数量,其中至少一个存^^殳备包括低性能存^i殳备,并且所述存^i更 备可用的存储总量包括大于所述写高速緩存的总存储容量的数量;以及低性能写高速緩存限制模块,所述低性能写高速緩存限制模块被配置 以设置低性能写高速緩存限制,其中所述低性能写高速緩存限制包括对于 写操作来说可供所述至少一个低性能存储设^^吏用的写高速緩存的数量, 其中所述至少 一个低性能存^i殳备可用的写高速緩存的数量包括小于所述 写高速緩存的总存储容量的数量。
15. 根据权利要求14的装置,其进一步包括请求模块,所述请求模块被配置以接收将更新存储到低性能存储设备 的请求;写高速緩存存储模块,所述写高速緩存存储模块被配置以将所述更新 存储在所述写高速緩存中,作为对以下的响应所述更新的大小加上待写入所迷低性能存^i殳备的更新所占用的 写高速緩存的数量小于或等于所述存储设备写高速緩存限制;以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储 设备的更新所占用的写高速緩存的数量小于或等于所述低性能写高速緩存 限制;以及离台模块,所述离台模块被配置以将所述更新离台至所述低性能存储 设备,
16. 根据权利要求15的装置,其中所i^储控制器进一步包括易失 性高速緩存,并且其中所述写高速緩存存储模块在所述写高速緩存中存储 所述更新的副本以及在所述易失性高速緩存中存储所述更新的副本,并且 所述离台模块将所述更新从所述易失性高速緩存离台至所述低性能存^i殳 备'
17. 根据权利要求15的装置,其进一步包括延id^块,所^i^ 块被配置以延迟对所述更新的存储,作为对以下之一的响应所述更新的大小加上待写入所述低性能存储i殳备的更新所占用的写 高速緩存的数量大于所iW储设备写高速緩存限制;以及所述更新的大小加上待写入所述存储控制器可访问的低性能存储设 备的更新所占用的写高速緩存的数量大于所述低性能写高速緩存限制。
18. —种预防在具有对低性能存储设备的访问的存储控制器中的写 饥饿的系统,所述系统包括多个存^i更备,其中所述存^i殳备中的至少一个包括低性能存储设备;以及连接至所述多个存储设备的存储控制器,所述存储控制器包括存^i殳备分配模块,所述存^i殳备分配模块被配置以为所述存储 控制器可访问的每个存^i更备分M^i殳备写高速緩存限制,所述存^i殳 备写高速緩存限制包括对于写操作来说存^f^i更备可用的存储控制器的写高 速緩存的最大数量,其中至少一个存储设备包括低性能存^i殳备,并且所 述存储设备可用的存储总量包括大于所述写高速緩存的总存储容量的数 量;以及低性能写高速緩存限制模块,所述低性能写高速緩存限制模块被 配置以设置低性能写高速緩存限制,其中所述低性能写高速緩存P艮制包括 对于写操作来说可供所述至少一个低性能存储设备使用的写高速緩存的数量,其中所述至少一个低性能存储设备可用的写高速緩存的数量包括小于 所述写高速緩存的总存储容量的数量.
19. 根据权利要求18的系统,其进一步包括通过所述存储控制器具 有对所述存^i殳备中至少一个的访问的主机,其中所述存储控制器用于将 更新写入所述至少 一个存储设备。
20. 根据权利要求18的系统,其中主机通过存储区域网与所述存储 控制器进行通信'
全文摘要
公开了一种装置、系统和方法,用于预防在具有对低性能存储设备的访问的存储控制器中的写饥饿。包括了存储设备分配模块来为存储控制器可访问的每个存储设备分派存储设备写高速缓存限制。该存储设备写高速缓存限制包括对写操作而言存储设备可用的存储控制器的写高速缓存的最大数量。至少一个存储设备包括低性能存储设备,且该存储设备可用的存储总量包括大于该写高速缓存的总存储容量的数量。包括了低性能写高速缓存限制模块来设置低性能写高速缓存限制。该低性能写高速缓存限制包括对写操作而言可供所述至少一个低性能存储设备使用的写高速缓存的数量。所述至少一个低性能存储设备可用的写高速缓存的数量包括小于该写高速缓存的总存储容量的数量。
文档编号G06F12/08GK101131675SQ200710146548
公开日2008年2月27日 申请日期2007年8月20日 优先权日2006年8月22日
发明者K·J·阿什, M·J·卡洛斯, R·A·库博 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1