CN104903872A - 用于自适应持久化的系统、方法和接口 - Google Patents

用于自适应持久化的系统、方法和接口 Download PDF

Info

Publication number
CN104903872A
CN104903872A CN201380053149.XA CN201380053149A CN104903872A CN 104903872 A CN104903872 A CN 104903872A CN 201380053149 A CN201380053149 A CN 201380053149A CN 104903872 A CN104903872 A CN 104903872A
Authority
CN
China
Prior art keywords
cache
data
persistence
virtual machine
request
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.)
Granted
Application number
CN201380053149.XA
Other languages
English (en)
Other versions
CN104903872B (zh
Inventor
V·乔希
Y·卢安
M·F·布朗
D·弗林
B·L·T·郝
J·Z·杨
P·拉达克里希南
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.)
SanDisk Technologies LLC
Original Assignee
INTELLIGENT IP Inc
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 INTELLIGENT IP Inc filed Critical INTELLIGENT IP Inc
Publication of CN104903872A publication Critical patent/CN104903872A/zh
Application granted granted Critical
Publication of CN104903872B publication Critical patent/CN104903872B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0662Virtualisation aspects
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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
    • 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/0877Cache access modes
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一个存储模块可以被配置成用于根据不同持久化级别为多个I/O请求服务。一个I/O请求的持久化级别可以与用于为该I/O请求服务的存储资源、存储资源的配置、以及这些资源的存储模式等相关。在某些实施例中,一个持久化级别可以与一个I/O请求的一种高速缓存模式相关。可以使用一种短暂高速缓存模式为与暂时或可有可无的数据有关的多个I/O请求服务。一种短暂高速缓存模式可以包括将I/O请求数据存储在高速缓存存储中而不是将该数据直写(或回写)至主存储。响应于虚拟机迁移,可以在多个主机之间传输短暂高速缓存数据。

Description

用于自适应持久化的系统、方法和接口
技术领域
本披露涉及用于自适应持久化的系统和方法,并且在若干实施例中涉及用于对以短暂高速缓存模式高速缓存的数据进行管理的系统和方法。
背景技术
输入/输出(I/O)请求可能具有不同的数据持久化需要。例如,某些写入请求可能与需要被保护免受数据丢失或损坏的数据有关。其他写入请求可能与不需要被长期保存和/或预期在重启和/或重新启动时而丢失的数据有关。存储系统可以用同样的方式处理所有请求,这会降低I/O性能。
发明内容
在此披露了一种用于自适应持久化的方法的实施例。所披露的方法可以包括一项或多项机器可执行的操作和/或步骤。所披露的操作和/或步骤可以被体现为存储在一个计算机可读存储介质上的程序代码。相应地,在此披露的方法的实施例可以被体现为包括一个计算机可读存储介质的一个计算机程序产品,该计算机可读存储介质存储可执行用于执行一项或多项方法操作和/或步骤的计算机可用的程序代码。
在某些实施例中,所披露的方法包括:标识多个I/O请求,基于这些I/O请求的一个或多个属性为这些I/O请求选择多个对应的持久化级别,以及根据为这些I/O请求选择的该持久化级别使用一个或多个存储资源来为这些I/O请求服务。标识该I/O请求可以包括监控一个存储堆栈中的多个I/O请求。
该持久化级别可以对应于用于在为具有对应的持久化级别的多个I/O请求服务时使用的一个或多个存储资源、用于为多个I/O请求服务的一个或多个存储资源的一种配置等。这些持久化级别中的一个或多个级别可以被配置成用于指定一种存储模式。一个持久化级别可以指定两个或更多个存储资源上的冗余存储,并且该方法可以进一步包括使用这两个或更多个存储资源为具有那一个持久化级别的多个I/O请求服务。
在某些实施例中,该方法包括基于与一个第一I/O请求相关联的一个文件标识符和与该第一I/O请求相关联的一个应用中的一个或多个为该第一I/O请求选择一个第一持久化级别。这些持久化级别之一可以对应于一种短暂高速缓存模式,并且该方法可以进一步包括将具有那一个持久化级别的多个I/O请求的数据存储在一个高速缓存中而不是将该数据存储在一个主存储资源中。
在此披露了一种方法的实施例,该方法包括:接收源自一个存储客户端的一个输入/输出(I/O)请求,基于该I/O请求的一个或多个特性为该I/O请求确定多个持久化级别其中之一,其中,这些持久化级别中的每个级别指定用于为该I/O请求服务的一个存储资源、该存储资源的一种配置、以及一种存储模式中的一项或多项,和/或根据所选择的持久化级别为该I/O请求服务。这些持久化级别中的一个第一级别可以指定一种短暂高速缓存模式,并且这些持久化级别中的一个第二级别指定一种直写高速缓存模式。这些持久化级别中的两个或更多个级别关于用于为I/O请求服务的多个存储资源、存储配置和/或高速缓存模式而不同。
这些持久化级别中的一个第一级别指定一种短暂高速缓存模式,并且该方法可以进一步包括响应于将该第一持久化级别的多个写入I/O请求的数据写入至一个高速缓存资源而不是将这些写入I/O请求的数据写入至主存储来确认完成了这些写入I/O请求。在某些实施例中,这些持久化级别中的一个第一级别指定一种第一纠错代码编码,并且这些持久化级别中的一个第二级别指定一种第二不同的纠错代码编码。
该方法可以进一步包括基于一个I/O请求的一个源标识符、该I/O请求的一个文件标识符、与该I/O请求相关联的一个应用、以及该I/O请求的一个参数中的一项或多项为该I/O请求确定一个持久化级别。
在此披露了一种设备的实施例,该设备包括:一个持久化级别模块,该持久化级别模块被配置成用于基于多个存储请求的特性为这些存储请求中的每个存储请求选择多个自适应持久化级别之一,其中,为一个存储请求所选择的该自适应持久化级别确定一个存储资源、该存储资源的一种配置、以及用于为该存储请求服务的一种存储模式中的一项或多项;一个接口模块,该接口模块被配置成用于和一个或多个存储资源进行接口连接;以及一个存储请求执行模块,该存储请求执行模块被配置成用于根据通过使用该接口模块而被指派给这些存储请求的这些自适应持久化级别为这些存储请求服务。该持久化级别模块可以被配置成用于基于一个存储请求的一个文件标识符、与该存储请求相关联的一个应用、该存储请求的一个参数、以及一个输入/输出(IO)控制参数中的一项或多项为该存储请求选择一个自适应持久化级别。该存储请求执行模块可以被配置成用于以一种永不写高速缓存模式高速缓存具有一个短暂自适应持久化级别的一个存储请求的数据。这些自适应持久化级别中的一个第一级别可以包括将数据存储在一种第一RAID配置中,并且这些自适应持久化级别中的一个第二级别包括将数据存储在一种第二不同的RAID配置中。
在此披露了一种用于自适应高速缓存持久化的方法的实施例。所披露的方法可以包括一项或多项机器可执行的操作和/或步骤。所披露的操作和/或步骤可以被体现为存储在一个计算机可读存储介质上的程序代码。相应地,在此披露的方法的实施例可以被体现为包括一个计算机可读存储介质的一个计算机程序产品,该计算机可读存储介质存储可执行用于执行一项或多项方法操作和/或步骤的计算机可用的程序代码。
在某些实施例中,所披露的方法包括:标识一个被引导至一个后备存储器的I/O请求;从多种高速缓存模式中为所标识的该I/O请求选择一种短暂高速缓存模式,其中,该短暂高速缓存模式包括将数据存储在一个高速缓存中而不是将该数据存储在该后备存储器中;和/或以该短暂高速缓存模式高速缓存所标识的该I/O请求的数据。该方法可以进一步包括响应于将所标识的该I/O请求的该数据存储在该高速缓存中而不是将该数据存储到该后备存储器来确认完成了所标识的该I/O请求。
可以响应于确定所标识的该I/O请求的该数据不需要在多个重启操作之间被保存来选择该短暂高速缓存模式。该方法可以进一步包括基于所标识的该I/O请求的一个源标识符、所标识的该I/O请求的一个文件标识符、以及与所标识的该I/O请求相关联的一个应用中的一项或多项来从该多种高速缓存模式中选择该短暂高速缓存模式。
在某些实施例中,该方法包括响应于迁移到一个新的虚拟机主机而刷新短暂高速缓存数据,其中,刷新该短暂高速缓存数据包括将以该短暂高速缓存模式高速缓存的数据存储在该后备存储器上。该方法可以进一步包括响应于一个虚拟机从一个第一虚拟机主机迁移到一个第二虚拟机主机而将与以该短暂高速缓存模式高速缓存的数据有关的高速缓存元数据保留在该虚拟机内,和/或用以该短暂高速缓存模式高速缓存的保留在该第一虚拟机主机处的数据填充该第二虚拟机主机处的一个虚拟机高速缓存。
在某些实施例中,所披露的方法可以包括:确定被引导至一个主存储的一个输入/输出(I/O)请求的数据是可有可无的;将该I/O请求的该数据排他地高速缓存在高速缓存存储内;和/或响应于将该I/O请求的该数据高速缓存在该高速缓存存储内而确认完成了该I/O请求。高速缓存该I/O请求的该数据可以包括执行一项或多项不涉及该主存储的快速路径I/O操作。
在某些实施例中,该方法可以进一步包括:监控一个存储堆栈内的多个I/O请求,并且高速缓存该I/O请求的数据可以包括在该存储堆栈外执行一项或多项快速路径I/O操作。
确定该I/O请求与可有可无的数据有关可以包括将持久化级别标准应用于该I/O请求的一个源标识符。该持久化级别标准可以基于文件级知识和应用级知识其中之一。
该I/O请求可以由一个虚拟机生成,并且该方法可以进一步包括响应于该虚拟机被传输至一个远程虚拟机主机而将该虚拟机的排他地存储在该高速缓存存储内的数据推送至该远程虚拟机主机。在某些实施例中,该方法进一步包括响应于来自一个远程虚拟机主机的一个请求而将排他地存储在该高速缓存存储内的数据传输至一个远程虚拟机主机和/或响应于将该虚拟机迁移至一个不同的虚拟机主机而保留与排他地存储在该高速缓存存储内的数据相关联的一个高速缓存标记。
将排他地存储在该高速缓存存储中的该数据传输至该远程虚拟机主机的一个虚拟机高速缓存可以包括基于该虚拟机的一个高速缓存管理系统的一个虚拟机标识符标识该虚拟机的排他地存储在该高速缓存存储中的数据。
在此披露了一种设备的实施例,该设备包括:一个代理,该代理被配置成用于拦截一个被引导至一个后备存储器的I/O请求;一个持久化级别模块,该持久化级别模块被配置成用于基于所拦截的该I/O请求的一个或多个特性为所拦截的该I/O请求标识多种高速缓存模式其中之一;和/或一个高速缓存管理系统,该高速缓存管理系统被配置成用于在一个高速缓存中并且根据所标识的高速缓存模式高速缓存所拦截的该I/O请求的数据,其中,该多种高速缓存模式包括一种短暂高速缓存模式,并且其中,以该短暂高速缓存模式高速缓存数据包括仅将该数据写入到该高速缓存而不是将该数据写入到该后备存储器。该持久化级别模块可以被配置成用于基于所拦截的该I/O请求的一个源标识符、所拦截的该I/O请求的一个文件标识符、以及与所拦截的该I/O请求相关联的一个应用中的一项或多项来为所拦截的该I/O请求标识该高速缓存模式。
在某些实施例中,该高速缓存管理系统被配置成用于响应于将以该短暂高速缓存模式高速缓存的多个I/O请求的数据写入至该高速缓存而确认完成了这些相应的I/O请求,并且用于响应于将指派有一种直写高速缓存模式的多个I/O请求的数据写入至该后备存储器而确认完成了这些相应的I/O请求。
该设备的实施例可以进一步包括:一个高速缓存保留模块,该高速缓存保留模块被配置成用于响应于确定一个虚拟机将会传输至一个远程虚拟机主机而将该虚拟机的以该短暂高速缓存模式被接纳进入该高速缓存内的数据保留在一个第一虚拟机主机处;和/或一个高速缓存传输模块,该高速缓存传输模块被配置成用于将该虚拟机的以该短暂高速缓存模式被接纳进入该高速缓存内的所保留的数据传输至该远程虚拟机主机。一个高速缓存存储模块可以被配置成用于用从该第一虚拟机主机传输的数据填充该远程虚拟机主机处的一个虚拟机高速缓存。在某些实施例中,该高速缓存管理模块可以被配置成用于响应于将该虚拟机传输至一个远程虚拟机主机而将该虚拟机的以该短暂高速缓存模式高速缓存的数据刷新到一个或多个主存储资源。
附图说明
本披露包括并且引用附图,这些附图提供了在此披露的实施例的更具体的描述。然而,本披露不局限于图中所描绘的具体实施例。本披露的教导可以用于和/或适合于其他实施例,和/或在不脱离本披露的范围的情况下,可以对所披露的实施例作出改变。
图1A是一种用于自适应持久化的系统的一个实施例的框图;
图1B是一种用于自适应持久化的系统的另一个实施例的框图;
图1C是一种用于为I/O请求服务的方法的一个实施例的流程图;
图2A是一种虚拟计算环境的一个实施例的框图;
图2B是一种虚拟计算环境的另一个实施例的框图;
图3是一个高速缓存的一个实施例的框图;
图4描绘了一个高速缓存标记数据结构的一个实施例;
图5描绘了高速缓存映射的一个实施例;
图6描绘了一种高速缓存管理系统的一个实施例;
图7A是一种高速缓存管理系统的另一个实施例的框图;
图7B描绘了一种持久化级别策略的一个实施例;
图7C描绘了一种高速缓存管理系统的另一个实施例;
图8A是根据自适应持久化级别高速缓存数据的一个实施例的流程图;
图8B是根据自适应持久化级别高速缓存数据的另一个实施例的流程图;
图9是一种虚拟计算环境的另一个实施例的框图;
图10是一种用于传输高速缓存数据的方法的一个实施例的流程图;
图11是一种用于传输高速缓存数据的方法的另一个实施例的流程图;以及
图12是一种用于传输高速缓存数据的方法的另一个实施例的流程图。
具体实施方式
在此描述的实施例涉及各种计算环境下的数据输入/输出(I/O)请求和操作的管理,包括但不限于虚拟化计算环境、裸金属计算环境等等。因此,尽管具体示例和/或在此披露的具体实施例涉及虚拟化计算环境,但本披露在此方面不受限制。
一个存储模块可以被配置成用于管理一个或多个存储客户端的多个I/O操作,这些客户端可以包括但不限于操作系统、虚拟操作系统、管理程序、文件系统、卷管理器、数据库应用、用户应用等等。该存储模块可以被配置成用于为这些存储客户端的多个I/O请求服务。该存储模块可以被配置成用于根据一个所选择的持久化级别为多个I/O请求服务。如在此使用的,一个“持久化级别(level ofpersistence)”或“持久化级别(persistence level)”指一个I/O请求的一个或多个特性和/或属性。一个操作的持久化级别可以与以下各项有关:用于为该I/O请求服务的存储装置和/或存储介质(例如,易失性存储器或非易失性存储介质)、所选择的存储装置和/或介质的配置(例如,廉价磁盘冗余阵列(RAID)级别、简单磁盘捆绑(JBOD)配置、镜像等等)、用于该I/O请求的存储模式和/或格式(例如,直写高速缓存模式、短暂高速缓存模式、ECC编码等等)等。因此,不同的持久化级别可以包括将数据存储在不同类型的存储装置和/或存储介质上,如易失性存储器、非易失性存储介质(例如,磁性的、光的、磁带、固态等等)等等;将数据存储在不同存储配置中,如不同的RAID级别、镜像配置、奇偶配置等;和/或以一种或多种不同模式存储数据,如不同的ECC编码、加密级别、高速缓存模式、原子性、验证等。
该存储模块可以被配置成用于根据多个I/O请求的属性为这些I/O请求选择一个持久化级别,这些请求可以包括但不限于:一个对所包括的和/或与该I/O请求相关联的一个具体持久化级别的明确请求;一个对具体存储特性、该I/O请求的特性和/或属性、策略、设置文件、测试和体验等等的请求。例如,响应于一个与需要长期可供使用的数据有关的I/O请求,该存储模块可以选择包括将该数据存储在一种RAID和/或镜像配置下的一个非易失性存储介质上的一个持久化级别。所选择的持久化级别可以进一步包括以一种直写高速缓存配置高速缓存该I/O请求的数据,从而使得对该数据的更新被直写到该主存储。在另一个示例中,响应于一个与需要持续有限时间可供使用的数据有关的I/O请求,该存储模块可以选择一个包括以一种“暂时”或“永不写”高速缓存模式高速缓存该I/O请求的数据的持久化级别。如在此使用的,一种短暂高速缓存模式指其中不将所高速缓存的数据直写和/或回写至一个主存储的一种高速缓存配置;短暂数据仅可以存储在该高速缓存中。如此,以一种短暂高速缓存配置高速缓存数据包括将数据存储在该高速缓存中,而不访问主存储(和/或不将数据写和/或拷贝到该主存储器)。除非以一种短暂高速缓存配置高速缓存的数据被过渡到另一个持久化级别,其可以包括以一种不同的高速缓存模式高速缓存该数据,如直写和/或回写高速缓存模式,如果或当该数据从该高速缓存(例如,高速缓存客户端电力循环、重新启动等等)中被逐出时,该数据可能丢失。
图1A是一种用于自适应持久化的系统的一个实施例的框图。可以在一个计算环境110中实现一个模块130,该环境可以包括一种碱金属计算环境或计算装置,其可以包括但不限于一个或多个计算装置、多个计算装置(例如,一个集群、网格或其他配置下的一组计算装置)、一个个人计算机、服务器计算机、刀片计算机、膝上型计算机、笔记本计算机、智能电话等等。计算环境110可以是一种包括一个或多个虚拟机、多个虚拟桌面(例如,在一种虚拟桌面基础设施(VDI)环境中)、一个虚拟计算机等的虚拟化计算环境。
计算环境110可以包括多个处理资源112、多个易失性存储器资源113、多个持久存储资源114和/或一个通信接口115。这些处理资源112可以包括一个或多个通用和/或专用处理元件和/或核心。这些处理资源112可以被配置成用于执行从这些持久存储资源114加载的多个指令。在此披露的模块和/或方法的各部分可以被体现为存储在这些持久存储资源114上的多个机器可读指令。这些资源112、113、114和/或115可以包括多个物理计算组件和/或多个由和/或通过一种虚拟化环境提供的虚拟化计算资源(例如,一个管理程序)。
存储模块130可以包括一个I/O请求接收器模块132、一个持久化级别模块134、以及一个I/O请求执行模块136。存储模块130的各部分可以在计算环境110上或与其结合操作。可替代地或此外,存储模块130的各部分可以与计算环境110分开实现;例如,可以使用一条系统总线连接存储模块130的各部分,如快速外围组件互连(PCI-e)总线、串行高级技术附件(串行ATA)总线、通用串行总线(USB)连接、电气与电子工程师协会(IEEE)1394总线(火线)、外部PCI总线、无限带宽、通信网络105等等。
存储模块130可以通信地耦合至一个或多个存储资源140A-N。这些存储资源140A-N可以包括可通过多个对应的接口机构141访问的多个本地存储资源,这些接口机构可以包括但不限于多个总线接口和/或协议(例如,一条系统总线、一条本地总线、一条I/O总线等等)。这些存储资源140A-N可以进一步包括一个或多个远程的可访问网络的存储资源140C,该一个或多个存储资源可以包括但不限于一个存储区域网络(SAN)资源、网络附加存储(NAS)等等,这些是可通过一个远程I/O接口和/或协议141访问的。
这些存储资源140A-N可以包括各种配置的不同类型的存储装置和/或存储介质。这些存储资源140A-N可以包括但不限于多个易失性存储资源,如易失性存储器(DRAM)、处理器高速缓存等等;多个非易失性存储资源,如磁硬盘驱动器、光存储介质、固态存储介质等等;多个高速缓存资源;等。相应地,这些存储资源140A-N可以包括但不限于闪速存储器、纳米随机存取存储器(纳米RAM或NRAM)、纳米晶体基于导线的存储器、基于氧化硅的亚10纳米进程存储器、石墨烯存储器、硅氧化氮氧化硅(SONOS)、电阻式随机存取存储器(RRAM)、可编程金属化单元(PMC)、导电桥RAM(CBRAM)、磁阻RAM(MRAM)、动态RAM(DRAM)、相变RAM(PRAM)、磁介质(例如,一个或多个硬盘)、光介质等等。
可以用各种存储配置和/或模式配置这些存储资源140A-N,如一个或多个不同的RAID级别;多种镜像配置;多种高速缓存配置和/或模式;多种ECC编码;多种奇偶配置等等。例如,这些存储资源140A-N中的一个或多个可以包括一种RAID或镜像配置下的一组非易失性存储元件(例如,硬盘),而其他存储资源140A-N可以是非冗余的。这些存储资源140A-N可以被配置成用于根据不同的保留策略(例如,高速缓存模式)存储数据。例如,存储资源140A可以被配置成用于为另一个主存储资源140B存储数据。存储模块130可以将这些高速缓存资源配置成在多种具体高速缓存模式和/或配置下操作。例如,存储模块130可以将一个第一I/O请求的数据高速缓存在一种直写配置中(例如,将该数据写到高速缓存存储资源140A和主存储资源140B),并且可以用一种短暂高速缓存模式高速缓存一个第二I/O请求的数据,其中,该数据仅存储在高速缓存存储资源140A中并且当被逐出时(例如,重新启动)丢失。
存储模块130可以被配置成用于为来自一个或多个存储客户端的多个I/O请求116服务。可以通过存储模块130的一个或多个接口131在I/O请求接收器模块132接收I/O请求116,这些接口可以包括但不限于一个或多个驱动器、库、模块、块装置接口、接口扩展(例如,输入/输出控制(IOCTL)接口)、应用编程接口(API)、应用二进制接口(ABI)、对象类别、远程接口(例如,远程程序调用、简单对象访问协议等等)等等。
存储模块130可以进一步包括一个被配置成用于为I/O请求116选择一个持久化级别的持久化级别模块134。如以上所披露的,确定该持久化级别可以包括但不限于选择一个或多个存储资源140A-N来为I/O请求116服务、选择一个或多个所选择的存储资源140A-N的一种存储配置(例如,RAID级别、镜像等等)、和/或为I/O请求116选择一种存储模式(例如,高速缓存模式、ECC编码等等)。
持久化级别模块134可以基于一个持久化级别策略135为多个I/O请求116确定该持久化级别。持久化级别策略135可以包括被配置成用于基于以下各项给多个对应的I/O请求116指派多个持久化级别的持久化级别标准:这些I/O请求116的特性和/或属性,这些特性和/或属性可以包括但不限于文件属性和/或特性(例如,文件级知识),如与I/O请求116相对应的文件名、路径、卷、和/或其他文件标识符;I/O请求116的应用和/或存储客户端的属性和/或特性(例如,应用级知识);从I/O请求116得出的推论;I/O请求116的一个或多个参数;与I/O请求116相关联的参数(例如,IOCTL信息);与I/O请求116有关的设置文件元数据;偏好和/或配置;测试和体验等。例如,在某些实施例中,接口131A和/或131B中的一个或多个接口可以包括用于为多个I/O请求116指定持久化级别特性的多个机构。例如,I/O请求116可以请求在一种冗余存储配置下存储(例如,一个具体的RAID级别和/或镜像配置)。I/O请求116可以进一步为I/O请求116指定一种高速缓存模式(例如,指定一种直写高速缓存模式)。与暂时数据有关的多个I/O请求116可以指定一个不同的持久化级别(或者不同的持久化级别特性)。例如,与暂时数据有关的一个I/O请求116可以指示不需要冗余和/或镜像并且其可以允许在一种短暂高速缓存配置下高速缓存(在此进一步详细披露的)。可替代地或此外,持久化级别模块134可以基于与和I/O请求116有关的其他非明确信息有关的持久化级别标准确定一个持久化级别。例如,持久化级别标准可以标识不需要在多次重新启动之间被保留的多个暂时文件(例如,通过使用文件选择标准,如在此所描述的)。持久化级别模块134将与这种暂时文件有关的多个I/O请求116指派给一个适当的持久化级别(例如,将这些I/O请求116的数据高速缓存在一个短暂高速缓存中)。
存储模块130可以进一步包括一个被配置成用于为多个I/O请求116服务的I/O请求执行模块136。I/O请求执行模块136被配置成用于根据如持久化级别模块134所确定的多个I/O请求116的多个对应的持久化级别在一种或多种存储配置和/或模式下将这些I/O请求116的数据存储一个或多个存储资源140A-N上。相应地,I/O请求执行模块136可以被配置成用于根据一种或多种不同的存储配置和/或以一种或多种不同的存储模式(例如,直写高速缓存、回写高速缓存、短暂高速缓存等等)将数据存储在一个或多个不同的存储资源140A-N上。
图1B描绘了一种用于自适应持久化的系统的另一个实施例。图1B实施例描绘了在计算环境110内操作的存储模块130。如以上所披露的,存储模块130可以被配置成用于通过I/O请求116接收器模块132接收多个I/O请求116。这些I/O请求116可以由多个存储客户端106A-N发出,这些存储客户端包括但不限于多个操作系统106A、多个文件系统106B、多个数据库106C、多个用户应用106D等。这些存储客户端106A-N可以在计算环境110内操作和/或可以包括和/或在其他远程计算环境111(例如,远程存储客户端106E)内操作。
在某些实施例中,这些存储客户端106A-N中的一个或多个被配置成用于通过一个或多个接口131A直接向存储模块130发出多个I/O请求116。可替代地或此外,存储模块130可以被配置成用于接收和/或监控计算环境110的一个I/O堆栈117内的多个I/O请求116。I/O堆栈117可以包括一个操作系统106A(或虚拟操作系统106A)的一个存储堆栈或其他I/O子系统。相应地,在某些实施例中,I/O请求116接收器模块132可以包括一个或多个被配置成用于监控I/O堆栈117中的多个I/O请求116的代理133。代理133包括但不限于多个I/O驱动器、多个I/O过滤器驱动器、多个文件过滤器驱动器、多个卷过滤器驱动器、多个盘过滤器驱动器、多个SCSI驱动器和/或过滤器、多个虚拟逻辑编号(VLUN)驱动器等等。
存储模块130可以进一步包括一个或多个被配置成用于与一个或多个对应的存储资源140A-N进行接口连接和/或在其上执行存储操作的I/O接口118A-N。这些I/O接口118A-N中的每一个可以被配置成用于通过使用一个具体接口机构141A-N来与一个或多个存储接口140A-N进行接口连接,这些接口机构可以包括但不限于多个存储资源接口(例如,多个块装置接口、多个存储层、多个API、多个协议等等)、多个总线协议、多个通信接口协议、多个网络协议和/或接口、多个虚拟化协议和/或接口等等。例如,一个I/O接口118B可以被配置成用于通过一个虚拟I/O接口141B与一个虚拟化存储资源140B进行接口连接,并且一个I/O接口118C可以被配置成用于通过一个网络105(和/或通信接口115)访问一个远程存储资源140C。
这些存储资源140A-N中的一个或多个可以包括一个非易失性存储介质,如一个固态存储介质。例如,I/O接口118A可以通信地耦合至一个固态存储资源140A。因此,在某些实施例中,I/O接口118A可以包括和/或通信地耦合至一个或多个如2007年12月6日提交的标题为“用于使用数据管线管理数据的设备、系统和方法(Apparatus,System,and Method for Managing Data Using a Data Pipeline)”并且2008年6月12日被公开为美国专利申请公开号2008/0141043的美国专利申请序列号11/952,091中所描述的固态存储控制器,该申请通过引用结合于此。
存储模块130可以包括一个被配置成用于维护多个逻辑标识符与多个存储资源之间的多个映射和/或多个关联的转换模块137。如在此使用的,一个逻辑标识符指用于引用一个I/O资源(例如,存储在这些非易失性存储资源140上的数据)的任何标识符,包括但不限于一个逻辑块地址(LBA)、一个柱面/磁头/扇区(CHS)地址、一个文件名、一个对象标识符、一个索引节点、一个通用唯一标识符(UUID)、一个全局唯一标识符(GUID)、一个散列码、一个签名、一个索引条目、一个范围、一个程度等等。这些映射可以是“任意到任意(any-to-any)”,从而使得任意逻辑标识符可以与任意物理存储位置相关联(并且反之亦然)。
转换模块137可以被配置成用于维护与这些I/O请求116和/或存储资源140A-N有关的I/O元数据138。I/O元数据138可以包括但不限于一个前向索引(例如,多个逻辑标识符和多个存储资源140A-N之间的多个映射和/或多个关联的一个索引)、多个高速缓存标记、有效性元数据、原子性和/或事务性元数据、持久化级别元数据等。例如,持久化级别元数据可以指示一个具体逻辑标识符的持久化级别,该持久化级别可以用于为与该逻辑标识符有关的多个I/O请求116服务。一个I/O请求116的持久化级别元数据可以标识包括与I/O请求116有关的数据的存储资源140A-N、这些存储资源140A-N的存储配置、与该数据的存储模式有关的信息等等。I/O元数据138可以包括一个或多个数据结构,该一个或多个数据结构可以包括但不限于一个树、一个B树、一个范围编码B树、一个基数树、一个映射、一个列表、一个内容可寻址的映射(CAM)、一个表格、一个散列表、一个存储器布局(例如,连续存储器布局或其他合适的布局)、一个数据结构的组合等等。I/O元数据138可以被维护在易失性存储器资源113内。I/O元数据138的各部分可以被保存到一个或多个非易失性和/或非瞬态存储资源,如持久化存储资源114和/或这些存储资源140A-N中的一个或多个。
在某些实施例中,存储模块130可以对转换模块137的任意的任意到任意映射进行调节以便以一种日志格式存储数据,从而使得在这些存储资源140A-N中的一个或多个上“不在原地(out-of-place)”更新和/或修改数据。如在此使用的,“不在原地”写入数据指修改和/或将数据盖写至不同的介质存储位置而不是“在原地(in-place)”盖写数据(例如,盖写数据的原始物理位置)。以一种日志格式存储数据可能引起过时的和/或无效数据留在这些非易失性存储资源140上。例如,不在原地盖写逻辑标识符“A”的数据可能引起将数据写到新的物理存储位置并且更新I/O元数据138以使A与新的物理存储位置相关联(例如,在一个前向索引中)。与A相关联的原始物理存储位置没有被盖写并且包括无效、过时的数据。类似地,当删除或裁剪一个逻辑标识符“X”的数据时,可以不立即擦除指派给X的物理存储位置,而是其可以作为无效数据保留在这些非易失性存储资源140上。
存储模块130可以进一步包括一个被配置成用于以一种日志格式(例如,一个“事件日志”)将数据存储在这些存储资源140A-N中的一个或多个上的日志存储模块139。如在此使用的,一种日志格式指一种定义和/或保存在这些存储资源140A-N上执行的一个有序存储操作序列的数据存储格式。相应地,一种日志格式可以定义在这些存储资源140A-N上执行的多个存储操作的一种“事件日志”。在某些实施例中,日志存储模块139被配置成用于从一个追加点(append point)开始顺序地存储数据。日志存储模块139可以被进一步配置成用于使数据(和/或这些非易失性存储资源140上的多个物理存储位置)与多个对应的序列指示符相关联。这些序列指示符可以应用于多个单独的数据段、多个包、和/或这些存储资源140A-N上的多个物理存储位置和/或可以应用于多组数据和/或物理存储位置(例如,擦除块)。在某些实施例中,当在一个疏导(grooming)操作中收回(例如,擦除)这些物理存储位置和/或当这些存储位置第一次用于存储数据时,多个序列指示符可以应用于这些存储位置。
在某些实施例中,日志存储模块139可以被配置成用于根据一个“仅追加”范例存储数据。存储模块130可以将一个当前的追加点维护在这些存储资源140A-N中的一个或多个的一个物理地址空间内。如在此使用的,一个“追加点”指对一个具体物理存储位置(例如,扇区、页、存储分区、偏移等等)的指针或引用。日志存储模块139可以被配置成用于从该追加点开始顺序地追加数据。当数据存储在该追加点时,该追加点移动至这些存储资源140A-N的下一个可供使用的物理存储位置。因此,可以基于与存储资源140A-N上的数据和/或该数据的顺序相关联的序列指示符来确定存储在存储资源140A-N上的数据的日志顺序。日志存储模块139可以被配置成用于通过遍历存储资源140A-N的物理地址空间(例如,在一个反向索引中,如下所述)以便标识下一个可供使用的物理存储位置。
存储模块130可以包括一个被配置成用于“疏导”一个非易失性存储资源(非易失性存储介质)的疏导器(groomer),该疏导器可以包括收回包括无效、过时、或“修剪后的”数据的物理存储位置,如上所述。如在此使用的,“疏导”一个非易失性存储资源(例如,一个固态存储介质)指可以包括但不限于以下各项的多项操作:耗损均衡、移除无效和/或过时数据、移除已删除的(例如,经修剪的)数据、刷新和/或重新定位有效数据、收回多个物理存储资源(例如,多个擦除块)、标识用于收回的多个物理存储资源等。该疏导器可以自主地操作,并且在该背景下,不为其他I/O请求116服务。相应地,当处理其他I/O请求116时,可以推迟多个疏导操作。可替代地,疏导可以在具有其他I/O请求116前景中操作。收回一个物理存储位置可以包括从该物理存储位置擦除无效数据,从而使得该物理存储位置可以重复用于存储有效数据。例如,收回一个存储分区(例如,一个擦除块或逻辑擦除块)可以包括将来自该存储分区有效数据重新定位、擦除该存储分区、以及初始化该存储分区用于多个存储操作(例如,用一个序列指示符标记该存储分区)。该疏导器可以对该非易失性存储介质的损耗进行均衡,从而使得数据有系统地遍布不同的物理存储位置,这可以提高性能和数据可靠性,并且避免多个具体物理存储位置的过度使用和/或使用不充分。2011年12月6日发布的标题为“用于达到读取计数极限后恢复存储空间的设备、系统和方法(Apparatus,System,andMethod for Storage Space Recovery After Reaching a Read Count Limit)”的美国专利号8,074,011中披露了用于疏导非易失性存储介质的系统和方法的实施例。
在某些实施例中,存储模块130可以被配置成用于管理多个不对称“一次写入”非易失性存储资源140,如固态存储介质。如在此使用的,“一次写入”指一种每次新数据被写入或在其上被编程时被重新初始化(例如,被擦除)的存储介质。如在此使用的,“不对称”指存储介质针对不同类型的存储操作具有不同的时延和/或执行时间。例如,多个不对称固态非易失性存储资源140上的多个读取操作可以比多个写入/程序操作快得多,并且多个写入/程序操作可以比多个擦除操作快得多。固态非易失性存储资源140可以被分成可以作为一个组被擦除的多个存储分区(例如,多个擦除块)以便尤其是解释这些不对称属性。如此,“在原地(in-place)”修改单个数据段会需要擦除整个擦除块并且在该擦除块上重写修改后的数据和原始未改变的数据(如果有的话)。这会引起无效率的“写入放大(writeamplification)”,这会引起过度损耗。如上所述不在原地写入数据会避免这些问题,因为存储模块130可以推迟擦除过时数据(例如,在多个背景疏导操作中可以收回包括过时数据的物理存储位置)。
2011年1月6日提交的标题为“用于虚拟存储层的设备、系统和方法(Apparatus,System,and Method for a Virtual Storage Layer)”并且在2012年1月12日被公开为美国专利申请公开号20120011340的美国专利申请序列号12/986,117以及2012年3月19日提交的标题为“用于上下文存储的逻辑接口(Logical Interface forContextual Storage)”的美国专利申请序列号13/424,333中披露了用于管理I/O元数据138的系统、方法和接口的进一步实施例,包括多个逻辑标识符和多个存储资源和/或日志存储之间的多个映射和/或多个关联,这些申请中的每一个通过引用结合于此。
图1C是一种用于根据不同的持久化级别为I/O请求服务的方法101的一个实施例的流程图。方法101和在此披露的其他方法和/或过程可以至少部分地被体现为存储在一个非瞬态存储(持久存储资源114)上的一个或多个机器可读指令。这些指令可以被配置成用于引起一个计算环境110内的一个或多个模块执行该方法和/或过程的一个或多个步骤。这些指令中的一个或多个可以被配置成用于由一个或多个处理资源112执行。此外,在此披露的方法和/或过程的具体步骤可以与多个具体机器组件(如多个通信接口115、多个存储资源140A-N、多个处理资源112等等)关联。
步骤102可以包括标识和/或访问一个I/O请求116。步骤102可以包括从一个存储客户端106A-N接收I/O请求116(例如,通过一个接口131A)、监控和/或拦截一个I/O请求116(例如,在一个I/O堆栈117内)等等。
步骤103可以包括为I/O请求116确定一个持久化级别。步骤103可以包括持久化级别模块134基于一个持久化级别策略135为I/O请求116确定一个持久化级别,该持久化级别策略可以包括但不限于持久化级别标准、I/O请求116的属性、从I/O请求116得出的推论、设置文件元数据等。
步骤104可以包括根据在步骤103选择的和/或指派给I/O请求116的持久化级别为I/O请求116服务。为I/O请求116服务可以包括一个在存储资源140A-N上执行一项或多项存储操作的I/O请求执行模块136(通过使用I/O接口118A-N。I/O请求116的持久化级别可以确定有待用于为I/O请求116服务的存储资源140A-N、该一个或多个存储资源140A-N的配置(例如,RAID级别、镜像等)、和/或存储操作的模式(例如,直写高速缓存、短暂高速缓存、ECC编码等)。
在此披露的存储模块130可以被调节和/或适配成用于提供多种高速缓存服务。相应地,在某些实施例中,存储模块130可以包括一个高速缓存管理系统(CMS)。CMS可以包括在此披露的存储模块130中的模块中的一个或多个。然而,为了清晰性,当结合CMS描述时,可以使用高速缓存特定项来引用这些模块。
图2A是一种虚拟化计算环境中的一个CMS 220的一个实施例的框图。CMS220可以被配置成用于在一个虚拟机208A-N内操作,该虚拟机可以在一个虚拟化内核210内和/或与其结合操作。虚拟化内核210可以被配置成用于管理在主机202和其他组件上的操作的虚拟机208A-N的操作以及主机202提供的服务。例如,虚拟化内核210可以被配置成用于处理与一个主存储资源240B和/或其他存储资源240C-N相关联的各种I/O操作。跨多个主机的多个虚拟机主208A-N之间可以共享主存储资源240B。主存储资源240B可以包括多个磁盘驱动器或其他存储装置,如一个或多个存储阵列(例如,RAID、JBOD等等)。
CMS 220可以为一个或多个存储客户端106的多个I/O请求116服务。这些存储客户端106对虚拟机208A而言是本地的,可以被托管在主机202上部署的其他虚拟机208B-N内,和/或可以在其他计算装置上操作(例如,在其他主机和/或远程计算环境上,如图1B的远程存储客户端106E)。CMS 220可以包括一个被配置成用于接收、监控和/或拦截多个I/O请求116的I/O请求执行模块132。CMS 220可以被配置成用于根据一个具体持久化级别为多个I/O请求116服务。相应地,CMS 220可以包括一个被配置成用于为这些I/O请求116确定一个持久化级别的持久化级别模块134,如在此描述的,该持久化级别模块可以包括为这些I/O请求116选择一种高速缓存模式(例如,直写、短暂、或其他高速缓存配置或模式)。
I/O接口218可以被配置成用于访问一个或多个虚拟化存储资源,主机202上的其他虚拟机208A-N之间可以共享这些虚拟化存储资源。如在此使用的,一个“虚拟化存储资源”指可通过一个虚拟化内核210访问的一个存储资源,如一个管理程序、存储层、虚拟化层等等。多个虚拟化存储资源可以包括但不限于多个VLUN存储资源、多个虚拟磁盘(例如,多个虚拟机磁盘格式(VMDK)磁盘)、存储模块130、多个虚拟高速缓存资源等等。
CMS 220可以被配置成用于通过使用一个或多个虚拟化存储资源240A-N(包括一个虚拟机高速缓存213)来为多个I/O请求116服务。虚拟机高速缓存213可以包括一个高速缓存供应器模块214和高速缓存存储(高速缓存216)。高速缓存216可以包括但不限于一个或多个存储器装置,如多个非易失性存储装置和/或介质、固态存储、随机存取存储器(RAM)等等。如在此使用的,一个“固态存储器装置”指一个可以被重复擦除和重新编程的非易失性持久存储器。相应地,一个固态存储器装置可以包括一个固态存储装置和/或固态存储驱动器(SSD)(例如,一个闪速存储装置)。高速缓存供应器模块214可以被配置成用于向这些虚拟机208A-N的CMS 220供应高速缓存216的资源,这可以包括动态地供应和/或共享高速缓存存储和/或I/O操作(IOPS)。高速缓存供应器模块214可以被进一步配置成用于保护和/或保全存储在高速缓存216内的数据,以防止不止一个虚拟机208A-N访问同一高速缓存数据(例如,防止在写入危险前读取)。例如,在某些实施例中,高速缓存供应器模块214被配置成用于使所高速缓存的数据与一个虚拟机标识符相关联,该标识符可以用于控制访问该高速缓存中的数据。
图3展示了一个虚拟机高速缓存213的高速缓存存储216的一个实施例。高速缓存存储216可以表示虚拟机高速缓存213的这些高速缓存存储资源216。高速缓存存储216可以包括一个固态存储介质,包括多个高速缓存页304。高速缓存216可以被分解为多个块(chunk)302。如在此使用的,“块”指任意大小的高速缓存存储容量部分。高速缓存216可以被划分成任何数量的具有任何大小的块302。在一个具体实施例中,每个块302可以包括256MB(兆字节)的存储容量。在本实施例中,块302的数量可以由高速缓存216的可供使用的存储容量决定。例如,被划分成多个256MB的块302的1TB(万亿字节)高速缓存216包含4,192个块。如图3中所示,每个块302被划分成多个高速缓存页304。
可以在主机上的多个虚拟机之间共享高速缓存216。基于尤其是这些虚拟机中的一个具体虚拟机的高速缓存需要和/或其他虚拟机的高速缓存需要,高速缓存块302可以被指派或分配给该虚拟机。指派给一个具体虚拟机的块302的数量可以根据虚拟机的高速缓存需要的变化而随时间变化。指派给一个具体虚拟机的块302的数量可以决定那个虚拟机的高速缓存容量。例如,如果两个256MB的块被指派给一个特定虚拟机,则那个虚拟机的高速缓存容量为512MB。块302到具体虚拟机的指派由该高速缓存供应器解决,如上述高速缓存供应器模块214。
CMS 220可以包括一个或多个高速缓存标记221用于将一个虚拟机208A-N的多个标识符(多个I/O地址)映射和/或关联于高速缓存216中的多个资源(例如,多个具体高速缓存页304)。因此,这些高速缓存标记221可以用于执行这些高速缓存标记221中的多个标识符(例如,一个主存储资源240B上的多个块的地址)与一个高速缓存地址之间的转换。在某些实施例中,高速缓存标记221可以被线性地组织在RAM或其他存储器中。这允许高速缓存标记221的地址用于定位一个物理高速缓存页304,因为算法假设每个高速缓存标记221与一个物理高速缓存页304具有1:1的线性对应关系。可替代地或此外,多个高速缓存标记221可以被组织成另一个数据结构,如一个散列表、树等等。
返回参照图2A,与一个具体虚拟机208A-N相关联的多个高速缓存标记221可以存储在那个虚拟机208A-N内。这些高速缓存标记221包含将多个存储I/O地址关联于该高速缓存中的多个特定高速缓存页304的元数据。在一个具体实施例中,每个高速存缓标记221与该高速缓存中的一个具体页304相关联。虚拟机高速缓存213可以高速缓存一个或多个存储资源240B-N(如主存储资源240B(和/或其他存储资源240C-N))的数据。相应地,这些存储资源240B-N中的一个或多个可以是虚拟机高速缓存213中所高速缓存的数据的主存储和/或后备存储器。在某些实施例中,这些高速缓存标记221的I/O地址可以是这些存储资源240B-N中的一个或多个的存储地址和/或引用。
图4展示了一个高速缓存标记221数据结构421的一个实施例。高速缓存标记221中的若干字段的大小可以是动态的,并且如此,高速缓存标记数据结构421的大小可以是动态的。每个高速缓存标记221提供一个标识符(例如,一个存储I/O地址)和一个高速缓存资源(例如,一个高速缓存页304)之间的转换。高速缓存标记数据结构421包括大小固定并且用于链接一个散列表数据结构中的多个高速缓存标记221的下一个高速缓存标记索引。在操作时,该下一个高速缓存标记索引可以被转换成一个存储器地址以找到链接到当前高速缓存标记的下一个高速缓存标记。一个状态字段是大小固定的并且标识高速缓存标记221的一种当前状态。访问元数据字段可以包括一个指示高速缓存标记221的访问和/或使用特性的动态字段。访问元数据字段可以包括指示与高速缓存标记221相关联的时钟指针的数量(例如,时间间隔的数量)的时钟指针元数据。校检和字段可以包括一个大小基于高速缓存页304的大小和用户所期望的完整性水平而变化的动态字段。例如,一个用户可以通过将存储器的更多字节分配给校验和来获得更高水平的完整性用于校验和。
高速缓存标记数据结构421可以进一步包括一个有效单元映射字段,该字段是一个标识一个页中的哪些单元被高速缓存的动态字段。一个高速缓存页304内的一个单元的一个示例是一个扇区。例如,一个具体高速缓存页304可以具有一个或多个丢失的或不再有效的扇区。有效单元映射标识与一个具体高速缓存页304相关联的所有单元的状态以便防止访问多个单元中的无效的数据。
高速缓存标记数据结构421可以进一步包括一个持久化元数据字段。该持久化元数据字段可以包括与高速缓存标记221的持久化级别有关的元数据,该元数据可以包括但不限于高速缓存标记221的高速缓存模式(例如,直写、回写、短暂、或其他高速缓存配置或模式)、与高速缓存标记221相关联的主存储资源240B-N等。在高速缓存标记221被接纳进入该高速缓存时,该持久化元数据可以由持久化级别模块134确定(通过使用持久化级别策略135)。CMS 220(和/或持久化级别模块134)可以响应于高速缓存标记221的持久化级别的变化而修改持久化元数据。例如,在某些实施例中,与短暂高速缓存数据相关联的一个高速缓存标记可以被刷新到一个主存储资源240B-N,这可以包括将高速缓存标记221的一种高速缓存模式从短暂修改成另一种高速缓存模式。高速缓存标记221可以还原到一种短暂高速缓存模式(并且相应更新持久化元数据)。2011年2月15日提交的标题为“用于管理I/O操作的系统和方法(Systems and Methods for Managing I/OOperations)”并且2012年8月16日被公开为美国专利申请公开号2012/0210043的美国专利申请序列号13/028,149中披露了高速缓存标记数据结构、时钟指针元数据、和/或高速缓存标记状态转换的进一步实施例,该申请通过引用结合于此。
如上所述,CMS 220可以被配置成用于从一个或多个存储客户端106接收多个I/O请求116,其可以包括通过监控和/或拦截一个存储堆栈117内的多个I/O请求116的一个或多个接口131A接收这些I/O请求116(例如,通过使用一个代理133,如一个I/O过滤器、一个驱动器等等)。这些I/O请求116可以被路由到CMS220,该CMS可以使用虚拟机高速缓存213为这些I/O请求服务。
响应于一个读取数据的请求(例如,一个读取I/O请求116),CMS 220可以确定与I/O请求116有关的数据在虚拟机高速缓存213中是否是可供使用的,这可以包括确定CMS 220是否包括与I/O请求116相对应的一个高速缓存标记221(例如,CMS 220是否包括具有与该读取请求的一个标识符相对应的一个标识符的一个高速缓存标记221)。如果找到用于I/O请求116的一个高速缓存标记221,CMS220可以使用与高速缓存标记221相关联的高速缓存地址从虚拟机高速缓存213请求该数据。如果没有找到高速缓存标记221,CMS 220可以确定是否准许该数据进入虚拟机高速缓存213(基于各种高速缓存接纳策略和/或其他因素,如高速缓存标记221的可用性)。CMS 220可以通过分配与该请求相对应的一个高速缓存标记221、访问主存储资源240B中的数据、并且指令虚拟机高速缓存213将该数据存储在高速缓存216中来准许该数据进入虚拟机高速缓存213。接纳该数据进一步包括使用持久化级别模块134和/或持久化级别策略135确定I/O请求116的一个持久化级别。该持久化级别可以为I/O请求116的数据指定一种高速缓存模式。例如,I/O请求116的持久化级别可以指定有待以一种短暂高速缓存模式存储该数据,从而使得该数据被写入到虚拟机高速缓存213而不是直写到主存储资源240B。
响应于一个写入数据的请求(例如,一个写入I/O请求116),如上所述,CMS220可以确定与该请求有关的数据是否已经被接纳进入虚拟机高速缓存213(例如,通过确定是否存在与I/O请求116相对应的一个高速缓存标记221)。如果针对I/O请求116不存在高速缓存标记221,CMS 220可以确定是否准许该数据进入虚拟机高速缓存213,确定I/O请求116的一个持久化级别等,如上所述。如果一个高速缓存标记221存在,则CMS 220可以被配置成用于根据如持久化级别模块134指示的一个具体持久化级别为I/O请求116服务,该持久化级别模块可以尤其是确定该数据的一种高速缓存模式(例如,直写高速缓存、短暂高速缓存等等)。根据一个短暂持久化级别为一个写入I/O请求116服务可以包括将I/O请求116的数据存储在虚拟机高速缓存213中而不是将该数据存储在一个主存储资源240B中。根据一个直写持久化级别为一个写入I/O请求服务可以包括将该I/O请求的数据存储在虚拟机高速缓存213和一个或多个主存储源240B两者中。I/O请求116可以直到该请求的数据被存储在该一个或多个主存储源240B中才完成。
在某些实施例中,这些虚拟机208A-N可以被配置成用于从主机202被传输和/或重新定位到其他主机计算装置。虚拟化内核210(或其他虚拟化层)可以被配置成用于防止引用主机202的本地资源(如本地磁盘存储等等)的虚拟机被传输。相应地,多个虚拟机208A-N可以被配置成用于使用不阻止虚拟机迁移的一个访问机构访问虚拟机高速缓存213。在某些实施例中,CMS 220被配置成用于通过仿真共享存储和/或一个“虚拟磁盘”或VLUN访问虚拟机高速缓存213,虚拟化内核210将该仿真共享存储和/或“虚拟磁盘”或VLUN看作一个共享装置(和/或不阻止虚拟机迁移的装置)。虚拟磁盘可以被提供作为主机202和/或虚拟内核210支持的一个VMDK。在某些实施例中,I/O接口218可以包括一个I/O过滤器219,该过滤器被配置成用于监控这些虚拟机208A-N的多个I/O操作、拦截被引导至该虚拟磁盘的多个I/O请求116和/或操作、以及通过一个接口241将这些I/O请求116转发(和其他相关数据)至虚拟机高速缓存213。I/O过滤器219可以在虚拟机208A-N I/O堆栈117的一个SCSI和/或vSCSI“之上”操作。I/O过滤器219可以提供用于在这些虚拟机208A-N的CMS 220与虚拟机高速缓存213之间传递多个I/O请求116(和多个响应)。I/O过滤器219可以进一步提供用于传达其他数据,如配置、命令、和/或控制数据。用于在CMS 220和虚拟机高速缓存213之间进行通信的虚拟磁盘可以非常小(例如,几兆字节),因为该虚拟磁盘不用于实际存储,而是作为CMS 220和虚拟机高速缓存213之间的一个通信接口。
这些虚拟机208A-N可以被配置成用于以其他方式模仿共享存储。例如,在某些实施例中,这些虚拟机208A-N可以被配置成用于跨多个主机202复制一个或多个“共享”VLUN磁盘,从而使得对于这些主机而言,这些VLUN磁盘好像是共享装置。例如,这些VLUN磁盘可以共享同一序号或其他标识符。因此,主机202和/或虚拟化内核210可以将这些VLUN磁盘看作多个共享装置,并且允许将多个虚拟机208A-N传输至主机202和从其传输。上述VDMK方法较本方法可以提供多个优点,然而,由于需要创造更少量的“共享”磁盘,这可以防止耗尽有限的存储引用(例如,一个虚拟机可以被限制于引用256个存储装置)。
高速缓存供应器模块214可以被配置成用于在这些虚拟机208A-N之间供应多个高速缓存资源。与一个具体虚拟机(例如,虚拟机208A)相关联的分配信息可以被传达至相应的CMS 220,该CMS可以根据分配给CMS 220的这些高速缓存资源来维护高速缓存标记221元数据。CMS 220可以被配置成用于从高速缓存供应器模块214请求多个高速缓存资源。可以响应于一个CMS 220初始化操作(例如,高速缓存“预热(warm up)”)来传送该请求。如在此使用的,高速缓存初始化指一项或多项用于为操作而准备CMS 220的操作。CMS 220可以被配置成用于响应于虚拟机208A-N被通电、重启、传输至一个新的主机(例如,在一个VMotionTM操作中)等等而执行一项或多项初始化操作。
CMS 220可以被配置成用于根据高速缓存供应器模块214已经将其分配给虚拟机208A-N的高速缓存存储来维护高速缓存元数据,包括多个高速缓存标记221。如在此使用的,一个“高速缓存标记”指一个标识符与一个高速缓存资源(例如,高速缓存216中的一个页或其他高速缓存存储位置)之间的一种关联。相应地,这些高速缓存标记221可以表示高速缓存供应器模块214已经将其分配给虚拟机208A-N的多个高速缓存资源。如在此使用的,一个高速缓存标记221的一个“标识符”指由虚拟机208A-N用于引用已经(或将要)存储在高速缓存216中的数据的一个标识符。一个高速缓存标记标识符可以包括但不限于一个逻辑标识符、一个地址(例如,一个存储器地址、物理存储地址、或逻辑块地址,如主存储系统212上的一个地址)、一个名称(例如,文件名、目录名、卷名等等)、一个引用等等。
这些高速缓存标记221可以被存储在这些对应的虚拟机208A-N内(例如,在由主机202分配给虚拟机208A-N的易失性存储器中)。在某些实施例中,这些高速缓存标记221可以表示虚拟机208A-N的高速缓存数据的一个“工作集”。如在此使用的,高速缓存标记221的一个“工作集”指CMS 220通过尤其应用一个或多个高速缓存策略(如高速缓存接纳策略、高速缓存保留和/或逐出策略(例如,高速缓存老化元数据、高速缓存窃用元数据、最近最少使用(LRU)、“热度”和/或“冷度”等)、高速缓存设置文件信息、文件和/或应用级知识等等)而接纳和/或保留在高速缓存216中的一个高速缓存标记集合。相应地,高速缓存标记221的工作集可以表示在一组具体操作条件下为虚拟机208A-N提供最优I/O性能的高速缓存数据集。
在某些实施例中,CMS 220可以被配置成用于保存和/或维护这些高速缓存标记221,这可以包括将这些高速缓存标记221保存在一个非易失性存储介质中,如主存储系统212、持久化高速缓存存储装置(例如,高速缓存216)等等。如在此使用的,一个“快照”指在一个具体时间的高速缓存的工作集。一个快照可以包括所有高速缓存标记221或其一个子集(和/或相关高速缓存元数据)。在某些实施例中,一个快照可以进一步包括将数据“钉住(pinning)”在高速缓存装置216中,这会引起一个或多个高速缓存标记221所引用的数据保留在高速缓存216中。可替代地,该快照可以仅引用这些数据标识符,并且可以允许将底层数据从高速缓存216中移除(例如,逐出)。CMS 220可以被配置成用于从持久化存储加载一个快照,并且使用该快照填充这些高速缓存标记221。一个快照可以被加载作为一个初始化操作的一部分(例如,高速缓存预热)和/或作为对配置和/或用户偏好的响应。例如,CMS 220可以被配置成用于加载为了具体应用和/或服务而被优化的不同快照。加载一个快照可以进一步包括从高速缓存供应器模块214请求高速缓存存储,如上所述。在某些实施例中,如果虚拟机208A-N不能为整个快照分配足够的高速缓存空间,则CMS 220可以加载该快照的一个子集。
在某些实施例中,高速缓存供应器模块214被配置成用于维护这些虚拟机208A-N与分配给多个虚拟机208A-N的多个对应的高速缓存存储位置之间的多个映射(例如,如图5中所描绘的)。这些映射可以用于保护这些虚拟机208A-N(例如,通过限制访问映射到所高速缓存的数据的虚拟机208A-N)和/或提供用于保留和/或传输从主机202传输到其他远程主机的一个或多个虚拟机208A-N的高速缓存数据,如在此所述。
在某些实施例中,虚拟机高速缓存213被配置成用于实现用于高速缓存资源分配的一种“自动精简配置(thin provisioning)”方法。每个虚拟机208A-N可以被分配高速缓存216中的具体数量的块302。然而,可以向这些虚拟机208A-N中的每个虚拟机“公开”高速缓存216的整个高速缓存容量(通过一个虚拟磁盘,如一个VLUN等等)。例如,如果高速缓存总大小为1TB,则每个虚拟机208A-N可以报告其可以访问整个1TB的高速缓存容量。然而,基于虚拟机208A-N的当前需要,高速缓存块302的实际分配会相当更小(例如,256MB或512MB)。所分配的高速缓存块302表示高速缓存216中可供使用的一个特定高速缓存地址范围。高速缓存供应器模块214随着虚拟机208A-N的工作集要求的变化而动态地改变这些高速缓存块分配(和/或多个虚拟机208A-N被传输至主机202/从其传输)。不管实际分配给一个具体虚拟机208A-N的高速缓存块302的数量多少,那个虚拟机208A-N报告其可以访问整个1TB的高速缓存。相应地,虚拟机208A-N的客户操作系统可以与1TB大小的一个虚拟磁盘一起操作。相应地,可以动态地改变分配给虚拟机208A-N的实际存储空间,而客户操作系统不会指示一个错误条件。因此,一个高速缓存标记221所引用的高速缓存页304可以对应于高速缓存216内的一个“间接”地址。
图5描绘了暴露在虚拟机208A(VM-1)下的多个虚拟高速缓存存储资源与实际分配给虚拟机208A的多个底层物理高速缓存地址之间的映射500的一个实施例。分配给虚拟机208A的虚拟高速缓存存储被描绘成一系列连续的高速缓存块VM-10、VM-l1、VM-12...VM-1N(529)。可以通过一个大小固定的虚拟磁盘229暴露这些连续的高速缓存块529,如上所述。实际分配给虚拟机208A的物理高速缓存存储被描绘成高速缓存216的物理地址空间306内的一个不连续的块集VM-10、VM-l1、VM-12、VM-1N。如图5中所描绘的,高速缓存216的物理地址空间306内的这些块302可以是不连续的和/或之间交错着分配给其他虚拟机202B-N的多个块302。尽管图5中的图示按一种物理顺序示出了不同位置中的某些位置,但可以根多个据物理高速缓存资源的可用性(例如,可供使用的块302)按一种随机顺序定位分配给虚拟机208A的这些高速缓存块302。
映射模块514可以被配置成用于将多个虚拟高速缓存存储分配(例如,虚拟机208A内的这些高速缓存标记221的多个间接高速缓存地址)映射到多个物理高速缓存资源(例如,多个高速缓存块302和/或多个高速缓存页304)。在某些实施例中,该映射可以包括这些虚拟机208A-N的多个间接高速缓存地址与高速缓存216的物理地址空间306之间的一个“任意到任意”关联索引。
在某些实施例中,虚拟机高速缓存213可以调节映射模块514来保护存储在高速缓存216中的数据。例如,映射模块514的映射可以用作一种访问控制形式,其中,对高速缓存块302的访问被限制于物理高速缓存块302被映射和/或分配到其上的虚拟机。例如,标记有VM-l0的高速缓存块可以仅对于块302被映射到其上的虚拟机(例如,虚拟机208A)而言是可访问的。此外,借助于对映射层的间接访问,虚拟机208A-N可能不能够直接对其他虚拟机208A-N的多个物理高速缓存块302进行引用和/或寻址。
映射模块514可以被配置成用于使用相应的虚拟机的VMID来映射虚拟高速缓存存储。相应地,当一个虚拟机在多个主机202之间被传输和/或迁移时,该虚拟机的VMID与高速缓存数据之间的多个映射可以保持有效(例如,给定VMID,可以标识和访问相应的虚拟机208A-N的所保留的高速缓存数据)。2011年7月27日提交的标题为“管理数据输入/输出操作(Managing Data Input/OutputOperations)”的美国专利申请序列号13/192,365中披露了用于在虚拟化环境下动态地分配高速缓存存储的系统和方法的进一步实施例,该申请通过引用结合于此。
参照图2B,高速缓存供应器模块214可以被配置成用于动态地将多个高速缓存资源分配给这些虚拟机208A-N。一旦被供应了,每个虚拟机208A-N就可以访问一系列预先确定的和/或连续的高速缓存存储资源(例如,多个高速缓存块302和/或多个高速缓存页304)。高速缓存供应器模块214可以被配置成用于将多个高速缓存216划分成可以被动态地供应给多个对应的虚拟机208A-N的多个高速缓存块302。
在某些实施例中,这些虚拟机208A-N可以被配置成用于和具有固定大小的多个磁盘一起使用,并且如果一个磁盘(例如,虚拟磁盘229)的大小突然发生不规则变化,则会不正确地操作。相应地,高速缓存供应器模块214可以被配置成用于暴露好像具有固定大小的多个高速缓存存储资源,同时提供用于底层高速缓存资源的动态再分配。根据某些实施例,并且如图2B中所描绘的,高速缓存供应器模块214可以使用一个虚拟磁盘驱动器215模仿多个大小固定的高速缓存资源,该虚拟磁盘驱动器可以被配置成用于暴露虚拟机208A-N内的多个对应的虚拟磁盘(VLUN磁盘)229。因此,高速缓存标记221可以引用虚拟磁盘229中的多个高速缓存资源,该高速缓存标记可以间接引用高速缓存216内的多个物理高速缓存资源(例如,每次映射模块514的虚拟磁盘映射,高速缓存标记221可以包括对多个高速缓存资源的间接引用,如在此描述的)。虚拟磁盘229可以好像具有固定的大小,该大小包括高速缓存216的全部容量(例如,2TB),而每高速缓存供应器模块214,仅高速缓存216的一部分被实际分配给虚拟机208A-N(例如,4GB)。相应地,高速缓存供应器模块214可以被配置成用于将高速缓存存储动态地分配给虚拟机208A-N而对虚拟机208A-N的操作不产生不利影响。虚拟磁盘驱动器215和/或映射模块514可以管理虚拟机208A-N的多个间接引用与多个物理高速缓存资源之间的这些映射。
高速缓存供应器模块214可以被配置成用于根据这些虚拟机208A-N的不同高速缓存要求而将高速缓存存储的不同量动态地分配给这些虚拟机208A-N。高速缓存供应器模块214可以包括一个被配置成用于将暴露在这些虚拟机208A-N下的(通过一个虚拟磁盘229)多个虚拟存储资源映射到高速缓存216中的多个物理地址的映射模块514。
如上所述,虚拟磁盘驱动器215可以被配置成用于呈现到这些虚拟机208A-N的大小固定的连续高速缓存存储分配(通过多个对应的虚拟磁盘229)。映射模块514可以被配置成用于将对虚拟磁盘229的引用映射到多个物理高速缓存地址(例如,多个高速缓存块302和/或多个高速缓存页304)。例如,供应给虚拟机208A的高速缓存存储以图解方式展示为高速缓存216中的空间524。高速缓存空间524可以包括4GB。然而,虚拟磁盘驱动器215可以将此有限的高速缓存容量展现为一个固定2TB的虚拟磁盘229。此外,分配给虚拟机208A-N的高速缓存容量(高速缓存块302)可以用一种任意方式分布在高速缓存216的物理地址空间内(这些块302可以是不连续的),而通过虚拟磁盘229表示的高速缓存容量可以是连续的。高速缓存供应器模块214可以被配置成用于响应于改变高速缓存要求和/或随着虚拟机208A-N被传输至主机202和从其传输而在虚拟机208A-N之间动态地移动高速缓存存储分配。
CMS 220可以被配置成用于通过一个或多个I/O接口218与虚拟机高速缓存213接口连接。CMS 220可以包括I/O接口218的一个SCSI过滤器319,该过滤器可以被配置成用于在虚拟机208A(以及在其中操作的CMS 220)与虚拟机高速缓存213(通过虚拟磁盘229)之间传达数据和/或控制信息。在某些实施例中,SCSI过滤器319可以被结合到虚拟机208A的一个I/O堆栈(或其他I/O基础设施和/或消息传送系统)内。SCSI过滤器319可以被配置成用于标识虚拟磁盘229、响应于虚拟磁盘229内的分配变化(例如,高速缓存供应器模块214进行的动态分配)等。如上所述,虚拟磁盘229可以被配置成用于报告比分配给虚拟机208A的实际物理高速缓存容量更大的固定存储容量,从而使得高速缓存供应器模块214可以动态地供应高速缓存存储而不对虚拟机208A产生不利影响。在某些实施例中,SCSI过滤器319可以被配置成用于管理虚拟磁盘229的实际物理容量,该虚拟磁盘可以针对虚拟机主机202的其他应用和/或操作系统而被隐藏。例如,VLUN磁盘229可以呈现为一个只读存储装置,该只读存储装置可以防止虚拟机208A和/或主机202内的其他应用将数据写入至虚拟磁盘229。
高速缓存供应器模块214可以通过包括SCSI过滤器319的一个通信链路243报告分配给虚拟机208A的实际物理高速缓存存储。通信链路243可以与虚拟磁盘驱动器215和SCSI过滤器319之间的I/O流量分开操作。因此,可以在虚拟磁盘驱动器215与SCSI过滤器319之间发送异步带外消息。SCSI过滤器319向CMS220报告分配信息(和其他命令和/或控制信息),该CMS可以使用分配信息确定可供虚拟机208A使用的高速缓存标记221的数量。相应地,可以关于虚拟机208A-N自动精简配置高速缓存,并且多个高速缓存分配可以根据虚拟机208A-N的高速缓存要求动态地变化。
图6是描绘一个CMS 220的一个实施例的框图。CMS 220可以包括一个或多个模块,包括一个高速缓存策略模块601、地址空间转换模块602、一个高速缓存标记模块604、一个时钟扫描模块606、一个窃用候选者模块608、一个高速缓存页管理模块610、一个有效单元映射模块612、一个页大小管理模块614、一个接口模块616、一个高速缓存标记保留模块618、以及一个高速缓存标记快照模块619。
高速缓存策略模块601可以被配置成用于基于各高速缓存接纳标准和/或策略选择被接纳进入高速缓存的数据。高速缓存策略模块601可以被进一步配置成用于为被接纳进入高速缓存的数据确定一个持久化级别。该持久化级别可以尤其确定该数据的一种高速缓存模式和/或配置,如直写、回写、短暂等等。在某些实施例中,高速缓存策略模块601包括一个用于给高速缓存数据指派一个持久化级别的持久化级别模块134和持久化级别策略135。可替代地或此外,有待被接纳进入高速缓存的数据的持久化级别可以由另一个实体或过程确定,如一个存储模块130,如在此描述的。CMS 220可以进一步包括一个高速缓存执行模块636,该模块可以被配置成用于根据一个所选择的持久化级别高速缓存数据。因此,高速缓存执行模块636可以被配置成用于以一种或多种不同的高速缓存模式和/或配置高速缓存数据。例如,高速缓存执行模块636可以被配置成用于以一种直写高速缓存模式高速缓存数据,这可以包括通过将数据写入到一个或多个主存储资源240B-N和写入到虚拟机高速缓存213来为多个写入I/O请求116服务。CMS 220可以直到该数据被写入一个或多个主存储资源240B-N才确认完成写入I/O请求116。高速缓存执行模块636可以被配置成用于以一种短暂高速缓存模式高速缓存数据,这可以包括通过将数据写入到虚拟机高速缓存213而不是将该数据存储在一个主存储资源240B-N或其他后背存储器来为多个写入I/O请求116服务。相应地,CMS 220响应于将该数据写入至虚拟机高速缓存213来确认完成指派有一种短暂高速缓存模式的一个写入I/O请求116。
转换模块602可以被配置成用于使这些高速缓存标记221的多个逻辑标识符(例如,在一个主存储系统中的多个地址)与虚拟机高速缓存213内的多个高速缓存存储位置(例如,多个高速缓存地址、多个高速缓存块302、多个高速缓存页304等等)相关。如上所述,这些高速缓存标记221可以对应于一个虚拟磁盘229内的多个“间接”和/或“虚拟”高速缓存存储资源,这些资源可以被高速缓存供应器模块214和/或映射模块514映射到多个物理高速缓存存储资源(例如,多个高速缓存块302)。
高速缓存标记模块604可以被配置成用于管理分配给CMS 220的这些高速缓存标记,如在此描述的,这可以包括维护多个虚拟机标识符(例如,多个逻辑标识符、多个地址、多个主存储地址)与高速缓存216中的数据之间的关联,并且维护高速缓存元数据,如访问特性、持久化级别、高速缓存模式等等。
时钟扫描模块606可以被配置成用于使用尤其一个或多个时钟指针扫描定时器确定和/或维护高速缓存老化元数据。窃用候选者模块608可以被配置成用于基于尤其时钟扫描元数据或其他高速缓存策略标识是用于逐出的候选者的高速缓存数据和/或多个高速缓存标记。在某些实施例中,窃用候选者模块608可以被配置成用于对这些高速缓存标记221的持久化级别元数据预测高速缓存标记逐出引用。例如,窃用候选者模块608可以不选择以一种短暂高速缓存模式高速缓存的用于逐出的多个高速缓存标记221。可替代地,在逐出前,窃用候选者模块608可以首先将多个短暂高速缓存标记221刷新到一个主存储资源240B-N。
高速缓存页管理模块610可以被配置成用于管理高速缓存资源(例如,高速缓存页数据)和相关操作。有效单元映射模块612可以被配置成用于标识虚拟机高速缓存213和/或一个主存储资源240B中所存储的有效数据。页大小管理模块614可以被配置成用于执行各种页大小的分析和调整操作以增强高速缓存性能,如在此描述的。接口模块616可以被配置成用于提供一个或多个接口以允许其他组件、装置、和/或系统与CMS 220接口连接。
高速缓存标记保留模块618可以被配置成用于响应于将CMS 220传输至一个不同主机而保留多个高速缓存标记221。如上所述,这些高速缓存标记221可以表示高速缓存的一个工作集,可以通过使用一个或多个高速缓存接纳和/或逐出策略(例如,时钟扫描模块606和/或窃用候选者模块608),并且响应于虚拟机208的I/O特性(和/或在一个虚拟机208A-N上运行的那些应用)来形成该工作集。高速缓存标记保留模块618可以被配置成用于在虚拟机208被传输至一个新的主机202(例如,从主机202A传输至主机202B,尤其是在一个VMotionTM操作中)后保留这些高速缓存标记221,尽管这些高速缓存标记所指代的底层高速缓存数据可能在新主机的高速缓存存储装置上不可用的事实。然而,在此描述的虚拟机高速缓存213可以被配置成用于填充该新主机处的高速缓存216,从而使得CMS 220可以继续使用高速缓存标记221的工作集。
如上所述,所保留的高速缓存标记221的数据可以从之前的主机(和/或从主存储资源240B-N或其他源)传输至该新的主机。可以通过一个按需分页模型传输高速缓存数据,该模型可以包括当虚拟机208请求所保留的各高速缓存标记221的高速缓存数据时“按需”填充该高速缓存。可替代地或此外,可以在一个“批量传输”操作中预获取和/或传输高速缓存数据,该操作可以包括独立于对高速缓存标记数据的多个请求而传送高速缓存数据。在某些实施例中,可以基于一个高速缓存传输策略选择性地预获取数据,该高速缓存传输策略可以至少部分地基于时钟扫描模块606和/或窃用候选者模块608和/或其他高速缓存策略元数据(例如,热度、冷度、最近最少使用)的高速缓存老化元数据。
高速缓存标记快照模块619可以被配置成用于维护高速缓存的工作集的一个或多个“快照”(例如,这些高速缓存标记221)。如上所述,一个快照指在一个具体时间的高速缓存标记221的一个集合。快照模块619可以被配置成用于将这些高速缓存标记221的一个快照存储在一个持久化存储介质上和/或加载一个所存储的快照,如上所述。
如上所述,CMS 220可以被配置成用于根据一个或多个不同的持久化级别高速缓存数据,这可以对应于以一种或多种不同的高速缓存模式高速缓存数据和/或高速缓存在一个或多个不同的主存储装置240B上。CMS 220可以利用多个自适应持久化级别来提高I/O性能和/或增加主机202的整合比率(consolidation ratio)。如在此使用的,一个主机202的“整合比率”指可以在主机202上操作的虚拟机208A-N的数量。可以在主机202上操作的虚拟机208A-N的数量会受到主机202的计算资源和/或主机202的I/O开销的限制。
在多种高度整合的VDI环境下,虚拟机208A-N可以共享共同的I/O特性,这会对主机202的I/O基础设施造成压力。虚拟机208A-N可以共享多个相似的数据集(例如,多个操作系统、多个应用、用户简介信息等等),并且虚拟机208A-N可以被配置成用于在多个相似的时间(例如,在启动、通电期间、在登录时等等)访问此共同数据。结果“启动风暴”会使主机202的主存储资源240B-N和/或I/O基础设施承受不了,这会显著降低总体系统性能。响应于这些虚拟机208A-N加载多个具体应用、访问共享数据、访问用户简介信息、执行一个登录过程等,会出现多个相似文件访问“风暴”。此外,虚拟机208A-N中的每个虚拟机可以包括一个对应的CMS 220,其中每个CMS可以接纳多个相似的数据集进入共享虚拟机高速缓存213内,这可以用双倍的数据填充虚拟机高速缓存213。2013年1月25日提交的标题为“用于重复删除高速缓存的系统和方法(Systems and Methods for aDe-Duplication Cache)”的美国专利申请序列号13/750,904中披露了用于提高以读取为中心的I/O操作的性能的系统和方法的实施例。
可以通过在此披露的这些自适应持久化级别提高以写入为中心的I/O操作的性能。例如,虚拟机208A-N可以发出大量写入不需要长期保存(例如,不需要在重新启动周期之间被保留)的数据的I/O请求116。这种数据可以被认为是短暂的(例如,“暂时的”、“一次性的”和/或“可有可无的”数据)。如在此使用的,一个“重新启动周期”或“重启操作”包括计算环境110和/或存储模块130的有意或无意重启和/或重新启动,这会由尤其是失去电力、硬件故障、软件故障、有意关机或重启等等引起的。相应地,一个重启操作可以包括系统重新启动、复位、或关机事件;电力故障、失去电力、或停电事件;或另一种断电。当计算装置(例如,虚拟机208A-N)操作时,短暂数据会是至关重要的,但在重新启动周期和/或重启事件后可以是不被需要的。这种数据的示例包括但不限于交换多个文件,如多个虚拟存储器文件(例如,pagefile.sys等等);多个暂时文件,如内容暂时目录(例如,/tmp等等);多个暂时应用文件(例如,微软文字处理软件(Microsoft)的本地高速缓存等等)等。相比之下,“永久”数据指在多个启动周期和/或多个重启事件之间应保留的数据。
在某些实施例中,CMS 220被配置成用于标识与可有可无的数据相关的多个I/O请求并且可以用一种短暂高速缓存配置高速缓存这些I/O请求的数据。如以上所披露的,一种短暂高速缓存配置指数据被写入高速缓存存储(和/或从其读取)的一种高速缓存模式,但不是直写、回写、和/或拷贝到一个主存储资源240B-N。相应地,当从高速缓存逐出数据时和/或如果在重新启动、死机等等时高速缓存丢失,则在一个短暂高速缓存中存储的数据会丢失。
以一种短暂高速缓存模式和/或配置存储数据可以提供显著的性能益处:与短暂高速缓存数据有关的多个I/O请求116不需要访问多个主存储资源240B-N,并且可以从用于为多个I/O请求116服务的“关键路径”中移除与多个主存储资源240B-N相关联的时延。如在此使用的,“关键路径”指一个I/O操作的定时和/或时延路径。如上所述,在多种直写高速缓存配置下,多个写入I/O请求116可以直到数据被直写到多个主存储资源240B-N才算完成(例如,将控制返回到存储客户端106A-N)。因此,I/O操作的关键路径包括一次或多次高时延主存储访问。相比之下,可以排他地在高速缓存内完成与短暂数据有关的多个高速缓存操作,而不访问多个主存储资源240B-N。相应地,一个短暂I/O操作的关键路径不包括对多个主存储资源240B-N的多次高时延访问。因此,除了减少多个存储客户端106A-N的时延,短暂高速缓存可以提供减少I/O带宽和/或这些主存储资源240B-N上的负载的附加益处。
在某些实施例中,CMS 220可以基于如一个高速缓存策略模块601和/或持久化级别模块134确定的多个I/O请求116的一个持久化级别标识用于短暂高速缓存的数据,该高速缓存策略模块和/或持久化级别模块可以根据一个持久化级别策略135(例如,持久化级别标准)为一个I/O请求确定一个持久化级别,该持久化级别策略可以基于这些I/O请求116的一个或多个特性、从这些I/O请求116的得出的推论、与这些I/O请求116的有关的设置文件元数据、文件级知识、应用级知识、偏好和/或配置、测试和体验等。
图7A是一个CMS 220的另一个实施例的框图。CMS 220可以包括和/或通过一个I/O接口218通信地耦合至一个高速缓存存储资源240A。CMS 220可以部署在一个操作环境711内,该操作环境可以包括在一个裸金属计算环境上操作的一个操作系统。相应地,CMS 220可以被配置成用于直接通过I/O接口218访问高速缓存存储资源240A;I/O接口218可以包括一个API、一个总线、一个协议等等。在某些实施例中,操作环境711可以是一个虚拟操作环境,如一个虚拟操作系统、客户操作系统等等。CMS 220可以被配置成用于访问一个虚拟化高速缓存存储资源240A,该存储资源可以被表示为一个虚拟磁盘229,如上所述。CMS 220可以被进一步配置成用于通过SCSI过滤器319将数据、控制和/或配置数据传输至高速缓存存储资源240A并从其传输,如上所述。
CMS 220的I/O请求接收器模块132可以包括一个被配置成用于监控操作环境711的一个I/O堆栈117中的多个I/O请求的代理133。I/O堆栈117可以包括多个层717A-N,这些层包括一个文件系统层717A。代理133可以被配置成用于监控这些层717A-N中的任何层内的多个I/O请求116。这些I/O请求可以与多个文件操作相关,如文件打开、关闭、读取、写入、修改等等。代理133可以监控其他类型的I/O请求,如卷装载和/或卸载、磁盘装载和/或卸载、分页I/O等等。代理133可以使用计算环境111提供的一个接口、I/O堆栈117等等监控多个I/O请求116。相应地,代理133可以包括一个或多个I/O监控器、多个文件过滤器驱动器、多个卷过滤器驱动器、多个SCSI过滤器驱动器、和/或其他合适的监控和/或过滤模块。
CMS 220可以包括一个高速缓存策略模块601,该模块可以尤其定义高速缓存接纳标准、高速缓存逐出标准等。相应地,高速缓存策略模块601可以包括一个时钟扫描模块、窃用候选者模块、高速缓存标记保留模块、和/或一个高速缓存标记快照模块,如在此所述。CMS 220可以使用高速缓存策略模块601基于高速缓存访问元数据、接纳标准(例如,文件选择标准)等做出接纳和/或逐出决定。
在某些实施例中,高速缓存策略模块601可以被进一步配置成用于为多个I/O请求116确定和/或指派一个持久化级别。一个I/O请求的持久化级别可以确定尤其有待被接纳进入存储资源240A内的数据的一种高速缓存模式和/或配置。相应地,高速缓存策略模块601可以包括一个被配置成用于确定I/O请求数据的一个持久化级别的持久化级别模块734,如在此所述。在某些实施例中,为一个I/O请求116确定和/或指派一个持久化级别可以包括将持久化级别标准应用于I/O请求116的一个或多个特性,该持久化级别标准可以包括文件级标准,如文件名、路径、目录、卷等等。图7B描绘了一个持久化级别策略735的一个实施例。如图7B中描绘的,持久化级别标准737与多个I/O请求116的文件相关的特性有关。持久化级别策略735可以将多个具体文件名(例如,“pagefile.sys”)、多个文件路径、和/或多个卷映射到多个对应的持久化级别739。可以给与暂时、一次性数据(如“pagefile.sys”和/或“本地高速缓存”数据)有关的多个文件指派指定一种短暂(永不写)高速缓存模式的一个持久化级别739。忽略持久化级别739的其他可能的特性以避免使这些实施例的细节模糊。
持久化级别策略735可以指定其他类型的持久化级别。例如,可以在指示一种直写高速缓存模式的一个持久化级别739存储多个重要文件的数据。持久化级别739可以进一步指示该数据有待存储在一个或多个冗余存储资源240B-N中(例如,在一个具体RAID级别、镜像配置等等)。作为响应,CMS 220可以被配置成用于将与满足“\\Application\critical data”文件选择标准的多个文件有关的多个I/O请求116的数据直写到一个冗余主存储资源240A-N和/或以一种相应的存储模式直写。其他存储服务(如存储模块130(图7A中未示出))可以调节持久化级别策略735以根据其中指定的持久化级别来存储数据,而不管CMS 220是否为具体I/O请求116服务。
除了和/或代替文件相关的特性,持久化级别策略735可以结合其他I/O请求特性。例如,持久化级别策略735可以标识和/或指定已知的利用多个暂时、可有可无的写入操作的多个应用,从而使得根据包括一种短暂高速缓存配置的持久化级别739来高速缓存这种应用的多个I/O请求116。例如,持久化级别标准737可以指示应在一个短暂持久化级别739为源自文字处理应用并且被引导至一个本地高速缓存中的多个文件的多个I/O请求116服务。持久化级别策略735可以进一步包括默认和/或通配符标准,如一个默认、直写高速缓存模式持久化级别739。
CMS 220可以被配置成用于透明地扩展操作环境711的一个现有高速缓存管理器709。相应地,CMS 220和/或代理133可以被配置成用于对不同I/O请求类型进行区分,包括但不限于多个非分页I/O请求、多个分页I/O请求、多个直接I/O请求等等。CMS 220和/或代理133可以被配置成用于忽略某些类型的I/O请求116,如预期访问与现有高速缓存管理器709有关的多个直接和/或非分页I/O请求的多个主存储资源240B-N的多个直接I/O请求。
如在此披露的,持久化级别模块134至少部分地基于一个I/O请求116的目标和/或源(例如,文件名)给该I/O请求116指派一个持久化级别。在某些实施例中,CMS 220可以维护I/O请求元数据733,该元数据可以包括但不限于多个I/O请求116的源标识符(例如,文件名、路径等等)、这些I/O请求116的持久化级别等等。响应于检测到与一个文件操作(如文件打开、读取、拷贝、删除、创建、截取、修改、写入等等)有关的一个初始I/O请求116,代理133可以生成上下文元数据733。代理133可以使用I/O请求元数据(例如,上下文)733将I/O请求116(和多个后续相关I/O请求116)与一个相应的源标识符(如文件标识符、文件名、卷标识符、磁盘标识符等等)相关联。在某些实施例中,代理133可以包括对一个具体文件(和/或相应的I/O请求)是否是可高速缓存的(与应被接纳进入高速缓存的数据有关)和/或I/O请求116的持久化级别的指示。CMS 220可以访问I/O请求元数据733以确定是否应高速缓存多个后续I/O请求116和/或确定这些I/O请求116的持久化级别,而不重新应用高速缓存接纳标准和/或持久化级别策略735。I/O请求元数据733可以包括一个I/O请求116的上下文数据和/或可以维护在一个单独的数据结构中。I/O请求元数据733可以存储在任何合适的数据结构中(例如,表、散列表、映射、或树),并且可以用源标识符、文件名等等被标引。
在一个示例中,一个存储客户端106A-N可以打开多个文件,从而产生多个相应的文件打开I/O请求116。代理133可以使这些I/O请求116与相应的I/O请求元数据733相关联,该元数据可以包括该文件的源标识符、对该文件是否应被接纳进入高速缓存的指示、这些I/O请求116的一个持久化级别等。存储客户端106A-N可以对该文件执行多个I/O操作,可以使用现有高速缓存管理器709为这些操作服务,并且代理133可以忽略这些操作。根据计算环境111的高速缓存策略,可以刷新现有高速缓存管理器709,从而产生一个或多个分页I/O请求116,代理133可以检测到这些请求。作为响应,代理133可以访问这些分页I/O请求116的I/O请求元数据(例如,上下文)733以确定这些请求的源标识符,确定这些I/O请求116是否与有待被接纳进入高速缓存的数据有关,确定这些I/O请求116的一个持久化级别等。可以使用CMS 220根据一个所指派的持久化级别为与有待被接纳进入高速缓存的数据有关的多个I/O请求116服务,如在此描述的。
如以上所披露的,可以根据持久化级别策略735(如持久化级别标准737)预测这些I/O请求116的持久化级别。持久化级别策略735可以由一个用户(或其他实体,如一个设置文件过程等等)配置。CMS 220可以包括一个配置接口740,通过该配置接口可以指定持久化级别策略735和/或持久化级别标准737。
在某些实施例中,CMS 220可以被配置成用于在操作过程中修改一个高速缓存标记221的一个持久化级别。例如,CMS 220可以被配置成用于将以一种短暂高速缓存配置存储的数据“刷新”到主存储资源240B-N。如在此使用的,刷新短暂高速缓存数据包括将短暂高速缓存数据存储在一个主存储资源240B-N中和/或从该高速缓存中逐出该数据。响应于与某些类型的I/O请求116(例如,未经处理的I/O请求116,如截取、事务性等等)有关的一个I/O请求116,可以逐出短暂高速缓存数据。响应于这种I/O请求116,CMS 220可以被配置成用于将短暂高速缓存数据刷新到主存储资源240B-N,允许操作环境711为I/O请求116服务,并且重新将数据接纳进入该高速缓存中(以短暂高速缓存模式和/或配置)。
CMS 220可以被进一步配置成用于管理与短暂高速缓存数据有关的I/O冲突。在某些实施例中,CMS 220通过使高速缓存标记221无效来处理I/O冲突(例如,访问一个高速缓存标记221的多个并发请求),使高速缓存标记无效可以包括从该高速缓存中逐出该数据。CMS 220可以有区别地处理短暂高速缓存数据。由于短暂高速缓存数据仅存储在该高速缓存中(并且刷新短暂高速缓存数据需要高时延访问多个主存储资源240B-N),CMS 220可以被配置成用于调度和/或推迟多个冲突的请求而不是使短暂高速缓存标记221无效。
2012年8月25日提交的标题为“用于文件级高速缓存的系统和方法(Systemsand Methods for a File-Level Cache)”的美国专利申请序列号13/287,998和2012年8月25日提交的标题为“用于多级高速缓存的系统和方法(Systems and Methods fora Multi-Level Cache)”的美国专利申请序列号13/288,005中披露了根据I/O堆栈117中的I/O请求高速缓存数据的系统和方法的进一步实施例,两个申请通过引用结合于此。
图7C描绘了一个CMS 220的另一个实施例。如上所述,以一种短暂高速缓存模式为一个写入I/O请求116服务可以包括将数据写入至一个高速缓存主存储资源240A而不是将该数据写入至一个主存储资源240B-N(例如,后备存储器)。相应地,多个短暂高速缓存操作可以排他地在操作环境711的I/O堆栈117之外的一个“快速路径”782中实现并且不涉及更慢的主存储资源240B-N上的多个操作。如在此使用的,一个“快速路径”操作指在操作环境711的I/O堆栈117之外发生的和/或不涉及多个慢速主存储资源240B-N的一个I/O操作。一个“慢速路径”操作指涉及I/O堆栈117的一个或多个层和/或对一个或多个主存储资源240B-N执行的一个I/O操作。
以一种非短暂高速缓存模式(例如,像高速缓存策略模块601和/或持久化级别模块734确定的直写和/或回写高速缓存模式)存储的数据会涉及到将该数据存储在高速缓存存储资源240A和/或一个或多个主存储资源240B-N两者中。响应于一种非短暂高速缓存模式I/O请求116,高速缓存执行模块636可以被配置成用于将该请求“分叉”780成一个快速路径操作782以将该数据存储在高速缓存存储资源240A中和一个慢速路径操作784以将该数据存储在一个或多个主存储资源240B-N中。如在此使用的,一个“分叉”指涉及到两项或更多项单独的处理操作(例如,两个或更多个处理线程)。CMS 220可以直到慢速路径操作784完成时才确认完成I/O请求116。相应地,慢速路径784可以确定用于为多个非短暂I/O请求116服务的“关键路径”。如在此使用的,一个“关键路径”指一个确定用于处理多个操作的定时和/或时延的处理路径(例如,处理步骤和/或路径)。由于直到相应的数据存储在该一个或多个主存储资源240B-N上时才确认完成了多个非短暂I/O请求116,所以用于为这种I/O请求116服务的关键路径可以包括慢速路径784。
与之相比,高速缓存执行模块636可以被配置成用于排他地在一个快速路径782中为与短暂数据(如高速缓存策略模块601和/或持久化级别模块734确定的)有关的多个写入I/O请求116服务,而不涉及I/O堆栈117和/或主存储资源240B-N内的多个慢速路径784操作。此外,为一个写入短暂高速缓存数据的I/O请求116服务可以不需要分叉780,因为不需要单独的慢速路径784处理。响应于完成了快速路径操作782,CMS 220可以确认完成了多个短暂I/O请求116,并且不等待多个慢速路径784操作完成。因此,多个短暂I/O请求116可以减少用于为多个I/O请求116服务的关键路径并且减少I/O堆栈117和/或多个主存储资源240B-N上的负载。
图8A是根据多个自适应持久化级别高速缓存数据的一个实施例的流程图。方法800可以开始并且如在此披露的那样被初始化。步骤810可以包括在一个存储模块130和/或CMS 220接收一个I/O请求116。步骤810可以包括直接从一个存储客户端106A-N接收I/O请求116(例如,通过一个I/O接口131)和/或检测和/或监控一个I/O堆栈117内的多个I/O请求(或其他基础设施),如在此披露的。步骤810可以进一步包括访问与I/O请求116相关联的一个上下文和/或标识符(例如,文件标识符),如在此描述的。
步骤820可以包括确定是否将I/O请求116的数据接纳进入一个高速缓存,如虚拟机高速缓存213。然而,本披露不局限于多种虚拟计算环境,并且可以应用于多种裸金属环境和/或多个非虚拟化高速缓存资源。步骤820可以包括确定是否已经接纳了I/O请求116的数据;如果是,则可以根据与I/O请求116相关联的持久化元数据(例如,之前确定的如I/O请求116的高速缓存标记221中所指示的I/O请求116的持久化级别和/或高速缓存模式)为I/O请求116服务。如果有待接纳I/O请求116的数据(每高速缓存策略和/或可用性),则该流程继续进行到步骤830。
步骤830可以包括给I/O请求116指派一个自适应持久化级别,这可以包括为I/O请求116选择一种高速缓存模式(例如,短暂、直写、回写等等)。分配该持久化级别可以包括确定I/O请求116是否与短暂和/或可有可无的数据有关,如上所述。相应地,步骤830可以包括将与I/O请求116有关的文件级知识与一个持久化级别标准进行比较。例如,如果I/O请求116与一个交换文件、暂时文件、本地高速缓存文件等等有关,则可以给I/O请求116指派一种短暂高速缓存模式。可替代地,如果I/O请求116与永久数据有关,则可以给I/O请求116指派一种直写高速缓存模式(或其他高速缓存模式,如回写)。步骤830可以进一步包括更新与I/O请求116相关联的一个高速缓存标记221以指示在步骤830确定的持久化级别和/或高速缓存模式(例如,更新高速缓存标记221的持久化元数据)。如果在步骤830确定的持久化级别指示一种短暂高速缓存模式,则该流程继续进行到步骤840;否则,该步骤继续进行到步骤850。
步骤840可以包括以一种短暂高速缓存模式将I/O请求116的数据接纳进入该高速缓存内。步骤840可以包括将I/O请求116的数据存储在一个高速缓存中(例如,虚拟机高速缓存213),而不是将该数据存储在一个主存储资源240B-N中。相应地,步骤840可以包括将该数据排他地存储在高速缓存216中。在多种虚拟化环境中,步骤840可以进一步包括向虚拟机高速缓存213提供正在以一种短暂高速缓存模式高速缓存数据的指示。如下所描述的,虚拟机高速缓存213可以使用高速缓存模式元数据来确定在虚拟机208A-N传输到另一个主机后是否保留高速缓存数据(和/或保留高速缓存数据多久)。因为虚拟机高速缓存213可以是仅用于短暂高速缓存数据的源,虚拟机高速缓存213可以被配置成用于保留短暂高速缓存数据,直到该数据被传输至虚拟机208A-N的新主机。
步骤850可以包括根据在步骤830确定的持久化级别接纳I/O请求116的数据,该步骤可以包括将该数据存储在一个共享虚拟机高速缓存213(或其他高速缓存)中,将该数据直写和/或回写至一个或多个主存储资源240B-N等。
图8B是用于根据多个自适应持久化级别高速缓存数据的另一个实施例的流程图。方法801可以开始并且如在此披露的那样被初始化。步骤811可以包括在一个存储模块130和/或CMS 220接收一个写入数据的I/O请求116。步骤811可以包括直接从一个存储客户端106A-N接收I/O请求116(例如,通过一个I/O接口131)和/或检测和/或监控一个I/O堆栈117内的多个I/O请求116(或其他基础设施),如在此披露的。步骤811可以进一步包括确定I/O请求116与已经被接纳进入该高速缓存(例如,高速缓存存储资源240A和/或虚拟机高速缓存213)内的数据有关。
步骤831可以包括确定与I/O请求116相关联的一个持久化级别,如在此所描述的,该持久化级别可以确定I/O请求116的高速缓存模式。如果该高速缓存模式包括一种短暂高速缓存模式,则该流程继续进行到步骤841;否则,该步骤继续进行到步骤851。
步骤841可以包括以一种短暂高速缓存模式为I/O请求116服务。相应地,步骤841可以包括在一项或多项不涉及对多个主存储资源240B-N和/或I/O堆栈117的其他层的访问的快速路径操作782时为I/O请求116服务。步骤843可以包括响应于该一项或多项快速路径操作782的完成而确认完成了I/O请求116。相应地,用于为I/O请求116服务的关键路径仅包括快速路径操作782而排除了用于慢速路径操作784的一个分叉780。
步骤851可以包括根据另一种非短暂高速缓存模式(如直写高速缓存模式)为I/O请求116服务。步骤851可以包括在一项或多项慢速路径操作784和一项或多项快速路径操作782(例如,将这些I/O操作分叉780)中为I/O请求116服务。该一项或多项慢速路径操作784可以包括一个或多个主存储资源240B-N和/或可以涉及I/O堆栈117的一个或多个层。步骤853可以包括响应于该一项或多项慢速路径操作784的完成而确认完成了I/O请求116。
如以上所披露的,CMS 220可以被配置成用于维护多个高速缓存标记221,这些高速缓存标记可以表示每次应用一个或多个高速缓存策略(如高速缓存接纳策略、高速缓存保留和/或逐出策略(例如,高速缓存老化元数据、高速缓存窃用元数据、LRU、“热度”和/或“冷度”等)、高速缓存设置文件信息、文件和/或应用级知识等等)时高速缓存的一个最优工作集。相应地,该工作集可以表示在某些操作条件下为虚拟机208A-N提供最优I/O性能的高速缓存数据集。该工作集会花费大量时间来发展和/或完善。
CMS 220可以被配置成用于响应于将虚拟机208A-N重新定位、传输、和/或迁移到另一个主机202(例如,在一个VMotionTM操作中)而保留这些高速缓存标记221。保留这些高速缓存标记221可以包括将这些高速缓存标记221维护在虚拟机208A-N的存储器中和/或不是在重新定位过程中使这些高速缓存标记221无效。保留这些高速缓存标记221可以进一步包括从新主机202的高速缓存供应器模块214请求高速缓存存储和/或响应于在新主机202上被分配了不同量的高速缓存存储而选择性地添加/和/或移除多个高速缓存标记221。在某些实施例中,尽管这些高速缓存标记221所引用的高速缓存数据在与新主机202的高速缓存216中不存在的事实,但CMS 220可以保留这些高速缓存标记221。如下所述,虚拟机高速缓存213可以被配置成用于用来自虚拟机208A-N的一个之前的主机202(例如,通过一次网络传输)和/或来自主存储的高速缓存数据填充高速缓存216。仅可以从之前的主机202获得某些高速缓存数据,如短暂高速缓存数据。
迁移一个虚拟机208A-N可以包括在新主机上重新定位多个高速缓存资源、重新填充该高速缓存等。可以从虚拟机208A-N的之前的主机202和/或主存储传输该高速缓存数据。然而,某些类型的高速缓存数据(如短暂高速缓存数据)仅可以在之前的主机202A的虚拟机高速缓存213上获得;由于该高速缓存数据没有被直写和/或回写至主存储,该数据仅存在于高速缓存213中。如在此所描述的,虚拟机高速缓存213可以被配置成用于在多个主机202之间传输高速缓存数据,从而使得该短暂高速缓存数据不丢失。可替代地或此外,一个虚拟机208A-N的CMS220可以被配置成用于在被传输和/或迁移到一个新主机202之前刷新短暂高速缓存数据,这可以在从之前的主机202移除高速缓存数据(和/或之前的主机经历故障状况)的情况下避免数据丢失。
图9是一种虚拟计算环境900的另一个实施例的框图。虚拟计算环境900包括多个主机202A-N,这些主机中的每个主机可以包括一个虚拟化内核210和一个或多个虚拟机。尽管图2中没有示出,但每个虚拟机可以包括一个对应的CMS 220,如在此描述的。每个主机202A-N可以进一步包括一个对应的虚拟机高速缓存213-N,该高速缓存包括一个高速缓存供应器模块214和高速缓存216。尽管图9描绘了三个主机系统202A-N,但本披露在本方面不受限制并且可以包括任何数量的主机202A-N。
虚拟化环境900可以包括一个主存储系统242,可以在这些主机202A-N和/或这些虚拟机208之间共享该主存储系统。主存储系统242可以包括任何合适的持久化存储装置和/或存储系统,包括但不限于一个或多个磁盘(例如,多个硬盘驱动器)、一个廉价冗余磁盘阵列(RAID)、一个存储区域网络(SAN)等等。这些主机202A-N可以被配置成用于通过网络105访问该主存储系统。
在某些实施例中,可以给每个虚拟机208指派一个对应的VMID。当在一个主机202A-N上实例化虚拟机208(例如,加载)时(例如,如上所述,在一个握手协议期间),可以指派VMID。该VMID可以包括一个进程标识符、一个线程标识符、或任何其他合适的标识符。在某些实施例中,该VMID可以唯一地标识一个具体主机202A-N上和/或一组主机202A-N内的虚拟机208。例如,这些主机202A-N可以在同一命名空间(如一个集群)内操作,并且每个虚拟机208的VMID在该集群的命名空间内可以是唯一的(跨在该集群中的多个主机202A-N上部署的这些虚拟机208A-N是唯一的)。在某些实施例中,该VMID可以包括一个主机标识符,如一个介质访问控制(MAC)地址、网络地址、可分辨名称等等。相应地,在某些实施例中,一个VMID可以唯一地标识一个具体命名空间内的一个虚拟机208,并且可以标识虚拟机208当前部署(或之前部署)在其上的主机202A-N。可替代地或此外,每个虚拟机208可以被配置成用于维护一个当前主机标识符和一个之前的主机标识符。
在某些实施例中,可以能够在这些主机202A-N之间重新定位和/或传输这些虚拟机208A-N中的一个或多个。例如,一个虚拟机208X可以从主机202A被迁移到主机202B(例如,在一个VMotionTM或类似操作中)。在某些实施例中,虚拟机208X的CMS 220可以被配置成用于检测一个传输和/或迁移操作,并且作为响应,可以试图将短暂高速缓存数据刷新至主存储系统242。如上所述,刷新短暂高速缓存数据可以防止在不能从之前的主机202A获得短暂高速缓存数据的情况下的数据丢失。可替代地,CMS 220可以被配置成用于维护短暂高速缓存数据的持久化级别以避免“迁移风暴(migration storms)”(例如,避免使主存储系统242和/或网络105的I/O基础设施过载)。
虚拟机高速缓存213B可以被配置成用于响应于从所传输的虚拟机208X的CMS 220接收一个请求而标识该传输。该请求可以包括所传输的虚拟机208X的VMID,虚拟机高速缓存213B可以从其确定虚拟机208X对于主机208B而言是“新的”(例如,之前已经接收到包括VMID的多个请求)。作为响应,虚拟机高速缓存213B可以发起与虚拟机208X的一个握手协议。虚拟机高速缓存213B可以至少部分地基于VMID的一个主机标识符、和/或虚拟机208X所维护的主机标识符确定虚拟机208X被传输至主机208B。虚拟机208X的主机标识符可以引用主机202A,而新通电的虚拟机208的主机标识符可以引用主机202B(或可以是空白的)。可替代地或此外,虚拟机208X可以包括一个单独的主机标识符,该标识符可以引用主机202A,并且可以在与虚拟机高速缓存213B的握手协议下被访问。
高速缓存供应器模块214可以被配置成用于为高速缓存216B中的虚拟机208X分配存储。高速缓存供应器模块214可以被配置成用于至少部分地基于分配给之前的主机(主机202A)上的虚拟机208X的高速缓存存储的大小确定有待供应多大的高速缓存存储。如以上所披露的,虚拟机208X的CMS 220可以被配置成用于在传输至主机202B之后保留高速缓存的工作集(例如,保留高速缓存标记221)。高速缓存供应器模块214B可以试图在高速缓存216B中分配足够的高速缓存存储以支持那些所保留的高速缓存标记221。如果不能分配足够的高速缓存存储,则CMS 220可以被配置成用于根据主机202B上的新高速缓存存储的分配来选择性地移除那些所保留的高速缓存标记。可替代地,如果可获得额外的高速缓存存储,则CMS 220可以被配置成用于向那些所保留的高速缓存标记221添加多个新的标记。分配可以通过一个虚拟磁盘229反映,如在此所描述的。
虚拟机高速缓存213A可以包括一个保留模块928A,该保留模块可以被配置成用于在从主机202A传输虚拟机208X之后保留虚拟机208X的高速缓存数据。可以保留高速缓存数据一段保留时期和/或直到虚拟机高速缓存213A确定不再需要所保留的高速缓存数据。保留模块928A可以基于各种保留策略考虑来保留高速缓存数据(和/或确定高速缓存数据保留时期),包括但不限于高速缓存216A的可用性、高速缓存216B的可用性、所保留的高速缓存数据的相对重要性(如和其他虚拟机208的高速缓存要求相比较)、高速缓存数据是否在主存储系统242中备份、高速缓存模式和/或高速缓存数据的持久化级别等。例如,仅可以在原始虚拟机高速缓存213A上获得以短暂高速缓存模式存储的高速缓存数据。因此,高速缓存保留模块928A可以被配置成用于将短暂高速缓存数据的保留优先化直到短暂高速缓存数据被传输至新的主机202B。相比之下,以不同高速缓存模式存储的高速缓存数据(例如,直写和/或回写高速缓存模式)可以具有一个较低的保留优先级,因为将从主存储系统242中获得本数据。
尽管高速缓存216B不包括高速缓存标记221所指的高速缓存数据,但虚拟机208X的CMS 220可以被配置成用于保留高速缓存的工作集(这些高速缓存标记221)。如以下所披露的,虚拟机高速缓存213B可以被配置成用于用从主机202A的高速缓存206A和/或主存储系统242传输的高速缓存数据填充高速缓存216B,以重构所传输的虚拟机208X的工作集。
虚拟机高速缓存213B可以包括一个高速缓存传输模块929B,该模块可以被配置成用于访问存储在之前的主机202A处的虚拟机208X的高速缓存数据。高速缓存传输模块929B可以被配置成用于通过使用VMID和/或通过询问虚拟机208X(例如,访问虚拟机208X所维护的一个之前的主机标识符)来标识之前的主机202A。高速缓存传输模块929B可以使用该主机标识符通过网络105向主机202A的虚拟机高速缓存213发出对高速缓存数据的一个或多个请求。在某些实施例中,高速缓存传输模块929B被配置成用于从该主机标识符确定和/或得出主机202A的一个网络地址或网络标识符。
虚拟机高速缓存213A可以包括一个高速缓存传输模块929A,该模块被配置成用于选择性地提供对所传输的虚拟机208X的所保留的高速缓存数据的访问。在某些实施例中,高速缓存传输模块929A被配置成用于保护所保留的高速缓存数据。例如,高速缓存传输模块929A可以被配置成用于验证请求实体(例如,虚拟机高速缓存213B)被授权访问所传输的虚拟机208X的高速缓存数据,这可以包括验证虚拟机208X被部署在主机202B上。例如,高速缓存传输模块929A可以请求与所传输的虚拟机208X相关联的一个证书,如VMID等等。可替代地或此外,高速缓存传输模块929A可以实现密码验证,这可以包括验证所传输的虚拟机208X所生成的一个签名等等。
高速缓存传输模块929B可以被配置成用于按照一次或多次按需分页传输、预获取传输和/或批量传输来传输高速缓存数据。一次按需分页传输可以包括响应于对来自虚拟机208X的高速缓存数据的多个I/O请求116(例如,按需)而传输高速缓存数据。所传输的数据可以用于为这些I/O请求116服务。此外,所传输的数据可以被接纳进入新主机202B的高速缓存216B。可替代地,根据高速缓存策略,可以在稍后时间(或者根本不)接纳所传输的数据。
预获取传输可以包括根据一个预获取高速缓存策略(例如,按接近度等等)和/或高速缓存数据的持久化级别传输数据。高速缓存数据的量和/或范围可以由尤其是CMS 220的高速缓存元数据(例如,高速缓存老化元数据、“热度”等)确定。相应地,在某些实施例中,高速缓存传输模块929B可以被配置成用于查询CMS 220来标识有待预获取的高速缓存数据(如果有的话)。
一次批量传输可以包括批量地传输高速缓存数据,而与来自虚拟机208X的多个存储请求无关。一次批量传输可以包括传输填充分配给虚拟机208X的整个高速缓存存储。可替代地,一次批量传输可以包括填充高速缓存的一个子集,如以上披露的,可以基于虚拟机CMS 220的高速缓存元数据选择该子集。
高速缓存传输模块929B可以被进一步配置成用于根据高速缓存数据的持久化级别将高速缓存传输(例如,预获取和/或批量传输)优先化。例如,以一种短暂高速缓存模式高速缓存的数据仅可以从之前的主机202A获得,并且如此,其可以比在可以从替代源(例如,主存储系统242)获得的其他高速缓存数据优先。因此,高速缓存传输模块929B可以被配置成用于预获取和/或批量传输短暂高速缓存数据而不是等待按需分页和/或传输其他数据。
高速缓存存储模块931B可以被配置成用于存储从主机202A的高速缓存216A传输(或从如主存储系统242等其他源获取的)的高速缓存数据存储在高速缓存216B中。高速缓存存储模块931B可以被配置成用于将高速缓存数据存储在高速缓存供应器模块214B已经将其分配给所传输的虚拟机208X的多个高速缓存存储位置。高速缓存数据可以存储在与原始高速缓存216A中的相同的高速缓存存储位置(例如,与高速缓存存储偏移相同)从而使得所保留的高速缓存标记221中的引用在每次高速缓存供应器模块214的映射模块514实现映射时保持有效。
响应于对高速缓存数据的多个请求,高速缓存传输模块929A可以被配置成用于使用尤其是所传输的虚拟机208X的VMID(通过使用映射模块514)标识所请求的高速缓存数据。然后,高速缓存传输模块929A可以通过网络105将所请求的高速缓存数据(如何可供使用的话)传输至高速缓存传输模块929B。
高速缓存传输模块929B可以被配置成用于访问来自之前的主机202A的高速缓存数据。仅可以从之前的主机202A访问以一种短暂高速缓存模式高速缓存的数据。可以从其他源(如主存储系统242)和/或该数据的其他源(例如,其他持久化存储系统、主机202N等等)获得以其他高速缓存模式高速缓存的数据。高速缓存传输模块929B可以基于各种策略考虑因素(例如,高速缓存传输策略)来选择高速缓存数据源,这些策略考虑因素可以包括一个网络策略、带宽策略、主机资源策略、主存储资源策略等等。例如,响应于确定网络105高度拥塞,高速缓存传输模块929B可以被配置成用于减少有待传输的数据量(推迟批量传输)和/或从独立于网络105的另一个源传输高速缓存数据。类似地,高速缓存传输模块929B可以响应于确定主存储系统242负载重和/或具有有限的可用带宽从而将多个请求引导至主机202(与主存储系统242对照)。
保留在主机202A上的高速缓存数据可以表示在主机202A上操作的其他虚拟机208A-N不能使用的多个高速缓存资源。如此,高速缓存保留模块928A可以被配置成用于当不再需要所保留的高速缓存数据时和/或根据一个保留策略来选择性地移除该数据。可以基于以上所述保留策略因素来确定该保留策略。在某些实施例中,高速缓存传输模块929B被配置成用于通知之前的主机202A高速缓存数据已经从其他源传输到主机202B,从而使得高速缓存传输模块928A可以从高速缓存216A中移除相应的数据。高速缓存传输模块929B可以被进一步配置成用于通知主机202A高速缓存数据不再需要被保留的其他条件,如当盖写、删除(例如,修剪)、从高速缓存216B逐出高速缓存数据等等时。如以上所披露的,高速缓存保留模块928A可以被配置成用于基于高速缓存数据的持久化级别来将高速缓存保留优先化,从而使得短暂高速缓存数据的保留的比可从其他源获得高速缓存数据优先。
在某些实施例中,高速缓存传输模块929A可以被配置成用于将虚拟机208X的高速缓存数据“推送”至新主机202B。推送高速缓存数据可以包括将虚拟机208X的所保留的高速缓存数据传输至高速缓存传输模块929B而不是接收对高速缓存数据的一个请求(与对高速缓存数据的多个请求无关)。高速缓存传输模块929A可以通过以下内容确定新主机202B的主机标识符:用户配置;验证过程;高速缓存传输模块929A进行的主动轮询;所传输的虚拟机208X实现的回调等等。在某些实施例中,新主机202B的虚拟机高速缓存213可以响应于接收到从主机202A推送的高速缓存数据来标识从主机202A传输了虚拟机208X,如上所述。高速缓存传输模块929A可以被配置成用于选择性地推送优先级高的高速缓存数据,如短暂高速缓存数据,以防止数据丢失。
图10是一种用于在主机202之间传输和/或迁移虚拟机208的高速缓存数据的方法1000的一个实施例的流程图。方法1000可以开始并且如以上描述的那样被初始化。
步骤1010可以包括一个高速缓存供应器模块214B响应于一个虚拟机208X从一个之前的主机202A迁移到一个新主机202B将高速缓存存储分配给主机208B上的虚拟机208X。新主机202B和之前的主机202A可以通信地耦合(例如,通过一个网络105)。如上所述,响应于从虚拟机208X的CMS 220接收到一个I/O请求116(或其他查询)、从之前的主机202A的高速缓存传输模块929A接收到虚拟机208X的高速缓存数据等等,高速缓存供应器模块214B可以标识所传输的虚拟机208X。步骤1010可以进一步包括(例如,基于虚拟机208X的VMID、一个主机标识符等等)将所传输的虚拟机208X与初始通电和/或重启条件区别开。可以通过一个虚拟磁盘驱动器215将该高速缓存动态地分配给一个虚拟磁盘229中的虚拟机208X,如上所述。
步骤1020可以包括新主机202B的高速缓存传输模块929B确定所传输的虚拟机208X的之前的主机202A。步骤1020可以包括访问虚拟机208X的VMID中的一个主机标识符、查询所传输的虚拟机208X、接收从之前的主机202B推送的高速缓存数据等等,如上所述。
步骤1030可以包括用在远程主机202A处保留的高速缓存数据填充分配给虚拟机208X的高速缓存存储的至少一部分,如上所述。该高速缓存数据可以对应于以一种短暂高速缓存配置存储的仅在之前的主机202可供使用的高速缓存数据。步骤1030可以包括请求高速缓存数据、验证新主机202B被授权访问高速缓存数据、在一个推送操作中接收高速缓存数据等等。可以根据高速缓存传输模块929A和/或929B的一个高速缓存传输策略请求、传输和/或推送高速缓存数据,如上所述。在某些实施例中,步骤1030进一步包括用从主存储212(或另一个源)取出的数据填充所分配的高速缓存存储。步骤1030可以进一步包括通知远程主机202A响应于填充新主机202B上的高速缓存而不再需要保留虚拟机208X的所保留的高速缓存数据,如上所述。
图11是一种用于传输虚拟机208A-N的高速缓存数据的方法1100的一个实施例的流程图。方法1100可以开始并且如以上描述的那样被初始化。
步骤1110可以包括响应于将一个虚拟机208X传输和/或迁移离开主机202A而将虚拟机208X的高速缓存数据保留在高速缓存216(高速缓存存储装置)中。高速缓存保留模块928A可以根据一个保留策略来保留高速缓存数据,如上所述。在某些实施例中,步骤1110可以包括将短暂高速缓存数据的保留优先化,该短暂高速缓存数据不可以在主存储系统242上获得(例如,仅可以在之前的主机202A的虚拟机高速缓存213内获得)。
步骤1120可以包括响应于一个对高速缓存数据的请求而确定所保留的高速缓存数据的一个高速缓存地址。该高速缓存地址可以至少部分地基于所传输的虚拟机的一个VMID。一个被配置成用于使多个高速缓存资源(例如,多个缓冲块302)与这些资源所分配给的虚拟机208A-N相关联的映射模块514可以确定该数据的高速缓存地址。
步骤1130可以包括提供所保留的高速缓存数据,如上所述。步骤1130可以包括响应于对来自虚拟机208X的新主机202B的高速缓存传输模块929B的高速缓存数据的多个请求、将该高速缓存数据推送至高速缓存传输模块929B等等。
图12是用于传输一个虚拟机的高速缓存数据的另一个实施例的流程图。步骤1210可以包括响应于将虚拟机208X传输至一个新主机202B而保留多个高速缓存标记221。在某些实施例中,步骤1210可以包括改变该高速缓存数据的多个部分的持久化级别。例如,虚拟机208X的CMS 220可以被配置成用于将短暂高速缓存数据刷新到主存储系统242,从而使得即使该高速缓存数据从虚拟机208X的当前主机202A的虚拟机高速缓存213A中被移除,将仍然可以在新主机208B访问该高速缓存数据。
步骤1220可以包括根据那些所保留的高速缓存标记221过滤多个I/O操作并将多个所选择的I/O请求116引导至一个CMS 220。步骤1220可以包括请求还没有被传输至虚拟机208X的新主机202B和/或还没有被分配给虚拟机208X的一个或多个高速缓存标记221的数据。如上所述,响应于这种请求,新主机202B的虚拟机高速缓存213B可以将虚拟机208X标识为一个经传输的虚拟机(例如,与初始启动或通电对照),为虚拟机208X分配高速缓存存储,确定虚拟机208X的之前的主机202A,和/或从之前的主机202A传输高速缓存数据(通过高速缓存传输模块929B)。
步骤1230可以包括请求一个所保留的高速缓存标记的数据,如上所述。请求访问可以包括执行高速缓存数据从之前的主机202A到新主机202B的虚拟机高速缓存213B的按需传输。
贯穿本说明书,对特征、优点或类似语言的引用并不暗示所有这些可以实现的特征和优点可以包括在任何单个实施例中。而是,指代特征和优点的语言应被理解成意味着与实施例结合描述的特征、优点或特性包括在至少一个实施例中。因此,对贯穿本说明书的特征和优点和类似语言的讨论可以但不一定指同一实施例。
此外,在此描述的特征、优点和特性可以用任何合适的方式组合在一个或多个实施例中。相关技术领域内的技术人员将认识到可以在没有一个具体实施例的特定特征或优点中的一个或多个的情况下实践所披露的实施例。在其他实例中,可以在可能没有在所有实施例中呈现的某些实施例中认识到附加特征和优点。所披露的实施例的这些特征和优点将从以下描述和所附权利要求书中变得更为充分地明显,或者可以通过实践如下文所阐述的实施例来了解。
本说明书中所描述的功能单元中的许多功能单元已经被标记为模块,以便更具体地强调其实现方式的独立性。例如,一个模块可以被实现为一个包括定制VLSI电路或门阵列、成品半导体(如逻辑芯片、晶体管或其他离散组件)的硬件电路。一个模块还可以被实现在多个可编程的硬件器件内,如现场可编程序门阵列、可编程阵逻辑器件、可编程逻辑器件置等等。
还可以用各种类型的处理器执行的软件的方式实现多个模块。一个所标识的可执行代码的模块例如包括一个或多个可以例如被组织成为一个对象、程序或功能的计算机指令物理或逻辑块。然而,一个所标识的模块的可执行文件不需要物理上定位在一起,而是可以包括存储在不同位置的不同指令,当在逻辑上结合在一起时,这些指令包括该模块并且实现该模块的所阐述的目的。
的确,一个可执行代码的模块可以是单个指令、或许多指令,并且甚至可以分布在若干不同代码段上、不同程序当中、和若干存储器装置上。类似地,在此可以在多个模块内标识和展示操作数据,并且其可以用任何合适的形式体现并且组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或可以分布在不同位置上,这些不同位置包括在不同存储装置上,并且可以至少部分地仅作为电子信号存在于一个系统或网络上。在以软件实现一个模块或一个模块的各部分的情况下,多个软件部分存储在一个或多个计算机可读介质上。
贯穿本说明书对“一个实施例”或“一种实施例”或类似语言的引用意味着在至少一个实施例中包括了与该实施例结合描述的一个具体特征、结构或特性。因此,贯穿本说明书各处的短语“在一个实施例中”、“在一种实施例中”和类似语言可以但不一定都指同一个实施例。
对一个计算机可读介质的引用可以采取任何能够将多个机器可读指令存储在一个数字处理设备上的形式。一个计算机可读介质可以由一个致密盘、一个数字视频光盘、一个磁带、一个伯努利驱动器、一个磁盘、一个穿孔卡片、闪速存储器、多个集成电路、或其他数字处理设备存储器装置被体现。
此外,在此披露的特征、结构或特性可以用任何适当的方式组合成一个或多个实施例中。在以下描述中,提供了许多特定细节,如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路和硬件芯片的示例,以提供对所披露的实施例的彻底理解。然而,相关技术领域内的技术人员将认识到可以在没有具体细节的一个或多个细节的情况下或用其他方法、组件、材料等等来实践本披露的教导。在其他实例中,没有详细地示出或描述熟知的结构、材料或操作,以避免使所披露的实施例的各方面模糊。
按照逻辑流程图概括地阐述了包括在此的示意性流程图。如此,所描绘的顺序和所标记的步骤指示本方法的一个实施例。可以设想在功能、逻辑、或效果上与所展示的方法的一个或多个不同或其多个部分等效的其他步骤和方法。此外,所使用的格式和符号被提供用于解释本方法的逻辑步骤并且应被理解成不限制本方法的范围。尽管可以在流程图中使用各种箭头类型和线类型,但它们应被理解成不限制相应方法的范围。的确,某些箭头或其他连接符可以用于仅指示本方法的逻辑流程。例如,一个箭头可以指示在所描述的方法的多个所枚举的步骤之间等待或监控一段未指定的时间段。此外,一种具体方法发生的顺序可以或可以不严格遵循所示相应步骤的顺序。

Claims (41)

1.一种方法,包括:
标识多个I/O请求;
基于这些I/O请求的一个或多个属性为这些I/O请求选择多个对应的持久化级别;以及
根据为这些I/O请求选择的该持久化级别使用一个或多个存储资源来为这些I/O请求服务。
2.如权利要求1所述的方法,其中,每个持久化级别对应于用于在为具有该对应的持久化级别的多个I/O请求服务时使用的一个或多个存储资源。
3.如权利要求1所述的方法,其中,每个持久化级别对应于用于为具有该对应的持久化级别的多个I/O请求服务的一个或多个存储资源的一种配置。
4.如权利要求1所述的方法,其中,这些持久化级别中的一个或多个被配置成用于指定用于为该一个或多个持久化级别的多个I/O请求服务的一种存储模式。
5.如权利要求1所述的方法,进一步包括基于与一个第一I/O请求相关联的一个文件标识符和与该第一I/O请求相关联的一个应用中的一项或多项为该第一I/O请求选择一个第一持久化级别。
6.如权利要求1所述的方法,其中,这些持久化级别中的一个持久化级别指定两个或更多个存储资源上的冗余存储,该方法进一步包括使用这两个或更多个存储资源为具有所述一个持久化级别的多个I/O请求服务。
7.如权利要求1所述的方法,其中,这些持久化级别中的一个持久化级别对应于一种短暂高速缓存模式,该方法进一步包括将具有所述一个持久化级别的多个I/O请求的数据存储在一个高速缓存中而没有将该数据存储在一个主存储资源中。
8.如权利要求1所述的方法,其中,标识该I/O请求包括监控一个存储堆栈中的多个I/O请求。
9.一种计算机程序产品,包括一个计算机可读存储介质,该计算机可读存储介质存储可执行用于进行多个操作的计算机可用的程序代码,这些操作包括:
接收源自一个存储客户端的一个输入/输出(I/O)请求;
基于该I/O请求的一个或多个特性为该I/O请求确定多个持久化级别之一,其中,这些持久化级别中的每个级别指定一个用于为该I/O请求服务的存储资源、该存储资源的一种配置、以及一种存储模式中的一项或多项;以及
根据所选择的该持久化级别为该I/O请求服务。
10.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的一个第一级别指定一种短暂高速缓存模式,并且这些持久化级别中的一个第二级别指定一种直写高速缓存模式。
11.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的两个或更多个级别就用于为该对应的两个或更多个持久化级别的多个I/O请求服务的多个存储资源而言不同。
12.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的两个或更多个级别就一种存储配置而言不同。
13.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的两个或更多个级别就一种高速缓存模式而言不同。
14.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的一个第一级别指定一种短暂高速缓存模式,这些操作进一步包括响应于将该第一持久化级别的多个写入I/O请求的数据写入至一个高速缓存资源而没有将这些写入I/O请求的数据写入主存储来确认完成了这些写入I/O请求。
15.如权利要求9所述的计算机程序产品,其中,这些持久化级别中的一个第一级别指定一种第一纠错代码编码,并且这些持久化级别中的一个第二级别指定一种第二不同的纠错代码编码。
16.如权利要求9所述的计算机程序产品,其中,这些操作进一步包括基于一个I/O请求的一个源标识符、该I/O请求的一个文件标识符、与该I/O请求相关联的一个应用、以及该I/O请求的一个参数中的一项或多项为该I/O请求确定一个持久化级别。
17.一种设备,包括:
一个持久化级别模块,该持久化级别模块被配置成用于基于多个存储请求的特性为这些存储请求中的每个存储请求选择多个自适应持久化级别之一,其中,为一个存储请求所选择的该自适应持久化级别确定一个存储资源、该存储资源的一种配置、以及用于为该存储请求服务的一种存储模式中的一项或多项;
一个接口模块,该接口模块被配置成用于和一个或多个存储资源进行接口连接;以及
一个存储请求执行模块,该存储请求执行模块被配置成用于通过使用该接口模块根据被指派给这些存储请求的这些自适应持久化级别为这些存储请求服务。
18.如权利要求17所述的设备,其中,该持久化级别模块被配置成用于基于一个存储请求的一个文件标识符、与该存储请求相关联的一个应用、该存储请求的一个参数、以及一个输入/输出(IO)控制参数中的一项或多项为该存储请求选择一个自适应持久化级别。
19.如权利要求17所述的设备,其中,该存储请求执行模块被配置成用于以一种永不写高速缓存模式来高速缓存具有一个短暂自适应持久化级别的一个存储请求的数据。
20.如权利要求17所述的设备,其中,这些自适应持久化级别中的一个第一级别包括将数据存储在一种第一RAID配置中,并且这些自适应持久化级别中的一个第二级别包括将数据存储在一种第二不同的RAID配置中。
21.一种方法,包括:
标识一个被引导至一个后备存储器的I/O请求;
从多种高速缓存模式中为所标识的该I/O请求选择一种短暂高速缓存模式,其中,该短暂高速缓存模式包括将数据存储在一个高速缓存中而没有将该数据存储在该后备存储器中;以及
以该短暂高速缓存模式来高速缓存所标识的该I/O请求的该数据。
22.如权利要求21所述的方法,进一步包括响应于将所标识的该I/O请求的该数据存储在该高速缓存中而没有将该数据存储到该后备存储器而确认完成了所标识的该I/O请求。
23.如权利要求21所述的方法,进一步包括响应于确定所标识的该I/O请求的该数据不需要在多个重启操作之间被保存来选择该短暂高速缓存模式。
24.如权利要求21所述的方法,进一步包括基于所标识的该I/O请求的一个源标识符、所标识的该I/O请求的一个文件标识符、以及与所标识的该I/O请求相关联的一个应用中的一项或多项来从该多种高速缓存模式中选择该短暂高速缓存模式。
25.如权利要求21所述的方法,进一步包括响应于迁移到一个新的虚拟机主机而刷新短暂高速缓存数据,其中,刷新该短暂高速缓存数据包括将以该短暂高速缓存模式高速缓存的数据存储在该后备存储器上。
26.如权利要求21所述的方法,进一步包括响应于一个虚拟机从一个第一虚拟机主机迁移到一个第二虚拟机主机而将与以该短暂高速缓存模式高速缓存的数据有关的高速缓存元数据保留在该虚拟机内。
27.如权利要求26所述的方法,进一步包括用以该短暂高速缓存模式高速缓存的保留在该第一虚拟机主机处的数据填充该第二虚拟机主机处的一个虚拟机高速缓存。
28.一种计算机程序产品,包括一个计算机可读存储介质,该计算机可读存储介质存储可执行用于进行多个操作的计算机可用的程序代码,这些操作包括:
确定被引导至一个主存储的一个输入/输出(I/O)请求的数据是可有可无的;
将该I/O请求的该数据排他地高速缓存在高速缓存存储内;以及
响应于将该I/O请求的该数据高速缓存在该高速缓存存储内而确认完成了该I/O请求。
29.如权利要求28所述的计算机程序产品,其中,高速缓存该I/O请求的该数据包括进行一项或多项不涉及该主存储的快速路径I/O操作。
30.如权利要求28所述的计算机程序产品,其中,这些操作进一步包括监控一个存储堆栈内的多个I/O请求,其中,将该I/O请求的数据高速缓存在该高速缓存存储内包括在该存储堆栈外进行一项或多项快速路径I/O操作。
31.如权利要求28所述的计算机程序产品,其中,确定该I/O请求与可有可无的数据有关包括将一个持久化级别标准应用于该I/O请求的一个源标识符,其中,该持久化级别标准基于文件级知识和应用级知识之一。
32.如权利要求28所述的计算机程序产品,其中,该I/O请求由一个虚拟机生成,这些操作进一步包括响应于该虚拟机被传输至一个远程虚拟机主机而将该虚拟机的排他地存储在该高速缓存存储内的数据推送至该远程虚拟机主机。
33.如权利要求28所述的计算机程序产品,这些操作进一步包括响应于来自一个远程虚拟机主机的一个请求而将排他地存储在该高速缓存存储内的数据传输至一个远程虚拟机主机。
34.如权利要求28所述的计算机程序产品,这些操作进一步包括响应于将该虚拟机迁移至一个不同的虚拟机主机而保留与排他地存储在该高速缓存存储内的数据相关联的一个高速缓存标记。
35.如权利要求34所述的计算机程序产品,这些操作进一步包括将排他地存储在该高速缓存存储中的数据传输至该远程虚拟机主机的一个虚拟机高速缓存,其中,传输包括基于该虚拟机的一个高速缓存管理系统的一个虚拟机标识符来标识该虚拟机的排他地存储在该高速缓存存储中的数据。
36.一种设备,包括:
一个代理,该代理被配置成用于拦截一个被引导至一个后备存储器的I/O请求;
一个持久化级别模块,该持久化级别模块被配置成用于基于所拦截的该I/O请求的一个或多个特性为所拦截的该I/O请求标识多种高速缓存模式之一;以及
一个高速缓存管理系统,该高速缓存管理系统被配置成用于在一个高速缓存中并且根据所标识的高速缓存模式来高速缓存所拦截的该I/O请求的数据,其中,该多种高速缓存模式包括一种短暂高速缓存模式,并且其中,以该短暂高速缓存模式来高速缓存数据包括仅将该数据写入到该高速缓存而没有将该数据写入到该后备存储器。
37.如权利要求36所述的设备,其中,该持久化级别模块被配置成用于基于所拦截的该I/O请求的一个源标识符、所拦截的该I/O请求的一个文件标识符、以及与所拦截的该I/O请求相关联的一个应用中的一项或多项来为所拦截的该I/O请求标识该高速缓存模式。
38.如权利要求36所述的设备,其中,该高速缓存管理系统被配置成用于响应于将以该短暂高速缓存模式高速缓存的多个I/O请求的数据写入至该高速缓存而确认完成了这些相应的I/O请求,并且用于响应于将指派有一种直写高速缓存模式的多个I/O请求的数据写入至该后备存储器而确认完成了这些相应的I/O请求。
39.如权利要求36所述的设备,进一步包括:
一个高速缓存保留模块,该高速缓存保留模块被配置成用于响应于确定一个虚拟机将会传输至一个远程虚拟机主机而将该虚拟机的以该短暂高速缓存模式被接纳进入该高速缓存内的数据保留在一个第一虚拟机主机处;以及
一个高速缓存传输模块,该高速缓存传输模块被配置成用于将该虚拟机的以该短暂高速缓存模式被接纳进入该高速缓存内的所保留的数据传输至该远程虚拟机主机。
40.如权利要求39所述的设备,进一步包括一个高速缓存存储模块,该高速缓存存储模块被配置成用于用从该第一虚拟机主机传输的数据填充该远程虚拟机主机处的一个虚拟机高速缓存。
41.如权利要求36所述的设备,其中,该高速缓存管理模块被配置成用于响应于将该虚拟机传输至一个远程虚拟机主机而将该虚拟机的以该短暂高速缓存模式高速缓存的数据刷新到一个或多个主存储资源。
CN201380053149.XA 2012-08-31 2013-08-29 用于自适应持久化的系统、方法和接口 Active CN104903872B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261696126P 2012-08-31 2012-08-31
US61/696126 2012-08-31
US13/829358 2013-03-14
US13/829,835 US10359972B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive persistence
US13/829,358 US10346095B2 (en) 2012-08-31 2013-03-14 Systems, methods, and interfaces for adaptive cache persistence
US13/829835 2013-03-14
PCT/US2013/057366 WO2014036307A1 (en) 2012-08-31 2013-08-29 Systems, methods, and interfaces for adaptive persistence

Publications (2)

Publication Number Publication Date
CN104903872A true CN104903872A (zh) 2015-09-09
CN104903872B CN104903872B (zh) 2019-03-29

Family

ID=50189117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380053149.XA Active CN104903872B (zh) 2012-08-31 2013-08-29 用于自适应持久化的系统、方法和接口

Country Status (6)

Country Link
US (3) US10359972B2 (zh)
JP (2) JP2015535355A (zh)
KR (1) KR101841997B1 (zh)
CN (1) CN104903872B (zh)
DE (1) DE112013004250B4 (zh)
WO (1) WO2014036307A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106959672A (zh) * 2017-04-28 2017-07-18 深圳市汇川控制技术有限公司 一种基于api的工业运动控制系统及方法
CN107515724A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于再现存储系统的输入输出的方法和设备
CN107851062A (zh) * 2015-12-31 2018-03-27 华为技术有限公司 一种主机集群中缓存管理方法及主机
CN107885671A (zh) * 2016-09-30 2018-04-06 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
CN108268217A (zh) * 2018-01-10 2018-07-10 北京航天云路有限公司 一种基于时序数据冷热分类的分层存储方法
CN108292264A (zh) * 2015-12-02 2018-07-17 瑞典爱立信有限公司 用于管理存储器页的可用性的方法和存储器可用性管理模块
CN108519863A (zh) * 2018-04-12 2018-09-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
CN109032838A (zh) * 2018-06-28 2018-12-18 上海爱数信息技术股份有限公司 虚拟机备份恢复数据一致性的自动校验方法
CN110174997A (zh) * 2019-04-17 2019-08-27 贵州力创科技发展有限公司 一种基于持久层的数据存储方法及区块链服务器
CN110618834A (zh) * 2019-09-05 2019-12-27 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统
CN111936961A (zh) * 2018-04-02 2020-11-13 美光科技公司 基于性能目标对存储器系统的优化

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US9106690B1 (en) * 2012-06-14 2015-08-11 Bromium, Inc. Securing an endpoint by proxying document object models and windows
US9195585B2 (en) 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9448816B2 (en) * 2013-04-29 2016-09-20 Vmware, Inc. Virtual desktop infrastructure (VDI) caching using context
TWI578836B (zh) * 2013-05-10 2017-04-11 瑞雷2股份有限公司 多租戶虛擬存取點-網路資源虛擬化之技術
US9507607B2 (en) * 2013-05-10 2016-11-29 Vmware, Inc. Virtual persistence
US9842128B2 (en) * 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9882984B2 (en) * 2013-08-02 2018-01-30 International Business Machines Corporation Cache migration management in a virtualized distributed computing system
US9570175B2 (en) 2013-08-05 2017-02-14 Jonker Llc Incrementally programmable non-volatile memory
US10789136B1 (en) * 2013-08-23 2020-09-29 Acronis International Gmbh Granular recovery using hot-plug virtual disks
US11018988B2 (en) 2013-08-26 2021-05-25 Vmware, Inc. Translating high level requirements policies to distributed configurations
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9519581B2 (en) * 2013-09-16 2016-12-13 Vmware, Inc. Storage integration for host-based write-back caching
US9460008B1 (en) * 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
WO2015065449A1 (en) * 2013-10-31 2015-05-07 Hewlett-Packard Development Company, L.P. Cache controller for non-volatile memory
US9336134B2 (en) * 2013-11-12 2016-05-10 Skyera, Llc Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device
US9229855B2 (en) * 2013-11-12 2016-01-05 Skyera, Llc Apparatus and method for routing information in a non-volatile memory-based storage device
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
US10241709B2 (en) * 2013-12-09 2019-03-26 Vmware, Inc. Elastic temporary filesystem
US9286238B1 (en) * 2013-12-31 2016-03-15 Emc Corporation System, apparatus, and method of cache management
US9933980B2 (en) * 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
US9509769B2 (en) * 2014-02-28 2016-11-29 Sap Se Reflecting data modification requests in an offline environment
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
JP6369069B2 (ja) * 2014-03-17 2018-08-08 日本電気株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US10133488B2 (en) * 2014-03-17 2018-11-20 Primaryio, Inc. Apparatus and method for cache provisioning, configuration for optimal application performance
US10146437B2 (en) 2014-03-17 2018-12-04 Primaryio, Inc. Tier aware caching solution to increase application performance
US10083051B1 (en) * 2014-04-11 2018-09-25 VCE IP Holding Company LLC System, method, and code for classifying resources of a virtual computing environment
US9697130B2 (en) 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation
US9483300B2 (en) * 2014-07-15 2016-11-01 Red Hat Israel, Ltd. Importing a running VM
US9547592B2 (en) * 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
JP6365085B2 (ja) * 2014-08-04 2018-08-01 富士通株式会社 データ移行方法及びデータ移行装置
US9792050B2 (en) * 2014-08-13 2017-10-17 PernixData, Inc. Distributed caching systems and methods
WO2016032955A2 (en) * 2014-08-25 2016-03-03 Cacheio Llc Nvram enabled storage systems
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US20160092353A1 (en) * 2014-09-25 2016-03-31 Robert C. Swanson Establishing cold storage pools from aging memory
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10839086B2 (en) * 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10169124B2 (en) * 2014-12-16 2019-01-01 Samsung Electronics Co., Ltd. Unified object interface for memory and storage system
US9851990B2 (en) 2015-01-30 2017-12-26 American Megatrends, Inc. Method and system for performing on-demand data write through based on UPS power status
US9886387B2 (en) * 2015-01-30 2018-02-06 American Megatrends, Inc. Method and system for performing on-demand data write through based on virtual machine types
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
JP2016184188A (ja) * 2015-03-25 2016-10-20 日本電気株式会社 管理装置、管理方法とそのプログラム、および、情報処理システム
CN104881371B (zh) * 2015-05-29 2018-02-09 清华大学 持久性内存事务处理缓存管理方法与装置
US9813500B2 (en) 2015-06-12 2017-11-07 Cisco Technology, Inc. Allocating cloud storage based on storage attributes
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US20170038933A1 (en) * 2015-08-06 2017-02-09 Facebook, Inc. Systems and methods for providing reminders for content in social networks
US10558480B2 (en) 2015-09-10 2020-02-11 Veritas Technologies Llc Optimizing access to production data
CN106547476B (zh) * 2015-09-22 2021-11-09 伊姆西Ip控股有限责任公司 用于数据存储系统的方法和装置
US10496545B2 (en) * 2015-11-24 2019-12-03 Hewlett Packard Enterprise Development Lp Data caching in a large-scale processing environment
US10049004B2 (en) * 2015-12-09 2018-08-14 Samsung Electronics Co., Ltd. Electronic system with memory data protection mechanism and method of operation thereof
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
CN111831234B (zh) * 2016-06-21 2024-04-23 伊姆西Ip控股有限责任公司 用于虚拟机的方法和装置
US10678578B2 (en) 2016-06-30 2020-06-09 Microsoft Technology Licensing, Llc Systems and methods for live migration of a virtual machine based on heat map and access pattern
US10334334B2 (en) 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for a data center
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) * 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10437691B1 (en) * 2017-03-29 2019-10-08 Veritas Technologies Llc Systems and methods for caching in an erasure-coded system
US10152422B1 (en) 2017-06-13 2018-12-11 Seagate Technology Llc Page-based method for optimizing cache metadata updates
US10810116B2 (en) * 2017-06-29 2020-10-20 Sap Se In-memory database with page size adaptation during loading
US20190004947A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Selective temporary data storage
KR102474582B1 (ko) 2017-08-28 2022-12-05 삼성전자주식회사 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템
US10592293B2 (en) 2017-08-31 2020-03-17 Cisco Technology, Inc. Tenant-specific policy generation and enforcement within containers
US20190095107A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Data classification for placement within storage devices
US11106588B2 (en) * 2017-11-28 2021-08-31 International Business Machines Corporation Deferred method of allocating disk space for lightning segments
US10802932B2 (en) * 2017-12-04 2020-10-13 Nxp Usa, Inc. Data processing system having lockstep operation
KR102052312B1 (ko) * 2018-05-08 2019-12-05 주식회사 애포샤 캐싱 장치 및 방법
US10656869B1 (en) * 2018-06-28 2020-05-19 Amazon Technologies, Inc. Performance-based volume replica migration
US11573962B2 (en) * 2018-10-19 2023-02-07 Oracle International Corporation Dynamic performance tuning based on implied data characteristics
US11568179B2 (en) 2018-10-19 2023-01-31 Oracle International Corporation Selecting an algorithm for analyzing a data set based on the distribution of the data set
US10860078B2 (en) * 2018-10-25 2020-12-08 Dell Products, L.P. Managing power request during cluster operations
US11048523B2 (en) 2018-10-25 2021-06-29 Dell Products, L.P. Enabling software sensor power operation requests via baseboard management controller (BMC)
US11126486B2 (en) 2018-10-25 2021-09-21 Dell Products, L.P. Prediction of power shutdown and outage incidents
US10866890B2 (en) * 2018-11-07 2020-12-15 Arm Limited Method and apparatus for implementing lock-free data structures
US11010067B2 (en) * 2018-12-28 2021-05-18 Intel Corporation Defense against speculative side-channel analysis of a computer system
US10895997B2 (en) * 2019-02-20 2021-01-19 Nutanix, Inc. Durable client-side caching for distributed storage
US11263180B2 (en) * 2019-02-23 2022-03-01 National Tsing Hua University Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device
EP3938894B1 (en) 2019-03-15 2023-08-30 INTEL Corporation Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US11921637B2 (en) 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
CN114365097A (zh) * 2019-08-27 2022-04-15 美光科技公司 受管理存储器系统中的写入缓冲器控制
US11481325B2 (en) 2020-03-30 2022-10-25 Citrix Systems, Inc. Secure fast reboot of a virtual machine
US11972142B2 (en) * 2020-12-29 2024-04-30 Arm Limited Data processing circuitry and apparatus for packet-based data communications
KR20220105304A (ko) * 2021-01-20 2022-07-27 에스케이하이닉스 주식회사 시스템 및 시스템의 동작 방법
US12019893B2 (en) 2022-06-28 2024-06-25 Western Digital Technologies, Inc. Storage device pool management based on fragmentation levels
US20240095186A1 (en) * 2022-09-15 2024-03-21 International Business Machines Corporation Virtual machine failover with disaggregated shared memory
US20240126458A1 (en) * 2022-10-14 2024-04-18 Arm Limited Controlling data allocation to storage circuitry

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120131278A1 (en) * 2010-03-08 2012-05-24 Jichuan Chang Data storage apparatus and methods
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache

Family Cites Families (411)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB123416A (en) 1918-02-28 1919-02-27 John Buchanan Composite Valve for all Classes of Internal Combustion Engines.
JPS55157053A (en) * 1979-05-25 1980-12-06 Nec Corp Disc cash write-in control system
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5043871A (en) 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US5359726A (en) 1988-12-22 1994-10-25 Thomas Michael E Ferroelectric storage device used in place of a rotating disk drive unit in a computer system
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
KR930003088B1 (ko) 1990-10-23 1993-04-17 삼성전자 주식회사 초고주파와 히터열을 이용한 정화 소각장치
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
JPH06187249A (ja) * 1992-12-16 1994-07-08 Nec Eng Ltd ディスクアレイ装置
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
US5459850A (en) 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5392244A (en) * 1993-08-19 1995-02-21 Hewlett-Packard Company Memory systems with data storage redundancy management
JP3172007B2 (ja) * 1993-09-17 2001-06-04 富士通株式会社 ディスク複写処理方式
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
GB9326499D0 (en) 1993-12-24 1994-03-02 Deas Alexander R Flash memory system with arbitrary block size
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5434994A (en) 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
JPH08153014A (ja) 1994-11-30 1996-06-11 Hitachi Ltd クライアントサーバシステム
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
EP0747825B1 (en) 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
JP3394651B2 (ja) * 1996-07-09 2003-04-07 株式会社クボタ 球状野菜の包装設備
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6092159A (en) 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6266785B1 (en) 1998-09-01 2001-07-24 Ncr Corporation File system filter driver apparatus and method
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
WO2001031512A2 (en) 1999-10-25 2001-05-03 Infolibria, Inc. Fast indexing of web objects
DE60004463D1 (de) 1999-10-25 2003-09-18 Sun Microsystems Inc Speichersystem mit Unterstützung von Dateistufenzugriffen und Blockstufenzugriffen
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US6785785B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Method for supporting multi-level stripping of non-homogeneous memory to maximize concurrency
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
AU2001246799A1 (en) 2000-04-18 2001-10-30 Storeage Networking Technologies Storage virtualization in a storage area network
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
JP3951918B2 (ja) 2000-06-23 2007-08-01 インテル・コーポレーション 不揮発性キャッシュ
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
JP3671138B2 (ja) 2000-08-17 2005-07-13 ジャパンコンポジット株式会社 通気性防水被覆構造体、およびその施工方法
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020167945A1 (en) 2000-11-22 2002-11-14 Yeshik Shin Method and system for packet ordering based on packet type
US20020069317A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew E-RAID system and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US6986015B2 (en) * 2001-12-10 2006-01-10 Incipient, Inc. Fast path caching
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7076606B2 (en) 2002-09-20 2006-07-11 Quantum Corporation Accelerated RAID with rewind capability
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US7318141B2 (en) 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US20040169885A1 (en) 2003-02-28 2004-09-02 Mellor Douglas J. Memory management
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7987249B2 (en) 2003-04-09 2011-07-26 Intel Corporation Soft system failure recovery for management consoles supporting ASF RMCP
US7415591B1 (en) 2003-04-23 2008-08-19 Emc Corporation Method and apparatus for migrating data and automatically provisioning a target for the migration
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
JP2005284816A (ja) * 2004-03-30 2005-10-13 Hitachi Ltd ディスクアレイシステム
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7711140B2 (en) 2004-04-21 2010-05-04 Canon Kabushiki Kaisha Secure recorded documents
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
EP1745394B1 (en) 2004-04-26 2009-07-15 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7213125B2 (en) 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
EP1786205A1 (en) 2004-08-30 2007-05-16 Matsushita Electric Industrial Co., Ltd. Recorder
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
JP2008523468A (ja) 2004-12-06 2008-07-03 テイアック エアロスペース テクノロジーズ インコーポレイテッド 不揮発記録媒体消去システム及び方法
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
US20060136685A1 (en) 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7702873B2 (en) 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume
GB2426082B (en) 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7383392B2 (en) 2005-05-31 2008-06-03 Hewlett-Packard Development Company, L.P. Performing read-ahead operation for a direct input/output request
US7472225B2 (en) 2005-06-20 2008-12-30 Arm Limited Caching data
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7424577B2 (en) 2005-08-26 2008-09-09 Network Appliance, Inc. Dynamic optimization of cache memory
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
JP2007071805A (ja) 2005-09-09 2007-03-22 Denso Corp 力学量センサの製造方法
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7752173B1 (en) * 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US7440455B2 (en) 2005-12-22 2008-10-21 Level 3 Communications, Llc Registration of multiple VoIP devices
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
JP2007240904A (ja) 2006-03-09 2007-09-20 Hitachi Ltd プラズマディスプレイ装置
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7676628B1 (en) 2006-03-31 2010-03-09 Emc Corporation Methods, systems, and computer program products for providing access to shared storage by computing grids and clusters with large numbers of nodes
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US20070294676A1 (en) 2006-06-19 2007-12-20 Ewan Ellis Mellor Open virtual appliance
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
KR101128234B1 (ko) 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP2008090378A (ja) * 2006-09-29 2008-04-17 Seiko Epson Corp ハイブリッドファイルシステム、オペレーティングシステム、キャッシュ制御方法および記録媒体
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
CN101536002B (zh) 2006-11-03 2015-02-04 气体产品与化学公司 用于工艺监控的系统和方法
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
KR20090102789A (ko) 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7689804B2 (en) * 2006-12-20 2010-03-30 Intel Corporation Selectively protecting a register file
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
US7721040B2 (en) 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
JP5020673B2 (ja) 2007-03-27 2012-09-05 株式会社日立製作所 重複したファイルの記憶を防ぐコンピュータシステム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US8046767B2 (en) 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US7793061B1 (en) * 2007-06-29 2010-09-07 Emc Corporation Techniques for using flash-based memory as a write cache and a vault
US8850154B2 (en) 2007-09-11 2014-09-30 2236008 Ontario Inc. Processing system having memory partitioning
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
KR20090034629A (ko) * 2007-10-04 2009-04-08 삼성전자주식회사 쓰기 버퍼를 포함하는 저장장치 및 그 제어 방법
CA2704537C (en) 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
US7840839B2 (en) 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8549222B1 (en) 2008-02-12 2013-10-01 Netapp, Inc. Cache-based storage system architecture
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
JP2009223787A (ja) * 2008-03-18 2009-10-01 Hitachi Software Eng Co Ltd 情報処理装置及び方法、並びにプログラム
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
US7975169B2 (en) 2008-06-03 2011-07-05 International Business Machines Corporation Memory preserved cache to prevent data loss
US8127076B2 (en) 2008-06-06 2012-02-28 Pivot3 Method and system for placement of data on a storage device
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US20100082922A1 (en) 2008-09-30 2010-04-01 Vmware, Inc. Virtual machine migration using local storage
JP5124430B2 (ja) * 2008-12-04 2013-01-23 株式会社エヌ・ティ・ティ・データ 仮想マシンの移行方法、サーバ、及び、プログラム
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8171219B2 (en) 2009-03-31 2012-05-01 Intel Corporation Method and system to perform caching based on file-level heuristics
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8447918B2 (en) 2009-04-08 2013-05-21 Google Inc. Garbage collection for failure prediction and repartitioning
US20100262773A1 (en) 2009-04-08 2010-10-14 Google Inc. Data striping in a flash memory data storage device
US8103822B2 (en) * 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US8527466B2 (en) 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8719767B2 (en) 2011-03-31 2014-05-06 Commvault Systems, Inc. Utilizing snapshots to provide builds to developer computing devices
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8825685B2 (en) * 2009-11-16 2014-09-02 Symantec Corporation Selective file system caching based upon a configurable cache map
EP2513821A4 (en) 2009-12-17 2015-05-27 Nat Ict Australia Ltd RELIABLE WRITING OF DATABASE LOG DATA
US9021046B2 (en) 2010-01-15 2015-04-28 Joyent, Inc Provisioning server resources in a cloud resource
US9110806B2 (en) 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US20110238737A1 (en) * 2010-03-26 2011-09-29 Nec Laboratories America, Inc. Decentralized cloud storage
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8413142B2 (en) 2010-03-30 2013-04-02 Citrix Systems, Inc. Storage optimization selection within a virtualization environment
US8539124B1 (en) * 2010-03-31 2013-09-17 Emc Corporation Storage integration plugin for virtual servers
US8312471B2 (en) * 2010-04-26 2012-11-13 Vmware, Inc. File system independent content aware cache
JP5684815B2 (ja) * 2010-04-30 2015-03-18 株式会社日立製作所 計算機システム及びその制御方法
WO2011153478A2 (en) * 2010-06-04 2011-12-08 Flashsoft Corporation Cache management and acceleration of storage media
US8244935B2 (en) 2010-06-25 2012-08-14 Oracle International Corporation Write aggregation using optional I/O requests
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
US8595522B2 (en) 2010-09-30 2013-11-26 Intel Corporation Monitoring transaction requests using a policy engine within a storage drive driver to change power capability and latency settings for a storage drive
CN102467408B (zh) 2010-11-12 2014-03-19 阿里巴巴集团控股有限公司 一种虚拟机数据的访问方法和设备
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
US8479294B1 (en) 2011-02-15 2013-07-02 Trend Micro Incorporated Anti-malware scan management in high-availability virtualization environments
KR20120097136A (ko) 2011-02-24 2012-09-03 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) * 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
EP2692110B1 (en) 2011-03-29 2016-05-11 Brainlab AG Processing of digital data, in particular medical data by a virtual machine
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
CA2761553C (en) * 2011-12-09 2019-03-05 Ibm Canada Limited - Ibm Canada Limitee Logical buffer pool extension
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9141529B2 (en) * 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
US9336035B2 (en) * 2012-10-23 2016-05-10 Vmware, Inc. Method and system for VM-granular I/O caching
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120131278A1 (en) * 2010-03-08 2012-05-24 Jichuan Chang Data storage apparatus and methods
US20120210066A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a file-level cache

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108292264A (zh) * 2015-12-02 2018-07-17 瑞典爱立信有限公司 用于管理存储器页的可用性的方法和存储器可用性管理模块
CN108292264B (zh) * 2015-12-02 2023-01-03 瑞典爱立信有限公司 用于管理存储器页的可用性的方法和存储器可用性管理模块
CN107851062A (zh) * 2015-12-31 2018-03-27 华为技术有限公司 一种主机集群中缓存管理方法及主机
CN107515724B (zh) * 2016-06-16 2021-04-02 伊姆西Ip控股有限责任公司 用于再现存储系统的输入输出的方法和设备
CN107515724A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于再现存储系统的输入输出的方法和设备
CN107885671A (zh) * 2016-09-30 2018-04-06 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
CN106959672A (zh) * 2017-04-28 2017-07-18 深圳市汇川控制技术有限公司 一种基于api的工业运动控制系统及方法
CN108268217A (zh) * 2018-01-10 2018-07-10 北京航天云路有限公司 一种基于时序数据冷热分类的分层存储方法
CN111936961A (zh) * 2018-04-02 2020-11-13 美光科技公司 基于性能目标对存储器系统的优化
CN108519863B (zh) * 2018-04-12 2021-06-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN108519863A (zh) * 2018-04-12 2018-09-11 郑州云海信息技术有限公司 一种存储系统的io管理方法及装置
CN109002401A (zh) * 2018-05-04 2018-12-14 广东睿江云计算股份有限公司 基于动态缓冲的虚拟机磁盘复制过程读取方法及装置
CN109032838A (zh) * 2018-06-28 2018-12-18 上海爱数信息技术股份有限公司 虚拟机备份恢复数据一致性的自动校验方法
CN110174997A (zh) * 2019-04-17 2019-08-27 贵州力创科技发展有限公司 一种基于持久层的数据存储方法及区块链服务器
CN110618834A (zh) * 2019-09-05 2019-12-27 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统
CN110618834B (zh) * 2019-09-05 2021-10-15 苏州浪潮智能科技有限公司 I/o栈请求响应方法、系统和i/o栈请求响应控制方法及系统

Also Published As

Publication number Publication date
US20140237147A1 (en) 2014-08-21
US20140068197A1 (en) 2014-03-06
US20140068183A1 (en) 2014-03-06
DE112013004250T5 (de) 2015-07-09
KR101841997B1 (ko) 2018-03-27
JP2015535355A (ja) 2015-12-10
DE112013004250B4 (de) 2022-08-25
JP6709245B2 (ja) 2020-06-10
WO2014036307A1 (en) 2014-03-06
CN104903872B (zh) 2019-03-29
JP2018125025A (ja) 2018-08-09
US9058123B2 (en) 2015-06-16
US10359972B2 (en) 2019-07-23
KR20150081424A (ko) 2015-07-14
US10346095B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
CN104903872A (zh) 用于自适应持久化的系统、方法和接口
US9619155B2 (en) Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
CN101419535B (zh) 虚拟机的分布式虚拟磁盘系统
US9342256B2 (en) Epoch based storage management for a storage device
US10339056B2 (en) Systems, methods and apparatus for cache transfers
CN109344090B (zh) 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心
US20140012940A1 (en) Systems, Methods and Apparatus for a Virtual Machine Cache
US9778860B2 (en) Re-TRIM of free space within VHDX
US20170031825A1 (en) Direct Host-To-Host Transfer for Local Caches in Virtualized Systems
US20110283046A1 (en) Storage device
KR20200121372A (ko) 하이브리드 메모리 시스템
WO2018093442A9 (en) Storage operation queue
US20170277631A1 (en) Storage device, semiconductor memory device, and method for controlling same
US20240053917A1 (en) Storage device, operation method of storage device, and storage system using the same
KR20200117032A (ko) 하이브리드 메모리 시스템
Ni et al. Leveraging ssd's flexible address mapping to accelerate data copy operations
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
US20230236737A1 (en) Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same
US11947799B1 (en) Systems and methods for using the TRIM command with solid state devices
US20230359379A1 (en) Computing system generating map data, and method of operating the same
KR20230115197A (ko) 다른 타입의 블록들을 관리하는 스토리지 컨트롤러, 이의 동작 방법, 및 이를 포함하는 스토리지 장치의 동작하는 방법
CN116501243A (zh) 存储控制器及其操作方法、存储装置的操作方法
CN117032554A (zh) 存储装置、计算装置以及计算装置的操作方法

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160426

Address after: Luxemburg, Grand Duchy of Luxemburg

Applicant after: Longitude Business Flash Memory Co.

Address before: Luxemburg, Grand Duchy of Luxemburg

Applicant before: PS12 Lukesike Co.

Effective date of registration: 20160426

Address after: Luxemburg, Grand Duchy of Luxemburg

Applicant after: PS12 Lukesike Co.

Address before: Delaware

Applicant before: Intellectual property holding company (2)

C41 Transfer of patent application or patent right or utility model
CB02 Change of applicant information

Address after: Texas, USA

Applicant after: SANDISK TECHNOLOGIES LLC

Address before: Texas, USA

Applicant before: SANDISK TECHNOLOGIES Inc.

COR Change of bibliographic data
TA01 Transfer of patent application right

Effective date of registration: 20160718

Address after: Texas, USA

Applicant after: SANDISK TECHNOLOGIES Inc.

Address before: Luxemburg, Grand Duchy of Luxemburg

Applicant before: Longitude Business Flash Memory Co.

GR01 Patent grant
GR01 Patent grant