CN109213695B - 缓存管理方法、存储系统以及计算机程序产品 - Google Patents
缓存管理方法、存储系统以及计算机程序产品 Download PDFInfo
- Publication number
- CN109213695B CN109213695B CN201710526284.1A CN201710526284A CN109213695B CN 109213695 B CN109213695 B CN 109213695B CN 201710526284 A CN201710526284 A CN 201710526284A CN 109213695 B CN109213695 B CN 109213695B
- Authority
- CN
- China
- Prior art keywords
- solid state
- queue
- page
- cache
- pages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供一种缓存管理方法、存储系统和计算机程序产品。缓存管理方法包括确定存储系统中的多个缓存页面各自的访问频度。该方法还包括基于访问频度将多个缓存页面组成为多个队列。该方法还包括基于访问频度为多个队列分配固态盘,使得具有较高访问频度的页面所在的队列具有较多的固态盘。
Description
技术领域
本公开的实施例一般涉及数据存储领域,更具体地,涉及一种缓存管理方法、存储系统和计算机程序产品。
背景技术
高速缓存是一种特殊的存储器子系统,在高速缓存中复制了频繁使用的数据以利于CPU快速访问。动态随机存取存储器(DRAM)高速缓存通过将数据透明地存储在非常快的存储介质(例如DRAM)中来改善存储系统的性能,使得针对该数据的请求能够被快速地处理,通常大约为60微秒。但是对于DRAM而言,每GB的成本是非常昂贵的,并且DRAM高速缓存的容量存在着硬件方面的限制,通常其容量为几个GB或几十个GB。
固态盘(SSD)高速缓存通过将数据透明地存储在SSD中来改善存储系统的性能,使得针对该数据的请求能够被较快地处理,通常为小于1毫秒。SSD高速缓存的速度不如DRAM高速缓存的速度快,但是成本比DRAM高速缓存低。已有的SSD高速缓存通常被设计为读优先SSD高速缓存或者被设计为RAID-1SSD高速缓存。但是这两种结构的SSD高速缓存在实际使用中均存在着各自的缺点。
发明内容
本公开的实施例提供了一种缓存管理方案。
根据本公开的第一方面,提供了一种缓存管理方法,包括确定存储系统中的多个缓存页面各自的访问频度。该方法还包括基于访问频度将多个缓存页面组成为多个队列。该方法还包括基于访问频度为多个队列分配固态盘,使得具有较高访问频度的页面所在的队列具有较多的固态盘。
根据本公开的第二方面,提供了一种存储系统。该存储系统包括多个固态盘和控制器。该控制器被配置为确定存储系统中的多个缓存页面各自的访问频度。该控制器还被配置为基于访问频度将多个缓存页面组成为多个队列。该控制器还被配置为基于访问频度为多个队列分配固态盘,使得具有较高访问频度的页面所在的队列具有较多的固态盘。
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使得机器执行根据本公开的第一方面所描述的方法的任意步骤。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了常规的包括SSD高速缓存的环境的示意图。
图2示出了已有的RAID-1SSD高速缓存的硬件架构的示意图。
图3示出了已有的读优先SSD高速缓存的硬件架构的示意图。
图4示出了RAID-1SSD高速缓存与读优先SSD高速缓存的性能比较的示意图。
图5示出了RAID-1SSD高速缓存与读优先SSD高速缓存的性能比较的示意图。
图6示出了在本公开示例性实施例中所使用的缓存页面管理结构的示意图。
图7示出了根据本公开示例性实施例的管理缓存的方法的流程图。
图8示出了根据本公开示例性实施例的缓存页面与SSD设备之间的映射关系的示意图。
图9示出了根据本公开示例性实施例基于访问频度的变化来动态调整缓存页面所处的队列的示意图。
图10示出了已有方案与本公开所提供方案在负载均衡方面的比较的示意图。
图11示出了根据本公开示例性实施例在一个SSD设备发生故障的情况下的示意图。
图12示出了根据本公开实施例的缓存管理方法的流程图
图13示出了根据本公开示例性实施例的存储系统的框图。
图14示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的示例实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
图1示出了常规的包括高速缓存的存储环境100的示意图。环境100包括动态随机存取存储器(DRAM)高速缓存110、固态盘(SSD)高速缓存120以及硬盘(HDD)矩阵130。通常,DRAM高速缓存110处于IO数据路径的顶部,SSD高速缓存120处于DRAM高速缓存110之下,而HDD矩阵在SSD高速缓存120之下。
DRAM高速缓存110通过将数据透明地存储在DRAM中来改善存储系统的性能,使得针对数据的请求能够被快速处理,通常大约为60微秒。通常,DRAM高速缓存110对最频繁访问的数据(最热数据)进行缓存。但是DRAM高速缓存的成本是非常昂贵的,每GB大概8-10美元。而且对DRAM高速缓存的容量也存在着硬件限制,例如存储器插槽限制和电池持续时间限制。通常DRAM高速缓存的容量大约是几个GB或几十个GB。
SSD高速缓存120通过将数据透明地存储在SSD中来改善存储系统的性能,使得针对数据的请求也能够被较快地处理,通常大约小于1毫秒。SSD高速缓存120通常对次频繁访问的数据进行缓存。与DRAM高速缓存相比,SSD高速缓存的成本较低并且容量较高。对于SSD高速缓存而言,每GB的成本从小于1美元到若干美元不等,这取决于所采用的技术。通常SSD高速缓存的容量大约为几百GB甚至达到TB的量级。
HDD矩阵130由HDD组成,其用于存储所有的用户数据,并且服务于未被DRAM高速缓存110和SSD高速缓存120处理的I/O请求,其提供最慢的响应时间。多个HDD通常被组成磁盘阵列,以提供开放的容量和冗余。一些磁盘阵列可以提供几百TB甚至PB数量级的容量。
在图1所示的环境100中,存在两种类型的高速缓存命中,即,DRAM高速缓存命中和SSD高速缓存命中。对于进入存储系统的I/O请求,DRAM高速缓存110先搜索其所缓存的数据,如果DRAM高速缓存110发现命中,则DRAM高速缓存110利用所缓存的数据对I/O请求进行响应。否则,如果DRAM高速缓存110发现未命中,则将该I/O请求转发给SSD高速缓存120。
响应于接收到DRAM高速缓存110转发的I/O请求,SSD高速缓存120将搜索其所缓存的数据。如果SSD高速缓存120发现命中,则利用所缓存的数据对I/O请求进行响应。否则,如果SSD高速缓存120发现未命中,则将I/O请求转发给HDD矩阵130。之后,从HDD矩阵130读取I/O请求所针对的数据或向HDD矩阵130写入I/O请求所涉及的数据。
在环境100中所使用的已有的SSD高速缓存通常被实现成读优先SSD高速缓存或者被实现成RAID-1SSD高速缓存。这两种结构的SSD高速缓存都存在着各自的缺点。下面将结合图2、图3、图4和图5来介绍这两种已有的结构及其各自的缺点。
图2示出了已有的RAID-1SSD高速缓存200的硬件架构的示意图。在图2所示的SSD高速缓存200中,将两个SSD组合成一个RAID-1组以提供单一的SSD空间来缓存用户数据,RAID-1组可以用作读/写高速缓存。每个SSD中存储有用户数据以及与缓存页面相关联的元数据,例如元数据可以包括缓存页面的状态(脏页或干净页)、与缓存页面相关联的映射信息等。在SSD高速缓存200中,每个RAID-1组被视为一个单独的设备,例如设备0 210、设备1220、设备2 230以及设备3 240。如果在SSD高速缓存200中存在脏数据,那么RAID-1组能够确保在一个SSD发生故障时数据不会丢失。
图3示出了已有的读优先SSD高速缓存300的硬件架构的示意图。在读优先SSD高速缓存300中,单个的SSD作为独立的设备(例如,设备0 310、设备1 320、设备2 330、设备3340)向读优先SSD高速缓存300提供存储空间。每个SSD中存储有用户数据以及与缓存页面相关联的元数据,例如元数据可以包括缓存页面的状态(脏页或干净页)、与缓存页面相关联的映射信息等。
发明人认识到,对于图2和图3中所示的这两种架构,都存在着各自的缺点。对于RAID-1SSD高速缓存而言,如果大部分用户IO是读IO,那么大部分的SSD磁盘空间将被浪费,原因是RAID-1组仅仅暴露了两个SSD磁盘空间的一半。如果用户频繁访问的数据区域比SSD高速缓存大,那么SSD高速缓存将忙于对HDD的页面进行提升以及将缓存页面冲刷到HDD,这将引起大量的内部IO,从而降低了总体的磁盘阵列性能,如图4中所示的。图4示出了RAID-1SSD高速缓存与读优先SSD高速缓存的性能对比的示意图,其中,用户频繁访问的数据区域是RAID-1SSD高速缓存大小的2倍,曲线410表示RAID-1SSD高速缓存的性能,曲线420表示读优先SSD高速缓存的性能。从图4可以看出,如果用户频繁访问的数据区域是RAID-1SSD高速缓存大小的2倍,那么RAID-1SSD高速缓存的性能将弱于读优先SSD高速缓存的性能。
另一方面,如果用户频繁访问的数据区域几乎等于RAID-1SSD高速缓存的大小,那么在高速缓存完全活跃起来(warm-up)的情况下,读优先SSD高速缓存的性能将不如RAID-1SSD高速缓存的性能,如图5中所示的,原因在于在RAID-1SSD高速缓存中,缓存页面被存储在两个SSD中,使得缓存页面是冗余的,从而可以使用更多的SSD来为IO服务。图5示出了RAID-1SSD高速缓存与读优先SSD高速缓存的性能对比的示意图,其中,用户频繁访问的数据区域几乎是RAID-1SSD高速缓存大小,曲线510表示RAID-1SSD高速缓存的性能,曲线520表示读优先SSD高速缓存的性能。从图5可以看出,如果用户频繁访问的数据区域等于或小于RAID-1SSD高速缓存的大小,那么在系统完全活跃起来之后,读优先SSD高速缓存的性能将弱于RAID-1SSD高速缓存的性能。
本公开提供了一种使用多队列缓存页面管理结构来在读优先SSD高速缓存中进行自动复制的方案,以避免在一个SSD发生故障的情况下在缓存中丢失频繁访问的数据。该方案能够自动地将缓存页面分布在不同的SSD中,自动识别最热的以及次热的缓存页面,并且在一个SSD发生故障的情况下仍然能够加快针对最热或次热缓存页面的请求的响应速度。在该方案中,利用多个队列Q0~Qn来管理缓存页面,不同的队列用于存放具有不同访问频度的缓存页面。例如,队列Qn中的缓存页面是最频繁访问的,队列Qn-1中的缓存页面是次频繁访问的,以此类推。相同队列中的页面的副本将被存储在相同数目的固态盘中,不同队列中的页面的副本将被存储在不同数目的固态盘中,使得较频繁访问的页面在较多数目的固态盘中具有副本。如果一个队列中的缓存页面的访问频度上升到一定程度或满足其他要求,则可以将该缓存页面从该队列调整到较高级别的队列,使得该缓存页面在更多的SSD中具有副本。反之,如果一个队列中的缓存页面的访问频度下降到一定程度,则可以将该缓存页面从该队列调整到较低级别的队列,使得该缓存页面在较少的SSD中具有副本。
图6示出了在本公开示例性实施例中所使用的缓存页面管理结构的示意图。如图6中所示的,每个缓存逻辑单元号(LUN)具有一个卷结构来管理针对该LUN的缓存页面。每个卷结构具有三个队列601、602和603。相对而言,队列603用于存放访问频度最高的缓存页面,并且队列603中的缓存页面将在4个SSD中具有副本;队列602用于存放访问频度第二高的缓存页面,并且队列602中的页面将在2个SSD中具有副本;队列601用于存放访问频度相对较低的缓存页面,并且队列601中的缓存页面将在1个SSD中具有副本。
在一些实施例中,还可以根据缓存页面的访问频度的动态变化,来动态地调整缓存页面所处的队列。如果队列601中的缓存页面在预定时间段内被命中的次数超出阈值,则可以将该缓存页面移动到队列602,类似地,如果队列602中的缓存页面在预定时间段内被命中的次数满足一定条件,可以将该缓存页面移动到队列603。如果队列603中的页面在一定的时间段内未被访问或访问次数下降到一定程度,可以将该页面从队列603移动到队列602,然后使得该页面的副本从4个下降到2个;如果将缓存页面从队列602降级到队列601,则缓存页面的副本将减少到1个。
本公开的实施例利用图6中所示的这种多队列结构来存放不同访问频度的缓存页面,从而使得较高访问频度的缓存页面在较多的SSD中具有副本。对于频繁访问的缓存页面而言,能够从多个SSD获得该缓存页面的副本,从而能够快速地响应针对该页面的I/O请求。另外,由于较高访问频度的缓存页面所具有的副本不止1个,从而在一个SSD发生故障的情况下,这些缓存页面至少在其他SSD中还具有副本,这在某个SSD发生故障的情况下确保了对这些缓存页面的访问速度不会受到影响。
应该理解的是,虽然在图6中仅示出了3个队列,但是在不脱离本公开范围的情况下,可以使用任意数量的队列。并且副本的数目也不仅仅局限于4个、2个或1个,而是可以是任何的数目。
下面结合图7来描述利用图6中所示的结构来对缓存进行管理的方法。图7示出了根据本公开示例性实施例的缓存管理方法700。在框702,确定多个缓存页面各自的访问频度。在示例性实施例中,一个缓存页面的访问频度可以通过在预定时间段内对访问该缓存页面的请求进行计数来确定。
在框704,基于所确定的访问频度将多个缓存页面组成为多个队列。在示例性实施例中,以图6中所示的三个队列601、602、603为例,将访问频度大于第一阈值的缓存页面放置在队列603中,将访问频度小于第一阈值但大于第二阈值的缓存页面放置在队列602中,将访问频度小于第二阈值的缓存页面放置在队列601中。
在框706,基于所确定的访问频度为多个队列分配固态盘,使得具有较高访问频度的页面所在的队列具有较多的固态盘。以图6中所示的三个队列601、602、603为例,可以给队列601分配数目为1的固态盘,使得队列601中的缓存页面在一个固态盘中具有副本;可以给队列602分配数目为2的固态盘,使得队列602中的缓存页面在2个固态盘中具有副本;可以给队列603分配数目为4的固态盘,使得队列603中的缓存页面在4个固态盘中具有副本。在图8中示出了缓存页面与SSD之间的映射关系的示意图,例如,卷1中的队列803中的页面被映射到固态盘811、812、813和814,使得该页面在这四个固态盘中具有副本;卷2的队列802中的页面被映射到固态盘814和815,使得该页面在固态盘814和815中具有副本;卷3的队列801中的页面被映射到固态盘810,使得该页面在固态盘810中具有副本。
继续参考图7,在某些实际使用中,缓存页面的访问频度通常是动态变化的。因此,在某些实施例中,方法700还可以包括可选框708、710、712和714,以根据访问频度的动态变化,来动态地调整缓存页面所处的队列,以实时地管理缓存。在示例性实施例中,多个队列包括被分配以第一数目的固态盘的第一队列和被分配以第二数目的固态盘的第二队列,第一数目大于所述第二数目。在框708,可以确定第一队列中的第一页面的第一访问频率。在框710,可以响应于第一访问频率下降到第一阈值之下,将第一页面从第一队列调整到第二队列。将第一页面从第一队列调整到第二队列可以包括:将第一页面上的数据存储在第二数目的固态盘中,使得第一页面在第二数目的固态盘中具有副本;以及更新与第一页面相关联的元数据。
在框712,可以确定第二队列中的第二页面的第二访问频率。在框714,可以响应于第二访问频率上升到第二阈值之下上,将第二页面从第二队列调整到第一队列。将第二页面从第二队列调整到第一队列可以包括:将第二页面上的数据存储在第一数目的固态盘中,使得第二页面在第一数目的固态盘中具有副本;以及更新与第二页面相关联的元数据。
为了更好地理解基于访问频度来动态调整缓存页面所处的队列这一方案,可以参考图9。图9示出了根据本公开示例性实施例基于访问频度的变化来动态调整缓存页面所处的队列的示意图。如所示的,一个页面本来处于卷3的队列901,其将被映射到固态盘910上。由于之后该页面的访问频率上升到预定阈值之上,该页面被调整到队列902,使得该页面将被映射到固态盘910和固态盘911上,以在固态盘910和固态盘911上具有副本。
在本公开示例性实施例中,固态盘可以是读优先高速缓存。如果接收到针对缓存页面的读请求,则可以从存储了该缓存页面的副本的固态盘中选择一个固态盘,并从所选的固态盘读取该读请求所针对的数据。
根据方法700,利用多队列的结构来存放不同访问频度的缓存页面,从而使得较高访问频度的缓存页面在较多的固态盘中具有副本,对于频繁访问的缓存页面而言,这能够加快对该页面的访问速度。另外,由于较高访问频度的缓存页面所具有的副本不止1个,从而在一个固态盘发生故障的情况下,这些缓存页面至少在其他固态盘中还具有副本,这就确保了在这种情况下对这些缓存页面的访问速度不会受到影响。另外,本公开的方案能够随着时间的推移,基于缓存页面的访问频度的变化,动态地调整缓存页面所处的队列,从而能够满足实时性的要求。
与传统技术相比,方法700在负载均衡方面以及在加速针对较频繁访问页面的请求的响应速度方面具有明显的优势。下面结合图10和图11来描述方法700的这些优势。图10示出了已有方案与本公开所提供方案在负载均衡方面的比较的示意图。图10的左半部分表示的是未采用多队列页面管理结构的已有方案,右半部分表示的是根据本公开示例性实施例的方案。如所示的,在已有方案中,每个缓存页面被映射到一个固态盘,例如,卷1中的第一页面被映射到固态盘1014,卷2中的第二页面被映射到固态盘1014,卷3中的第三页面被映射到固态盘1010。如果同时存在对第一页面的I/O请求和对第二页面的I/O请求,那么将会导致这两个I/O请求集中于固态盘1014,而其余SSD设备却处于空闲,这造成了负载不均衡。
相反,根据本公开的方案,由于采用了多队列的结构,使得卷1中的第一页面被映射到固态盘1011、固态盘1012、固态盘1013和固态盘1014,卷2中的第二页面被映射到固态盘1014和固态盘1015,卷3中的第三页面被映射到固态盘1010。这样,如果同时存在对第一页面的I/O请求和对第二页面的I/O请求,那么由于第一页面在四个固态盘上具有副本并且第二页面在两个固态盘上具有副本,并不会导致这些I/O请求都集中于固态盘1014,而是将这些I/O请求分散到其它固态盘(例如固态盘1013和固态盘1015),从而达到了负载均衡的目的。
除了负载均衡方面的优势以外,本公开的方案还具有其他优势,例如由于较高访问频度的缓存页面在较多的固态盘中具有副本,对于频繁访问的缓存页面而言,这能够加快对该页面的访问速度。另外,由于较高访问频度的缓存页面所具有的副本不止1个,从而在一个固态盘发生故障的情况下,这些缓存页面至少在其他固态盘中还具有副本,这就确保了在这种情况下对这些缓存页面的访问速度不会受到影响。图11示出了根据本公开示例性实施例在一个固态盘发生故障的情况下的示意图。如所示的,由于卷3的队列1101中的页面被映射到两个固态盘,即固态盘1110和固态盘1111,所以即使在固态盘1110发生故障的情况下,也可以从固态盘1111读取数据,而无须从HHD读取数据,从而确保了对频繁访问的页面的响应速度。
图12示出了根据本公开实施例的缓存管理方法1200的流程图。方法1200是方法700在实际使用中如何动态调整缓存页面所处的队列的一种具体实现方式。本领域技术人员将理解的是,在不脱离本公开范围的情况下,方法700可以具有多种具体实现方式,而不仅仅局限于图12所示的实现方式。
在框1202,可以接收针对一个页面的读请求。在框1204,可以确定该读请求是否命中高速缓存,例如是否命中SSD高速缓存。如果在框1204确定没有命中高速缓存,则方法1200前进到框1206。在框1206,可以从HHD设备读取该读请求所针对的数据。
如果在框1204确定命中了SSD高速缓存,那么方法1200前进到框1208。在框1208,可以确定该页面的访问频率是否超出预定的阈值。如果在框1208确定了该页面的访问频率超出了预定的阈值,则方法1200前进到框1210,否则前进到框1212。
在框1210,可以设置复制标记,该复制标记表示该页面需要从当前队列调整到更高级别的队列。在框1212,从存储了该页面的副本的任意一个固态盘读取该读请求所针对的数据。在示例性实施例中,可以从存储了该页面的副本的固态盘中选择一个固态盘,然后从所选择的固态盘读取数据。例如,可以基于负载均衡方面的考虑,来选择固态盘。在框1214,可以确定是否设置了复制标记。如果在框1214确定没有设置复制标记,则方法1200可以前进到框1222。在框1222,使得该页面继续处于当前队列。
如果在框1214确定已经设置了复制标记,则方法1200可以前进到框1216。在框1216,可以将该页面调整到更高级别的队列。在框1218,可以将该页面上的数据存储在更多的固态盘中,使得该页面在更多的固态盘上具有副本。在框1220,可以更新与该页面相关联的元数据,例如与该页面相关联的映射信息。
图13示出了根据本公开示例性实施例的存储系统1300的框图。存储系统1300可以包括控制器1310和多个固态盘1320。在示例性实施例中,多个固态盘1320可以是读优先高速缓存。存储系统1300还可以包括未示出的HDD设备。
控制器1310可以被配置为确定存储系统1300中的多个缓存页面各自的访问频度。控制器1310还可以被配置为基于所确定的访问频度,将多个缓存页面组成为多个队列。控制器1310还可以被配置为基于所确定的访问频度为多个队列分配所述多个固态盘中的固态盘,使得具有较高访问频度的页面所在的队列具有较多的固态盘。
在示例性实施例中,多个队列具有被分配以第一数目的固态盘的第一队列以及被分配以第二数目的固态盘的第二队列,第一数目大于第二数目。控制器1310还可以被配置为确定第一队列中的第一页面的第一访问频率。控制器1310还可以被配置为响应于第一访问频率下降至第一阈值之下,将第一页面从第一队列调整到第二队列,以使得第一页面的副本被存储在第二数目的固态盘中。控制器1320还可以被配置为确定第二队列中的第二页面的第二访问频率。控制器1320还可以被配置为响应于第二访问频率上升至第二阈值之上,将第二页面从第二队列调整到第一队列,以使得第二页面的副本被存储在第一数目的固态盘中。
在示例性实施例中,控制器1310还可以被配置为接收针对缓存页面的读请求。控制器1310还可以被配置为从存储了该缓存页面的副本的固态盘中选择一个固态盘,以及从所选择的固态盘读取数据。
图14示出了可以用来实施本公开的实施例的示例设备1400的示意性框图。如图所示,设备1400包括中央处理单元(CPU)1401,其可以根据存储在只读存储器(ROM)1402中的计算机程序指令或者从存储单元1408加载到随机访问存储器(RAM)1403中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1403中,还可存储设备1400操作所需的各种程序和数据。CPU 1401、ROM 1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。
设备1400中的多个部件连接至I/O接口1405,包括:输入单元1406,例如键盘、鼠标等;输出单元1407,例如各种类型的显示器、扬声器等;存储单元1408,例如磁盘、光盘等;以及通信单元1409,例如网卡、调制解调器、无线通信收发机等。通信单元1409允许设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元1401执行上文所描述的各个方法和处理,例如方法700或方法1200。例如,在一些实施例中,方法700或方法1200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1402和/或通信单元1409而被载入和/或安装到设备1400上。当计算机程序加载到RAM1403并由CPU 1401执行时,可以执行上文描述的方法700或方法1200的一个或多个步骤。备选地,在其他实施例中,CPU 1401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法700或方法1200。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (18)
1.一种缓存管理方法,包括:
确定存储系统的缓存中的多个缓存页面各自的访问频度,所述存储系统包括所述缓存和在所述缓存之下的硬盘HDD矩阵;
基于所述访问频度将所述多个缓存页面组成为多个队列;
基于所述访问频度为所述多个队列分配固态盘,使得具有较高访问频度的页面所在的队列比具有较低访问频度的页面所在的队列具有更多的固态盘;以及
基于访问频度随时间的变化来将页面在所述多个队列的队列中间动态移动,
其中属于具有较高访问频度的队列的页面比属于具有较低访问频度的队列的页面在相应固态盘中被存储更多次数,使得以较高频度被访问的页面中的数据比以较低频度被访问的页面中的数据从更大数目的固态盘可用,
其中所述固态盘中的一个固态盘存储属于具有不同访问频度的多个队列的页面。
2.根据权利要求1所述的方法,其中所述多个队列包括被分配以第一数目的固态盘的第一队列和被分配以第二数目的固态盘的第二队列,所述第一数目大于所述第二数目。
3.根据权利要求2所述的方法,还包括:
确定所述第一队列中的第一页面的第一访问频率;以及
响应于所述第一访问频率下降到第一阈值之下,将所述第一页面从所述第一队列调整到所述第二队列。
4.根据权利要求2所述的方法,还包括:
确定所述第二队列中的第二页面的第二访问频率;以及
响应于所述第二访问频率上升到第二阈值之上,将所述第二页面从所述第二队列调整到所述第一队列。
5.根据权利要求1所述的方法,其中所述固态盘是读优先高速缓存。
6.根据权利要求3所述的方法,其中将所述第一页面从所述第一队列调整到所述第二队列包括:
将所述第一页面上的数据存储在所述第二数目的固态盘中;以及
更新与所述第一页面相关联的元数据。
7.根据权利要求4所述的方法,其中将所述第二页面从所述第二队列调整到所述第一队列包括:
将所述第二页面上的数据存储在所述的第一数目的固态盘中;以及
更新与所述第二页面相关联的元数据。
8.根据权利要求2所述的方法,还包括:
接收针对所述第一队列中的第一页面的读请求;
从所述第一数目的固态盘中选择固态盘;
从所选择的固态盘读取所述读请求所针对的数据。
9.根据权利要求1所述的方法,其中存储特定页面的相应副本的两个固态盘不是RAID-1布置的部分。
10.一种存储系统,包括:
包括多个固态盘的缓存;
在所述缓存之下的硬盘HDD矩阵;以及
控制器,所述控制器被配置为:
确定所述存储系统中的多个缓存页面各自的访问频度;
基于所述访问频度将所述多个缓存页面组成为多个队列;
基于所述访问频度为所述多个队列分配所述多个固态盘中的固态盘,使得具有较高访问频度的页面所在的队列比具有较低访问频度的页面所在的队列具有更多的固态盘;以及
基于访问频度随时间的变化来将页面在所述多个队列的队列中间动态移动,
其中所述固态盘中的一个固态盘存储属于具有不同访问频度的多个队列的页面。
11.根据权利要求10所述的存储系统,其中所述多个队列包括被分配以第一数目的固态盘的第一队列和被分配以第二数目的固态盘的第二队列,所述第一数目大于所述第二数目。
12.根据权利要求11所述的存储系统,所述控制器还被配置为:
确定所述第一队列中的第一页面的第一访问频率;以及
响应于所述第一访问频率下降到第一阈值之下,将所述第一页面从所述第一队列调整到所述第二队列。
13.根据权利要求11所述的存储系统,所述控制器还被配置为:
确定所述第二队列中的第二页面的第二访问频率;以及
响应于所述第二访问频率上升到第二阈值之上,将所述第二页面从所述第二队列调整到所述第一队列。
14.根据权利要求10所述的存储系统,其中所述多个固态盘是读优先高速缓存。
15.根据权利要求12所述的存储系统,其中将所述第一页面从所述第一队列调整到所述第二队列包括:
将所述第一页面上的数据存储在所述第二数目的固态盘中;以及
更新与所述第一页面相关联的元数据。
16.根据权利要求13所述的存储系统,其中将所述第二页面从所述第二队列调整到所述第一队列包括:
将所述第二页面上的数据存储在所述的第一数目的固态盘中;以及
更新与所述第二页面相关联的元数据。
17.根据权利要求11所述的存储系统,所述控制器还被配置为:
接收针对所述第一队列中的第一页面的读请求;
从所述第一数目的固态盘中选择固态盘;
从所选择的固态盘读取所述读请求所针对的数据。
18.一种非易失性计算机可读介质,所述非易失性计算机可读介质存储机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至9中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710526284.1A CN109213695B (zh) | 2017-06-30 | 2017-06-30 | 缓存管理方法、存储系统以及计算机程序产品 |
US16/021,734 US11093410B2 (en) | 2017-06-30 | 2018-06-28 | Cache management method, storage system and computer program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710526284.1A CN109213695B (zh) | 2017-06-30 | 2017-06-30 | 缓存管理方法、存储系统以及计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109213695A CN109213695A (zh) | 2019-01-15 |
CN109213695B true CN109213695B (zh) | 2023-07-21 |
Family
ID=64738721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710526284.1A Active CN109213695B (zh) | 2017-06-30 | 2017-06-30 | 缓存管理方法、存储系统以及计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11093410B2 (zh) |
CN (1) | CN109213695B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10891239B2 (en) * | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US11573709B2 (en) | 2020-01-07 | 2023-02-07 | International Business Machines Corporation | Maintaining data structures in a memory subsystem comprised of a plurality of memory devices |
US11620055B2 (en) | 2020-01-07 | 2023-04-04 | International Business Machines Corporation | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of the data structures |
US11907543B2 (en) | 2020-01-07 | 2024-02-20 | International Business Machines Corporation | Managing swappable data structures in a plurality of memory devices based on access counts of the data structures |
CN113973502B (zh) * | 2020-05-25 | 2023-11-17 | 华为技术有限公司 | 一种高速缓存冲撞处理方法及装置 |
US11681630B2 (en) * | 2020-09-18 | 2023-06-20 | Kioxia Corporation | System and method for scaling command orchestration through address mapping |
US11994989B2 (en) | 2022-08-17 | 2024-05-28 | Dell Products L.P. | Cache efficiency analysis based on in-depth metrics instrumentation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389135A (zh) * | 2015-12-11 | 2016-03-09 | 华中科技大学 | 一种固态盘内部缓存管理方法 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4073161B2 (ja) * | 2000-12-06 | 2008-04-09 | 株式会社日立製作所 | ディスクストレージのアクセスシステム |
US6904498B2 (en) * | 2002-10-08 | 2005-06-07 | Netcell Corp. | Raid controller disk write mask |
US7631023B1 (en) * | 2004-11-24 | 2009-12-08 | Symantec Operating Corporation | Performance-adjusted data allocation in a multi-device file system |
US7500050B2 (en) * | 2006-03-20 | 2009-03-03 | International Business Machines Corporation | Wise ordering for writes—combining spatial and temporal locality in write caches for multi-rank storage |
KR101581679B1 (ko) * | 2009-03-18 | 2015-12-31 | 삼성전자주식회사 | 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 |
US8468292B2 (en) * | 2009-07-13 | 2013-06-18 | Compellent Technologies | Solid state drive data storage system and method |
US8554993B2 (en) * | 2009-09-21 | 2013-10-08 | Translattice, Inc. | Distributed content storage and retrieval |
US8468302B2 (en) * | 2010-01-14 | 2013-06-18 | Hitachi, Ltd. | Storage system |
US8560759B1 (en) * | 2010-10-25 | 2013-10-15 | Western Digital Technologies, Inc. | Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency |
US20120254508A1 (en) * | 2011-04-04 | 2012-10-04 | International Business Machines Corporation | Using the Short Stroked Portion of Hard Disk Drives for a Mirrored Copy of Solid State Drives |
US20130019057A1 (en) * | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
WO2013057764A1 (en) * | 2011-10-19 | 2013-04-25 | Hitachi, Ltd. | Storage system |
WO2013160969A1 (en) * | 2012-04-27 | 2013-10-31 | Hitachi, Ltd. | Storage apparatus and data management method |
US9355036B2 (en) * | 2012-09-18 | 2016-05-31 | Netapp, Inc. | System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers |
EP2881864A4 (en) * | 2012-11-07 | 2016-04-13 | Hitachi Ltd | COMPUTER SYSTEM, MEMORY MANAGEMENT COMPUTER AND MEMORY MANAGEMENT PROCESS |
US9122589B1 (en) | 2013-06-28 | 2015-09-01 | Emc Corporation | Data storage system with unified system cache |
WO2015015550A1 (ja) * | 2013-07-29 | 2015-02-05 | 株式会社日立製作所 | 計算機システム及び制御方法 |
WO2015029102A1 (ja) * | 2013-08-26 | 2015-03-05 | 株式会社日立製作所 | ストレージ装置及び階層制御方法 |
US9311207B1 (en) * | 2013-09-12 | 2016-04-12 | Emc Corporation | Data storage system optimizations in a multi-tiered environment |
US9864683B1 (en) | 2014-09-30 | 2018-01-09 | EMC IP Holding Company LLC | Managing cache for improved data availability by associating cache pages with respective data objects |
US10235399B2 (en) * | 2014-11-05 | 2019-03-19 | Hewlett Packard Enterprise Development Lp | Methods and systems for determining hardware sizing for storage array systems |
US10067968B2 (en) * | 2014-11-07 | 2018-09-04 | International Business Machines Corporation | Pre-caching of relational database management system based on data retrieval patterns |
US20160179379A1 (en) * | 2014-12-23 | 2016-06-23 | Teradata Us, Inc. | System and method for data management across volatile and non-volatile storage technologies |
US10095425B1 (en) * | 2014-12-30 | 2018-10-09 | EMC IP Holding Company LLC | Techniques for storing data |
US9720601B2 (en) * | 2015-02-11 | 2017-08-01 | Netapp, Inc. | Load balancing technique for a storage array |
US9612758B1 (en) | 2015-03-10 | 2017-04-04 | EMC IP Holding Company LLC | Performing a pre-warm-up procedure via intelligently forecasting as to when a host computer will access certain host data |
US10684777B2 (en) * | 2015-06-23 | 2020-06-16 | International Business Machines Corporation | Optimizing performance of tiered storage |
KR101918806B1 (ko) * | 2015-06-30 | 2018-11-14 | 전자부품연구원 | 분산 파일 시스템의 읽기 성능 극대화를 위한 캐시 관리 방법 |
JP6565560B2 (ja) * | 2015-10-01 | 2019-08-28 | 富士通株式会社 | ストレージ制御装置、及び制御プログラム |
US9804787B2 (en) * | 2015-11-03 | 2017-10-31 | Samsung Electronics Co., Ltd. | Mitigating GC effect in a raid configuration |
US9880744B1 (en) * | 2015-12-22 | 2018-01-30 | Veritas Technologies Llc | Method for flash-friendly caching for CDM workloads |
KR102457179B1 (ko) * | 2016-03-02 | 2022-10-21 | 한국전자통신연구원 | 캐시 메모리 및 그것의 동작 방법 |
CN107870732B (zh) * | 2016-09-23 | 2020-12-25 | 伊姆西Ip控股有限责任公司 | 从固态存储设备冲刷页面的方法和设备 |
US10594771B2 (en) * | 2017-02-09 | 2020-03-17 | International Business Machines Corporation | Distributed file transfer with high performance |
-
2017
- 2017-06-30 CN CN201710526284.1A patent/CN109213695B/zh active Active
-
2018
- 2018-06-28 US US16/021,734 patent/US11093410B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389135A (zh) * | 2015-12-11 | 2016-03-09 | 华中科技大学 | 一种固态盘内部缓存管理方法 |
Non-Patent Citations (1)
Title |
---|
基于固态盘特征的存储优化研究;黄平;《中国博士学位论文全文数据库》;I137-3 * |
Also Published As
Publication number | Publication date |
---|---|
CN109213695A (zh) | 2019-01-15 |
US11093410B2 (en) | 2021-08-17 |
US20190004968A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213695B (zh) | 缓存管理方法、存储系统以及计算机程序产品 | |
US11163699B2 (en) | Managing least recently used cache using reduced memory footprint sequence container | |
US8566550B2 (en) | Application and tier configuration management in dynamic page reallocation storage system | |
US8549226B2 (en) | Providing an alternative caching scheme at the storage area network level | |
US9619149B1 (en) | Weighted-value consistent hashing for balancing device wear | |
US9229653B2 (en) | Write spike performance enhancement in hybrid storage systems | |
US11880579B2 (en) | Data migration method and apparatus | |
EP2180407A2 (en) | Fast data recovery from HDD failure | |
US20140304452A1 (en) | Method for increasing storage media performance | |
US9110813B2 (en) | Cache load balancing in storage controllers | |
US8332589B2 (en) | Management of write cache using stride objects | |
CN109213693B (zh) | 存储管理方法、存储系统和计算机程序产品 | |
US20120079199A1 (en) | Intelligent write caching for sequential tracks | |
US20210157740A1 (en) | Efficient cache management | |
US9747040B1 (en) | Method and system for machine learning for write command selection based on technology feedback | |
CN109086009B (zh) | 一种监控管理方法和装置、计算机可读存储介质 | |
US10318180B1 (en) | Metadata paging mechanism tuned for variable write-endurance flash | |
CN110297601B (zh) | 固态硬盘阵列构建方法、电子设备及存储介质 | |
US10853252B2 (en) | Performance of read operations by coordinating read cache management and auto-tiering | |
KR101823983B1 (ko) | 메모리 디바이스들 및 방법들 | |
CN109783000B (zh) | 一种数据处理方法及设备 | |
US10686906B2 (en) | Methods for managing multi-level flash storage and devices thereof | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
US10782891B1 (en) | Aggregated host-array performance tiering | |
Hayashi et al. | Evaluation of Volume Tiering Method and SSD Cache Method in Tiered Storage System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |