CN108604197A - 模块化数据操作系统 - Google Patents

模块化数据操作系统 Download PDF

Info

Publication number
CN108604197A
CN108604197A CN201780009410.4A CN201780009410A CN108604197A CN 108604197 A CN108604197 A CN 108604197A CN 201780009410 A CN201780009410 A CN 201780009410A CN 108604197 A CN108604197 A CN 108604197A
Authority
CN
China
Prior art keywords
data
data access
cache
storage
access 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.)
Withdrawn
Application number
CN201780009410.4A
Other languages
English (en)
Inventor
F·C·福尔茨
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108604197A publication Critical patent/CN108604197A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • 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
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • 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/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在各个实施例中,提供了用于实现模块化数据操作的方法和系统。与数据相关联的数据访问请求在数据访问组件处被接收。数据访问组件基于配置设置来选择性地实现模块化数据操作功能性。与工作集相关联的转换表基于数据访问组件的配置设置来被访问,以确定用于执行数据访问请求的位置。数据访问请求使用高速缓存存储或与工作集相关联的后备存储来被执行。数据访问请求使用以下来被执行:使用工作集的转换表所确定的位置。当数据被高速缓存在高速缓存存储中时,数据访问请求使用高速缓存存储来被执行,而当数据未高速缓存在高速缓存存储中时,数据访问请求基于后备存储来被执行。

Description

模块化数据操作系统
背景
云计算基础设施(分布式计算系统)支持可配置计算、存储和联网资源的共享池上的操作。例如,云计算基础设施可实现被配置成运行由操作系统(OS)支持的多个虚拟机(VM)的计算节点。计算节点供应分配给VM的资源。随着对云计算基础设施中计算容量的需求持续增长,计算节点现在支持越来越多数量的VM。然而,计算节点的VM数量上的增加影响着被实现以满足计算节点上越来越多数量的VM的输入/输出(I/O)要求的底层数据计算、存储和网络资源的性能。由此,需要工具来管理和控制VM数据操作,以便改进云计算基础设施中的性能。
概述
本文中所描述的各实施例提供了用于基于模块化数据操作系统来管理和控制分布式计算系统中的数据操作的方法和系统。在高层次处,模块化数据操作系统利用重定向器文件系统、后备存储和使用数据访问组件的高速缓存存储来改进数据访问性能。数据访问组件还实现高速缓存存储数据结构、高速缓存块惰性写入(cache block lazy writing)和数据访问扼流(data access throttling),作为模块化数据操作系统框架的一部分。模块化数据操作系统包括若干组件,这些组件可根据需要来被选择性地实现,以改进访问被储存在分布式计算系统中的数据(例如,读取或写入文件系统数据)时的性能。具体而言,数据访问组件使用能基于文件代理(例如,表面(surface))操作的重定向器文件系统来获得对后备存储的访问。数据访问组件在使用文件代理访问后备存储(例如,具有转换表的团块(blob)存储)中的数据(例如,页面团块)时进一步配置用于高速缓存存储(例如,计算节点SSD或RAM)的高速缓存存储数据结构(例如,与后备存储的转换表一起操作的工作集)以与后备存储一起操作。高速缓存存储高速缓存与数据访问请求(例如,读取操作或写入操作)相关联的数据。由此,高速缓存存储至少包括来自后备存储的数据的子集。高速缓存存储基于使用数据访问组件配置的高速缓存存储数据结构(例如,工作集)来操作。具体而言,配置设置可以在数据访问组件中被定义,以支持模块化数据操作系统的各组件。高速缓存存储数据结构包括与转换表(例如,用于对应后备存储的块地址转换表)相关联的两层级高速缓存系统,以用于访问数据访问请求的数据。在使用高速缓存存储数据结构的情况下,可以在高速缓存存储或作为用于其中定义的数据对象的存储库操作的后备存储处访问数据。数据可指代通过特定解释动作给出含义的一个或多个符号的序列。数据可以是被储存在高速缓存存储或后备存储处所支持的不同数据结构中的存储器地址。
数据访问组件支持不同类型的高速缓存策略,由此,高速缓存块基于对应的高速缓存策略来被处理。在本公开的各个实施例中,数据访问组件还可实现高速缓存块惰性写入器以惰性地写入高速缓存块。数据访问组件还支持数据访问扼流组件,以限制数据访问组件处所处理的输入/输出(I/O)请求的最大数量或速率。具体而言,数据访问组件实现了针对处理模块化数据操作系统的不同组件处的数据请求进行扼流,以在访问所请求的数据时提供一致的性能。
提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在独立地用于帮助确定所要求保护的主题的范围。
附图简述
下面参考附图详细描述本发明,其中:
图1是其中本文中所描述的各实施例可被采用的示例性模块化数据操作系统的框图;
图2是其中本文中所描述的各实施例可被采用的示例性模块化数据操作系统的框图;
图3是其中本文中所描述的各实施例可被采用的示例性模块化数据操作系统的框图;
图4是示出根据本文中所描述的各实施例的用于基于模块化数据操作系统来管理和控制数据访问的示例性方法的流程图;
图5是示出根据本文中所描述的各实施例的用于基于模块化数据操作系统来管理和控制数据访问的示例性方法的流程图;
图6是适用于实现本文中所描述的各实施例的示例性计算环境的框图;以及
图7是适用于实现本文中所描述的各实施例的示例性分布式计算系统的框图。
详细描述
云计算基础设施(即,分布式计算系统)支持可配置计算、存储和联网资源的共享池上的操作。例如,云计算基础设施可实现被配置成运行由操作系统(OS)支持的多个虚拟机(VM)的计算节点。计算节点供应分配给VM的资源。VM支持云计算基础设施中的一个或多个被托管应用(例如,租户)的操作。租户可具体使用任何类型的OS(例如,Windows或Linux)。云计算基础设施还可实现结构控制器(fabric controller),该结构控制器操作以供应并管理云资源、服务和应用的资源分配、部署、升级和管理。具体而言,结构控制器可实现管理程序(hypervisor),管理程序通常指代创建和运行虚拟机的一段计算机软件、固件或硬件。
经由结构控制器管理程序支持的云计算基础设施中的计算节点作为VM的主机来操作。管理程序向虚拟操作平台呈现运行操作系统的VM,并且管理计算节点上的VM的执行和来自所述VM的数据通信。就此而言,各种操作系统的多个实例可共享虚拟化硬件资源。作为示例,结构控制器可实现用于储存数据的用于VM的虚拟化存储堆栈或用于为各种基于计算的任务提供计算资源的虚拟化计算堆栈。虚拟化存储堆栈或计算堆栈功能性使用虚拟硬盘驱动器微端口驱动程序(VHDMP)来得到支持,该VHDMP展示块设备(即,支持一次读取和写入整个数据块(例如,硬盘上的扇区)的设备)。使用VHDMP挂载的块设备支持对与云计算存储基础设施内的团块存储相关联的团块接口的访问,使得该团块存储能作为虚拟硬盘驱动器(VHD)由VM来访问。如在本公开中使用的用于管理作为团块的虚拟硬盘驱动器的系统和过程在2013年7月17日提交的题为“Managing Virtual Hard Drives as Blobs(管理作为团块的虚拟硬盘驱动器)”的美国申请S/N.13/944,627中作进一步描述。
随着技术不断改进,虚拟化存储堆栈或计算堆栈的节点正随着对云计算基础设施中的计算容量的需求持续增长而支持越来越多数量的VM。然而,计算节点的VM数量上的增加影响着底层数据计算、存储和网络资源的性能,所述性能被实现以满足计算节点上越来越多数量的VM的输入/输出(I/O)要求。由此,需要工具来管理和控制对所请求的数据的VM访问,以改进云计算基础设施中的性能。
本公开的各实施例提供了用于基于模块化数据操作系统来管理和控制分布式计算系统中的数据操作的简单且高效的方法和系统。在高层次处,模块化数据操作系统将重定向器文件系统、后备存储和高速缓存存储与数据访问组件相组合地进行利用,以改进数据访问性能。数据访问组件实现高速缓存存储数据结构、高速缓存块惰性写入和数据访问扼流,作为模块化数据操作系统框架的一部分。模块化数据操作系统包括若干组件,这些组件可根据需要来被选择性地实现,以改进访问被储存在分布式计算系统中的数据(例如,读取或写入文件系统数据)时的性能。具体而言,数据访问组件使用能基于文件代理(例如,表面)操作的重定向器文件系统来获得对后备存储的访问。数据访问组件在使用文件代理访问后备存储(例如,团块存储)中的数据(例如,页面团块)时进一步配置用于高速缓存存储(例如,计算节点SSD或RAM)的高速缓存存储数据结构(例如,与后备存储的转换表一起操作的工作集)以与后备存储一起操作。高速缓存存储高速缓存与数据访问请求(例如,读取操作或写入操作)相关联的数据。由此,高速缓存存储至少包括来自后备存储的数据的子集。高速缓存存储基于使用数据访问组件配置的高速缓存存储数据结构(例如,工作集)来操作。具体而言,配置设置可以在数据访问组件中被定义,以支持模块化数据操作系统的各组件。高速缓存存储数据结构包括与转换表(例如,块地址转换表)相关联的两层级高速缓存系统,以用于访问数据访问请求的数据。在使用高速缓存存储数据结构的情况下,可以在高速缓存存储或作为用于其中定义的数据对象的存储库操作的后备存储处访问数据。数据可指代通过特定解释动作给出含义的一个或多个符号的序列。数据可以是被储存在高速缓存存储或后备存储处所支持的不同数据结构中的存储器地址。
数据访问组件支持不同类型的高速缓存策略,由此,高速缓存块基于对应的高速缓存策略来被处理。在本公开的各个实施例中,数据访问组件还可实现高速缓存块惰性写入器组件以惰性地写入高速缓存块。数据访问组件还支持数据访问扼流组件,以限制数据访问组件处所处理的输入/输出(I/O)请求的最大数量或速率。具体而言,数据访问组件实现了针对处理模块化数据操作系统的不同组件处的I/O请求进行扼流,以在访问所请求的数据时提供一致的性能。
模块化数据操作系统功能性当被实现时在操作上是模块化的。基本上,数据访问组件利用模块化数据操作系统框架来选择性地实现模块化数据操作系统的不同组件。选择性实现基于:为特定VM、计算节点或计算节点的群集初始化和配置数据访问组件。作为示例,在将数据访问组件部署和/或初始化为计算节点上的代理之际,计算节点的管理员可选择一个或多个模块化数据操作组件并配置模块化数据操作系统配置,该配置定义了针对重定向器组件、高速缓存存储组件、后备存储组件、高速缓存块惰性写入器组件和数据访问扼流组件等等的特征、属性和可选选项。就此而言,模块化数据操作系统提供了在实现不同组件以取得计算任务的各种目标时的灵活性。在接收到对属性和选项的选择之际,模块化数据操作系统可被相应地配置。作为示例,第一配置可包括各组件中的每一者的实现,而另一配置可包括仅各组件的子集的实现。
数据访问扼流组件可解决共享计算节点资源的其他问题。作为背景,常规上在节点上部署新应用的顾客可在节点上将该应用原型化,并基准测试(benchmark)以用于向外扩展该应用。该基准很可能基于一致的性能,因为VM在理想条件下都支持相同的应用。在生产中,支持应用的VM可被供应有支持极度活跃的其他应用(例如,有噪邻居)的VM,并且由此,顾客不会产生基于原型基准观察到的相同性能。该问题有时被称为有噪邻居问题。作为模块化数据访问系统的一部分的数据访问扼流组件可通过提供对扼流的选择性和可任选实现来解决该问题。扼流可以指基于预定义阈值(例如,预定义的阈值条件)来限制数据操作的总数或数据操作的速率。在操作中,扼流可导致空闲资源,但是这样的权衡允许针对顾客的一致且可预测的性能。
扼流可按各种不同的配置来实现(例如,高速缓存之上或高速缓存之下或共享式扼流或隔离式扼流)。作为示例,“高速缓存之上”扼流可以指对涉及高速缓存存储的数据操作进行扼流,而“高速缓存之下”扼流可以指对涉及后备存储的数据操作(例如,在高速缓存未命中上的网络接口控制器(NIC)I/O请求)进行扼流。“共享式扼流”可以指一组组件或设备(例如,四个VM)共享针对所选择的扼流的相同的预定义阈值条件(例如,4个VM受限于到后备存储的400个高速缓存未命中IOPS),或者“隔离式扼流”,其中每个设备或组件(例如,VM)具有针对所选择的扼流的独立的预定义阈值条件(例如,VM受限于到后备存储的400个高速缓存未命中IOPS)。在本公开的各实施例中构想了扼流的其他变体和组合。
首先参考图1,图1解说了其中本公开的各实现可被采用的示例性模块化数据操作系统100。具体而言,图1示出了根据本公开的各实现的模块化数据操作系统100的高级架构,其中节点110具有重定向器组件120、高速缓存存储130、后备存储140和数据访问组件150。除了未示出的其他组件之外,模块化数据操作系统100还包括运行VM 112、VM 114、VM116和VM 118的节点110、计算设备用户客户端160和管理员客户端170,参考图6和7来更详细地描述所述节点、各VM和计算设备。模块化操作系统100还包括经由工作集组件152、高速缓存块惰性写入器组件154和数据访问扼流组件156支持高速缓存存储工作集的数据访问组件150。
如本文中所使用的系统指代任何设备、过程、或服务或其组合。可以使用作为硬件、软件、固件、专用设备或其任何组合的组件来实现系统。系统可被集成到单个设备中或者其可以分布在多个设备上。系统的各种组件可以是共处一处的或分布式的。该系统可以由其他系统及其组件形成。应当理解,本文中所描述的这种及其他布置仅作为示例来阐明。
已经标识了模块化数据操作系统100的各种组件,需要注意,任意数量的组件可被采用来实现本公开的范围内的期望的功能性。虽然为了清楚起见用线条示出了图1的各种组件,但实际上,对各种组件的描绘并不是那样清楚,并且按比喻的说法,这些线条可以更准确地是灰色的或模糊的。此外,虽然图1的某些组件被描述成各单独的组件,但是该描绘在性质上和数量上是示例性的,且不应该解释为对本公开的所有实现的限制。可以基于以上列出的组件的功能性和特征来进一步描述模块化数据操作系统100功能性。
作为所示的那些布置及元素的补充或替换,可使用其他布置及元素(例如,机器、接口、功能、次序、以及功能的分组等),并且可完全省略某些元素。此外,本文中所描述的许多元素是功能实体,其可被实现为分立或分布式组件,或者与其他组件相结合地实现,并且可按任何合适的组合和位置来实现。本文中被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行被储存在存储器中的指令的处理器来执行。
下面参考诸如支持基于块的高速缓存存储和基于团块的后备存储的文件系统之类的示例来详细描述本公开的各实施例。附加地,讨论了示例性属性和规范(例如,表面文件代理、块大小、层级、高速缓存类型、页面团块等)。尽管如此,所指示的具体示例并不意味着限制。在一个示例性实施例中,如图1所示,模块化数据操作系统100包括具有文件-代理(例如,表面)的重定向器组件120(例如,驱动器、虚拟驱动器、或系统文件)、用于支持被储存在高速缓存存储130中的两层级工作集的工作集组件152、高速缓存块惰性写入器组件154、数据访问扼流组件156和后备存储140。在高层次处,数据访问组件经由文件代理接收数据访问请求,并基于模块化数据操作系统框架处理数据请求。具体而言,模块化数据操作系统框架基于:使用数据访问组件150以在管理和控制数据操作方面利用高速缓存存储130和高度可用的后备存储140。
继续参考图1,重定向器组件120负责提供对支持与后备存储140一起操作的重定向器文件系统的块设备(VHD)的访问。表面指代用文件代理格式的文件代理,重定向器组件120使用该文件代理将数据访问请求重定向到高速缓存存储或后备存储。请求实体(例如,经由VM的用户客户端160)将数据访问请求引导到VHD,该VHD作为块设备被挂载,但是基于重定向器组件120将数据请求从文件代理格式转换为团块存储格式来操作以提供对后备存储140的访问。数据访问请求可指代针对与数据访问请求相关联的数据的读取操作或写入操作。在操作中,重定向器组件120促成将表面作为单个系统范围驱动器号的根目录中的本地文件名展示给节点110的资源。该表面支持访问被储存在高速缓存存储130或后备存储140中的数据。用于访问表面的驱动器号当在数据访问组件150的初始化阶段期间时(例如,当将数据访问组件150部署和/或配置为被托管在计算节点上的代理时)可被建立。初始化阶段还包括配置高速缓存存储数据结构元素(工作集、转换表、层级等)以与高速缓存存储130和后备存储140一起操作,如本文中更详细地讨论的。
可以配置表面以支持重定向器文件系统的一系列功能。表面可支持特定命令,例如,表面可被枚举、打开、关闭、写入和删除。这些命令可基于表面所支持的文件系统类型。表面可被连接到一个后备存储。表面基于以下而可以是只读的或读写的:对应表面的后备存储的访问配置设置。作为示例,VM访问在块设备存储(诸如VHD)中呈现为文件的表面,然而这些表面重定向到高速缓存存储或后备存储。VM可请求文件M:\foo.vhd,然而,foo.vhd实际上被重定向到实现了团块存储的后备存储中的页面团块。如果用户在命令窗口中执行“dir m:”,其中m:是表面驱动器,则所列出的任何文件都是表面。重定向器组件120可被配置成兼容(be agnostic to)各文件格式。表面可被配置为具有虚拟硬盘文件(VHDX)的虚拟硬盘(VHD)。重定向组件120还接收并处理管理程序(例如,虚拟机监视器)对表面的请求,以支持包括创建和运行虚拟机的管理程序功能性。
继续参考图1,图1包括后备存储140(后备存储组件),该后备存储140负责支持后备存储中的数据操作。后备存储140用作用于云计算基础设施中的数据的存储库。如图所示,后备存储140不是节点110的一部分;然而,构想了后备存储140可被实现为节点110的一部分。后备存储140可包括一个或多个冗余后备存储以支持冗余和高可用性。在一个实施例中,数据采用团块的形式,包括团块存储中的页面团块。针对未高速缓存的表面执行的读取数据操作将导致从团块存储的读取。表面和后备存储一起支持重定向器文件系统。例如,从表面的偏移零的4K读取将导致后备页面团块的4K读取偏移零。后备存储140可支持来自引用后备存储140的表面的读写和只读数据操作。后备存储140与高速缓存存储130一起操作,但是高速缓存存储130不在后备存储140中创建或删除数据。高速缓存存储130被配置(例如,在初始化阶段期间的注册过程)成在特定后备存储140中执行数据操作。由此,模块化数据操作系统100可基于对应配置来支持多个后备存储。在初始化期间,后备存储140规范可促成高速缓存存储130支持文件-系统大小语义的容量。高速缓存存储130扩展和收缩数据的大小(例如,页面团块的大小)以实现标准文件-系统语义。例如,页面团块在大小上可以是512的倍数,因此实际文件大小可按元数据的形式被记录在页面团块中。作为示例,表面可以像文件(例如,新技术文件系统(NTFS)文件)一样操作,其中文件大小可被设置为字节-粒度,而不管底层存储介质的任何扇区大小的限制。被展示给客户端的文件大小(即,字节-粒度大小)作为元数据被储存在页面团块中。就此而言,传达对表面的数据访问请求的客户端可将用于表面的文件大小设置为字节粒度。
可经由数据访问组件150向后备存储140分配来自管理员客户端170的高速缓存策略。高速缓存策略可指代经定义的一组规则,该组规则被用来确定是否可使用数据的经高速缓存的副本来满足数据访问请求。后备存储140可配置有若干不同的高速缓存策略之一。单个高速缓存策略可以与一个后备存储相关联。当首次建立任何后备存储时,“全无”的高速缓存策略可被配置用于后备存储,但是其可在后续配置中(例如,在初始化阶段期间)被改变为另一类型。如所讨论的,数据访问组件150选择性地实现模块化数据操作系统的各组件。例如,节点110可配置有重定向器文件系统,但是却被配置成不带扼流或高速缓存,由此,页面团块不向高速缓存存储130注册以展示引用后备存储140中的页面团块的表面。数据访问组件150可选择实现针对后备存储140进行高速缓存,由此,高速缓存类型(除了“非高速缓存”之外)可以在初始化阶段期间被选择以将后备存储140与高速缓存存储130和数据访问组件150中的高速缓存存储数据结构相关联。
模块化数据操作系统100支持若干不同的高速缓存类型。“全无”的高速缓存类型可以与后备存储140相关联,从而不引起对任何读取或写入进行高速缓存。具体而言,使用表面对后备存储140的任何读取或写入直接针对后备存储140(例如,页面团块)被作出,而不是被高速缓存在高速缓存存储130中。任何刷新(flush)或强制单元访问(FUA,其为迫使已写数据直达稳定存储的I/O命令选项)可被忽略。本文中所讨论的其他高速缓存类型执行读取高速缓存但在写入策略方面不同。当后备存储140配置有“全无”高速缓存类型时,这消除了与高速缓存存储130或高速缓存存储数据结构的创建或关联。
“透写(write-through)”的高速缓存类型可以与后备存储140相关联,以致使对后备存储140的写入被直接转发到后备存储140(例如,页面团块),并且数据被置于高速缓存存储130中且在高速缓存存储数据结构中被跟踪。数据访问请求仅当从后备存储140接收到数据已被提交到后备存储的确认时才向请求设备完成。任何刷新或强制单元访问(FUA,其为迫使已写数据直达稳定存储的I/O命令选项)可被忽略。在一个示例中,64KB高速缓存块被进一步划分成大小为4KB的16个扇区。高速缓存块内的每个扇区被个体地标记为非当前、当前、当前且脏,如本文中更详细地讨论的。为了被高速缓存,不是4K对齐的(或偏移或长度)的写入首先被配置成使任何未对齐的头部或尾部扇区在高速缓存中被预填充。作为示例,假设客户端执行起始于偏移2048处的8192字节写入。该写入跨三个4K扇区(即,扇区0的最后2K、扇区1的全部,以及扇区2的前2K)。此外,假设在写入之前,所有的扇区都处于“非当前”状态。因为4K扇区内的所有数据被有利地要求配置为相同的状态,所以指示仅扇区0的最后2K为“当前”或“脏”变得与优选配置不一致。为了化解该场景,两个2K读取被发送到后备存储。一个用于扇区0,并且一个用于扇区2。扇区0和扇区2现在是“当前”的。写入的前2K被复制到扇区0的后半部分中,中间4K被复制到扇区1中,而写入的最后2K被复制到扇区2的前半部分中。所有三个扇区都标记为脏,并作为12K写入被写入到后备存储。就此而言,预填充命令被执行以高速缓存已写数据。构想了在不同实施例中可以或者可以不保留该行为。
“回写(write-back)”的高速缓存类型可以与后备存储140相关联,以致使与非FUA写入相关联的数据被记录在高速缓存存储130中,该高速缓存存储130经受以上所讨论的非对齐扇区预填充,并且相应的高速缓存块被置于脏列表上,以最终使用惰性写入操作被写入到后备存储140。该命令立即向请求设备完成。该后备存储140上的刷新和FUA被履行。包括FUA的写入表现为与其在透写模式中一样。此外,“临时”的高速缓存类型可以与后备存储140相关联,以致使数据被短暂地处理。临时数据被复制到高速缓存存储130中,并且完成被立即返回给请求设备。刷新和FUA被忽略。除非本地高速缓存(例如,工作集)最终几乎被填充满了脏数据,否则没有数据将被写入到后备存储。最后,高速缓存类型“持久”可以与节点110相关联,以致使与数据访问请求相关联的数据即使在某些故障之后也停留在节点110上。该数据不受后备存储140支持;但是,该数据在电力故障之际不被丢失。在各实施例中,持久数据可被原子地累积并写入到高速缓存存储130,在高速缓存存储130中其被保留直到以其他方式被删除。
继续参考图1,高速缓存存储130(或高速缓存存储组件)负责储存被高速缓存了的数据。高速缓存存储130通常指代高速缓存块的集合。高速缓存可以是基于高速缓存存储数据结构的两层级高速缓存方案(例如,与后备存储的转换表相关联的工作集)操作的本地RAM(随机存取存储器)和/或(固态驱动器)SSD。在模块化数据操作系统100的各实现中,高速缓存存储130还可根据需要来被分区以用于针对VM的隔离式或共享式高速缓存。高速缓存存储130与后备存储140一起操作。具体而言,经高速缓存的数据可基于对应的后备存储140和如以上所描述的后备存储140的高速缓存策略来被高速缓存。
高速缓存存储130高速缓存数据,因此对该数据的将来请求可被更快地服务;被储存在高速缓存中的数据可能是较早计算的结果,或者是被储存在后备存储中的数据的副本。高速缓存命中在所请求的数据可在高速缓存中被找到时发生,而高速缓存未命中在所请求的数据不能够在高速缓存中被找到时发生。高速缓存命中通过从高速缓存存储组件读取数据而被服务,这比重新计算结果或从后备存储读取更快速。在一个实施例中,高速缓存存储130是高速缓存块(例如,大小为64K)的集合。高速缓存存储130可实现具有驻留在非分页池中的高速缓存块的存储器高速缓存存储,以及具有驻留在本地原始存储卷上的高速缓存块的存储高速缓存存储。具体而言,高速缓存被实现为两层级高速缓存:层级0是RAM,而层级1是块存储设备(例如,本地SSD)。系统可具有多个高速缓存存储,例如,系统可实现可以在高速缓存存储中被利用的多个SSD。SSD可以在无需底层文件系统的情况下被实现,同时仅通过NTFS执行64K读取和写入。RAW(原始)卷(即,不存在文件系统)可以在每个SSD上被创建,并且对RAW卷的访问作为64K高速缓存块的简单阵列来被执行。
具有高速缓存存储的高速缓存块可以被子分配给具有一个或多个工作集分区的层级。作为示例,四个被完全相同地设定大小的RAM卷[0-3]可以在四个SSD和两个工作集[0-1]上被实现,每个工作集专用于与两个VM相关联的所有虚拟驱动器。另外,四个层级-1高速缓存存储可被创建,每个RAW卷上各一个。由此,有利地,在如何将存储内的高速缓存块分配给工作集的方面现在存在着一些灵活性。例如,高速缓存存储0和1中的所有块可被分配给工作集0,并且高速缓存存储2和3中的所有块可被分配给工作集1。另外,来自所有四个高速缓存存储的高速缓存块中的一半可被分配给工作集0,而来自所有四个高速缓存存储的高速缓存块中的另一半可被分配给工作集1。层级0高速缓存存储可被排除出子分配。例如,当针对层级0高速缓存用10,000个高速缓存块来创建工作集时,655,360,000个字节的RAM可被分配以用来创建新的层级0高速缓存存储,并且所有高速缓存块都被分配给新的工作集。构想了在必要的情况下可以在各工作集之间移动高速缓存块。例如,如果两个工作集正在使用所有可用的层级1高速缓存块,并且接着新的工作集需要被创建,则1/3的高速缓存块可以被从这两个现有工作集中的每一者移动到该新的工作集。
继续参考图1,图1包括支持模块化数据操作系统100的数据访问组件150。数据访问组件150可以在计算设备(例如,计算节点、VM、群集)上被初始化,使得数据操作使用数据访问组件150支持的组件的选择性实现来被管理和控制。出于解说的目的,参考运行多个VM的节点110来描述数据访问组件。数据访问组件150包括工作集组件152、高速缓存块惰性写入器组件154、和数据访问扼流组件156。
数据访问组件150可以在节点110上被初始化以配置模块化数据操作系统100。初始化阶段可包括生成配置设置,例如,使用数据访问组件150标识和选择用于运行模块化数据操作系统100的组件、特征、属性和规范。配置设置可以基于要在节点上执行的计算任务的类型。例如,不同的顾客可具有不同的用例,这些用例其自身适宜于不同的配置设置。用例可能要求实现后备存储与不同高速缓存策略、高速缓存块惰性写入、和数据访问扼流的变体和组合。
参考图1,数据访问组件150可以是节点操作系统的现有部分,或者数据访问组件150可以在初始化阶段期间被部署到节点110上。数据访问组件150可包括用于过程数据操作的默认配置。数据访问组件150可进一步或附加地与管理员客户端170通信以接收用于数据访问组件150的配置设置。配置设置可包括:选择确定后备存储是否针对一个或多个VM来被实现,标识用于后备存储的高速缓存策略,将工作集分配给特定后备存储,确定是否要实现共享式工作集配置或隔离式工作集配置,选择来实现高速缓存块惰性写入器组件和数据访问扼流组件、与数据访问扼流组件相关联的选择选项等。本文中构想了用于模块化数据操作系统100的配置设置的其他变体和组合。
参考图2,解说了模块化数据操作系统的各种配置。在图2中,第一系统配置200A包括具有VM 212A和VM 214A的节点210A。VM 212A和VM 214A与数据访问组件220A以及具有VM212A和VM 214A之间的共享工作集232A的高速缓存存储230A一起操作。高速缓存存储230A与具有两个隔离的后备存储(后备存储242A和后备存储244A,每个都具有高速缓存策略设置)的后备存储240相关联。每个后备存储都是隔离的且对应于VM。
第二系统配置200B包括具有VM 212B和VM 214B的节点210B。VM 212B和VM 214B与数据访问组件220B和在VM 212B和VM 214B之间分别具有隔离的工作集WS 232B和WS 234B(在高速缓存存储中被分区)的高速缓存存储230B一起操作。高速缓存存储230B与具有两个隔离的后备存储(后备存储242B和后备存储244B,每个都具有高速缓存策略设置)的后备存储240B相关联。每个后备存储被隔离且对应于高速缓存存储230B中的VM和/或工作集。
第三系统配置200C包括具有VM 212C、214C和VM 216B的节点210C。VM 212B、VM214B和VM 216B与数据访问组件250C和在VM 212C、VM 214C和VM 216C之间具有隔离的工作集(在高速缓存存储中被分区)的高速缓存存储230C一起操作。具体而言,VM 212C和VM214C共享WS 232C,而VM 216C与WS 232C隔离。高速缓存存储230C与在VM 212C、VM 214C和VM 216C之间共享的后备存储240C相关联。根据本文中所描述的实施例,第三系统配置进一步包括用于对数据访问请求进行扼流的预定义阈值条件的“高速缓存之上”扼流260C实现和“高速缓存之下”扼流270C实现。相应地,配置设置在支持数据操作方面提供了灵活性和粒度,并且这些设置反映了设置将适当地支持顾客的特定用例。
参考图3,提供了示例性模块化数据操作系统的各组件的图解。数据访问组件(例如,数据访问组件350)可进一步负责为节点(例如,节点310)提供一个或多个工作集(例如,工作集332A和工作集332B)。工作集主要支持与高速缓存相关的动作。工作集是支持在模块化数据访问系统中对数据进行高速缓存的数据结构。VM(例如,具有虚拟驱动器的VM 312)的工作集包括该VM的高速缓存存储(例如,高速缓存存储330)数据空间中的当前位于后备存储(例如,作为后备存储342A和后备存储342B操作的后备存储340)中的页面集。工作集可包括可分页数据分配。工作集与每后备存储的转换表(例如,转换表344A和转换表344B)一起操作,该转换表被用来将后备存储相对文件偏移转换为工作集内的高速缓存块。工作集与贡献自一个或多个高速缓存存储的高速缓存块的一个或多个层级(例如,层级_0 334A和层级_1 334B)一起操作。层级1可被实现为一组分区的存储器高速缓存存储(例如,RAM_0336A、RAM_1 336B、RAM_2 336C、和RAM_3 336D),而层级2被实现为本地SSD存储高速缓存存储(例如,SSD_0 338A、SSD_1 338B、SSD_2 338C、和SSD_3 3386D)。在高层次处,工作集包括具有指向页表的指针的页表目录,该页表目录包括PDE(页表目录条目),并且各页表包括支持高速缓存存储330到后备存储340的映射的PTE(页表条目)以用于执行数据操作。
工作集还与后备存储一起操作。后备存储可以与正好一个工作集相关联,而工作集可以在任意数量的后备存储之间被共享。就此而言,高速缓存了的后备存储和工作集支持多对一关系。与工作集相关联的后备存储有资格使用工作集内的任何或所有高速缓存块,如替换策略规定的那样。如所讨论的,后备存储可配置有不同的写入策略。例如,写入策略可以是临时和回写策略。具有不同策略的后备存储可以不驻留在相同的工作集中。作为示例,回写和透写后备存储可以一起驻留在单个工作集中,然而临时后备存储不能够与回写或透写后备存储共享工作集。
工作集基于每后备存储的转换表和层级来操作。转换表可指代后备存储数据和高速缓存存储数据之间的转换或映射。作为示例,数据可基于块地址来被储存。当后备存储与工作集相关联时,顶级页表被创建且与后备存储相关联。页表是数据访问组件中用来储存高速缓存中的数据与后备存储中的数据之间的映射的数据结构。例如,高速缓存中的数据可以是数据块,而后备存储中的数据可以是与后备存储中的相对文件偏移相关联的页面团块。高速缓存中的数据块可以由经由VHD访问数据的VM来访问,该VHD配置有具有用来访问页面团块的团块接口的后备存储。多个VM中的VM被给予以下印象:它正基于高速缓存到后备存储配置与数据的大的毗连区段一起工作,该高速缓存到后备存储配置可提供要么来自高速缓存要么来自后备存储的所请求的数据。高速缓存存储将更新近使用的数据块高速缓存在页表中。当数据请求被接收到时,高速缓存存储首先通过工作集来被搜索,如果匹配被找到,则数据块被从高速缓存存储中检索到并被传达给请求客户端。然而,如果不存在匹配,则从后备存储中检索所请求的数据。
在一个示例中,每个页表由层级0或层级1中的单个64K高速缓存块组成,并且每个页表条目的大小为8个字节。每个页表于是由213=8,192个PTE组成。页表的两级允许226个高速缓存块的映射,并且其中每个64K高速缓存块贡献216个字节,每个高速缓存了的后备存储具有最多213+13+16个字节或4TB。该地址空间的213+16个字节或512MB被保留以递归地映射页表,而其余的可用于映射用户数据。这产生了242-229或4TB–512MB或4,397,509,640,192字节的最大可使用后备存储大小。
最顶层的页表被称为页目录,每个页目录包含8,192个页目录条目或PDE的数组。“当前”PDE引用页表,该页表进而是8,192个页表条目或PTE的数组。“当前”PTE引用包含多达16个扇区的高速缓存行,每个扇区大小为4K。PDE和PTE共享完全相同的格式,除了ChildPTE Count(子PTE计数)字段之外,该字段仅存在于PDE中。页表可存在于高速缓存的层级0或层级1中,但作为元数据,它们永远不会被写入到后备存储。客户端生成的刷新不影响转换表。
后备存储页表条目
[63:34] [33:32] [31:0]
被保留的MBZ 层级级别加一 页帧号
后备存储页目录条目
如图所示,页表条目和页目录条目各自包括页帧号(PFN)字段、层级级别加一字段、被保留的,MBZ(必须为零)字段,子PTE计数字段计数仅在页目录条目中被找到。页帧号字段值表示层级内的目标高速缓存块的页帧号。
层级级别加一字段值指示所引用的页帧号驻留在其内的高速缓存块层级。可以从0、1或2中选择层级级别加一值。“0”–此页表条目“非当前”。用于该后备存储偏移的高速缓存块不能够在工作集中被找到。PTE中的所有其他字段必须为零。“1”–此页表条目“当前”。用于该后备存储偏移的高速缓存块可以在层级0中被找到,以页帧号来索引。表示给定后备存储偏移的高速缓存块并发地驻留在层级0和1两者中是可能的。在该情形中,层级0PFN被旗标为“已链接”并且包含向对应的层级1PFN的引用。“2”–此页表条目“当前”。用于该后备存储偏移的高速缓存块可以在层级1中被找到,以页帧号来索引。如果工作集不包含层级1,则该值是违规的。
仅在PDE内被使用的子PTE计数值包含由页帧号索引的页表内的有效PTE的计数。当且仅当层级级别加一为零时,该值为零。当PTE被标记为非当前时,对应于包含页表的PDE的子PTE计数字段被递减。如果所得的值达到零,则页表被释放并且PDE被标记为非当前。
工作集中的每个高速缓存块可由单个PTE来(直接或间接地)引用。高速缓存转换所必需的页表数量是高速缓存块的数量和稀疏性的函数。作为示例,在最坏的情形中,多达512MB的转换表可能被要求来表示用于单个工作集的所有经高速缓存的数据。单个工作集高速缓存层级可包含多达232个高速缓存块,或232+16个字节,或256TB的高速缓存。在最坏的情形中,多达512MB的转换表可能被要求来映射整个4TB后备存储。
关于层级,基于工作集来分别访问一个或两个层级:层级0和层1。例如,层级0可包含最少1,024个高速缓存块(64MB),但实际上,层级0高速缓存可能大得多。层级0可仅仅由贡献自存储器高速缓存存储的块组成。层级1(如果其存在的话)由来自一个或多个存储高速缓存存储的高速缓存块组成。在一个示例性实施例中,层级0和层级1中的经组合的块可以至少等于相关联的后备存储的数量乘以8,192,从而产生每后备存储512MB的高速缓存。该最小值保证用于所有相关联的后备存储的所有必需的页表都可驻留在高速缓存分层结构内。如所提及的,在一些实施例中,该元数据不被迁移到后备存储。
特定层级内的高速缓存块可源自不同的高速缓存存储。例如:想象三个SSD,每个SSD展示单个高速缓存存储。所有这三个高速缓存存储可以与单个工作集的级别1层级相关联。数据在层级0处进入高速缓存,并将如高速缓存策略所指示地迁移到层级1和/或后备存储。层级可支持高速缓存块列表。每个层级采用4种类型的列表。空闲列表、当前列表、脏列表和刷新列表。层级可恰好包含空闲、当前和脏列表中的一者,以及每个所表示的后备存储的刷新列表。在空闲列表中,该列表上的高速缓存块不包含有效数据,并且立即可供被分配以及被用来接收和储存高速缓存了的数据。在当前列表中,当前列表可包含具有一个或多个有效扇区且不具有脏扇区的高速缓存块。这是有序列表,其中最近使用的(MRU)块位于头部,而LRU块位于尾部。每当高速缓存块被访问以便满足读取时,其就被移动到该列表的头部。当新的高速缓存块是用来服务高速缓存操作所必需的并且空闲列表中无可用的块时,块被移除出当前列表的LRU端,从页面转换表中被取消映射,并被重新用于新的高速缓存操作。
关于脏列表,脏列表可包括包含正等待被惰性地写入到层级1或后备存储的一个或多个脏扇区的高速缓存块。在仅两层级工作集的情形中,层级0脏列表还将包括包含仅仅是当前的但尚不存在于层级1中的扇区的高速缓存块。包含元数据(页表)的层级0高速缓存块通过脏列表和惰性写入器被类似地移动到层级1。该脏列表根据高速缓存块何时首次进入脏列表来被排序。
对高速缓存块的后续访问(读取或写入)不扰乱其在列表中的顺序。当惰性写入器发起将脏块内的数据写入到下一个层级或后备存储时,该块被标记为干净,并且在成功写入完成之际,被插入在当前列表的头部。尽管针对给定后备存储偏移的当前数据可并发地存在于层级0和1中,但是脏数据仅可存在于一个层级中或另一层级中。在其中相同的干净数据驻留在层级0和层级1中并且将该数据的一部分作为目标的写入到达的情形中,相关联的扇区在层级0高速缓存块中被标记为“脏”,并且在层级1高速缓存块中被标记为“非当前”。刷新列表可包含正被主动写入(刷新)到层级1或后备存储的高速缓存块。在层级内存在每个所表示的后备存储的分开的刷新列表。
参考图1,数据访问组件150可支持高速缓存块惰性写入器组件154。数据访问组件150可采用负责惰性写入的两个线程。单个层级0惰性线程负责为所有工作集提供层级0脏和刷新列表,在合适的情况下将这些块迁移到层级1或后备存储。同样,单个层级1惰性线程为所有工作集提供层级1脏和刷新列表。在没有刷新操作的情况下,脏块取决于工作集是否采用“临时”高速缓存策略、根据两种方案(回写和临时)中的一种而准备好被从脏列表写入。构想了采用“临时”高速缓存策略的脏块可不被写入到后备存储。在一些场景中,工作中增加的读取和写入活动(即,高速缓存压力)可以与阈值相关联,该阈值可触发“临时”脏块被写入到后备存储。如果从不存在充分的高速缓存压力来触发将脏块写入到高速缓存存储,则脏块可能永远不被写入到高速缓存存储。此外,“回写”脏块可以在被留在脏列表上老化达定义的时间段之后被写入到后备存储。理想地,“回写”脏块被替代地合并到其他脏区域中。“回写”脏块在一组主动操作中到达后备存储。
在回写方案中,当(1)从块被置于脏列表上起已流逝了特定时间段(例如,30秒)时,或者(2)当工作集中的脏高速缓存块的数量超过给定阈值(例如,75%)时,脏块被写入。在临时方案中,仅当工作集中可用(非脏)高速缓存块的数量落到128、或8MB以下时脏块才被写入。只有最下面的层级(例如,单层级工作集中的层级0或两层级工作集中的层级1)采用这种特殊的回写模式。
在仅两层级工作集的情形中,“当前”层级0高速缓存块扇区在其不存在于层级1中的情况下被认为是“脏”的。以此方式,惰性写入器不仅负责将脏扇区从层级0移动到层级1,而且还将尚未驻留在层级1中的任何当前数据迁移到层级1。在一个实施例中,对于每个惰性线程,多达16个异步写入可以是并发地待办的。每个线程按循环(round-robin)方式提供工作集的脏列表和后备存储的刷新列表,以防止(例如)永久地刷新的后备存储接收多于其份额的写入机会。
参考图1,数据访问组件150可进一步实现数据访问扼流组件156,该数据访问扼流组件156负责限制数据操作的最大数量或速率。数据访问扼流组件156可在高速缓存之上或高速缓存之下实现扼流,或者在共享式扼流实现或隔离式扼流实现中实现扼流,如以上所讨论。数据访问扼流组件156可基于所供应的扼流来操作。按所供应的模式的扼流用两个值来编程:每秒字节(BPS)和每秒输入/输出(IOPS)。BPS表示每秒将被处理的最大字节数,而不管所涉及的各个个体事务的数量。IOPS表示可在单一秒钟内被处理的最大事务(读取或写入)数,而不管这些事务的大小。零的值指示不存在限制。因此,对IOP或带宽或两者的限制可被施加。所供应的模式可使用令牌-桶(token-bucket)方案来实现。作为示例,扼流可包含两个令牌桶:一个用于BPS,并且一个用于IOPS。当I/O被呈现给扼流,并且BPS桶中存在足够的令牌且IOPS桶中存在至少一个令牌时,合适的令牌数量被从扼流令牌桶中扣除并且该I/O被传递。然而,如果在一个或两个桶中存在不足数量的令牌,则使I/O排队等待扼流。可实现周期性(例如,20次/秒)的扼流循环以补充令牌桶。当这被执行时,扼流的I/O队列不为空,由此,待处理的操作基于每个桶中的令牌级别而被取消排队和被分派。
现在转到图4,提供了解说用于实现模块化数据操作的方法400的流程图。最初在框410处,数据访问请求在数据访问组件处被接收。数据访问组件与数据相关联。数据访问组件基于配置设置来选择性地实现模块化数据操作功能性。在初始化阶段期间,配置设置被配置成用于由数据访问组件支持的一个或多个所选择的模块化组件。配置设置标识被用于处理数据访问请求的属性。数据能基于重定向器文件系统来访问。数据访问请求被引导到作为基于文件代理格式操作的块设备被挂载的虚拟硬盘,数据访问请求被从文件代理格式转换为团块存储格式以访问数据。
在框420处,与工作集相关联的转换表基于数据访问组件的配置设置来被访问,以确定用于执行数据访问请求的位置。转换表支持基于页目录条目、页表条目和页帧号将后备存储相对文件偏移转换为高速缓存存储块。数据访问请求使用高速缓存存储或与工作集相关联的后备存储来被执行。高速缓存存储被注册以基于高速缓存策略与后备存储一起操作,数据访问请求致使后备存储中的数据的至少一子集基于高速缓存策略而被高速缓存在高速缓存存储中。数据访问请求基于后备存储的高速缓存策略来被处理,该高速缓存策略选自以下之一:全无、透写、回写、临时和持久,如上文中所讨论。
在框430处,数据访问请求基于使用工作集的转换表所确定的位置来被执行。当数据被高速缓存在高速缓存存储中时,数据访问请求使用高速缓存存储来被执行,而当数据未高速缓存在高速缓存存储中时,数据访问请求基于后备存储来被执行。在各个实施例中,数据访问请求的执行基于预定义阈值来被扼流。
现在转到图5,提供了解说用于实现模块化数据操作的方法500的流程图。最初在框510处,数据访问请求在数据访问组件处被接收。数据访问组件与数据相关联。数据访问组件基于配置设置来选择性地实现模块化数据操作功能性。在框520处,与工作集相关联的转换表基于数据访问组件的配置设置来被访问,以确定用于执行数据访问请求的位置。转换表支持基于页目录条目、页表条目和页帧号将后备存储相对文件偏移转换为高速缓存存储块。数据访问请求使用高速缓存存储或与工作集相关联的后备存储来被执行。
在框530处,确定用于对数据访问请求进行扼流的预定义阈值条件被满足,该预定义阈值在配置设置中被标识。用于对数据访问进行扼流的预定义阈值条件针对高速缓存存储数据访问请求或后备存储数据访问请求来被定义。用于对数据访问进行扼流的预定义阈值条件针对每秒字节(BPS)或每秒输入/输出操作(IOPS)来被定义。在框540处,数据访问的执行被扼流,直到预定义阈值条件不被满足。
在框550处,数据访问请求基于使用工作集的转换表所确定的位置来被执行。当数据被高速缓存在高速缓存存储中时,数据访问请求使用高速缓存存储来被执行,而当数据未高速缓存在高速缓存存储中时,数据访问请求基于后备存储来被执行。在各个实施例中,数据访问请求的执行基于预定义阈值来被扼流。
关于模块化数据操作系统,本文中所描述的各实施例可基于模块化数据操作服务平台来改进数据访问性能。模块化数据操作服务平台组件指代用于管理对数据的访问的集成组件。集成组件指代使用模块化数据操作服务平台来支持数据访问功能性的硬件架构和软件框架。硬件架构指代各物理组件及其相互关系,而软件框架指代提供可用设备上所操作的硬件来实现的功能性的软件。端到端的基于软件的模块化数据操作服务平台可在模块化数据操作服务平台组件内操作,以对计算机硬件进行操作来提供模块化数据操作服务平台功能性。由此,模块化数据操作服务平台组件可管理资源并为模块化数据操作服务功能性提供服务。根据本发明的各实施例,构想了它们的任何其他变体及组合。
作为示例,模块化数据操作服务平台可包括API库,该API库包括针对例程、数据结构、对象类及变量的规范,这些规范可支持设备的硬件架构与模块化数据操作服务平台系统的软件框架的交互。这些API包括针对模块化数据操作服务平台系统的配置规范,使得数据访问组件和其中的组件可在模块化数据操作服务平台中彼此通信,如本文中所描述。
在简要描述了本发明各实施方式的概览之后,以下描述其中可实现本发明的各实施方式的示例性操作环境,以便为本发明各方面提供通用上下文。首先具体参考图6,示出了用于实现本发明的各实施例的示例性操作环境,并将其概括地指定为计算设备600。计算设备600只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将计算设备600解释为对所例示的任一组件或其组合有任何依赖性或要求。
本发明可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令(包括诸如程序模块之类的计算机可执行指令)的一般上下文中描述。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。
参考图6,计算设备600包括直接或间接耦合以下设备的总线610:存储器612、一个或多个处理器614、一个或多个呈现组件616、输入/输出端口618、输入/输出组件620和说明性电源622。总线610表示可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。虽然为了清楚起见利用线条示出了图6的各框,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等呈现组件认为是I/O组件。而且,处理器也具有存储器。可以认识到,这是本领域的特性,并且重申,图6的图示只是例示可结合本发明的一个或多个实施方式来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图6的范围之内的并且被称为“计算设备”。
计算设备600通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备600访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性与非易失性、可移动与不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或能用于储存所需信息且可以由计算设备600访问的任何其他介质。计算机存储介质将信号本身排除在外。
通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”意指以在信号中对信息进行编码的方式来使其一个或多个特性被设定或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
存储器612包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备600包括从诸如存储器612或I/O组件620等各种实体读取数据的一个或多个处理器。呈现组件616向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等等。
I/O端口618允许计算设备600逻辑上耦合至包括I/O组件620的其他设备,其中某些设备可以是内置的。说明性组件包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。
现在转向图7,图7解说了在其中本公开的各实现可被采用的示例性分布式计算环境700。具体而言,图7示出了包括云计算平台710的模块化数据操作平台系统(“系统”)的高级架构,其中该系统支持实现模块化数据操作。应当理解,本文中所描述的这种及其他布置仅作为示例来阐明。作为所示的布置及元素的补充或替换,可使用其他布置及元素(例如机器、接口、功能、次序、以及功能聚集等),并且可完全省略某些元素。此外,本文中所描述的许多元素是功能实体,其可被实现为分立或分布式组件,或者结合其他组件且以任何合适的组合和位置来实现。本文中被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行被储存在存储器中的指令的处理器来执行。
数据中心可支持分布式计算环境700,该分布式计算环境700包括云计算平台710、机架720、和机架720中的节点730(例如,计算设备、处理单元或刀片)。该系统可用云计算平台710实现,该云计算平台710跨不同的数据中心和地理区域运行云服务。云计算平台710可实现结构控制器740组件,该结构控制器组件供应并管理云服务的资源分配、部署、升级和管理。典型地,云计算平台710用于以分布式的方式来储存数据或运行服务应用。数据中心中的云计算基础设施710可被配置成主存和支持特定服务应用中的端点的操作。云计算基础设施710还可以是公共云、私有云、或专用云。
可为节点730提供在节点130上运行经定义的软件栈的主机750(例如,操作系统或运行时环境)。节点730还可被配置成执行云计算平台710内的专用功能(例如,计算节点或存储节点)。节点730被分配以运行承租者的服务应用的一个或多个部分。承租者可指代利用云计算平台710的资源的顾客。云计算平台710的支持特定承租者的服务应用组件可被称为承租者基础结构或承租。术语服务应用、应用或服务在本文中可互换地被使用,并宽泛地指代在数据中心之上运行或访问数据中心内的存储和计算设备位置的任何软件或软件部分。
当多于一个单独的服务应用被节点730支持时,该节点可被划分成虚拟机(例如,虚拟机752和虚拟机754)。物理机还可并发地运行各分开的服务应用。虚拟机或物理机可被配置成云计算平台710中的资源760(例如,硬件资源和软件资源)所支持的个性化计算环境。构想了可为特定服务应用配置资源。此外,每个服务应用可被划分成各功能部分,以使得每个功能部分能够在分开的虚拟机上运行。在云计算平台710中,多个服务器可被用于运行服务应用并执行群集中的数据存储操作。具体而言,服务器可独立地执行数据操作,但被展现为被称作群集的单个设备。群集中的每个服务器可被实现成节点。
客户端设备180可被链接到云计算平台710中的服务应用。客户端设备780可以是任何类型的计算设备,其可对应于例如参考图6描述的计算设备600。客户端设备780可被配置成向云计算平台710发出命令。在各实施例中,客户端设备780可通过虚拟因特网协议(IP)与各服务应用通信以及与将通信请求定向到云计算平台710中的指定端点的负载平衡器或其他装置通信。云计算平台710的组件可以经由网络(未示出)彼此通信,网络可包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。
已经描述了分布式计算环境700和云计算平台710的各个方面,需要注意,任意数量的组件可被采用来实现本发明的范围内的期望的功能。尽管为了清楚起见用线条示出了图7的各组件,但是在实际上,各组件的描绘并不是那样清楚,并且按比喻的说法,线条更精确地将是灰色的或模糊的。此外,虽然图7的某些组件被描述成各单独的组件,但是该描绘在性质上和数量上是示例性的,且不应该解释为对本发明的所有实现的限制。
在以下段落中描述的各实施例可以与专门描述的替换实施例中的一者或多者相组合。具体而言,所要求保护的实施例可在替换方案中包含对多于一个其他实施例的引用。所要求保护的实施例可指定对所要求保护的主题的进一步限制。
[用于PCT权利要求的文字支持的待决最终权利要求集]
本文用细节来描述本发明的各实施例的主题以满足法定要求。然而,描述本身并非旨在限制本专利的范围。相反,发明人已构想所要求保护的主题还可结合其他当前或未来技术以其他方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,尽管术语“步骤”和/或“框”可在本文用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序时,术语不应被解释为意味着本文公开的各个步骤之中或之间的任何特定顺序。
出于本公开的目的,单词“包括(including)”具有与单词“包含(comprising)”一样广义的含义,并且单词“访问(accessing)”包括“接收(receiving)”、“参考(referencing)”或“检索(retrieving)”。另外,诸如“一(a)”和“一(an)”包括复数以及单数,除非另外相反地指明。这样,例如,“一个特征”的限定满足存在一个或多个特征的情况。而且,术语“或(or)”包括连接的、分离的和这两者(a或b包括要么a要么b,以及a和b)。
为了以下详细讨论的目的,参考头戴式显示器单元来描述本发明的各实施例;然而本文所描绘的头戴式显示器单元仅仅是示例性的。组件可被配置成用于执行各实施例的新的方面,其中被配置的方式包括被编程来执行特定任务或者使用代码实现特定抽象数据类型。此外,尽管本发明的各实施例一般可指在本文所描述的头戴式显示器单元和示意图,但设想了所描述的技术可被扩展到其他实现环境。
参考各具体实施例描述了本发明的各实施例,各具体实施例在所有方面都旨在是说明性的而非限制性的。在不偏离本发明范围的情况下,各替换实施例对于本发明所属领域的技术人员将变得显而易见。
从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对结构而言显而易见且固有的其他优点。
可以理解,某些特征和子组合是有用的,并且可以在不参考其他特征或子组合的情况下使用。这是通过权利要求所构想的并且落在权利要求的范围内。

Claims (10)

1.一种用于实现模块化数据操作的计算机实现的方法,所述方法包括:
在数据访问组件处接收与数据相关联的数据访问请求,所述数据访问组件基于配置设置选择性地实现模块化数据操作功能性;
基于所述数据访问组件的所述配置设置访问与工作集相关联的转换表以确定用于执行所述数据访问请求的位置,其中所述数据访问请求使用高速缓存存储或与所述工作集相关联的后备存储来被执行;以及
基于使用所述工作集的所述转换表所确定的所述位置来执行所述数据访问请求,其中当所述数据被高速缓存在所述高速缓存存储中时,所述数据访问请求使用所述高速缓存存储来被执行,并且其中当所述数据未高速缓存在所述高速缓存存储中时,所述数据访问请求基于所述后备存储来被执行。
2.根据权利要求1所述的方法,其特征在于,在初始化阶段期间,所述配置设置被配置成用于由所述数据访问组件支持的一个或多个所选择的模块化组件,其中所述配置设置标识被用于处理数据访问请求的属性,其中所述工作集包括高速缓存块的一个或多个层级,一层级维护高速缓存块的四个列表,所述列表包括空闲列表、当前列表、脏列表和刷新列表。
3.根据权利要求1所述的方法,其特征在于,所述高速缓存存储被注册以基于高速缓存策略与所述后备存储一起操作,其中数据访问请求致使所述后备存储中的数据的至少一子集基于所述高速缓存策略而被高速缓存在所述高速缓存存储中。
4.根据权利要求3所述的方法,其特征在于,所述数据访问请求基于所述后备存储的所述高速缓存策略来被处理,其中所述高速缓存策略选自以下之一:全无、透写、回写、临时和持久。
5.根据权利要求1所述的方法,其特征在于,所述转换表支持基于页目录条目、页表条目和页帧号将后备存储相对文件偏移转换为高速缓存存储块。
6.一种用于实现模块化数据操作的系统,所述系统包括:
后备存储,所述后备存储被配置成:
储存与数据访问请求相关联的数据,其中所述后备存储中的数据被高速缓存在一个或多个高速缓存存储中;
高速缓存存储,所述高速缓存存储被配置成:
高速缓存与所述数据访问请求相关联的数据,其中所述高速缓存存储被配置成与所述后备存储一起操作,所述高速缓存存储高速缓存所述后备存储中的数据的至少一子集;
数据访问组件,所述数据访问组件被配置成:
接收与数据相关联的数据访问请求,所述数据访问组件基于配置设置选择性地实现模块化数据操作功能性;
基于所述数据访问组件的所述配置设置访问与工作集相关联的转换表以确定用于执行所述数据访问请求的位置,其中所述数据访问请求使用所述高速缓存存储或与所述工作集相关联的后备存储来被执行,其中所述工作集包括高速缓存块的一个或多个层级;以及
基于使用所述工作集的所述转换表所确定的所述位置来执行所述数据访问请求,其中当所述数据被高速缓存在所述高速缓存存储中时,所述数据访问请求使用所述高速缓存存储来被执行,并且其中当所述数据未高速缓存在所述高速缓存存储中时,所述数据访问请求基于所述后备存储来被执行。
7.根据权利要求1所述的系统,其特征在于,进一步包括数据访问扼流组件,所述数据访问扼流组件被配置成基于预定义阈值来对数据访问请求进行扼流,其中数据访问扼流针对对以下中的至少一者的数据访问请求来被实现:所述高速缓存存储或所述后备存储。
8.根据权利要求1所述的系统,其特征在于,进一步包括高速缓存块惰性写入器组件,所述高速缓存块惰性写入器组件被配置成将高速缓存块惰性地写入到所述后备存储,其中所述高速缓存块惰性写入器组件基于回写方案或临时方案将脏的高速缓存块写入到所述后备存储。
9.具有在其上具体化的计算机可执行指令的一个或多个计算机存储介质,所述计算机可执行指令在由一个或多个处理器执行时致使所述一个或多个处理器执行用于实现模块化数据操作系统的方法,所述方法包括:
在数据访问组件处接收与数据相关联的数据访问请求,所述数据访问组件基于配置设置选择性地实现模块化数据操作功能性;
基于所述数据访问组件的所述配置设置访问与工作集相关联的转换表以确定用于执行所述数据访问请求的位置,其中所述数据访问请求使用高速缓存存储或与所述工作集相关联的后备存储来被执行;
确定用于对数据访问请求进行扼流的预定义阈值条件被满足,其中所述预定义阈值在所述配置设置中被标识;
对所述数据访问的执行进行扼流,直到所述预定义阈值条件不被满足;以及
基于使用所述工作集的所述转换表所确定的所述位置来执行所述数据访问请求,其中当所述数据被高速缓存在所述高速缓存存储中时,所述数据访问请求使用所述高速缓存存储来被执行,并且其中当所述数据未高速缓存在所述高速缓存存储中时,所述数据访问请求基于所述后备存储来被执行。
10.根据权利要求9所述的介质,其特征在于,用于对数据访问进行扼流的所述预定义阈值条件针对高速缓存存储数据访问请求或后备存储数据访问请求来被定义,其中用于对数据访问进行扼流的所述预定义阈值条件针对每秒字节(BPS)或每秒输入/输出操作(IOPS)来被定义。
CN201780009410.4A 2016-02-01 2017-01-25 模块化数据操作系统 Withdrawn CN108604197A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/012,489 2016-02-01
US15/012,489 US20170220592A1 (en) 2016-02-01 2016-02-01 Modular data operations system
PCT/US2017/014792 WO2017136191A1 (en) 2016-02-01 2017-01-25 Modular data operations system

Publications (1)

Publication Number Publication Date
CN108604197A true CN108604197A (zh) 2018-09-28

Family

ID=57966188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780009410.4A Withdrawn CN108604197A (zh) 2016-02-01 2017-01-25 模块化数据操作系统

Country Status (4)

Country Link
US (1) US20170220592A1 (zh)
EP (1) EP3411791A1 (zh)
CN (1) CN108604197A (zh)
WO (1) WO2017136191A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078410A (zh) * 2019-12-11 2020-04-28 Oppo(重庆)智能科技有限公司 内存分配方法、装置、存储介质及电子设备

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409729B1 (en) * 2016-03-31 2019-09-10 EMC IP Holding Company LLC Controlling aggregate read hit rate across a hierarchy of cache levels by partitioning responsibility for caching among the cache levels
JP6799256B2 (ja) * 2016-11-28 2020-12-16 富士通株式会社 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10970236B2 (en) * 2017-04-21 2021-04-06 Softnas Operating Inc. System and method for optimized input/output to an object storage system
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US10929048B2 (en) * 2018-10-01 2021-02-23 EMC IP Holding Company LLC Dynamic multiple proxy deployment
US10996975B2 (en) 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11036434B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory systems
US11016903B2 (en) 2019-08-22 2021-05-25 Micron Technology, Inc. Hierarchical memory systems
US10789094B1 (en) 2019-08-22 2020-09-29 Micron Technology, Inc. Hierarchical memory apparatus
US11169928B2 (en) 2019-08-22 2021-11-09 Micron Technology, Inc. Hierarchical memory systems to process data access requests received via an input/output device
US10929301B1 (en) 2019-08-22 2021-02-23 Micron Technology, Inc. Hierarchical memory systems
US11106595B2 (en) 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
US11036633B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory apparatus
US11074182B2 (en) 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US11789653B2 (en) 2021-08-20 2023-10-17 Micron Technology, Inc. Memory access control using a resident control circuitry in a memory device
US11734071B2 (en) * 2021-09-01 2023-08-22 Micron Technology, Inc. Memory sub-system tier allocation
CN116112497B (zh) * 2022-12-29 2024-07-05 天翼云科技有限公司 一种云主机集群的节点调度方法、装置、设备及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857203A (en) * 1996-07-29 1999-01-05 International Business Machines Corporation Method and apparatus for dividing, mapping and storing large digital objects in a client/server library system
WO2006133550A1 (en) * 2005-06-13 2006-12-21 Duc Dao Inner seal for cv joint boot
US7949766B2 (en) * 2005-06-22 2011-05-24 Cisco Technology, Inc. Offload stack for network, block and file input and output
US8838210B2 (en) * 2006-06-29 2014-09-16 AccuView, Inc. Scanned laser vein contrast enhancer using a single laser
US7613876B2 (en) * 2006-06-08 2009-11-03 Bitmicro Networks, Inc. Hybrid multi-tiered caching storage system
US8516137B2 (en) * 2009-11-16 2013-08-20 Microsoft Corporation Managing virtual hard drives as blobs
US8874823B2 (en) * 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9063864B2 (en) * 2012-07-16 2015-06-23 Hewlett-Packard Development Company, L.P. Storing data in presistent hybrid memory
US9778856B2 (en) * 2012-08-30 2017-10-03 Microsoft Technology Licensing, Llc Block-level access to parallel storage
US9069621B2 (en) * 2012-10-19 2015-06-30 International Business Machines Corporation Submitting operations to a shared resource based on busy-to-success ratios
US9183099B2 (en) * 2013-11-12 2015-11-10 Vmware, Inc. Replication of a write-back cache using a placeholder virtual machine for resource management
WO2015130837A1 (en) * 2014-02-25 2015-09-03 Dynavisor, Inc. Dynamic information virtualization
TWM515040U (zh) * 2015-07-06 2016-01-01 Fivetech Technology Inc 回彈扣件

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078410A (zh) * 2019-12-11 2020-04-28 Oppo(重庆)智能科技有限公司 内存分配方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
US20170220592A1 (en) 2017-08-03
EP3411791A1 (en) 2018-12-12
WO2017136191A1 (en) 2017-08-10

Similar Documents

Publication Publication Date Title
CN108604197A (zh) 模块化数据操作系统
US9652405B1 (en) Persistence of page access heuristics in a memory centric architecture
JP7263314B2 (ja) 分散ストアによる高可用性データベース
Byan et al. Mercury: Host-side flash caching for the data center
US20210344772A1 (en) Distributed database systems including callback techniques for cache of same
US8996807B2 (en) Systems and methods for a multi-level cache
US9003104B2 (en) Systems and methods for a file-level cache
US8566550B2 (en) Application and tier configuration management in dynamic page reallocation storage system
US11561930B2 (en) Independent evictions from datastore accelerator fleet nodes
JP5944587B2 (ja) 計算機システム及び制御方法
US9959074B1 (en) Asynchronous in-memory data backup system
US20060174074A1 (en) Point-in-time copy operation
US20180074724A1 (en) Workload aware storage platform
US10366010B1 (en) Cache memory data management using relative access frequency
US20120290786A1 (en) Selective caching in a storage system
US8122182B2 (en) Electronically addressed non-volatile memory-based kernel data cache
US11169927B2 (en) Efficient cache management
JP2014175009A (ja) 仮想マシンをサポートするフラッシュ・ベースのキャッシング・ソリューションでの動的キャッシュ共有のためのシステム、方法、およびコンピュータ可読媒体
Van Hensbergen et al. Dynamic policy disk caching for storage networking
US10387309B2 (en) High-performance distributed caching
US10176098B2 (en) Method and apparatus for data cache in converged system
US11677633B2 (en) Methods and systems for distributing topology information to client nodes
US11513849B2 (en) Weighted resource cost matrix scheduler
WO2013023090A2 (en) Systems and methods for a file-level cache
US11853574B1 (en) Container flush ownership assignment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20180928