CN103020235A - 自治网络流传输 - Google Patents

自治网络流传输 Download PDF

Info

Publication number
CN103020235A
CN103020235A CN2012105459946A CN201210545994A CN103020235A CN 103020235 A CN103020235 A CN 103020235A CN 2012105459946 A CN2012105459946 A CN 2012105459946A CN 201210545994 A CN201210545994 A CN 201210545994A CN 103020235 A CN103020235 A CN 103020235A
Authority
CN
China
Prior art keywords
data
file
data file
network
filtrator
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
CN2012105459946A
Other languages
English (en)
Other versions
CN103020235B (zh
Inventor
P·A·摩根
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 Corp
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 Corp filed Critical Microsoft Corp
Publication of CN103020235A publication Critical patent/CN103020235A/zh
Application granted granted Critical
Publication of CN103020235B publication Critical patent/CN103020235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及自治网络流传输。各实施例涉及动态递送虚拟软件应用以及在本地和网络数据存储之间分配应用数据。在一种场景中,计算机系统建立数据输入/输出(I/O)过滤器,所述数据输入/输出(I/O)过滤器被配置成截取从虚拟软件应用发送给操作系统的文件系统的数据文件请求。数据I/O过滤器截取被配置成从文件系统检索指定数据文件的数据文件读取请求。数据I/O过滤器将被截取的读取请求转发给网络可访问的数据存储,网络可访问的数据存储被配置成返回特定的数据文件。随后,在从网络数据存储接收到指定数据文件之后,I/O过滤器将指定数据文件发送给虚拟软件应用。以此方式,指定数据文件可由虚拟应用使用。

Description

自治网络流传输
技术领域
本发明涉及自治网络流传输。
背景技术
计算机已变得高度集成于工作、家庭、移动设备以及许多其他地方中。计算机可快速且有效地处理大量信息。被设计成在计算机系统上运行的软件应用允许用户执行包括商业应用、学校作业、娱乐等等在内的各种各样的功能。软件应用通常被设计成执行特定的任务,诸如用于草拟文档的文字处理器应用或者用于发送、接收和组织电子邮件的电子邮件程序。
在每一种情况中,软件应用与主存计算机系统的不同硬件组件交互并使用这些组件。例如,软件应用可与诸如硬盘、DVD驱动器或闪存驱动器之类的本地数据存储交互。通常,应用作出输入/输出(I/O)请求,所述请求从应用被发送到操作系统的文件系统。文件系统访问来自盘的必要数据,并将其返回至应用。在使用虚拟应用的情况下,代替单独地从本地硬盘检索数据,可以改为向远程数据存储(通常为网络文件服务器)请求数据的至少一部分。随后数据在计算机系统处被接收并被存储在其本地硬盘上。计算机的文件系统随后将数据发送给应用,就像它通常对于本地存储的数据所操作的那样。
发明内容
此处描述的各实施例涉及动态地递送虚拟软件应用以及在本地和网络数据存储之间分配应用数据。在一个实施例中,计算机系统建立数据输入/输出(I/O)过滤器,所述过滤器被配置成截取正从虚拟软件应用发送到操作系统的文件系统的数据文件请求。数据I/O过滤器截取被配置成从文件系统检索指定数据文件的数据文件读取请求。数据I/O过滤器将截取到的读取请求转发到被配置成返回特定数据文件的网络可访问的数据存储。随后,在从网络数据存储接收到指定数据之后,I/O过滤器将指定数据文件发送给虚拟软件应用。以此方式,指定数据文件可由虚拟应用使用。
在另一实施例中,计算机系统在本地和网络数据存储之间分配应用数据。计算机系统从管理员用户接收对于虚拟应用的哪些指定部分要被存储在本地数据存储中以及哪些部分要被存储在网络数据存储中的指示。计算机系统生成描述虚拟应用的哪些指定部分被存储在本地数据存储上的元数据的不同部分。计算机系统随后从虚拟应用接收请求指定数据文件的数据的数据文件请求,并且基于所生成的元数据来判断指定数据文件是存储在本地数据存储上还是存储在远程数据存储上。随后,基于所述判断,计算机系统或将数据文件请求发送到本地数据存储或发送到远程数据存储。
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附加的特征和优点将在以下的描述中被阐述,并且部分地可通过该描述而对本领域技术人员显而易见,或者可通过对本文中的教示的实践来习得。本发明的实施例的特征和优点可以通过在所附权利要求中特别指出的手段和组合来被实现并获得。本发明的实施例的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而习得。
附图说明
为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明的实施例将通过使用附图用附加特征和细节来描述和解释,附图中:
图1示出其中可操作本发明的各实施例的包括动态地递送虚拟软件应用的计算机体系结构。
图2示出一种用于动态地递送虚拟软件应用的示例方法的流程图。
图3示出一种用于在本地和网络数据存储之间分配应用数据的示例方法的流程图。
图4示出其中数据在本地和网络数据存储之间分配的本发明的一个实施例。
具体实施方式
此处描述的各实施例涉及动态地递送虚拟软件应用以及在本地和网络数据存储之间分配应用数据。在一个实施例中,计算机系统建立数据输入/输出(I/O)过滤器,所述过滤器被配置成截取正从虚拟软件应用发送到操作系统的文件系统的数据文件请求。数据I/O过滤器截取被配置成从文件系统检索指定数据文件的数据文件读取请求。数据I/O过滤器将截取到的读取请求转发到被配置成返回特定数据文件的网络可访问的数据存储。随后,在从网络数据存储接收到指定数据之后,I/O过滤器将指定数据文件发送给虚拟软件应用。以此方式,指定数据文件可由虚拟应用使用。
在另一实施例中,计算机系统在本地和网络数据存储之间分配应用数据。计算机系统从管理员用户接收对于虚拟应用的哪些指定部分要被存储在本地数据存储中以及哪些部分要被存储在网络数据存储中的指示。计算机系统生成描述虚拟应用的哪些指定部分被存储在本地数据存储上的元数据的不同部分。计算机系统随后从虚拟应用接收请求指定数据文件的数据的数据文件请求,并且基于所生成的元数据来判断指定数据文件是存储在本地数据存储上还是存储在远程数据存储上。随后,基于所述判断,计算机系统或将数据文件请求发送到本地数据存储或发送到远程数据存储。
以下讨论现涉及可以执行的多种方法以及方法动作。应当注意,虽然这些方法动作可能是按一定次序讨论的,或者是在流程图中被描绘为是按照特定顺序进行的,然而并非必然需要特定的次序,除非特别声明,或者是在一个动作被执行之前因为该动作依赖于另一动作的完成而需要的情况。
本发明的各个实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器以及系统存储器的计算机硬件,如在下文中更详细讨论的。本发明范围内的各个实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理以及其他计算机可读介质。这种计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。以数据形式存储有计算机可执行指令的计算机可读介质是计算机存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各个实施例可包括至少两种明显不同的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质包括RAM、ROM、EEPROM、CD-ROM、基于RAM、闪存、相变存储器(PCM)、或其它类型的存储器的固态驱动器(SSD)、或者其他光盘存储、磁盘存储或其他磁存储设备、或可用于以计算机可执行指令、数据或数据结构形式存储所期望的程序代码装置且可被通用或专用计算机访问的任何其他介质。
“网络”被定义成允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路和/或数据交换机。当信息通过网络(硬连线、无线、或者硬连线或无线的组合)被传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括如下的网络:所述网络可以用于运送数据或计算机可执行指令形式或数据结构形式的所期望的程序代码装置,并且可以被通用或专用计算机访问。上述的组合也应当包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路上接收到的计算机可执行指令或数据结构可被缓冲在网络接口模块(例如,网络接口卡或“NIC”)内的RAM中,然后最终被传输给计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。
计算机可执行(或计算机可解释)指令例如包括致使通用计算机、专用计算机、或专用处理设备执行某个功能或某组功能的指令。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或者甚至源代码。虽然用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不必限于以上所述的特征或动作。相反,所述的特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明还可在分布式系统环境中实践,在该环境中本地和远程计算机系统通过网络(经由硬连线数据链路、无线数据链路、或者经由硬连线和无线数据链路的组合)链接起来,每个计算机系统都执行任务(例如,云计算、云服务等)。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备两者中。
图1示出了可在其中采用本发明的原理的计算机体系结构100。计算机体系结构100包括至少以用户模式140和内核模式141运行的计算机系统。计算机系统可以是任何类型的本地或分布式计算机系统,包括云计算系统。每一种运行模式包括被配置成执行特定类型的操作的不同模块。这些运行模式和计算机系统模块可用于以无缝且高效的方式来部署虚拟应用。
如此处所称的,虚拟软件应用是看上去运行在本地但实际上运行在网络应用服务器上的应用。网络应用服务器通过网络向用户提供应用的数据。在此处的各实施例中,用户可通过打开他或她通常将通过点击应用图标(或要由虚拟应用打开的文件数据)来打开的应用来开始该进程。在从用户接收到发起信号之后,操作系统通过将可执行文件读入存储器来初始化用于应用的可执行文件的进程地址空间。应该注意,术语“数据文件”如此处所使用的可以指代包括设置文件的数据文件(通常不是可执行代码的一部分)和/或包含应用的可执行二进制文件的映像。因为设置文件和可执行文件两者在此处都是被预期且支持的,所以术语数据文件在此处将用于描述这两种文件。
操作系统随后将指令指针设置为指向应用的入口点,并且运行进程。操作系统内的虚拟化层本身在这一启动阶段期间进行检测和初始化。虚拟应用随后在用户的计算机系统上运行。
在某些情况下,虚拟应用数据文件在需要它们的时候进行动态流传输。当虚拟应用被发布在目标计算机系统上时,只创建稀疏数据文件。稀疏数据文件“看上去”像普通数据文件,但只存在该文件的占位符。占位符包括文件名和大小。与稀疏文件相对应的数据文件的内容尚未被流传输。一旦请求了文件的实际数据,则执行流传输。在此时,该文件的数据从网络可访问的数据存储130进行流传输。通常,不需要数据文件的实际数据直到操作系统将可执行文件读入存储器。在其他实现中,文件数据将被流传输和复制,并且操作系统的读取请求将由已经被流传输和复制到计算机系统的本地硬盘驱动器(或其他数据存储)的数据来满足。
然而,此处描述的各实施例不将文件内容复制到本地硬盘驱动器。被流传输的内容在它能够被存储在盘上之前被数据输入/输出(I/O)过滤器截取。数据I/O过滤器将经流传输的数据传递给应用以满足读取请求。应用随后使用经流传输的数据来操作,就像它通常所做的那样,而必不将任何经流传输的数据写入盘。实际上,虚拟应用甚至不知道(或不需要知道)它的读取请求不是由本地硬盘驱动器满足的而是由动态流传输的数据满足的。不需要对虚拟应用或计算机系统的文件系统作出任何变更。相反,数据I/O过滤器在中间无缝地操作以提供动态流传输的虚拟应用。这一相同的虚拟软件应用(存储在网络数据存储上)可被提供给几乎任意数量的其他计算机系统和/或虚拟机。此外,当同一应用跨多个不同的计算机系统被使用时,盘空间将不会被复制,因为服务器上的应用的单个副本可被流传输到不同的计算机系统中的每一个。下面,分别针对图2和图3的方法200和300,进一步解释这些概念。
考虑到以上描述的系统和体系结构,参考图2和图3的流程图将更好地理解根据所公开的主题实现的方法。为了解释简明起见,这些方法被示出和描述为一系列框。然而,应该理解和了解,所要求保护的主题不受框的次序的限制,因为一些框可按不同的次序进行和/或与此处所描绘和描述的其他框同时进行。此外,并非全部所示的框都是实现下面所述的方法所必需的。
图2示出一种用于动态递送虚拟软件应用的方法200的流程图。现在将频繁参考环境100的组件和数据来描述方法200。
方法200包括建立数据输入/输出(I/O)过滤器的动作,所述数据输入/输出(I/O)过滤器被配置成截取从虚拟软件应用发送给操作系统的文件系统的数据文件请求(动作210)。例如,数据I/O过滤器120可在客户机计算机系统的操作系统内核模式141中建立。数据I/O过滤器可截取发送自虚拟应用110的读取请求111。数据请求是普通应用读取请求,通常从虚拟应用发送到文件系统125。在这种情况下,数据I/O过滤器截取原本将被发送到文件系统(随后被发送到盘126)的读取请求。I/O数据过滤器在不对软件应用如何请求数据文件作出变更的情况下实现。由此,传统的软件堆栈保持不修改。在某些情况下,I/O过滤器可以是作为操作系统进程的一部分来运行的驱动器。
方法200随后包括数据I/O过滤器截取数据文件读取请求的动作(动作220),所述数据文件读取请求被配置成从文件系统检索指定数据文件。例如,数据I/O过滤器120可在读取请求111被发送给文件系统125之前截取读取请求111。读取请求是对虚拟应用110正试图访问的数据文件的请求。数据文件代替被存储在本地盘上改为被存储在网络可访问的数据存储130中。对于所请求的每一个文件,在盘126上动态创建稀疏文件127。如上文所说明的,稀疏文件是仅包括文件名和大小但不包括实际文件数据的占位符文件。占位符满足用于确定文件是否存在的虚拟应用初始请求。当虚拟应用满足于文件存在(在它读取了稀疏文件之后)时,应用在读取请求111中请求文件的实际数据。
截取读取请求的这一过程可对应用的每一个文件发生。由此,当每一个文件都需要时,每一个文件可被动态流传输到虚拟应用。文件可单个或多个流传输。在某些情况下,可并行地请求和流传输多个数据文件。当读取请求在数据I/O过滤器处被接收时,该请求被转换成由I/O过滤器截取的内核模式I/O请求。数据I/O过滤器随后将被截取的读取请求转发给网络可访问的数据存储130,网络可访问的数据存储130被配置成返回特定的数据文件131(动作230)。在某些情况下,被截取的请求可被转发给用户模式服务115,用户模式服务115位于网络可访问的数据存储和数据I/O过滤器之间。用户模式服务可在用户计算机系统上运行或者在另一网络链接的计算机系统上运行。系统从数据I/O过滤器接收数据请求111并将请求转发到网络数据存储上。服务还可用于从网络存储接收所请求的数据并将其传递到数据I/O过滤器上。在某些情况下,网络数据存储可包括云(或因特网),并且由此,指定数据文件可使用超文本传输协议(HTTP)从云/因特网检索。
随后,在从网络可访问的数据存储接收到指定数据文件之后,I/O过滤器将指定数据文件发送给虚拟软件应用,以使得指定数据文件可由虚拟应用响应于其读取请求来使用(动作240)。因此,数据请求111可在被发送给盘之前被截取,并且被转发给从本地或远程数据存储130抓取数据的服务。服务将被抓取的数据131转发回I/O过滤器,并且I/O过滤器将数据转发给虚拟应用110。由此,应用文件可被动态流传输到用户的计算机系统(具体地被流传输到虚拟应用)而不必被存储在本地计算机系统的文件系统上。动态地从网络数据存储检索的每一个数据文件对于虚拟软件应用而言看上去就像是该数据文件是从计算机系统的文件系统接收的一样。
另外地或另选地,本地计算机系统上的应用服务或I/O过滤器可提供转换或以其他方式修改接收到的数据以确保该数据可由本地计算机系统读取的服务。因为应用数据可用任何格式、任何加密类型和任何压缩类型被存储在网络数据存储上,所以应用服务或I/O过滤器可被配置成解压缩、解密和/或重新格式化接收到的数据以将数据改变为可读形式。这一服务也可按需执行其他操作。以此方式,系统可在不对应用的本机堆栈作出任何变更的情况下实现。
图3示出了一种用于在本地和网络数据存储之间分配应用数据的方法300的流程图。现在将频繁参照图4的环境400的组件和数据来描述方法300。
方法300包括从管理员用户接收对于虚拟应用的哪些指定部分要被存储在本地数据存储中以及哪些部分要被存储在网络数据存储中的指示的动作(动作310)。例如,数据I/O过滤器420可从管理员用户425接收对于虚拟应用410的哪些指定部分要被存储在本地数据存储426中以及哪些部分要被存储在网络可访问的数据存储430中的指示423。因此,在至少某些情况下,可能需要计算机管理员指定某些文件被本地地存储在用户的本地计算机系统上而某些数据文件被存储在远程数据存储上。管理员可指定哪些文件被存储在哪里,并且当用户正在使用虚拟应用410的同时可更新这一判断。由此,存储在本地数据存储426上的文件431可被移除,如果管理员这么指定的话。相反,数据文件可从网络可访问的数据存储被移动到本地数据存储,如果管理员这么指定的话。应该注意,当提及数据文件被本地存储时,文件被作为只包含文件名和大小信息的空稀疏文件而被本地地存储并且存在于盘上稀疏。
管理员还可更新网络数据存储430上的应用分组。随后,下一次经更新的文件被虚拟应用请求时,经更新的文件就代替旧的版本被提供。由此,虚拟应用可通过切换到新的应用分组来更新。这些经更新的文件可被提供给稍后访问这些文件的所有用户。新的文件在本地文件系统上被创建以代替需要更新的任何本地文件。
方法300还包括生成元数据的一个或多个部分的动作(动作320),所述元数据描述了虚拟应用的哪些指定部分被存储在本地数据存储上。本地计算机系统可生成元数据421,所述元数据421由数据I/O过滤器用来确定要将接收自虚拟应用410的数据请求411转发到哪里。对于每一个文件,元数据指示数据文件被(或本地地426或远程地430)存储在哪里。因此,当数据I/O过滤器从虚拟应用接收到数据请求时,代替自动将请求转发到用户模式服务115(或直接转发给网络数据存储),数据I/O过滤器改为访问元数据421以确定数据是被本地存储还是被存储在远程存储上。如果数据被本地存储,则数据请求被发送到本地文件系统。如果数据被远程存储,则数据请求被发送到网络数据存储。因此,如上所说明的,管理员425可指示每一个文件要被存储在哪里,并且当管理员作出选择时将管理员的选择通知给数据I/O过滤器(经由指示423)。因此,当管理员分配数据文件时,元数据可被持续更新,并且数据I/O过滤器可基于经更新的元数据来正确地转发数据请求。
因此,如上所述,数据文件请求411可从提出对指定数据文件的数据的请求的虚拟应用接收(动作330)。数据I/O过滤器420随后可基于所生成的元数据421来确定指定数据文件是被存储在本地数据存储426上还是被存储在远程数据存储430上(动作340)。基于这一确定,数据I/O过滤器将数据文件请求或发送给本地数据存储或发送给远程数据存储(动作350)。数据文件请求可单个或多个接收,并且可单个或多个被转发到合适的数据存储。类似地,数据431可作为单个文件或作为文件组被接收。在某些情况下,不同的数据请求可同时被发送给本地数据存储和远程数据存储两者。当数据请求由各自数据存储满足时,数据可被发送回数据I/O过滤器,并且随后作为单个文件或文件组被发送到虚拟应用上。在某些情况下,数据可从本地数据存储和远程网络可访问的数据存储中的任一个或两者来流传输。当接收来自远程数据存储的数据时,数据被传递给该虚拟应用而无需在本地数据存储上存储任何数据。
由此,提供了动态递送虚拟软件应用的方法、系统和计算机程序产品。当用户使用虚拟应用时,数据文件按照虚拟应用的需要被动态且自动地从网络数据存储进行流传输。此外,提供了允许在本地和网络可访问的数据存储之间的动态数据分配的方法、系统和计算机程序产品。
本发明可体现为其他具体形式而不背离其精神或本质特征。所述实施例在所有方面都应被认为只是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非以上描述指示。落入权利要求书的等效方案的含义和范围内的所有改变都涵盖在权利要求书的范围内。

Claims (15)

1.一种在包括多个计算系统的计算机联网环境中、在包括至少一个处理器和存储器的计算机系统处的、用于动态递送虚拟软件应用的计算机实现的方法,所述方法包括:
建立数据输入/输出(I/O)过滤器的动作,所述数据输入/输出(I/O)过滤器被配置成截取从虚拟软件应用发送给操作系统的文件系统的数据文件请求;
数据I/O过滤器截取被配置成从所述文件系统检索指定数据文件的数据文件读取请求的动作;
数据I/O过滤器将被截取的读取请求转发给网络可访问的数据存储的动作,所述网络可访问的数据存储被配置成返回特定的数据文件;以及
在从网络数据存储接收到所述指定数据文件之后,I/O过滤器将所述指定数据文件发送给所述虚拟软件应用,以使得所述指定数据文件可由所述虚拟应用响应于其读取请求来使用的动作。
2.如权利要求1所述的方法,其特征在于,多个数据文件被截取并流传输以动态提供虚拟软件应用所需的每一个文件。
3.如权利要求1所述的方法,其特征在于,从所述网络数据存储接收到的所述数据文件不被存储在计算机系统的文件系统上。
4.如权利要求1所述的方法,其特征在于,动态地从所述网络数据存储检索的每一个数据文件对于所述虚拟软件应用而言看上去就像是所述数据文件是从所述计算机系统的文件系统接收的一样。
5.如权利要求1所述的方法,其特征在于,所述I/O数据过滤器在不对所述软件应用如何请求数据文件作出变更的情况下实现。
6.如权利要求1所述的方法,其特征在于,所请求的数据文件从所述网络数据存储被流传输到所述计算机系统。
7.如权利要求1所述的方法,其特征在于,被截取的请求被发送给用户模式服务,所述用户模式服务被配置成将所述请求转发给所述网络数据存储并且从所述网络存储接收所请求的数据。
8.如权利要求7所述的方法,其特征在于,所述用户模式服务将接收到的数据转发给I/O过滤器,所述I/O过滤器将所述数据转发给所述虚拟应用。
9.如权利要求1所述的方法,其特征在于,所述网络数据存储包括云,并且其中所述指定数据文件使用超文本传输协议从所述云检索。
10.一种在包括多个计算系统的计算机联网环境中、在包括至少一个处理器和存储器的客户机计算机系统处、用于在本地和网络数据存储之间分配应用数据的计算机实现的方法,所述方法包括:
从管理员用户接收对于虚拟应用的哪些指定部分要被存储在本地数据存储中以及哪些部分要被存储在网络数据存储中的指示的动作;
生成元数据的一个或多个部分的动作,所述元数据描述了所述虚拟应用的哪些指定部分要被存储在所述本地数据存储上;
从对指定数据文件的数据提出请求的虚拟应用接收数据文件请求的动作;
基于所生成的元数据来确定所述指定数据文件被存储在所述本地数据存储上还是被存储在所述远程数据存储上的动作;以及
基于所述确定,将所述数据文件请求发送给所述本地数据存储和所述远程数据存储中的至少一个。
11.如权利要求10所述的方法,其特征在于,所述管理员用户通过替换所述应用分组来更新所述网络数据存储上的应用。
12.如权利要求11所述的方法,其特征在于,所述本地计算机系统上的本地服务被配置成执行以下各项中的至少一项来确保所述数据能够由所述本地计算机系统读取:解密所述数据文件、重新格式化所述数据文件、以及解压缩所述数据文件。
13.一种计算机系统,包括:
一个或多个处理器;
系统存储器;
其上存储有计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在由所述一个或多个处理器执行时致使所述计算系统执行一种用于动态递送虚拟软件应用的方法,所述方法包括:
建立数据输入/输出(I/O)过滤器的动作,所述数据输入/输出(I/O)过滤器被配置成截取从虚拟软件应用(110)发送给文件系统的数据文件请求(111);
数据I/O过滤器截取被配置成从所述文件系统检索指定数据文件的数据文件读取请求的动作;
在所述文件系统上创建所请求的数据文件的稀疏文件的动作,所述稀疏文件包括含有所述文件名和大小的所请求的数据文件的占位符信息;
向所述虚拟软件应用指示所述文件存在的动作,所述指示包括所请求的数据文件的文件名和大小;
从所述虚拟软件应用接收对所请求的数据文件的实际数据内容的请求的动作;
将被截取的数据读取请求转发给用户模式服务的动作,所述用户模式服务将所述数据请求转发给被配置成返回具体的数据文件的网络可访问的数据存储;以及
在所述用户模式服务处从所述网络数据存储接收到所述指定数据文件之后,用户模式服务将所述数据文件内容转发给所述I/O过滤器的动作,所述I/O过滤器将所述数据文件内容发送给所述虚拟软件应用,以使得所述指定数据文件可由所述虚拟应用响应于其读取请求来使用。
14.如权利要求13所述的计算机系统,其特征在于,所请求的数据文件被流传输到虚拟软件应用而不必将任何数据文件内容保存在所述文件系统上。
15.如权利要求14所述的计算机系统,其特征在于,当用户使用虚拟软件应用时,数据文件按照所述虚拟应用的需要被动态且自动地从网络数据存储进行流传输。
CN201210545994.6A 2011-12-15 2012-12-14 自治网络流传输 Active CN103020235B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/327,695 US8938550B2 (en) 2011-12-15 2011-12-15 Autonomous network streaming
US13/327,695 2011-12-15

Publications (2)

Publication Number Publication Date
CN103020235A true CN103020235A (zh) 2013-04-03
CN103020235B CN103020235B (zh) 2017-04-12

Family

ID=47968839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210545994.6A Active CN103020235B (zh) 2011-12-15 2012-12-14 自治网络流传输

Country Status (12)

Country Link
US (2) US8938550B2 (zh)
EP (1) EP2791787B1 (zh)
JP (1) JP6188713B2 (zh)
KR (1) KR101991537B1 (zh)
CN (1) CN103020235B (zh)
AU (1) AU2012352719B2 (zh)
BR (1) BR112014014336B1 (zh)
CA (1) CA2858081A1 (zh)
ES (1) ES2623299T3 (zh)
MX (1) MX347985B (zh)
RU (1) RU2612579C2 (zh)
WO (1) WO2013090101A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105359105A (zh) * 2013-05-29 2016-02-24 微软技术许可有限责任公司 通过网络文件访问协议的高效编程存储器访问
CN105474200A (zh) * 2013-04-30 2016-04-06 微软技术许可有限责任公司 具有占位符的水合和脱水
US10264039B2 (en) 2013-05-01 2019-04-16 Microsoft Technology Licensing, Llc Streaming content and placeholders
US10503419B2 (en) 2013-05-29 2019-12-10 Microsoft Technology Licensing, Llc Controlling storage access by clustered nodes

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US20130159382A1 (en) * 2011-12-15 2013-06-20 Microsoft Corporation Generically presenting virtualized data
US20160085765A1 (en) * 2014-09-22 2016-03-24 Amazon Technologies, Inc. Computing environment selection techniques
JP6619708B2 (ja) * 2016-08-08 2019-12-11 日本電信電話株式会社 データ分離評価装置、データ分離評価方法およびデータ分離評価プログラム
US20180059990A1 (en) * 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
US11507534B2 (en) 2017-05-11 2022-11-22 Microsoft Technology Licensing, Llc Metadata storage for placeholders in a storage virtualization system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039889A1 (en) * 2002-08-20 2004-02-26 Kevin Elder Flexible remote data transfer and data synchronization
CN101799826A (zh) * 2010-03-04 2010-08-11 中国电子科技集团公司第二十八研究所 一种基于虚拟视图的网络化数据共享系统及方法
US20110029968A1 (en) * 2009-08-03 2011-02-03 James Sanders Streaming An Application Install Package Into A Virtual Environment
CN102014158A (zh) * 2010-11-29 2011-04-13 北京兴宇中科科技开发股份有限公司 一种云存储服务客户端高效细粒度数据缓存系统与方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US5953729A (en) * 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
AU2001243502A1 (en) * 2000-03-09 2001-09-17 Exent Technologies, Inc. Registry emulation
US7693992B2 (en) 2000-06-14 2010-04-06 Disney Enterprises, Inc. Technique for providing access to data
WO2002001350A1 (en) * 2000-06-26 2002-01-03 Streamix Ltd. A system and method for enabling rapid launching and execution of streamed applications-on-demand
WO2002035359A2 (en) * 2000-10-26 2002-05-02 Prismedia Networks, Inc. Method and system for managing distributed content and related metadata
US8831995B2 (en) * 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US7451196B1 (en) * 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US6999913B2 (en) * 2002-12-10 2006-02-14 John Alan Hensley Emulated read-write disk drive using a protected medium
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
RU2007111490A (ru) * 2004-09-30 2008-11-10 Ситрикс Системз, Инк. (US) Способ и устройство для виртуализации оконной информации
US8024523B2 (en) * 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
US20060235871A1 (en) * 2005-04-18 2006-10-19 James Trainor Method and system for managing metadata information
KR100715674B1 (ko) 2005-09-15 2007-05-09 한국전자통신연구원 부하 분산 방법 및 장치, 그리고 이를 이용한 소프트웨어스트리밍 시스템
US8903916B2 (en) 2006-07-05 2014-12-02 International Business Machines Corporation Method, system, and computer-readable medium to render repeatable data objects streamed over a network
US7788394B2 (en) 2006-08-31 2010-08-31 General Instrument Corporation Streaming content over an internet protocol network
US8756293B2 (en) * 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US8892738B2 (en) * 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
US20090164994A1 (en) * 2007-12-20 2009-06-25 Virtual Computer, Inc. Virtual computing management systems and methods
US7987335B1 (en) 2008-03-28 2011-07-26 Symantec Corporation Techniques for virtualizing data
US8078649B2 (en) * 2008-04-07 2011-12-13 Installfree, Inc. Method and system for centrally deploying and managing virtual software applications
US8005851B2 (en) * 2008-05-21 2011-08-23 Microsoft Corporation Streaming virtual disk for virtual applications
KR20100071688A (ko) 2008-12-19 2010-06-29 한국전자통신연구원 스케일러블 비디오 코딩 기반의 포괄적 비디오 접근을 위한스트리밍 서비스 장치 및 방법
US8533151B2 (en) * 2009-05-26 2013-09-10 Microsoft Corporation Generating a local copy of a virtualized application package from a local installation
US8341620B2 (en) * 2009-06-25 2012-12-25 Microsoft Corporation Streaming optimized virtual application images
US8060560B2 (en) * 2009-08-27 2011-11-15 Net Power And Light, Inc. System and method for pervasive computing
US8886762B2 (en) * 2009-09-17 2014-11-11 Adobe Systems Incorporated Stream duration management
US20110106937A1 (en) 2009-10-29 2011-05-05 Fluke Corporation Mixed-mode analysis
US8643856B2 (en) 2010-02-02 2014-02-04 Ricoh Company, Ltd. Methods and systems for network printing with user selectable settings
KR20130028903A (ko) 2010-03-09 2013-03-20 해피 클라우드 인코포레이티드 대화형 결정 지향적 소프트웨어 애플리케이션을 위한 데이터 스트리밍
US8489708B2 (en) * 2010-04-06 2013-07-16 Microsoft Corporation Virtual application extension points
US8560825B2 (en) * 2010-06-30 2013-10-15 International Business Machines Corporation Streaming virtual machine boot services over a network
US8495625B1 (en) * 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
US8490088B2 (en) * 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
US20120158819A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Policy-based application delivery
US9358460B2 (en) * 2011-04-28 2016-06-07 Numecent Holdings, Inc. Adaptive cloud-based application streaming
US8676938B2 (en) * 2011-06-28 2014-03-18 Numecent Holdings, Inc. Local streaming proxy server

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039889A1 (en) * 2002-08-20 2004-02-26 Kevin Elder Flexible remote data transfer and data synchronization
US20110029968A1 (en) * 2009-08-03 2011-02-03 James Sanders Streaming An Application Install Package Into A Virtual Environment
CN101799826A (zh) * 2010-03-04 2010-08-11 中国电子科技集团公司第二十八研究所 一种基于虚拟视图的网络化数据共享系统及方法
CN102014158A (zh) * 2010-11-29 2011-04-13 北京兴宇中科科技开发股份有限公司 一种云存储服务客户端高效细粒度数据缓存系统与方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105474200A (zh) * 2013-04-30 2016-04-06 微软技术许可有限责任公司 具有占位符的水合和脱水
CN105474200B (zh) * 2013-04-30 2019-01-22 微软技术许可有限责任公司 具有占位符的水合和脱水
US10264039B2 (en) 2013-05-01 2019-04-16 Microsoft Technology Licensing, Llc Streaming content and placeholders
CN105359105A (zh) * 2013-05-29 2016-02-24 微软技术许可有限责任公司 通过网络文件访问协议的高效编程存储器访问
CN105359105B (zh) * 2013-05-29 2018-12-18 微软技术许可有限责任公司 通过网络文件访问协议的高效编程存储器访问
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US10503419B2 (en) 2013-05-29 2019-12-10 Microsoft Technology Licensing, Llc Controlling storage access by clustered nodes

Also Published As

Publication number Publication date
ES2623299T3 (es) 2017-07-10
BR112014014336B1 (pt) 2021-08-17
KR101991537B1 (ko) 2019-09-30
RU2612579C2 (ru) 2017-03-09
JP2015507787A (ja) 2015-03-12
RU2014123714A (ru) 2015-12-20
KR20140101370A (ko) 2014-08-19
BR112014014336A2 (pt) 2017-06-13
US20130159381A1 (en) 2013-06-20
US8938550B2 (en) 2015-01-20
EP2791787A4 (en) 2015-11-04
MX2014007166A (es) 2014-08-21
EP2791787A1 (en) 2014-10-22
AU2012352719B2 (en) 2017-09-28
AU2012352719A1 (en) 2014-07-03
CN103020235B (zh) 2017-04-12
CA2858081A1 (en) 2013-06-20
JP6188713B2 (ja) 2017-08-30
MX347985B (es) 2017-05-22
WO2013090101A1 (en) 2013-06-20
US20150106440A1 (en) 2015-04-16
EP2791787B1 (en) 2017-02-01

Similar Documents

Publication Publication Date Title
CN103020235A (zh) 自治网络流传输
US9983825B2 (en) Efficient data volume replication for block-based storage
US10489422B2 (en) Reducing data volume durability state for block-based storage
US10515058B2 (en) Unified file and object data storage
US8495625B1 (en) Method and system for creation of streamed files on-demand
JP6285870B2 (ja) オン・デマンドのステージングを用いる高速アプリケーション・ストリーミング
CN105474206A (zh) 支持按需数据传输的虚拟同步
JP2009508235A (ja) 移動装置のためのデータ配布方法
US20200050583A1 (en) Storing and retrieving restricted datasets to and from a cloud network with non-restricted datasets
CN102938784A (zh) 应用于分布式存储系统中的数据存储方法和系统
CN103020257A (zh) 数据操作的实现方法和装置
US8903874B2 (en) File system directory attribute correction
US9053109B1 (en) Systems and methods for efficient data storage for content management systems
US11151093B2 (en) Distributed system control for on-demand data access in complex, heterogenous data storage
US11520664B2 (en) Metadata based data replication
US10671491B2 (en) Asset browsing and restoration over a network using pre-staging and directory storage
CN117155920A (zh) 文件压缩处理方法、装置、设备、介质及程序产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150803

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150803

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant