CN108604162A - 优化对生产数据的访问 - Google Patents

优化对生产数据的访问 Download PDF

Info

Publication number
CN108604162A
CN108604162A CN201680060709.8A CN201680060709A CN108604162A CN 108604162 A CN108604162 A CN 108604162A CN 201680060709 A CN201680060709 A CN 201680060709A CN 108604162 A CN108604162 A CN 108604162A
Authority
CN
China
Prior art keywords
virtual
distribution
virtual machine
creation data
storage system
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
CN201680060709.8A
Other languages
English (en)
Other versions
CN108604162B (zh
Inventor
C·达尔拉
V·巴拉德瓦杰
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.)
China Ruitai Technology LLC
NortonLifeLock Inc
Original Assignee
China Ruitai Technology 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 China Ruitai Technology LLC filed Critical China Ruitai Technology LLC
Publication of CN108604162A publication Critical patent/CN108604162A/zh
Application granted granted Critical
Publication of CN108604162B publication Critical patent/CN108604162B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/18File system types
    • G06F16/182Distributed file systems
    • 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/18File system types
    • G06F16/188Virtual file systems
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

本发明公开了用于在应用程序开发和测试环境中优化对生产数据的访问的各种系统、方法和过程。如果输入/输出(I/O)操作是读取操作,则确定要在其处执行所述读取操作的虚拟存储单元上的存储位置。还确定在所述存储位置处是否执行了较早的写入操作。如果在所述存储位置处执行了较早的写入操作,则对一个或多个虚拟数据文件执行所述读取操作。然而,如果所述较早的写入操作在所述存储位置处未执行,则对分配的存储空间执行所述读取操作。

Description

优化对生产数据的访问
技术领域
本公开涉及数据存储。具体地讲,本公开涉及优化对生产数据的访问。
相关领域
生产数据是持久存储,并且供公司和/或组织用于商业目的的信息。生产数据通常用于进行应用程序开发和测试。例如,虚拟机可在应用程序开发和测试环境中实现,并且可用于使用生产数据来执行应用程序开发和测试。
为了进行应用程序开发和测试,需要生产数据的拷贝。具体地讲,由于应用程序开发和测试可修改(或更改)生产数据(例如,在应用程序开发和测试的过程期间),需要生产数据的拷贝以确保生产数据的原始拷贝保持未被篡改和原始状态。然而,由于生产数据集的大小通常非常大,所以应用程序开发和测试环境制作(并消耗)生产数据的大量拷贝。
创建大型生产数据集的拷贝需要大量的时间,在此期间生产数据不可立即用于应用程序开发和测试环境(例如,不可立即用于进行这样的应用程序开发和测试的虚拟机)。此外,由于对生产数据的该拷贝做出的更改(或修改)通常非常小或极小,所以生产数据的拷贝的绝大部分保持未更改和/或未修改,因此进一步经由复制冗余来呈现生产数据的配置。
发明内容
本发明公开了用于在应用程序开发和测试环境中优化对生产数据的访问的各种系统、方法和过程。一种这样的方法涉及响应于确定输入/输出(I/O)操作是写入操作来执行虚拟数据文件的写入操作。在该示例中,虚拟数据文件存储在虚拟磁盘中,虚拟磁盘是虚拟存储单元的一部分,并且虚拟数据文件是分配的存储空间(在虚拟磁盘上)的一部分。
在一些实施方案中,响应于确定I/O操作是读取操作,则该方法确定要在其处执行读取操作的虚拟存储单元上的存储位置,并且确定在存储位置处是否执行了较早的写入操作。响应于确定在存储位置处执行了较早的写入操作,该方法对虚拟数据文件执行读取操作,并且响应于确定较早的写入操作在存储位置处未执行,该方法对分配的存储空间执行读取操作。
在一个实施方案中,方法在存储系统处接收I/O操作。存储系统包括生产数据文件和虚拟存储单元。在该示例中,虚拟存储单元包括虚拟磁盘和分配的存储空间。在另一个实施方案中,方法确定I/O操作是读取操作还是写入操作。I/O操作由在虚拟化服务器上执行的虚拟机生成,并且存储系统通信地耦接到虚拟化服务器。
在一些实施方案中,方法在存储系统处从虚拟机接收分配图。在该示例中,分配图包括关于分配的存储空间的信息。分配的存储空间由虚拟机分配,并且对应于存储在存储系统上的生产数据文件。
在某些实施方案中,方法涉及将分配图中的信息转换为与生产数据文件相关联的一个或多个偏移。在该示例中,从存储结构中检索一个或多个偏移。方法然后将存储结构覆盖在分配图上方。覆盖允许存储系统将来自虚拟机的导向至虚拟存储单元上的分配的存储空间的I/O操作重新映射到存储系统上的生产数据文件。
在其他实施方案中,方法包括从虚拟化服务器接收创建虚拟存储单元的请求,基于接收,在存储系统中创建虚拟存储单元。虚拟机使用虚拟存储单元来分配所分配的存储空间。
在一些实施方案中,方法涉及将虚拟磁盘从存储系统导入到虚拟化服务器。导入由客户端执行。在该示例中,客户端是网络文件系统客户端。将虚拟磁盘导入到在虚拟化服务器上执行的虚拟机监控程序。在其他实施方案中,方法涉及将虚拟磁盘从虚拟机监控程序导出到虚拟机,其中导出由虚拟机监控程序执行。
在一个实施方案中,生产数据文件包括虚拟机所需的用于应用程序开发和测试的生产数据。生产数据是一个或多个实时生产数据集的一部分。在另一个实施方案中,存储系统中的虚拟磁盘是稀疏文件,虚拟机采用精简配置的虚拟磁盘,并且精简配置预分配的虚拟磁盘存储由虚拟机对生产数据文件做出的更改。
在某些实施方案中,存储系统是生产环境的一部分,并且虚拟机和客户端是应用程序开发和测试环境的一部分。在一个实施方案中,重新映射允许虚拟机通过将读取操作导向至分配的存储空间而不是生产数据文件来访问生产数据文件。
以上内容是一个概述,因此必然包含对细节的简化、概括和省略;因此本领域的技术人员将会理解,该概述仅是说明性的,并不意图进行任何限制。如由权利要求单独定义的,本公开的其他方面、发明特征和优点将在以下阐述的非限制性详细描述中变得显而易见。
附图说明
通过参考附图,可以更好地理解本公开,并且其多个目的、特征和优点对于本领域的技术人员而言是显而易见的。
图1是根据本公开的一个实施方案的通信地耦接到存储系统的虚拟化服务器的框图。
图2是根据本公开的一个实施方案的应用程序开发和测试环境的框图。
图3是根据本公开的一个实施方案的可用于提供对生产数据的访问的数据访问模块的框图。
图4是示出根据本公开的一个实施方案的用于重新映射输入/输出(I/O)操作的过程的流程图。
图5是示出根据本公开的一个实施方案的用于提供对生产数据的访问的过程的流程图。
图6是示出根据本公开的一个实施方案的用于从生产数据提供读取操作的过程的流程图。
图7是示出根据本公开的一个实施方案的用于将新数据文件映射到新分配的过程的流程图。
图8是根据本公开的一个实施方案的计算系统的框图,该框图示出了可在软件中实现的虚拟机监控程序。
图9是根据本公开的一个实施方案的联网系统的框图,该框图示出了各种计算设备可如何经由网络进行通信。
虽然本公开容许各种修改和替代形式,但是在附图和详细描述中作为示例提供了本公开的特定实施方案。应当理解,附图和详细描述并非旨在将本公开限制于所公开的特定形式。相反,意图是覆盖落入由所附权利要求书定义的本公开的精神和范围内的所有修改、等同物和替代物。
具体实施方式
介绍
应用程序开发和测试环境优选地在生产(而不是测试)数据上运行,以便在模拟真实世界环境的条件下执行此类开发和测试。然而,此类生产数据集可能相当大。此类生产数据需要及时地由运行正在开发和测试的应用程序的一个或多个虚拟机(称为应用程序虚拟机)访问。考虑到应用程序开发和测试环境的性质,可能需要对生产数据的拷贝进行多次刷新。此类数据的初始配置,以及其随后的刷新可因此需要生产数据的多个拷贝被制作并从(例如,从存储装置中的存储堆栈)生产环境转移到应用程序开发和测试环境。
通常,生产数据在经受应用程序开发和测试时在很大程度上不会更改(或修改)。据估计,实际上,在应用程序开发和测试期间使用的生产数据的拷贝的相当一部分保持不变。例如,如果应用程序开发和测试所需的生产数据是一(1)太字节(TB),则必须首先为这样的开发和测试制作1TB生产数据集的拷贝。随后,如果应用程序开发和测试过程要求刷新生产数据的拷贝,则必须创建生产数据集的另一个1TB拷贝。然而,应用程序开发和测试过程通常仅更改(或修改)1TB生产数据集的拷贝的小部分(例如,百分之五(5%))。1TB生产数据集的拷贝的其余百分之九十五(95%)保持不变(例如,未更改)。
因此,通过复制生产数据将生产数据配置到应用程序开发和测试环境会造成至少两个问题。首先,由于创建大型生产数据集的拷贝消耗大量的时间,所以最初无法及时完成用生产数据配置应用程序开发和测试环境。其次,每当需要生产数据的刷新拷贝来继续应用程序开发和测试时,浪费大量额外的时间制作大型生产数据集的另一个拷贝。由于生产数据的现有拷贝的显著部分保持不变,所以制作生产数据的重复拷贝也是多余的。
本文公开了在应用程序开发和测试环境中优化对生产数据的访问的方法、系统和过程。
一个示例性应用程序开发和测试环境
对表示生产(或实时)数据文件(例如,商业实体目前使用的真实客户数据库)的一个或多个生产数据文件的拷贝执行应用程序开发和测试在。此类开发和测试确保应用程序在真实场景中适当并且如预期那样执行。生产数据文件(其表示生产数据和/或生产环境)的拷贝(或封面快照)可用于应用程序开发和测试。本文所述的应用程序开发和测试环境仅仅是优选使用实时数据的情况的示例,但是其使用不允许对其进行任何修改。还可以设想具有不同于本文所示的配置的环境。
为了执行此类开发和测试,经常使用缩小的虚拟机。例如,如果某公司在生产环境中正在使用Web服务器软件,则优选的是使用同样运行这样的Web服务器软件的缩小的虚拟机(例如,如果生产环境支持一千(1000)位客户,则应用程序开发和测试环境中缩小的虚拟机可支持仅十(10)位客户)。这样,生产环境(考虑到生产数据准确性的重要性)不受影响。
图1是根据一个实施方案的实现虚拟化服务器的计算系统的框图。虚拟化服务器105是包括处理器110和存储器115的计算设备。虚拟化服务器105可以是包括服务器、台式计算机、膝上型电脑、平板电脑等的任何类型的计算设备。
存储器115实现虚拟化环境以执行应用程序开发和测试。存储器115包括虚拟机125,实现文件系统客户端130和虚拟磁盘135的虚拟机监控程序120(虚拟磁盘135用虚线示出以说明虚拟磁盘135不是单独的虚拟磁盘,而是指从存储系统导入以用于分配的虚拟磁盘150,如本文将讨论的)。
如上所述,存储器115也实现虚拟机监控程序120和操作系统140。如图1所示,虚拟机监控程序120可使用软件来实现。然而,虚拟机监控程序120也可以是本地或裸机虚拟机监控程序。此外,其他实施方案可针对每个虚拟化服务器实现不同数量的虚拟机,并且虚拟化服务器可包括附加计算设备,这些附加计算设备各自实现与相同虚拟化服务器内的其他计算设备相同或不同数量的虚拟机。
图1还示出了存储系统170。存储系统160可以是存储装置并且/或者可包括多种不同存储设备中的一者或多者,包括硬盘驱动器、光盘、数字多功能盘、固态驱动器、存储器诸如闪存存储器或阵列等。数据访问模块165可经由网络180在存储系统170和虚拟化服务器105之间提供接口。应当注意,代替网络180和/或除了网络180之外,可使用任何其他适当的网络或互连。
除了数据访问模块165之外,存储系统170还包括虚拟存储单元145。虚拟存储单元145实现虚拟磁盘150。虚拟存储单元145可用作独立虚拟磁盘或者可实现一个或多个虚拟磁盘。虚拟磁盘150包括分配的存储空间155。存储系统170还包括生产数据文件160。在该示例中,存储系统170通过提供对生产数据文件160的一个或多个应用程序访问来实现生产环境。
图2是根据一个实施方案的应用程序开发和测试环境的框图。与图1类似,图2还包括虚拟化服务器105,该虚拟化服务器实现两个虚拟机:虚拟机125(1)和125(2)。虚拟机125(2)耦接到可写入覆盖205。虚拟机125(1)和125(2)均耦接到实现网络文件系统(NFS)客户端210的虚拟机监控程序120。NFS客户端210是一种类型的文件系统客户端(例如,如图1所示的客户端130)。
在一个实施方案中,可写入覆盖205包括在精简配置的虚拟磁盘上提供的内容日志,该精简配置的虚拟磁盘存储由虚拟机125(2)对生产数据文件做出的更改。例如,覆盖文件205被提供在精简配置的虚拟磁盘(例如,差分虚拟磁盘)上,该精简配置的虚拟磁盘存储由虚拟机125(2)对生产数据集做出的更改。NFS客户端210可访问覆盖文件以识别数据块,该数据块可从虚拟机的覆盖文件提供给虚拟机(例如,使用内容日志)。在其他示例中,NFS客户端不访问可写覆盖(例如,虚拟机125(1))。如果虚拟机监控程序确定所请求的生产数据文件处于可写覆盖中,则虚拟机监控程序从可写覆盖提供生产数据。如果虚拟机监控程序确定所请求的生产数据不处于可写覆盖中,则虚拟机监控程序与NFS客户端通信以从存储系统中获取生产数据文件。
图2还示出了实现iSCSI启动器220的物理主机215。物理主机215可为任何类型的计算设备,包括服务器、台式计算机、膝上型计算机、平板电脑等。iSCSI启动器220使得物理主机215能够通过网络180、或一些其他类型的网络和/或互连来连接到存储系统170。虚拟化服务器105和物理主机215可各自单独或组合地用于执行应用程序开发和测试。因此,虚拟化服务器105(具有虚拟机125(1)和125(2))和物理主机215可统称为应用程序开发和测试环境。
如图2所示,存储系统170包括数据访问模块165,该数据访问模块在应用程序开发和测试环境与生产环境(例如,存储系统170)之间提供接口。数据访问模块165包括映射模块235。此外,存储系统170包括iSCSI目标225和虚拟存储单元145。虚拟存储单元实现虚拟磁盘150。虚拟磁盘150包括分配的存储空间155,该分配的存储空间进一步存储虚拟数据文件175。存储系统170还包括生产数据157中的生产数据文件160,如图1和图2所示。如上所述,虚拟存储单元可为虚拟磁盘,或者可实现一个或多个虚拟磁盘。
在一个实施方案中,图2的系统可用于提供对生产数据文件160的访问。例如,数据访问模块165确定由虚拟机125(1)或125(2)、或物理主机215生成的输入/输出(I/O)操作是否是写入操作(或者简称为写入)。如果该I/O操作是写入,则数据访问模块165执行对虚拟数据文件175的写入。应当注意,虚拟数据文件175存储在虚拟磁盘150(例如,也称为基础虚拟磁盘)中,该虚拟磁盘是虚拟存储单元145的一部分。虚拟数据文件175是虚拟磁盘150上的分配的存储空间155的一部分。在该示例中,分配的存储空间155可通过数据访问模块165被分配在虚拟磁盘150上。
在另一个实施方案中,数据访问模块165确定(从虚拟化服务器105或从物理主机215接收的)I/O操作是否是读取操作(或者简称为读取)。如果I/O操作是读取,则数据访问模块165确定要在其处执行读取的虚拟存储单元145上的存储位置。数据访问模块165还确定较早的写入是否在该存储位置处执行。如果较早的写入在该存储位置处执行,则数据访问模块165对虚拟数据文件175执行读取。然而,如果较早的写入在该存储位置处未执行,则数据访问模块165对分配的存储空间155执行读取。
优化对生产数据的访问的示例
图3是根据一个实施方案的可用于提供对生产数据的访问的数据访问模块的框图。与图1和图2类似,图3示出了实现为应用程序开发和测试环境的虚拟化服务器105以及实现为生产环境的存储系统170。虚拟化服务器105包括虚拟机125和虚拟机监控程序120。虚拟机监控程序120进一步实现NFS客户端210和虚拟磁盘135,如前所述,该虚拟磁盘是精简配置的虚拟磁盘。NFS客户端210提供由虚拟机125和存储系统170生成的I/O操作(例如,读取和/或写入)之间的接口机构。
虚拟机监控程序120实现可存储虚拟数据文件、虚拟机规格、模板等的数据存储(例如,如图1和图3所示的虚拟磁盘135)。虚拟机监控程序可将虚拟数据文件绑定到虚拟机作为用于在虚拟机125上执行(或运行)的操作系统140的小型计算机系统接口(SCSI)块设备。数据存储可由文件系统(例如,虚拟机监控程序自己的专有文件系统或NFS文件系统)支持。当数据存储由NFS文件系统支持时,虚拟机监控程序120上的NFS客户端120可用于安装由NFS服务器提供的NFS文件系统。NFS服务器可在另一主机设备(例如,虚拟设备或物理设备)上运行。对从数据存储(例如,虚拟磁盘135)提供的虚拟磁盘150的I/O操作经过后备文件系统(例如,如上所述的NFS文件系统)。
当替代地使用虚拟机监控程序的专有文件系统时,I/O操作可通过专有文件系统,该专有文件系统继而可执行诸如为精简配置的虚拟磁盘(例如,虚拟磁盘135)配置存储(如果需要)的动作,然后允许I/O操作进行到虚拟数据文件175中的适当区域。对于NFS数据存储,I/O操作被NFS客户端210拦截,并且重新导向到NFS服务器。
在一些实施方案中,数据访问模块165使用映射模块235在存储系统170处从虚拟机125接收分配图。分配图包括关于分配的存储空间155的信息。如上所述,分配的存储空间155可由虚拟磁盘150上的数据访问模块165基于来自虚拟机125的这样做的请求来分配。在该示例中,分配的存储空间155上的虚拟数据文件175对应于(并且被映射到)存储在存储系统170上的生产数据文件160。
映射模块235执行虚拟存储单元145上实现的虚拟磁盘150上的虚拟数据文件175到生产数据文件160的映射。一旦映射模块235从虚拟机125接收分配图,则映射模块235将分配图中的信息转换为与生产数据文件160相关联的一个或多个偏移。映射模块235可通过访问生产数据文件160的存储结构来检索与生产数据文件160相关联的一个或多个偏移。
在一个实施方案中,映射模块235将生产数据文件160的存储结构覆盖在从虚拟机125接收的分配图上方。在该示例中,覆盖允许数据访问模块165将来自虚拟机125的导向至分配的存储空间155上的虚拟数据文件175的一个或多个I/O操作重新映射到到生产数据文件160,所述生产数据文件分别存储在存储系统170上。这样,数据访问模块165可通过虚拟机125优化对生产数据文件160的访问以用于应用程序开发和测试,而无需复制生产数据文件。
在一些实施方案中,数据访问模块165从虚拟机125(或虚拟化服务器105上的其他这样的虚拟计算设备)接收请求以创建虚拟存储单元145。基于这样的请求,数据访问模块165在存储系统170中创建虚拟存储单元145。虚拟存储单元145可被虚拟机125用于分配所分配的存储空间155。例如,如果生产数据文件160的总大小为10千兆字节(10GB),则数据访问模块166可通过创建虚拟磁盘(例如,虚拟磁盘150)来创建虚拟存储单元,并且将存储空间分配在该(基础)虚拟磁盘上作为分配的存储空间(例如,分配的存储空间155)。
然而,应当注意,经由数据访问模块165(例如,以适当的虚拟机磁盘(VMDK)格式)创建的虚拟磁盘(例如,虚拟磁盘150)是稀疏文件。稀疏文件是一种类型的文件,该文件可被创建以在文件本身大部分为空时更有效地利用文件系统上的空间。因此,虽然数据访问模块165基于生产数据文件160在虚拟存储单元145中分配存储空间,但分配(例如,分配的存储空间155)实际上不会占用10GB的存储空间(例如,生产数据文件的实际大小)。由于分配而在虚拟存储单元145上占用的仅有存储空间是少量的存储空间(例如,以存储与偏移有关的元数据等)。
如前所述,映射模块235将生产数据文件160的存储结构覆盖在从虚拟机125接收的分配图上方。分配图由虚拟机125通过将虚拟磁盘150从存储系统170导入到虚拟化服务器105,例如通过使用NFS客户端210来创建。例如,将虚拟磁盘150(例如,分配的稀疏文件)导入到在虚拟化服务器105上执行的虚拟机监控程序120。虚拟机监控程序120然后将该虚拟磁盘导出到虚拟机125。
例如,并且在一些实施方案中,虚拟磁盘150被创建为存储单元170上的稀疏文件(例如,稀疏文件仅为分配)。导向虚拟机监控程序120中的NFS客户端210以导出该虚拟磁盘150。通过这样做,NFS客户端210和虚拟机125均能够访问虚拟磁盘150。如上所述,NFS客户端210将分配的稀疏文件(例如,虚拟磁盘150)作为另一个虚拟磁盘(例如,作为虚拟磁盘135)导出到虚拟机125。
这样,虚拟机125可在分配的存储空间155中分配虚拟数据文件175。数据访问模块165然后可将这些分配从虚拟化服务器105提取回存储系统170,并且进一步在这些分配(例如,由虚拟机125指定)位于虚拟磁盘150上的位置进行转换。然后映射模块235可将虚拟磁盘150的这些部分(或分配)重新映射到存储系统170上的生产数据文件160。前述过程使得生产数据文件160立即可供虚拟机125用于应用程序开发和测试,因为重新映射允许虚拟机125通过将读取导向到分配的存储空间155而不是生产数据文件160来访问生产数据文件160。
在一个实施方案中,由虚拟机125执行的对生产数据文件160的更改(如前所述,该更改可能较小)被写入虚拟存储单元145上的虚拟数据文件175。在另一个实施方案中,由虚拟机执行的对生产数据文件160的更改可由可写覆盖(例如,被实现为精简配置的虚拟磁盘)捕获,如图2所示。
用以优化对生产数据的访问的示例性过程
图4是示出根据一个实施方案的用于重新映射I/O操作的过程的流程图。该过程在410处通过接收请求(例如,来自虚拟机125(1)或125(2))以创建虚拟存储单元(例如,虚拟存储单元145)而开始。在420处,该过程在存储系统中创建虚拟存储单元(例如,数据访问模块165在存储系统170中创建虚拟存储单元145)。
如前所述,虚拟机125(1)或125(2)、或物理主机215可基于生产数据文件在虚拟存储单元上分配存储空间。应当注意,在虚拟存储单元上分配存储空间仅更改虚拟磁盘150的文件系统的元数据结构-由于存储空间的分配而不实际执行I/O操作。
在430处,该过程从虚拟化服务器(例如,从NFS客户端210)接收分配图。此时,数据访问模块165确定虚拟机创建的分配并将这些分配转换为虚拟磁盘150的偏移。应当注意,数据文件分配在文件系统中通常不是连续的。由此,数据访问模块165转换分配到虚拟磁盘150上的虚拟数据文件的偏移的每一个块。
在440处,该过程访问生产数据文件的数据存储结构。在450处,该过程覆盖分配图和数据存储结构(例如,通过在分配图与(生产数据文件的)数据存储结构之间共享一个或多个范围)。在460处,该过程进行到从虚拟机到分配的存储空间的重新映射I/O操作。这样,当分配的存储空间接收到读取请求时,映射模块235将读取请求重新映射到生产数据文件的一个或多个实际数据文件,并且将所请求的数据从生产数据文件提供给虚拟机,从而消除了制作生产数据文件的拷贝的需要。然后该过程结束。
图5是示出根据一个实施方案的用于优化对生产数据的访问的过程的流程图。该过程在510处通过接收I/O操作(例如,在数据访问模块165处)而开始。在520处,该过程确定I/O操作是读取还是写入。如果I/O操作是写入,则在530处,该过程对虚拟数据文件(例如,虚拟数据文件175)执行写入。然而,如果I/O操作是读取,则在540处,该过程确定是否对读取的(存储)位置(例如,在虚拟数据文件上)执行较早的写入以确定读取是否请求已被更改和/或修改的数据。
如果对读取的存储位置执行较早的写入,则在560处,该过程对虚拟数据(例如,虚拟数据文件)执行读取。然而,如果没有对读取的存储位置执行较早的写入,则在560处,该过程对生产数据执行读取(例如,数据访问模块165可访问生产数据文件160的实际内容以作为分配的转换和重新映射的结果来提供读取,如图5的流程图所示)。该过程在570处通过确定是否存在任何附加I/O操作而结束。
图6是示出根据一个实施方案的用于从生产数据提供读取操作的过程的流程图。该过程在610处通过从虚拟机获得(或接收)分配图而开始。由于虚拟机125可在虚拟存储单元上分配所分配的存储空间,因此虚拟机125可以分配图的形式保留关于分配的信息(例如,其中一个或多个虚拟数据文件被创建的虚拟磁盘文件系统的目录,一个或多个虚拟数据文件的大小等)。如前所述,这样的分配仅减小文件系统(而不是存储系统)的自由空间,因为I/O操作尚未写入分配的存储空间中的虚拟数据文件。
在620处,该过程将分配转换为在分配的存储空间上的偏移。例如,数据访问模块165可接收来自NFS客户端210的分配图(也称为块分配图),该分配图包括关于由虚拟机分配在分配的存储空间上的一个或多个虚拟数据文件的信息。在接收到块分配图之后,映射模块235将从虚拟机接收(并且包含在分配图中)的虚拟数据文件的分配转换成存储系统上的分配的存储空间中的虚拟数据文件的偏移。
在630处,该过程获得(或接收)生产数据文件的数据存储结构。生产数据文件的数据存储结构可以另一个块分配图的形式,或者以显示生产数据文件的偏移的某种其他格式接收。此时,该过程经由映射模块235可访问两个块图。第一块图是从虚拟机接收的分配图。第二块图是存储系统中存在的生产数据文件的数据存储结构。在640处,该过程覆盖(从虚拟机接收的)分配图和数据存储结构(例如,存储在存储系统中第二块图)。
例如,分配图可显示与虚拟机相关联的虚拟磁盘(例如,虚拟磁盘135)中的虚拟数据文件的偏移以及虚拟数据文件的长度。在覆盖时,虚拟磁盘文件系统中的虚拟数据文件的该分配(例如,通过虚拟机)可用于确定虚拟数据文件实际开始(和结束)的偏移,以及存储系统中的虚拟磁盘上的虚拟数据文件的大小(例如,在虚拟存储单元145上的虚拟磁盘150的分配的存储空间155中,如图3所示)。
在650处,该过程将分配的存储空间中的(虚拟数据文件的)偏移重新映射到生产数据157中的生产数据文件中的实际数据的偏移。这样,图6的过程可在不复制生产数据文件的情况下为一个或多个虚拟机提供生产数据文件。因此,在660处,该过程从虚拟磁盘(例如,从分配的存储空间155中的虚拟数据文件175)提供写入(和对修改的写入的读取)。然而,由于生产数据的显著部分在应用程序开发和测试期间通常保持未更改,因此该过程在670处通过从生产数据157(例如,从生产数据文件160)提供读取而结束。
图7为示出根据一个实施方案的用于对生产数据的相同拷贝进行应用程序开发和测试,或用生产数据的较新拷贝(例如,较新版本)进行应用程序开发和测试的过程的流程图。在一个实施方案中,该(生产)数据刷新过程可使用连接到虚拟机125的相同虚拟磁盘(例如,如图1所示的虚拟磁盘135)来完成。该过程在710处通过(例如,使用数据访问模块165从虚拟机125)获取现有虚拟数据文件的分配而开始。在720处,该过程从存储系统170上(例如,虚拟盘150上)的(现有)虚拟数据文件回收空间。在730处,该过程删除(虚拟机125上的)这些(现有)虚拟数据文件。
在740处,该过程为虚拟机125上的新虚拟数据文件分配空间(例如,使用文件系统客户端130和虚拟磁盘135)。在750处,该过程从虚拟机125获取这些(新)虚拟数据文件的分配。该过程在760处通过将新的虚拟数据文件映射到存储系统170上的这些分配而结束。
共享数据范围的方法的示例
在一个实施方案中,映射器方法可用于在虚拟磁盘文件系统和主机文件系统之间共享数据范围。在该示例中,映射器(例如,在映射模块235中实现)允许将虚拟数据文件指定为一组虚拟数据文件的函数。映射器是在应用程序到文件系统之间的I/O路径中实现的软件部件。映射器创建由其他文件块组成的文件的视图。示例性映射规格可包括:[Filel];FileA,0、0、10;FileB,0、10、20;和FileC,50、30、10。映射器可使用虚拟数据文件的该规格作为一组虚拟数据文件的函数,以从复合文件(例如,tar文件)中识别主机文件系统命名空间中的各个文件。映射器还允许将虚拟数据文件内容指定为对多个生产数据文件的聚集。映射器可用于指定要用于识别生产数据文件的虚拟磁盘的区域。因此,当对虚拟磁盘执行I/O操作时,数据访问模块165可拦截I/O操作并提供来自生产数据文件的数据。
例如,映射器可以如下读取上述示例性规格:(1)创建名为“Filel”的文件,其中Filel的内容由文件FileA、FileB和FileC组成。三个数字中的第一个数字(例如,分别在FileA、FileB和FileC中的0、0、和50)被读取为指定文件中的偏移。第二个数字(例如,分别在FileA、FileB和FileC中的0、10和30)是Filel中的偏移,并且三个数字中的第三个数字(例如,分别在FileA、FileB和FileC中的10、20和10)是该文件内容的长度。例如,从FileA的偏移零(0)处开始的十(10)个块用于在偏移零(0)处形成(或分配)Filel的内容。类似地,从FileB的偏移0处开始的二十(20)个块用于在偏移10处形成Filel的内容。同样,从FileC的偏移50处开始的10个块用于在偏移30处形成Filel的内容。
因此,在一些实施方案中,当Filel在偏移0处读取时,映射器将Filel的内容为10个块从FileA提供,对于接下来的20个块从FileB提供,并且对于最后10个块从FileC提供。例如,如果应用程序在偏移五(5)处读取Filel的10个块,则映射器从FileA提供前5个块并且从FileB提供接下来的5个块。
在另一个实施方案中,本地文件系统方法可用于在虚拟磁盘文件系统和主机文件系统之间共享数据范围。本地文件系统方法使生产数据文件可用于虚拟数据文件,其中生产数据文件和虚拟数据文件均可充当到另一个主机的文件系统(例如,充当嵌套文件系统)。
嵌套文件系统是这样的文件系统,其中文件系统中的文件包含自身形成完整文件系统的数据。例如,虚拟数据文件175可托管客户操作系统(例如,操作系统140)可见且可用的完整文件系统。对于主机文件系统(例如,在虚拟机监控程序120上或通过虚拟机监控程序120实现的文件系统),虚拟数据文件只是文件。在一个实施方案中,可以创建由虚拟磁盘托管的文件系统的视图。在该示例中,文件系统内容可从不同的文件提供而不是复制虚拟磁盘内的文件系统内容。可使用例如上述的映射器方法虚拟地使内容可用。
关于映射器方法和本地文件系统方法的上述示例,以及在一个或多个实施方案中,存储系统包括文件系统,并且存储系统上的虚拟磁盘还包括单独的文件系统。存储系统的文件系统是主机文件系统,并且虚拟磁盘的文件系统是虚拟磁盘文件系统。在这些示例中,虚拟磁盘文件系统管理虚拟机的虚拟数据文件,并且主机文件系统管理存储在存储系统中的生产数据文件。
示例性计算环境
图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还可以表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统800与一个或多个附加网络或存储设备之间的通信。主机适配器的示例包括小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、串行高级技术附件(SATA)、串行附接SCSI(SAS)和外部SATA(eSATA)主机适配器、高级技术附件(ATA)和并行ATA(PATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口845还可允许计算系统800参与分布式或远程计算(例如,通过从远程设备接收指令/将指令发送到远程设备以供执行)。
如图8所示,计算系统800还可以包括至少一个显示设备810,该显示设备经由显示适配器815耦接到通信基础结构805。显示设备810通常表示能够可视地显示由显示适配器815转发的信息的任何类型或形式的设备。类似地,显示适配器815通常表示被配置为转发来自通信基础结构805(或来自帧缓冲器,如本领域所已知)的图形、文本和其他数据以在显示设备810上显示的任何类型或形式的设备。计算系统800还可包括经由输入接口825耦接到通信基础结构805的至少一个输入设备830。输入设备830通常表示能够向计算系统800提供由计算机或人生成的输入的任何类型或形式的输入设备。输入设备830的示例包括键盘、指向设备、语音识别设备或任何其他输入设备。
计算系统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)来与虚拟化服务器310进行通信。
网络180通常表示能够促进多个计算设备之间的通信的任何类型或形式的计算机网络或体系结构。网络180可促进虚拟化服务器105与存储系统170之间的通信。在某些实施方案中,并且参考图8的计算系统800,通信接口诸如图8中的通信接口845可用于提供虚拟化服务器105与网络180之间的连通性。应当注意,本文描述和/或示出的实施方案并非限于互联网或任何特定的基于网络的环境。例如,网络180可以是存储区域网络(SAN)。
在至少一个实施方案中,本文所公开的一个或多个实施方案中的全部或一部分可以被编码为计算机程序并且加载到虚拟化服务器105、虚拟机125、和虚拟机监控程序120或它们的任何组合上并加以执行。本文所公开的一个或多个实施方案中的全部或一部分还可以被编码为计算机程序,存储在虚拟化服务器105、虚拟机125、和/或虚拟机监控程序120上,并且分布在网络180上。
在一些示例中,图1、图2和图3中虚拟化服务器的全部或一部分可表示云计算或基于网络的环境的部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础结构即服务等)可通过网页浏览器或其他远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其他基于云的计算环境提供。
此外,本文所述的部件中的一个或多个部件可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,存储系统170、虚拟化服务器105、虚拟机125、和/或虚拟机监控程序120可转换存储系统和/或虚拟化服务器的行为,以便使得存储系统和/或虚拟化服务器在应用程序开发和测试环境中优化对生产数据的访问。
尽管已结合若干实施方案描述了本公开,但是本公开并非旨在限于本文阐述的具体形式。相反地,本公开旨在覆盖可被合理地包括在由所附权利要求书限定的本公开的范围内的此类替代物、修改和等同物。

Claims (20)

1.一种方法,包括:
响应于确定输入/输出(I/O)操作是写入操作,
对虚拟数据文件执行写入操作,其中
所述虚拟数据文件存储在虚拟磁盘中,
所述虚拟磁盘是虚拟存储单元的一部分,并且
所述虚拟数据文件是分配的存储空间的一部分;并且
响应于确定所述I/O操作是读取操作,
确定要在其处执行所述读取操作的所述虚拟存储单元上的存储位置,
确定在所述存储位置处是否执行了较早的写入操作,
响应于确定在所述存储位置处执行了所述较早的写入操作,对所述虚拟数据文件执行所述读取操作,并且
响应于确定所述较早的写入操作在所述存储位置处未执行,对所述分配的存储空间执行所述读取操作。
2.根据权利要求1所述的方法,还包括:
在存储系统处接收所述I/O操作,其中
所述存储系统包括
生产数据文件,以及
所述虚拟存储单元,其还包括
所述虚拟磁盘,以及
所述分配的存储空间;并且
确定所述I/O操作是所述读取操作还是所述写入操作,其中
所述I/O操作由在虚拟化服务器上执行的虚拟机生成,并且
所述存储系统通信地耦接到所述虚拟化服务器。
3.根据权利要求2所述的方法,还包括
在所述存储系统处从所述虚拟机接收分配图,其中
所述分配图包括关于所述分配的存储空间的信息,
所述分配的存储空间由所述虚拟机分配,并且
所述分配的存储空间对应于存储在所述存储系统上的所述生产数据文件;
将所述分配图中的信息转换为与所述生产数据文件相关联的一个或多个偏移,其中
从存储结构中检索所述一个或多个偏移;并且
将所述存储结构覆盖在所述第一分配图上方,其中
所述覆盖允许所述存储系统将来自所述虚拟机的导向至所述虚拟存储单元上的所述分配的存储空间的所述I/O操作重新映射到所述存储系统上的所述生产数据文件。
4.根据权利要求2所述的方法,还包括:
从所述虚拟化服务器接收创建所述虚拟存储单元的请求;并且
基于所述接收,
在所述存储系统中创建所述虚拟存储单元,其中
所述虚拟机使用所述虚拟存储单元来分配所述分配的存储空间,并且
所述虚拟存储单元上的所述虚拟磁盘被创建为稀疏文件。
5.根据权利要求2所述的方法,还包括:
将所述虚拟磁盘从所述存储系统导入到所述虚拟化服务器,其中所述导入由客户端执行,
所述客户端是网络文件系统(NFS)客户端,并且
将所述虚拟磁盘导入到在所述虚拟化服务器上执行的虚拟机监控程序;并且
将所述虚拟磁盘从所述虚拟机监控程序导出到所述虚拟机,其中所述导出由所述虚拟机监控程序执行。
6.根据权利要求2所述的方法,其中
所述生产数据文件包括所述虚拟机所需的用于应用程序开发和测试的生产数据,并且
所述生产数据是一个或多个实时生产数据集的一部分。
7.根据权利要求2所述的方法,其中
所述存储系统中的所述虚拟磁盘是稀疏文件,
所述虚拟机采用精简配置的虚拟磁盘,并且
所述精简配置的虚拟磁盘存储由所述虚拟机对所述生产数据文件做出的更改。
8.根据权利要求5所述的方法,其中
所述存储系统是生产环境的一部分,并且
所述虚拟机和所述客户端是应用程序开发和测试环境的一部分。
9.根据权利要求3所述的方法,其中
所述重新映射允许所述虚拟机通过将所述读取操作导向至所述分配的存储空间而不是所述生产数据文件来访问所述生产数据文件。
10.一种非暂态计算机可读存储介质,包括程序指令,所述程序指令可执行以:
响应于确定输入/输出(I/O)操作是写入操作,对虚拟数据文件执行所述写入操作,其中
所述虚拟数据文件存储在虚拟磁盘中,
所述虚拟磁盘是虚拟存储单元的一部分,并且
所述虚拟数据文件是分配的存储空间的一部分;并且
响应于确定所述I/O操作是读取操作,
确定要在其处执行所述读取操作的所述虚拟存储单元上的存储位置,
确定在所述存储位置处是否执行了较早的写入操作,
响应于确定在所述存储位置处执行了所述较早的写入操作,对所述虚拟数据文件执行所述读取操作,并且
响应于确定所述较早的写入操作在所述存储位置处未执行,对所述分配的存储空间执行所述读取操作。
11.根据权利要求10所述的非暂态计算机可读存储介质,还包括
在存储系统处接收所述I/O操作,其中
所述存储系统包括
生产数据文件,以及
所述虚拟存储单元,其还包括
所述虚拟磁盘,以及
所述分配的存储空间;并且
确定所述I/O操作是所述读取操作还是所述写入操作,其中
所述I/O操作由在虚拟化服务器上执行的虚拟机生成,并且
所述存储系统通信地耦接到所述虚拟化服务器。
12.根据权利要求11所述的非暂态计算机可读存储介质,还包括
在所述存储系统处从所述虚拟机接收分配图,其中
所述分配图包括关于所述分配的存储空间的信息,
所述分配的存储空间由所述虚拟机分配,并且
所述分配的存储空间对应于存储在所述存储系统上的所述生产数据文件;
将所述分配图中的信息转换为与所述生产数据文件相关联的一个或多个偏移,其中
从存储结构中检索所述一个或多个偏移;并且
将所述存储结构覆盖在所述第一分配图上方,其中
所述覆盖允许所述存储系统将来自所述虚拟机的导向至所述虚拟存储单元上的所述分配的存储空间的所述I/O操作重新映射到所述存储系统上的所述生产数据文件。
13.根据权利要求11所述的非暂态计算机可读存储介质,还包括
从所述虚拟化服务器接收创建所述虚拟存储单元的请求;
基于所述接收,
在所述存储系统中创建所述虚拟存储单元,其中
所述虚拟机使用所述虚拟存储单元来分配所述分配的存储空间,并且
所述虚拟存储单元上的所述虚拟磁盘被创建为稀疏文件;
将所述虚拟磁盘从所述存储系统导入到所述虚拟化服务器,其中所述导入由客户端执行,
所述客户端是网络文件系统(NFS)客户端,并且
将所述虚拟磁盘导入到在所述虚拟化服务器上执行的虚拟机监控程序:并且
将所述虚拟磁盘从所述虚拟机监控程序导出到所述虚拟机,其中所述导出由所述虚拟机监控程序执行。
14.根据权利要求12所述的非暂态计算机可读存储介质,其中
所述生产数据文件包括所述虚拟机所需的用于应用程序开发和测试的生产数据,
所述生产数据是一个或多个实时生产数据集的一部分。
所述存储系统中的所述虚拟磁盘是稀疏文件,
所述虚拟机采用精简配置的虚拟磁盘,
所述精简配置的虚拟磁盘存储由所述虚拟机对所述生产数据文件做出的更改,并且
所述重新映射允许所述虚拟机通过将所述读取操作导向至所述分配的存储空间而不是所述生产数据文件来访问所述生产数据文件。
15.一种系统,包括:
一个或多个处理器;以及
存储器,所述存储器耦接至所述一个或多个处理器,其中所述存储器存储程序指令,所述程序指令能够由所述一个或多个处理器执行以:
响应于确定输入/输出(I/O)操作是写入操作,
对虚拟数据文件执行所述写入操作,其中
所述虚拟数据文件存储在虚拟磁盘中,
所述虚拟磁盘是虚拟存储单元的一部分,并且
所述虚拟数据文件是分配的存储空间的一部分;并且
响应于确定所述I/O操作是读取操作,
确定要在其处执行所述读取操作的所述虚拟存储单元上的存储位置,
确定在所述存储位置处是否执行了较早的写入操作,
响应于确定在所述存储位置处执行了所述较早的写入操作,对所述虚拟数据文件执行所述读取操作,并且
响应于确定所述较早的写入操作在所述存储位置处未执行,对所述分配的存储空间执行所述读取操作。
16.根据权利要求15所述的系统,还包括
在存储系统处接收所述I/O操作,其中
所述存储系统包括
生产数据文件,以及
所述虚拟存储单元,其还包括
所述虚拟磁盘,以及
所述分配的存储空间;并且
确定所述I/O操作是所述读取操作还是所述写入操作,其中
所述I/O操作由在虚拟化服务器上执行的虚拟机生成,并且
所述存储系统通信地耦接到所述虚拟化服务器。
17.根据权利要求16所述的系统,还包括
在所述存储系统处从所述虚拟机接收分配图,其中
所述分配图包括关于所述分配的存储空间的信息,
所述分配的存储空间由所述虚拟机分配,并且
所述分配的存储空间对应于存储在所述存储系统上的所述生产数据文件;
将所述分配图中的信息转换为与所述生产数据文件相关联的一个或多个偏移,其中
从存储结构中检索所述一个或多个偏移;并且
将所述存储结构覆盖在所述第一分配图上方,其中
所述覆盖允许所述存储系统将来自所述虚拟机的导向至所述虚拟存储单元上的所述分配的存储空间的所述I/O操作重新映射到所述存储系统上的所述生产数据文件。
18.根据权利要求16所述的系统,还包括
从所述虚拟化服务器接收创建所述虚拟存储单元的请求;并且
基于所述接收,
在所述存储系统中创建所述虚拟存储单元,其中
所述虚拟机使用所述虚拟存储单元来分配所述分配的存储空间,并且
所述虚拟存储单元上的所述虚拟磁盘被创建为稀疏文件。
19.根据权利要求16所述的系统,还包括
将所述虚拟磁盘从所述存储系统导入到所述虚拟化服务器,其中所述导入由客户端执行,
所述客户端是网络文件系统(NFS)客户端,并且
将所述虚拟磁盘导入到在所述虚拟化服务器上执行的虚拟机监控程序;并且
将所述虚拟磁盘从所述虚拟机监控程序导出到所述虚拟机,其中所述导出由所述虚拟机监控程序执行。
20.根据权利要求17所述的系统,其中
所述重新映射允许所述虚拟机通过将所述读取操作导向至所述分配的存储空间而不是所述生产数据文件来访问所述生产数据文件。
CN201680060709.8A 2015-09-10 2016-09-08 为应用虚拟机提供对生产数据的访问的方法和系统 Active CN108604162B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/850072 2015-09-10
US14/850,072 US10558480B2 (en) 2015-09-10 2015-09-10 Optimizing access to production data
PCT/US2016/050755 WO2017044612A1 (en) 2015-09-10 2016-09-08 Optimizing access to production data

Publications (2)

Publication Number Publication Date
CN108604162A true CN108604162A (zh) 2018-09-28
CN108604162B CN108604162B (zh) 2021-07-09

Family

ID=57121489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680060709.8A Active CN108604162B (zh) 2015-09-10 2016-09-08 为应用虚拟机提供对生产数据的访问的方法和系统

Country Status (5)

Country Link
US (2) US10558480B2 (zh)
EP (1) EP3347808B1 (zh)
JP (1) JP6841818B2 (zh)
CN (1) CN108604162B (zh)
WO (1) WO2017044612A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767222A (zh) * 2020-06-28 2020-10-13 杭州数梦工场科技有限公司 数据模型的验证方法、装置、电子设备、存储介质
CN113031852A (zh) * 2019-12-25 2021-06-25 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474486B2 (en) * 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
US11449468B1 (en) * 2017-04-27 2022-09-20 EMC IP Holding Company LLC Enforcing minimum space guarantees in thinly-provisioned file systems
US10324807B1 (en) * 2017-10-03 2019-06-18 EMC IP Holding Company LLC Fast native file system creation for backup files on deduplication systems
CN108255708B (zh) * 2017-12-14 2021-05-07 海尔优家智能科技(北京)有限公司 测试环境中访问生产文件的方法、装置、存储介质及设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039892A1 (en) * 2002-08-23 2004-02-26 Goldschmidt Marc A. System and method of accessing vital product data
CN101495970A (zh) * 2005-06-24 2009-07-29 信科索尔特公司 用于高性能企业数据保护的系统和方法
US7747660B1 (en) * 2003-03-24 2010-06-29 Symantec Operating Corporation Method and system of providing access to a virtual storage device
CN102667711A (zh) * 2009-10-21 2012-09-12 戴尔菲克斯公司 虚拟数据库系统
US8290911B1 (en) * 2009-06-30 2012-10-16 Symantec Corporation System and method for implementing data deduplication-aware copying of data
US20140068182A1 (en) * 2012-09-04 2014-03-06 Drobo, Inc. Storage Virtualization In A Block-Level Storage System
CN103678036A (zh) * 2013-11-15 2014-03-26 上海爱数软件有限公司 一种基于虚拟机运行信息数据发现的备份方法
US20140222759A9 (en) * 2009-09-03 2014-08-07 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications

Family Cites Families (55)

* Cited by examiner, † Cited by third party
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
US8365167B2 (en) 2008-04-15 2013-01-29 International Business Machines Corporation Provisioning storage-optimized virtual machines within a virtual desktop environment
US9823992B2 (en) 2008-06-20 2017-11-21 Vmware, Inc. Decoupling dynamic program analysis from execution in virtual environments
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
WO2010097933A1 (ja) 2009-02-27 2010-09-02 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
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
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
US9767274B2 (en) 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9146765B2 (en) * 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
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
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
US9021087B1 (en) 2012-01-27 2015-04-28 Google Inc. Method to improve caching accuracy by using snapshot technology
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
US9141529B2 (en) 2012-08-14 2015-09-22 OCZ Storage Solutions Inc. Methods and apparatus for providing acceleration of virtual machines in virtual environments
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
US10133495B2 (en) 2014-11-04 2018-11-20 Rubrik, Inc. Converged search and archival system
WO2017004361A1 (en) 2015-06-30 2017-01-05 Symantec Corporation Data access accelerator
US10474486B2 (en) 2015-06-30 2019-11-12 Veritas Technologies Llc Data access accelerator
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039892A1 (en) * 2002-08-23 2004-02-26 Goldschmidt Marc A. System and method of accessing vital product data
US7747660B1 (en) * 2003-03-24 2010-06-29 Symantec Operating Corporation Method and system of providing access to a virtual storage device
CN101495970A (zh) * 2005-06-24 2009-07-29 信科索尔特公司 用于高性能企业数据保护的系统和方法
US8290911B1 (en) * 2009-06-30 2012-10-16 Symantec Corporation System and method for implementing data deduplication-aware copying of data
US20140222759A9 (en) * 2009-09-03 2014-08-07 Commvault Systems, Inc. Utilizing snapshots for access to databases and other applications
CN102667711A (zh) * 2009-10-21 2012-09-12 戴尔菲克斯公司 虚拟数据库系统
US20140068182A1 (en) * 2012-09-04 2014-03-06 Drobo, Inc. Storage Virtualization In A Block-Level Storage System
CN103678036A (zh) * 2013-11-15 2014-03-26 上海爱数软件有限公司 一种基于虚拟机运行信息数据发现的备份方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C. SONG: "Research on Model and Method for Product Data Distributed Storage in Internet/Intranet Environment", 《IEEE》 *
姜倩: "数据录入业务生产控制与质量控制研究", 《中国优秀硕士学位论文全文数据库 经济与管理科学辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113031852A (zh) * 2019-12-25 2021-06-25 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质
CN111767222A (zh) * 2020-06-28 2020-10-13 杭州数梦工场科技有限公司 数据模型的验证方法、装置、电子设备、存储介质

Also Published As

Publication number Publication date
EP3347808A1 (en) 2018-07-18
US11144339B2 (en) 2021-10-12
US10558480B2 (en) 2020-02-11
WO2017044612A1 (en) 2017-03-16
JP6841818B2 (ja) 2021-03-10
US20200133699A1 (en) 2020-04-30
WO2017044612A9 (en) 2018-05-31
EP3347808B1 (en) 2024-05-01
JP2018530817A (ja) 2018-10-18
CN108604162B (zh) 2021-07-09
US20170075708A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
CN108604162A (zh) 优化对生产数据的访问
US10884636B1 (en) Presenting workload performance in a storage system
US20210019063A1 (en) Utilizing data views to optimize secure data access in a storage system
US11616834B2 (en) Efficient replication of a dataset to the cloud
US9606747B2 (en) Importing pre-existing data of a prior storage solution into a storage pool for use with a new storage solution
JP5701320B2 (ja) 複製ターゲットがシンプロビジョニングストレージシステム上の未使用記憶空間を再利用できるようにするためのシステムおよび方法
US20200174671A1 (en) Bucket views
CN106354425A (zh) 基于数据属性的数据布局的方法和系统
US11829629B2 (en) Synchronously replicating data using virtual volumes
US20220075546A1 (en) Intelligent application placement in a hybrid infrastructure
CN106021031B (zh) 一种btrfs文件系统的删除数据恢复方法和装置
US20220335009A1 (en) Converting Storage Resources to Distributed Persistent Storage for Containerized Applications
US9792075B1 (en) Systems and methods for synthesizing virtual hard drives
US20210055885A1 (en) Enhanced data access using composite data views
CN105227672B (zh) 数据存储及访问的方法和系统
US11360844B1 (en) Recovery of a container storage provider
US20230080046A1 (en) Online Resize of a Volume of a Distributed Storage System
CN108369487A (zh) 用于在去重虚拟文件系统中拍摄快照的系统和方法
CN107924324A (zh) 数据访问加速器
US20160170869A9 (en) Systems and methods for in-place reorganization of device storage
CN109416617A (zh) 异构存储系统之间的复制
CN107710144A (zh) 跨越逻辑卷的数据存储装置复制数据
EP3264254B1 (en) System and method for a simulation of a block storage system on an object storage system
US10754750B1 (en) Method and system for collecting monitoring information and providing visual representation of same
US10587685B2 (en) Cross-platform replication of logical units

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