CN107924324A - 数据访问加速器 - Google Patents
数据访问加速器 Download PDFInfo
- Publication number
- CN107924324A CN107924324A CN201680048045.3A CN201680048045A CN107924324A CN 107924324 A CN107924324 A CN 107924324A CN 201680048045 A CN201680048045 A CN 201680048045A CN 107924324 A CN107924324 A CN 107924324A
- Authority
- CN
- China
- Prior art keywords
- creation data
- virtual machine
- data collection
- cache
- application program
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
本发明公开了用于在应用程序和测试环境中加速数据访问的各种系统、方法和过程。所述生产数据集接收自存储系统,并被高速缓存在合并的高速缓存中。合并的高速缓存由加速器虚拟机实现。文件系统客户端拦截来自一个或多个应用程序虚拟机的对生产数据集的请求,并将所述请求传输至加速器虚拟机。加速器虚拟机将生产数据集从合并的高速缓存提供给一个或多个应用程序虚拟机。
Description
技术领域
本公开涉及高速缓存数据,并且更具体地涉及在应用程序和测试环境中加速数据访问。
背景技术
生产数据是公司和/或组织用于商业目的持续存储和使用的信息。由于其重要性,生产数据必须准确无误,需进行持续的记录和管理。公司使用生产数据进行软件开发和测试。例如,虚拟机可在应用程序开发和测试环境中实现,并且可用于使用存储在生产环境中的生产数据来执行应用程序开发和测试。
此类应用程序开发和测试操作通常需要存储在存储系统(例如,存储设备中的存储栈)上的生产数据。在某些情况下,此类存储系统位于远程位置,需要经由网络进行访问。一些存储系统经过优化,适用于通常涉及大量顺序写入操作的备份和恢复操作。此类存储系统在执行应用程序开发和测试环境中所需的小的和/或随机的读取和写入操作方面效率不高。
此外,如果使用多个虚拟机(例如,应用程序虚拟机)来执行应用程序开发和测试,则此类虚拟机通常高速缓存包含通用数据的相同(或相似)数据集。这导致高速缓存在多个虚拟机上被复制。在这种情况下,较大的高速缓存提供一些益处。然而,在应用程序开发和测试环境中,通常会在每个虚拟机上划分一个大高速缓存,从而降低高速缓存效率。
发明内容
本发明公开了用于在应用程序和测试环境中加速数据访问的各种系统、方法和过程。一种这样的方法涉及从存储系统接收生产数据集,并将该生产数据集高速缓存在合并的高速缓存中。该合并的高速缓存由加速器虚拟机实现。该方法拦截来自一个或多个应用程序虚拟机的对生产数据集的请求,并将生产数据集从合并的高速缓存提供给一个或多个应用程序虚拟机。
在一个实施方案中,从存储系统接收生产数据集并将该生产数据集高速缓存在合并的高速缓存中由加速器虚拟机进行管理。在该示例中,生产数据集包括一个或多个应用程序虚拟机所需的通用生产数据。在另一个实施方案中,来自一个或多个应用程序虚拟机的对生产数据集的请求被客户端拦截并被转发给加速器虚拟机。
在一些实施方案中,一个或多个应用程序虚拟机、加速器虚拟机、合并的高速缓存和客户端由虚拟机监控程序支持。在其他实施方案中,存储系统是生产环境的一部分,并且一个或多个应用程序虚拟机、加速器虚拟机、合并的高速缓存和客户端是应用程序开发和测试环境的一部分。
在一个实施方案中,一个或多个应用程序虚拟机中的每一个应用程序虚拟机都采用精简配置的虚拟磁盘,并且该精简配置的虚拟磁盘存储由对应的应用程序虚拟机对生产数据集所做出的改变。
以上内容是一个概述,因此必然包含对细节的简化、概括和省略;因此本领域的技术人员将会理解,该概述仅是说明性的,并不意图进行任何限制。如由权利要求单独定义的,本发明的其他方面、发明特征和优点将在以下阐述的非限制性详细描述中变得显而易见。
附图说明
通过参考附图,可以更好地理解本公开,并且其多个目的、特征和优点对于本领域的技术人员而言是显而易见的。
图1是根据本公开的一个实施方案的实现虚拟化服务器的计算系统的框图。
图2是根据本公开的一个实施方案的实现加速器虚拟机的计算系统的框图。
图3是根据本公开的一个实施方案的在应用程序和测试环境中提供数据访问的计算系统的框图。
图4是示出根据本公开的一个实施方案的用于高速缓存生产数据的过程的流程图。
图5是示出根据本公开的一个实施方案的用于将生产数据提供给应用程序虚拟机的过程的流程图。
图6是示出根据本公开的一个实施方案的用于更新合并的高速缓存的过程的流程图。
图7是示出根据本公开的一个实施方案的用于从合并的高速缓存提供生产数据的过程的流程图。
图8是根据本公开的一个实施方案的计算系统的框图,示出了如何在软件中实现合并的高速缓存。
图9是根据本公开的一个实施方案的联网系统的框图,示出了各种计算设备可如何经由网络进行通信。
虽然本公开容许各种修改和替代形式,但是在附图和详细描述中作为示例提供了本公开的特定实施方案。应当理解,附图和详细描述并非旨在将本公开限制于所公开的特定形式。相反,意图是覆盖落入由所附权利要求书定义的本公开的精神和范围内的所有修改、等同物和替代物。
具体实施方式
介绍
软件(或应用程序)开发和测试环境会消耗大量的生产数据副本。如前所述,可使用一个或多个虚拟机(称为应用程序虚拟机或App VM)来执行此类应用程序开发和测试。这些App VM需要(并使用)通常存储在一个或多个存储系统(例如,存储设备)上的不同位置(例如,生产环境)中的生产数据。因此,此类应用程序开发和测试需要生产数据(例如,使用提供分布式文件系统协议诸如网络文件系统(NFS)的客户端-服务器应用程序)通过网络从生产环境传输到应用程序开发和测试环境。
尽管应用程序开发和测试环境中的每个App VM都需要并使用自己的生产数据副本(例如,每个App VM都有自己的一组专用于该AppVM的数据文件),但此类数据文件通常包含大量的通用数据。例如,应用程序开发人员(或测试人员)可以对生产数据集执行更改,并且可以使用多个App VM同时在同一生产数据集上执行测试。由于正在使用生产数据集来执行测试(和/或其他基于开发的活动),因此频繁停用执行此类测试的虚拟机(例如,停止运行并且不被允许启动)。此外,此类测试活动需要经常刷新数据,以确保正在对最近的数据集,而不是旧的(也许是陈旧性的)数据集执行测试场景。
如前所述,此类应用程序开发和测试操作经常需要存储在存储系统(例如,存储设备中的存储栈)上的生产数据,并且是备份数据(例如,生产数据是稳定且只读的)。存储备份数据的存储系统通常针对大量的顺序写入操作(例如,在数据备份和恢复操作期间发生的写入操作)进行优化。此类存储系统在执行应用程序开发和测试环境中所需的小的和/或随机的读取和写入操作方面效率不高。
此外,应用程序开发和测试工作负载(例如,在应用程序开发和测试环境中对应用程序执行的测试活动)通常同时在多个App VM上运行,并且访问具有高度通用性的数据集(例如,多个App VM测试在同一个数据集上)。因此,每个App VM高速缓存相同的数据集(例如,由存储系统正在提供的相同或相似的数据集),因此,高速缓存被复制在多个App VM上。
此外,如前所述,生产数据(包括任何更新)通常需要通过网络从生产环境传输到应用程序和测试环境。然而,在应用程序开发和测试场景中,App VM经常被再循环(如上所述),因此不需要长时间保持数据的持久性,因为数据被频繁刷新。
同样如前所述,更靠近App VM的较大高速缓存提供一些益处(例如,由于App VM不需要通过网络从存储系统访问生产数据,因此网络效率较高)。然而,在应用程序开发和测试环境中,此类高速缓存将被划分到每个App VM上,因此会降低高速缓存效率。
本文公开了用于在应用程序和测试环境中加速数据访问的系统、方法和过程。
一个示例性应用程序开发和测试环境
应用程序开发和测试在表示生产(或生活)数据集(例如,真实客户数据库)的一个或多个数据集上执行。此类开发和测试可确保应用程序在真实场景中准确执行。生产数据集(表示生产数据和/或生产环境)的备份副本(或覆盖快照(cover snapshot))可用于应用程序开发和测试。本文描述的应用程序开发和测试环境只是一个示例。还可以设想具有不同于本文所示的配置的环境。
为了执行此类开发和测试,经常使用缩小的虚拟机。例如,如果某公司在生产环境中正在使用APACHE Web服务器软件,则优选的是使用同样运行APACHE的缩小的虚拟机(例如,如果生产环境支持一千(1000)位客户,则应用程序开发和测试环境中缩小的App VM可以支持十(10)位客户)。这样,生产环境(考虑到生产数据准确性的重要性)不受影响或被篡改。
虚拟机对于执行应用程序开发和测试非常有用。由于此类开发和测试涉及频繁更改数据集,因此可以轻松地停用和再循环一个或多个虚拟机。此外,此类开发和测试可由多个App VM支持(并且分布在多个App VM上)以同时运行同一个生产数据集的副本(并且对其执行测试)。
图1是根据一个实施方案的实现虚拟化服务器的计算系统的框图。虚拟化服务器105是包括处理器110和存储器115的计算设备。虚拟化服务器105可以是包括服务器、台式计算机、膝上型电脑、平板电脑等的任何类型的计算设备。
存储器115实现虚拟化环境以执行应用程序开发和测试。存储器115包括加速器虚拟机(加速器VM 120)、若干个应用程序虚拟机(应用程序VM(135(1)-(N))、合并的高速缓存125(例如,固态驱动器(SSD))、文件系统客户端(例如,NFS客户端),以及用于每个App Vm的专用虚拟磁盘(例如,与App VM 135(1)相关联的虚拟磁盘140(1),以及与App VM 135(N)相关联的虚拟磁盘140(N))。在该示例(和环境)中,图1所示的虚拟磁盘也可以被称为差分虚拟磁盘。
存储器115还实现虚拟机监控程序150和操作系统145。如图1所示,虚拟机监控程序150使用软件(例如,Red Enterprise Virtualization)来实现。然而,虚拟机监控程序150也可以是VMwareTM,Inc(如图3所示)提供的本地或裸机虚拟机监控程序,例如ESXi。此外,替代实施方案可实现每个虚拟化服务器的数量不同于所示数量的虚拟机,并且虚拟化服务器可包括附加计算设备,每个附加计算设备实现与同一虚拟化服务器内的其他计算设备相同或不同数量的虚拟机。
图1还示出了存储系统160和存储管理模块155。如前所述,存储系统160可以是存储设备和/或可包括多种不同存储设备中的一个或多个,包括硬盘驱动器、光盘、数字多功能盘、SSD、存储器诸如闪存存储器或者阵列等等。存储管理模块155经由网络160(例如,将生产数据从存储系统160传送或传输到文件系统客户端130)提供存储系统160与虚拟化服务器105之间的接口。需注意,替代和/或除了网络160之外,可使用任何其他适当的网络或互连。
示例性数据访问加速器
图2是根据一个实施方案的可在应用程序测试和开发环境中提供数据访问的加速器虚拟机的框图。加速器VM 120包括服务器视图205、数据访问拦截器220、去重感知引擎225、高速缓存子系统230和客户端视图235。App VM 120(例如,经由网络或一些其他类型的互连)通信地耦接到存储系统160。
服务器视图205包括文件系统服务器210和存储目标215。客户端视图235包括文件系统客户端130(在图1中示出)以及存储启动器240。在一个实施方案中,图2的计算体系结构可被配置为允许加速器VM向多个App VM(例如,如图2所示的来自合并的高速缓存125的App VM135(1)-(N))提供数据访问。
在一些实施方案中,加速器VM 120从存储系统160接收生产数据集(例如,实时生产数据集的备份副本或覆盖快照)。然后加速器VM120(例如,使用高速缓存子系统230)将生产数据集高速缓存在合并的高速缓存125中。在该示例中,合并的高速缓存125由加速器VM120实现。由于加速器VM 120实现文件系统客户端130,因此加速器VM 120可使用文件系统客户端130来拦截来自一个或多个App VM的对生产数据集的请求。将理解的是,在该示例中,来自一个或多个AppVM的对生产数据集的请求旨在用于存储系统160,但是由文件系统客户端130代表加速器VM 120进行拦截。之后,加速器VM 120使用文件系统客户端130将生产数据集提供给来自合并的高速缓存125的一个或多个App VM,如图2所示。
在一些实施方案中,可以按需高速缓存生产数据集。例如,AppVM首次请求生产数据块(或其他存储单元)并且生产数据在高速缓存中不可用时,可从存储系统中获取(或检索)生产数据块。
在其他实施方案中,从存储系统160接收生产数据集以及在合并的高速缓存125中(例如,使用高速缓存子系统230)高速缓存生产数据集由加速器虚拟机120进行管理。在该示例中,生产数据集包括一个或多个App VM(例如,App VM 135(1)-(N))所需的通用生产数据。在一些实施方案中,一个或多个App VM对生产数据集的请求被客户端(例如,文件系统客户端130)(例如,使用数据访问拦截器220,如图2所示)拦截,并被转发到加速器VM 120。
加速数据访问的一个示例
图3是根据一个实施方案的在应用程序和测试环境中加速数据访问的计算系统的框图。图3示出了使用网络165通信地耦接到存储系统160(和存储管理模块155)的虚拟机监控程序150。存储管理模块155充当存储系统160和由虚拟机监控程序150实现的NFS客户端315之间的接口。
虚拟机监控程序150包括耦接到(并且与NFS客户端315进行交互)的加速器VM120。加速器VM 120实现并管理合并的高速缓存,在该示例中为SSD 305。应当注意,在一些实施方案中,合并的高速缓存125可以通过除SSD之外的各种存储格式和/或数据存储设备来实现。SSD 305实现合并的高速缓存125以分别提供对App VM 135(1)、135(2)和135(3)的数据访问。由于SSD 305是合并的高速缓存,因此SSD 305不在App VM 135(1)、135(2)和135(3)之间划分高速缓存。相反,为了应用程序开发和测试目的,SSD 305仅高速缓存App VM135(1)、1 35(2)和1 35(3)所需的通用生产数据集。
App VM 1 35(1)、135(2)和135(3)各自配置有专用覆盖文件(例如,分别是用于App VM 135(1)的覆盖文件310(1)、用于App VM 135(2)的覆盖文件310(2)以及用于App VM135(3)的覆盖文件310(3))。在一个实施方案中,每个覆盖文件包括在精简配置的虚拟磁盘上提供的内容日志,该精简配置的虚拟磁盘存储由对应的App VM对生产数据集做出的改变。例如,覆盖文件310(1)被提供在存储由App VM 135(1)对生产数据集做出的改变的精简配置的虚拟磁盘(例如,差分虚拟磁盘)上。NFS客户端315可访问覆盖文件以识别可从AppVM的覆盖文件(例如,使用内容日志)提供给AppVM的数据块,以及需要从合并的高速缓存125(例如,SSD 305)提供给AppVM的数据块。在其他示例中,NFS客户端不访问覆盖文件。如果虚拟机监控程序确定所请求的生产数据在覆盖文件中,虚拟机监控程序便从覆盖文件提供生产数据。如果虚拟机监控程序确定所请求的生产数据不在覆盖文件中,则虚拟机监控程序与NFS客户端进行通信以从存储系统获取生产数据。
在一些实施方案中,App VM、加速器VM、合并的高速缓存和/或客户端(例如,文件系统客户端130、NFS客户端315等)由虚拟机监控程序150支持(如图3所示)。在其他实施方案中,App VM、加速器VM、合并的高速缓存和/或客户端可独立于虚拟机监控程序(并且与其分开)运行,但在相同的虚拟化服务器上(如图1所示)。
在一个实施方案中,覆盖文件可由加速器VM 120提供并存储在其内部。在这种情况下,可充当虚拟存储设备的加速器VM可以为合并的高速缓存125上的每个覆盖文件创建个性化区域。例如,对于图3中的三(3)个App VM,加速器VM 120可以分别为SSD 305中的覆盖文件310(1)、310(2)和310(3)创建三个个性化区域。在一些实施方案中,每个个性化区域在合并的高速缓存125上占用的空间可基于特定的阈值(例如,加速器VM可被配置为确保为每个覆盖文件分配的空间不超过SSD 305上的总可用空间的5%)。如前所述,每个覆盖文件捕获并存储由覆盖文件的对应App VM对生产数据集中的数据块做出的改变。
如前所述,加速器VM 120包括去重感知引擎225。去重感知引擎225可感知跨多个生产数据集的去重分块(或数据块)。例如,如果生产数据集已被使用了(例如,用于应用程序测试)给定的时间量并且需要刷新,则去重感知引擎225可确定在该给定的时间量内只有一定百分比的生产数据集已经被更改和/或修改。由于增量备份通常只改变和/或修改给定备份集的一小部分,因此加速器VM可以继续将本地生产数据从合并的高速缓存125提供给App VM,因为大部分生产数据集可能还未被改变和/或修改。
在一些实施方案中,虚拟机监控程序(例如,虚拟机监控程序150)可实现可以存储虚拟磁盘文件、虚拟机规范、模板等的数据存储库(图3中未示出)。虚拟机监控程序可将虚拟磁盘文件作为App VM上执行(或运行)的操作系统的小型计算机系统接口(SCSI)块设备绑定到App VM。数据存储库可由文件系统(例如,虚拟机监控程序自身的专有文件系统或NFS文件系统)备份。当数据存储库由NFS文件系统(图3中未示出)备份时,虚拟机监控程序上的NFS客户端(例如,如图3所示的虚拟机监控程序150上的NFS客户端315)可用于安装由NFS服务器(图3中未示出)提供的NFS文件系统。NFS服务器可在另一主机设备(例如,虚拟设备或物理设备)上运行。针对从数据存储库提供的虚拟磁盘的输入/输出(I/O)操作经过后备文件系统(例如,如上所述的NFS文件系统)。
当使用虚拟机监控程序的专有文件系统时,I/O可经过该专有文件系统,继而可执行诸如为精简配置的虚拟磁盘配置存储(如果需要)的操作,然后才允许I/O前进至虚拟磁盘文件中的适当区域。对于NFS数据存储库,I/O被NFS客户端(例如,NFS客户端315)拦截,并且I/O被重定向到NFS服务器。在该示例中,虚拟机监控程序150上的NFS数据存储库(图3中未示出)可由加速器VM 120提供。在一些实施方案中,加速器VM可实现(并运行)NFS服务器,并且虚拟机监控程序上的NFS客户端可以拦截从App VM到虚拟磁盘的I/O,并将这些I/O重定向到在加速器VM上运行的NFS服务器120。
加速数据访问的示例性流程
图4是示出根据一个实施方案的用于高速缓存生产数据的过程的流程图。该过程在410处开始,在虚拟化服务器(例如,虚拟化服务器105中的加速器VM 120)中创建虚拟设备。在420处,虚拟设备(例如,使用存储管理模块155)从存储系统(例如,存储系统160)请求一个或多个生产数据集。在430处,虚拟设备从存储系统接收一个或多个生产数据集,并且在440处,虚拟设备将一个或多个生产数据集高速缓存在合并的高速缓存(例如,SSD 305)中。
在450处,文件系统客户端(例如,NFS客户端315)拦截从存储系统提供生产数据的请求。应当注意,在某些实施方案中,存储系统是生产环境的一部分,并且一个或多个AppVM、加速器VM、合并的高速缓存和客户端是应用程序开发和测试环境的一部分。从存储系统提供生产数据的请求由一个或多个App VM发出。该请求被客户端(例如,文件系统客户端130、NFS客户端315、存储区域网络(SAN)等)拦截。在460处,客户端确定请求是否来自一个或多个App VM(例如,在一些实施方案中,提供生产数据的请求可来自应用程序开发和测试环境中未执行应用程序开发和/或测试的其他计算设备)。如果不是,则在470处,客户端继续拦截提供生产数据的请求,并确定请求是否来自一个或多个App VM。
如果从存储系统提供生产数据的请求来自一个或多个AppVM,则客户端拦截该请求并将该请求转发给加速器VM 120(例如,客户端将请求转发给虚拟设备)。在480处,加速器VM 120履行来自合并的高速缓存(而不是存储系统)的请求。在490处,该过程通过确定客户端是否应该继续处理对生产数据的请求而结束。
图5是示出根据一个实施方案的用于将生产数据提供给应用程序虚拟机的过程的流程图。在505处,加速器VM为每个App VM配置可写覆盖。例如,在加速器VM(例如,虚拟设备)被创建之后,可写覆盖可由加速器VM 120配置。如前所述,每个可写覆盖可包括提供给精简配置虚拟磁盘上的每个App VM的内容日志,以识别和跟踪App VM对生产数据集做出的改变。
在510处,加速器VM访问文件系统客户端。如上所述,文件系统客户端可以是NFS客户端,并且促进加速器VM与多个App VM 135(1)-(N)之间的数据操作。在515处,加速器VM从存储系统获得生产数据的副本(例如,加速器VM 120通过与存储管理模块155通信并且与其进行交互而从存储系统160获得生产数据的副本)。在520处,加速器VM将生产数据的副本高速缓存在合并的高速缓存125中(例如,加速器VM将生产数据的副本高速缓存在SSD 305中,如图3所示)。
在525处,客户端(例如,NFS客户端315)确定App VM是否正在请求数据。如上所述,应用程序开发和测试环境中的其他计算实体也可以请求数据。如果AppVM正在请求数据,则在530处,客户端确定请求是针对通用(生产)数据还是针对改变的(生产数据)。如果该请求是针对改变的生产数据,则在535处,客户端从可写覆盖提供改变的生产数据(例如,如果App VM 135(1)请求改变的生产数据,则NFS客户端315不将该请求转发给加速器VM 120;相反,NFS客户端315简单地提供(或履行)从可写覆盖310(1)提供改变的生产数据的请求)。
如果该请求是针对通用生产数据,则在540处,客户端提供在合并的高速缓存125中高速缓存的通用生产数据(例如,如果App VM135(1)请求通用生产数据,则NFS客户端315将该请求转发给加速器VM 120;然后,加速器VM 120经由NFS客户端315提供该请求,并向App VM 135(1)提供所请求的通用生产数据)。然而,如果该请求是同时针对改变的生产数据和通用生产数据,则客户端从(与发出请求的App VM相关联的)可写覆盖提供改变的生产数据,并且从合并的高速缓存提供通用生产数据。在550处,客户端确定App VM是否正在请求更多数据。在555处,该过程通过使用客户端来处理进一步的请求而结束。
在使用AppVM(例如,对生产数据)执行一轮或多轮测试之后,该App VM可能会对生产数据集做出重大改变。此外,与此同时(在对生产数据集执行一轮或多轮测试的同时),生产环境中的计算环境可能已经改变(例如,Apache网络服务器可能已经被一些其他类型的网络服务器所取代)。在这种情况下,(旧)App VM可被停用(例如,停止),并且可以提供AppVM的新副本以继续进行测试。然而,当App VM被停用时,App VM可能会无法访问高速缓存的生产数据,因此新配置的App VM必须从存储系统重新获取生产数据集。在一些示例中,在App VM被停用之后,该App VM可以再次启动并且可以请求较新版本的生产数据。该较新版本的生产数据是从存储系统自动获取的。然而,未改变的生产数据仍然可以从高速缓存直接提供。
如本文所公开的单个合并的高速缓存(例如,合并的高速缓存125)保留高速缓存的生产数据,使得不必从存储系统重新获取生产数据。新配置的App VM所需的生产数据可在本地从合并的高速缓存中获得,而不必(例如,通过消耗宝贵的网络资源)从存储系统获得。这样做优化了对昂贵的内存资源的使用,同时节约了时间和网络资源。
图6是示出根据一个实施方案的用于更新合并的高速缓存的过程的流程图。过程在605处开始,此时客户端和/或加速器VM确定App VM是否已经将生产数据改变超过阈值(例如,由App Vm执行的测试是否已经将生产数据改变和/或修改超过20%)。如果是,则在610处,加速器VM停用App VM,并在615处创建新的App VM。在620处,客户端拦截来自新AppVM的提供生产数据的请求。例如,可使用文件系统客户端130来拦截来自新App VM的提供生产数据的请求,并且在625处将该请求传输至加速器VM 120。在630处,客户端使用加速器VM120来访问合并的高速缓存(例如,SSD 305)。在635处,客户端确定加速器VM 120是否正在将生产数据的相同副本提供给其他App VM。如果加速器VM 120没有在将生产数据的相同副本提供给其他App VM,则在640处,客户端等待使用生产数据的新副本来更新合并的高速缓存。
在一些实施方案中,用于停用App VM的阈值是基于生产数据的陈旧性的(例如,基于生产数据已变得陈旧的程度,转而可通过计算存储系统上有多少生产数据已被AppVM改变来确定该阈值)。在其他实施方案中,合并的高速缓存的更新可自动进行。如果生产数据在高速缓存中未找到(或不可得),则可按需(例如,从存储系统)获取(或检索)该生产数据,并且可从高速缓存(例如,SSD 305)自动弹出或(删除)未被使用的生产数据。在一些示例中,创建虚拟设备、重置高速缓存,并拦截用于提供生产数据的请求。如果生产数据在高速缓存中可以得到,则将生产数据提供给App VM。如果不可得,则从存储系统获取生产数据。在其他示例中,当必须停用App VM时,关闭该App VM,并启动新App VM且使其指向较新版本的生产数据。在该示例中,高速缓存可自动拉取(或提供)App VM正在使用的生产数据,并弹出(或删除)当前未被App VM使用的生产数据。
在某些实施方案中,去重感知引擎225确保在生产环境中尚未被更新和/或修改的绝大多数生产数据可继续本地地提供给请求来自合并的高速缓存的此类高速缓存的生产数据的App VM。然而,如果生产数据已被改变超出了可接受阈值(或者如果新App VM请求在生产环境中已被改变和/或修改的生产数据的一部分),则客户端等待使用此类改变和/或修改来更新合并的高速缓存。因此,在645处,客户端确定合并的高速缓存是否已被更新(该过程等待直到高速缓存已被更新为止)。如果加速器VM 120正在将生产数据的相同副本提供给其他App VM,则该过程通过将生产数据的副本从合并的高速缓存提供给新App VM而结束于650处,或者等待合并的高速缓存被更新,然后将生产的副本提供给新App VM。
图7是示出根据一个实施方案的用于从合并的高速缓存提供生产数据的过程的流程图。该过程开始于705处,此时加速器VM(例如,加速器VM 120)在生产环境中(例如,经由存储管理模块155)访问存储系统(例如,存储系统160)。在710处,加速器VM(结合客户端)确定实时生产数据(例如,正在生产环境中使用的数据)与高速缓存的生产数据(例如,正在应用程序开发和测试环境中使用的来自生产环境的数据的副本)之间的差异是否是可接受的(例如,实时生产数据与高速缓存的生产数据之间的差异是否超过某个阈值)。如果差异是可接受的(例如,实时生产数据与高速缓存的生产数据之间的差异低于某个阈值),则该过程结束于755处,此时客户端指示加速器VM提供来自合并的高速缓存的(生产)数据。
然而,如果差异是不可接受的(例如,实时生产数据与高速缓存的生产数据之间的差异超过某个阈值),则在715处,客户端(例如,NFS客户端315)将信号转发给加速器VM120,以停止对应用程序开发和测试环境中的App VM提供来自合并的高速缓存125的所高速缓存的生产高速缓存。在720处,客户端指示加速器VM 120刷新合并的高速缓存125(例如,如果实时生产数据与高速缓存的生产数据80%是不同的,则正在由App VM使用高速缓存的生产数据执行的测试很可能是无用的或不准确的)。
在725处,加速器VM从存储系统请求新的生产数据集。在730处,在存储管理模块155在735处将新的生产数据集从存储系统转发到加速器VM 120之后,加速器VM从存储系统接收新的生产数据集。在740处,加速器VM将新的生产数据集高速缓存在合并的高速缓存125中。在745处,客户端(例如,NFS客户端315)拦截用于从存储系统(例如,从一个或多个App VM)提供生产数据的请求。在750处,客户端将该请求转发给加速器VM 120。该过程结束于755处,此时客户端指示加速器VM提供来自合并的高速缓存的数据。
其他示例性实施方案
应当理解,在如图1、图2和图3所示的同一计算环境中共享生产环境(例如,在其他计算设备之间的存储系统160)以及应用程序开发和测试环境(例如,虚拟化服务器105)可以是有用的。例如,公司经常在内部开发他们自己的应用程序(例如,人力资源应用程序)。作为应用程序开发和测试过程的一部分,公司不断测试与正在开发和/或测试的应用程序相关联的代码修改、代码增强和错误修正等。
为了执行前述任务,使用表示生产数据的数据集可以是高度有利的,因为生产数据是即时数据(或实时数据)(例如,公司每天使用来进行商业运营的数据、客户数据、员工信息、交易数据、支付信息等)。在该示例中,生产数据是存储在生产环境中的存储系统(例如,存储系统160)上的生产数据集的备份副本(例如为公司当前正用于商业运营的信息技术(IT)基础结构的一部分的存储系统)。
因此,使用生产数据(或者在这种情况下为生产数据的备份副本)来执行应用程序开发和测试允许公司准确有效地确定该应用程序在真实世界场景中(例如,如果该应用程序将在生产环境中实现)如何执行(或将会如何执行)。然而,因为正在应用程序开发和测试环境中开发和测试该应用程序,所以避免了对生产环境的破坏性改变。如前所述,修改生产数据可破坏公司的日常商业运营,特别是考虑到应用程序开发和测试过程的易失性质。
此外,同样如上所述,应用程序虚拟机可用于执行应用程序开发和测试。因为可容易地启动(例如,创建)虚拟机的若干个副本,所以若干个应用程序虚拟机可测试生产数据集的相同备份副本。例如,一个应用程序VM可对应用程序执行代码修改,并可使用生产数据集的备份副本来测试这些代码修改。另一个应用程序VM可对应用程序执行代码增强,并可使用生产数据集的备份副本来测试这些代码增强。再者,又一个应用程序VM可使用生产数据集的备份副本来测试在应用程序上进行的错误修正。因此,尽管应用程序VM执行不同的任务,但它们使用(或倾向于使用)生产数据集的相同(备份)副本。在某些实施方案中,生产数据集的该相同(备份)副本可被称为通用生产数据。在一些实施方案中,该通用生产数据可以是由加速器VM高速缓存在合并的高速缓存中的生产数据集的一部分。
在一些实施方案中,并且如前所述,存储每个对应的App VM对生产数据做出的改变的可写覆盖是精简配置的虚拟磁盘。精简配置的可写覆盖通过以按需为基础分配空间(例如,数据的块)而不是通过预先分配数据的块的传统方法来在虚拟化环境中优化对可用存储的利用。例如,如果App VM 135(1)正在测试生产数据上的主要代码增强,则App VM135(1)将很可能对生产数据做出重大改变是可行的。在这种情况下,可写覆盖310(1)可配置有足够的空间以相应地容纳这些改变。
相反地,如果App VM 135(3)正在使用生产数据对应用程序测试次要错误修正,则可写覆盖310(3)可配置有少量空间,因为由App VM 135(3)对生产数据做出的改变很可能是较小的(如果有的话)。这样,可写覆盖可以是精简配置的虚拟磁盘,这些虚拟磁盘被配置为在应用程序开发和测试环境中取决于正在由其对应的虚拟机执行的任务的存储要求(例如,这些任务将(或将不)对生产数据做出重大改变是否是很可能的)来有效地共享存储。
在某些实施方案中,并且如前所述,来自App VM的对生产数据集的请求被客户端拦截(并被转发给加速器VM)。例如,NFS客户端315可拦截由App VM进行的旨在用于存储管理模块155的文件系统调用(例如,请求执行数据操作的文件系统调用,此类请求用于生产数据的传输)。可使用分布式文件系统协议(例如,网络文件系统)来执行拦截,该分布式文件系统协议共享文件目录,从而允许客户端(或App VM)访问存储系统上的生产数据。例如,可使用一个或多个守护进程(其是作为后台进程运行的计算机程序)访问共享文件目录以检索生产数据。
在其他实施方案中,并且如前所述,合并的高速缓存用于将生产数据提供给AppVM。通常,在若干个App VM(或其他计算设备)之间划分高速缓存(例如,SSD 305)上可用的存储空间。然而,因为本文公开的实施方案为每个App VM提供其自己的可写覆盖以捕获对生产数据做出的改变,并且还因为每个App VM使用通用生产数据来进行应用程序开发和测试,所以可提供单个合并的高速缓存(例如,合并的高速缓存125),其中不在不同的App VM之间划分高速缓存上的存储(亦不将高速缓存上的存储分别分配给不同的App VM)。相反,所有App VM都等同地全盘共享该单个合并的高速缓存来存储通用生产数据的单个副本。因此,应当理解,本文公开的某些实施方案可实现可在应用程序开发和测试环境中提供高速缓存相关效率的合并的高速缓存。
示例性计算环境
图8是根据一个实施方案的计算系统的框图,示出了如何在软件中实现合并的高速缓存。计算系统800在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统800的示例包括但不限于以下各种设备中的任何一者或多者:工作站、个人计算机、膝上型电脑、客户端侧终端、服务器、分布式计算系统、手持设备(例如,个人数字助理和移动电话)、网络设备、存储控制器(例如,阵列控制器、磁带驱动器控制器或硬盘驱动器控制器)等。在其最基本的配置下,计算系统800可包括至少一个处理器110和存储器115。通过执行实现虚拟化服务器105的软件,计算系统800变成专用计算设备,其被配置为在应用程序开发和测试环境中加速来自合并的高速缓存的数据访问。
处理器110通常表示能够处理数据或解译和执行指令的任何类型或形式的处理单元。在某些实施方案中,处理器110可接收来自软件应用程序或模块的指令。这些指令可使处理器110执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能。例如,处理器110可执行本文所述的操作中的全部或一些和/或可以是用于执行本文所述的操作中的全部或一些的装置。处理器110还可执行本文描述和/或示出的任何其他操作、方法或过程和/或可以是用于执行本文描述和/或示出的任何其他操作、方法或过程的装置。
存储器115通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其他合适的存储器设备。尽管并非必需,但是在某些实施方案中,计算系统800可包括易失性存储器单元和非易失性存储设备两者。在一个示例中,可将实现合并的高速缓存和加速器虚拟机的程序指令加载到存储器115中。
在某些实施方案中,除处理器110和存储器115之外,计算系统800还可包括一个或多个部件或元件。例如,如图8所示,计算系统800可包括存储器控制器820、输入/输出(I/O)控制器835和通信接口845,它们中的每一者都可经由通信基础结构805互连。通信基础结构805通常表示能够促进计算设备的一个或多个部件之间的通信的任何类型或形式的基础结构。通信基础结构805的示例包括但不限于通信总线(诸如工业标准体系结构(ISA)、外围部件互连(PCI)、PCI express(PCIe)或类似的总线)和网络。
存储器控制器820通常表示能够处理存储器或数据或者控制计算系统800的一个或多个部件之间的通信的任何类型或形式的设备。例如,在某些实施方案中,存储器控制器820可经由通信基础结构805控制处理器110、存储器115和I/O控制器835之间的通信。在某些实施方案中,存储器控制器820可单独或结合其他元件来执行本文描述和/或示出的操作或特征中的一个或多个和/或可以是用于单独或结合其他元件来执行本文描述和/或示出的操作或特征中的一个或多个的装置。
I/O控制器835通常表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。例如,在某些实施方案中,I/O控制器835可控制或促进计算系统800的一个或多个元件之间的数据传送,所述一个或多个元件诸如为处理器110、存储器115、通信接口845、显示适配器815、输入接口825和存储接口840。
通信接口845在广义上表示能够促进计算系统800与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施方案中,通信接口845可促进计算系统800与包括附加计算系统的私有或公共网络之间的通信。通信接口845的示例包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器以及任何其他合适的接口。在至少一个实施方案中,通信接口845可经由到网络(诸如互联网)的直接链路来提供到远程服务器的直接连接。通信接口845还可通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、移动电话连接、卫星数据连接或任何其他合适的连接来间接提供此类连接。
在某些实施方案中,通信接口845还可表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统800与一个或多个附加网络或存储设备之间的通信。主机适配器的示例包括但不限于:小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、串行高级技术附件(SATA)、串行SCSI(SAS)和外部SATA(eSATA)主机适配器、高级技术附件(ATA)和并行ATA(PATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口845还可允许计算系统800参与分布式或远程计算。例如,通信接口845可接收来自远程设备的指令或将指令发送到远程设备以供执行。
如图8所示,计算系统800还可包括至少一个显示设备810,该显示设备经由显示适配器815耦接到通信基础结构805。显示设备810通常表示能够以可视地显示由显示适配器815转发的信息的任何类型或形式的设备。类似地,显示适配器815通常表示被配置为转发来自通信基础结构805(或来自帧缓冲器,如本领域所已知)的图形、文本和其他数据以在显示设备810上显示的任何类型或形式的设备。
如图8所示,计算系统800还可包括至少一个输入设备830,该输入设备经由输入接口825耦接到通信基础结构805。输入设备830通常表示能够向计算系统800提供由计算机或人生成的输入的任何类型或形式的输入设备。输入设备830的示例包括但不限于键盘、指向设备、语音识别设备或任何其他输入设备。
如图8所示,计算系统800还可包括存储设备850,该存储设备经由存储接口840耦接到通信基础结构805。存储设备850通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备850可包括磁盘驱动器(例如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等。存储接口840通常表示用于在存储设备850与计算系统800的其他部件之间传送和/或传输数据的任何类型或形式的接口或设备。
在某些实施方案中,存储设备850可被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的示例包括但不限于软盘、磁带、光盘、闪存设备等。存储设备850还可包括用于允许将计算机软件、数据或其他计算机可读指令加载到计算系统800中的其他类似结构或设备。例如,存储设备850可被配置为读取和写入软件、数据或其他计算机可读信息。存储设备850还可以是计算系统800的一部分,或者可以是通过其他接口系统访问的独立设备。
可将许多其他设备或子系统连接到计算系统800。相反地,图8中示出的所有部件和设备都不必存在用于实践本文描述和/或示出的实施方案。还可以与图8中所示不同的方式互连上文提及的设备和子系统。
计算系统800也可采用任何数量的软件、固件和/或硬件配置。例如,本文公开的实施方案中的一个或多个实施方案可被编码为计算机可读存储介质上的计算机程序(也被称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。计算机可读存储介质的示例包括磁存储介质(例如,硬盘驱动器和软盘)、光学存储介质(例如,CD-ROM或DVD-ROM)、电子存储介质(例如,固态驱动器和闪存介质)等。此类计算机程序也可被传送至计算系统800,以经由网络诸如互联网存储在存储器中或存储在载体介质上。
可将包含计算机程序的计算机可读介质加载到计算系统800中。然后可将存储在计算机可读介质上的计算机程序的全部或一部分存储在存储器115和/或存储设备850的各个部分中。当由处理器110执行时,加载到计算系统800中的计算机程序可使处理器110执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能和/或可使其为用于执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能的装置。除此之外或另选地,可在固件和/或硬件中实现本文描述和/或示出的实施方案中的一个或多个实施方案。例如,计算系统800可被配置为适于实现本文公开的实施方案中的一个或多个实施方案的专用集成电路(ASIC)的应用程序。
示例性联网环境
图9是根据本公开的一个实施方案的联网系统的框图,示出了各种计算设备可如何经由网络进行通信。在某些实施方案中,附网存储(NAS)设备可被配置为使用各种协议诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS)来与虚拟化服务器105进行通信。
网络165通常表示能够促进多个计算设备之间的通信的任何类型或形式的计算机网络或体系结构。网络165可促进虚拟化服务器105与存储系统160之间的通信。在某些实施方案中,并且参考图8的计算系统800,通信接口诸如图8中的通信接口845可用于提供虚拟化服务器105与网络165之间的连通性。应当注意,本文描述和/或示出的实施方案并非限于互联网或任何特定的基于网络的环境。例如,网络165可以是存储区域网络(SAN)。
在至少一个实施方案中,本文公开的实施方案中的一个或多个实施方案的全部或一部分可被编码为计算机程序并加载到虚拟化服务器105、应用程序VM 135(1)-(N)、文件系统客户端130和/或加速器虚拟机120,或其任意组合上并加以执行。本文公开的实施方案中的一个或多个实施方案的全部或一部分还可被编码为计算机程序,存储在虚拟化服务器105、应用程序VM 135(1)-(N)、文件系统客户端130和/或加速器虚拟机120上并通过网络165分发。
在一些示例中,图1中虚拟化服务器的全部或一部分可表示云计算或基于网络的环境的一部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础结构即服务等)可通过网页浏览器或其他远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其他基于云的计算环境提供。
此外,本文所述的部件中的一个或多个部件可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,虚拟化服务器105、应用程序VM 135(1)-(N)、文件系统客户端130和/或加速器虚拟机120可转换计算设备的性能,以便使计算设备在应用程序开发和测试环境中使用单个合并的高速缓存来加速数据访问。
尽管已结合若干实施方案描述了本公开,但是本公开并非旨在限于本文阐述的具体形式。相反地,本公开旨在覆盖可被合理地包括在由所附权利要求书限定的本公开的范围内的此类替代物、修改和等同物。
Claims (20)
1.一种方法,包括:
拦截来自一个或多个应用程序虚拟机的对生产数据集的一部分的请求,其中
所述生产数据集接收自存储系统,并且
所述生产数据集被高速缓存在合并的高速缓存中;以及
将所述生产数据集的所述部分从所述合并的高速缓存提供给所述一个或多个应用程序虚拟机,其中
所述合并的高速缓存由加速器虚拟机实现。
2.根据权利要求1所述的方法,其中
对所述生产数据集的所述部分的所述请求旨在用于所述存储系统,并且
由所述加速器虚拟机管理所述生产数据集的所述接收和所述高速缓存。
3.根据权利要求1所述的方法,其中
所述生产数据集包括所述一个或多个应用程序虚拟机所需的通用生产数据,并且
所述生产数据集是实时生产数据集的备份副本或覆盖快照。
4.根据权利要求1所述的方法,其中
来自所述一个或多个应用程序虚拟机的对所述生产数据集的所述请求被客户端拦截并被转发给所述加速器虚拟机。
5.根据权利要求4所述的方法,其中
由虚拟机监控程序支持所述一个或多个应用程序虚拟机、所述加速器虚拟机、所述合并的高速缓存和所述客户端。
6.根据权利要求1所述的方法,其中
所述一个或多个应用程序虚拟机中的每一个应用程序虚拟机都采用一个或多个精简配置的虚拟磁盘,并且
所述一个或多个精简配置的虚拟磁盘存储由对应的所述应用程序虚拟机对所述生产数据集做出的改变。
7.根据权利要求1所述的方法,其中
所述存储系统是生产环境的一部分,并且
所述一个或多个应用程序虚拟机、所述加速器虚拟机、所述合并的高速缓存和所述客户端是应用程序开发和测试环境的一部分。
8.一种系统,包括:
一个或多个处理器;和
存储器,所述存储器耦接到所述一个或多个处理器,其中所述存储器存储能够由所述一个或多个处理器执行的程序指令,所述程序指令用于:
拦截来自一个或多个应用程序虚拟机的对生产数据集的一部分的请求,其中
所述生产数据集接收自存储系统,并且
所述生产数据集被高速缓存在合并的高速缓存中;以及
将所述生产数据集的所述部分从所述合并的高速缓存提供给所述一个或多个应用程序虚拟机,其中所述合并的高速缓存由加速器虚拟机实现。
9.根据权利要求8所述的系统,其中
对所述生产数据集的所述部分的所述请求旨在用于所述存储系统,并且
由所述加速器虚拟机管理所述生产数据集的所述接收和所述高速缓存。
10.根据权利要求8所述的系统,其中
所述生产数据集包括所述一个或多个应用程序虚拟机所需的通用生产数据,并且
所述生产数据集是实时生产数据集的备份副本或覆盖快照。
11.根据权利要求8所述的系统,其中
来自所述一个或多个应用程序虚拟机的对所述生产数据集的所述请求被客户端拦截并被转发给所述加速器虚拟机。
12.根据权利要求11所述的系统,其中
由虚拟机监控程序支持所述一个或多个应用程序虚拟机、所述加速器虚拟机、所述合并的高速缓存和所述客户端。
13.根据权利要求8所述的系统,其中
所述一个或多个应用程序虚拟机中的每一个应用程序虚拟机都采用一个或多个精简配置的虚拟磁盘,并且
所述一个或多个精简配置的虚拟磁盘存储由对应的所述应用程序虚拟机对所述生产数据集做出的改变。
14.一种包括程序指令的非暂态计算机可读存储介质,所述程序指令能够执行以:
拦截来自一个或多个应用程序虚拟机的对生产数据集的一部分的请求,其中
所述生产数据集接收自存储系统,并且
所述生产数据集被高速缓存在合并的高速缓存中;以及
将所述生产数据集的所述部分从所述合并的高速缓存提供给所述一个或多个应用程序虚拟机,其中
所述合并的高速缓存由加速器虚拟机实现。
15.根据权利要求14所述的非暂态计算机可读存储介质,其中
对所述生产数据集的所述部分的所述请求旨在用于所述存储系统,并且
由所述加速器虚拟机管理所述生产数据集的所述接收和所述高速缓存。
16.根据权利要求14所述的非暂态计算机可读存储介质,其中
所述生产数据集包括所述一个或多个应用程序虚拟机所需的通用生产数据,并且
所述生产数据集是实时生产数据集的备份副本或覆盖快照。
17.根据权利要求14所述的非暂态计算机可读存储介质,其中
来自所述一个或多个应用程序虚拟机的对所述生产数据集的所述请求被客户端拦截并被转发给所述加速器虚拟机。
18.根据权利要求17所述的非暂态计算机可读存储介质,其中
由虚拟机监控程序支持所述一个或多个应用程序虚拟机、所述加速器虚拟机、所述合并的高速缓存和所述客户端。
19.根据权利要求14所述的非暂态计算机可读存储介质,其中
所述一个或多个应用程序虚拟机中的每一个应用程序虚拟机都采用一个或多个精简配置的虚拟磁盘,并且
所述一个或多个精简配置的虚拟磁盘存储由对应的所述应用程序虚拟机对所述生产数据集做出的改变。
20.根据权利要求14所述的非暂态计算机可读存储介质,其中
所述存储系统是生产环境的一部分,并且
所述一个或多个应用程序虚拟机、所述加速器虚拟机、所述合并的高速缓存和所述客户端是应用程序开发和测试环境的一部分。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2485MU2015 | 2015-06-30 | ||
IN2485/MUM/2015 | 2015-06-30 | ||
US14/838669 | 2015-08-28 | ||
US14/838,669 US10474486B2 (en) | 2015-06-30 | 2015-08-28 | Data access accelerator |
PCT/US2016/040367 WO2017004361A1 (en) | 2015-06-30 | 2016-06-30 | Data access accelerator |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107924324A true CN107924324A (zh) | 2018-04-17 |
CN107924324B CN107924324B (zh) | 2022-06-07 |
Family
ID=57683803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680048045.3A Active CN107924324B (zh) | 2015-06-30 | 2016-06-30 | 数据访问加速器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10474486B2 (zh) |
EP (1) | EP3317764B1 (zh) |
JP (1) | JP6774971B2 (zh) |
CN (1) | CN107924324B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491776A (zh) * | 2018-11-06 | 2019-03-19 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10558480B2 (en) | 2015-09-10 | 2020-02-11 | Veritas Technologies Llc | Optimizing access to production data |
US10037276B1 (en) * | 2015-11-04 | 2018-07-31 | Veritas Technologies Llc | Systems and methods for accelerating access to data by pre-warming the cache for virtual machines |
US10462182B2 (en) * | 2017-05-12 | 2019-10-29 | Vmware, Inc. | Thin agent-based SSL offloading |
JP7110615B2 (ja) * | 2018-02-22 | 2022-08-02 | 日本電気株式会社 | 情報処理装置、情報処理システム、情報処理方法、及び、プログラム |
US11093625B2 (en) * | 2019-05-09 | 2021-08-17 | Vmware, Inc. | Adaptive file access authorization using process access patterns |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080016298A1 (en) * | 2002-11-13 | 2008-01-17 | Microsoft Corporation | Drawing Resources |
CN101853346A (zh) * | 2009-03-31 | 2010-10-06 | 甲骨文美国公司 | 虚拟机快照和损坏抑制 |
US20110191522A1 (en) * | 2010-02-02 | 2011-08-04 | Condict Michael N | Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory |
US20130262387A1 (en) * | 2009-09-03 | 2013-10-03 | Commvault Systems, Inc. | Utilizing snapshots for access to databases and other applications |
US20140052892A1 (en) * | 2012-08-14 | 2014-02-20 | Ocz Technology Group Inc. | Methods and apparatus for providing acceleration of virtual machines in virtual environments |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0389151A3 (en) * | 1989-03-22 | 1992-06-03 | International Business Machines Corporation | System and method for partitioned cache memory management |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US5940868A (en) * | 1997-07-18 | 1999-08-17 | Digital Equipment Corporation | Large memory allocation method and apparatus |
US7428636B1 (en) * | 2001-04-26 | 2008-09-23 | Vmware, Inc. | Selective encryption system and method for I/O operations |
US7747660B1 (en) | 2003-03-24 | 2010-06-29 | Symantec Operating Corporation | Method and system of providing access to a virtual storage device |
US8365167B2 (en) * | 2008-04-15 | 2013-01-29 | International Business Machines Corporation | Provisioning storage-optimized virtual machines within a virtual desktop environment |
US8352240B2 (en) * | 2008-06-20 | 2013-01-08 | Vmware, Inc. | Decoupling dynamic program analysis from execution across heterogeneous systems |
US9575786B2 (en) * | 2009-01-06 | 2017-02-21 | Dell Products L.P. | System and method for raw device mapping in traditional NAS subsystems |
US8769206B2 (en) * | 2009-01-20 | 2014-07-01 | Oracle International Corporation | Methods and systems for implementing transcendent page caching |
US9043555B1 (en) * | 2009-02-25 | 2015-05-26 | Netapp, Inc. | Single instance buffer cache method and system |
JPWO2010097933A1 (ja) * | 2009-02-27 | 2012-08-30 | 富士通株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
US8370835B2 (en) * | 2009-03-12 | 2013-02-05 | Arend Erich Dittmer | Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device |
US8290911B1 (en) | 2009-06-30 | 2012-10-16 | Symantec Corporation | System and method for implementing data deduplication-aware copying of data |
US8234515B2 (en) * | 2010-04-01 | 2012-07-31 | Accenture Global Services Limited | Repurposable recovery environment |
US8677111B2 (en) * | 2010-05-04 | 2014-03-18 | Riverbed Technology, Inc. | Booting devices using virtual storage arrays over wide-area networks |
US9239909B2 (en) * | 2012-01-25 | 2016-01-19 | Bromium, Inc. | Approaches for protecting sensitive data within a guest operating system |
US9767274B2 (en) * | 2011-11-22 | 2017-09-19 | Bromium, Inc. | Approaches for efficient physical to virtual disk conversion |
US8874823B2 (en) * | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) * | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US20120317642A1 (en) * | 2011-06-09 | 2012-12-13 | Barracuda Networks, Inc. | Parallel Tracing Apparatus For Malicious Websites |
US8938425B1 (en) | 2011-06-30 | 2015-01-20 | Emc Corporation | Managing logical views of storage |
US20130111127A1 (en) | 2011-10-28 | 2013-05-02 | Hitachi, Ltd. | Storage system and data processing method in storage system |
US9069587B2 (en) * | 2011-10-31 | 2015-06-30 | Stec, Inc. | System and method to cache hypervisor data |
US9122535B2 (en) * | 2011-11-22 | 2015-09-01 | Netapp, Inc. | Optimizing distributed data analytics for shared storage |
US9021087B1 (en) * | 2012-01-27 | 2015-04-28 | Google Inc. | Method to improve caching accuracy by using snapshot technology |
US10073656B2 (en) * | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US9116812B2 (en) * | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US8620962B1 (en) * | 2012-02-21 | 2013-12-31 | Netapp, Inc. | Systems and methods for hierarchical reference counting via sibling trees |
US20130311595A1 (en) * | 2012-05-21 | 2013-11-21 | Google Inc. | Real-time contextual overlays for live streams |
US9454487B2 (en) * | 2012-08-27 | 2016-09-27 | Vmware, Inc. | Transparent host-side caching of virtual disks located on shared storage |
US10346095B2 (en) * | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US9280373B1 (en) * | 2012-10-16 | 2016-03-08 | IntelliCorp Inc. | Data transfer guide |
KR101471879B1 (ko) * | 2012-10-31 | 2014-12-11 | 삼성에스디에스 주식회사 | 하이퍼바이저 기반 서버 이중화 시스템, 그 방법 및 서버 이중화 컴퓨터 프로그램이 기록된 기록매체 |
US8949531B2 (en) * | 2012-12-04 | 2015-02-03 | Vmware, Inc. | Automated space management for server flash cache |
US20140237471A1 (en) * | 2013-02-21 | 2014-08-21 | Barracuda Networks, Inc. | Boot and Browse Apparatus Coupled to Backup Archive and Method of Operation |
US9239682B2 (en) * | 2013-02-27 | 2016-01-19 | Vmware, Inc. | I/O hint framework for Server Flash Cache |
US9189410B2 (en) * | 2013-05-17 | 2015-11-17 | Vmware, Inc. | Hypervisor-based flash cache space management in a multi-VM environment |
US9292328B2 (en) * | 2013-05-24 | 2016-03-22 | Bromium, Inc. | Management of supervisor mode execution protection (SMEP) by a hypervisor |
US9183103B2 (en) * | 2013-05-31 | 2015-11-10 | Vmware, Inc. | Lightweight remote replication of a local write-back cache |
US9984089B2 (en) * | 2013-06-28 | 2018-05-29 | Vmware, Inc. | Techniques for implementing hybrid flash/HDD-based virtual disk files |
US9882984B2 (en) * | 2013-08-02 | 2018-01-30 | International Business Machines Corporation | Cache migration management in a virtualized distributed computing system |
US9342253B1 (en) * | 2013-08-23 | 2016-05-17 | Nutanix, Inc. | Method and system for implementing performance tier de-duplication in a virtualization environment |
US9183151B2 (en) * | 2013-08-30 | 2015-11-10 | Vmware, Inc. | Thread cache allocation |
US9594583B2 (en) * | 2013-11-12 | 2017-03-14 | Red Hat, Inc. | Lightweight snapshots for virtual disks |
US9507617B1 (en) * | 2013-12-02 | 2016-11-29 | Trend Micro Incorporated | Inter-virtual machine communication using pseudo devices |
US9495251B2 (en) * | 2014-01-24 | 2016-11-15 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US20150363219A1 (en) * | 2014-03-14 | 2015-12-17 | Avni Networks Inc. | Optimization to create a highly scalable virtual netork service/application using commodity hardware |
US9697130B2 (en) * | 2014-06-25 | 2017-07-04 | Sandisk Technologies Llc | Systems and methods for storage service automation |
US10007445B2 (en) * | 2014-11-04 | 2018-06-26 | Rubrik, Inc. | Identification of virtual machines using a distributed job scheduler |
US10558480B2 (en) * | 2015-09-10 | 2020-02-11 | Veritas Technologies Llc | Optimizing access to production data |
US10037276B1 (en) * | 2015-11-04 | 2018-07-31 | Veritas Technologies Llc | Systems and methods for accelerating access to data by pre-warming the cache for virtual machines |
US20170132027A1 (en) * | 2015-11-09 | 2017-05-11 | Symantec Corporation | Systems and methods for coordinating data caching on virtual storage appliances |
US9880744B1 (en) * | 2015-12-22 | 2018-01-30 | Veritas Technologies Llc | Method for flash-friendly caching for CDM workloads |
US9836402B1 (en) * | 2016-07-22 | 2017-12-05 | Red Hat, Inc. | Guest ordering of host file system writes |
-
2015
- 2015-08-28 US US14/838,669 patent/US10474486B2/en active Active
-
2016
- 2016-06-30 CN CN201680048045.3A patent/CN107924324B/zh active Active
- 2016-06-30 JP JP2017568326A patent/JP6774971B2/ja active Active
- 2016-06-30 EP EP16745905.6A patent/EP3317764B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080016298A1 (en) * | 2002-11-13 | 2008-01-17 | Microsoft Corporation | Drawing Resources |
CN101853346A (zh) * | 2009-03-31 | 2010-10-06 | 甲骨文美国公司 | 虚拟机快照和损坏抑制 |
US20130262387A1 (en) * | 2009-09-03 | 2013-10-03 | Commvault Systems, Inc. | Utilizing snapshots for access to databases and other applications |
US20110191522A1 (en) * | 2010-02-02 | 2011-08-04 | Condict Michael N | Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory |
US20140052892A1 (en) * | 2012-08-14 | 2014-02-20 | Ocz Technology Group Inc. | Methods and apparatus for providing acceleration of virtual machines in virtual environments |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491776A (zh) * | 2018-11-06 | 2019-03-19 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
CN109491776B (zh) * | 2018-11-06 | 2022-05-31 | 北京百度网讯科技有限公司 | 任务编排方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US10474486B2 (en) | 2019-11-12 |
CN107924324B (zh) | 2022-06-07 |
JP2018519608A (ja) | 2018-07-19 |
US20170003999A1 (en) | 2017-01-05 |
EP3317764B1 (en) | 2019-09-11 |
EP3317764A1 (en) | 2018-05-09 |
JP6774971B2 (ja) | 2020-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11184233B1 (en) | Non-disruptive upgrades to a cloud-based storage system | |
US10871922B2 (en) | Integrated storage management between storage systems and container orchestrators | |
US20210019063A1 (en) | Utilizing data views to optimize secure data access in a storage system | |
CN107924324A (zh) | 数据访问加速器 | |
US11095706B1 (en) | Secure cloud-based storage system management | |
US11068162B1 (en) | Storage management in a cloud data store | |
US20200174671A1 (en) | Bucket views | |
US11829629B2 (en) | Synchronously replicating data using virtual volumes | |
US20220075546A1 (en) | Intelligent application placement in a hybrid infrastructure | |
US11392555B2 (en) | Cloud-based file services | |
US11455168B1 (en) | Batch building for deep learning training workloads | |
US11487665B2 (en) | Tiered caching of data in a storage system | |
US20210055885A1 (en) | Enhanced data access using composite data views | |
US20220253255A1 (en) | Scaling Storage Resources In A Storage Volume | |
US20220335005A1 (en) | Storage-deferred copying between different file systems | |
CN105227672B (zh) | 数据存储及访问的方法和系统 | |
US20150193526A1 (en) | Schemaless data access management | |
US11816356B2 (en) | Container orchestrator-aware storage system | |
US11789651B2 (en) | Compliance monitoring event-based driving of an orchestrator by a storage system | |
US20210326047A1 (en) | Application-Aware Management of a Storage System | |
US20210248252A1 (en) | Ensuring compliance with geography-based data movement restrictions | |
US11816068B2 (en) | Compliance monitoring for datasets stored at rest | |
US11513974B2 (en) | Using nonce to control erasure of data blocks of a multi-controller storage system | |
US11403043B2 (en) | Efficient data compression by grouping similar data within a data segment | |
US20220091744A1 (en) | Optimized Application Agnostic Object Snapshot System |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |