CN107506314B - 用于管理存储系统的方法和装置 - Google Patents
用于管理存储系统的方法和装置 Download PDFInfo
- Publication number
- CN107506314B CN107506314B CN201610417408.8A CN201610417408A CN107506314B CN 107506314 B CN107506314 B CN 107506314B CN 201610417408 A CN201610417408 A CN 201610417408A CN 107506314 B CN107506314 B CN 107506314B
- Authority
- CN
- China
- Prior art keywords
- cache
- cache device
- devices
- request
- group
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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
- G06F2212/601—Reconfiguration of cache 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的实施例提出了用于管理存储系统的方法、装置和计算机程序产品。该存储系统包括多个缓存设备和底层存储设备,该多个缓存设备包括第一缓存设备组和第二缓存设备组。本公开的一个方面的方法包括:接收针对所述存储设备的输入/输出(I/O)请求;响应于确定所述I/O请求触发对目标数据的缓存,如果所述I/O请求为读请求,将所述目标数据从所述存储设备存储到所述第一缓存设备组中;以及如果所述I/O请求为写请求,将所述目标数据存储到所述第二缓存设备组中。本公开的实施例引入了用于缓存设备的新架构,使得处理时延得以缩短,并且/或者,存储容量能够被更有效地利用。
Description
技术领域
本公开的实施例涉及存储系统,并且更具体地涉及用于包括快速缓存器的存储系统的方法和装置。
背景技术
缓存(cache)是底层存储设备(例如,硬盘)和外界接口之间的缓冲器。缓存可以存放例如热数据,以减少外界接口和底层驱动器之间的数据交换,提高数据的传输速度,降低数据存取的时延。缓存具有极快的存取速度,并且缓存的大小与速度是直接关系到底层驱动器的传输速度的重要因素。
快速缓存(fast cache)作为层2(L2)缓存进行工作,其包含位于底层物理驱动器上的逻辑块的拷贝。作为示例,快速缓存可以由独立的成对的固态磁盘(SSD)来构建,这使得能够容易地对快速缓存进行扩展和缩减。目前,对于包括多个缓存设备的存储系统而言,其架构、管理和整体性能均存在提高和改进的空间。
发明内容
本公开的实施例提出了用于管理存储系统的方法和装置。下面给出了对各实施例的简要概述,以提供对各种实施例的一些方面的基本理解。发明内容部分所记载的内容并非旨在标识关键元素的要点或描述各种实施例的范围。相反,在此描述的内容仅仅是为了以简化形式呈现一些概念,作为对下文具体描述的前序。
本公开的第一方面提供了一种管理存储系统的方法,该存储系统包括多个缓存设备和底层存储设备,该多个缓存设备包括第一缓存设备组和第二缓存设备组。该方法包括:接收针对所述存储设备的输入/输出(I/O)请求;响应于确定所述I/O请求触发对目标数据的缓存,如果所述I/O请求为读请求,将所述目标数据从所述存储设备存储到所述第一缓存设备组中;以及如果所述I/O请求为写请求,将所述目标数据存储到所述第二缓存设备组中。
在一个实施例中,该方法可以进一步包括:响应于所述I/O请求为写请求,确定所述目标数据的目标地址是否包括在所述存储系统的地址映射中,所述地址映射指示所述存储设备的存储地址与所述多个缓存设备的缓存地址之间的映射;如果确定所述目标地址未包括在所述地址映射中,将所述目标数据写入所述存储设备。
在另一实施例中,该方法还可以包括:如果确定所述目标地址被包括在所述地址映射中,基于所述地址映射确定目标缓存设备,所述目标缓存设备包含在所述地址映射中与所述目标地址对应的缓存地址。在进一步的实施例中,该方法还可以包括:响应于确定所述目标缓存设备属于所述第一缓存设备组,在所述地址映射中移除用于确定所述目标缓存设备的映射;以及将所述目标数据写入所述第二缓存设备组中的缓存设备。在另一实施例中,该方法还可以包括:响应于确定所述目标缓存设备属于所述第二缓存设备组,将所述目标数据写入所述目标缓存设备。
在一个实施例中,所述第一缓存设备组中的缓存设备包括第一固态磁盘SSD对,并且所述第一SSD对中的每个SSD独立地服务于所述读请求。
本公开的第二方面提供了一种管理多个缓存设备的方法,该多个缓存设备包括服务读请求的第一缓存设备组和服务写请求的第二缓存设备组。该方法包括:检测用于扩展所述多个缓存设备的第一请求;响应于检测到所述第一请求,获取所述多个缓存设备的状态信息,所述状态信息指示负载状态和存储空间使用情况中的至少一项;以及基于所获取的所述状态信息,将所述多个缓存设备之外的新缓存设备添加到所述第一缓存设备组或者所述第二缓存设备组。
本公开的第三方面提供了一种管理存储系统中的多个缓存设备的方法,所述多个缓存设备包括服务读请求的第一缓存设备组和服务写请求的第二缓存设备组。该方法包括:检测用于缩减所述缓存设备的第二请求;响应于检测到所述第二请求,将所述第一缓存设备组中的第一缓存设备从所述多个缓存设备移除,或者,通过以下操作将所述第二缓存设备组中的至少一个缓存设备从所述多个缓存设备移除:禁止对所述至少一个缓存设备的写操作;将所述至少一个缓存设备中的脏页面复制到所述存储系统中的存储设备;以及将所述至少一个缓存设备从所述第二缓存设备组移除。
本公开的第四方面提供了一种管理多个缓存设备的方法,所述多个缓存设备包括服务读请求的第一缓存设备组和服务写请求的第二缓存设备组,该方法包括:检测用于平衡所述第一缓存设备组和所述第二缓存设备组的第三请求;响应于检测到所述第三请求,获取所述多个缓存设备的状态信息,所述状态信息指示所述多个缓存设备的负载状态、在线时间和存储空间使用情况中的至少一项;以及基于所获取的所述多个缓存设备的状态信息,在所述第一缓存设备组和所述第二缓存设备组之间进行缓存设备的迁移。
本公开的第五方面提供了一种存储系统,该存储系统包括:存储设备;多个缓存设备,所述多个缓存设备包括服务于读请求的第一缓存设备组和服务于写请求的第二缓存设备组;以及存储系统管理器,被配置为执行根据本公开的第一方面到第四方面中任一方面所述的方法。
本公开的第六方面提供了一种计算机程序产品,其包括具有存储在其中的程序代码的至少一个计算机可读存储介质,所述程序代码在由装置执行时促使所述装置执行根据本公开的第一方面到第四方面中任一方面所述的方法。
根据本公开的实施例的方法、存储系统和计算机程序产品,引入了用于缓存设备的新架构,使得处理时延得以缩短,并且/或者,存储容量能够被更有效地利用。
尽管在附图中通过示例的方式示出了特定的实施例,然而,应当理解,本文的具体实施例的描述不意在将实施例限制为所公开的具体形式。
附图说明
从下文的公开内容和权利要求中,本公开的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出示例性实施例的非限制性描述,在附图中:
图1示出了根据本公开的实施例的存储系统的示意性框图;
图2示出了根据本公开的实施例的存储系统内的部分操作的示意图;
图3a-3b示出了根据本公开的实施例的用于管理存储系统的方法的流程图;
图4a-4b示出了根据本公开的实施例的用于管理多个缓存设备的方法的流程图;
图5a-5b示出了根据本公开的实施例的用于管理多个缓存设备的另一方法的流程图;
图6a-6b示出了根据本公开的实施例的用于管理多个缓存设备的又一方法的流程图;
图7示出了根据本公开的实施例的用于触发多个缓存设备之间的平衡操作的触发请求的示例;
图8示出了根据本公开的实施例的用于维护存储设备的相关属性装置的数据结构来示例;
图9示出了根据本公开的实施例的用于管理存储系统的装置的示意性结构图;
图10示出了根据本公开的实施例的用于管理多个缓存设备的的装置的示意性结构图;
图11示出了根据本公开的实施例的用于管理多个缓存设备的另一装置的示意性结构图;
图12示出了根据本公开的实施例的用于管理多个缓存设备的又一装置的示意性结构图;
图13示出了根据本公开的实施例的用于管理多个缓存设备的另一装置的示意性结构图;以及
图14示出了可以实施本公开的实施例的设备的示例性结构图。
具体实施方式
在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本公开的实施例。因此,本公开不旨在于受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。
应当理解,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。另外还应当理解“包括”,“包含”仅被用来说明所陈述的特征、元素、功能或者部件的存在,然而并不排除存在一个或者多个其他的特征、元素、功能或者部件。
如上所述,传统的快速缓存可以由独立的SSD对,例如一级独立磁盘冗余阵列(RAID1)SSD对来构建。此外,传统的实施中,快速缓存中的每个SSD对被同等地对待,从而每个SSD对都可以工作在读写(RW)模式。在这种情况下,可以通过以下过程对快速缓存进行扩展(即,向快速缓存中添加新的缓存设备):在选中的SSD对上触发扩展,并且以及将每个选中的SSD对以RW模式扩展到该快速缓存。
另外,可以通过以下过程对快速缓存进行缩减:在选中的SSD对上触发缩减;将所选中的SSD对上的写操作进行冻结;将选中的SSD对中的所有脏页面复制(后文也称为清理)到底层驱动器;以及从快速缓存中移除所选中的SSD对。
在快速缓存器的这种传统架构中,存在若干问题和缺陷。例如,所有SSD对在被缩减时都要经历清理过程,大部分的清理操作耗时很长,这给用户带来不好的体验,尤其是在关键的维护工作中。而且,快速缓存中所有的昂贵的SSD都工作于RAID1对的模式,该模式对于写缓存提供“1+1”的数据保护,即,一个缓存单元存储数据,而另一存储单元存储该数据的备份。然而对于读缓存却导致存储的浪费,因为读缓存不需要这种数据保护。
为了解决上述以及其他潜在的问题,本公开的实施例引入了一种用于缓存设备的新架构。缓存设备的示例包括但不限于SSD对。根据本公开的一些实施例,存储系统中的多个缓存设备(例如,构成快速缓存器或者其一部分的多个缓存设备)包括至少两组,例如称为“第一缓存设备组”和“第二缓存设备组”。每一缓存设备组至少包括一个缓存设备。这些缓存设备组被用于不同的用途。例如,多个缓存设备可以被分为读写(RW)组和只读(RO)组。在另一示例中,该多个缓存设备可以包括多于两组,例如读写(RW)组、只读(RO)组、常规组,等等。常规组可以具有与传统缓存设备相同的特性。
利用该新架构,多个缓存设备(例如,多个SSD对)包括不同的类型区别对待,以使得避免对所有缓存设备进行同样的清除处理,从而避免不必要的时延,并且/或者提高存储空间的利用效率。下面将参考附图详细描述本公开的若干示例实施例。
图1示出了根据本公开的实施例的存储系统100的示意性框图。如图所示,存储系统100包括根据提出的新架构进行布置的多个缓存设备(111、121、131、141以及112、122、132、142)。该多个缓存设备包括至少第一缓存设备组101和第二缓存设备组102。在一个示例中,第一缓存设备组101和第二缓存设备组102可以分别为RO组和RW组。如图1所示,该存储系统100还包括底层存储设备103和存储系统管理器104。该底层存储设备103可以在存储系统管理器104的控制下将数据写入(也可称为“提升”)第一缓存设备组101或者第二缓存设备组102。在另一实施例中,该存储系统管理器104可以控制向第一缓存设备组101或者第二缓存设备组102添加(后文也称为扩展)新的缓存设备、从第一缓存设备组101或者第二缓存设备组102删除缓存设备、或者在第一缓存设备组101和第二缓存设备组102之间迁移缓存设备,以获得负载平衡或者使得存储容量能够被更充分地利用。
在图2中示出了在存储系统100中的某些操作的示意图。操作的示例包括但不限于:第一缓存设备组101和第二缓存设备组之间的迁移操作210,以及第一缓存设备组101和第二缓存设备组102与底层存储设备(后文也称“底层驱动器”或“底层存储设备”)103之间的数据清理操作230和数据提升操作220。所有这些示出的操作均可以通过存储系统管理器104的控制来完成。
在图2的示例中,每个缓冲设备被示出为一个SSD对(211、212、213、214),但是本领域技术人员可以理解,本公开的实施例不限于此。在该示例中,第二缓存设备组102为RW组,并且其中的SSD对211和212以RAID1模式工作,以提供“1+1”的写数据保护。默认地,RW组作为写缓存而工作。由写请求触发的数据块,在从底层驱动器被提升到快速缓存器时,被引导到该RW组。被提升到RW组的数据块将继续服务后续的写请求或者读请求,直到被清理回底层驱动器。
在一些实施例中,可以禁止或者限制将读请求触发的数据块提升到该102。在图2中的示例中,该底层驱动器可以是硬盘驱动器。在图2中所示的第一缓存设备组101可以是RO组。尽管在该RO组,SSD可以被成对地添加和去除,但是SSD对(例如213、214)中的每个SSD可以独立地作为读缓存而工作。对于由读请求触发的数据块,在从底层驱动器提升到快速缓存时,将被引导到该RO组。被提升到RO组的数据块在过期之前将继续服务后续的读请求。由写请求触发的数据块将不被提升到该第一缓存设备组101。
基于提出的新架构,本公开还提出了用于管理存储系统的方法和装置,用以改进存储系统的性能。以下参考图3a-3b,其中示出了根据本公开的实施例的用于管理存储系统的方法的示例性流程图。仍然参考图1所示的存储系统100来描述该方法。如上所述,目标存储系统包括多个缓存设备111-141和112-142以及底层存储设备103。该方法可以例如由图1中的存储系统管理器104控制执行。
如图3a所示,在块310,接收针对该存储设备的I/O请求。可以理解,该I/O请求涉及将要被写入或者读取的数据,称为“目标数据”。在块320,确定该I/O请求是否会触发对目标数据的缓存。如果I/O请求不会触发请求缓存操作,则只需要按照常规的方式处理该请求即可,在此不再赘述。
另一方面,如果在块320确定接收到的当前I/O操作将要触发缓存操作,则方法300进行到块330,在此判断接收到的I/O请求是读请求还是写请求。如果在块330确定接收到的I/O请求为读请求,方法300进行到块332,在此将目标数据从存储设备103存储到第一缓存设备组101)中。另一方面,如果在块330确定I/O请求为写请求,则方法300进行到块334,在此将目标数据存储到第二缓存设备组102中。
可以看到,根据本公开的实施例,存储系统中的该第一缓存设备组101和第二缓存设备组102分别服务于读请求和写请求。也即,由写请求触发的数据块仅被提升到第二缓存设备组102。以此方式,在第一缓存设备组101中的缓存设备被移除时,不存在要被清理的数据。这样,在需要被缩减时,第一缓存设备组101中的缓存设备能够被直接移除而进行无需耗时的清理操作。在本公开中,清理是指将缓存设备中的数据复制到底层存储设备,以及可选地将该缓存设备中的数据删除。
特别地,在一个实施例中,第一缓存设备组101中的缓存设备可以包括一个或者多个SSD对,并且SSD对中的每个SSD独立地服务于读请求。这使得第一缓存设备组101中的存储容量能够全部用于服务读请求,由此提高其中的SSD对的容量利用率。
备选地或附加地,在一个实施例中,第二缓存设备组102中的缓存设备可以包括一个或者多个SSD对。SSD对中的一个SSD用于保存该SSD对中另一SSD的数据的副本,以提供冗余数据保护。如本领域技术人员能够理解的,本公开的实施例不限于在该第二缓存设备组中仅应用“1+1”的冗余保护。例如,在一些实施例中,可以在多于一个SSD中保存另一SSD中的数据的副本。
图3b示出根据本公开的一个示例实施例的用于处理写请求的方法301的示意性流程图。方法301可以被视作图3a所述的方法300的一种示例实现。通过下文描述将会理解,通过方法301,对写请求的处理能够适应于快速缓存中多个缓存设备的分组的变化。
如图3b所示,在此示例中,响应于在块335接收写请求。在块340,确定目标数据的目标地址是否包括在该存储系统100的地址映射中,其中该地址映射指示存储设备103的存储地址与多个缓存设备111-141和112-142的缓存地址之间的映射。基于340的确定,目标数据可以被相应地写入存储设备103或者第二缓存设备组102,这一过程由块352到355示出。
在一个实施例中,如果在块340确定所述目标地址未包括在所述地址映射中,则方法301进行到块351,在此将所述目标数据写入所述存储设备103。
另一方面,如果在块340确定目标地址被包括在所述地址映射中,则方法301进行到块352,在此基于所述地址映射确定目标缓存设备,所述目标缓存设备包含在所述地址映射中与所述目标地址对应的缓存地址。继而,在块353中,确定所述目标缓存设备属于所述第一缓存设备组101,在块354,从所述地址映射中移除用于确定所述目标缓存设备的映射。而后,在块355,将目标数据写入所述第二缓存设备组102中的缓存设备。
另一方面,如果在块353中确定目标缓存设备属于所述第二缓存设备组102,方法301进行到块355,在此将所述目标数据写入第二缓存设备组102中的该目标缓存设备。
以下参考图4a-4b,其示出根据本公开的另一方面的用于管理多个缓存设备的方法400和401。该方法400和401使得能够对存储系统中的缓存设备进行自适应地扩展。仍然参考图1所示的存储系统100来描述方法400和401。如上所述,第一缓存设备组101和第二缓存设备组102可以分别服务于读请求和写请求。例如,第一缓存设备组101中的缓存设备可以包括一个或者多个SSD对(例如图2中的213、214),并且该SSD对中的每个SSD独立地服务于所述读请求。第二缓存设备组102中的缓存设备包括一个或者多个SSD对(例如图2中的211、212),该SSD对中的一个SSD用于保存所该SSD对中另一SSD的数据的副本以提供冗余数据保护。在一个实施例中,该方法400可以例如由图1中的存储系统管理器104控制执行。
如图4a所示,在块410,检测用于扩展多个缓存设备的扩展触发请求(称为“第一请求”)。在一个实施例中,该第一请求是来自用户的输入请求。特别地,在一个实施例中,第一请求中可以包括用户指定的多个候选缓存设备的列表。此时,可以从第一请求中确定待添加的新缓存设备。
在块420,响应于检测到第一请求,获取多个缓存设备的状态信息。在某些实施例中,在块420可以获取缓存设备的负载状态。备选地或者附加地,在某些实施中,在块420,可以获取缓存设备的存储空间使用情况。任何其他的状态信息也是可能的,本公开的范围在此方面不受限制。
在块430,基于在块420获取的状态信息,将新缓存设备添加到第一缓存设备组101或者第二缓存设备组102中。以此方式,能够根据需要使新加入的缓存设备服务于写请求或者读请求。这使得能够自动地对快速缓存进行自适应地扩展。下文还将参考图4b描述这方面的具体示例。
在图4b示出另一个示例方法401的实施例的流程图。方法401可以视为方法400的一个示例实现。在图4b所示的示例中,用户的扩展请求中包含了待添加的缓存设备的列表。列表中所包含的设备被迭代地添加到存储系统100中。
具体而言,如图4b所示,在块411,检测用于扩展该快速缓存器的第一请求。该操作与方法400的块410相对应。接下来,在块412,从多个候选缓存设备的列表中逐个选择新缓存设备(例如一个SSD对),以便添加到第一缓存设备组或者第二缓存设备组
而后,在块421,获取多个缓存设备的状态信息。块421与方法400中的块420对应。如上所述,状态信息例如可以包括缓存设备的当前负载状态和/或存储空间使用状态,等等。
方法401中的块431到434对应于方法400中的块430,用于基于块421所获得的状态信息,将多个缓存设备之外的新缓存设备添加到第一缓存设备组或者第二缓存设备组。具体而言,在块431,基于在块421处获取的多个缓存设备的状态信息,计算第一缓存设备组101(例如RO组)和第二缓存设备组102(例如RW组)的负载状态。
在块432,基于块431处的计算的结果,确定选中的缓存设备要被扩展到的类型,即扩展到第一缓存设备组101(例如RO组)还是第二缓存设备组102(例如RW组)。在一个实施例中,状态信息包括缓存设备的负载状态。此时,可以将第一缓存设备组101和第二缓存设备组102的负载状态进行比较。如果所述第一负载与所述第二负载的差或者比率超过预定阈值,则确定将新缓存设备添加到第一缓存设备组101。相反,如果第一负载与所述第二负载的差或者比率在预定阈值以下,则确定将新缓存设备添加到第二缓存设备。作为示例,该预定阈值可以被设定为0或者大于零的数。但是本公开的实施例不限于具体数值。该预定阈值可以根据需要适当地调整。
备选地或附加地,如上所述,在块421获取的状态信息还可以包括缓存设备的存储空间使用情况。此时,在块431,可以基于所述多个缓存设备的所述存储空间使用情况,确定所述第二缓存设备组的存储空间使用率。在块432,如果所述第二缓存设备组的所述存储空间使用率超过第一阈值,则确定将所述新缓存设备添加到所述第二缓存设备组;如果所述第二缓存设备组的所述存储空间使用率在所述第一阈值以下,则确定将所述新缓存设备添加到所述第一缓存设备组。本公开的实施例不限于使用任何具体数值作为该第一阈值。
在又一实施例中,在块431可以基于所述多个缓存设备的所述存储空间使用情况,确定所述第二缓存设备组的存储空间空闲率。在这样的实施例中,在块432,如果所述第二缓存设备组的所述存储空间空闲率低于第二阈值,则确定将所述新缓存设备添加到所述第二缓存设备组;如果所述第二缓存设备组的所述存储空间空闲率在所述第二阈值以上,则确定将所述新缓存设备添加到所述第一缓存设备组。并且在块433或者434根据该确定执行添加操作。类似地,该第二阈值不限于具体数值,其可以根据需要适当地调整。
基于块432处的确定结果,选中的缓存设备被扩展到第一缓存设备组(块433),或者被扩展到第二缓存设备组(块434)。而后,方法401可以进行到块440,在此从所述待扩展的缓存设备的列表中删除所选择的设备。而后,在块450,检查待扩展的缓存设备的列表中是否为空。若不为空,方法401返回块411以重复执行选择、获取、扩展、删除和检查操作,直到所述待扩展的缓存设备的列表为空。
以下参考图5a-5b,其示出根据本公开的另一方面的实施例的用于管理多个缓存设备的方法500和501。该方法500和501使得能够对存储系统中的多个缓存设备进行有效地缩减。仍然参考图1所示的存储系统100来描述方法500和501。如上所述,该多个缓存设备包括至少第一缓存设备组101和第二缓存设备组102,该第一缓存设备组101和第二缓存设备组102可以分别服务读请求和写请求。例如,第一缓存设备组101中的缓存设备可以包括一个或者多个SSD对(例如图2中的213、214),并且该SSD对中的每个SSD独立地服务于所述读请求。第二缓存设备组102中的缓存设备包括一个或者多个SSD对(例如图2中的211、212),该SSD对中的一个SSD用于保存所述第二SSD对中的另一SSD的数据的副本以提供冗余数据保护。但是本公开的实施例不限于采用SSD对来构建缓存设备。在一个实施例中,该方法500和501可以例如由图1中的存储系统管理器104控制执行。
如图5a所示,用于该存储系统的方法500包括:在块510,检测用于缩减所述缓存设备的缩减请求(称为“第二请求”)。在一个实施例中,该第二请求是来自用户的输入请求。特别地,在一个实施例中,第二请求中可以包括用户指定的多个候选缓存设备的列表。此时,可以从第二请求中确定待缩减的缓存设备。
在块520中,响应于检测到所述第二请求,从所述第一缓存设备组101或者所述第一缓存设备组102中移除至少一个缓存设备。例如,在块520,确定待缩减的缓存设备的类别,即位于第一缓存设备组101还是位于第二缓存设备组102。在待缩减的缓存设备属于第一缓存设备组101的情况下,可以通过块523直接将该待缩减的缓存设备从所述多个缓存设备中移除。在待缩减的缓存设备属于第二缓存设备组102的情况下,可以通过块521-523的操作将第二缓存设备组中的至少一个缓存设备从所述多个缓存设备移除。如图5a所示,在块521,禁止对所述至少一个缓存设备的写操作;在块522,将所述至少一个缓存设备中的脏页面复制到所述存储系统中的存储设备;以及在块523,将该至少一个缓存设备移除。
以此方式,能够对第一缓存设备组中的缓存设备和第二缓存设备组中的缓存设备的移除进行不同的处理,避免不必要的脏页面的清理操作,缩短时延,改善用户体验。
在第二请求是来自用户的输入、并且该第二请求中包括用户指定的多个候选缓存设备的列表的示例中,可以(例如迭代地)针对该列表中的各个缓存设备逐个地执行以上所述的块520-523中的基于缓存设备的类别进行的相应缩减(也称为移除)操作。
在图5b示出另一个示例方法501的实施例的流程图。方法501可以视为方法500的一个示例实现。在图5b所示的示例中,用户的缩减请求中包含了待缩减的缓存设备的列表。列表中所包含的设备被迭代地从存储系统100中移除。
具体而言,如图5b所示,在块511,检测用于缩减缓存设备的第二请求。该操作与方法500的块510对应。接下来,在块512,从候选缓存设备的列表中选择缓存设备,以便从该存储系统100移除。在块524-527依据选中的缓存设备所属的缓存设备组(即,该缓存设备的类型),对该设备执行移除操作。具体而言,在块524确定该缓存设备是否属于第二缓存设备组102(例如RW组)。该操作与图5a中的块520对应。如果该缓存设备不属于第二缓存设备组102,则通过块527,将选中的该缓存设备从该多个缓存设备中直接移除;反之,如果该缓存设备属于第二缓存设备组102,则进行块525-527的操作。该操作与图5a中的块521-523对应。
基于块524处的确定结果,选中的缓存设备被直接从第一缓存设备组(块527)移除,或者通过块525-227从第二缓存设备组移除。而后,进一步地,可以在块530,从候选缓存设备的列表中删除所选择的设备,以及在块540检查候选缓存设备的列表中是否为空,若不为空,若不为空,方法501返回块512继续执行选择、移除、删除和检查操作,直到所述候选缓存设备的列表为空。
在另一实施例中,可以不存在用户输入的候选缓存设备的列表。这种情况下,图5a中的方法500可以基于,例如快速缓存器中的各缓存设备的负载、在线时间、存储空间占用情况等中的至少一项,来选择待缩减的存储设备。
在又一实施例中,在方法500的块510接收的第二请求中,可以指定待缩减的缓存设备的数目。在这种情况下,方法500可以基于负载、在线时间、存储空间占用情况等中的至少一项来选择指定数目的缓存设备用于缩减。该实施例使得能够在缩减存储设备的同时对系统性能的影响最小化。
以下参考图6a-6b,其示出根据本公开的另一方面的实施例的用于管理多个缓存设备的方法600和601,该方法600和601使得能够对存储系统中的该多个缓存设备进行有效地平衡优化。仍然参考图1所示的存储系统100来描述方法600和601。如上所述,该多个缓存设备第一缓存设备组101和第二缓存设备组102。该第一缓存设备组101和第二缓存设备组102可以分别服务读请求和写请求。例如,第一缓存设备组101中的缓存设备可以包括一个或者多个SSD对(例如图2中的213、214),并且该SSD对中的每个SSD独立地服务于所述读请求。第二缓存设备组102中的缓存设备包括一个或者多个SSD对(例如图2中的211、212),该SSD对中的一个SSD用于保存所述第二SSD对中的另一SSD的数据的副本以提供冗余数据保护。但是本公开的实施例不限于采用SSD对来构建缓存设备。在一个实施例中,该方法600和601可以例如由图1中的存储系统管理器104控制执行。
如图6a所示,在块610,检测用于平衡第一缓存设备组和第二缓存设备组的平衡触发请求(称为“第三请求”)。在块620,响应于检测到所述第三请求,获取所述多个缓存设备的状态信息。在某些实施例中,在块420获取的缓存设备的状态信息可以指示所述多个缓存设备的负载状态、在线时间和存储空间使用情况中的至少一项。任何其他的状态信息也是可能的,本公开的范围在此方面不受限制。
在块630,基于所获取的所述多个缓存设备的状态信息,在所述第一缓存设备组和所述第二缓存设备组之间进行缓存设备的迁移。以此方式,能够根据快速缓存的缓存设备的负载、在线时间、存储空间使用情况中的一项或者多项来调整多个缓存设备的分组结构,获得负载和存储空间使用的平衡,使得该多个缓存设备能够被更有效的利用。
在一个实施例中,方法600使得后端运行处理能够基于系统状态提供更好地缓存效率(例如快速缓存效率)。这可以通过监测缓存磁盘的状态(诸如每秒输入输出(IOPS),带宽,在线时间,使用率等)、并且基于该状态自动地平衡用作快速缓存的多个缓存设备中两组缓存设备组(例如RW组和RO组)之间的磁盘对来实现。
在一个具体实施例中,在块620,可以获取多个缓存设备的负载状态,以及在块630中,可以基于所述多个缓存设备的负载状态,确定所述第一缓存设备组的第一负载和所述第二缓存设备组的第二负载;如果所述第一负载与所述第二负载的差值或者比率超过预定阈值,则将所述第二缓存设备组中的第一缓存设备迁移到所述第一缓存设备组;如果所述第一负载与所述第二负载的差值或者比率在所述预定阈值以下,则将所述第一缓存设备组中的第二缓存设备迁移到所述第二缓存设备组。
在另一实施例中,在块620,可以获取多个缓存设备的存储空间使用情况,以及在块630可以基于所述多个缓存设备的存储空间使用情况,获得所述第二缓存设备组的存储空间使用率;如果所述第二缓存设备组的所述存储空间使用率超过第三阈值将所述第一缓存设备组中的第二缓存设备迁移到所述第二缓存设备组;如果所述第二缓存设备组的所述存储空间使用率在所述第三阈值以下,则将所述第二缓存设备组中的第一缓存设备迁移到所述第一缓存设备组。
作为又一具体示例,在块620,可以获取多个缓存设备的存储空间使用情况,以及在块630基于所述多个缓存设备的存储空间使用情况,获得所述第二缓存设备组的存储空间空闲率;如果所述第二缓存设备组的所述存储空间空闲率低于第四阈值,将所述第一缓存设备组中的第二缓存设备迁移到所述第二缓存设备组;如果所述第二缓存设备组的所述存储空间空闲率在所述第四阈值以下,则将所述第二缓存设备组中的第一缓存设备迁移到所述第一缓存设备组。
在一个实施例中,第一缓存设备组的负载状态可以包括第一缓存设备组中各缓存设备的总的负载状态、平均负载状态、或者最低/最高负载状态。在另一实施例中,第一或者第二缓存设备组中的缓存设备的负载状态可以包括该缓存设备的即时负载状态、一段时间内的平均或者最低或者最高负载状态。
在另一实施例中,在块630,可以通过比较两个缓存设备组的IOPS的算术平均值来确定是否应该进行缓存设备的迁移,以及迁移的方向(即,从第一缓存设备组到第二缓存设备组还是相反)。如果发生迁移,则被迁移的缓存设备类型属性可以被相应改变。例如缓存设备的属性可以由RW类型变为RO类型,或者相反。
在又一实施例中,在块630可以根据以下等式(1)和(2)来分别计算RO缓存设备组和RW缓存设备组的平均负载:
然后,在块630,可以根据等式(3)或者(4)式来计算RO设备组和RW设备组的负载平衡因子α:
可以将α与阈值T进行比较来确定是否需要迁移以及迁移方向。例如,在采用(3)式计算时,如果α的绝对值小于T,说明两个缓存设备组的负载差别不大,则不需要进行缓存设备的迁移。这时可以将迁移标记设定为Flag=0。如果α>T,则可以确定RO设备组的负载相对于RW设备组过高,这时例如可以将迁移标记设定为Flag=RW->RO。如果-α>T,则可以确定RW设备组相对于RO设备组的负载过高,这时例如可以将迁移标记设定为Flag=RO->RW。在另一示例中,采用(4)计算负载平衡因子,并且如果α>T,则可以确定RO设备组的负载过高,这时例如可以将迁移标记设定为Flag=RW->RO;如果1/α>T,则可以确定RW设备组的负载过高,这时例如可以将迁移标记设定为Flag=RO->RW;在其他情况下,将迁移标记设定为Flag=0,即不需要迁移。
替代地或者附加地,在另一实施例中,在块630可以根据各组中缓存设备的空闲容量的比较来确定是否进行迁移以及迁移的方向。例如,如果第二缓存设备的空闲容量小于阈值β,则确定需要从第一缓存设备组向第二缓存设备组迁移缓存设备,并且迁移标记可以被标记为例如Flag=RO->RW。
在图6b中,给出利用另一示例方法601的进行缓存设备的平衡操作的流程图。方法601可以视为方法600的一个示例实现。具体而言,块611和621的操作可以分别与前述方法600的块610和620相同,而方法600的块630中的操作在图6b的示例中可以通过631-639来实现。
如图6b所示,在块631,计算第二缓存设备组102(例如RW组)的负载状态,该负载状态例如可以是相对于第一组缓存设备的负载的相对负载。在块632,将该负载状态与阈值比较,以判断是否需要执行迁移操作。如果需要迁移,在块633确定迁移的方向。如果确定要从第二缓存设备组(例如RW组)向第一缓存设备组101(例如RO组)迁移,则执行块634-637的操作。在块634,选择第二缓存设备组中的一个或者多个缓存设备;在块635,锁定所选中的缓存设备;在块636,清理选中的缓存设备中的数据;以及在块637,将该缓存设备移入第一缓存设备组。如果在块633确定要执行相反方向的迁移,则执行块638-639的操作,即:在块638从第一缓存设备组中选择一个或者多个缓存设备;以及在块639将该选中的缓存设备移入第二缓存设备组。可选地,如图6b所示,在迁移完成时,可以在块640更新缓存器设备的(磁盘)负载状态,例如,更新对应的状态数据表。
在一个实施例中,在块634和/或块638中,可以基于所获取的多个缓存设备的负载状态、在线时间和存储空间使用情况中的至少一项,来选择待迁移的缓存设备。例如,可以选择在线时间最短和/或负载最小的缓存设备进行迁移,以使该缓存设备能够被更充分地利用。
在另一个实施例中,在方法600的块610和方法601的块611中检测的第三请求可以是以下中的至少一个:周期性调度请求、用户输入的请求或者基于阈值的触发请求。周期性调度请求也可称为调度触发,其可以基于系统级的参数,例如调度周期。该周期可以被设置得较长,例如可以是几小时或者几天,以减少后端的系统工作量。用户输入的请求也可称为操作触发,其基于用户的操作,例如,用户输入的用于扩展或者缩减或者负载平衡的操作。基于阈值的触发请求:也可称为阈值触发,其求也可以基于系统级参数,例如触发阈值。在负载和/或容量使用和/或两组之间的不平衡达到设定的阈值时,平衡操作被触发。
在图7中示出三种触发/请求的示例。如图7所示,在第n次调出触发701和第n+1次周期性的调度触发702之间,可以存在一个或者多个用户输入的操作触发703T(x))或者基于阈值的触发704T(y)。响应于该触发/请求,可以根据本公开的实施例的方法,例如600或者601,由缓存设备控制器705基于缓存设备状态706、在例如图1中的第一缓存设备组101和第二缓存设备组102之间执行缓存设备平衡过程707。该缓存设备控制器705可以是图1中的存储系统管理器104或者其一部分。
在另一个实施例中,针对多个缓存设备中的每个缓存设备,可以维护一个属性表。并且相应地,在方法600的块630或者方法601的块637和639中可以通过改变针对缓存设备的设备类型属性值来将该缓存设备迁移到另一缓存设备组。
作为示例而不是限制,可以采用图8所示的数据结构来维护存储设备的相关属性。其中,类型标记801用于描述缓存设备(例如磁盘对)的类型。该标记例如可以具有以下三个状态:“RW”、“RO”和“锁定”。“RW”指示该缓存设备作为RAID1使用,其能够从前端写数据,以及从底层存储设备(例如物理磁盘)向该缓存设备提升IO数据。“RO”指示该缓存设备(例如磁盘)作为RAID 0使用,能够从底层存储设备(例如物理磁盘)向该缓存设备提升IO数据,但是不能从前端写数据。“锁定”指示该磁盘不能从前端写数据或者从物理磁盘向该缓存设备提升IO数据。前端只能获取该缓存设备上的现存数据。
图8中的磁盘序列号802记录缓存设备的序列号信息。其可以包含,例如,SSD对中的两个磁盘的序列号,例如S0T1N6ACA11853和S0T1N6ACA10221。这两个盘例如可以均为三星SATA闪盘,并且盘的容量为200GB。图8中的在线时间属性803记录该缓存设备用于RW类型或者RO类型的在线时间。负载状态属性804可以基于例如IOPS、带宽等来指示负载情况。磁盘空间使用属性805描述磁盘空间的使用情况。如本领域技术人员能够理解的,本公开的实施例不限于图8中所示的属性,例如,在另一实施例中,可以以不同的数据结构来维护更多或者更少或者不同的属性项目。
以下参考附图9来描述用于管理存储系统的装置900的结构。该存储系统例如可以是图1所示的存储系统100。该存储系统包括多个缓存设备(111-141和112-142)和底层存储设备(103),其中所述多个缓存设备可以包括第一缓存设备组101和第二缓存设备组102。其中该第一和第二缓存设备组例如可以分别为RO组和RW组。装置900可以执行参考图3a-3b所述的方法300和301,但是不限于执行该方法300和301。同样该方法300和301可以由装置900执行,但是不限于由装置900执行。例如方法300或者301的至少一些操作可以由其它的装置来执行。
如图9所示,装置900包括输入单元901,被配置为接收针对所述存储设备的I/O请求;缓存触发单元902,被配置为确定接收到所述I/O请求是否触发对目标数据的缓存;以及缓存单元903。如果该I/O请求被缓存触发单元902确定为触发对目标数据的缓存,则在该所述I/O请求为读请求的情况下,该缓存单元903被配置为将所述目标数据从所述存储设备103存储到所述第一缓存设备组101中;在所述I/O请求为写请求的情况下,该缓存单元903被配置为将所述目标数据存储到所述第二缓存设备组102中。
结合方法300和301所给出的关于第一缓存设备组101和第二缓存设备组102的描述在此同样适用,为简洁的目的而并不再重复。
在另一个实施例中,该装置900可以进一步包括:检查单元904以及写入单元905。该检查单元904被配置为响应于所述I/O请求为写请求,进一步确定所述目标数据的目标地址是否包括在所述存储系统的地址映射中。其中,所述地址映射指示所述存储设备的存储地址与所述多个缓存设备的缓存地址之间的映射。该写入单元905,被配置为基于该检查结果执行写入操作。例如可以按照图3b中的块351-355中的流程执行该写入操作。
在一个实施例中,装置900可以是图1中的存储系统管理器104或者其一部分。
在图10中示出了根据本公开的实施例的用于管理多个缓存设备的装置1000的结构示意图。该多个缓存设备可以包括图1中的服务读请求的第一缓存设备组101和服务写请求的第二缓存设备组102。在一个实施例中,该多个缓存设备可以构成快速缓存器或者其一部分。该第一缓存设备组和第二缓存设备组例如可以分别为RO组和RW组。
装置1000可以执行参考图4a-4b所述的方法400和401,但是不限于执行该方法。同样该方法400和401可以由装置1000执行,但是不限于由装置1000执行。例如方法400或者401的至少一些操作可以由其它的装置来执行。在一个实施例中,装置1000可以是图1中的存储系统管理器104或者其一部分。
如图10所示,该装置1000可以包括:第一检测单元1001,被配置为检测用于扩展所述多个缓存设备的第一请求;以及状态获取单元1002,被配置为响应于检测到所述第一请求,获取所述多个缓存设备的状态信息,所述状态信息指示负载状态和存储空间使用情况中的至少一项;以及,扩展单元1003,被配置为基于所获取的所述状态信息,将所述多个缓存设备之外的新缓存设备添加到所述第一缓存设备组或者所述第二缓存设备组。在一个实施例中,该装置可以执行参考图4a-4b所述的方法400和401,因此,参考方法400和401所述的扩展和获取操作同样适用于状态获取单元1002和扩展单元1003,并不再赘述。
可选地,在另一实施例中,装置1000还可以包括选择单元1004以及迭代控制单元1005。选择单元1004可以被配置为从候选缓存设备的列表中选择缓存设备用于扩展。迭代控制单元1005可以被配置为促使针对候选缓存设备的列表中的每个缓存设备迭代地执行获取和扩展操作。例如该迭代控制单元1005可以被配置为通过从所述候选缓存设备的列表中删除所选择的设备来更新所述候选缓存设备的列表,以及检查候选缓存设备的列表是否为空,如果该列表不为空,则促使选择单元1004、状态获取单元1002和扩展单元1003执行操作。
在图11中示出了根据本公开的实施例的用于管理多个缓存设备的另一装置1100的结构示意图。该多个缓存设备包括丽日图1中的服务读请求的第一缓存设备组101和服务写请求的第二缓存设备组102。
装置1100可以执行参考图5a-5b所述的方法500和501,但是不限于执行该方法。同样该方法500和501可以由装置1100执行,但是不限于由装置1100执行。例如方法500或者501的至少一些操作可以由其它的装置来执行。在一个实施例中,装置1100可以是图1中的存储系统管理器104或者其一部分。
如图11所示,该装置1100可以包括:第二检测单元1101,被配置为检测用于缩减所述缓存设备的第二请求;以及缩减单元1102,被配置为:响应于检测到所述第二请求,将所述第一缓存设备组中的第一缓存设备从所述多个缓存设备移除,或者,通过以下通过以下子单元11021-11023将第二缓存设备组中的至少一个缓存设备从该多个缓存设备移除。其中,子单元11021为锁定单元,其被配置为禁止对所述至少一个缓存设备的写操作;子单元11022为清理单元,被配置为将该至少一个缓存设备中的脏页面复制到所述存储系统中的存储设备,并且子单元11023为移除单元,被配置为将该至少一个缓存设备移除。在一个实施例中,该装置可以执行参考图5a-5b所述的方法500或者501,因此,参考方法500和501所述的缩减操作同样适用于缩减单元1102,并不再赘述。
在另一实施例中,装置1100还可以包括选择单元1103,被配置为从候选缓存设备的列表中逐个选择缓存设备,以便从所述多个缓存设备移除;以及迭代控制单元1104,被配置为促使针对候选缓存设备的列表中的每个缓存设备迭代地执行获取和移除操作。例如该迭代控制单元1104可以被配置为通过从所述候选缓存设备的列表中删除所选择的设备来更新候选缓存设备的列表,以及检查候选缓存设备的列表是否为空,如果该列表不为空,则促使选择单元1103和缩减单元1102执行操作。
在图12中示出了根据本公开的实施例的用于管理多个缓存设备的另一装置1200的结构示意图。所述多个缓存设备包括例如图1中的服务读请求的第一缓存设备组101和服务写请求的第二缓存设备组102。
装置1200可以执行参考图6a-6b所述的方法600和601,但是不限于执行该方法。同样该方法600和601可以由装置1200执行,但是不限于由装置1200执行。例如方法600或者601的至少一些操作可以由其它的装置来执行。在一个实施例中,装置1200可以是图1中的存储系统管理器104或者其一部分。
如图12所示,该装置1200可以包括:第三检测单元1201被配置为检测用于平衡所述第一缓存设备组和所述第二缓存设备组的第三请求;以及状态获取单元1202,被配置为响应于检测到所述第三请求,获取所述多个缓存设备的状态信息,所述状态信息指示所述多个缓存设备的负载状态、在线时间和存储空间使用情况中的至少一项;以及平衡单元1203被配置为基于所获取的所述多个缓存设备的状态信息,在所述第一缓存设备组和所述第二缓存设备组之间进行缓存设备的迁移。
如前结合方法600所述,第三请求(即平衡触发)可以是以下中的至少一个:周期性的调度触发、用户输入的触发、以及基于阈值的触发。参考方法600和601给出的关于第三请求的描述在此同样适用,并为了简洁而不再赘述。另外,以上参考方法600的块630和方法601的块631-639提供的各种操作的描述在此同样适用于平衡单元1203。
可选地,在一个实施例中,装置1200还可以包括选择单元1204,被配置为基于所确定的迁移方向,和所获取的所述多个缓存设备的负载状态、在线时间和存储空间使用状态中的至少一项,从所述第一缓存设备组或者所述第二缓存设备组中选择待迁移的缓存设备。
另一实施例中,平衡单元1203可以被配置为通过子单元1213、1223、和1233来执行对第二缓存设备组中的缓存设备的迁移。其中锁定单元1213被配置为锁定所述缓存设备;清理单元1223,被配置为将所述缓存设备的数据清理到底层驱动器;并且迁移单元1233被配置为执行对该缓存设备的迁移。在又一实施例中,在确定从第一缓存设备组向第二缓存设备组迁移缓存设备时,该平衡单元1203可以直接通过迁移单元1233执行对该缓存设备的迁移操作,而无需锁定单元1213和清理单元1223执行动作。该实施例使得能够对不同组的缓存设备进行不同的处理,减少不必要的时延。
在又一个实施例中,可以由单个装置1300来实施装置1000、1100和1200中的一个或者多个装置的功能。在图13中示出了装置1300的结构示意图。如图13所示装置1300可以包括磁盘管理器1311、缓存控制器1312、负载监测器1313、磁盘操作器1314、状态记录器1315、以及状态读取器1316。
磁盘管理器1311被配置为管理多个缓存设备(例如磁盘),并且存储该多个缓存设备中的每一缓存设备组的缓存设备(例如,RW组的磁盘和RO组的磁盘)的分布记录。在用户对多个缓存设备进行扩展或者缩减操作时,磁盘管理器1311被配置为对磁盘进行相关操作。例如,在一个实施例中,该磁盘管理器1311可以被配置为执行图10-12中的扩展单元1003、缩减单元1102和平衡单元1203中的一个或者多个单元的至少部分操作。
缓存控制器1312被配置为多个缓存设备(例如磁盘)的分布。其可以例如根据负载状态和阈值状态进行分布操作。该控制器还可以通过启动负载监测器模块来监测运行中的负载状态,并且可以根据实际负载状态执行分布操作。
负载监测器1313被配置为监测运行状态和阈值。当平衡触发发生时(即,检测到第三请求),在多个缓存设备上引起分布操作,并且调整例如RW组的缓存设备和RO组的缓存设备的比率。在一个实施例中,该缓存控制器1312和负载监测器1213可以是图10和12中的状态获取单元1002和1202中的至少一个的一部分。
磁盘操作器1314被配置为执行分布操作。其可以改变磁盘状态并且例如将RW组的磁盘移入RO组中,将RO组的磁盘从RO组中移除,或者将RO组的磁盘迁移到RW组。在一个实施例中,该操作可以通过调用磁盘管理器1311来执行。
状态记录器1315被配置为记录盘的运行状态,包括负载状态、磁盘使用情况等。状态读取器1316被配置为向其他模块提供读应用程序接口(API)。其还可以根据当前的负载状态、磁盘使用情况等返回可能的操作,例如指示是否需要在RW组和RO组之间移动磁盘或者是否需要清理数据。在一个实施例中,该状态读取器1316也可以是状态获取单元1002或者1202内的一部分,或者第一检测单元1001、第二检测单元1101或者第三检测单元1201中的一部分。
在一个实施例中,装置1300可以是图1中的存储系统管理器104或者其一部分。
如本领域技术人员能够理解的,图10-13所示仅是示例结构,本公开的实施例也可以以不同于图10-13所示的其它结构来实施用于管理存储系统的装置以及用于管理多个缓存设备的装置。例如,装置1000-1300还可以包括图10-13中未示出的其它单元;并且在一些实施例中,图10-13中的某些单元可以被省略。并且,在一些实施例中,由图10-13中的一个单元进行的操作也可以分布到多个单元中执行;类似的,在另一些实施例中,在图10-13中由多个单元进行的操作也可以由单个部件来实现。
在附图10-13中示出的装置的各种元件的功能,可以通过使用软件、专用硬件以及与适当软件相关联的能够执行软件的硬件、或者固件、或者其结合来提供。当由处理器提供时,该功能可以由单个专用处理器、由单个共享处理器或由多个单独的处理器来提供。此外,术语“处理器”可以包括但不限于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储装置。还可以包括其他常规和/或定制的硬件。
图14示出了一个可以用来实施本公开的实施例的设备1400的示意性框图。如图所示,设备1400包括处理单元(例如但不限于CPU)1401,其可以根据存储在只读存储器(ROM)1402中的计算机程序指令、或者来自存储单元1408的计算机程序指令(例如,从存储单元1408加载到随机访问存储器(RAM)1403中的计算机程序指令),来执行各种适当的动作和处理。在RAM 1403中,还可存储设备1400操作所需的各种程序和数据。处理单元1401、ROM1402以及RAM 1403通过总线1404彼此相连。输入/输出(I/O)接口1405也连接至总线1404。
设备1400中的多个部件连接至I/O接口1405,包括:输入单元1406,例如键盘、鼠标等;输出单元1407,例如各种类型的显示器、扬声器等;存储单元1408,例如磁盘、光盘等;以及通信单元1409,例如网卡、调制解调器、无线通信收发机等。通信单元1409允许设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如图3a-图6b中的任一方法,可由处理单元1301执行。例如,在一些实施例中,图3a-图6b中的任一方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1408。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1402和/或通信单元1409而被载入和/或安装到设备1400上。当计算机程序被加载到RAM 1403并由处理单元1401执行时,可以执行上文参考图3a-6b描述的方法中的任一方法的一个或多个步骤。
本领域技术人员将容易地认识到,上述各种方法中的块或者步骤可以通过编程的计算机来执行。在本公开中,一些实施例还意在涵盖程序存储系统,例如,数字数据存储介质,这是机器或计算机可读的并且编码机器可执行或计算机可执行的指令程序,其中,所述指令执行上述方法的一些或所有步骤。程序存储系统可以是,例如,数字存储器、诸如磁盘和磁带的磁存储介质、硬盘驱动器或光学可读数字数据存储介质。该实施例还意在涵盖编程为执行所述上述方法的步骤的计算机。
另外,本领域技术人员应当理解,说明书和附图仅仅说明本公开的实施例的原理。因此,应当理解,本领域的技术人员将能够设计出各种布置,虽然这里没有明确地描述或示出,但是该布置体现本公开的实施例的原理并且被包括在本公开的实施例的精神和范围内。此外,这里阐述的所有示例主要旨在明确仅用于教导目的,以帮助读者理解本公开的实施例的原理和发明人贡献的用于促进本领域的概念,并且应被解释为不限于这些具体阐释的示例和条件。而且,这里阐述本公开的实施例的原理、方面和实施例的所有阐述及其具体示例也意在包含其等同物。
Claims (16)
1.一种用于管理存储系统的方法,所述存储系统包括多个缓存设备和底层存储设备,所述多个缓存设备包括第一缓存设备组和第二缓存设备组,所述方法包括:
接收针对所述存储设备的输入/输出I/O请求;
响应于确定所述I/O请求触发对目标数据的缓存,基于与所述I/O请求相关联的I/O请求类型,将所述目标数据存储在所述第一缓存设备组和所述第二缓存设备组中的一个缓存设备组中,以通过以下过程来改善缓存效率:
如果所述I/O请求为读请求,将所述目标数据从所述存储设备存储到所述第一缓存设备组中;以及
如果所述I/O请求为写请求,将所述目标数据存储到所述第二缓存设备组中,
响应于减小缓存的或缓存的一部分的大小的请求,从所述第一缓存设备组移除第一存储设备,而不首先将所述第一存储设备中存储的数据清理到所述底层存储设备;
响应于减小缓存的或缓存的一部分的所述大小的另一请求,在将第二存储设备中存储的数据清理到所述底层存储设备后,从所述第二缓存设备组中移除第二存储设备。
2.根据权利要求1所述的方法,并且所述方法进一步包括:
响应于所述I/O请求为所述写请求,确定所述目标数据的目标地址是否包括在所述存储系统的地址映射中,所述地址映射指示所述存储设备的存储地址与所述多个缓存设备的缓存地址之间的映射;
如果确定所述目标地址未包括在所述地址映射中,将所述目标数据写入所述存储设备。
3.根据权利要求2所述的方法,还包括:
如果确定所述目标地址被包括在所述地址映射中,基于所述地址映射确定目标缓存设备,所述目标缓存设备包含在所述地址映射中与所述目标地址对应的缓存地址。
4.根据权利要求3所述的方法,还包括:
响应于确定所述目标缓存设备属于所述第一缓存设备组,
在所述地址映射中移除用于确定所述目标缓存设备的映射;以及
将所述目标数据写入所述第二缓存设备组中的缓存设备。
5.根据权利要求3所述的方法,还包括:
响应于确定所述目标缓存设备属于所述第二缓存设备组,将所述目标数据写入所述目标缓存设备。
6.根据权利要求2所述的方法,其中所述第一缓存设备组服务读请求,并且第二缓存设备组服务写请求,所述方法包括:
检测用于扩展所述多个缓存设备的第一请求;
响应于检测到所述第一请求,获取所述多个缓存设备的状态信息,所述状态信息指示负载状态和存储空间使用情况中的至少一项;以及
基于所获取的所述状态信息,将所述多个缓存设备之外的新缓存设备添加到所述第一缓存设备组或者所述第二缓存设备组。
7.根据权利要求6所述的方法,其中所述第一请求指示多个候选缓存设备的列表,并且添加所述新缓存设备包括:
从所述多个候选缓存设备的列表中逐个选择所述新缓存设备,以便添加到所述第一缓存设备组或者所述第二缓存设备组。
8.根据权利要求6所述的方法,其中所述状态信息指示所述多个缓存设备的所述负载状态,并且添加所述新缓存设备包括:
基于所述多个缓存设备的所述负载状态,获得所述第一缓存设备组的第一负载和所述第二缓存设备组的第二负载;
如果所述第一负载与所述第二负载的差或者比率超过预定阈值,将所述新缓存设备添加到所述第一缓存设备组;
如果所述第一负载与所述第二负载的差或者比率在预定阈值以下,将所述新缓存设备添加到所述第二缓存设备。
9.根据权利要求6所述的方法,其中所述状态信息指示所述多个缓存设备的所述存储空间使用情况,并且添加所述新缓存设备包括:
基于所述多个缓存设备的所述存储空间使用情况,确定所述第二缓存设备组的存储空间使用率;以及
如果所述第二缓存设备组的所述存储空间使用率超过第一阈值,将所述新缓存设备添加到所述第二缓存设备组;
如果所述第二缓存设备组的所述存储空间使用率在所述第一阈值以下,将所述新缓存设备添加到所述第一缓存设备组。
10.根据权利要求6所述的方法,其中所述状态信息指示所述多个缓存设备的所述存储空间使用情况,并且添加所述新缓存设备包括:
基于所述多个缓存设备的所述存储空间使用情况,确定所述第二缓存设备组的存储空间空闲率;以及
如果所述第二缓存设备组的所述存储空间空闲率低于第二阈值,将所述新缓存设备添加到所述第二缓存设备组;
如果所述第二缓存设备组的所述存储空间空闲率在所述第二阈值以上,将所述新缓存设备添加到所述第一缓存设备组。
11.根据权利要求6所述的方法,所述方法包括:
检测用于缩减所述缓存设备的第二请求;
响应于检测到所述第二请求,将所述第一缓存设备组中的第一缓存设备从所述多个缓存设备移除。
12.根据权利要求11所述的方法,其中所述第二请求中指示候选缓存设备的列表,并且所述方法进一步包括:
从所述候选缓存设备的列表中逐个选择缓存设备,以便从所述多个缓存设备移除。
13.根据权利要求6所述的方法,还包括:
检测用于缩减所述缓存设备的第二请求;
响应于检测到所述第二请求,通过以下操作将所述第二缓存设备组中的至少一个缓存设备从所述多个缓存设备移除:
禁止对所述至少一个缓存设备的写操作;
将所述至少一个缓存设备中的脏页面复制到所述存储系统中的存储设备;以及
将所述至少一个缓存设备移除。
14.根据权利要求13所述的方法,其中所述第一缓存设备组中的缓存设备包括第一固态磁盘SSD对,并且所述第一SSD对中的每个SSD独立地服务于所述读请求。
15.一种存储系统,包括:
存储设备;
多个缓存设备,所述多个缓存设备包括服务于读请求的第一缓存设备组和服务于写请求的第二缓存设备组;以及
存储系统管理器,被配置为执行如权利要求1到14中任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质存储有程序代码,所述程序代码在由装置执行时促使所述装置执行根据权利要求1-14中任一权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610417408.8A CN107506314B (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
CN202110553996.9A CN113515471A (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
US15/622,209 US10635323B2 (en) | 2016-06-14 | 2017-06-14 | Managing storage system |
US16/857,691 US11281377B2 (en) | 2016-06-14 | 2020-04-24 | Method and apparatus for managing storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610417408.8A CN107506314B (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110553996.9A Division CN113515471A (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107506314A CN107506314A (zh) | 2017-12-22 |
CN107506314B true CN107506314B (zh) | 2021-05-28 |
Family
ID=60679084
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110553996.9A Pending CN113515471A (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
CN201610417408.8A Active CN107506314B (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110553996.9A Pending CN113515471A (zh) | 2016-06-14 | 2016-06-14 | 用于管理存储系统的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10635323B2 (zh) |
CN (2) | CN113515471A (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515471A (zh) * | 2016-06-14 | 2021-10-19 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和装置 |
CN107870922B (zh) | 2016-09-23 | 2022-02-22 | 伊姆西Ip控股有限责任公司 | 一种用于数据去重的方法、设备和系统 |
US11561714B1 (en) * | 2017-07-05 | 2023-01-24 | Pure Storage, Inc. | Storage efficiency driven migration |
US10706328B2 (en) | 2018-05-07 | 2020-07-07 | Google Llc | Focus-weighted, machine learning disease classifier error prediction for microscope slide images |
US10684964B1 (en) * | 2018-08-01 | 2020-06-16 | Lightbits Labs Ltd. | System and method for reducing read latency in storage devices |
JP2020161029A (ja) * | 2019-03-28 | 2020-10-01 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US11204872B2 (en) * | 2019-10-25 | 2021-12-21 | EMC IP Holding Company LLC | Achieving guaranteed application performance using transactional I/O scheduling for SSD storage using known read/write latencies |
US11340900B2 (en) | 2020-05-01 | 2022-05-24 | EMC IP Holding Company LLC | Flushing dirty pages from page buffers indicated by non-sequential page descriptors |
CN111930299B (zh) * | 2020-06-22 | 2024-01-26 | 中国建设银行股份有限公司 | 分配存储单元的方法及相关设备 |
CN112631520B (zh) * | 2020-12-25 | 2023-09-22 | 北京百度网讯科技有限公司 | 分布式块存储系统、方法、装置、设备和介质 |
US11847324B2 (en) * | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
CN112685337B (zh) * | 2021-01-15 | 2022-05-31 | 浪潮云信息技术股份公司 | 一种存储集群中分级缓存读写数据的方法 |
US20220272136A1 (en) * | 2021-02-19 | 2022-08-25 | International Business Machines Corporatlion | Context based content positioning in content delivery networks |
CN115639949A (zh) * | 2021-07-20 | 2023-01-24 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
US11507327B1 (en) * | 2021-09-24 | 2022-11-22 | EMC IP Holding Company LLC | System and method of estimating performance headroom in a storage system |
CN113703689B (zh) * | 2021-10-26 | 2022-02-18 | 深圳金正方科技股份有限公司 | 智能电表的数据存储方法、装置、智能电表以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679004A (zh) * | 2002-07-04 | 2005-10-05 | 索尼株式会社 | 高速缓存设备、高速缓存数据管理方法和计算机程序 |
CN103150122A (zh) * | 2011-12-07 | 2013-06-12 | 华为技术有限公司 | 一种磁盘缓存空间管理方法和装置 |
CN103678169A (zh) * | 2013-11-11 | 2014-03-26 | 华中科技大学 | 一种高效利用固态盘缓存的方法和系统 |
CN103827837A (zh) * | 2012-08-22 | 2014-05-28 | 华为技术有限公司 | 访问固态硬盘空间的方法、装置及系统 |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US6185661B1 (en) * | 1998-01-02 | 2001-02-06 | Emc Corporation | Worm magnetic storage device |
US6442652B1 (en) * | 1999-09-07 | 2002-08-27 | Motorola, Inc. | Load based cache control for satellite based CPUs |
US6763446B1 (en) * | 2001-08-08 | 2004-07-13 | Emc Corporation | Systems and methods for handling storage access requests |
US7111117B2 (en) * | 2001-12-19 | 2006-09-19 | Broadcom Corporation | Expansion of RAID subsystems using spare space with immediate access to new space |
US6901477B2 (en) | 2002-04-01 | 2005-05-31 | Emc Corporation | Provision of a victim cache within a storage cache hierarchy |
US7664913B2 (en) * | 2003-03-21 | 2010-02-16 | Netapp, Inc. | Query-based spares management technique |
US7984316B2 (en) * | 2004-02-24 | 2011-07-19 | Paul Kaler | Solid state disk with hot-swappable components |
US7546431B2 (en) * | 2005-03-21 | 2009-06-09 | Emc Corporation | Distributed open writable snapshot copy facility using file migration policies |
US7895398B2 (en) * | 2005-07-19 | 2011-02-22 | Dell Products L.P. | System and method for dynamically adjusting the caching characteristics for each logical unit of a storage array |
US7849350B2 (en) | 2006-09-28 | 2010-12-07 | Emc Corporation | Responding to a storage processor failure with continued write caching |
US8860741B1 (en) * | 2006-12-08 | 2014-10-14 | Nvidia Corporation | Graphics processor with memory management unit and cache coherent link |
US20090210620A1 (en) * | 2008-02-19 | 2009-08-20 | Jibbe Mahmoud K | Method to handle demand based dynamic cache allocation between SSD and RAID cache |
JP4973560B2 (ja) * | 2008-03-26 | 2012-07-11 | 富士通株式会社 | サーバおよび接続先サーバ切替制御方法 |
US7873619B1 (en) * | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US8875147B2 (en) * | 2008-11-12 | 2014-10-28 | Siemens Aktiengesellschaft | Scalable system and method thereof |
US20100146209A1 (en) * | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8423737B2 (en) * | 2009-12-17 | 2013-04-16 | International Business Machines Corporation | Systems and methods for virtualizing storage systems and managing data independently |
KR101180288B1 (ko) * | 2010-05-11 | 2012-09-07 | 한국과학기술원 | 하이브리드 메모리와 ssd 로 구성된 시스템에서의 읽기 캐시 및 쓰기 캐시 관리 방법 |
US9213628B2 (en) * | 2010-07-14 | 2015-12-15 | Nimble Storage, Inc. | Methods and systems for reducing churn in flash-based cache |
WO2012067623A1 (en) * | 2010-11-19 | 2012-05-24 | Empire Technology Development Llc | Temperature control using compound capable of photoisomerization |
US8826273B1 (en) * | 2010-12-22 | 2014-09-02 | Vmware, Inc. | Synchronously logging to disk for main-memory database systems through record and replay |
EP2671160A2 (en) * | 2011-02-01 | 2013-12-11 | Drobo, Inc. | System, apparatus, and method supporting asymmetrical block-level redundant storage |
EP3451176B1 (en) * | 2011-09-30 | 2023-05-24 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
WO2013091192A1 (zh) * | 2011-12-21 | 2013-06-27 | 华为技术有限公司 | 提供多设备镜像和条带功能的磁盘缓存方法、设备和系统 |
WO2013103006A1 (ja) * | 2012-01-05 | 2013-07-11 | 株式会社日立製作所 | 計算機システムの管理装置及び管理方法 |
US20130238851A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Hybrid storage aggregate block tracking |
US9058281B2 (en) * | 2012-06-01 | 2015-06-16 | Seagate Technology Llc | Allocating memory usage based on quality metrics |
US9594685B2 (en) * | 2012-07-06 | 2017-03-14 | Seagate Technology Llc | Criteria for selection of data for a secondary cache |
TWI483121B (zh) * | 2012-08-14 | 2015-05-01 | Univ Nat Chiao Tung | 整合性儲存空間平台系統及方法 |
WO2014102565A1 (en) * | 2012-12-29 | 2014-07-03 | Emc Corporation | Polar codes for efficient encoding and decoding in redundant disk arrays |
US9164929B2 (en) * | 2013-01-03 | 2015-10-20 | International Business Machines Corporation | False power failure alert impact mitigation |
US20140201442A1 (en) * | 2013-01-15 | 2014-07-17 | Lsi Corporation | Cache based storage controller |
US9086991B2 (en) * | 2013-02-19 | 2015-07-21 | Infinidat Ltd. | Solid state drive cache recovery in a clustered storage system |
US9055119B2 (en) * | 2013-03-26 | 2015-06-09 | Vmware, Inc. | Method and system for VM-granular SSD/FLASH cache live migration |
JP6136460B2 (ja) * | 2013-03-28 | 2017-05-31 | 富士通株式会社 | 情報処理装置、情報処理装置の制御プログラムおよび情報処理装置の制御方法 |
US9686121B2 (en) * | 2013-09-23 | 2017-06-20 | Amazon Technologies, Inc. | Client-premise resource control via provider-defined interfaces |
US10558569B2 (en) * | 2013-10-31 | 2020-02-11 | Hewlett Packard Enterprise Development Lp | Cache controller for non-volatile memory |
CN103778071A (zh) * | 2014-01-20 | 2014-05-07 | 华为技术有限公司 | 缓存的空间分配方法及装置 |
CN103902474B (zh) * | 2014-04-11 | 2017-02-08 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
JP6368789B2 (ja) * | 2014-09-26 | 2018-08-01 | 株式会社日立製作所 | ストレージ装置及びその保守運用方式 |
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 |
CN104794070B (zh) * | 2015-04-23 | 2017-10-31 | 南京道熵信息技术有限公司 | 基于动态非覆盖raid技术的固态闪存写缓存系统及方法 |
US10019362B1 (en) * | 2015-05-06 | 2018-07-10 | American Megatrends, Inc. | Systems, devices and methods using solid state devices as a caching medium with adaptive striping and mirroring regions |
JP6515752B2 (ja) * | 2015-09-07 | 2019-05-22 | 富士通株式会社 | ストレージ制御装置、制御方法、および制御プログラム |
JP6565560B2 (ja) * | 2015-10-01 | 2019-08-28 | 富士通株式会社 | ストレージ制御装置、及び制御プログラム |
US9880764B1 (en) | 2016-03-30 | 2018-01-30 | EMC IP Holding Company LLC | Flash disk cache management for increased virtual LUN availability |
CN113515471A (zh) * | 2016-06-14 | 2021-10-19 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和装置 |
US10402096B2 (en) | 2018-01-31 | 2019-09-03 | EMC IP Holding Company LLC | Unaligned IO cache for inline compression optimization |
-
2016
- 2016-06-14 CN CN202110553996.9A patent/CN113515471A/zh active Pending
- 2016-06-14 CN CN201610417408.8A patent/CN107506314B/zh active Active
-
2017
- 2017-06-14 US US15/622,209 patent/US10635323B2/en active Active
-
2020
- 2020-04-24 US US16/857,691 patent/US11281377B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1679004A (zh) * | 2002-07-04 | 2005-10-05 | 索尼株式会社 | 高速缓存设备、高速缓存数据管理方法和计算机程序 |
CN103150122A (zh) * | 2011-12-07 | 2013-06-12 | 华为技术有限公司 | 一种磁盘缓存空间管理方法和装置 |
CN103827837A (zh) * | 2012-08-22 | 2014-05-28 | 华为技术有限公司 | 访问固态硬盘空间的方法、装置及系统 |
CN103678169A (zh) * | 2013-11-11 | 2014-03-26 | 华中科技大学 | 一种高效利用固态盘缓存的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11281377B2 (en) | 2022-03-22 |
CN113515471A (zh) | 2021-10-19 |
CN107506314A (zh) | 2017-12-22 |
US10635323B2 (en) | 2020-04-28 |
US20200249849A1 (en) | 2020-08-06 |
US20180032266A1 (en) | 2018-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506314B (zh) | 用于管理存储系统的方法和装置 | |
US10860494B2 (en) | Flushing pages from solid-state storage device | |
US8429346B1 (en) | Automated data relocation among storage tiers based on storage load | |
US6785771B2 (en) | Method, system, and program for destaging data in cache | |
CN106547476B (zh) | 用于数据存储系统的方法和装置 | |
US9594685B2 (en) | Criteria for selection of data for a secondary cache | |
JP5531091B2 (ja) | 計算機システム及びその負荷均等化制御方法 | |
US20180107601A1 (en) | Cache architecture and algorithms for hybrid object storage devices | |
US8402214B2 (en) | Dynamic page reallocation storage system management | |
US20140325145A1 (en) | Cache rebuilds based on tracking data for cache entries | |
JP6146087B2 (ja) | ストレージ制御プログラム,ストレージ制御方法,ストレージシステム及びその階層制御装置 | |
CN104317736A (zh) | 一种分布式文件系统多级缓存实现方法 | |
US10621202B2 (en) | Method, apparatus and data structure for copying values of a table of a database | |
US10176103B1 (en) | Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm | |
US9699254B2 (en) | Computer system, cache management method, and computer | |
US9529718B2 (en) | Batching modified blocks to the same dram page | |
KR101686346B1 (ko) | 하이브리드 ssd 기반 하둡 분산파일 시스템의 콜드 데이터 축출방법 | |
US11347645B2 (en) | Lifetime adaptive efficient pre-fetching on a storage system | |
US11093404B2 (en) | Efficient pre-fetching on a storage system | |
US20220334976A1 (en) | Method and Apparatus for Cache Slot Allocation Based on Data Origination Location or Final Data Destination Location | |
US8700861B1 (en) | Managing a dynamic list of entries for cache page cleaning | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
KR101691286B1 (ko) | 입출력 정보 공유 방법, 상기 방법을 수행하는 저장 장치 및 호스트 장치 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200413 Address after: Massachusetts, USA Applicant after: EMC IP Holding Company LLC Address before: Ma Sazhusaizhou Applicant before: EMC Corp. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |