CN101636722A - 可移动的虚拟机映像 - Google Patents

可移动的虚拟机映像 Download PDF

Info

Publication number
CN101636722A
CN101636722A CN200880008835A CN200880008835A CN101636722A CN 101636722 A CN101636722 A CN 101636722A CN 200880008835 A CN200880008835 A CN 200880008835A CN 200880008835 A CN200880008835 A CN 200880008835A CN 101636722 A CN101636722 A CN 101636722A
Authority
CN
China
Prior art keywords
virtual
virtual machine
machine image
mapping
image
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
CN200880008835A
Other languages
English (en)
Other versions
CN101636722B (zh
Inventor
李尚奎
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN101636722A publication Critical patent/CN101636722A/zh
Application granted granted Critical
Publication of CN101636722B publication Critical patent/CN101636722B/zh
Expired - Fee Related 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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/062Securing storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0667Virtualisation aspects at data level, e.g. file, record or object virtualisation
    • 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/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • 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/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • 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/45541Bare-metal, i.e. hypervisor runs directly on hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了使用OS级虚拟化的可移动虚拟机映像,以及用于创建和使用该可移动虚拟机映像的方法。所述可移动虚拟机映像独立于PC的硬件,并且易于附接到OS以及从OS卸除,由此呈现容易且快速的移动、发布、共享和初始化。

Description

可移动的虚拟机映像
技术领域
本发明涉及虚拟机,并且更具体地,涉及操作系统级的虚拟化所创建的可移动个人计算机环境。
背景技术
近年来,个人计算机技术发展迅猛。许多人将他们大量的时间花在PC(个人计算机)上。诸如文字处理器或者电子表格这样的各种应用产品已经确保了他们在其工作环境中至少使用一台PC。多媒体技术的发展已经繁育了基于PC增长的娱乐产业。特别是,互联网的日渐流行已经在增加人们对PC的依赖性方面起着重要作用。现代人在其日常生活中依赖于PC呈一种增长的趋势。有些人甚至不能想象没有PC的生活。
个人计算环境一直朝着无需太多计算机知识的方向发展。在二十世纪八十年代,PC要求用户直接输入OS(操作系统)所定义的命令,以便计算机工作。因此,不精通命令语言的用户不能使用计算机。此外,用户必须输入关于每件硬件的规格,以便计算机能识别和操作该硬件。
在九十年代,发展了GUI(图形用户界面)技术,从而用户可以以直观和可视的方式向计算机传输命令。为OS开发了通过其自身识别硬件的能力,从而用户不需要知道太多关于计算机的知识。
然而,在今天,使用PC仍然要求大量复杂的知识。不熟悉PC某些方面(包括关于操作系统以及安装和设置应用的知识)的普通人发现它们是费解的。这使得只有专家才能够使用PC的某些功能。尽管诸如GUI这样的各种技术正在传播,但是普通人在安装和设定应用方面仍然有困难。此外,各式各样的病毒和恶意程序使得人们难以方便地使用PC。
如果要使PC成为更普遍的家用电器,就像电视机或者电冰箱,则需要计算机比当前易用得多。对于电视机来说,用户所要掌握的全部只是相对简单的遥控。计算机操作需要被简化,以使它们也可以被容易地使用。
当今的PC面临一些新的需求。这些需求中的一些包括:PC环境应当容易且快速地移动,软件应当容易地发布,PC应当能够通过新的方案进行共享而同时保证独立的用户环境,以及PC应当能够在用户希望的任何时候恢复到用户已经定义的初始状态。
首先关注的问题是PC环境的移动性。PC具有其针对每个用户的环境;这与其他家庭电器不同。存在着大量不同的硬件组合。此外,即使使用相同的硬件集合和操作系统,桌面环境和应用程序也可以是不同的。这可能导致以下问题。
例如,一个人在家中和在办公室使用PC。家中的PC和办公室的PC有着不同的PC环境。因此,为了方便,用户应该使其家中的PC环境与办公室中的PC环境相同。他必须安装所有需要的软件并且安排所有用于最佳环境的选项,以辅助他的工作。一旦用户必须在其商务旅行中使用PC,他不得不在其商务旅行的目的地调整PC环境。为了省却该麻烦,可使用膝上型计算机。然而,膝上型计算机相对昂贵,并且沉重,而这可能是一个大负担。
第二个问题关注软件的发布,通过下载或者物理介质来购买新软件的人必须将该软件安装到他的PC。尽管安装过程相对简单,但是很多人还是有困难。偶尔,当发生内部或外部的问题时,用户面临必须重新安装软件的不便。
在办公室环境下,PC环境一般被分组在一起。可以让一个组使用相同的软件。团队或者位置可以作为各组的组织因素。PC管理者负责设定PC环境,包括用于每个组的所有需要的软件。然而,逐个处理每个职员的需要是非常低效的,并且耗费非常多的时间。如果在一存储器件中预先准备PC环境中并且可以对其进行快速设定,则每当重新安排位置、每当新员工进入公司或者每当事务所需的软件列表改变时,这将会很有好处。最终,每个人都应该能够容易地设定其自己的PC环境而不需要PC管理者。
第三个问题关注PC共享。假设两个用户共享一台PC。每个用户都想拥有他们自己的PC环境,以便该PC环境对他们的使用来说是最优的。有时,一个用户犯错并且将该PC暴露给了计算机病毒。这可能导致所有用户均遭受损失。这可能导致需要购买另一台PC。
最后的问题是关于PC环境的初始化。现代PC总是暴露给病毒和恶意代码。结果,PC可能随时间推移而陷入瘫痪。有时,用户碰巧自己犯错并且使其PC陷入瘫痪。在这些情况下,专业的PC分析师必须诊断并且处理问题源。否则,用户没有别的选择,只能格式化硬盘并重新安装所有需要的软件,然后再次设置桌面环境。这是PC使用的主要障碍。为了像其他普通的家用电器那样容易且方便地使用PC,用户应该能够仅以数次鼠标点击而无需专业支持,就将他们的PC恢复到初始干净的PC环境。
我们依赖PC的程度越深,就越需要随时随地使用我们自己的PC环境。然而,我们唯一的方案是使用类似膝上型计算机这样的额外的硬件。
当前,正在进行对虚拟机的研究。虚拟机的概念于二十世纪六十年代首次被提出,用于以虚拟方式将主机划分为多个机器,以便多个用户共享该主机。然而,随着微型计算机或PC的价格降低,购买多台PC比共享主机更加有利。因此,虚拟机技术在二十世纪八十年代鲜有使用。然而,在二十世纪九十年代,使用多台小容量计算机增加了管理和维护成本。另外,计算资源的高效使用成为问题(例如,偶尔服务器A使用10%的CPU而服务器B使用CPU高达99%),并且因此虚拟化技术再次吸引了注意力。然而,尽管用于高效管理大型服务器的资源的虚拟化技术成为主流,但是,针对客户端系统的虚拟化技术的研究迄今仍然不够充分。
本发明的虚拟机用来方便地提供PC环境的移动性、发布、共享和初始化。
目前实现虚拟机的方法各有不同。一些方法包括硬件级的虚拟化、应用级的虚拟化、操作系统级的虚拟化等等。下面将解释当前虚拟化技术的一些细节和限制。
硬件级虚拟化
存在两种硬件级虚拟化。一种是全虚拟化,其中,在软件中模拟CPU、存储器、硬盘、Bios(基本输入输出系统)等。另一种是准虚拟化,其中,使用支持硬件级虚拟化的器件(CPU)。
在命令集级虚拟化方法中,在软件中模拟中央处理单元、存储器、芯片组、总线和各种外设(网卡、硬盘、软盘和CD-ROM),以创建虚拟机。在命令集级虚拟化方法中,在虚拟机中创建的所有命令均由该软件进行处理。这可能导致很多性能问题,例如处理速度的降低。
在准虚拟化方法中,目标并非像命令集级虚拟化方法那样模拟命令,而是修改OS的源代码或二进制代码,以在机器中执行多个OS。近年来,正在开发允许多个OS在单个机器中执行而无需修改OS的CPU。在准虚拟化中,由于不在软件中对命令集进行重新分析,所以提高了处理速度。
硬件级虚拟化提供了标准硬件集合,并且所生成的虚拟机映像是PC环境本身。拷贝该映像伴随着一起拷贝所安装的OS,从而确保了独立性和移动性。
相反的是,硬件性能仍处在低水平。例如,即使实际的PC具有极佳的3D图形卡,但是,如果虚拟机通过模拟旧式的2D图形卡来提供虚拟图形卡的话,则旧式的2D图形卡操作虚拟PC。这意味着不能使用诸如IEEE1394这样的未被模拟的设备。然而,实际上不可能模拟迄今所发布的所有硬件设备。
此外,同时运行多个虚拟机是困难的,因为硬件级虚拟化所创建的虚拟机需要运行独立OS所需的所有资源。例如Windows Vista需要约1GB的RAM。为了正常地运行三个虚拟机和一个实际的机器,至少需要4G的RAM。
此外,因为需要模拟所有硬件部件,所以相比较来说,虚拟机映像具有很大的大小。直到今日,硬件级虚拟化方案所生成的虚拟机映像的大小仍是以吉字节为单位的。这是非常低效的,因为即使在发布诸如notepad.exe这样的小应用的情况下,这样生成的OS映像仍需要从数百兆字节到数十吉字节的大小范围。
此外,因为虚拟机需要新的OS,所以还需要额外的OS许可。这要求用户购买额外的OS。
因为虚拟机完全独立于实际机器,所以,实际机器中安装的OS环境以及所有应用都不能与虚拟机进行共享。对此存在着解决方案,例如P2V,通过P2V,实际机器内的应用可以通过复制而在虚拟机中被使用。然而,仍旧不可能共享应用程序。
硬件级虚拟化的优点在于,可以在每个虚拟机中安装独立的OS,从而其适合于诸如VPS(虚拟私用服务器)这样的服务器虚拟化以及服务器整合。硬件级虚拟化还适合于新软件的开发与测试。
结论即,硬件级虚拟化适合于服务器虚拟化,但是不适于商用桌面型虚拟化。
应用级虚拟化
应用级虚拟化方法是以字节码的形式创建应用的方法。该方法的一实例是Sun MicroSystems开发的Java虚拟机,其允许在各种异构硬件和软件环境中执行应用。
在开始时,应用级虚拟化产品是出于避免软件冲突的目的而开发的。例如,Windows环境包括可执行文件(.exe)和共享库(.dll)。共享库通常由各种公司制造,并且在各种软件中共享。例如,共享库c:\windows\system32\msvcrt.dll在A公司制造的A程序中使用,并且还在B公司制造的B程序中使用。库msvcrt.dll可以具有文件名相同的各种版本。在A程序使用目录c:\windows\system32中的msvcrt.dll的同时,可以安装B程序,并且可以用1.0.0.0版msvcrt.dll替代2.0.0.0版msvcrt.dll。该替代导致A程序故障。
这样的版本冲突问题可以通过应用级虚拟化避免。应用级虚拟化为每个应用分配独特的文件系统存储区,从而具有相同文件名的共享库被存储在用于每个应用的分开的存储区中。
现在,应用级虚拟化已经进展到应用流技术。使用这种技术,用于应用执行的应用数据,像执行文件、共享库、注册表等等,被存储在服务器中而非PC中。当用户想要执行应用时,从服务器动态重新调用所需的数据。因此,用户可以使用应用而无需将其安装在他的PC中。
当今的先进技术将应用数据存储在USB驱动器中。用户还可以通过将USB驱动器连接到PC来使用应用,而无需进行安装。该技术通过使应用能够在任何PC中执行来提供PC环境的有限移动性。
然而,应用级虚拟化分开存储应用数据。这可能解决安装阶段的冲突问题,但不能解决执行阶段的冲突问题。例如,当同时使用两个不同的反病毒程序时,它们将互相抵触并造成异常错误。执行阶段中的这种冲突无法通过应用级虚拟化来解决。
另外,存在很多不能通过应用级虚拟化来进行虚拟化或者需要定制的应用。例如,使用Windows服务的应用、内核模块或依赖于OS特定部件的应用。应用的这种依赖性不可避免地需要一个应用支持列表。因此,应用级虚拟化未提供全部的PC环境,而是仅仅允许特定应用被虚拟使用。
OS级虚拟化
最后,操作系统级虚拟化方法是对操作系统的每个组成部件(处理器、文件系统、网络资源、系统调用接口、命名空间等等)进行虚拟化的方法。常规的操作系统级虚拟化方法主要是针对诸如虚拟私用服务器(VPS)这样的服务器虚拟化的目的而开发的。服务器计算机中的操作系统内核被分区,并且为每个分区提供独立的OS环境。
常规的服务器主机托管服务为每个用户提供一个物理服务器。该方案可以为用户提供完整的OS空间。然而,购买很多实际的服务器需要初始投资和维护花费。
OS级虚拟化使得有可能在单个实际OS中创建多个独立的虚拟OS。用户能够独立地在OS中使用所需的环境。另外,因为用户不需要购买另一台物理服务器,因此OS级虚拟化是花费不多的。
此外,OS级虚拟化方法已经被用作向出于软件开发和测试的目的而需要多个OS环境的用户高效地提供独立OS空间的方法。
发明内容
技术问题
本发明提供了一种新的虚拟化技术,其使得可以容易且快速地移动PC环境、发布软件产品、在保证独立性的情况下共享物理PC、容易且方便地初始化PC环境等等。该新的虚拟化应当提供一种计算环境,同时不要求PC用户掌握关于OS、安装和设置程序等的额外知识。这种技术将允许用户以使用其他普通电器那样的容易程度来使用PC。
出于这些目的,本发明提供这样的一种可移动虚拟机映像,其独立于硬件,使用PC的大多数OS环境,易于附接到OS或者从OS卸除,并且表现出容易且快速的移动、发布、共享和初始化。在本说明书中,术语“可移动”用来描述上面所解释的特征。
虚拟化技术当前通常用在服务器整合、软件开发和测试以及主机托管领域中。然而,本发明所追求的可移动虚拟机映像尚未被提出。另外,如上面描述的,所有当前的常规虚拟化技术对于本发明的目标来说都是不足以胜任的。
在使用硬件级虚拟化的情况下,单个虚拟机需要与实际机器相同的存储器和硬盘资源。因此,难以在单个计算机中创建多个虚拟机。然而,OS级虚拟化能够在单个计算机中创建多个虚拟机,这是因为每个虚拟机并不需要资源来运行其自己的OS。因此,与硬件级虚拟化相比,OS级虚拟化可以以较少的资源来运行多个虚拟机。
尽管OS级虚拟化存在多种优点,但是其尚未应用于PC环境。这是因为迄今仍未实现移动虚拟映像的能力。
硬件级虚拟化可以保证虚拟机映像的移动性,因为它将虚拟映像创建为包括独立OS的独立系统。然而,时至今日,OS级虚拟化仅仅是拆分实际机器的OS并以虚拟方式使用拆分的OS。OS级虚拟化不能够将所创建的虚拟机从实际机器卸除并将其以映像的形式附接到另一实际机器。
这是因为在OS环境中存在要与实际OS共享的非独立的功能和资源。每个用户以其偏好的、与其他用户不同的系统设置、驱动器名、主目录路径和权限、以及文件和注册表路径来使用OS。对于这些多样的环境,所创建的虚拟机不能正常执行。
如果有可能在使用OS级虚拟化的同时创建和使用确保完整移动性的虚拟机映像,我们将受益于OS级虚拟化的所有好处。这使得可以尽快且尽量高效地移动PC环境。本发明提供了一种使用OS级虚拟化来生成可移动虚拟机映像的方法。
技术方案
以下是对本发明的OS级虚拟化的基本概念的解释。
OS的部件
OS包括内核、设备驱动程序、系统进程、服务进程等等。
内核是OS的核心。它是OS的一部分,用于向OS的其他部分提供多种基础服务。内核管理该系统的硬件或资源并且对它们进行抽象。
一般来说,内核包括内核执行部分和HAL(硬件抽象层)。
内核执行部分负责进程和线程管理、存储管理、对象管理、安全管理、进程间通信管理等等。
HAL对硬件进行抽象,以使得其他应用或内核部件可以在无需直接访问硬件的情况下使用硬件。
设备驱动程序被用来控制物理设备,或者在内核级执行命令。
系统进程是OS要在用户模式下执行的核心进程,并且负责设备驱动程序请求、用户登陆/注销、安全等等。
服务(守护)进程是在用户模式下在后台执行的进程,并且负责所有种类的服务,例如文件共享服务、远程登录服务、网络服务、打印机服务等等。这些类型的服务在后台执行,并且支持应用或OS的其他部件进行它们的一部分。
应用进程是诸如文字处理器或者Windows媒体播放器这样的软件,用于向用户提供实际所需并在OS中执行的功能。一般来说,我们将OS和应用称为软件(软件=操作系统+应用)。
分层的内核部件
图1示出根据本发明的虚拟化的优选实施例。
具有独立quest OS的环境具有虚拟内核、执行空间和虚拟机数据。
表1示出包括该OS的PC的一般结构。
表1
Figure G2008800088354D00081
OS、HAL、内核执行部分、设备驱动程序、系统进程、服务等的部件是分层的。
当上层部件从下层部件请求特定进程时,下层完成该进程并随后返回结果。
根据本发明,虚拟化可以通过基于来自上层部件的请求控制下层部件的处理来获得。例如,当设备驱动程序请求从内核执行部分创建对象时,相应的对象在虚拟空间中被创建并且返回结果。当应用请求创建c:\myfile.txt文件时,内核执行部分不是在实际盘中而是在虚拟盘中创建该文件,并随后返回结果。
上层部件响应于下层部件而处理所有功能。因此,如果下层部件被虚拟化,则可以在虚拟机中操作上层部件而无需任何修改。
使用本发明,OS的最下层部件(HAL和内核执行部分)被虚拟化。因此,诸如设备驱动程序、系统进程、服务进程或应用这样的上层可以在虚拟空间中被执行而无需任何修改。
以下是对本发明的可移动OS的解释。
虚拟内核的生成
内核执行部分层可以通过将来自上层的请求分派到实际空间或者一个或更多虚拟空间来对内核进行虚拟化。对属于实际机器的线程或进程的请求被分派到实际空间,而对属于虚拟机的线程或进程的请求则被分派到虚拟空间。在虚拟机中执行意味着对内核执行部分的请求被分派。
图3示出来自上层的请求通过内核执行部分被分派到虚拟空间或实际空间。
可以通过诸如文件、注册表或对象这样的命名空间的虚拟化、进程和线程的虚拟化以及存储器的虚拟化,来虚拟化内核执行部分。
以下将解释如何实现对命名空间的虚拟化。
文件、注册表、内核对象等等是具有名称的内核部件。例如,文件具有诸如\Device\HarddiskVolume1\myfile.txt这样的名称,而注册表具有诸如\Registry\Machine\Software\mykey这样的名称,内核对象具有诸如\BaseNamedObjects\myobject这样的名称。
在命名空间中管理这些名称。当特定内核对象被打开时,内核执行部分检查相应对象是否存在于命名空间中。当特定内核对象被创建时,内核执行部分检查在命名空间中是否存在重复的对象。如果内核对象被创建,则该对象名称被记录在命名空间中。每个虚拟机具有独特的命名空间。例如,对虚拟机VM1来说,对所述文件\Device\HarddiskVolume1\myfile.txt的请求被分派到\VM1\Device\HarddiskVolume1\myfile.txt。对所述注册表\Registry\Machine\Software\mykey的请求被分派到\Registry\VM1\Software\mykey。对所述对象\BaseNamedObjects\myobject的请求被分派到\VM1\BaseNamedObjects\myobject。理所当然地,要被分派的名称可以符合可选的规则。因此,对命名空间的虚拟化是通过为每个虚拟机赋予独立的命名空间来实现的。
以下将解释如何实现对进程和线程的虚拟化。
对于OS,线程是最小的执行单元,而进程是共享一个存储器地址的一组线程。用于生成进程或线程的请求被传送到内核执行部分。如果请求生成子进程的母进程在特定虚拟机内,则内核执行部分在该特定虚拟机内生成该子进程。如果请求生成线程的进程在特定虚拟机内,则内核执行部分在该特定虚拟机内生成该线程。一般来说,这些对于进程和线程的虚拟化是足够的,因为进程是OS级虚拟化的基本单元。
然而,在本发明中,虚拟化的最小单元是线程而非进程。这是因为虚拟机并不生成一些OS进程,而是共享实际机器的这些进程,以实施高效的OS级虚拟化。在这种情况下,对于单个进程,指定的线程应当在实际机器中执行,并且该指定的线程还应当在指定的虚拟机中执行。如果要求内核执行部分生成一个线程,并且如果要求该生成的线程的母线程是在该虚拟机内,则所生成的线程也在该虚拟空间中执行。
虚拟机映像的映射
即使不同的机器具有同种OS,它们也将具有不同的针对每个系统的用户权限以及系统设置。因此,为了将在一个虚拟机中使用的虚拟机映像移动到另一个虚拟机,需要对该虚拟机映像进行映射。映射包括权限的映射、环境变量及其设置的映射、虚拟机和实际机器之间的资源共享等等。存在两种方式来实现这些映射,一种是将虚拟机映像转换为符合实际机器,而另一种是向内核执行部分注册该特定映像的设置。可以使用这两种方法中的任一种或两者。
下面解释权限的映射的细节。
多用户OS为每个用户提供访问控制功能,以赋予他们对每个文件、注册表和设备的使用权限。通常,虚拟机映像在生成该映像的时候不具有权限信息或者用户的权限。如果这样的权限不可用于其他OS,则可以停止引导。因此,权限映射对于导入映像是必不可少的。
当虚拟机映像被修改到实际机器时,映像中对文件、目录、注册表和设备的权限设置被调整到实际机器的OS环境的值或OS的默认值。理所当然地,在文件、目录、注册表和设备不需要对使用进行访问控制或者即使未建立访问控制也不会引起问题的情况下,可以省略权限映射。
根据向内核执行部分进行注册的方法,相应的账户本身被注册在虚拟内核执行部分中。
关于环境变量和配置的映射,用于实际机器的环境变量和配置是基于实际机器的驱动器路径来记录的。在其中安装虚拟机OS的虚拟盘驱动器名称可以不同于在其中安装实际OS的物理盘的驱动器名称。因此,环境变量和配置中需要映射的部分应当被重新映射。
以下解释共享资源的映射。
OS的诸如系统进程和服务进程这样的一些部件在实际机器和虚拟机之间被共享。这些进程中使用的资源也被共享。尽管按线程分配的资源是由线程级虚拟化来处理的,按进程分配的资源需要依赖于当前状况来进行适当处理。在Windows的情况下,实际机器和虚拟机的Windows的kernel32.dll和user32.dll文件应当被进行同步。
通过独立方法生成虚拟机OS映像
虚拟机映像包括OS数据文件。一般来说,OS数据占用数百兆字节。本发明使用OS级虚拟化,所以不是如包含于虚拟机映像中那样发布OS文件,而是直接使用实际机器的OS来创建。要发布的虚拟机映像包含创建OS映像所需的最少数据,例如文件列表、注册表列表和设置值。文件和注册表数据可以从实际机器的OS中拷贝。
包含于要发布的虚拟机映像中的数据,例如文件列表、注册表列表和OS配置值,包括存在于同一OS的各个版本中的列表的全部或者一部分。例如,Windows包括诸如Window 2000、Window XP和Window 2003这样的各种版本。虚拟机映像可以包括在所有或一些Windows版本中使用的文件和注册表列表。
在映像映射阶段,在列表中,仅实际机器的OS中的项目被记录以供使用。这之后,文件和注册表数据被从实际机器的OS拷贝到虚拟机映像。拷贝可以在映像映射阶段进行,或者当文件和注册表在虚拟机执行阶段被实际使用时进行。
为了与DOS兼容,Windows支持短文件名SFN和长文件名LFN。当拷贝文件时,LFN不改变。然而,从实际OS到所生成的虚拟映像,可能改变SFN。因此,在拷贝之后应当强制纠正SFN为一致。在注册表中记录的文件名也应当被纠正。
用流来进行映像传输
虚拟机映像文件的大小一般非常大。完整的映像文件可以被下载或者拷贝来使用。然而,如果映像通过流进行传输,则可以即刻使用虚拟机而无需等待完整的映像下载完成。使用流方法,映像文件被存储在流存储设备中,并且仅仅将需要的部分下载或者拷贝到虚拟机以供使用。流存储设备可以是服务器的形式,诸如文件服务器、网络服务器或FTP服务器;或者是可移动存储设备的形式,诸如USB驱动器或者CD/DVD ROM。还可使用诸如普通硬盘这样的固定存储设备。
盘映像可以如下面阐述的那样用流来进行传输。如果进程、线程或者设备驱动程序中的指令请求访问特定文件或目录,则虚拟内核执行部分将该请求分派到虚拟盘。虚拟盘随后计算所请求的文件或目录在虚拟盘上的位置,并且使用该结果找出在盘映像文件中的偏移量。响应于对该偏移量及长度的请求,流式映像存储设备传输在映像文件上该偏移量处的等于该长度的数据。虚拟盘使用所传输的数据继续执行。
注册表映像的流传输可以通过以下过程实现。当进程、线程或者设备驱动程序中的指令请求访问一个注册表键或注册表值时,虚拟内核执行部分响应于该请求而访问注册表映像文件。此时,计算出用于访问该注册表映像文件的偏移量和长度,并且该请求被传输到流存储装置。流存储装置处理注册表映像文件中指示的该偏离量和该长度处的数据,并且返回其结果。虚拟内核执行部分使用所传输的数据继续执行。
通过虚拟盘进行映像加载
虚拟盘是用于以软件来模拟实际硬盘的虚拟设备。一个虚拟机被连接到一个或更多虚拟映像文件,并且虚拟盘的特定扇区被连接到映像文件的特定位置。因此,用于针对虚拟机的特定扇区来读取和写入数据的请求被模拟为在该映像文件的特定位置读取和写入相应数据。用于对分区和盘进行控制的请求也是以同样的方式进行处理。因为虚拟机中的多个文件和目录以一个盘映像文件的形式存在于实际机器中,所以,使用虚拟盘提高了映像的移动性。映像文件的加密提高了安全性,这是因为其他用户需要知道密码来使用该虚拟机。根据OS来为每个盘赋予一驱动器名。例如,Windows OS的盘被赋予诸如C:或D:这样的驱动器名。虚拟盘也有其自己的驱动器名。尽管具有相同的C:驱动器,但是虚拟机的C:驱动器指示虚拟盘,而实际机器的C:驱动器指示物理盘。
在本发明中,虚拟机盘映像给出了针对低容量的轻量选项。一般来说,OS需要超过百兆字节的存储空间。盘映像可以包括所有文件。为了确保高效的移动性,可以发布空的映像或者仅包含文件列表的映像,并且文件的内容可以从实际机器的OS供应。为了最小化与实际机器的冲突,OS可以被设为驱动器O:,并且应用程序可以被设为驱动器P:,来制造和发布虚拟盘映像。
分层的虚拟机映像
当虚拟机映像具有分层结构而非单个文件时,所需的映像文件可以在使用虚拟机期间被插入。如果在虚拟机中出现问题,则仅需要替换有问题的映像文件。这是分层结构的优势。虚拟机映像包括OS映像层、应用模板映像层、用户数据映像层以及临时数据映像层。存储于临时数据映像层中的临时数据是在虚拟机执行时生成的,并且可以在虚拟机中发生问题时被删除。用户数据包括用户安装和生成并且存储在用户数据映像层中的所有类型的文档文件、用户签名文件、软件文件以及注册表。应用模板映像是通过导出虚拟机映像来创建的。该映像在虚拟机执行期间不变。虚拟OS模板映像包括虚拟OS的文件和注册表,并且在虚拟机执行期间不变。
如图2中所示,虚拟OS、应用模板、用户数据和临时数据是分层的。例如,文件系统堆叠虚拟OS文件、应用模板文件、用户数据文件和临时数据文件。当应用请求c:\myfile.txt时,在临时数据中查找该文件。如果其不存在于临时数据中,则在用户数据中查找。如果其不存在于用户数据中,则在应用数据中查找。如果其不存在于应用数据中,则在虚拟OS文件中查找。以同样的方式查找注册表。
虚拟OS的引导
为了使用OS,用户必须引导OS。OS引导历经以下步骤:初始化所有设备,延迟的更新,以及执行系统进程、服务进程和OS应用。虚拟机也以同样的方式在虚拟机中引导OS。在OS级虚拟化的情况下,每个虚拟机逐步进行引导过程。在实现了对内核执行部分层中的进程、线程以及命名空间的加强之后,可以通过从虚拟内核调用相应OS的引导起始点来开始进行引导。引导起始点在虚拟内核中被重新调用,以与OS的引导进程相同的方式进行引导。在虚拟机的引导中,初始化物理设备的操作被省略,但是额外地需要初始化虚拟设备。延迟的更新意味着,如果诸如文件等的资源在使用中,则所述资源不能被删除或者更新,并且所述资源一般在系统被关闭之后的下一次引导进程中被删除或者更新。虚拟机引导还应该处理虚拟机内延迟的更新。
系统进程主要用于提供OS环境,其负责用户账户管理、登录处理、会话管理、服务管理。例如,微软公司的Windows OS具有诸如lsass.exe、winlogon.exe、smss.exe等的系统进程。诸如DCOM/RPC服务、打印机假脱机服务等的服务进程在后台执行,以支持其他应用的功能。
系统进程或服务进程可以执行虚拟机内的所有进程,或者共享已经在主机OS或其他虚拟机中执行的进程,以便高效地利用整个系统的资源。对于账户管理系统进程,如果其是针对每个虚拟机执行的,则为每个虚拟机生成独立的账户。然而,共享主机OS的进程,每个来宾OS可以共享诸如主机OS的ID和密码这样的账户信息。为了共享系统进程或服务进程,对存在于该进程中的所有全局对象的访问应当被映射到所共享的进程的对象。对于打印机假脱机服务进程,存在用于控制打印机的命名流水线。当来宾OS中的记事本进程请求打印文档时,其尝试访问来宾OS中的假脱机服务的命名流水线。然而,因为在来宾OS中没有假脱机服务并且主机OS中的假脱机服务被共享,所以,需要将该请求映射到主机OS的假脱机服务。
用户需要停止运行OS以便结束。OS停止运行一般分为应用结束、设备驱动程序结束、服务进程结束、系统进程结束等等。虚拟机也应该结束该虚拟机中的OS。虚拟OS的停止运行跟在实际OS的停止运行之后,但是并不关闭实际设备。
虚拟OS的使用
在引导虚拟机之后,用户可以像他使用实际OS那样使用虚拟机。虚拟机支持切换模式显示和无缝模式显示。在切换模式下,每个虚拟机具有独立的显示。当一个虚拟机上的用户想要访问另一个虚拟机或者实际机器时,切换模式要求他使用快捷键或者菜单命令来切换屏幕。在无缝模式下,实际机器的程序与虚拟机的程序可以同时显示在一个屏幕上。
导出虚拟机映像
在虚拟机中执行的文件操作被存储在虚拟盘映像中,并且在虚拟机中执行的注册表操作被存储在虚拟注册表映像中。虚拟机映像的移动性、发布和共享通过导出映像文件来实现。最简单的导出方式是简单地拷贝映像文件。优选的导出方式是通过减少映像文件中任何的冗余来减小映像文件的大小。冗余是非必需的信息,可以包括临时文件、权限信息、非共享文件和OS部件的注册表。更优选的方式是对虚拟机映像进行打包,以进行更高效的共享。这是通过对映像文件中的每个文件、目录、设备和注册表设定权限,针对OS或安装的应用添加许可信息,并且针对可用的OS版本和所需的库添加信息来实现的。
有益效果
本发明允许PC环境突破物理硬件的限制。其免除了在物理PC上建立的PC环境不能从该物理PC转移到另一设备的限制。此外,本发明克服了软件仅应该与硬件一起作为有机整体来使用的限制。用户可以通过将PC软件环境附接到PC硬件以及将其从PC硬件卸除来创建他们自己独特的可移动PC软件环境,由此可获得移动性。
使用本发明,不熟悉PC的用户不需要关于如何安装程序以及如何设定程序配置的额外知识。一旦优化地设置了程序工作环境,其可以随时被拷贝、并且被容易且快速地使用。本发明用拷贝和删除的概念来替代安装和卸载的概念。一旦虚拟机映像被创建和存储,就可以通过使用映像缓存和可移动驱动器或文件存储服务器来容易且快速地使用该映像。
即使是专业的PC用户也将能够更高效地使用PC,因为他可以快速地拷贝和删除程序。
附图说明
图1示意性地示出根据本发明的优选实施例的OS级虚拟化。
图2示意性地示出根据本发明的优选实施例的分层的数据。
图3示意性地示出根据本发明的优选实施例的分层的内核的操作。
图4示意性地示出根据本发明优选实施例的用于执行虚拟机映像的例程。
具体实施方式
如图4中所示,本发明如下面阐述地那样执行“基本例程”。
1.将包括第一OS的虚拟机模板映像映射到实际机器的第二OS。
2.使用该映像来引导虚拟机。
虚拟机模板映像是OS级虚拟化所划分的虚拟OS的映像,其可以仅具有OS,或者可以是从其他PC导入的映像。
在已引导的虚拟机中,用户可以安装程序并且设置所需项目,以在所生成的虚拟机内实施其自己的PC环境。该已引导的虚拟机可以以虚拟机模板映像的形式被导出。
所导出的映像首先被存储,并且总是可用的。可以使用可移动盘或者通过在线传输将该映像移动到任何其他PC。可以通过执行该基本例程将被移动的映像导出到另一PC,并且随后将其用作新的虚拟机。由此实现PC环境的移动性。
本发明的方式
本发明可以为PC用户提供各种便利性。
使用便携盘或者通过网络,可以将个人的PC环境移动到家庭、学校、办公室或者在国外某处的PC。
共享单台PC的用户可以执行该基本例程来创建和存储每个用户的独特的虚拟机映像。每当用户需要使用该PC时,他执行该基本例程来访问其虚拟机映像。由此实现共享。
用户还可以创建多个虚拟机映像并且根据他们自己的目的来使用所述虚拟机映像。例如,VM1用于安全的电子商务交易或互联网银行活动。VM2用于安全地处理公司的秘密信息。VM3用于无安全性的网上冲浪,此时PC暴露在病毒和黑客的危险中。
频繁初始化PC的用户需要执行该基本例程来生成为其自己的初始PC环境设置的映像。他们随后必须导出该映像进行保存。在首次这样做之后,每当他想要初始化时,他可以导入该映像来执行该基本例程,并且因此容易地实现初始化。即使几乎不懂PC的普通人也可以在学习了如何执行该基本例程以及如何导入和导出虚拟机映像之后解决其PC中的问题。他们仅通过数次鼠标点击就能容易地完成其操作。
本发明提供了一种用于软件发布的新方法。软件发布者可以使用其中安装了OS而无任何应用的虚拟机模板映像来执行该基本例程。随后,发布者可以销售通过导出其中已经安装有要发布的产品的虚拟机而生成的虚拟机映像。消费者将购买该映像,并且仅需在其PC中执行该基本例程以即刻使用该软件。
消费者可以通过给出包括软件列表及其配置的书写订单来从发布者订购多个软件包。发布者可以根据订单创建虚拟机映像并将其发送给购买者。发布者可以事先准备各种打包形式的虚拟机映像。所述打包可以包括一套常售软件。
在线销售和发布也是可以的。可以准备服务器来接收订单,并且响应于订单创建虚拟机映像。所创建的映像可以被存储以供重复使用。
在私营或国营企业中,可以快速地向员工提供PC环境。管理员在一台PC中执行该基本例程并且在虚拟机中安装所有需要的软件。随后,他导出映像并将其存储。当职员需要相应PC环境时,管理员将映像给与该职员并且在该职员的PC中执行该基本例程。可以快速准备商业环境。可以根据每个组的需要为其创建映像。
本发明还适用于负责大量PC的管理员,例如在网吧或者IT教育中心中的管理员。消费者可以通过虚拟机来使用PC,该虚拟机是通过针对预先存储的映像执行该基本例程来创建的。在PC中出现问题的情况下,可以使用原始映像立刻初始化该PC。此外,当消费者要求使用特定软件时,针对其中已安装有该特定软件的虚拟机映像来执行该基本例程可以满足该消费者的请求。
尽管已经参照数个优选功能描述了本发明,但是该描述是对本发明的说明,而不被解读为对本发明能力的限制。本领域技术人员可以想到各种修改和变化,而不会偏离如所附权利要求书限定的本发明的范围。

Claims (13)

1、一种用于执行包括操作系统的虚拟机映像的方法,所述方法包括以下步骤:
将虚拟机模板映像映射到操作系统,以及
使用所映射的映像引导所述虚拟机。
2、根据权利要求1所述的方法,还包括:
创建虚拟盘,以及
为所述虚拟盘加载经适应性转换的映像。
3、根据权利要求1所述的方法,其中,所述映射包括以下中的至少一种:权限映射、环境变量映射、操作系统配置映射、驱动器映射和共享资源映射。
4、根据权利要求1所述的方法,其中,所述映射包括独立映射,所述独立映射包括以下步骤:
写入在所述虚拟机映像中提供的所有版本的操作系统文件和注册表的列表之中仅在实际机器的操作系统中存在的项目,以及
拷贝所述文件和注册表内容或记录,以将它们从所述实际机器的操作系统拷贝到所述虚拟机映像。
5、根据权利要求1所述的方法,还包括导出所执行的虚拟机映像。
6、根据权利要求1所述的方法,还包括在所述映射之前导入虚拟机映像。
7、根据权利要求1所述的方法,所述引导包括:
在内核执行部分中创建虚拟内核,以及
加载虚拟设备驱动程序、虚拟服务和虚拟系统进程中的至少一些。
8、根据权利要求7所述的方法,其中,虚拟设备驱动程序、虚拟服务和虚拟系统进程中的至少一些是与所述实际机器共享的,而其余的则不与所述实际机器共享。
9、根据权利要求7所述的方法,其中,在所述内核执行部分中创建虚拟内核的操作至少是通过线程级虚拟化进行的。
10、一种用于发布软件的方法,其中,提供至少一个服务器来发布软件,所述服务器能够通过计算机网络与至少一个客户端进行通信,所述方法包括:
从客户端接收发布软件的请求,
创建虚拟机映像,其中,所请求的软件被安装到所述虚拟机映像,以及
传输所创建的虚拟机映像。
11、根据权利要求10所述的方法,其中,所述请求包括对要安装的至少一个或更多程序、所述程序的配置以及每个程序的部件的预先确定。
12、根据权利要求10所述的方法,还包括将提供给所述客户端的所述虚拟机映像存储在服务器或外部存储区上,由此所述虚拟机映像能够再次传输给所述客户端。
13、一种用于传输虚拟机映像的方法,其中,提供至少一个服务器来发布软件,所述服务器能够通过计算机网络与至少一个客户端进行通信,所述方法包括:
接收所述客户端请求的计算机环境的配置,
根据所接收的配置创建虚拟机映像,以及
作为响应,将所创建的虚拟机映像传输到所述客户端,其中,所述配置包括软件和/或操作系统配置的列表。
CN2008800088354A 2007-03-20 2008-03-20 可移动的虚拟机映像 Expired - Fee Related CN101636722B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020070027161 2007-03-20
KR20070027161 2007-03-20
KR10-2007-0027161 2007-03-20
PCT/KR2008/001567 WO2008115012A1 (en) 2007-03-20 2008-03-20 Movable virtual machine image

Publications (2)

Publication Number Publication Date
CN101636722A true CN101636722A (zh) 2010-01-27
CN101636722B CN101636722B (zh) 2013-01-30

Family

ID=39766073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800088354A Expired - Fee Related CN101636722B (zh) 2007-03-20 2008-03-20 可移动的虚拟机映像

Country Status (6)

Country Link
US (1) US20100107163A1 (zh)
EP (1) EP2137629A4 (zh)
JP (1) JP2010522370A (zh)
KR (5) KR20080085780A (zh)
CN (1) CN101636722B (zh)
WO (1) WO2008115012A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025744A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导入和导出系统
CN103262026A (zh) * 2010-12-31 2013-08-21 Emc公司 虚拟设备部署
CN103294765A (zh) * 2012-03-01 2013-09-11 国际商业机器公司 用于供应和转换虚拟设备的基于策略的方法的方法和系统
CN106462442A (zh) * 2014-07-24 2017-02-22 谷歌公司 加载虚拟机的系统和方法
CN107003866A (zh) * 2014-11-14 2017-08-01 微软技术许可有限责任公司 来自加密模板的加密虚拟机的安全创建
CN107919033A (zh) * 2016-10-10 2018-04-17 北京七展国际数字科技有限公司 一种通过融合多媒体、微气候及生物景观的超感官生态体验系统
US10956321B2 (en) 2014-05-05 2021-03-23 Microsoft Technology Licensing, Llc Secure management of operations on protected virtual machines

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726294B2 (en) 2010-10-01 2014-05-13 Z124 Cross-environment communication using application space API
US8966379B2 (en) 2010-10-01 2015-02-24 Z124 Dynamic cross-environment application configuration/orientation in an active user environment
US20130024812A1 (en) 2011-07-13 2013-01-24 Z124 Foreground/background assortment of hidden windows
US20130024778A1 (en) 2011-07-13 2013-01-24 Z124 Dynamic cross-environment application configuration/orientation
US9098437B2 (en) 2010-10-01 2015-08-04 Z124 Cross-environment communication framework
US9047102B2 (en) 2010-10-01 2015-06-02 Z124 Instant remote rendering
US8819705B2 (en) 2010-10-01 2014-08-26 Z124 User interaction support across cross-environment applications
US8933949B2 (en) 2010-10-01 2015-01-13 Z124 User interaction across cross-environment applications through an extended graphics context
US9229474B2 (en) 2010-10-01 2016-01-05 Z124 Window stack modification in response to orientation change
US8266616B1 (en) * 2006-05-11 2012-09-11 Hewlett-Packard Development Company, L.P. Computer system provisioning using templates
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8776038B2 (en) * 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8930512B2 (en) * 2008-08-21 2015-01-06 Red Hat, Inc. Providing remote software provisioning to machines
US8255350B2 (en) * 2008-12-31 2012-08-28 Sap Ag Instantiating a solution using preconfigured templates
US8407700B2 (en) * 2009-03-03 2013-03-26 Symantec Corporation Methods and systems for merging virtualization sublayers
US8402458B1 (en) * 2009-03-18 2013-03-19 Symantec Corporation Methods and systems for converting non-layered-software-application installations into layered installations
US8972519B2 (en) * 2009-11-16 2015-03-03 International Business Machines Corporation Optimization of multimedia service over an IMS network
KR101115136B1 (ko) * 2009-12-02 2012-02-24 주식회사 반딧불소프트웨어 보안 컴퓨팅 환경 시스템 및 그 구현 방법
EP2513811B1 (en) 2009-12-14 2018-03-28 Citrix Systems, Inc. Methods and systems for optimizing a process of archiving at least one block of a virtual disk image
KR101316677B1 (ko) * 2009-12-17 2013-10-10 한국전자통신연구원 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8250638B2 (en) * 2010-02-01 2012-08-21 Vmware, Inc. Maintaining the domain access of a virtual machine
US8464003B2 (en) 2010-02-17 2013-06-11 Hitachi, Ltd. Method and apparatus to manage object based tier
KR101089157B1 (ko) * 2010-03-05 2011-12-02 주식회사 안철수연구소 클라이언트 가상화를 이용한 서버의 논리적 망분리 시스템 및 방법
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US20110258624A1 (en) * 2010-04-19 2011-10-20 Fuat Bahadir Virtual machine based secure operating system
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
WO2011142753A1 (en) 2010-05-12 2011-11-17 Hewlett-Packard Development Company, L.P. Methods, apparatus and articles of manufacture to update virtual machine templates
US8352415B2 (en) * 2010-06-15 2013-01-08 International Business Machines Corporation Converting images in virtual environments
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US8490088B2 (en) * 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
KR101471366B1 (ko) * 2010-09-30 2014-12-10 에스케이플래닛 주식회사 단말기에 따른 적응적 화면 가상화 방법 및 시스템
WO2012044558A2 (en) 2010-10-01 2012-04-05 Imerj, Llc Cross-environment communication framework
US9405444B2 (en) 2010-10-01 2016-08-02 Z124 User interface with independent drawer control
US8761831B2 (en) 2010-10-15 2014-06-24 Z124 Mirrored remote peripheral interface
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9209976B2 (en) 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US8707301B2 (en) 2010-11-08 2014-04-22 Microsoft Corporation Insertion of management agents during machine deployment
GB2499956B (en) 2010-11-23 2018-02-14 Servicenow Inc Direct migration of software images with streaming technique
US9230118B2 (en) 2010-12-09 2016-01-05 International Business Machines Corporation Encrypting and decrypting a virtual disc
CA2817109C (en) 2010-12-13 2020-11-03 International Business Machines Corporation Upgrade of software images based on streaming technique
JP5767565B2 (ja) 2010-12-14 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US8713088B2 (en) * 2011-03-27 2014-04-29 Hewlett-Packard Development Company, L.P. Identifying users of remote sessions
TW201250482A (en) * 2011-06-02 2012-12-16 Hon Hai Prec Ind Co Ltd System and method for updating virtual machine templates
JP5719244B2 (ja) 2011-06-29 2015-05-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 安全に管理された仮想マシンの実行環境を構築する方法、プログラムおよびコンピュータ装置
US20130007726A1 (en) 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US8943564B2 (en) * 2011-07-21 2015-01-27 International Business Machines Corporation Virtual computer and service
CN102929884B (zh) * 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
US9158561B2 (en) * 2011-08-18 2015-10-13 Vmware, Inc. Systems and methods for modifying an operating system for a virtual machine
US8924986B2 (en) * 2011-09-01 2014-12-30 American Megatrends, Inc. Methods, devices and computer program products for confluence of multiple operating systems
US20130080932A1 (en) 2011-09-27 2013-03-28 Sanjiv Sirpal Secondary single screen mode activation through user interface toggle
US8924954B2 (en) * 2011-11-22 2014-12-30 Huawei Technologies Co., Ltd. Application software installation method and application software installation apparatus
KR101335326B1 (ko) * 2011-12-30 2013-12-02 (주)네오위즈게임즈 클라이언트 단말, 감시 서버, 및 감시 영역 변조 방지 방법
US10013269B2 (en) * 2012-02-22 2018-07-03 Vmware, Inc. Component framework for deploying virtual machines using service provisioning information
KR101320739B1 (ko) * 2012-02-22 2013-10-21 주식회사 팬택 휴대용 단말의 메모리 보안 시스템
GB2502288A (en) 2012-05-22 2013-11-27 Ibm Modifying the order of checking virtual machines for cached disc data
KR101493828B1 (ko) * 2012-05-31 2015-02-16 주식회사 케이티 가상머신 초기 설정 자동화 방법 및 가상머신 초기 설정 자동화 서비스 제공 방법
KR101302003B1 (ko) * 2012-07-19 2013-08-30 (주)하이큐브시스템 버추얼 오퍼레이팅 시스템
US9977698B2 (en) * 2012-07-31 2018-05-22 V3 Systems Holdings, Inc. Virtual machine migration into the cloud
US9262212B2 (en) * 2012-11-02 2016-02-16 The Boeing Company Systems and methods for migrating virtual machines
CN103902347B (zh) * 2012-12-24 2017-09-29 中国电信股份有限公司 虚拟机系统的部署方法与系统
JP6064630B2 (ja) * 2013-02-01 2017-01-25 コニカミノルタ株式会社 画像形成装置および画像形成装置制御方法
US10002001B1 (en) * 2013-02-19 2018-06-19 Amazon Technologies, Inc. Importing a virtual disk image into a compute service environment
CN103118129A (zh) * 2013-02-22 2013-05-22 浪潮电子信息产业股份有限公司 一种具有家用集成数字电视功能的云桌面系统
US9378038B2 (en) 2013-06-07 2016-06-28 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system
US9858097B2 (en) 2013-06-07 2018-01-02 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system
KR101479409B1 (ko) * 2013-07-05 2015-01-06 포항공과대학교 산학협력단 오프로드를 이용하는 워크로드의 무결성 보장 장치 및 방법
CN104572239A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 利用云平台制作模板的系统及方法
CN104572274A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 跨云点迁移系统及方法
KR102165601B1 (ko) 2013-10-24 2020-10-14 에스케이플래닛 주식회사 안전한 어플리케이션 실행을 위한 방법 및 이를 위한 장치
KR102211850B1 (ko) * 2013-12-11 2021-02-02 주식회사 케이티 클라우드 기반의 가상머신 이미지 서비스 제공 방법 및 시스템
KR102237566B1 (ko) * 2014-01-23 2021-04-07 한국전자통신연구원 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법
US10599457B2 (en) * 2014-02-25 2020-03-24 Red Hat, Inc. Importing and exporting virtual disk images
US9158909B2 (en) * 2014-03-04 2015-10-13 Amazon Technologies, Inc. Authentication of virtual machine images using digital certificates
US9430182B2 (en) 2014-03-06 2016-08-30 American Megatrends, Inc. Methods, systems and computer readable storage devices for presenting screen content
US9497187B2 (en) 2014-12-13 2016-11-15 International Business Machines Corporation Controlling a discovery component, within a virtual environment, that sends authenticated data to a discovery engine outside the virtual environment
US9563454B2 (en) * 2015-02-03 2017-02-07 International Business Machines Corporation Using a mobile device to transfer virtual machine between computers while preserving session
KR102295960B1 (ko) * 2015-02-10 2021-09-01 한국전자통신연구원 가상화 기반의 보안 서비스 제공 장치 및 제공 방법
CN104699570B (zh) * 2015-03-30 2017-11-17 福州大学 一种虚拟桌面与物理桌面共用镜像的智能网络流桌面方法
US9146769B1 (en) 2015-04-02 2015-09-29 Shiva Shankar Systems and methods for copying a source machine to a target virtual machine
US11438278B2 (en) * 2015-06-29 2022-09-06 Vmware, Inc. Container-aware application dependency identification
KR101711409B1 (ko) * 2015-09-14 2017-03-03 주식회사 새올정보기술 다양한 os 환경을 기반으로 하는 어플리케이션 가상화 시스템 및 방법
US20170123996A1 (en) * 2015-11-02 2017-05-04 Microsoft Technology Licensing, Llc Direct Mapped Files in Virtual Address-Backed Virtual Machines
US9928062B2 (en) * 2016-03-04 2018-03-27 International Business Machines Corporation ISA-ported container images
KR102019799B1 (ko) * 2016-11-09 2019-09-09 건국대학교 산학협력단 읽기 및 쓰기가 가능한 가상 디스크의 병합 마운팅을 통한 가상 클러스터 구축 방법 및 장치
WO2018216972A1 (ko) * 2017-05-23 2018-11-29 주식회사 엔젠소프트 컨테이너 기술 기반의 시스템 전환 장치 및 방법
KR101974974B1 (ko) * 2017-05-23 2019-05-07 주식회사 엔젠소프트 컨테이너 기술 기반의 시스템 전환 장치 및 방법
US10761869B2 (en) * 2017-06-26 2020-09-01 Wangsu Science & Technology Co., Ltd. Cloud platform construction method and cloud platform storing image files in storage backend cluster according to image file type
KR101967300B1 (ko) * 2017-10-27 2019-04-09 아토리서치(주) 가상머신 이미지 생성 자동화 방법 및 장치
US10430227B2 (en) 2018-01-09 2019-10-01 Microsoft Technology Licensing, Llc Fast instantiation of virtual machines in distributed computing systems
US10664323B2 (en) 2018-03-07 2020-05-26 Microsoft Technology Licensing, Llc Live migration of virtual machines in distributed computing systems
KR20200054040A (ko) 2018-11-09 2020-05-19 주식회사 엔젠소프트 모바일 os 가상화 기반의 보안 제공 장치 및 이를 위한 방법
KR102223141B1 (ko) * 2019-02-12 2021-03-04 성균관대학교산학협력단 컨테이너 환경에서의 스토리지 드라이버의 동작 방법 및 스토리지 드라이버 장치
US10990673B1 (en) * 2019-05-24 2021-04-27 Trend Micro Inc. Protection of antivirus daemon in a computer
CN112783525A (zh) * 2021-01-22 2021-05-11 新华三大数据技术有限公司 一种守护进程升级方法及装置
KR102557385B1 (ko) * 2022-11-29 2023-07-20 쿤텍 주식회사 가상머신 시스템 및 이를 이용한 가상머신 프로비저닝 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752005A (en) * 1996-01-22 1998-05-12 Microtest, Inc. Foreign file system establishing method which uses a native file system virtual device driver
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US6978439B2 (en) * 2002-01-10 2005-12-20 Microsoft Corporation Cross-platform software development with a software development peripheral
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
WO2003088002A2 (en) * 2002-04-11 2003-10-23 Linuxcare, Inc. Managing multiple virtual machines
US7673308B2 (en) * 2002-11-18 2010-03-02 Symantec Corporation Virtual OS computing environment
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
JP4242819B2 (ja) * 2004-10-06 2009-03-25 株式会社日立製作所 オフライン作業可能な端末を有する計算機システム
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US8074214B2 (en) * 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
US20070050770A1 (en) * 2005-08-30 2007-03-01 Geisinger Nile J Method and apparatus for uniformly integrating operating system resources
US20070074191A1 (en) * 2005-08-30 2007-03-29 Geisinger Nile J Software executables having virtual hardware, operating systems, and networks
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8738786B2 (en) * 2006-05-18 2014-05-27 Sanggyu Lee Method for protecting client and server

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102025744A (zh) * 2010-12-20 2011-04-20 北京世纪互联工程技术服务有限公司 一种云计算中虚拟机镜像导入和导出系统
CN103262026A (zh) * 2010-12-31 2013-08-21 Emc公司 虚拟设备部署
CN103262026B (zh) * 2010-12-31 2017-07-11 Emc 公司 虚拟设备部署
CN103294765A (zh) * 2012-03-01 2013-09-11 国际商业机器公司 用于供应和转换虚拟设备的基于策略的方法的方法和系统
CN103294765B (zh) * 2012-03-01 2016-11-02 国际商业机器公司 用于供应和转换虚拟设备的基于策略的方法的方法和系统
US10956321B2 (en) 2014-05-05 2021-03-23 Microsoft Technology Licensing, Llc Secure management of operations on protected virtual machines
CN106462442A (zh) * 2014-07-24 2017-02-22 谷歌公司 加载虚拟机的系统和方法
CN106462442B (zh) * 2014-07-24 2020-04-10 谷歌有限责任公司 加载虚拟机的系统和方法
CN107003866A (zh) * 2014-11-14 2017-08-01 微软技术许可有限责任公司 来自加密模板的加密虚拟机的安全创建
CN107003866B (zh) * 2014-11-14 2020-02-28 微软技术许可有限责任公司 来自加密模板的加密虚拟机的安全创建
CN107919033A (zh) * 2016-10-10 2018-04-17 北京七展国际数字科技有限公司 一种通过融合多媒体、微气候及生物景观的超感官生态体验系统

Also Published As

Publication number Publication date
JP2010522370A (ja) 2010-07-01
EP2137629A4 (en) 2010-12-29
EP2137629A1 (en) 2009-12-30
KR20110098889A (ko) 2011-09-02
WO2008115012A1 (en) 2008-09-25
CN101636722B (zh) 2013-01-30
KR101152227B1 (ko) 2012-06-08
KR20080085780A (ko) 2008-09-24
KR20110099206A (ko) 2011-09-07
US20100107163A1 (en) 2010-04-29
KR101179849B1 (ko) 2012-09-04
KR101179758B1 (ko) 2012-09-04
KR20090018992A (ko) 2009-02-24
KR20120050956A (ko) 2012-05-21

Similar Documents

Publication Publication Date Title
CN101636722B (zh) 可移动的虚拟机映像
EP3117311B1 (en) Method and system for implementing virtual machine images
US7996785B2 (en) Systems and methods for integrating application windows in a virtual machine environment
US7383405B2 (en) Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US8151263B1 (en) Real time cloning of a virtual machine
US9952782B1 (en) Method and system for accessing data between different virtual disk formats in a virtualization environment
US10445122B2 (en) Effective and efficient virtual machine template management for cloud environments
Von Hagen Professional xen virtualization
US10574524B2 (en) Increasing reusability of and reducing storage resources required for virtual machine images
US20060004667A1 (en) Systems and methods for collecting operating system license revenue using an emulated computing environment
US20060010433A1 (en) Systems and methods for providing seamless software compatibility using virtual machines
Dash Getting started with oracle vm virtualbox
US20150020071A1 (en) Accelerated data operations in virtual environments
US9792075B1 (en) Systems and methods for synthesizing virtual hard drives
US20220053001A1 (en) Methods and apparatus for automatic configuration of a containerized computing namespace
Zhang et al. Automatic software deployment using user-level virtualization for cloud-computing
JP2013084235A (ja) ネットワークシステム及びその制御方法
WO2013145434A1 (ja) ネットワークシステム及びその制御方法
US20150026683A1 (en) Data control system for virtual environment
Thiruvathukal et al. Virtualization for computational scientists
Deka et al. Application of virtualization technology in IaaS cloud deployment model
Campbell et al. An introduction to virtualization
Bhat et al. Introduction to Containerization
Carbone et al. Windows Server 2008 Hyper-V Resource Kit
Oppitz et al. From Physical to Virtual Servers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130130

Termination date: 20170320