CN105493051B - 自适应高速缓冲存储器控制器 - Google Patents

自适应高速缓冲存储器控制器 Download PDF

Info

Publication number
CN105493051B
CN105493051B CN201480035733.7A CN201480035733A CN105493051B CN 105493051 B CN105493051 B CN 105493051B CN 201480035733 A CN201480035733 A CN 201480035733A CN 105493051 B CN105493051 B CN 105493051B
Authority
CN
China
Prior art keywords
data
state disk
solid
sequence
module
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
CN201480035733.7A
Other languages
English (en)
Other versions
CN105493051A (zh
Inventor
A·P·戈利
R·K·乔里
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN105493051A publication Critical patent/CN105493051A/zh
Application granted granted Critical
Publication of CN105493051B publication Critical patent/CN105493051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0871Allocation or management of cache space
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种***包括分割模块和写入模块。分割模块被配置为将多个固态盘中的每个固态盘分割成多个块。多个块中的每个块具有预定大小。写入模块被配置为在从多个固态盘中的第一固态盘的第一块开始到多个固态盘中的最后固态盘的第一块以及后续地从第一固态盘的第二块开始到最后固态盘的第二块的序列中,向多个固态盘中的一个或者多个固态盘写入数据。在多个固态盘中的每个固态盘中,第二块在第一块之后。

Description

自适应高速缓冲存储器控制器
相关申请的交叉引用
本申请要求对提交于2014年6月24日的第14/313,055号美国实用申请的优先权并且也要求对提交于2013年6月25日的第61/839,085号美国临时申请的权益。以上引用的申请的全部公开内容通过引用并入于此。
技术领域
本公开内容总体上涉及高速缓冲存储器,并且更特别地涉及自适应高速缓冲存储器控制器。
背景技术
这里提供的背景技术描述是出于总体上呈现本公开内容的上下文的目的。当前具名的发明人的工作在这一背景技术章节中描述该工作的程度上以及该描述的可以在提交时未以其它方式属于现有技术的方面既未被明示地也未被暗示地承认为相对于本公开内容的现有技术。
一般而言,由处理器请求的数据初始地从存储设备(例如,盘驱动)被读取并且存储在由处理器使用的***存储器(也被称为主存储器,通常为DRAM)中。处理器然后经由处理器、***存储器和其它外设被连接到的***总线从***存储器读取数据,并且处理数据。以这一方式处理数据可能缓慢。
取而代之,可以在高速缓冲存储器中存储由处理器频繁地使用的数据。这一过程被称为高速缓冲,并且在高速缓冲存储器中存储的数据被称为高速缓冲的数据。处理器可以比在盘驱动或者***存储器中存储的数据更快地访问和处理高速缓冲的数据。因而,高速缓冲存储器可以提高***性能和吞吐量。
具体而言,高速缓冲控制器在高速缓冲存储器中存储由处理器频繁地使用的数据。高速缓冲存储器通常比***存储器更快并且可以由与***总线分离的总线耦合到处理器。因而,处理器可以比在***存储器中存储的数据更快地访问高速缓冲存储器中的数据。对数据的高速缓冲因此提高了***性能和吞吐量。
发明内容
一种***包括分割模块和写入模块。分割模块被配置为将多个固态盘中的每个固态盘分割成多个块。多个块中的每个块具有预定大小。写入模块被配置为在从多个固态盘中的第一固态盘的第一块开始到多个固态盘中的最后固态盘的第一块并且后续地从第一固态盘的第二块开始到最后固态盘的第二块的序列中向多个固态盘中的一个或者多个固态盘写入数据。在多个固态盘中的每个固态盘中,第二块在第一块之后。
在其它特征中,***还包括划分模块,划分模块被配置为将数据划分成多个部分。写入模块被配置为分别向序列中的多个块写入多个部分。
在另一特征中,响应于数据未被存储在多个固态盘外部的存储器中,写入模块被配置为在序列中的两个连续块中写入数据和数据的副本。
在另一特征中,***还包括擦除模块,擦除模块被配置为响应于可用于在多个固态盘中写入的块的数目减少至预定阈值以及响应于在序列中的一个或者多个连续块中写入的数据被存储在多个固态盘外部的存储器中,擦除序列中的一个或者多个连续块。
在另一特征中,***还包括擦除模块,擦除模块被配置为响应于在序列中的一个或者多个连续块中写入的数据被存储在多个固态盘外部的存储器中以及响应于在序列中的一个或者多个连续块中写入的数据以小于或者等于预定频率的频率被使用,擦除序列中的一个或者多个连续块。
在其它特征中,***还包括选择模块和擦除模块。选择模块被配置为响应于数据未被存储在多个固态盘外部的存储器中,选择序列中的数据和数据的副本被写入在其中的两个连续块。擦除模块被配置为擦除两个连续块。选择模块被配置为响应于可用于在多个固态盘中写入的块的数目减少至预定阈值,选择两个连续块。写入模块被配置为在擦除模块擦除两个连续块之前从两个连续块分别向序列中的两个连续可用块写入数据。两个连续可用块在序列中的最后写入的块之后。
在其它特征中,***还包括非易失性存储器和更新模块。非易失性存储器被配置为存储与数据一起接收的元数据。非易失性存储器与多个固态盘分离。更新模块被配置为响应于写入模块从两个连续块分别向序列中的两个连续可用块写入数据,更新元数据。
在其它特征中,***还包括选择模块和擦除模块。选择模块被配置为响应于在序列中的一个或者多个块中写入的数据以大于或者等于预定频率的频率被使用,选择序列中的一个或者多个连续块。擦除模块被配置为擦除一个或者多个连续块。写入模块被配置为从一个或者多个连续块分别向序列中的一个或者多个连续可用块写入数据。一个或者多个连续可用块在序列中的最后写入的块之后。
在其它特征中,***还包括非易失性存储器和更新模块。非易失性存储器被配置为存储与数据一起接收的元数据。非易失性存储器与多个固态盘分离。更新模块被配置为响应于写入模块从一个或者多个连续块分别向序列中的一个或者多个连续可用块写入数据,更新元数据。
在其它特征中,***还包括去除模块和排除模块。去除模块被配置为去除多个固态盘之一。排除模块被配置为从序列排除与去除的固态盘关联的块。
在其它特征中,***还包括添加模块和包括模块。添加模块被配置为向多个固态盘添加附加固态盘。分割模块被配置为将附加固态盘分割成多个附加块。包括模块被配置为在序列中包括多个附加块。
在更多其它特征中,一种方法包括将多个固态盘中的每个固态盘分割成多个块,其中多个块中的每个块具有预定大小。该方法还包括在从多个固态盘中的第一固态盘的第一块开始到多个固态盘中的最后固态盘的第一块、继而从第一固态盘的第二块开始到最后固态盘的第二块的序列中向多个固态盘中的一个或者多个固态盘写入数据。在多个固态盘中的每个固态盘中,第二块在第一块之后。
在其它特征中,该方法还包括将数据划分成多个部分,以及分别向序列中的多个块写入多个部分。
在另一特征中,该方法还包括响应于数据未被存储在多个固态盘外部的存储器中,在序列中的两个连续块中写入数据和数据的副本。
在另一特征中,该方法还包括响应于可用于在多个固态盘中写入的块的数目减少至预定阈值以及响应于在序列中的一个或者多个连续块中写入的数据被存储在多个固态盘外部的存储器中,擦除序列中的一个或者多个连续块。
在另一特征中,该方法还包括响应于在序列中的一个或者多个连续块中写入的数据被存储在多个固态盘外部的存储器中以及响应于在序列中的一个或者多个连续块中写入的数据以小于或者等于预定频率的频率被使用,擦除序列中的一个或者多个连续块。
在其它特征中,该方法还包括响应于可用于在多个固态盘中写入的块的数目减少至预定阈值以及响应于在序列中的一个或者多个块中写入的数据未被存储在多个固态盘外部的存储器中:选择序列中的数据和数据的副本被写入在其中的两个连续块;从两个连续块分别向序列中的两个连续可用块写入数据,其中两个连续可用块在序列中的最后写入的块之后;以及擦除两个连续块。
在其它特征中,该方法还包括存储与数据一起接收的元数据,以及响应于从两个连续块分别向序列中的两个连续可用块写入数据,更新元数据。
在其它特征中,该方法还包括响应于在序列中的一个或者多个块中写入的数据以大于或者等于预定频率的频率被使用:选择序列中的一个或者多个连续块;从一个或者多个连续块分别向序列中的一个或者多个连续可用块写入数据,其中一个或者多个连续可用块在序列中的最后写入的块之后;以及擦除一个或者多个连续块。
在其它特征中,该方法还包括存储与数据一起接收的元数据,以及响应于从一个或者多个连续块分别向序列中的一个或者多个连续可用块写入数据,更新元数据。
在其它特征中,该方法还包括去除多个固态盘之一,以及从序列排除与去除的固态盘关联的块。
在其它特征中,该方法还包括向多个固态盘添加附加固态盘、将附加固态盘分割成多个附加块以及在序列中包括多个附加块。
本公开内容的更多适用领域将从具体实施方式、权利要求书和附图变得清楚。具体实施方式和具体示例仅旨在于举例说明而并非旨在于限制公开内容的范围。
附图说明
图1是高速缓冲***的功能框图。
图2是在图1的高速缓冲***中使用的高速缓冲卡的功能框图。
图3描绘了在图1的高速缓冲***中使用的包括多个固态盘的容器的数据结构。
图4描绘了在图1的高速缓冲***中使用的包括多个固态盘的容器中写入数据的依次和成条(striped)方式。
图5描绘了对在图1的高速患从***中使用的容器中的多个固态盘的块的定序列。
图6描绘了在图1的高速缓冲***中使用的包括多个固态盘的容器中以依次和成条方式写入不同类型的数据的示例。
图7描绘了由图2的高速缓冲卡中的高速缓冲控制器使用的监视模块。
图8描绘了在图1的高速缓冲***中使用的包括多个固态盘的容器内对数据类型的重新定位的示例。
图9描绘了由图2的高速缓冲卡中的高速缓冲控制器使用的重新配置模块。
图10描绘了由图2的高速缓冲卡中的高速缓冲控制器使用的状态机。
图11是用于在图1的高速缓冲***中使用的包括多个固态盘的容器中以依次和成条方式写入数据的方法的流程图。
图12是用于在图1的高速缓冲***中使用的包括多个固态盘的容器中写入数据的方法的流程图。
图13是用于在图2的高速缓冲卡中使用的高速缓冲控制器中调度I/O操作的方法的流程图。
图14是用于在图1的高速缓冲***中使用的包括多个固态盘的容器中将数据从日志的头部重新定位到尾部的方法的流程图。
图15是用于在图1的高速缓冲***中使用的包括多个固态盘的容器中收回日志中的空间的方法的流程图。
在附图中,标号可以被重复用来标识相似和/或相同单元。
具体实施方式
使用固态盘(SSD)作为高速缓冲存储器可以提高***性能和吞吐量。本公开内容的***和方法提供了基于SSD的高速缓冲存储器和高速缓冲***。高速缓冲***具有以下特征:高速缓冲***为了最优性能而以日志结构化方式(在每个SSD内依次地而跨所有SSD成条地)写入数据。高速缓冲***的读取/写入吞吐量随着SSD的数目而伸缩。高速缓冲***保证没有用于脏数据(仅在高速缓冲存储器中存储的而未在任何其它存储装置(例如,***存储器或者盘)中存储的数据)的单个故障点。高速缓冲***允许以在线方式增长/收缩高速缓冲存储器的存储容量而未影响在现有SSD中高速缓冲的数据。高速缓冲***提供高效垃圾收集以回收在高速缓冲存储器内的空间。
具体而言,如以下具体说明的那样,SSD被分组成被称为容器的逻辑实体。每个容器包含一个或者多个SSD。为脏数据提供存储的容器包括用于提供可靠性的至少两个SSD。脏数据的两个或者更多个副本被存储在每个容器内的两个或者更多个SSD上,从而使得如果一个SSD出故障则未丢失脏数据。容器是维持与SSD对应的盘结构的链的数据结构。SSD的每个盘结构包括簿记信息和指向反向查找表的链接,该反向查找表用来当在垃圾收集期间在SSD内移动数据以回收空间时更新元数据。在容器中,每个SSD被划分成多个固定大小的块。数据在每个SSD内以依次方式而跨所有SSD以成条方式被写入到这些块。在接收待写入(高速缓冲)的数据时,数据可以被划分成多个部分。在每个SSD内以依次方式而跨所有SSD以成条方式在这些块中写入部分。在至少两个分离的SSD中复制和写入脏数据。在垃圾收集期间,移动数据如下。从SSD驱逐不频繁地使用的干净数据(即,其副本被存储在SSD中和一些其它存储装置(例如,***存储器或者盘)中的数据)。脏数据和频繁地使用的干净数据被移向在容器内的前若干可用自由块。以相同方式在可用自由块中写入移动的数据:在每个SSD内依次地而跨所有SSD成条地。在移动数据之后,擦除和释放通过移动数据而释放的块以用于重用,并且更新元数据。
这一方案提供了许多优点。例如,这一方案同时提供成条化和RAID1益处。这一方案也保证了以依次(日志结构化)方式消耗块,这使垃圾收集最小化。这一方案利用每SSD的固定大小的表以存储代表元数据条目的cookie,该元数据条目提供快速反向查找。另外,这一方案也允许以在线方式向/从容器添加/去除SSD(即,未影响现有的高速缓冲的数据)并且保证当在添加和去除SSD时重新配置容器之后仍然以日志结构化方式消耗块。
图1示出了包括主机***102、高速缓冲卡104和多个SSD 106的高速缓冲***100。主机***102例如经由PCIe接口与高速缓冲卡104通信。主机***102包括处理器110处理器执行高速缓冲软件112并且与高速缓冲卡104通信。高速缓冲卡104使用SSD 106作为高速缓冲存储器并且根据从高速缓冲软件112接收的命令向SSD 106高速缓冲数据。
高速缓冲卡包括高速缓冲控制器114、DRAM 116、备用功率模块118和NAND闪存120。DRAM 116存储与高速缓冲控制器114有关的元数据122和从主机***102接收的用户数据124。由在向高速缓冲***100的功率供应被关断时维持向DRAM 116的功率供应的备用功率模块118使DRAM 116非易失。NAND闪存120也可以用来存储与高速缓冲控制器114有关的元数据122。
SSD 106包括两个或者更多个SSD。在所示的示例中,SSD 106包括四个SSD:SSD0126、SSD1128、SSD2130和SSD3132。SSD 106的组被称为容器。在容器中的SSD的数目依赖于被称为重复因子的用户可选择参数。重复因子指示将在SSD 106中存储的脏数据的副本的数目。例如,如果用户想要在一个SSD上存储脏数据的仅一个副本则重复因子是一。如果用户想要在两个不同SSD上存储脏数据的两个副本则重复因子是二,以此类推。
一般而言,重复因子等于将在SSD 106中存储的脏数据的副本的数目,并且容器中的SSD的数目等于重复因子。为了提供防范丢失脏数据的保护,重复因子和容器中的SSD的数目必须至少等于二。在重复因子是二时,在容器中的两个不同SSD上存储脏数据及其副本。如果容器中的两个SSD之一出故障,则未丢失脏数据。
如果单个SSD出故障,则这一方案防止丢失脏数据。为了保护脏数据免于多个SSD故障,除了由重复因子指示的SSD的数目之外,还必须添加一个附加SSD以对于每个附加SSD故障而提供。例如,对于单个SSD故障,SSD的数目对于重复因子为二是二。为了适应两个SSD故障,SSD的数目对于重复因子为二必须是三,以此类推。
用户可以将重复因子初始地设置成一个值并且可以以后将重复因子设置成另一个值。例如,用户可以在从容器去除一个或者多个SSD时或者在向容器添加一个或者多个SSD时改变重复因子。
图2进一步具体示出了高速缓冲卡104。由备用功率模块118使其非易失的DRAM116被示出为非易失性存储器116。高速缓冲控制器114包括分割模块150、数据划分模块152、写入模块154、监视模块156、选择模块158、擦除模块160、更新模块162和重新配置模块164。
分割模块150将容器中的每个SSD逻辑地分割成被称为范畴(extent)的固定大小的块。固定大小的块的数目可由用户选择并且是每个SSD的容量和每个范畴的大小的函数。在接收待高速缓冲的数据时,分配一个或者多个范畴以如以下进一步具体说明的那样在一个或者多个SSD 106中写入数据。
图3示出了由分割模块150为由SSD 106形成的容器而生成的数据结构的示例。例如,被称为CT info(容器信息)的数据结构包括以下字段:SSD的列表(disk_list)、在I/O操作期间使用的被称为Ct_lock的状态参数、指示容器中的自由空间的干净区域描述、日志区域描述(日志是依次地和以成条方式消耗的用于在容器中存储数据的日志)、日志头部、日志尾部、重新平衡信息(例如,在垃圾收集之后)和重新构建信息(例如,在去除/添加SSD之后)。附加数据结构包括每个SSD的盘信息。例如,对于每个SSD,盘信息包括SSD的盘编号(设备ID)、SSD的状态(例如,在线、离线等)、指示何处开始写入数据的条目和其它信息。这些数据结构被存储在非易失性存储器116或者NAND闪存120中。备选地,这些数据结构可以被存储在高速缓冲***100中的任何位置处(例如,***存储器中),只要以非易失性方式存储数据结构。
数据划分模块152将从主机***102接收的数据划分成多个部分。部分的数目是接收的数据的大小和容器中的SSD的数目的函数。例如,如果SSD 106包括三个SSD,则从主机***102接收的12Kb数据块可以被划分成各自4Kb的三个部分。备选地,部分的数目可以是接收的数据的大小和范畴的大小(容器中的固定大小的块)的函数。
图4示出了写入模块154在容器中的SSD 106中写入数据的方式。具体而言,写入模块154如图所示在每个SSD内依次地而通过跨所有SSD成条化来写入数据。写入模块154如以下说明的那样确定何处开始写入数据。
图5示出了包括三个SSD的容器的示例。SSD被划分成具有容器块编号(CBN)的固定大小的块。CNB如图所示以依次地增加顺序被指派编号:从来自第一SSD SSD0的第一块的CBN0开始到最后SSD的最后块,该最后SSD在所示示例中是第三SSD SSD2。
在向SSD 106写入数据时,写入模块154如下确定何处写入数据。使用公式SSD_number=CBN/Number_of_blocks_per_SSD来计算SSD编号。使用公式SSD_block_offset=CBN mod Number_of_blocks_per_SSD来计算SSD块偏移。如下计算将数据写入到的下一CBN。Next_CBN=Last_CBN_written+Number_of_blocks_per_SSD。如果Next_CBN>(Num_of_disks_in_container*Number_of_blocks_per_SSD),则Next_CBN=((Next_CBN modNumber_of_blocks_per_SSD)+1)mod Number_of_blocks_per_SSD。
图6示出了写入脏数据的示例。例如,在重复因子为二时,写入模块154在SSD0的第一块中写入脏数据X并且在SSD1的第一块中写入脏数据的副本。也在每个SSD内依次地而跨两个或者更多个SSD成条地写入脏数据。也示出了在不同SSD上写入脏数据的附加示例。
图7示出了监视模块156的示例。监视模块156监视对SSD 106的使用。监视模块156可以包括自由块监视模块170、频率监视模块171、缺陷/去除监视模块172和添加监视模块174。自由块监视模块170可以监视在容器中可用的自由块的数目。例如,在可用于在容器中写入数据的自由块的数目降至预定阈值水平以下时,监视模块156可以生成用于触发垃圾收集的控制信号。选择模块158和擦除模块160如以下描述的那样执行垃圾收集。
频率监视模块171监视在容器中高速缓冲的数据中的一些数据被主机***102使用的频率。频率监视模块171向选择模块158提供频率信息。基于频率信息,选择模块158和擦除模块160执行如以下描述的垃圾收集。
缺陷/去除监视模块172监视SSD 106中的错误并且监视SSD 106中的任何SSD是否有缺陷。用户可以去除缺陷SSD并且可选地用另一SSD替换缺陷SSD而未影响在SSD 106中高速缓冲的数据。备选地,用户无论SSD是否有缺陷都可以去除SSD并且可以用另一SSD替换去除的SSD而未影响在SSD 106中高速缓冲的数据。缺陷/去除监视模块172监视这些事件并且生成用于指示事件的控制信号。基于控制信号,重新配置模块164如以下描述的那样基于对SSD的去除/替换来重新配置容器。
添加监视模块174监视SSD是否已经被添加。如果检测到对SSD的添加,则添加监视模块174生成控制信号。基于控制信号,重新配置模块164如以下描述的那样重新配置容器。
在垃圾收集期间,基于从监视模块156接收的信息,选择模块158选择SSD 106中的一个或者多个块,其中如果以小于或者等于预定频率的频率使用干净数据则在该一个或者多个块中存储干净数据。擦除模块160擦除选择的块。更新模块162更新在非易失性存储器116中存储的元数据以指示哪些块被释放。
附加地,选择模块158选择SSD 106中的块,其中脏数据被存储在这些块中并且如果以大于或者等于预定频率的频率使用干净数据则在这些块中存储干净数据。写入模块154将数据从选择的块移向容器中的前若干可用自由块。写入模块154以相同方式在自由块中写入数据:在每个SSD内依次地而跨所有SSD成条地。擦除模块160擦除选择的块。更新模块162更新在非易失性存储器116中存储的元数据以指示哪些块被释放以及哪些块现在存储移动的数据。
图8示出了移动脏数据的示例。例如,可以如图所示移动脏数据X,并且可以擦除和释放原先存储脏数据X的块以用于重用。附加地,干净数据Y、Z和X如果被不频繁地使用则可以被驱逐,并且可以擦除和释放存储干净数据Y、Z和X的块以用于重用。备选地,如果频繁地使用干净数据Y、Z和X,则干净数据Y、Z和X可以被移向在容器中被标记为空的块(依次地和以成条方式写入),并且可以擦除和释放原先存储干净数据Y、Z和X的块以用于重用。
在非易失性存储器116中维持高速缓冲元数据查找表。高速缓冲元数据查找表包括将存储设备数据块编号(被称为由主机***102指派的逻辑块地址或者LBA)映射到CBN的元数据条目。反向元数据查找表将CBN映射到元数据条目。元数据条目也保持对在CBN中存储的数据的状态的跟踪。例如,CBN的状态可以指示在CBN中存储的数据是否干净、脏、正在被移动等等。
在主机***102向高速缓冲卡104供应待高速缓冲的数据时,主机***102也与待高速缓冲的数据一起供应cookie。cookie包括由高速缓冲软件112维持的与待高速缓冲的数据有关的元数据。在非易失性存储器116中维持每SSD一个表的反向查找表链,该反向查找表链描述元数据表中的盘块编号和索引。
更新模块162每当在容器内写入或者移动数据时(例如,在垃圾收集期间或者在由于去除/添加SSD而重新配置容器时)更新cookie。高速缓冲软件112基于更新的cookie更新它的元数据。这一机制允许高速缓冲控制器114容易地与主机***102上的不同高速缓冲软件对接以及反之亦然。
图9示出了重新配置模块164的示例。重新配置模块164包括去除模块180和排除模块182、添加模块184和包括模块186。去除模块180从容器数据结构去除被认为有缺陷或者由用户去除的SSD。排除模块182从在非易失性存储器116中存储的数据结构排除与去除的SSD关联的块。添加模块184向在非易失性存储器116中存储的容器数据结构添加由用户添加的SSD。具体而言,分割模块150将添加的SSD分割成固定大小的块。包括模块186向在非易失性存储器116中存储的数据结构包括附加块。
贯穿本公开内容,描述的对SSD的添加或者去除可以包括对SSD的物理添加或者去除。备选地,添加的SSD可以已经物理地存在,并且添加模块184可以简单地向容器逻辑地添加附加SSD。相似地,去除的SSD可以保持物理地存在,并且去除模块180可以简单地从容器逻辑地去除所去除的SSD。
图10示出了容器的状态机。在初始(Init)状态中,添加两个或者更多个SSD以形成容器。状态机移向其中所有SSD恰当地工作的全正常状态。在全正常状态中,可以向容器添加一个或者多个新SSD。如果从容器去除SSD(例如,由于SSD有缺陷或者非必需或者用户决定替换SSD),则状态机从全正常状态移向降级状态。如果去除的SSD是容器中的最后SSD,则状态机可以从降级状态移向离线状态。备选地,状态机可以通过在从容器去除SSD之后执行重新平衡操作来从降级状态移向正常收缩状态。如果从容器去除了最后SSD,则状态机可以从正常收缩状态移向离线状态。备选地,如果从容器去除了SSD,则状态机可以从正常收缩状态移向降级状态。备选地,如果向容器添加了新SSD,则状态机可以从正常收缩状态移向全正常状态。
图11示出了用于高速缓冲数据的方法200的流程图。在202处,控制将容器中的多个SSD中的每个SSD逻辑地划分成多个固定大小的块。在204处,控制将待高速缓冲的数据划分成多个部分并且在图4中所示的序列中分别向多个块写入多个部分。在206处,如果待高速缓冲的数据是脏数据,则控制如图4中所示在序列中的两个连续块中写入数据和数据的副本(即,在分离的相邻SSD中写入数据和数据的副本)。
在208处,如果容器中的自由块的数目减少至在预定阈值以下的水平,则控制如下回收块。控制驱逐不频繁地使用的干净数据并且擦除包含不频繁地使用的干净数据的块。备选地,如果频繁地使用干净数据,则控制在容器中向序列中的前若干可用自由块移动干净数据,而在每个SSD内维持依次写入和跨所有SSD成条。备选地或者附加地,控制在容器中向序列中的前若干可用自由块移动脏数据,而在每个SSD内维持依次写入和跨所有SSD成条。控制擦除原先存储脏数据的块。在210处,控制在数据在容器内被移动时更新元数据。
在212处,如果去除了SSD,则控制通过从序列排除去除的SSD的块来重新配置容器中的原始块序列。备选地,如果添加了SSD,则控制通过在序列中包括添加的SSD的块来重新配置容器中的原始块序列。
图12示出了用于在容器中写入数据的方法300。在302处,控制锁定(保留)容器。在304处,控制确定在容器中可用的块的总数是否足以满足写入请求。如果在容器中可用的块的总数不足以满足写入请求,则方法300以错误告终。这时,用户可以向容器添加SSD。
在306处,如果在容器中可用的块的总数足以满足写入请求,则控制执行以下动作。控制分配多个块并且更新容器数据结构中的尾部索引。分配的块的数目是重复因子的函数。控制仅使用用于每个重复组的第一条目来用分配的多个块填充容器数据结构中的目的地阵列。控制用分配的块编号填充目的地阵列。控制用SCMR索引更新反向查找表,其中SCMR表示用于Mysql繁重读取查询的简单的、基于文件的高速缓冲类。控制发起向一个或者多个分配的块的一个或者多个I/O操作。在308处,控制在I/O操作完成时解锁(释放)容器。
图13示出了由高速缓冲控制器114的I/O调度器执行的方法350。在352处,I/O调度器接收I/O操作(例如,参照图12描述的写入操作)被完成的指示。在354处,I/O调度器聚合从I/O操作的完成所产生的所有响应。在356和358处,I/O调度器分别向高速缓冲控制器114的I/O处置器和/或冲刷器发送I/O操作的完成指示。
图14示出了用于在容器中将数据从日志(图4中所示的块序列)的头部重新定位到尾部的方法400。在402处,控制使反向查找表条目所指向的SCMR对应于头部索引。在404处,控制确定SCMR是否指回到由头部索引指向的日志条目。在406处,如果SCMR未指回到由头部索引指向的日志条目,则控制重置反向查找表中的条目并且推进头部索引。在408处,如果SCMR指回到由头部索引指向的日志条目,则控制执行以下动作。控制分配NVRAM块。控制调度I/O操作以将数据从当前NVRAM位置(基于SCMR)移向新NVRAM位置。控制调度I/O操作以将数据从当前高速缓冲位置移向新NVRAM位置。
在410处,在完成调度的I/O操作时,控制确定是否将数据移向日志中的干净区域。在412处,控制将数据移向日志中的干净区域。备选地,在414处,控制执行以下动作。控制锁定(即,保留)容器。容器将数据从新NVRAM位置移向指向的位置以成为日志中的当前尾部索引。控制释放新NVRAM位置。控制推进头部和尾部索引。控制调整全部使用空间。控制解锁(即,释放)容器。
图15示出了用于回收日志中的空间的方法450。在452处,控制确定日志中的使用的空间是否小于或者等于预定阈值。在454处,如果日志中的使用的空间不小于或者等于预定阈值,则控制执行如图14中所示的、用于在容器中将数据从日志的头部重新定位到尾部的方法400,并且控制返回到452。
前文描述在性质上仅为例示性并且绝非旨在于限制公开内容、它的应用或者使用。可以用多种形式实施公开内容的广义教导。因此,尽管本公开内容包括具体示例,但是不应这样限制公开内容的真实范围,因为许多修改将在研读附图、说明书和所附权利要求书时变得清楚。如这里所用,短语A、B和C中的至少一个应当被解释为意味着使用非排斥逻辑OR的逻辑(A或者B或者C)。应当理解,可以按照不同顺序(或者并行地)执行在方法内的步骤而不改本公开内容的原理。
在包括以下定义的本申请中,可以用术语电路替换术语模块。术语模块可以指代以下各项、是以下各项的部分或者包括以下各项:专用集成电路(ASIC);数字、模拟或者混合的模拟/数字分立电路;数字、模拟或者混合的模拟/数字集成电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器(共享、专用或者成组);存储由处理器执行的代码的存储器(共享、专用或者成组);提供描述的功能的其它适当硬件部件;或者以上各项中的一些或者所有项的(比如在片上***中的)组合。
术语代码如以上所用可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类和/或对象。术语共享处理器涵盖可以执行来自多个模块的一些或者所有代码的单个处理器。术语成组处理器涵盖与附加处理器组合执行来自一个或者多个模块的一些或者所有代码的处理器。术语共享存储器涵盖存储来自多个模块的一些或者所有代码的单个存储器。术语成组存储器涵盖与附加存储器组合存储来自一个或者多个模块的一些或者所有代码的存储器。术语存储器是术语计算机可读介质的子集。术语计算机可读介质如这里所用未涵盖通过介质(比如在载波上)传播的瞬态电或者电磁信号;术语计算机可读介质因此可以被视为有形和非瞬态的。非瞬态、有形计算机可读介质的非限制示例包括非易失性存储器(比如闪存)、易失性存储器(比如静态随机存取存储器和动态随机存取存储器)、磁存储装置(比如磁带或者硬盘驱动)和光存储装置。
在本申请中描述的装置和方法可以部分地或者完全地由一个或者多个处理器执行的一个或者多个计算程序实施。计算机程序包括在至少一个非瞬态、有形计算机可读介质上存储的、可由处理器执行的指令。计算机程序也可以包括和/或依赖于存储的数据。

Claims (22)

1.一种用于存储数据的***,包括:
分割模块,所述分割模块被配置为将多个固态盘中的每个固态盘分割成多个块,其中所述多个块中的每个块具有预定大小;
写入模块,所述写入模块被配置为在从所述多个固态盘中的第一固态盘的第一块开始到所述多个固态盘中的最后固态盘的第一块以及后续地从所述第一固态盘的第二块开始到所述最后固态盘的第二块的序列中,向所述多个固态盘中的一个或者多个固态盘写入数据,
其中在所述多个固态盘中的每个固态盘中,所述第二块在所述第一块之后,并且
其中在将所述数据存储在所述多个固态盘外部的存储器中之前,所述写入模块被配置为在所述序列中的两个连续块中写入所述数据和所述数据的副本;
选择模块,所述选择模块被配置为(i)从所述多个固态盘驱逐以小于预定频率被使用的干净数据,以及(ii)使用反向元数据查找表、通过以下来将(a)以大于所述预定频率被使用的干净数据以及(b)脏数据移动到所述多个固态盘内的首先可用的自由块:在所述多个固态盘中的每个固态盘内依次地并且跨所述多个固态盘成条地将移动的数据写入所述首先可用的自由块中,
其中所述反向元数据查找表将块映射到被存储在高速缓冲元数据查找表中的、指示所述块中的数据的状态的元数据条目,并且
其中干净数据是其副本被存储在所述多个固态盘中和所述多个固态盘外部的所述存储器中的数据,并且其中脏数据是其副本被存储在所述多个固态盘中而不在所述多个固态盘外部的所述存储器中的数据;以及
擦除模块,所述擦除模块被配置为擦除由所述移动的数据释放的块并且释放擦除的所述块以用于重用。
2.根据权利要求1所述的***,还包括:
划分模块,所述划分模块被配置为将所述数据划分成多个部分,
其中所述写入模块被配置为分别向所述序列中的所述多个块写入所述多个部分。
3.根据权利要求1所述的***,其中所述擦除模块被配置为响应于可用于在所述多个固态盘中写入的块的数目小于或者等于预定阈值以及响应于在所述序列中的一个或者多个连续块中写入的所述数据被存储在所述多个固态盘外部的所述存储器中,擦除所述序列中的所述一个或者多个连续块。
4.根据权利要求1所述的***,其中所述擦除模块被配置为响应于在所述序列中的一个或者多个连续块中写入的所述数据被存储在所述多个固态盘外部的所述存储器中以及响应于在所述序列中的所述一个或者多个连续块中写入的所述数据以小于或者等于预定频率的频率被使用,擦除所述序列中的所述一个或者多个连续块。
5.根据权利要求1所述的***,其中:
所述选择模块被配置为响应于所述数据未被存储在所述多个固态盘外部的所述存储器中,选择所述序列中的所述数据和所述数据的副本被写入在其中的两个连续块;并且
所述擦除模块被配置为擦除所述两个连续块,
其中所述选择模块被配置为响应于可用于在所述多个固态盘中写入的块的数目减少至预定阈值,选择所述两个连续块,并且
其中所述写入模块被配置为在所述擦除模块擦除所述两个连续块之前,从所述两个连续块分别向所述序列中的两个连续可用块写入所述数据,并且
其中所述两个连续可用块在所述序列中的最后写入的块之后。
6.根据权利要求5所述的***,还包括:
非易失性存储器,所述非易失性存储器被配置为存储与所述数据一起接收的元数据,其中所述非易失性存储器与所述多个固态盘分离;以及
更新模块,所述更新模块被配置为响应于所述写入模块从所述两个连续块分别向所述序列中的所述两个连续可用块写入所述数据,更新所述元数据。
7.根据权利要求1所述的***,其中:
所述选择模块被配置为响应于在所述序列中的一个或者多个块中写入的所述数据以大于或者等于预定频率的频率被使用,选择所述序列中的一个或者多个连续块;并且
所述擦除模块被配置为擦除所述一个或者多个连续块,
其中所述写入模块被配置为从所述一个或者多个连续块分别向所述序列中的一个或者多个连续可用块写入所述数据,并且
其中所述一个或者多个连续可用块在所述序列中的最后写入的块之后。
8.根据权利要求7所述的***,还包括:
非易失性存储器,所述非易失性存储器被配置为存储与所述数据一起接收的元数据,其中所述非易失性存储器与所述多个固态盘分离;以及
更新模块,所述更新模块被配置为响应于所述写入模块从所述一个或者多个连续块分别向所述序列中的一个或者多个连续可用块写入所述数据,更新所述元数据。
9.根据权利要求1所述的***,还包括:
去除模块,所述去除模块被配置为去除所述多个固态盘之一;以及
排除模块,所述排除模块被配置为从所述序列排除与去除的所述固态盘关联的块。
10.根据权利要求1所述的***,还包括:
添加模块,所述添加模块被配置为向所述多个固态盘添加附加固态盘;
其中所述分割模块被配置为将所述附加固态盘分割成多个附加块;以及
包括模块,所述包括模块被配置为在所述序列中包括所述多个附加块。
11.根据权利要求1所述的***,其中所述分割模块被配置为针对所述多个固态盘中的每个固态盘生成数据结构,所述数据结构包括用于在数据被移动到所述多个固态盘内以回收空间时更新元数据的反向查找表,其中所述反向查找表将容器块编号映射到高速缓冲查找表中的元数据条目,其中容器是所述多个固态盘的组,并且容器块编号标识所述多个固态盘被分割成的、具有所述预定大小的所述多个块,并且其中所述高速缓冲查找表包括将逻辑块编号映射到所述容器块编号的所述元数据条目。
12.一种存储数据的方法,包括:
将多个固态盘中的每个固态盘分割成多个块,其中所述多个块中的每个块具有预定大小;以及
在从所述多个固态盘中的第一固态盘的第一块开始到所述多个固态盘中的最后固态盘的第一块以及后续地从所述第一固态盘的第二块开始到所述最后固态盘的第二块的序列中向所述多个固态盘中的一个或者多个固态盘写入数据,其中在所述多个固态盘中的每个固态盘中,所述第二块在所述第一块之后;以及
在将所述数据存储在所述多个固态盘外部的存储器中,在所述序列中的两个连续块中写入所述数据和所述数据的副本;
从所述多个固态盘驱逐以小于预定频率被使用的干净数据,其中干净数据是其副本被存储在所述多个固态盘中和所述多个固态盘外部的所述存储器中的数据;
使用反向元数据查找表、通过以下来将(a)以大于所述预定频率被使用的干净数据以及(b)脏数据移动到所述多个固态盘内的首先可用的自由块:在所述多个固态盘中的每个固态盘内依次地并且跨所述多个固态盘成条地将移动的数据写入所述首先可用的自由块中,其中所述反向元数据查找表将块映射到被存储在高速缓冲元数据查找表中的、指示所述块中的数据的状态的元数据条目,并且其中脏数据是其副本被存储在所述多个固态盘中而不在所述多个固态盘外部的所述存储器中的数据;以及
擦除由所述移动的数据释放的块并且释放擦除的所述块以用于重用。
13.根据权利要求12所述的方法,还包括:
将所述数据划分成多个部分;以及
分别向所述序列中的所述多个块写入所述多个部分。
14.根据权利要求12所述的方法,还包括响应于可用于在所述多个固态盘中写入的块的数目小于或者等于预定阈值以及响应于在所述序列中的一个或者多个连续块中写入的所述数据被存储在所述多个固态盘外部的所述存储器中:
擦除所述序列中的所述一个或者多个连续块。
15.根据权利要求12所述的方法,还包括响应于在所述序列中的一个或者多个块中写入的所述数据被存储在所述多个固态盘外部的所述存储器中以及响应于在所述序列中的一个或者多个连续块中写入的所述数据以小于或者等于预定频率的频率被使用:
擦除所述序列中的所述一个或者多个连续块。
16.根据权利要求12所述的方法,还包括响应于可用于在所述多个固态盘中写入的块的数目减少至预定阈值以及响应于在所述序列中的一个或者多个块中写入的所述数据未被存储在所述多个固态盘外部的所述存储器中:
选择所述序列中的所述数据和所述数据的副本被写入在其中的两个连续块;
从所述两个连续块分别向所述序列中的两个连续可用块写入所述数据,其中所述两个连续可用块在所述序列中的最后写入的块之后;以及
擦除所述两个连续块。
17.根据权利要求16所述的方法,还包括:
存储与所述数据一起接收的元数据;以及
响应于从所述两个连续块分别向所述序列中的所述两个连续可用块写入所述数据,更新所述元数据。
18.根据权利要求12所述的方法,还包括响应于在所述序列中的一个或者多个块中写入的所述数据以大于或者等于预定频率的频率被使用:
选择所述序列中的一个或者多个连续块;
从所述一个或者多个连续块分别向所述序列中的一个或者多个连续可用块写入所述数据,其中所述一个或者多个连续可用块在所述序列中的最后写入的块之后;以及
擦除所述一个或者多个连续块。
19.根据权利要求18所述的方法,还包括:
存储与所述数据一起接收的元数据;以及
响应于从所述一个或者多个连续块分别向所述序列中的一个或者多个连续可用块写入所述数据,更新所述元数据。
20.根据权利要求12所述的方法,还包括:
去除所述多个固态盘之一;以及
从所述序列排除与去除的所述固态盘关联的块。
21.根据权利要求12所述的方法,还包括:
向所述多个固态盘添加附加固态盘;
将所述附加固态盘分割成多个附加块;以及
在所述序列中包括所述多个附加块。
22.根据权利要求12所述的方法,还包括针对所述多个固态盘中的每个固态盘生成数据结构,所述数据结构包括用于在数据被移动到所述多个固态盘内以回收空间时更新元数据的反向查找表,其中所述反向查找表将容器块编号映射到高速缓冲查找表中的元数据条目,其中容器是所述多个固态盘的组,并且容器块编号标识所述多个固态盘被分割成的、具有所述预定大小的所述多个块,并且其中所述高速缓冲查找表包括将逻辑块编号映射到所述容器块编号的所述元数据条目。
CN201480035733.7A 2013-06-25 2014-06-24 自适应高速缓冲存储器控制器 Active CN105493051B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361839085P 2013-06-25 2013-06-25
US61/839,085 2013-06-25
PCT/US2014/043844 WO2014209984A1 (en) 2013-06-25 2014-06-24 Adaptive cache memory controller

Publications (2)

Publication Number Publication Date
CN105493051A CN105493051A (zh) 2016-04-13
CN105493051B true CN105493051B (zh) 2019-03-08

Family

ID=52111933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480035733.7A Active CN105493051B (zh) 2013-06-25 2014-06-24 自适应高速缓冲存储器控制器

Country Status (3)

Country Link
US (1) US9645920B2 (zh)
CN (1) CN105493051B (zh)
WO (1) WO2014209984A1 (zh)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US9454434B2 (en) * 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10146437B2 (en) 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
US10133488B2 (en) 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US9740410B2 (en) * 2014-03-17 2017-08-22 Primaryio, Inc. Maximize IO throughput in hybrid storage solution
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10474569B2 (en) * 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
WO2016106757A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种存储数据的管理方法、存储管理器及存储***
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9785525B2 (en) 2015-09-24 2017-10-10 Netapp, Inc. High availability failover manager
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US10254998B2 (en) * 2015-11-03 2019-04-09 Samsung Electronics Co., Ltd. Coordinated garbage collection of flash devices in a distributed storage system
US20170123700A1 (en) 2015-11-03 2017-05-04 Samsung Electronics Co., Ltd. Io redirection methods with cost estimation
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10185666B2 (en) * 2015-12-15 2019-01-22 Facebook, Inc. Item-wise simulation in a block cache where data eviction places data into comparable score in comparable section in the block cache
US20170168944A1 (en) * 2015-12-15 2017-06-15 Facebook, Inc. Block cache eviction
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9952767B2 (en) 2016-04-29 2018-04-24 Netapp, Inc. Consistency group management
KR20170130011A (ko) * 2016-05-17 2017-11-28 삼성전자주식회사 캐시 메모리를 포함하는 서버 장치 및 그것의 동작 방법
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10126964B2 (en) * 2017-03-24 2018-11-13 Seagate Technology Llc Hardware based map acceleration using forward and reverse cache tables
CN107301133B (zh) * 2017-07-20 2021-01-12 苏州浪潮智能科技有限公司 一种构建丢失的FTL table的方法及装置
US10776268B2 (en) 2018-04-19 2020-09-15 Western Digital Technologies, Inc. Priority addresses for storage cache management
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) * 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
CN112328510B (zh) * 2020-10-29 2022-11-29 上海兆芯集成电路有限公司 进阶主机控制器及其控制方法
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11941274B2 (en) * 2022-06-15 2024-03-26 Western Digital Technologies, Inc. Data storage device with variable containers for logic blocks
US12008252B2 (en) 2022-06-27 2024-06-11 Western Digital Technologies, Inc. Data storage device with data padding and safe and efficient alignment of data zones with data containers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576293A (zh) * 2009-09-08 2012-07-11 国际商业机器公司 固态存储设备和分层存储***中的数据管理
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、***和方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
JP4555036B2 (ja) * 2004-09-16 2010-09-29 株式会社日立製作所 ストレージ装置及びストレージ装置のデバイス切替制御方法
US7937521B2 (en) * 2008-01-29 2011-05-03 Cadence Design Systems, Inc. Read disturbance management in a non-volatile memory system
US8650362B2 (en) * 2009-04-17 2014-02-11 Violin Memory Inc. System for increasing utilization of storage media
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
WO2012116369A2 (en) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9110813B2 (en) * 2013-02-14 2015-08-18 Avago Technologies General Ip (Singapore) Pte Ltd Cache load balancing in storage controllers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576293A (zh) * 2009-09-08 2012-07-11 国际商业机器公司 固态存储设备和分层存储***中的数据管理
CN102696010A (zh) * 2009-09-08 2012-09-26 弗森-艾奥公司 用于将数据高速缓存在固态存储设备上的装置、***和方法

Also Published As

Publication number Publication date
US9645920B2 (en) 2017-05-09
CN105493051A (zh) 2016-04-13
WO2014209984A1 (en) 2014-12-31
US20140379965A1 (en) 2014-12-25

Similar Documents

Publication Publication Date Title
CN105493051B (zh) 自适应高速缓冲存储器控制器
US11693463B2 (en) Memory system and controller
CN113515471B (zh) 用于管理存储***的方法和装置
CN103559138B (zh) 固态硬盘及其空间管理方法
CN103562842B (zh) 用于存储设备的用低预留空间实现低写入放大的方法
CN105074673B (zh) 用于数据存储***的基于优先级的垃圾收集
CN102779096B (zh) 一种基于页块面三维的闪存地址映射方法
CN105051703B (zh) 用于避免数据存储设备中较低页讹误的方法和设备
CN103577336B (zh) 一种存储数据处理方法及装置
JP5943096B2 (ja) 複合不揮発性記憶装置のためのデータ移行
CN103092766B (zh) 一种用于nand flash的均衡损耗实现方法
US9575844B2 (en) Mass storage device and method of operating the same to back up data stored in volatile memory
CN101840380B (zh) 保护元数据免受意外断电影响的装置和方法
CN104965768B (zh) 用于存储***中的服务感知数据放置的方法和***
CN102576330A (zh) 具有持久化无用单元收集机制的存储***
CN105339910B (zh) 在混合驱动器中的虚拟nand容量扩展
JP2010257008A5 (zh)
CN104731515B (zh) 控制存储设备机群磨损均衡的方法及设备
CN102201259A (zh) 非易失性存储器的平均抹写方法
KR20070068796A (ko) 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
WO2012170751A2 (en) Managing data placement on flash-based storage by use
CN103577338A (zh) 一种回收垃圾数据的方法及存储设备
CN107817945B (zh) 一种混合内存结构的数据读取方法和***
US10296229B2 (en) Storage apparatus
CN102521152A (zh) 一种分级存储方法及***

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200428

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200428

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200428

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.