将基于服务器的桌面虚拟机架构扩展到客户机上的制作方法

文档序号:6592830阅读:187来源:国知局
专利名称:将基于服务器的桌面虚拟机架构扩展到客户机上的制作方法
技术领域
本申请主张2008年2月26日提交的美国临时申请61/031,613的权益,该申请通 过参考全部并入本文。
背景技术
人们已经意识到,计算机虚拟化的好处在于大大增加了计算硬件平台的计算效率 和灵活性。例如,计算机虚拟化允许多个虚拟计算装置(computing machine)运行在一个 通用计算硬件平台上。与物理计算硬件平台类似,虚拟计算装置包括存储介质,比如虚拟硬 盘,虚拟处理器以及与计算环境有关的其它系统元件。例如,虚拟硬盘可以存储操作系统、 数据和用于虚拟机的应用文件。基于服务器的计算允许联网客户端系统(相对于服务器远程设置)访问该服务 器上的计算资源。例如,客户端可以使用远程桌面协议(比如RDP或VNC)远程访问桌面 并将用户输入(比如键盘或鼠标输入)传送到该远程系统。基于服务器的计算有助于计 算资源的集中管理。然而,一个缺点是没有最好的计算体验。例如,图形密集型(graphic intensive)应用和本地设备(比如USB器件、打印机等)不能按照期望操作。而且,用户必 须与该网络保持连接以能够访问该服务器上存储的用户桌面。作为基于服务器的计算的替代方案,客户端计算允许用户远离企业网络并处于脱 机方式,即,不连接到网络或因特网。然而,从企业管理的立场来看,当遇到比如更新操作系 统和应用、增强安全性、符合许可、锁定信息、强制遵循各种策略和数据备份这类任务时,客 户端计算带来不希望的低效。

发明内容
通过将基于服务器的桌面虚拟机架构扩展到客户机可以解决上述挑战。在一个实 施方式中,从客户端系统远程访问用户桌面。该远程桌面是由在服务器系统上运行的第一 虚拟机产生的,该服务器系统可包含一个或多个服务器计算机。在该第一虚拟机的执行过 程中,对相应磁盘的写被重定向到增量磁盘文件或重做日志。在该客户端系统上创建该虚 拟磁盘的拷贝。当用户决定“登出”他或她的桌面时,该第一虚拟机被终止(如果它正在运 行的话)而在该客户端系统上创建该增量磁盘的拷贝。一旦该增量磁盘在该客户端系统上 存在,可以使用该虚拟磁盘和增量磁盘在该客户端系统上启动第二虚拟机以提供对该客户 端系统处的用户桌面的本地访问。这使得用户能够在此时访问他或她的桌面而不必连接到 网络上。


图1显示了提供到中心管理的用户桌面的访问的简单的示例性虚拟桌面构造 (VDI)系统。图2显示了一种示例性的虚拟化计算机系统的逻辑表示。
图3A、3B、3C和3D显示了用实例方式描绘图1的虚拟桌面构造的操作的方框图。图4显示了显示用于在有自动后台同步的情况下将用户连接到远程桌面的示例 性程序的流程图。图5显示了用实例方式表示用于实现桌面登出(check-out)程序的方法的流程 图。
具体实施例方式图1显示了提供对中心管理的用户桌面的访问的简单的示例性虚拟桌面构造 (VDI)系统10。术语“桌面”指的是一种人机接口环境,用户可以通过该人机接口环境启动、 与其交互并管理该用户的应用、设置和数据。传统上,桌面由操作系统呈现在视频显示器 上,而用户使用鼠标和键盘与该桌面进行交互。所有的应用、文件等等可以显示在该桌面上 而用户输入通常由用户可以在该显示器上看到的应用接收。人们还知道术语“桌面”被用 于指示可以被放置在用户的书桌上或书桌附近的物理计算机系统或“物理桌面”,以与“膝 上型电脑”或“掌上式电脑”相区别,但是本文中使用的术语“桌面”本身唯一指示上述人机 接口环境,而不是物理计算机系统。使用计算机虚拟化,用户的计算机系统,包括操作系统 设置、应用和应用设置,以及数据可以作为虚拟机从一个物理计算机传送或拷贝到另一个 物理计算机。当用这种方式拷贝虚拟机时,用户可以从包含原始虚拟机的物理计算机系统 或包含该拷贝的物理计算机系统访问他或她的“桌面”。因此该“桌面”不再束缚于(tied to) 一个特定的物理计算机系统。VDI系统10包括VDI服务器系统11,VDI服务器系统11与若干个VDI客户端系 统12、14和16通过网络13数据通信。网络13可以是任何架构,比如局域网(LAN),或可 私有或公开访问的广域网,比如因特网。应该意识到,图1显示了一种典型的VDI网络服务 器系统11的简化表示,该VDI网络服务器系统11可包括其它组件比如防火墙、连接代理 (connection broker)和负载平衡器,以及后端存储网络、数据库服务器等。每个客户端系 统12、14、16可包括用户界面40(只显示了一个),通过该用户界面40用户可以与他或她的 桌面交互。图2显示了一种示例性的虚拟化计算机系统20的逻辑表示。如同下面会更详细 地解释的,VDI服务器系统11和VDI客户端系统12、14和16可包括物理硬件平台22、运 行在硬件平台22上的虚拟化软件80以及通过虚拟化软件80运行在硬件平台22上的一个 或多个虚拟机70。因此虚拟化软件80在逻辑上介于硬件平台22的物理硬件和在虚拟机 70 “内”运行的来宾(guest)系统软件72之间。硬件平台22可以是一种具有一个或多个系统总线28的通用计算系统,该系统总 线28使得各种硬件平台组件彼此数据通信。例如,使用系统总线(一个或多个)28使一个 或多个处理器24与存储器(memory) 26数据通信。存储器26可包含一种多个存储器的系 统,其中存储器包括只读存储器(ROM)、随机存取存储器(RAM)、缓冲存储器和各种寄存器 存储器。非易失性数据存储器30包括用于存储软件或数据的一个或多个磁盘驱动器或其 它机器可读介质或海量数据存储系统。存储器26和/或非易失性数据存储器30可以存储 虚拟化软件80和在虚拟机70中运行的来宾系统软件72。可以提供用户界面40,该用户界 面40包括键盘控制器(未示)、鼠标控制器(未示)、视频控制器(未示)和音频控制器(未示),其中每一个都连接到相应的用户装置(未示)。对于服务器计算机系统通常来说,对 于VDI服务器系统11 (图1)用户界面和装置可以被或不被包括或连接到硬件平台22。相 反,用户交互可以远程进行,如同数据中心管理领域通常知道的那样。网络接口 50使得数 据通信能够通过网络,比如网络13(图1),进行。网络接口 50可以协助使用网络协议(比 如TCP/IP)进行的通信。虚拟化软件80是计算机虚拟化领域中熟知的。虚拟化软件80执行系统资源管理 和虚拟机仿真。虚拟机仿真可以由虚拟机监控(VMM)组件执行。在典型实现中,每个虚拟机 70(只显示了一个)具有相应的VMM实例(instance)。根据实现,虚拟化软件80可以是非 寄生的(imhosted)或寄生的(hosted)。非寄生的虚拟化软件通常依赖专门的虚拟化内核 以管理系统资源,而寄生的虚拟化软件依赖商品操作系统_“主机操作系统”-比如Windows 或Linux来管理系统资源。在寄生的虚拟化系统中,该主机操作系统可以被认为是虚拟化 软件80的一部分。虚拟机70在概念上包含虚拟硬件装置(如虚拟化软件80所仿真的)的状态和来 宾系统软件72的内容。如图2中所示,来宾系统软件72包括来宾操作系统74和来宾应用 78。来宾操作系统74可以是一种商品操作系统,比如Windows或GNU/Linux。虚拟化软件 80负责管理到达和来自虚拟机70的输入和输出,包括将用户界面输出导向本地用户接口 40或远程桌面客户端。图3A和3B显示了可扩展的VDI系统100的简化框图,该可扩展的VDI系统100 具有对用户桌面的远程(或中心化)访问和本地访问,允许单个用户远程或本地访问他或 她的桌面。可扩展的VDI系统100包括服务器系统110和客户端系统120。VM 118在服务 器系统110上执行并可以由用户经由客户端系统120访问。VM 118包含上面参考图2所 述的所有的用户应用和数据,并且使用虚拟化软件117执行。在一个实施方式中,虚拟化软 件117包含非寄生虚拟化软件。另外,尽管图中显示只有一个VM 118在服务器110中在执 行,然而任意数量的VM可以在执行,每个与一个或多个相应用户有关。虚拟化软件117将用户I/O导向远程桌面主机115。远程桌面主机115向远程桌 面客户端125发送用户的图形和声音。类似地,远程桌面客户端125向远程桌面主机115 发送用户的输入,例如键盘和鼠标输入。远程桌面客户端125通过用户界面124向该用户 呈现该用户的桌面,用户界面124可包含各种用户I/O装置。除了远程桌面客户端125外,客户端系统120还包括虚拟机128以及虚拟化软件 127。虚拟机128可以访问虚拟磁盘132,该虚拟磁盘132是作为一个或多个文件残存在物 理磁盘130上的磁盘映像,其中物理磁盘130连接到客户端系统120。虚拟磁盘132由虚 拟化软件127维持。在一个实施方式中,虚拟化软件127包含寄生的虚拟化软件,如同前面 所述的,该寄生的虚拟化软件与该客户端的主机操作系统协同运行。虚拟磁盘132在开始 时可以是从虚拟磁盘142拷贝的(或者反过来)从而在一个特定状态下,虚拟磁盘132和 142是完全相同的,或者在逻辑上等同而并非完全相同的。在逻辑上等同的意思是每个虚拟 磁盘包含相同的文件系统和数据文件,它们在逻辑上是在完全相同的文件系统架构中相关 的,尽管实际的磁盘扇区可能不是以相同方式排列。两个完全相同的磁盘也是逻辑上等同 的。服务器系统110包括物理磁盘140或与物理磁盘140通信,该物理磁盘140是服务器系统110能够访问的。物理磁盘40 (其被虚拟化软件117用于存储用户的虚拟磁盘) 是用于相应虚拟机的磁盘映像文件。当该用户在VM 118上工作时,它可以对虚拟磁盘142 进行写操作(issue writes),虚拟磁盘142作为一个或多个文件存在于物理磁盘140上。 然而,虚拟化软件117可以被配置为将写操作重定向到增量磁盘144而不是将改变直接写 到虚拟磁盘142。增量磁盘144可包含重做日志(redo log)或其它的“差别”文件。实质 上,增量磁盘144对虚拟磁盘142维持一个修改列表而实际上不对虚拟磁盘142进行任何 改变。增量磁盘是虚拟化领域熟知的,并且在例如美国专利7,356,679中更详细地描述过。 当虚拟机118进行读操作时,虚拟化软件117访问增量磁盘144以确定数据是否在那里,如 果不是的话,它就访问虚拟磁盘142,增量磁盘144的父磁盘映像。然后虚拟化软件117将 该数据输送到虚拟机118,就像发生过物理装置的简单的磁盘读取一样。当用户可能决定“登出”他的虚拟机从而它可以被离线(即,在不访问服务器系统 110的情况下)访问时,他或她可以向管理软件(未示,下面会更详细地描述)这种期望。 在这时候,虚拟机118被“关机(powered off) ”而增量磁盘144被拷贝到该用户的物理磁 盘130以在该用户的物理磁盘130上创建增量磁盘134。一旦这种下载完成并被验证,形成 增量磁盘144的写操作被合并到虚拟磁盘142且该增量磁盘134以类似方式被合并到虚拟 磁盘132,从而虚拟磁盘132和虚拟磁盘142被维持在逻辑上等同的状态,但是现在被更新 以反映用户留下的最新的状态。在一个实施方式中,该用户可以简单的挂起(suspend)而不是关掉虚拟机118,无 论在哪种情况下,VM状态136也被从虚拟化软件117下载下来,其维持了虚拟机118的状态。图3B显示了可扩展的VDI系统100,其中该用户正通过本地运行虚拟机128离线 访问他或她的桌面。在这种情况下,虚拟化软件127在客户端系统120上运行虚拟机128 而不使用远程桌面客户端125。因此,该用户可以从任何网络断开并离线工作。虚拟化软 件127不直接修改虚拟磁盘132。相反,它创建增量磁盘134,该增量磁盘134包含如同前 面参考图3A中的增量磁盘144所述的该用户对虚拟磁盘132执行的所有改变。在某一点,该用户可要求或被要求将他或她的桌面“登入(check in)”到服务器 系统110中。此时,虚拟机128被“关机(power down) ”而虚拟化软件127连接到服务器 110并将增量磁盘134拷贝到服务器的数据存储器140以创建增量磁盘144。在一个实施方 式中,该虚拟机可以被挂起而不是关机,而VM状态146被上传到服务器系统10。在拷贝增 量磁盘或该增量磁盘134加上状态146后,增量磁盘134、144分别被合并到虚拟磁盘132、 142。“合并”的意思是每一个增量磁盘中包含的磁盘写操作分别被写到虚拟磁盘文件132、 142。在这种登入程序后,每一个虚拟磁盘132、142是完全相同或者至少是在逻辑上等同的 从而用户可以使用虚拟机118从他或她上次停止使用虚拟机128的地方开始计算。正如现在将会更详细地描述的,可以对上面描述的登入、登出功能的基本操作做 出各种改进和优化。图3C显示了可扩展的VDI系统100的更详细的视图。用户的桌面是由残留在连 接到服务器系统110的物理磁盘140上的一个或多个文件141限定的。文件141包括用于 策略(policies) 149、虚拟磁盘142、增量磁盘144和VM状态146的文件。策略可以使用数 据库和/或通过作为元数据关联或嵌入在虚拟磁盘142中的配置文件存储。可以提供额外的桌面文件148以限定可以由相应的用户或用户组访问的额外的桌面。如图3C所示,客户端系统120包括VDI客户端122,VDI客户端122与服务器系统 110上的管理服务器112通信。管理服务器112认证客户端120的用户,处理访问用户桌 面的请求并实施策略149。策略149可限定特定的桌面对谁以及在什么情况下是可以获得 的。例如,策略149可以是针对发出该请求的用户的,尽管全局策略、基于用户位置或组或 所请求的服务的策略也可能是适用(in place)的。在一个实施方式中,管理服务器112是安装在单独的物理计算机系统上的服务器 应用程序,其通过网络13与客户端系统120及服务器系统110的其他组件通信,如同上面 所述,该服务器系统110可包含多个服务器装置。在本实施例中,当用户与客户端系统120 上的VDI客户端125交互时,对与该用户有关的桌面的请求通过网络13被发送到服务器 110。如上所述,服务器系统110可包括多个VM(只显示了一个),其中每一个对应于一个或 多个用户。管理服务器112接收用户的请求,认证该用户和/或该请求,根据需要启动或恢 复(resume) VM 118,并将VDI客户端125与远程桌面服务器115连接。VDI客户端122包括表示层124,表示层124提供了允许用户与VDI客户端122 (并 因此与服务器系统110)交互的图形用户界面。在一个实施方式中,VDI客户端122在因特 网浏览器中执行或协同因特网浏览器执行。在某一点,如同上面参考3A和3B所述的,该用户可能希望“登入”或“登出”他或 她的桌面。在这种情况下,该虚拟磁盘或增量磁盘被从客户端系统120拷贝到服务器系统 110或反过来(根据该用户是“登入”还是“登出”该桌面)。如果该用户是登出该桌面到 一个没有该虚拟磁盘的本地拷贝的计算机,那么增量磁盘144可以与服务器系统110上的 虚拟磁盘142和被拷贝到该用户的本地客户端系统120的整个虚拟磁盘合并。因为该虚拟 磁盘可能是非常大的,所以由于很大的数据量和可能有限的带宽,这种初始的登出可能是 非常耗时的。根据用户的活动,甚至在后续的登入和登出程序过程中传输的增量磁盘也可 能变得相当大,例如,可能安装了一个新应用或者现有应用或操作系统组件可能大规模升 级过或打过补丁。在一个实施方式中,登入和登出用户桌面所需的时间可以通过在后台(也就是 说,当用户与虚拟机交互时,而不打扰用户的活动或该虚拟机的操作)在客户端系统120和 服务器系统110之间传输数据而减少。这可以被称为后台同步或后台数据传输。后台数据 传输可以响应客户端系统120的用户自动进行,其中该用户是被授权访问VM 118的。用这 种方式,虚拟磁盘142的准确和更新后的表现可以被传送到客户端系统120并从客户端系 统120传输而不会引人注意地使用户从他的计算体验中分散注意力。当用户从新的客户端 系统110远程开始工作时,虚拟磁盘142可以在后台传输直到获得了作为客户端系统120 上的虚拟磁盘132的完整的拷贝。然后,对虚拟磁盘142的改变在后台被传送到客户端系 统120以开始建造增量磁盘132。当用户决定登出他或她的桌面时,对虚拟磁盘142的至 少大部分改变已经被传送到了 120。同样地,当用户决定登入他或她的桌面时,对虚拟磁盘 132的至少大部分改变已经被传送到了服务器系统110。当用户决定注销他们与他们的桌面的会话(session)时,增量磁盘144和增量磁 盘134之间任何的差别会通过传输最后的改变而解决。在完成客户端系统120和服务器系 统110之间的通信后,增量磁盘144中表示的变化可以被写到虚拟磁盘142。在一个实施方式中,这在VM 118的操作被终止以后会发生以确保VM 118的稳定状态,同时更新虚拟磁盘 142。VM 118的操作的终止可包括关闭VM118或挂起VM 118的运转。关闭VM通常涉及执 行该VM中运行的来宾操作系统的关机程序。在这种程序中,处理被结束而当前残留在存储 器中的任何瞬态的或缓存的数据被写到磁盘。当VM被关机时存在很少或没有状态信息,然 而挂起操作涉及停止执行并通过写入VM状态文件146而保留该虚拟机的状态。一旦增量磁盘144与虚拟磁盘142合并,增量磁盘144可以被擦除、标记为删除、 要么被识别为不再有效。使得虚拟磁盘132与虚拟磁盘142和对任一个虚拟磁盘进行的改 变一致被称为同步。当VM128的本地执行以与上面参考终止上述虚拟机118的操作描述的 同样的方式终止后,该用户的虚拟机可以以这种方式同步。管理服务器112可建立或实施一个策略,该策略阻止虚拟机118的操作直到可以 确定没有对应于虚拟机118的虚拟机128没有与虚拟机118同步。也就是说,如果该用户 已经离线与他或她的桌面交互,由此导致增量磁盘134的创建的话,那么管理服务器112可 阻止VM 118的使用直到增量磁盘134所表示的变化被传送到服务器系统110并与虚拟磁 盘142合并。维持对应于该用户的桌面的信息的同步可包括实现对该用户桌面的策略管理。策 略149的实施例包括有关是否以及在什么条件下用户的桌面的拷贝可以被传送到客户端 系统120、登出该桌面多久以后可以再登入回服务器系统110、对虚拟机128/118的使用的 限制等等。虚拟化软件127和/或VDI客户端122可以被配置为实施所建立的策略,例如 使用加密以阻止对存储在虚拟磁盘132上的数据以及相关的增量磁盘的未授权访问。在一个实施方式中,当用户启动VDI客户端122时,可以向他或她呈现请求认证信 息的登录屏幕。然后VDI客户端将认证信息传送到服务器系统110,例如,传送到远程桌面 服务器112。远程桌面服务器确认该用户的认证并向管理服务器112发送对应于该用户的 认证信息的现有桌面的请求。管理服务器112从远程桌面服务器115接收请求并将提供的 用户标识符与映射表114进行比较,映射表114就爱功能该用户标识符关联于服务器系统 110上的一个或多个虚拟机。在识别与该用户标识符有关的(一个或多个)虚拟机时,管理 服务器112提供连接信息,或者协助VDI客户端110和远程桌面服务器115之间的连接以 使远程用户访问相应的桌面。在另一个实施方式中,被传送到服务器系统110的用户请求可包括本地桌面状态 信息。本地状态信息还可以响应来自远程桌面服务器115的查询而从该请求单独提供。本 地状态信息可包括帮助鉴别该用户的本地客户端系统120和服务器系统110的状态之间的 差别的信息。例如,本地状态信息可包括该用户是不是已经离线访问他或她的桌面,导致增 量磁盘134的创建。如果存在增量磁盘134的话,那么管理服务器112在允许访问虚拟机 118之前会在后台开始传送该差别。如果该传送时间被规划为非常冗长的话,那么用户可 以在后台同步过程中立即连接到本地VM 128。如果没有增量磁盘134,但是存在增量磁盘 144的话,那么可以允许到VM 118的连接,同时伴随相应的自动后台同步。在一个实施方式中,后台数据传送可以响应周期性查询而进行,当客户端系统120 访问服务器系统110时该周期性查询自动进行。在另一个实施方式中,后台数据传送可以 仅仅应客户端系统120的用户的请求而进行。例如,该用户可以请求本地客户端系统110 与服务器系统110在考虑到离线的情况下同步。对于很少离线的用户,这个特性的使用可能显著减少网络资源上的负载。策略149可要求,允许(即,让用户决定)或阻止连续的、 周期性的或由用户启动的同步。在用图3D的实例表示的一个实施方式中,用户数据和系统数据被保持在单独的 虚拟驱动器中。在这种实施方式中,要被传送的数据量可以通过只将用户数据写到增量用 户数据磁盘135或145而进一步减少(取决于该用户是本地还是远程访问他或她的桌面)。 例如,用于用户在服务器系统110上的桌面的信息可以被分类为存储在系统盘152(其可以 作为物理磁盘150上的磁盘映像文件而存在)中的系统信息,以及存储在虚拟用户数据磁 盘(UDD) 143中的用户数据。同样地,对这两个磁盘的改变可以被存储在两个单独的增量磁 盘中增量系统磁盘144和增量UDD磁盘145。在一个实施方式中,系统信息包括应用信息78和来宾系统软件72(图2)而用 户数据包括文档、设置、针对用户的属性等。大部分操作系统,比如Windows、0SX: 和 Gnu-Linux,包括用于在分离的磁盘上保持系统和用户数据的工具(facility)。通过使用虚 拟化以为系统数据和用户数据两者制造单独的增量映像,管理服务器112可以被配置为将 数据的传送限制为只是存储在虚拟UDD 143上的用户信息。在这种情况下,对该系统所做 的任何改变(并因此被写入到系统磁盘中的)将会被丢弃而系统磁盘152会因此被返回到 具有该用户的桌面的每个登入和登出的已知有效状态,因为那个信息不被传送。而且,在客 户端系统112和服务器系统110之间传送的信息的量可以被减少为只是用户数据。在一个实施方式中,对系统磁盘152的改变(在该虚拟机的操作过程中被保持在 单独的增量系统磁盘144中)可以经受对该用户适用的任何策略。也就是说,它们可以被 丢弃或合并回包含系统数据、操作系统和应用的该虚拟磁盘上。如果增量系统磁盘144被 丢弃,那么系统磁盘152可以被认为是“永久系统磁盘”,因为无论在任何特定的用户会话 过程中该用户对该系统做了什么改变它都会保持在一个已知的良好状态。对系统磁盘的修改可以被封装在补丁文件154中,例如,当操作系统或应用被更 新或制造商释出新版本时。这些改变可以通过创建补丁文件154而应用到系统磁盘152,其 中该补丁文件154限定了当前系统磁盘和更新后的系统磁盘之间的差别。该补丁文件可以 被应用到系统磁盘152以创建打过补丁的系统磁盘,并且还被传输到客户端系统120,以高 效地对该客户端系统上的系统磁盘132打补丁。在可以与本文描述的其它实施方式共存的另一个实施方式中,文件系统信息被 分析以鉴别与被删除了的文件有关的扇区。然后在传送该增量磁盘映像时这些扇区被省 略以进一步减少被传送的数据量。该分析和省略可以发生在增量磁盘传送的时候,或者 可以作为一个单独的步骤执行,其中在该单独的步骤中该增量磁盘在传送之前被预处理 (pre-process)。在这种情况下,该虚拟磁盘的拷贝可能不完全相同,但是仍然是在逻辑上 等同的。图4显示了流程图200,流程图200显示了用于在有自动后台同步的情况下将用户 连接到远程桌面的示例性程序。该程序开始于开始框202并流向操作204,在操作204中, 服务器系统120(图3A-3D)接收到访问对应于客户端系统120的该用户的认证信息的桌 面的请求。对接收到这种请求做出响应,该程序进行到操作206,在操作206中服务器系统 110确认用户的认证。如果该认证是无效的,那么该程序进行到操作208,在操作208中,访 问被拒绝而该程序停止。如果认证有效,那么该程序进行到操作210,在操作210中该用户被连接到与该用户标识符对应的桌面。在将该用户连接到在该服务器系统上执行的该虚拟 机上的他或她的桌面后,该程序进行到操作212,在操作212中服务器系统110确定客户端 系统120是否具有对应于该用户桌面的虚拟磁盘的正确拷贝。如果不是的话,那么该程序 进行到操作214,在操作214中虚拟磁盘142在后台(也就是说,在用户访问并与该服务器 系统上的虚拟机118交互的同时)被传送到客户端系统120。这个操作继续,直到客户端系 统120已经具有了用于相应桌面的虚拟磁盘的完整而正确的拷贝。如果,在操作212中,确定该客户端系统具有该虚拟磁盘的正确拷贝,那么该程序 进行到操作216。如同前面提到的,在用户与该服务器系统上的该虚拟机的交互过程中,对 该虚拟磁盘的改变被写到增量磁盘。在操作216中,服务器系统110确定该客户端系统是否 有该增量磁盘映像的最新(up-to-date)拷贝。如果没有的话,那么该程序进行到操作218, 在操作218中该服务器系统上的该增量磁盘被拷贝到该用户的客户端系统。只要该用户与 该虚拟机交互并且因此对该虚拟磁盘产生了改变,这个程序就会发生。在某一点,该用户可 以注销、关机或挂起正在该服务器系统上执行的虚拟机,在那一点,任何剩余的改变都被拷 贝到该客户端系统。然后该程序终止于完成框220。在一个实施方式中,后台同步可以在客户端系统120和服务器系统110之间的通 信会话过程中的任何时间启动。该后台同步可以自动发生(例如,根据由管理员设置的策 略)或根据用户的请求发生。例如,该请求或策略可以指定该用户的客户端系统定期更新。在这种情况下,服 务器系统110确定从最近的更新以后是否已经过去了特定长的时间。除了严格的时间测 量之外,确定更新时间的其它方式当然也是可以实现的,例如,时钟可以测量过去的时间的 量,或者该系统可以等待直到该用户空闲,即,暂时不与该系统交互。如果该客户端系统不 是最新的,并且根据服务器系统110中虚拟磁盘的当前状态,即,是否存在增量磁盘144(图 3A-3D),系统110,与客户端系统120协同,开始传送虚拟磁盘142和/或向虚拟磁盘142传 送包含修改的增量磁盘144。在一个实施方式中,随着VM 118的执行,对增量磁盘144的新的改变被附加到增 量磁盘144,并定期传送到用户系统120。服务器系统110记住多少增量磁盘已经被传送到 了客户端系统120,从而在每个更新间隔只有附加的部分被传输。在另一个实施方式中,在每个更新间隔当前的增量磁盘被关闭而新的增量磁盘被 创建。当前的增量磁盘(其包含对以前的增量磁盘中包含的信息的修改)被传输而新的改 变被写到该新的增量磁盘。用这种方式,一系列的连锁(chained)快照被创建并被传送到 客户端系统120,然后客户端系统120重新组合或将它们合并到单一的增量磁盘或者直接 合并到该虚拟磁盘。在一个实施方式中,每个增量磁盘在传送到客户端系统110之前被扫 描和/或清除掉恶意软件(malware),比如病毒。该扫描可以以非打扰性的方式在后台执 行。图5显示了流程图250,流程图250用实例表示了用于实现桌面登出程序的方法。 该程序开始于开始框252并且继续到操作254,在操作254中该服务器系统认证请求访问 的用户。根据具体实现,在这时候该用户可以或可以不立即连接到他或她的远程桌面。然 后该程序进行到操作256,在操作256中服务器系统接收由用户发出的登出该桌面的请求。 然后该程序进行到操作258,在操作258中该服务器系统确定该策略和用户权限是否允许该用户的桌面对该用户的登出。如果不是的话,该程序进行到操作260,在操作260中一个 消息被传送到该客户端系统,其中该消息表明他或她有在当前时间登出他或她的桌面的特 权。然后该程序终止于完成框274。如果,在操作258中,确定该用户的确具有登出该桌面 的权限,那么该程序进行到操作262以确定该用户的桌面是否已经登出,例如,登出到不同 的客户端系统,以及是否因为又登入回来所以看上去没有。用户桌面状态可以被保持在例 如用户数据库或包含该虚拟磁盘映像的该文件中的或该文件的状态字段、元数据字段或子 部分。如果该用户的桌面当前是登出的,那么该程序进行到操作260而服务器系统120向 客户端系统12发送登出访问拒绝消息。这确保了每次只有一个该用户的拷贝可以被登出。 在一个实施方式中,当桌面在“登出”状态时该用户被阻止远程访问他或她的桌面,在“登 出”状态时远程访问他或她的桌面可能导致该虚拟机的“分叉”以及同步的丧失。如果在操 作262中确定该桌面当前已经不是登出的,那么该程序进行到操作264,在操作264中该用 户的虚拟机如果运行的话就被终止。终止该虚拟机可以包括使其关机或者将该虚拟机挂起 并将该状态保存到磁盘中。然后该程序进行到操作266,在操作266中该客户端系统被查询以确定它是否有 该系统磁盘的当前拷贝以及该服务器系统上可能存在的任何增量磁盘。如果没有的话,那 么该程序进行到操作268,在操作268中该虚拟磁盘和增量映像根据需要被拷贝或更新,然 后该程序进行到操作270。如果,在操作266中,确定该客户端系统已经有了该虚拟磁盘的 当前拷贝或任何增量磁盘,那么该程序直接进行到操作270。在操作270中,该用户或元数据被更新以反映该用户的桌面的现在“登出”的状 态。然后该程序进行到操作272,在操作272中该用户被允许通过在本地客户端系统上运行 该本地虚拟机而访问他或她的桌面。然后该程序终止于完成框274。在一个实施方式中,用户可以被准许远程访问他或她的桌面,即便它登出到了客 户端系统。尽管该桌面可以是在登出状态,然而这不妨碍客户端系统120的用户利用服务 器系统110的资源远程访问他或她的桌面。例如,该客户端系统120可能经历系统故障, 比如硬盘驱动器失灵或被病毒/恶意软件感染。在这种情况下,该用户可能选择丢弃本地 虚拟机对服务器系统110上相应的虚拟机的访问,尽管还没有将该桌面登入到该服务器系 统。替代地,在理解对该服务器系统的任何改变都会丢失的情况下该用户可以被允许访问 该服务器系统上的桌面。例如,如果一个用户不能访问他们的客户端系统,即,他们远离他 们的计算机但是需要访问他们的桌面,例如,为了读取文件爱你或访问电子邮件或企业内 部站点,他们仍将能够远程访问他们的桌面,然而是旧版本的,并且不存在任何最近保存的 数据。在另一个改进中,该系统可以自动地(或应用户请求)对包含在数据存储器 140(即,增量磁盘144或145(图3A-3D))上的信息执行病毒/恶意软件扫描。病毒/恶 意软件扫描的结果可以记录在系统上和/或提供到客户端系统120或存储在结果文件(未 示)中。类似地,客户端系统120的用户可以通过在数据存储器140上产生本地增量磁盘 的拷贝而使用服务器系统110执行本地增量磁盘134的病毒/恶意软件扫描。在病毒/恶 意软件扫描完成后,该本地增量磁盘的拷贝可以被删除,或者合并到虚拟磁盘142中。此处描述的各种实施方式使用了各种涉及在存储计算机系统中的数据的由计算 机实现的操作。例如,这些操作可以请求对物理量进行物理操作,通常而非必然,这些量会采用电或磁信号的形式,其中它们或它们的表现方式能够被存储、传送、结合、比较或者以 其它方式被操作。进一步,这种操作通常用术语指示,比如产生、识别、确定或比较。此处所 述的形成本发明的一个或多个实施方式的一部分的任何操作可以是有用的机器操作。另 外,本发明的一个或多个实施方式还涉及用于执行这些操作的器件或装置。该装置可以是 为特定需要的目的特别建造的,或者它可以是由存储在该计算机中的计算机程序选择性激 活或者配置的。特别是,可以使用写入了与本文的教导相一致的计算机程序的各种通用机 械,或者更方便的是建造一台更专门为执行所需操作而建造的装置。此处所述的各种实施方式可以用其它计算机系统配置实现,包括手持装置、微处 理机系统、基于微处理器的或可编程的消费电子产品、微型计算机、大型计算机等等。本发明的一个或多个实施方式可以被实现为嵌入一个或多个计算机可读介质中 的一个或多个计算机程序或实现为一个或多个计算机程序模块。术语计算机可读介质指的 是可以储存数据的任何数据存储系统,该数据以后被输入到计算机系统中。计算机可读介 质可以是基于任何现有的或后来研发出来的用于以使计算机程序能够被计算机读取的方 式包含该计算机程序的技术。计算机可读介质的实施例包括硬盘驱动器、网络附属存储器 (NAS)、只读存储器、随机存取存储器(例如,闪存存储器设备)、CD (光盘)CD-ROM、CD-R或 CD-RW、DVD (数字多功能磁盘)、磁带和其它光学和非光学数据存储器系统。该计算机可读 介质还可以分布在网络耦合的计算机系统上从而该计算机可读代码可以分布式存储和执 行。尽管为了清楚理解本发明已经相当详细地描述了本发明的一个或多个实施方式, 然而显然,可以在权利要求书的范围内进行一些改变和修改。相应地,所述实施方式应当被 认为是说明性的而非限制性的,权利要求书的范围不被限制于此处给出的细节,而是可以 在权利要求书的范围和等同内进行修改。在各权利要求书,各元件和/或步骤不暗示任何 特定的操作顺序,除非在该权利要求中明确陈述。另外,尽管所述虚拟化方法通常假定虚拟机呈现与特定硬件系统相协调的界面, 然而本领域的普通技术人员将会意识到,所述方法可以结合不直接对应于任何特定硬件系 统的虚拟化来使用。可以设想符合各种实施方式的虚拟化系统,实现为寄生实施方式、非寄 生实施方式或趋向于在这两者之间的模糊区别地带的。而且,各种虚拟化操作可以全部或 部分以硬件实现。例如,一种硬件实现方式可以使用查找表作为对安全的非磁盘数据的存 储器访问请求的修改。许多变形、修改、补充和改进是可能的,无论虚拟化程度如何。因此该虚拟化软件 可包括执行虚拟化功能的主机、控制台或来宾操作系统。此处作为单一实例描述的各元件、 操作或架构可以提供多种实例。最终,各种元件、操作和数据存储间的界限在一定程度上是 随意的,而在具体说明性配置的背景下描绘了特定的操作。可以设想功能的其它分配方式, 均落入本发明的范围。通常,在示例性配置中作为独立元件呈现的架构和功能可以作为结 合在一起的架构或元件而实现。类似地,作为单一元件呈现的架构和功能可以作为独立元 件实现。这些以及其它变形、修改、补充和改进可以落入所附权利要求的范围。
权利要求
一种将基于服务器的桌面虚拟机架构扩展到客户机的方法,所述方法包括通过通信网络远程访问用户桌面,该远程访问包括在客户端系统和服务器系统之间发送和接收用户输入/输出,该服务器系统运行提供该用户桌面的虚拟机的服务器实例,该虚拟机的该服务器实例通过虚拟化软件在与数据存储系统通信的物理计算机系统上执行;虚拟化软件将来自该虚拟机的该服务器实例的磁盘读请求导向虚拟磁盘,该虚拟磁盘包含容纳于该数据存储系统上的一个或多个文件中的虚拟磁盘映像,该虚拟化软件将来自该虚拟机的该服务器实例的磁盘写请求导向增量磁盘,该增量磁盘包含对该虚拟磁盘的修改,该客户端系统具有远程桌面客户端以接收该用户输入/输出并将该用户输入/输出发送到该客户端系统的用户界面;在该客户端系统上创建该虚拟磁盘的本地拷贝;将来自该客户端系统的登出请求发送到该服务器系统以在本地访问该用户桌面;如果该虚拟机的该服务器实例当前正在执行的话,终止该虚拟机的该服务器实例;在该客户端系统上创建该增量磁盘的拷贝;以及使用该客户端系统上的虚拟化软件执行该客户端系统上的该虚拟机的客户端实例以将来自该虚拟机的该客户端实例的磁盘读请求导向至少该虚拟磁盘的该本地拷贝并将来自该虚拟机的该客户端实例的用户输入/输出导向该客户端系统的该用户界面。
2.根据权利要求1所述的方法,其中该创建该虚拟磁盘的该本地拷贝是在该虚拟机的 该服务器实例运行的时候执行的。
3.根据权利要求1所述的方法,进一步包括,在该虚拟机的该服务器实例运行的时候, 在该客户端系统接收对存储在该服务器系统上的该增量磁盘中的该虚拟磁盘的修改。
4.根据权利要求1所述的方法,进一步包括在执行该虚拟机的该客户端实例之前将该 增量磁盘的该拷贝与该虚拟磁盘的该本地拷贝合并。
5.根据权利要求1所述的方法,进一步包括将来自该虚拟机的该客户端实例的磁盘写导向本地增量磁盘; 将来自该客户端系统的登入请求发送到该服务器系统以远程访问该用户桌面; 如果该虚拟机的该客户端实例正在运行的话,终止该虚拟机的该客户端实例; 将该本地增量磁盘的拷贝发送到该服务器系统;以及 远程访问该虚拟机的该服务器实例。
6.根据权利要求5所述的方法,进一步包括,在该服务器系统上,在将该本地增量磁盘 的该拷贝发送到该服务器系统以后,在启动该虚拟机的该服务器实例之前,将该增量磁盘 和该本地增量磁盘与该虚拟机合并。
7.根据权利要求5所述的方法,进一步包括,在该虚拟机的该客户端实例的执行开始 之后并在将该本地增量磁盘的该拷贝发送到该服务器系统之前,阻止对该虚拟机的该服务 器实例的访问。
8.根据权利要求1所述的方法,进一步包括,在该虚拟机的该服务器实例的执行过程 中,定期创建额外的增量磁盘并将该额外的增量磁盘发送到该客户端系统,该额外的增量 磁盘中的每一个都是增量磁盘链的一部分。
9.根据权利要求1所述的方法,进一步包括,在该服务器系统上,保持该用户桌面的 桌面状态为登入或登出,其中当该用户桌面上次是使用该虚拟机的该服务器实例远程访问时,该桌面状态是登入,而当该用户桌面上次是使用该虚拟机的该客户端实例本地访问时, 该桌面状态是登出;当该增量磁盘的该拷贝在该客户端系统上创建之后,该服务器系统认 为该桌面状态是登出。
10.根据权利要求1所述的方法,其中该虚拟化软件模拟用户数据磁盘和系统磁盘,该用户数据磁盘和该系统磁盘是该虚拟 机中执行的来宾系统软件能够访问的,该来宾系统软件在该用户数据磁盘中存储用户数据 并在该系统磁盘中存储操作系统和应用文件,该用户数据包括用户文档和设置;该数据存储系统上的该虚拟磁盘是虚拟用户数据磁盘而该增量磁盘是增量用户数据 磁盘;以及该用户桌面的该远程访问进一步包括将用户数据磁盘读请求导向该虚拟用户数据磁盘并将系统磁盘读请求导向虚拟系统 磁盘,该虚拟系统磁盘是存储在该数据存储系统或另一个数据存储系统上的一个或多个文 件中的磁盘映像;以及将系统磁盘写请求导向增量系统磁盘并将用户数据磁盘写请求导向该增量用户数据 磁盘,该增量系统磁盘包含对该虚拟系统磁盘的修改而该增量用户数据磁盘包含对该虚拟 用户数据磁盘的修改。
11.根据权利要求10所述的方法,进一步包括当该增量磁盘的该拷贝的创建执行时丢 弃该增量系统磁盘。
12.根据权利要求10所述的方法,进一步包括当该增量磁盘的该拷贝的创建执行时在 该客户端系统上创建该增量系统磁盘的拷贝。
13.根据权利要求1所述的方法,进一步包括在执行该虚拟机的该客户端实例之前针 对该服务器系统的恶意软件扫描该增量磁盘。
14.一种用于将基于服务器的桌面虚拟机架构扩展到客户机的实体机器可读介质,该 实体机器可读介质包含在客户端系统上实现一种方法的计算机程序指令,所述方法包括通过通信网络远程访问用户桌面,该远程访问包括在客户端系统和服务器系统之间发 送和接收用户输入/输出,该服务器系统运行提供该用户桌面的虚拟机的服务器实例,该 虚拟机的该服务器实例通过虚拟化软件在与数据存储系统通信的物理计算机系统上执行; 虚拟化软件将来自该虚拟机的该服务器实例的磁盘读请求导向虚拟磁盘,该虚拟磁盘包含 容纳于该数据存储系统上的一个或多个文件中的虚拟磁盘映像,该虚拟化软件将来自该虚 拟机的该服务器实例的磁盘写请求导向增量磁盘,该增量磁盘包含对该虚拟磁盘的修改, 该客户端系统具有远程桌面客户端以接收该用户输入/输出并将该用户输入/输出发送到 该客户端系统的用户界面;在该客户端系统上创建该虚拟磁盘的本地拷贝;将来自该客户端系统的登出请求发送到该服务器系统以在本地访问该用户桌面,该登 出请求使得如果该虚拟机的该服务器实例当前正在执行的话,终止该虚拟机的该服务器实 例;在该客户端系统上创建该增量磁盘的拷贝;以及使用该客户端系统上的虚拟化软件执行该客户端系统上的该虚拟机的客户端实例以 将来自该虚拟机的该客户端实例的磁盘读请求导向至少该虚拟磁盘的该本地拷贝并将来 3自该虚拟机的该客户端实例的用户输入/输出导向该客户端系统的该用户界面。
15.根据权利要求14所述的介质,其中该创建该虚拟磁盘的该本地拷贝是在该虚拟机 的该服务器实例运行的时候执行的。
16.根据权利要求14所述的介质,其中该方法进一步包括,在该虚拟机的该服务器实 例运行的时候,在该客户端系统接收对存储在该服务器系统上的该增量磁盘中的该虚拟磁 盘的修改。
17.根据权利要求14所述的介质,其中该方法进一步包括在执行该虚拟机的该客户端 实例之前将该增量磁盘的该拷贝与该虚拟磁盘的该本地拷贝合并。
18.根据权利要求14所述的介质,其中该方法进一步包括将来自该虚拟机的该客户端实例的磁盘写导向本地增量磁盘;将来自该客户端系统的登入请求发送到该服务器系统以远程访问该用户桌面;如果该虚拟机的该客户端实例正在运行的话,终止该虚拟机的该客户端实例;将该本地增量磁盘的拷贝发送到该服务器系统;以及在将该本地增量磁盘的拷贝发送到该服务器系统之后远程访问该虚拟机的该服务器 实例。
19.根据权利要求18所述的介质,其中在向该本地增量磁盘的该拷贝发送到该服务器 系统以后,在启动该虚拟机的该服务器实例之前,该增量磁盘和该本地增量磁盘与该虚拟 机合并。
20.根据权利要求18所述的介质,其中该方法进一步包括在该虚拟机的该客户端实例 的执行开始之后并在将该本地增量磁盘的该拷贝发送到该服务器系统之前,阻止对该虚拟 机的该服务器实例的访问。
21.根据权利要求14所述的介质,其中该方法进一步包括在该虚拟机的该服务器实例的执行过程中,定期创建额外的增量磁盘并将该额外的增 量磁盘发送到该客户端系统,该额外的增量磁盘中的每一个都是增量磁盘链的一部分。
22.根据权利要求14所述的介质,其中该虚拟化软件模拟用户数据磁盘驱动和系统磁盘驱动,该用户数据磁盘驱动和该系统 磁盘驱动是该虚拟机中执行的来宾系统软件能够访问的,该来宾系统软件在该用户数据磁 盘驱动中存储用户数据并在该系统磁盘驱动中存储操作系统和应用文件,该用户数据包括 用户文档和设置;该数据存储系统上的该虚拟磁盘是虚拟用户数据磁盘而该增量磁盘是增量用户数据 磁盘;该用户桌面的该远程访问进一步包含将用户数据磁盘读请求导向该虚拟用户数据磁盘并将该系统磁盘读请求导向虚拟系 统磁盘,该虚拟系统磁盘是存储在该数据存储系统或另一个数据存储系统上的一个或多个 文件中的磁盘映像;以及将系统磁盘写请求导向增量系统磁盘并将用户数据磁盘写请求导向该增量用户数据 磁盘,该增量系统磁盘包含对该虚拟系统磁盘的修改而该增量用户数据磁盘包含对该虚拟 用户数据磁盘的修改;以及其中在该客户端系统上创建该增量磁盘的拷贝包括从该服务端系统下载对该用户数据磁盘驱动的改变而不下载对该系统磁盘驱动的改变。
23.根据权利要求22所述的介质,其中当该增量磁盘的该拷贝的创建执行时该服务器 系统丢弃该增量系统磁盘。
24.根据权利要求22所述的介质,其中该方法进一步包括当该增量磁盘的该拷贝的创 建执行时在该客户端系统上创建该增量系统磁盘的拷贝。
25.根据权利要求14所述的介质,其中该服务器系统在执行该虚拟机的该客户端实例 之前针对该服务器系统的恶意软件扫描该增量磁盘。
26.一种用于将基于服务器的桌面虚拟机架构扩展到客户机的实体机器可读介质,该 实体机器可读介质包含在服务器系统上实现一种方法的计算机程序指令,所述方法包括运行提供该用户桌面的虚拟机的服务器实例,该虚拟机的该服务器实例通过虚拟化软 件在该服务器系统上的物理计算机上执行,该物理计算机与数据存储系统通信;该虚拟化 软件将来自该虚拟机的该服务器实例的磁盘读请求导向虚拟磁盘,该虚拟磁盘包含容纳于 该数据存储系统上的一个或多个文件中的虚拟磁盘映像,该虚拟化软件将来自该虚拟机的 该服务器实例的磁盘写请求导向增量磁盘,该增量磁盘包含对该虚拟磁盘的修改,该客户 端系统具有远程桌面客户端以接收该用户输入/输出并将该用户输入/输出发送到该客户 端系统的用户界面;在客户端系统和服务器系统之间发送和接收用户输入/输出;向该客户端系统发送该虚拟磁盘的拷贝;接收来自该客户端系统的登出请求;响应该登出请求,如果该虚拟机的该服务器实例当前正在执行的话,终止该虚拟机的 该服务器实例,向该客户端系统发送该增量磁盘的拷贝从而该用户可以使用在该客户端系 统上执行的该虚拟机的客户端实例访问该桌面;以及保持该用户桌面的桌面状态的记录为登入或登出,其中当该用户桌面上次是使用该虚 拟机的该服务器实例远程访问时,该桌面状态是登入,而当该用户桌面上次是使用该虚拟 机的该客户端实例本地访问时,该桌面状态是登出;当该增量磁盘的该拷贝发送到该客户 端系统上之后,该服务器系统认为该桌面状态是登出。
全文摘要
基于服务器的桌面虚拟机架构可被扩展到客户机上。在一个实施方式中,从客户端系统远程访问用户桌面。该远程桌面是由在服务器系统上运行的第一虚拟机产生的,该服务器系统可包含一个或多个服务器计算机。在该第一虚拟机的执行过程中,对相应虚拟磁盘的写被定向到增量磁盘文件或重做日志。在该客户端系统上创建该虚拟磁盘的拷贝。当用户决定“登出”他或她的桌面时,该第一虚拟机被终止(如果它正在运行的话)而在该客户端系统上创建该增量磁盘的拷贝。一旦该增量磁盘在该客户端系统上存在,可以使用该虚拟磁盘和增量磁盘在该客户端系统上启动第二虚拟机以提供对该客户端系统处的用户桌面的本地访问。这使得用户能够在此时访问他或她的桌面而不必连接到网络上。
文档编号G06F15/16GK101971162SQ200980105185
公开日2011年2月9日 申请日期2009年2月20日 优先权日2008年2月26日
发明者亚德·沙姆沙姆, 亚龙·霍尔珀林, 克里斯蒂安·M·勒罗伊, 冯季, 杰瑞德·I·L·昌, 马修·埃克尔斯顿 申请人:威睿公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1