CN106547476B - 用于数据存储***的方法和装置 - Google Patents

用于数据存储***的方法和装置 Download PDF

Info

Publication number
CN106547476B
CN106547476B CN201510608751.6A CN201510608751A CN106547476B CN 106547476 B CN106547476 B CN 106547476B CN 201510608751 A CN201510608751 A CN 201510608751A CN 106547476 B CN106547476 B CN 106547476B
Authority
CN
China
Prior art keywords
cache
type
request
data
read
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
Application number
CN201510608751.6A
Other languages
English (en)
Other versions
CN106547476A (zh
Inventor
徐鑫磊
李雄成
高健
杨利锋
贾瑞勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201510608751.6A priority Critical patent/CN106547476B/zh
Priority to US15/268,807 priority patent/US10860493B2/en
Publication of CN106547476A publication Critical patent/CN106547476A/zh
Application granted granted Critical
Publication of CN106547476B publication Critical patent/CN106547476B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供一种用于数据存储***的方法和装置。该方法包括:从上层接收IO请求,其中所述IO请求包括IO类型标识符;基于所述IO类型标识符确定所述IO请求的IO类型;以及基于所确定的IO类型处理所述IO请求。本公开还提供相应的装置。根据本公开的实施例的方法和装置,能够根据不同的IO类型来确定相应数据的存储策略,改善整体的***性能。

Description

用于数据存储***的方法和装置
技术领域
本公开的实施例涉及数据存储***,并且更具体地涉及快速缓存。
背景技术
在存储***中,物理存储分配具有其逻辑标识。例如,逻辑单元号(LUN)可以被用作物理存储分配的唯一标识符。LUN是存储区域的一种表示,其可以指向整个独立磁盘冗余阵列(RAID)集合,单个硬盘或者分区,或者多个磁盘或者多个分区。
固态磁盘(SSD)高速缓存是一种存储***部件,其通过在固态存储磁盘介质中透明地存储数据而改善性能。SSD具有比硬盘驱动器(HDD)更高的性能。在EMCTM的VNX序列产品中,SSD高速缓存又被称为快速缓存。
从SSD高速缓存的角度来看,仅能够看到LUN信息,例如逻辑单元号、起始地址、以及区域大小等,而不能够看到关于输入输出(IO)使用的信息。图1示意性地示出磁盘分配和映射的图。如图1所示,精简LUN1和精简LUN2被映射到物理LUN1。其中精简LUN又被称为虚拟LUN。在图1的示例中,在这两个虚拟LUN中各存储了一些用户数据和元数据,这些数据都被映射到物理LUN1。在图1的示例中,从虚拟LUN的引擎(或者称为驱动器)发送的IO将被SSD高速缓存处理,然后转发到HDD。
发明内容
下面给出了对各实施例的简要概述,以提供对各种实施例的一些方面的基本理解。该概述不旨在标识关键元素的要点或描述各种实施例的范围。其唯一目的在于以简化形式呈现一些概念,作为对后述更具体描述的前序。
本公开的第一方面提供一种在存储***中用于输入输出IO处理的方法,包括:从上层接收IO请求,其中所述IO请求包括IO类型标识符;基于所述IO类型标识符确定所述IO请求的IO类型;以及
基于所确定的IO类型处理所述IO请求。
在一个实施例中,基于所述IO类型标识符确定所述IO请求的IO类型可以包括:基于所述IO类型标识符从预定的IO类型集合中确定一种IO类型;其中所述预定的IO类型集合包括第一IO类型和第二IO类型;并且其中所述存储***中包括第一存储设备和第二存储设备,所述第一存储设备适于快速缓存第一IO类型的IO的数据,所述第二存储设备适于存储第二IO类型的IO的数据。
在另一实施例中,第一IO类型可以包括随机IO,所述第二IO类型可以包括连续IO。在又一实施例中,第一IO类型可以包括元数据IO,并且所述第二IO类型可以包括用户数据IO和/或背景数据IO。
在一个实施例中,第一存储设备可以包括快速缓存器,并且所述第二存储设备可以包括硬盘驱动器HDD。
在另一实施例中,基于所确定的IO类型处理所述IO请求可以包括:将所述IO请求转发到后端,以读/写数据,以及在所述IO请求从后端返回时,向所述上层发送响应,并且基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器。
在又一实施例中,基于所确定的IO类型确定是否将响应于所述IO请求的读/写数据提升到快速缓存器可以包括:如果所确定的IO类型为随机IO或者元数据IO,则将响应于所述IO请求的读/写数据提升到所述快速缓存器。
在另一实施例中,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器可以包括:如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,则进一步基于所述IO请求的新近性和/或频率来决定是否将响应于所述IO请求的读/写数据提升到所述快速缓存器。
在一个实施例中,该方法可以进一步包括:在将所述IO请求转发到所述后端之前,检查所述IO请求要读/写的数据是否已经被缓存在所述快速缓存器中,以及,如果所述IO请求要读/写的数据已经被缓存在所述快速缓存器中,则将所述IO请求转发到所述快速缓存器以读/写数据,并向所述上层发送响应,并且仅在所述IO请求要读/写的数据尚未被缓存在所述快速缓存器中时,将所述IO请求转发到后端。
在另一实施例中,所述上层可以是动态随机存取存储器DRAM驱动器或者虚拟逻辑单元号LUN驱动器。
在又一实施例中,基于所确定的IO类型处理所述IO请求可以包括:从缓存提升策略集合中获取针对所确定的IO类型的缓存提升策略;以及基于所获取的缓存提升策略确定是否将所述IO请求要读/写的数据提升到快速缓存器。在另一实施例中,缓存提升策略集合可以包括以下中的至少一项:对于元数据IO,在元数据第一次被访问时就将所述元数据提升到所述快速缓存器;对于用户数据IO,在用户数据被访问的次数超过第一提升阈值时将所述用户数据提升到所述快速缓存器;对于背景数据IO,在背景数据被访问的次数超过第二提升阈值时将所述背景数据提升到所述快速缓存器;对于读/写的数据量超过预定数据量阈值的IO,不将读/写的数据提升到所述快速缓存器。
在一个实施例中,该方法可以进一步包括:通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合。
在另一实施例中,基于所确定的IO类型处理所述IO请求可以包括:在响应于所述IO请求的读/写数据已经被缓存在快速缓存器中时,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
在一个实施例中,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除可以包括:从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略;以及基于所确定的缓存清除策略决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
在另一实施例中,该方法可以进一步包括:配置所述缓存清除策略集合,使得:元数据以第一概率被保留在所述快速缓存器中不被清除;用户数据以低于所述第一概率的第二概率被保留在所述快速缓存器中不被清除;背景数据以不高于所述第二概率的第三概率被保留在所述快速缓存器中不被清除。
在又一实施例中,该方法可以进一步包括:通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存清除策略集合。
在另一实施例中,该方法可以进一步包括:通过最近最少使用LRU列表来管理所述快速缓存器中缓存的数据页,所述LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页,并且
基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除可以包括:如果所确定的IO类型为元数据IO,则当对应的元数据页到达所述LRU列表的最后一项的次数超过第一清除阈值,则将所述元数据页从所述快速缓存器中清除;如果所确定的IO类型为用户数据IO或者背景数据IO,则当对应的用户数据页或者背景数据页到达所述LRU列表的最后一项的次数超过第二清除阈值,则将所述用户数据页或者背景数据页从所述快速缓存器中清除;其中所述第二清除阈值小于所述第一清除阈值。
本公开的第二方面提供一种在存储***中用于输入输出IO处理的装置,包括:接收单元,被配置为从上层接收IO请求,其中所述IO请求包括IO类型标识符;类型确定单元,被配置为基于所述IO类型标识符确定所述IO请求的IO类型;以及处理单元,被配置为基于所确定的IO类型处理所述IO请求。
在一个实施例中,类型确定单元可以被配置为:基于IO类型标识符从预定的IO类型集合中确定一种IO类型;其中所述预定的IO类型集合包括第一IO类型和第二IO类型;并且其中所述存储***中包括第一存储设备和第二存储设备,所述第一存储设备适于快速缓存第一IO类型的IO的数据,所述第二存储设备适于存储第二IO类型的IO的数据。
在另一实施例中,第一IO类型可以包括随机IO,所述第二IO类型可以包括连续IO。在又一实施例中,第一IO类型可以包括元数据IO,并且所述第二IO类型可以包括用户数据IO和/或背景数据IO。
在又一实施例中,第一存储设备可以包括快速缓存器,并且所述第二存储设备可以包括硬盘驱动器HDD。
在一个实施例中,处理单元可以进一步包括:转发单元,被配置为将所述IO请求转发到后端,以读/写数据;以及提升单元,被配置为在所述IO请求从后端返回时,向所述上层发送响应,并且基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器。
在另一实施例中,提升单元可以被配置为:如果所确定的IO类型为随机IO或者元数据IO,则将响应于所述IO请求的所述读/写数据提升到所述快速缓存器。
在又一实施例中,提升单元可以被配置为:如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,则进一步基于所述IO请求的新近性和/或频率来确定是否将响应于所述IO请求的所述读/写数据提升到所述快速缓存器。
在一个实施例中,该装置可以进一步包括:检查单元,被配置为在将所述IO请求转发到所述后端之前,检查所述IO请求要读/写的数据是否已经被缓存在所述快速缓存器中,并且,所述转发单元可以被配置为:如果所述IO请求要读/写的数据已经被缓存在所述快速缓存器中,则将所述IO请求转发到所述快速缓存器以读/写数据,并向所述上层发送响应,并且仅在所述IO请求要读/写的数据尚未被缓存在所述快速缓存器中时,将所述IO请求转发到所述后端。
在另一实施例中,上层可以是动态随机存取存储器DRAM驱动器或者虚拟逻辑单元号LUN驱动器。
在一个实施例中,装置中的处理单元可以进一步包括:提升策略确定单元,被配置为从缓存提升策略集合中获取针对所确定的IO类型的缓存提升策略;以及提升单元,被配置为基于所获取的缓存提升策略确定是否将所述IO请求要读/写的数据提升到快速缓存器。
在一个实施例中,缓存提升策略集合可以包括以下中的至少一项:对于元数据IO,在元数据第一次被访问时就将所述元数据提升到所述快速缓存器;对于用户数据IO,在用户数据被访问的次数超过第一提升阈值时将所述用户数据提升到所述快速缓存器;对于背景数据IO,在背景数据被访问的次数超过第二提升阈值时将所述背景数据提升到所述快速缓存器;对于读/写的数据量超过预定数据量阈值的IO,不将读/写的数据提升到所述快速缓存器。
在又一实施例中,该装置可以进一步包括:提升策略配置单元,被配置为通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合。
在一个实施例中,装置中的处理单元可以被配置为:在响应于所述IO请求的读/写数据已经被缓存在快速缓存器中时,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
在另一实施例中,处理单元可以进一步包括:清除策略确定单元,被配置为从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略;以及清除单元,被配置为基于所确定的缓存清除策略决定是否将响应于所述IO请求的所述读/写数据从所述快速缓存器中清除。
在一个实施例中,该装置可以进一步包括:清除策略配置单元,被配置为配置所述缓存清除策略集合,使得:元数据以第一概率被保留在所述快速缓存器中不被清除;用户数据以低于所述第一概率的第二概率被保留在所述快速缓存器中不被清除;背景数据以不高于所述第二概率的第三概率被保留在所述快速缓存器中不被清除。
在另一实施例中,该装置可以进一步包括:清除策略配置单元,被配置为通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存清除策略集合。
在一个实施例中,该装置可以进一步包括:缓存数据管理单元,被配置为通过最近最少使用LRU列表来管理所述快速缓存器中缓存的数据页,所述LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页,并且所述清除单元可以被配置为:如果所确定的IO类型为元数据IO,则当对应的元数据页到达所述LRU列表的最后一项的次数超过第一清除阈值,则将所述元数据页从所述快速缓存器中清除;如果所确定的IO类型为用户数据IO或者背景数据IO,则当对应的用户数据页或者背景数据页到达所述LRU列表的最后一项的次数超过第二清除阈值,则将所述用户数据页或者背景数据页从所述快速缓存器中清除,其中所述第二清除阈值小于所述第一清除阈值。
本公开的第三方面提供一种存储***中的快速缓存器,包括根据本公开的第二方面所述的任一装置。。
根据本公开的实施例的方法或装置,能够根据不同的IO类型来确定相应数据的存储策略,改善整体的***性能。根据一些实施例,能够避免较小的随机IO被发送到HDD。根据另一些实施例,能够将元数据在高速缓存中保持比用户数据更长的时间。
尽管在附图中通过示例的方式示出了特定的实施例,然而,应当理解,本文的具体实施例的描述不意在将实施例限制为所公开的具体形式。
附图说明
从下文的公开内容和权利要求中,本公开的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出优选实施例的非限制性描述,在附图中:
图1示意性地示出磁盘分配和映射图;
图2a-2b示出根据本公开的实施例的、在存储***中用于IO处理的示例方法的流程图;
图3示出在SSD高速缓存中根据本公开的一个实施例的方法执行IO处理的示意性流程图;
图4示出了根据本公开的实施例的、在存储***中用于IO处理的另一示例方法的流程图;以及
图5示出了根据本公开的实施例的、用于配置缓存提升策略的多种方式的示意图;
图6示出了根据本公开的实施例的、在存储***中用于IO处理的又一示例方法的流程图;
图7a-7b示出了根据本公开的实施例的、用于缓存数据管理和清除的方法的示意图;以及
图8示出根据本公开的实施例的、用于基于IO类型进行IO处理的装置的结构图。
具体实施方式
在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本公开的实施例。因此,本公开不旨在于受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。
应当理解,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。另外还应当理解“包括”,“包含”仅被用来说明所陈述的特征、元素、功能或者部件的存在,然而并不排除存在一个或者多个其他的特征、元素、功能或者部件。
为了便于解释,本文中将以SSD作为快速缓存的示例介绍本公开的实施例,然而,如本领域技术人员可以理解的,本公开的实施例绝不限于仅使用SSD作为快速缓存。
在图1中示意性地示出了磁盘分配和映射的图。如图1所示,虚拟LUN1和虚拟LUN2中的用户数据和元数据均都被映射到物理LUN1。这里物理LUN1表示HDD中的一个存储区域。在图1中,从SSD驱动器转发到HDD的可能是关于元数据的IO请求,也可能是关于用户数据的IO请求。这两种IO具有不同的特性。对于元数据IO来说,其通常是小而随机的;而对于用户数据IO,其通常是连续的、并且具有比元数据IO更大的数据量。将小而随机的IO(比如元数据IO)转发到HDD,将严重地影响HDD的性能。因为HDD更适于处理顺序的大块数据的读写,而处理小而随机的IO时性能较差。例如,对于顺序的数据读写,HDD可以提供100M每秒的吞吐量,而对于小而随机的IO,可能仅提供几M的吞吐量。而与此不同的是,SDD却能够很好地处理小而随机的IO。
在当前IO处理的实施中,如图1所示,SSD高速缓存并不知道来自上层的IO的类型,因此SSD针对所有IO应用同样的处理规则。该处理规则没有针对元数据IO、用户数据IO、背景数据IO(例如,动态随机存取存储器(DRAM)高速缓存背景IO)做任何优化。这使得较多的小而随机的IO被发送到HDD,并且降低了***的整体性能。
本公开的发明人提出,如果使得快速缓存器(例如,SSD)了解IO类型,并且基于IO类型确定相应数据的缓存和存储策略,则存储***的整体性能将得以改善。例如,可以使更多的小而随机的IO的数据页被高速缓存在SSD中,并使较少的未命中的随机IO被发送到HDD。也就是说,如果利用快速缓存来缓存更多小而随机的接入页面,则对于整体***性能将是有利的。因此,在本公开中,提出了利用IO类型的IO处理方法和装置。
现在参考图2a,其示出根据本公开的实施例的、在存储***中用于IO处理的方法200。该方法可以在图1中所示的SSD高速缓存器中执行,但是本公开的实施例不限于此。例如,该方法也可以由SSD之外的另一装置执行。
如图2a所示,该方法200包括在块S210处从上层接收IO请求,其中该IO请求包括IO类型标识符;在块S220处,基于IO类型标识符确定该IO请求的IO类型;以及在块S230处,基于所确定的IO类型处理该IO请求。该方法200使得能够根据IO类型来选取有效的IO处理策略,从而改善***的性能。
在一个实施例中,在块S210处,从动态随机存取存储器DRAM驱动器或者图1中所示的精简LUN(虚拟LUN)驱动器接收该IO请求。如本领域技术人员能够理解的,在其他的实施例中,根据数据路径的不同结构,方法200也可以从其它的上层接收IO请求。
如前参考图1所述的,IO的类型可以包括,但不限于,元数据IO、用户数据IO、背景数据IO等。元数据IO通常小而随机,而用户数据IO通常是大并且连续的IO。此外,某些IO可能涉及大块的连续IO,例如视频流,这样的IO不需要SSD高速缓存来缓存数据页,因为HDD能够以较好的性能处理这类IO。因此,根据IO的特性,IO又可以被分成,例如但不限于,随机IO,连续IO等;或者小数据量IO、中等数据量IO、大数据量IO等。
在本公开的一个实施例中,这些IO类型可以被包括在一个预定的IO类型集合中,并且,在块S220,可以基于IO类型标识符从该预定的IO类型集合中确定一种IO类型。
根据本公开的一个实施例,IO类型标识符可以是IO请求结构体中的一个字段,例如,在块S210处从上层接收到的IO请求可以包括如下所示的IO结构,其中添加了IO类型标识符_io_type_types:
typedef enum
{
IO_TYPE_METADATA=0,
IO_TYPE_CACHE_FLUSH_DATA,
IO_TYPE_USERDATA,
}_io_type_;
struct IOs{
…;
_io_type_types;
};
在该示例中,预定的IO类型集合中包括元数据(IO_TYPE_METADATA)、缓存器清除数据(IO_TYPE_CACHE_FLUSH_DATA)、用户数据(IO_TYPE_USERDATA)、以及其它未示出的类型(…)。其中缓存器清除数据可以看作是背景数据IO的示例。根据接收到的IO请求中IO类型标识符(该例中为_io_type_types)的具体取值,在块S220能够确定IO类型。
在本公开的一个实施例中,该预定的IO类型集合可以包括至少第一IO类型和第二IO类型;并且在存储***中可以包括第一存储设备和第二存储设备;其中第一存储设备适于快速缓存第一IO类型的IO的数据,并且第二存储设备适于存储第二IO类型的IO的数据。例如,第一IO类型可以包括随机IO,第二IO类型可以包括连续IO。或者,第一IO类型可以包括元数据IO,而第二IO类型可以包括用户数据IO和/或背景数据IO。在另一示例中,该第一存储设备可以包括快速缓存器,并且所述第二存储设备可以包括硬盘驱动器HDD。作为示例,该快速缓存器可以是SSD高速缓存,但是本公开的实施例不限于此。
图2b中示出根据本公开的一个实施例的、块S230中的操作的流程图。如图2b所示,在该实施例中,块S230处的处理可以包括将IO请求转发到后端以读/写数据(S231),以及在该IO请求从后端返回时,向上层发送响应,并且基于在块S220处所确定的IO类型决定是否将响应于该IO请求的读/写数据提升到快速缓存器(S232)。该实施例使得能够针对IO类型,选择性地将相应数据提升到高速缓存器,避免通过HDD来处理所有的IO、尤其是会降低HDD性能的IO。
作为示例,如果在块S220处所确定的IO类型为随机IO或者元数据IO,则在块S230(或者S232)处可以将响应于IO请求的读/写数据提升到快速缓存器(即,写入快速缓存器)。作为另一示例,如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,则可以不将响应于该IO请求的读/写数据提升到快速缓存器。在另一实施例中,如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,也可以进一步地,例如在块S232处,基于IO请求的新近性(recency)和/或频率来决定是否将响应于该IO请求的读/写数据提升到快速缓存器。在一个示例中,后端可以是HDD。
如图2b所示,在一个实施例中,方法200还可以包括,在块S231之前,即在将IO请求转发到后端之前,在块S233处检查IO请求要读/写的数据是否已经被缓存在所述快速缓存器中,以及,如果所述IO请求要读/写的数据已经被缓存在所述快速缓存器中,则在块S231将所述IO请求转发到所述快速缓存器以读/写数据,并向所述上层发送响应;并且仅在所述IO请求要读/写的数据尚未被缓存在快速缓存器中时,在块S231处将该IO请求转发到后端。
在图3中示出了在SSD高速缓存中根据方法200的另一个实施例执行IO处理的示意性流程图。该流程图中的操作可以看作是图2a中的块S230的一种实施方式。在图3的示例中,SSD从高层驱动器接收IO后,在步骤310中搜索该SSD高速缓存,以检查(320)是否相应数据已经被缓存在该SSD磁盘中(即,是否命中);如果缓存器命中,即,SSD中已经缓存了相应数据,则在步骤330将IO请求转发到SSD磁盘以读/写该SSD磁盘;如果缓存器未命中,则在步骤340将IO请求转发到后端,并且在步骤350,从提升策略引擎模块获取针对该IO请求的IO类型(例如在图2的块S220确定的IO类型)的提升策略;在步骤360基于该IO类型确定是否需要将该IO请求对应的读/写数据提升到SSD;在一个实施例中,在步骤360中可以通过块S232中的操作来确定相应数据是否需要提升。如果确定要提升(例如,如果IO类型为元数据服务),则可以在步骤370向SSD高速缓存提升服务更新该IO的信息(例如,提供对应数据需要被提升的信息);从而在该IO请求被从后端返回时,该SSD高速缓存提升服务可以根据该IO的信息在步骤380将该IO对应的读/写数据写入SSD磁盘,也就是说将该IO请求对应的数据页提升到SSD磁盘。
如参考图3所述的,可以从提升策略引擎模块获取针对特定IO类型的提升策略。在一个实施例中,如图4所示,在方法200的块S230处的操作可以包括从缓存提升策略集合中获取(S410)针对所确定的IO类型的缓存提升策略;以及基于所获取的缓存提升策略确定(S420)是否将所述IO请求要读/写的数据提升到快速缓存器。缓存提升策略集合中可以包括针对不同IO类型的缓存提升策略。作为示例,缓存提升策略集合可以包括以下中的至少一项:
策略1:对于元数据IO,在元数据第一次被访问时就将所述元数据提升到所述快速缓存器;
策略2:对于用户数据IO,在用户数据被访问的次数超过第一提升阈值时将所述用户数据提升到所述快速缓存器;
策略3:对于背景数据IO,在背景数据被访问的次数超过第二提升阈值时将所述背景数据提升到所述快速缓存器;
策略4:对于读/写的数据量超过预定数据量阈值的IO,不将读/写的数据提升到所述快速缓存器。
根据本实施例的教导,本领域技术人员还能够得出其它的缓存提升策略,例如,对于元数据,也可以设定访问次数阈值,来判断是否需要提升,该次数阈值可以小于针对用户数据和背景数据的阈值。因此,在此不必穷举所有可能的缓存提升策略。
作为示例,如果IO类型被类型标识符指示为DRAM缓存清除数据,其为一种背景数据;并且针对背景数据IO的提升策略如以上策略2所述,并且假定第二提升阈值为两次。在这种情况下,SSD高速缓存可以检查该IO在给定时间段内是否访问两次,如果该条件被满足,则SSD高速缓存可以向其提升服务更新该IO的信息,例如该IO的数据能够被提升的信息;此后SSD高速缓存提升服务可以将对应数据写入SSD(例如在该数据从HDD读出后)。如果该条件未被满足,则可以更新该IO的历史信息,继续等待条件满足(即,在给定时间段访问两次)。
对于未携带IO类型标识符的IO、或者对于根据IO类型不能够被提升的IO,提升策略引擎可以,例如在缓存提升策略集合中,根据IO的新近性和/或频率定义通用的提升策略。例如,对于这种IO,当从后端(例如HDD的物理LUN)接收到响应时,提升服务可以根据通用提升策略检查该IO的数据是否需要被提升到SSD。在不需要被提升时,SSD高速缓存可以将上层发送响应;在需要提升时,可以将对应数据写入SSD,并在这之前或者之后向上层发送响应。
缓存提升策略集合可以是预定的,也可以是被配置的。在图5中给出了配置缓存提升策略集合的多种示例。如图5所示,该配置可以通过配置文件来实现。具体而言,在SSD高速缓存启动时,可以从配置文件中加载提升策略、并且在解析后应用于提升策略引擎。该提升策略引擎可以提供/生成/更新缓存提升策略集合。在图5的另一示例中,该配置也可以通过命令行工具来实现。例如,用户可以借助命令行工具输入命令行,命令行工具将解析该输入并将策略应用于提升策略引擎。在图5的又一示例中,该配置也可以通过驱动器接口来实现。例如,DRAM高速缓存想要使其清除数据缓存到SSD高速缓存中,其可以配置SSD提升策略引擎,使得与DRAM高速缓存清除数据关联的提升策略为:在第一次访问时被提升到SSD高速缓存。则SSD高速缓存在接收到这种IO类型的IO请求时,将立即将其提升。因此,在一个实施例中,方法200可以进一步包括通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合(S430),如图4所示。
在另一个实施例中,在方法200的块S230中可以包括以下操作:在响应于IO请求的读/写数据已经被缓存在快速缓存器中时,基于所确定的IO类型决定是否将响应于IO请求的读/写数据从该快速缓存器中清除。根据该实施例,能够根据IO类型来管理快速缓存器(例如SSD高速缓存)中的缓存数据,以使得更加有效地利用该快速缓存器。
在图6中示出了根据一个实施例、在块S230处执行的、基于所确定的IO类型决定是否将响应于IO请求的读/写数据从快速缓存器中清除的操作的流程图。如图6所示,这包括从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略(S610);以及基于所确定的缓存清除策略决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除(S620)。
在一个实施例中,方法200可以进一步包括配置(S630)所述缓存清除策略集合,使得:元数据以第一概率被保留在所述快速缓存器中不被清除;用户数据以低于所述第一概率的第二概率被保留在所述快速缓存器中不被清除;而背景数据以不高于所述第二概率的第三概率被保留在所述快速缓存器中不被清除。
使得不同类型的IO具有不同的缓存清除策略的原因是,如果小而随机的IO具有更多机会被保留在SSD中,则将降低其被HDD处理的概率,从而减少对HDD性能和存储***的整体性能的影响。以元数据和用户数据为例,由于读/写元数据属于小而随机的IO,从而高速缓存元数据将比高速缓存用户数据具有更高的价值,因此SSD高速缓存器需要尽可能长时间地保留元数据。然而SSD高速缓存也需要清除缓存数据的策略,因为被缓存的数据可能会变冷而不再被使用,将冷的数据清除将有助于提高快速缓存器的效率。在本公开的一个实施例中,可以通过针对不同的IO类型设定不同的计数器或者计时器来实现不同的清除概率,但是本公开的实施例不限于此。
如图6所示,在一个实施例中,方法200可以包括配置通过配置文件、命令行工具、驱动器接口中的至少一种方式来配置(S630)缓存清除策略集合。
在又一实施例中,方法200可以包括通过最近最少使用(LRU)列表来管理(S640)快速缓存器中缓存的数据页,该LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页。并且在块S620中,包括通过以下方式来决定是否将响应于IO请求的读/写数据从所述快速缓存器中清除:
-如果所确定的IO类型为元数据IO,则当对应的元数据页到达所述LRU列表的最后一项的次数超过第一清除阈值,则将所述元数据页从所述快速缓存器中清除;
-如果所确定的IO类型为用户数据IO或者背景数据IO,则当对应的用户数据页或者背景数据页到达所述LRU列表的最后一项的次数超过第二清除阈值,则将所述用户数据页或者背景数据页从所述快速缓存器中清除;第二清除阈值被设定为小于第一清除阈值,从而用户数据和背景数据在快速缓存器中保留的时间短于元数据。
如本领域技术人员能够理解的,本公开的实施例不限于以上所述的LRU列表。例如,在另一示例中,也可以使LRU列表的第一项列出最冷的数据页,并且最后一项列出最热的数据页;而缓存清除策略可以相应地变化。
在图7a中示出SSD高速缓存中使用LRU进行数据页管理的示例。在该示例中,针对每个LUN,使用一个LRU列表来管理被缓存的数据。图中深色的块表示元数据,而白色块表示用户数据。以LUN1为例,其LRU列表的顶端列出最热的数据页,而最底端列出最冷的数据页。当SSD想要移除一个缓存数据页时,其可以将最底端的数据页移除到HDD(物理LUN)。
在图7b中示出SSD高速缓存中使用LRU进行数据页管理的另一示例。在该示例中,SSD可以设定第一清除阈值为3,即,当元数据到达该LRU列表的底端达3次,则其将被从该LRU列表中移除,进入HDD。可以理解,该第一清除阈值可以是其它的合适的数值。如图7b所示,以第一清除阈值等于3为例,被缓存的元数据被移除的过程可以如下所示:
-当元数据被提升到快速缓存时,其计数器被设为3;
-当元数据的被缓存页到达LRU列表的底端时,其计数器将减1,并且缓存页被移回LRU列表的顶端;
-当元数据计数器达到1并且缓存页处于LRU列表的底端时,其将清除计数器并且移回LRU列表的顶端;
-当元数据计数器被清零并且元数据缓存页处于LRU列表的底端时,该元数据缓存页将被从快速缓存中清除。
对于用户数据缓存页面,可以不具有该计数器,或者假定第二清除阈值为1,即,当用户数据缓存页到达LRU列表的底端时,就被从该SSD高速缓存清除。应该注意的是,针对用户数据IO或者背景数据IO的第二清除阈值也可以被设定为小于第一清除阈值的其它值。
根据本公开的上述实施例,能够使得元数据在快速缓存中被保留的时间比用户数据和背景数据更长。同时使得能够在数据实际上已经变冷的情况下将其从快速缓存(例如,SSD高速缓存器)中移除。
图8示出根据本公开的实施例的在存储***中用于输入输出IO处理的装置800的示例性结构图。在一个实施例中,装置800可以被实施为存储***中的快速缓存器(例如,SSD高速缓存)的一部分。在另一实施例中,装置800可以被实施为与快速缓存器分离的装置,该装置可以与快速缓存器通信。装置800可操作用于执行参照图2a-7b所描述的方法200,以及任何其他的处理和方法。应当理解,方法200不局限于由装置800来执行,方法200的至少一些块也可以由其他的装置或者实体来执行。
如图8所示,装置800包括接收单元810,被配置为从上层接收IO请求,其中该IO请求包括IO类型标识符;类型确定单元820,被配置为基于所述IO类型标识符确定IO请求的IO类型;以及处理单元830,被配置为基于所确定的IO类型处理该IO请求。
由于装置800可操作用于执行参照图2a-7b所描述的方法200,因此,关于图2a-7b和方法200所进行的关于IO类型、IO类型的确定、以及基于所确定的IO类型处理IO请求的描述在此同样适用,并不再一一重复。
例如,在装置800中接收单元810、类型确定单元820、处理单元830可以分别被配置为执行块S210、S220、S230中的操作。
在另一实施例中,处理单元830可以进一步包括:转发单元831,被配置为将所述IO请求转发到后端以读/写数据;以及提升单元832,被配置为在所述IO请求从后端返回时,向所述上层发送响应,并且基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器。在一些实施例中,转发单元831和提升单元832可以被配置为分别执行参考图2b所描述的块S231、S232中的操作。
在又一实施例中,装置800可以包括检查单元833,被配置为在将所述IO请求转发到后端之前,检查IO请求要读/写的数据是否已经被缓存在所述快速缓存器中。相应地,转发单元831可以被配置为根据检查结果将IO其转发给快速缓存器或者后端。
在一个实施例中,装置800的处理单元830可以进一步包括提升策略确定单元834,被配置为从缓存提升策略集合中获取针对所确定的IO类型的缓存提升策略;以及提升单元832,被配置为基于所获取的缓存提升策略确定是否将IO请求要读/写的数据提升到快速缓存器。该提升策略确定单元834和提升单元832可以分别被配置为执行参考图4所述的S410和S420的操作。在另一实施例中,装置800还可以包括提升策略配置单元840,被配置为通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合。
在以上一些实施例中,装置800通过根据IO类型选择性地将数据提升到快速缓存中缓存,减少某些IO(例如小而随机的IO)被后端处理的概率,从而减少对后端(例如HDD)性能的影响。
在另一些实施例中,替代地或者附加地,装置800的处理单元830可以在IO请求的读/写数据已经被缓存在快速缓存器中的情况下,基于所确定的IO类型决定是否将响应于该IO请求的读/写数据从快速缓存器中清除,由此来清除快速缓存器中不必要的数据,提高快速缓存器的效率。
在一个示例性实施例中,处理单元830可以进一步包括清除策略确定单元835,被配置为从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略;以及清除单元836,被配置为基于所确定的缓存清除策略决定是否将响应于所述IO请求的所述读/写数据从所述快速缓存器中清除。在另一实施例中,处理单元830可以进一步包括清除策略配置单元837,被配置为配置所述缓存清除策略集合。在一个实施例中,清除策略确定单元835、清除单元836、清除策略配置单元837可以分别被配置为执行参考图6所述的块S610、S620和S630中的操作,因此具体细节不再重复。
在又一实施例中,装置800可以进一步包括缓存数据管理单元838,被配置为通过最近最少使用LRU列表来管理所述快速缓存器中缓存的数据页,所述LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页。相应地,清除单元836可以被配置为基于IO类型(包括例如特定于IO类型的阈值、数据在LRU表中的位置)来确定是否将该数据从快速缓存其中清除。由于已经参考图6-7b描述了具体示例,这里不再重复。
如本领域技术人员能够理解的,装置800还可以包括图8中未示出的其它单元,例如用于快速缓存的单元。
本公开的实施例所提出的方法和装置的优点包括以下的至少一项:
-能够在快速缓存中缓存更多的元数据,以减少进入小而随机的IO进入HDD;提高存储***的整体性能;
–缩短用户响应时间,提高IOPS;
–有效管理快速缓存器,提高快速缓存器的利用效率。
本领域技术人员将容易地认识到,各种上述各种方法中的块或者步骤可以通过编程的计算机来执行。在本公开中,一些实施例还意在涵盖程序存储设备,例如,数字数据存储介质,这是机器或计算机可读的并且编码机器可执行或计算机可执行的指令程序,其中,所述指令执行上述方法的一些或所有步骤。程序存储设备可以是,例如,数字存储器、诸如磁盘和磁带的磁存储介质、硬盘驱动器或光学可读数字数据存储介质。该实施例还意在涵盖编程为执行所述上述方法的步骤的计算机。
在附图中示出的装置的各种元件的功能,可以通过使用软件、专用硬件以及与适当软件相关联的能够执行软件的硬件、或者固件、或者其结合来提供。在一个实施例中,提供一种装置,包括存储器和处理器,该存储器包含指令,当该指令由处理器执行时,该装置可操作以执行参考图2a-7b所描述的任一方法。其中处理器的功能可以由单个专用处理器、由单个共享处理器或由多个单独的处理器来提供。此外,术语“处理器”可以包括但不限于,数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储装置。还可以包括其他常规和/或定制的硬件。
在本公开的一个实施例中,还提供一种在存储***中的快速缓存器(例如SSD高速缓存器),包括参考图8所描述的任一装置。
本领域技术人员应当理解,说明书和附图仅仅说明本公开的原理。因此,应当理解,本领域的技术人员将能够设计出各种布置,虽然这里没有明确地描述或示出,但是该布置体现本公开的原理并且被包括在本公开的精神和范围内。此外,这里阐述的所有示例主要旨在明确仅用于教学目的,以帮助读者理解本公开的原理和发明人贡献的用于促进本领域的概念,并且应被解释为不限于这些具体阐释的示例和条件。而且,这里阐述本公开的原理、方面和实施例的所有阐述及其具体示例也意在包含其等同物。

Claims (35)

1.一种在存储***中用于输入输出IO处理的方法,包括:
在快速缓存器处从上层接收IO请求,其中所述IO请求包括IO类型标识符;
基于所述IO类型标识符确定所述IO请求的IO类型;以及
基于所确定的IO类型处理所述IO请求,其中所述处理在所述快速缓存器处被确定;
其中基于所确定的IO类型处理所述IO请求包括:
从缓存提升策略集合中获取针对所确定的IO类型的缓存提升策略;以及
基于所获取的缓存提升策略确定是否将所述IO请求要读/写的数据提升到所述快速缓存器。
2.根据权利要求1所述的方法,其中基于所述IO类型标识符确定所述IO请求的IO类型包括:
基于所述IO类型标识符从预定的IO类型集合中确定一种IO类型;
其中所述预定的IO类型集合包括第一IO类型和第二IO类型;并且
其中所述存储***中包括第一存储设备和第二存储设备,所述第一存储设备适于快速缓存第一IO类型的IO的数据,所述第二存储设备适于存储第二IO类型的IO的数据。
3.根据权利要求2所述的方法,其中所述第一IO类型包括随机IO,所述第二IO类型包括连续IO。
4.根据权利要求2所述的方法,其中所述第一IO类型包括元数据IO,并且所述第二IO类型包括用户数据IO和/或背景数据IO。
5.根据权利要求2所述的方法,其中所述第一存储设备包括所述快速缓存器,并且所述第二存储设备包括硬盘驱动器HDD。
6.根据权利要求1所述的方法,其中基于所确定的IO类型处理所述IO请求还包括:
将所述IO请求转发到后端,以读/写数据,以及
在所述IO请求从后端返回时,向所述上层发送响应,并且基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器。
7.根据权利要求6所述的方法,其中基于所确定的IO类型确定是否将响应于所述IO请求的读/写数据提升到快速缓存器包括:
如果所确定的IO类型为随机IO或者元数据IO,则将响应于所述IO请求的读/写数据提升到所述快速缓存器。
8.根据权利要求6所述的方法,其中基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器包括:
如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,则进一步基于所述IO请求的新近性和/或频率来决定是否将响应于所述IO请求的读/写数据提升到所述快速缓存器。
9.根据权利要求6所述的方法,进一步包括:
在将所述IO请求转发到所述后端之前,检查所述IO请求要读/写的数据是否已经被缓存在所述快速缓存器中,以及,
如果所述IO请求要读/写的数据已经被缓存在所述快速缓存器中,则将所述IO请求转发到所述快速缓存器以读/写数据,并向所述上层发送响应,并且
仅在所述IO请求要读/写的数据尚未被缓存在所述快速缓存器中时,将所述IO请求转发到后端。
10.根据权利要求1所述的方法,其中所述上层为动态随机存取存储器DRAM驱动器或者虚拟逻辑单元号LUN驱动器。
11.根据权利要求1所述的方法,其中所述缓存提升策略集合包括以下中的至少一项:
对于元数据IO,在元数据第一次被访问时就将所述元数据提升到所述快速缓存器;
对于用户数据IO,在用户数据被访问的次数超过第一提升阈值时将所述用户数据提升到所述快速缓存器;
对于背景数据IO,在背景数据被访问的次数超过第二提升阈值时将所述背景数据提升到所述快速缓存器;
对于读/写的数据量超过预定数据量阈值的IO,不将读/写的数据提升到所述快速缓存器。
12.根据权利要求1所述的方法,进一步包括:
通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合。
13.根据权利要求1所述的方法,其中基于所确定的IO类型处理所述IO请求还包括:
在响应于所述IO请求的读/写数据已经被缓存在所述快速缓存器中时,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
14.根据权利要求13所述的方法,其中基于所确定的IO类型决定是否将响应于所述IO请求的所述读/写数据从所述快速缓存器中清除包括:
从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略;以及
基于所确定的缓存清除策略决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
15.根据权利要求14所述的方法,进一步包括:配置所述缓存清除策略集合,使得:
元数据以第一概率被保留在所述快速缓存器中不被清除;
用户数据以低于所述第一概率的第二概率被保留在所述快速缓存器中不被清除;
背景数据以不高于所述第二概率的第三概率被保留在所述快速缓存器中不被清除。
16.根据权利要求14所述的方法,进一步包括:
通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存清除策略集合。
17.根据权利要求14所述的方法,进一步包括:
通过最近最少使用LRU列表来管理所述快速缓存器中缓存的数据页,所述LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页,并且
基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除包括:
如果所确定的IO类型为元数据IO,则当对应的元数据页到达所述LRU列表的最后一项的次数超过第一清除阈值,则将元数据页从所述快速缓存器中清除;
如果所确定的IO类型为用户数据IO或者背景数据IO,则当对应的用户数据页或者背景数据页到达所述LRU列表的最后一项的次数超过第二清除阈值,则将用户数据页或者背景数据页从所述快速缓存器中清除;
其中所述第二清除阈值小于所述第一清除阈值。
18.一种在存储***中用于输入输出IO处理的装置,包括:
接收单元,被配置为在快速缓存器处从上层接收IO请求,其中所述IO请求包括IO类型标识符;
类型确定单元,被配置为基于所述IO类型标识符确定所述IO请求的IO类型;以及
处理单元,被配置为基于所确定的IO类型处理所述IO请求,其中所述处理在所述快速缓存器处被确定;
其中所述处理单元进一步包括:
提升策略确定单元,被配置为从缓存提升策略集合中获取针对所确定的IO类型的缓存提升策略;以及
提升单元,被配置为基于所获取的缓存提升策略确定是否将所述IO请求要读/写的数据提升到快速缓存器。
19.根据权利要求18所述的装置,其中所述类型确定单元被配置为:
基于IO类型标识符从预定的IO类型集合中确定一种IO类型;
其中所述预定的IO类型集合包括第一IO类型和第二IO类型;并且
其中所述存储***中包括第一存储设备和第二存储设备,所述第一存储设备适于快速缓存第一IO类型的IO的数据,所述第二存储设备适于存储第二IO类型的IO的数据。
20.根据权利要求19所述的装置,其中所述第一IO类型包括随机IO,所述第二IO类型包括连续IO。
21.根据权利要求19所述的装置,其中所述第一IO类型包括元数据IO,并且所述第二IO类型包括用户数据IO和/或背景数据IO。
22.根据权利要求19所述的装置,其中所述第一存储设备包括所述快速缓存器,并且所述第二存储设备包括硬盘驱动器HDD。
23.根据权利要求18所述的装置,其中所述处理单元进一步包括:
转发单元,被配置为将所述IO请求转发到后端,以读/写数据;以及
提升单元,被配置为在所述IO请求从后端返回时,向所述上层发送响应,并且基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据提升到快速缓存器。
24.根据权利要求23所述的装置,其中所述提升单元被配置为:
如果所确定的IO类型为随机IO或者元数据IO,则将响应于所述IO请求的所述读/写数据提升到所述快速缓存器。
25.根据权利要求23所述的装置,其中所述提升单元被配置为:
如果所确定的IO类型为连续IO、用户数据IO、或者背景数据IO,则进一步基于所述IO请求的新近性和/或频率来确定是否将响应于所述IO请求的所述读/写数据提升到所述快速缓存器。
26.根据权利要求23所述的装置,进一步包括:
检查单元,被配置为在将所述IO请求转发到所述后端之前,检查所述IO请求要读/写的数据是否已经被缓存在所述快速缓存器中,并且,
所述转发单元被配置为:
如果所述IO请求要读/写的数据已经被缓存在所述快速缓存器中,则将所述IO请求转发到所述快速缓存器以读/写数据,并向所述上层发送响应,并且
仅在所述IO请求要读/写的数据尚未被缓存在所述快速缓存器中时,将所述IO请求转发到所述后端。
27.根据权利要求18所述的装置,其中所述上层为动态随机存取存储器DRAM驱动器或者虚拟逻辑单元号LUN驱动器。
28.根据权利要求18所述的装置,其中所述缓存提升策略集合包括以下中的至少一项:
对于元数据IO,在元数据第一次被访问时就将所述元数据提升到所述快速缓存器;
对于用户数据IO,在用户数据被访问的次数超过第一提升阈值时将所述用户数据提升到所述快速缓存器;
对于背景数据IO,在背景数据被访问的次数超过第二提升阈值时将所述背景数据提升到所述快速缓存器;
对于读/写的数据量超过预定数据量阈值的IO,不将读/写的数据提升到所述快速缓存器。
29.根据权利要求18所述的装置,进一步包括:
提升策略配置单元,被配置为通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存提升策略集合。
30.根据权利要求18所述的装置,其中所述处理单元还被配置为:
在响应于所述IO请求的读/写数据已经被缓存在所述快速缓存器中时,基于所确定的IO类型决定是否将响应于所述IO请求的读/写数据从所述快速缓存器中清除。
31.根据权利要求30所述的装置,其中所述处理单元进一步包括:
清除策略确定单元,被配置为从缓存清除策略集合中确定针对所确定的IO类型的缓存清除策略;以及
清除单元,被配置为基于所确定的缓存清除策略决定是否将响应于所述IO请求的所述读/写数据从所述快速缓存器中清除。
32.根据权利要求31所述的装置,进一步包括:
清除策略配置单元,被配置为配置所述缓存清除策略集合,使得:
元数据以第一概率被保留在所述快速缓存器中不被清除;
用户数据以低于所述第一概率的第二概率被保留在所述快速缓存器中不被清除;
背景数据以不高于所述第二概率的第三概率被保留在所述快速缓存器中不被清除。
33.根据权利要求31所述的装置,进一步包括:
清除策略配置单元,被配置为通过配置文件、命令行工具、驱动器接口中的至少一种方式配置所述缓存清除策略集合。
34.根据权利要求31所述的装置,进一步包括:
缓存数据管理单元,被配置为通过最近最少使用LRU列表来管理所述快速缓存器中缓存的数据页,所述LRU列表的第一项列出最热的数据页,并且最后一项列出最冷的数据页,并且
所述清除单元被配置为:
如果所确定的IO类型为元数据IO,则当对应的元数据页到达所述LRU列表的最后一项的次数超过第一清除阈值,则将元数据页从所述快速缓存器中清除;
如果所确定的IO类型为用户数据IO或者背景数据IO,则当对应的用户数据页或者背景数据页到达所述LRU列表的最后一项的次数超过第二清除阈值,则将用户数据页或者背景数据页从所述快速缓存器中清除,
其中所述第二清除阈值小于所述第一清除阈值。
35.一种在存储***中的快速缓存器,包括根据权利要求18到34中任一权利要求所述的装置。
CN201510608751.6A 2015-09-22 2015-09-22 用于数据存储***的方法和装置 Active CN106547476B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510608751.6A CN106547476B (zh) 2015-09-22 2015-09-22 用于数据存储***的方法和装置
US15/268,807 US10860493B2 (en) 2015-09-22 2016-09-19 Method and apparatus for data storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510608751.6A CN106547476B (zh) 2015-09-22 2015-09-22 用于数据存储***的方法和装置

Publications (2)

Publication Number Publication Date
CN106547476A CN106547476A (zh) 2017-03-29
CN106547476B true CN106547476B (zh) 2021-11-09

Family

ID=58282386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510608751.6A Active CN106547476B (zh) 2015-09-22 2015-09-22 用于数据存储***的方法和装置

Country Status (2)

Country Link
US (1) US10860493B2 (zh)
CN (1) CN106547476B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506140A (zh) * 2017-08-16 2017-12-22 郑州云海信息技术有限公司 一种用于存储***的数据访问方法和***
CN107491272B (zh) * 2017-09-29 2020-03-06 苏州浪潮智能科技有限公司 一种数据迁移的方法、装置、设备及存储介质
CN110209600B (zh) * 2018-02-28 2021-05-28 杭州宏杉科技股份有限公司 一种基于精简lun的cache空间分配方法及***
US10942854B2 (en) 2018-05-09 2021-03-09 Micron Technology, Inc. Prefetch management for memory
US10754578B2 (en) 2018-05-09 2020-08-25 Micron Technology, Inc. Memory buffer management and bypass
US10714159B2 (en) 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
CN108763107B (zh) * 2018-06-04 2022-03-01 平安科技(深圳)有限公司 后台写盘流控方法、装置、电子设备及存储介质
CN109684236A (zh) * 2018-12-25 2019-04-26 广东浪潮大数据研究有限公司 一种数据写缓存控制方法、装置、电子设备和存储介质
CN109933291B (zh) * 2019-03-20 2022-05-06 浪潮商用机器有限公司 一种sram数据的处理方法、装置、设备及存储介质
US11138123B2 (en) * 2019-10-01 2021-10-05 EMC IP Holding Company LLC Local cache size control in a storage array
US11768773B2 (en) * 2020-03-03 2023-09-26 International Business Machines Corporation I/O request type specific cache directories
US10802980B1 (en) * 2020-03-20 2020-10-13 Cloudflare, Inc. Caching assets in a multiple cache system
CN114449094B (zh) * 2020-10-30 2023-04-11 华为技术有限公司 管控方法及电子设备、芯片、存储介质
US11966336B2 (en) * 2021-11-08 2024-04-23 Sap Se Caching data based on greenhouse gas data

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101907978A (zh) * 2010-07-27 2010-12-08 浙江大学 基于固态硬盘和磁性硬盘的混合存储***及存储方法
US20110093905A1 (en) * 2009-10-19 2011-04-21 General Instrument Corporation Adaptive media caching for video on demand
US20110153893A1 (en) * 2009-12-18 2011-06-23 Annie Foong Source Core Interrupt Steering
US20120290786A1 (en) * 2011-05-11 2012-11-15 Mesnier Michael P Selective caching in a storage system
US20130346723A1 (en) * 2012-06-22 2013-12-26 Hitachi, Ltd. Method and apparatus to protect data integrity

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
US20150010143A1 (en) * 2009-04-30 2015-01-08 HGST Netherlands B.V. Systems and methods for signature computation in a content locality based cache
US9582222B2 (en) * 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US8473648B2 (en) * 2010-12-16 2013-06-25 Lsi Corporation System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network
US10359972B2 (en) * 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9268702B2 (en) * 2013-04-11 2016-02-23 Institute of Computer Science (ICS) of the Foundation for Research and Technology—Hellas (FORTH) Storage I/O path partitioning to eliminate I/O interference in consolidated servers
US9037792B1 (en) * 2013-06-06 2015-05-19 Symantec Corporation Systems and methods for providing caching for applications with solid-state storage devices
JP6119533B2 (ja) * 2013-09-27 2017-04-26 富士通株式会社 ストレージ装置,ステージング制御方法及びステージング制御プログラム
US9208086B1 (en) * 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
CN104951239B (zh) * 2014-03-26 2018-04-10 国际商业机器公司 高速缓存驱动器、主机总线适配器及其使用的方法
US9992298B2 (en) * 2014-08-14 2018-06-05 International Business Machines Corporation Relationship-based WAN caching for object stores
CN104881248B (zh) * 2015-05-11 2018-04-17 中国人民解放军国防科学技术大学 面向ssd的文件***中自适应直接io加速方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110093905A1 (en) * 2009-10-19 2011-04-21 General Instrument Corporation Adaptive media caching for video on demand
US20110153893A1 (en) * 2009-12-18 2011-06-23 Annie Foong Source Core Interrupt Steering
CN101907978A (zh) * 2010-07-27 2010-12-08 浙江大学 基于固态硬盘和磁性硬盘的混合存储***及存储方法
US20120290786A1 (en) * 2011-05-11 2012-11-15 Mesnier Michael P Selective caching in a storage system
US20130346723A1 (en) * 2012-06-22 2013-12-26 Hitachi, Ltd. Method and apparatus to protect data integrity

Also Published As

Publication number Publication date
US10860493B2 (en) 2020-12-08
US20170083447A1 (en) 2017-03-23
CN106547476A (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
CN106547476B (zh) 用于数据存储***的方法和装置
CN102760101B (zh) 一种基于ssd 的缓存管理方法及***
KR101726824B1 (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
US11593272B2 (en) Method, apparatus and computer program product for managing data access
KR101023883B1 (ko) 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US8312217B2 (en) Methods and systems for storing data blocks of multi-streams and multi-user applications
US10860494B2 (en) Flushing pages from solid-state storage device
CN108268219B (zh) 一种处理io请求的方法及装置
US8566518B2 (en) Intelligent write caching for sequential tracks
US20170371807A1 (en) Cache data determining method and apparatus
US11093410B2 (en) Cache management method, storage system and computer program product
EP2711841A1 (en) Data processing method, device and system based on block storage
KR20120090965A (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US11809330B2 (en) Information processing apparatus and method
JP6711121B2 (ja) 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
CN107329704B (zh) 一种缓存镜像方法及控制器
EP4020153A1 (en) Cache space management method and device
US10620844B2 (en) System and method to read cache data on hybrid aggregates based on physical context of the data
JP2019028954A (ja) ストレージ制御装置、プログラム、及び重複排除方法
US9262089B2 (en) Use of flash cache to improve tiered migration performance
WO2014153931A1 (zh) 文件存储方法、装置、访问客户端及元数据服务器***
US9378151B2 (en) System and method of hinted cache data removal
KR101648725B1 (ko) Ssd를 이용한 메모리 관리 방법
JP6112193B2 (ja) アクセス制御プログラム、ディスク装置及びアクセス制御方法

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
TA01 Transfer of patent application right

Effective date of registration: 20200423

Address after: Massachusetts, USA

Applicant after: EMC IP Holding Company LLC

Address before: Ma Sazhusaizhou

Applicant before: EMC Corp.

GR01 Patent grant
GR01 Patent grant