买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于计算环境的活动回滚_茨特里克斯系统公司_201580075057.0 

申请/专利权人:茨特里克斯系统公司

申请日:2015-02-10

公开(公告)日:2021-02-09

公开(公告)号:CN107209705B

主分类号:G06F11/14(20060101)

分类号:G06F11/14(20060101)

优先权:["20141201 US 14/557,317"]

专利状态码:失效-未缴年费专利权终止

法律状态:2024.02.20#未缴年费专利权终止;2017.10.27#实质审查的生效;2017.09.26#公开

摘要:提供了用于回滚计算环境的第一计算设备。计算设备包括被配置为获取包含条目的流的处理器,所述条目包括快照条目、存储器条目和输入输出条目,其中每个条目包括信息并与时间戳相关联。处理器还被配置为接收与第一时间戳相关联的快照条目,使用在与第一时间戳之后的时间戳相关联的至少一个存储器条目中提供的信息来还原到存储器状态,并且重新执行先前执行的过程,其中过程的重新执行使用第一时间戳、来自所接收的快照条目的信息、以及用于与关联于第一时间戳之后的时间戳的输入输出条目对应的输入输出操作的信息而开始。

主权项:1.一种用于回滚计算环境的第一计算设备,所述第一计算设备包括:一个或多个处理器,配置为:获取包含条目的流,所述条目包括快照条目、多个存储器条目和至少一个输入输出条目,其中所述条目中的每个条目包括信息并与时间戳相关联;所述多个存储器条目中的第一存储器条目包括对多个存储器条目中的第二存储器条目的引用;接收所述快照条目中的快照条目,其中所接收的快照条目与第一时间戳相关联;使用在所述多个存储器条目中提供的信息和遵循在第一存储器条目中所包括的对第二存储器条目的引用来还原到存储器状态;以及重新执行先前执行的过程,其中所述过程的重新执行使用来自所接收的快照条目的信息和所述第一时间戳而开始,并且包括用于与关联于所述第一时间戳之后的时间戳的至少一个输入输出条目对应的输入输出操作的信息。

全文数据:用于计算环境的活动回滚背景技术[0001]现代计算系统能够运行各种各样的软件应用和平台。开发人员采用编程语言编写这些软件应用。例如,开发人员可以使用]、0++、01^6〇1;;^6目标-0或如¥3编写应用。然后,开发人员可以将应用编译成处理器可以直接执行的目标代码或机器代码。[0002]在运行时,处理器可以与计算机系统的其他组件交互。例如,处理器可以将数据存储在系统存储器中。处理器可以访问计算机系统存储器、图形存储器、高速缓存存储器或连接的存储设备诸如硬盘)。此外,处理器可以与各种输入输出(“IO”)设备交互。例如,键盘或鼠标可以提供用户输入,图形监视器可以显示来自应用的输出,并且网络接口可以允许应用跨网络发送和接收数据。[0003]操作系统诸如MicrosoftWindows、Linux或MaxOSX在基础硬件上运行,从而提供用于附加应用的平台。开发人员可以编写在特定操作系统上运行的应用。应用可以利用内置到操作系统中的软件库和功能来提供对底层硬件组件的访问。[0004]虚拟化技术已经广泛用于共享有限的计算机硬件资源。在有时也称为平台虚拟化环境的硬件虚拟化环境中,一个或多个虚拟机可以利用其自身的操作系统来模拟主机计算机。特别地,在这些虚拟机上执行的软件可以与底层硬件资源分离。因此,在单个主机计算机上运行的多个虚拟机可以均具有其自身的操作系统。例如,运彳丁祖crosoftWindows操作系统的计算机可以主控多个虚拟机:模拟运行Linux操作系统的计算机的一个虚拟机,基于其可以执行基于Linux的软件;模拟运行OSX的计算机的第二虚拟机,在其上可以执行基于0SX的软件;以及每个均运行其自身的操作系统的附加虚拟机。[0005]无论处理器是物理的还是虚拟的,处理器都可以通过遵循经编译的软件应用中的每个指令来执行计算机程序。当应用被编译时,程序被转换成可由特定类型的处理器读取的指令序列。过程可以通过将指令加载到处理器中、确定该指令需要什么动作、以及采取该动作来执行用于每个指令的指令周期。处理器可以对程序中的每个指令重复该周期,直到应用完成运行。[0006]由处理器执行的指令可以直接影响计算环境的其他方面。指令可以将数据写入到存储器。此外,程序指令可以向连接到计算机的其他设备请求数据。例如,通常称为输入输出设备或10设备的这些设备可以包括硬盘、键盘、鼠标或光驱。处理器可以将数据写入到10设备并从10设备读取数据。10设备可以通知处理器它们具有用于所述处理器的数据。该通知称为中断请求(“IRQ”)。当处理器从10设备接收到IRQ时,处理器可以中断其当前执行,从设备读取数据,并继续其执行。此外,处理器可以向10设备写入数据或者发起与10设备的交互。处理器通常将向10设备请求数据,等待直到10设备完成,然后从10设备读取数据。因为与10设备交互有时可能比其他处理器任务花费长得多的时间,所以现代处理器可以使用直接存储器访问(“DMA”)。使用DMA,处理器可以发起与10设备的交互,可以在等待10设备响应的同时继续执行其他指令,并且可以处置来自设备的IRQ,从而通知处理器所述请求完成。[0007]处理器指令的次序和结果是确定性的。使用相同的输入数据和相同的指令,将发生相同的结果。这种确定性可以允许当执行应用指令时可预测的结果。然而,IO数据是非确定性的。从IO设备的读取或IRQ的结果将不总是产生与先前的读取或IRQ相同的结果。由于它们的非确定性,IO操作本质上是不可预测的。当尝试确定处理器确切执行历史时,这种不可预测性可能引起困难。[0008]存在用于调查处理器的过去操作和执行的许多实际使用。例如,开发人员通常需要重新运行部分软件应用,以便在应用中查找和修复漏洞和错误。不幸的是,IO的非确定性本质致使能够精确地重放应用的执行的能力是不可能的。因为IO操作是非确定性的,所以开发人员不能保证利用相同的输入和IO操作运行相同的指令将产生相同的错误或结果。即使在执行的确定性方面保持不变的情况下,开发人员在重新运行应用时也不能保证确切相同的执行路径。因此,调试特定的应用故障或错误可能是困难和不精确的。附图说明[0009]现在将参考示出本公开的示例性实施例的附图。在图中:图1是与本公开的实施例一致的示例性网络环境的框图。[0010]图2A-2B是与本公开的实施例一致的示例性计算设备的框图。[0011]图3是与本公开的实施例一致的示例性虚拟化环境的框图。[0012]图4A-4C是图示与本公开的实施例一致的用于提供回滚能力的流和过程的框图。[0013]图5是与本公开的实施例一致的用于存储流信息的示例性结构的框图。[0014]图6是与本公开的实施例一致的用于生成流内容的示例性方法的流程图。[0015]图7是与本公开的实施例一致的用于使用流来回滚系统的示例性方法的流程图。具体实施方式[0016]现在将详细参考根据本公开所实现的示例性实施例,其示例在附图中图示。在可能的任何地方,遍及附图将使用相同的附图标记来指代相同或相似的部件。[0017]本文描述的实施例提供了用于从先前状态重放计算环境的执行的技术。这些技术允许以确定性和可预测的方式重新执行先前执行的过程。这些技术可以在虚拟和非虚拟计算环境二者中操作。本文描述的技术可以允许以各种格式创建存储器、处理器和输入输出数据的流,并且可以使用存储器数据、处理器状态数据和1〇数据的流来从先前的时间点重放系统的执行。本文描述的重放技术可以消除与调试非确定性计算环境相关联的困难。此夕卜,本文描述的技术可以帮助性能分析。[0018]图1是示例性网络环境100的框图。虽然示例性网络环境100针对虚拟网络环境,但是应当理解,网络环境可以是使用分组进行通信的任何类型的网络。网络环境100可以包括一个或多个客户端设备102A-F、公共网络104、专用网络110、总公司114、分公司116和数据中心120。[0019]一个或多个客户端设备102A-F统称为102是可以通过各种手段从数据中心120获取远程服务的设备。客户端设备102A-F可以直接例如,客户端设备102E或间接地通过公共网络104例如,客户端设备102A-D或专用网络110例如,客户端设备102F与数据中心120进行通信。在一些实施例中,总公司114和分公司116还可以包括与客户端设备l〇2A-F类似的一个或多个客户端设备。总公司114可以位于例如公司的主要营业地点中。分公司116可以位于例如远离总公司114。在一些实施例中,总公司114和分公司116的客尸_议备还可以通过例如专用网络110从数据中心120获取远程服务。[0020]当客户端设备102通过公共网络104或专用网络110进行通信时,可以建立通信链路。例如,可以由公共网络104建立通信链路,由此提供客户端设备例如,客户端设备l〇2A-D对数据中心120的访问。通信链路也可以由专用网络110建立,由此提供客户端设备l〇2F、总公司114和或分公司116对数据中心120的访问。虽然客户端设备102A-D被描绘为计算机例如,客户机设备102A、膝上型电脑例如,客户端设备102B、平板电脑例如,客户端设备102C和移动智能电话例如,客户端设备102D,但是应当理解,客户端设备102可以是向和从数据中心120传送分组的任何类型的设备例如,诸如智能手表)。[0021]公共网络104和专用网络110可以是诸如广域网(WAN、局域网(LAN或城域网MAN之类的任何类型的网络。作为示例,WAN可以是互联网或万维网,并且LAN可以是企业内联网。公共网络104和专用网络110可以是有线网络、无线网络或两者的组合。[0022]数据中心120可以是物理或虚拟的用于存储、管理和传播与特定公共或专用实体有关的数据和信息的中央存储库。数据中心120可以用于容纳计算机系统和相关联的组件,诸如一个或多个物理服务器、虚拟服务器和存储系统。除其他事物之外,数据中心120可以包括一个或多个服务器例如,服务器122、桌面交付控制器124、虚拟桌面126、应用128和后端系统130。[0023]服务器122可以是由IP地址表示的实体,并且可以作为单个实体或服务器场的成员而存在。服务器122可以是物理服务器或虚拟服务器。在一些实施例中,服务器122可以包括硬件层、操作系统、通信子系统以及创建或管理一个或多个虚拟机的管理程序。服务器122可以向端点提供一个或多个服务。这些服务可以包括向一个或多个端点例如,客户端设备102A-F提供一个或多个应用128。例如,一个或多个应用128可以包括基于Windows™或SAP™的应用和计算资源。经由通信子系统,服务器122可以通过各种类型的网络例如,专用网络110和公共网络104与其他设备例如,客户端设备102进行通信。[0024]桌面交付控制器124可以是使得能够将诸如虚拟桌面126的服务交付到客户端设备例如,客户端设备l〇2A-F的设备。桌面交付控制器124可以提供管理、维护和优化所有虚拟桌面通信所需的功能。在一些实施例中,桌面交付控制器124可以控制、管理、维护或优化应用128的供应。[0025]在一些实施例中,一个或多个虚拟桌面126可以提供一个或多个应用128。虚拟桌面126可以包括允许多个用户访问单个共享式远程桌面服务的桌面的主控共享桌面、允许每个用户具有其自身的虚拟机、流磁盘映像、本地虚拟机、各个应用例如,一个或多个应用128的虚拟桌面基础结构桌面、或其组合。[0026]后端系统130可以是计算机联网硬件、装置或服务器场或服务器库中的服务器的单个或多个实例。后端系统130可以直接或间接地与服务器122对接。例如,后端系统130可以包括Microsoft™活动目录,Microsoft™活动目录可以提供多个网络服务,包括轻量级目录访问协议LDAP目录服务、基于Kerberos的认证、基于域名系统①NS的命名和其他网络信息、以及多个服务器之间的目录更新的同步。除其他事物之外,后端系统i3〇还可以包括Oracle甲骨文后端服务器、SQL服务器后端和或动态主机配置协议DHCP服务器。后端系统130可以向数据中心120提供数据、服务或两者的组合,数据中心丨2〇然后可以经由变化的形式将该信息提供给客户端设备102或分公司140。[0027]图2A-2B是与本公开的实施例一致的示例性客户端设备102的框图。如图2A所示,每个客户端设备102可以包括一个或多个中央处理单元CPU221、一个或多个图形处理单元GPU225、系统存储器222和图形存储器226XPU221可以是响应于和处理从系统存储器222取出的指令的任何逻辑电路。CPU221可以是能够执行存储在存储器(系统存储器222或高速缓存例如,高速缓存240中的特定指令集的单个或多个微处理器、现场可编程门阵列FPGA或数字信号处理器DSP.CPU221还可以包含用于存储可变类型的数据的多个处理器寄存器。例如,这些寄存器可以存储数据、指令、浮点值、条件值和或用于系统存储器322中的位置的地址。CPU寄存器可以包括用于存储与运行过程相关联的数据诸如指令指针、指令计数器和或存储器堆栈指针的专用寄存器。[0028]系统存储器222可以包括有形非暂时性计算机可读介质,诸如软盘、硬盘、CD-ROM压缩盘只读存储器)、M〇磁光驱动器、DVD-ROM数字通用盘只读存储器)、DVD-RAM数字通用盘随机存取存储器)、处理器高速缓存、存储器寄存器或半导体存储器。系统存储器222可以是能够存储数据并允许由CPU221直接访问任何存储位置的一个或多个存储器芯片。系统存储器222可以是能够如本文所述那样操作的任何类型的随机存取存储器RAM或任何其他可用存储器芯片。在图2A所示的示例性实施例中,CPU221可以经由系统接口250与系统存储器222通信。[0029]GinJ225可以是任何类型的专用电路,所述任何类型的专用电路可以操纵和改变存储器例如,图形存储器226来提供和或加速存储在帧缓冲器例如,图2B所示的帧缓冲器316中的图像的创建以用于输出到显示设备例如,显示设备224APU225可以具有高度并行的结构,从而使得它们比通用CPU221更有效用于其中可以并行执行大块图形数据的处理的算法。此外,GPU225的功能也可以被包括在某种其他类型的专用处理单元或协处理器中的芯片组中。[0030]CPU221可以连接到系统存储器222和系统接口250.CPU221可以执行存储在系统存储器222中的编程指令,对存储在系统存储器222中的数据进行操作,并通过桥接CPU221和GPU225之间的通信的系统接口250与GPU225通信。在一些实施例中,CPU221、GPU225、系统接口250或其任何组合可以集成到单个处理单元中。GPU225可能能够执行存储在系统存储器222中的特定指令集,以操纵存储在系统存储器225或图形存储器226中的图形数据。例如,GPU225可以接收由CPU221发送的指令并处理指令,以便渲染存储在图形存储器226中的图形数据。图形存储器226可以是由GPU225可访问的任何存储器空间,包括本地存储器、系统存储器、片上存储器和硬盘。GPU225可以使得能够显示存储在显示设备224上的图形存储器226中的图形数据。[0031]客户端设备102还可以包括显示设备224和通过IO控制器223连接的输入输出IO设备230例如,键盘、鼠标或定点设备),这两者经由系统接口250通信。应当理解,CPU221还可以以通过系统接口250以外的方式诸如通过串行通信方式或点对点通信方式与系统存储器222和其他设备进行通信。类似地,GPU225还可以以系统接口250以外的方式与图形存储器226和其他设备通信。此外,IO设备230还可以提供用于客户端设备1〇2的存储和或安装介质。[0032]图2B描绘了示例性客户端设备102的实施例,其中CPU2W经由存储器端口2〇3直接与系统存储器222通信,并且类似地,GHJ225直接与图形存储器226通信。CPU221可以经由次级总线有时称为后端总线与高速缓存240通信。在一些实施例中,CPU221可以经由系统接口250与高速缓存240通信。高速缓存240通常具有比系统存储器222更快的响应时间。在诸如图2B所示的实施例的一些实施例中,CPU221可以经由IO端口直接与IO设备230通信。在另外的实施例中,IO设备230可以是系统接口250和外部通信总线之间的桥接器270,所述外部通信总线诸如USB总线、Apple苹果)桌面总线、RS-232串行连接、SCSI总线、FireWire火线)总线、FireWire火线)800总线、以太网总线、AppleTalk苹果讲话总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus串行十)总线、SCILAMP总线、FibreChannel光纤信道总线、Thunderbolt雷电)TM总线或串行附接小型计算机系统接口总线。[0033]如图2B所示,GPU225还可以直接与图形存储器226和显示设备224通信。GPU225可以通过系统接口250与CPU221和其他设备进行通信。图形存储器226还可以包括帧缓冲器316。帧缓冲器316可以是图形输出设备,所述图形输出设备从包含完整的图形数据帧的图形存储器226的存储器缓冲器驱动显示设备例如,显示设备224。帧缓冲器316可以存储要显示在显示设备224上的最终图形帧。[0034]如图2A所示,客户端设备102可以支持任何合适的安装设备216,诸如用于接收诸如3•5英寸、5•25英寸磁盘或ZIP磁盘的软盘的软盘驱动器;CD-ROM驱动器;CD-RRW驱动器;DVD-ROM驱动器;各种格式的磁带驱动器;USB设备;硬盘驱动器;或适于安装软件和程序-诸如任何客户端代理220或其部分-的任何其他设备。客户端设备102还可以包括存储设备228,诸如一个或多个硬盘驱动器或独立盘的冗余阵列,其用于存储操作系统和其他相关软件,并且用于存储应用软件程序,诸如与客户端代理220相关的任何程序。可选地,任何安装设备216也可以用作存储设备228。[0035]此外,客户端设备102可以包括网络接口218,以通过各种连接来对接到LAN、WAN、MAN或因特网,所述各种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25、宽带连接例如,ISDN、帧中继、ATM、无线连接或上述中的任何或全部的某种组合。网络接口218可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器、或适于将客户端设备1〇2对接到能够通信并执行本文描述的操作的任何类型的网络的任何其他设备。[0036]图3是示例性虚拟化环境3〇0的框图。在一些实施例中,虚拟化环境300可以包括计算设备例如,客户端设备1〇2或服务器122。在一些实施例中,由虚拟化环境300存储和执行的模块、程序、虚拟机和命令可以由多于一个计算设备执行。例如,虚拟化环境300可以包括服务器场。[0037]虚拟化环境300可以包括硬件层310,硬件层310可以包括一个或多个物理盘304例如,存储228、一个或多个物理设备306例如,IO设备230、一个或多个物理处理器308例如CPU221、系统存储器312例如,系统存储器222和图形存储器314例如,图形存储器226。在一些实施例中,帧缓冲器316可以存储在图形存储器314中的存储器元件内,并且可以由物理处理器308中的一个或多个执行。[0038]物理盘3〇4可以是内部硬盘或外部硬盘。在一些实施例中,虚拟化环境3〇〇可以与包括在硬件层31〇中作为物理盘304的外部硬盘进行通信。在一些实施例中,物理设备306可以是虚拟化环境300中包括的设备和与虚拟化环境300通信的外部设备的任何组合。物理设备306可以是任何设备,诸如网络接口卡218、视频卡、IO设备230诸如键盘、鼠标)、输入设备、扬声器、光驱、打印机、扫描仪、显示设备(例如,监视器224、存储设备(例如,存储228、通用串行总线连接、连接到虚拟化环境300的任何设备、与虚拟化环境300通信的任何设备、或期望的任何其他设备。在一些实施例中,物理处理器308可以是任何处理器,并且可以包括例如CPU221和GPU225。[0039]系统存储器312可以包括可以存储数据、程序、固件或可执行指令集的任何类型的存储器。存储在系统存储器312中的程序、固件或可执行指令可以由虚拟化环境300的一个或多个物理处理器308执行。图形存储器314可以是可由物理处理器308访问的任何存储器空间,包括本地存储器、系统存储器、片上存储器和硬盘。物理处理器3〇8可以在物理设备306的显示设备上显示与在图形存储器316中存储的图形数据对应的某些图形。[0040]虚拟化环境300还可以包括可以存储在系统存储器312中的存储器元件中并由物理处理器308中的一个或多个执行的操作系统318。操作系统318也可以被称为内核。此外,虚拟化环境300可以包括管理程序302。管理程序3〇2可以是由虚拟化环境300中的物理处理器308执行以管理任何数量的虚拟机的程序。管理程序302可以被称为虚拟机监视器或平台虚拟化软件。在一些实施例中,管理程序302可以是监视在计算设备上执行的虚拟机的可执行指令和硬件的任何组合。管理程序302可以存储在系统存储器312中的存储器元件中。[0041]在一些实施例中,管理程序302可以向一个或多个虚拟机例如虚拟机332A-C提供虚拟资源。虚拟机可以是完全虚拟化的虚拟机。完全虚拟化的虚拟机可以具有用于允许执行其软件的访客操作系统。当在主机计算机上运行时,完全虚拟化的虚拟机不知道它是虚拟机。完全虚拟化的虚拟机有时也被称为域U或domU虚拟机例如,虚拟机IBMAhdomU虚拟机可以由另一个虚拟机的控制程序来控制。控制程序也可以被称为控制操作系统、控制域、域0或domO。因此,运行控制操作系统的虚拟机可以被称为domO虚拟机(例如,虚拟机332B-C。在一些实施例中,domO虚拟机可以直接访问主机计算机的硬件资源,并且因此控制程序可以由主机计算机的操作系统执行。domO虚拟机可以通过管理程序可访问主机计算机的硬件资源,所述管理程序直接运行在主机计算机的硬件上(即,裸机管理程序),或者在主机计算机的操作系统内运行(即,被主控的管理程序)。在一些实施例中,虚拟机还可以是服务域虚拟机,也称为域S或domS虚拟机未示出)。[0042]在一些实施例中,管理程序302可以以任何方式向访客操作系统domU330A-B和或控制操作系统domO320提供虚拟资源,使得管理程序302模拟任何期望的操作系统例如,Windows、Linux、Unix以在虚拟机332A-C上执行。系统资源可以包括例如硬件层310和包括在虚拟化环境300中的任何其他组件。在这些实施例中,管理程序302可以用于模仿虚拟硬件、对物理硬件进行分区、虚拟化物理硬件、或执行提供对计算环境的访问的虚拟机。在一些实施例中,管理程序302可以控制用于在虚拟化环境300中执行的虚拟机332A-C的处理器调度和存储器分区。[0043]在一些实施例中,管理程序302可以创建其中访客操作系统330A-B或控制操作系统320分别执行的虚拟机332A-C。作为示例,管理程序3〇2可以加载虚拟机映像以创建虚拟机332。作为另一示例,管理程序302可以分别在虚拟机332B和33况内执行访客操作系统330A和330B。访客操作系统330A-B在下面进一步详细描述。[0044]如图3所示,在一些实施例中,虚拟化环境300的管理程序302可以是主机管理程序或在虚拟化环境300上执行的操作系统(内核318内执行的管理程序。作为主机管理程序,管理程序302可以在操作系统318内执行。并且虚拟机332A-C在管理程序3〇2以上的级别处执行。如果管理程序302是主机管理程序,则操作系统318可以被称为主机操作系统,而其他操作系统例如,操作系统33〇A-®可以被称为访客操作系统。访客操作系统330A-B可以在虚拟机332B-C或domU虚拟机上执行。[0045]在一些实施例中,虚拟化环境300的管理程序3〇2可以是裸机管理程序,或者可直接访问在主机计算设备例如,客户端设备1〇2、主机计算设备上的所有资源、以及主机计算设备上的所有硬件例如,图3所示的硬件层)中执行或与主机计算设备通信的所有应用和过程的管理程序。尽管主机管理程序通过主机操作系统例如,操作系统318访问系统资源,但是裸机管理程序可以直接访问所有系统资源。例如,如果管理程序302是裸机管理程序,则它可以直接在一个或多个物理处理器308上执行,并且可以包括存储在系统存储器312和图形存储器314中的程序数据。[0046]在采用裸机管理程序配置的虚拟化环境中,主机操作系统可以由一个或多个虚拟机332执行。因此,计算设备的用户可以将一个或多个虚拟机332指定为domO虚拟机例如,虚拟机332A。该domO虚拟机可以通过允许用户以与用户将经由主机操作系统318与计算设备交互的基本相同的方式与计算设备进行交互来效仿主机操作系统。[0047]在一些实施例中,虚拟化环境300可以主控或执行一个或多个虚拟机332A-C。如上所述,执行控制操作系统的虚拟机可以被称为d〇m0虚拟机,并且访客虚拟机可以被称为domU虚拟机。虚拟机332可以是一组可执行指令,所述指令当由物理处理器308执行时效仿物理计算设备的操作,使得程序和过程可以以类似于在物理计算设备上的方式在虚拟机332上执行。应当理解,虚拟化环境300可以主控任何数量的虚拟机332。在一些实施例中,可以诸如由管理程序302向每个虚拟机332提供可用于该虚拟机332的物理硬件、存储器、处理器和其他系统资源的唯一虚拟视图。唯一虚拟视图可以基于例如虚拟机许可、策略引擎对一个或多个虚拟机标识符的应用、访问虚拟机的用户、在虚拟机上执行的应用、由虚拟机访问的网络、或任何其他期望的标准。在一些实施例中,可以向每个虚拟机332提供可用于虚拟机332的物理硬件、存储器、处理器和其他系统资源的基本类似的虚拟视图。[0048]如图3所示,虚拟机332A-C可以包括一个或多个虚拟盘326A-C统称为326。虚拟盘326可以对应于例如一个或多个物理盘或物理盘的部分例如,物理盘304。作为示例,可以向虚拟盘326A分配物理盘304的第一部分;可以向虚拟盘326B分配物理盘304的第二部分;并且可以向虚拟盘326C分配物理盘304的第三部分。在一些实施例中,虚拟盘326A-C中的一个或多个可以包括与物理盘的盘分区和文件系统类似的盘分区和文件系统。例如,虚拟盘326A可以包括系统盘,所述系统盘包括与虚拟机332A相关联的盘分区和系统文件。在一些实施例中,可以在虚拟机之间共享系统盘。例如,虚拟机332B和332C可以具有相同或类似的系统盘。[0049]虚拟盘326A-C的文件系统还可以包括文件和文件夹。例如,虚拟盘326A还可以包括用户盘,所述用户盘可以存储诸如用户文件和文件夹之类的用户数据。存储在用户盘上的用户数据也被称为持久用户数据。在一些实施例中,客户端设备例如,客户端设备1〇2的虚拟机的系统盘和或用户盘可以与存储在服务器例如,服务器122中的对应的盘同步。服务器和客户端设备之间的系统盘和或用户盘的同步可以包括例如将系统盘更新为由服务器发布的较新版本并提供用户盘的备份。以下进一步详细描述同步。在一些实施例中,虚拟盘还可以包括本地盘。本地盘可以存储与虚拟机例如,虚拟机332B相关联的本地数据。本地盘还可以包括持久用户数据。在一些实施例中,存储在本地盘上的持久用户数据不能与服务器同步。[0050]可以由客户端设备或服务器访问、修改、更新或供应虚拟盘例如,虚拟盘326。作为示例,如上所述,当服务器发布新版本的系统盘时,服务器可以通过将新版本和当前版本之间的差异发送到客户端设备来更新系统盘。此外,通过使用系统盘,服务器可以使得能够实现客户端设备的桌面管理和修补。此外,客户端设备可以通过向用户盘写入新数据或修改存储在用户盘上的己有数据来修改其用户盘。在一些实施例中,可以将虚拟盘存储为具有诸如VHD格式、VHDX格式、VMDK格式、qcow格式、qcow2格式、虚拟盒虚拟磁盘映像VDI格式、以及并行虚拟硬盘驱动器HDD格式或二进制格式之类的格式的虚拟盘文件。在一些实施例中,虚拟盘可以包括一个或多个扇区。扇区可以包括多个字节。例如,扇区可以具有512字节的大小。此外,在一些实施例中,一个扇区或一组扇区可以形成虚拟盘的块。[0051]在一些实施例中,虚拟化环境300还可以包括虚拟存储器空间中的虚拟孔径未示出),所述虚拟孔径可以是可用于虚拟机332的虚拟存储器的虚拟视图。虚拟孔径可以对应于例如高速缓存、缓冲器、诸如系统存储器312和图形存储器314的物理存储器、诸如硬盘304的内部或外部物理盘。作为示例,在虚拟机332A上运行的应用不需要比在系统存储器312中可用的更多的存储器的情况下;虚拟机332A的虚拟孔径可以对应于系统存储器312的一部分。作为另一示例,在由虚拟机332B执行的应用需要比在系统存储器312中可用的更多的存储器的情况下,虚拟机332B的虚拟孔径可以对应于系统存储器312、图形存储器314的一个或多个部分、或甚至物理盘304的一个或多个部分。可以由管理程序302生成、提供和管理虚拟孔径。[0052]虚拟处理器328A-C统称为328可以是虚拟化环境300的一个或多个物理处理器308的虚拟化视图。在一些实施例中,可以由管理程序302生成、提供和管理物理处理器308的虚拟化视图。在一些实施例中,虚拟处理器328可以具有与物理处理器308的特性基本相同的特性。在一些实施例中,虚拟处理器328可以提供物理处理器308的修改视图,使得虚拟处理器328的至少一些特性与对应的物理处理器308的特性不同。在一些实施例中,虚拟处理器328可以提供在对应的物理处理器308中不可用的附加功能或特性。例如,虚拟处理器328可以提供附加的寄存器以供管理程序302或虚拟机332使用。[0053]在图3中,控制操作系统320可以执行至少一个应用以用于管理和配置在虚拟机332上执行的访客操作系统domU330,例如,domU-1330A和domU-2330B。在一些实施例中,控制操作系统320可以被称为控制域320、域0320或domO320。虽然图3示出了控制操作系统320被包括在虚拟机332A中,但是控制操作系统320可以在任何控制虚拟机或任何domO虚拟机内执行,可以由管理程序302执行,或者可以由执行管理程序302的操作系统318执行。控制操作系统320可以执行管理应用或程序,管理应用或程序可以进一步显示用户界面,管理员可以使用该界面来访问每个虚拟机332的功能和或管理每个虚拟机332。在一些实施例中,由管理程序生成的用户界面可以用于终止虚拟机332的执行,向虚拟机332分配资源,向虚拟机332分配权限、或者管理与虚拟机332相关联的安全凭证。[0054]此外,在一些实施例中,控制操作系统320可以启动新的虚拟机3:B2或终止虚拟机332的执行。控制操作系统320还可以直接访问硬件层310内的硬件和或资源。在一些实施例中,控制操作系统320可以与在虚拟机332的上下文内执行的程序和应用对接。控制操作系统320还可以与虚拟化环境3〇〇中的计算设备上执行的程序和应用对接,所述程序和应用处于虚拟机332的上下文之外。[0055]此外,在一些实施例中,控制操作系统320还可以与一个或多个访客操作系统330交互。控制操作系统320可以通过管理程序302与访客操作系统330通信。作为示例,访客操作系统330可以经由由管理程序3〇2建立的通信通道诸如经由由管理程序302做成可用的多个共享存储器页面与控制操作系统320通信。在一些实施例中,控制操作系统320还可以包括用于与由虚拟化环境300提供的联网硬件直接通信的网络后端驱动程序未示出)。网络后端驱动程序可以处理来自至少一个访客操作系统330的至少一个虚拟机请求。控制操作系统320还可以包括用于与虚拟化环境300中包括的存储元件诸如系统存储器312和图形存储器块314进行通信的块后端驱动程序。在一些实施例中,块后端驱动程序可以基于从访客操作系统330接收到的至少一个请求来从存储元件读取和写入数据。[0056]控制操作系统320还可以包括工具栈324,工具找324可以提供用于与管理程序302交互的功能。工具栈324可以包括用于向虚拟机场的管理员提供改进的管理功能的定制应用。在一些实施例中,工具栈324和控制操作系统320中的至少一个可以包括管理应用编程接口(API,所述管理应用编程接口(API提供用于远程配置和控制在虚拟化环境300中运行的虚拟机332的接口。[0057]如图3所示,在一些实施例中,访客操作系统330可以向虚拟化环境300的用户提供对计算环境内的资源的访问。这样的资源可以包括被做成可用于虚拟化环境300的用户的程序、应用、文件、可执行指令代码、桌面环境、计算环境或其他资源。在一些实施例中,资源可以经由包括在虚拟化环境300中的常规直接安装或经由用于应用流传送的方法交付的多种访问方法被交付到虚拟化环境300。资源还可以经由诸如通过在另一计算设备上的资源的执行而生成并经由表示层协议传送到虚拟化环境300的输出数据的交付、通过从连接到虚拟化环境300的可移动存储设备的执行而生成的输出数据的交付、以及通过经由在虚拟化环境300中执行的虚拟机的执行而生成的输出数据的交付之类的访问方法而被交付到虚拟化环境300。[0058]图4A-4C是与本公开的实施例一致的示例性流400和示例性回滚过程的框图。计算环境可以使用流例如,流400来还原到更早的处理器状态(例如,执行状态401和存储器状态例如,存储器状态4邪)。在该回滚之后,处理器执行可以从所恢复状态的时间开始,并且流可以提供附加信息(例如,IO数据4加和IRQ数据421来重放处理器执行。在一些实施例中,管理程序(例如,管理程序302可以控制回滚过程。应当理解,可以读取流例如,流400并且控制存储器状态例如,存储器状态450和处理器执行状态例如,执行状态401的任何过程或机制可以实现回滚过程。例如,回滚能力可以由内核例如,内核318、裸机或主控管理程序例如,管理程序302或虚拟机例如,虚拟机332提供。[0059]图4A是示例性流400和执行状态401。流400可以包含多个条目以供所公开的实施例使用。流中的每个条目可以包含与流中的特定类型的条目相关联的信息例如,数据)。如示例性实施例中所图示的,流400中的条目可以包含快照数据430A-C、诸如存储器页面410A-D的存储器数据、以及包括IO请求42〇A-C和中断请求(“IRQ”)421的IO数据。流中的每个条目都可以包括时间戳。时间戳可以是指示在执行历史中何时创建了相关联的条目或事件的度量。例如,时间戳可以是处理器的退出(retired指令计数器的值。在一些实施例中,时间戳值可以由虚拟机或管理程序例如,退出访客指令计数器提供。[0060]在一些实施例中,计算环境可以使用流中的其他条目来确定用于条目的省略的时间戳。在这些实施例中,不需要确切的执行时间而是仅需要条目维持关于流中的其他条目的相对次序的流400中的条目可以在没有时间戳的情况下被插入到流中。在这些实施例中,当计算环境从流中读取没有时间戳的条目时,计算环境可以取决于所记录条目的性质使用先前或后续条目的时间戳来确定时间戳。例如,只要IO写入发生在用于同一设备的下一;[0读取之前,则IO写入的确切时间可以被忽略。在该示例中,可以省略用于记录10写入的条目的时间戳。当计算环境获取或读取流时,计算环境可以将用于IO写入的时间戳确定为在与后续IO读取相关联的时间戳之前时间戳发生的点。在该示例中,每个条目具有构成的constructive时间戳,g卩使底层流可以省略某些时间戳也是如此。[0061]流400可以存储在存储器(例如,系统存储器322中。存储器可以包括有形非暂时性计算机可读介质,诸如软盘、硬盘、CD-ROM压缩盘只读存储器)、CD-RW压缩盘可重写存储器)、M0磁光驱动器、DVD-ROM数字通用盘只读存储器)、DVD-RAM数字通用盘随机存取存储器)、DVD-RW数字通用盘可重写存储器)、处理器高速缓存、存储器寄存器或半导体存储器。此外,存储器可以被直接附接或可以被通过网络例如,NAS网络附接存储)、SAN存储区域网络)、云或基于互联网的存储或附接到远程计算设备的存储器访问。应当理解,流的产生可以要求将流存储在至少可写入的介质上,而己有流的使用要求流存储在至少可读的介质上。[0062]在一些实施例中,流400可以被分割成存储在相同或不同介质上的多个流。在这些实施例中,流可以基于任意确定的标准(例如数据的类型、时间戳范围、流的大小)进行分害I当使用多个流时,计算环境可以在回滚和重放过程期间从所有流中读取。下面将相对于图5进一步描述多个流实施例的示例。[0063]参考图4A,流400可以包含存储器数据例如,存储器页面410A-D。存储器数据可以是在更新存储器的特定区域的处理器执行之前的存储器的该区域的已有内容。在一些实施例中,流包括用于保存存储器数据的存储器页面410。在一些实施例中,流包括快照之后的对存储器位置的第一更新。在这些实施例中,对相同存储器位置的后续更新不包括在流中,直到在附加快照之后。[0064]流400可以包含IO数据。IO数据可以包括与处理处置的任何V〇事务例如,1〇读取42〇、IRQ似1或DMA操作相关的数据。10数据可以包含重新创建所记录的V〇事务所必需的任何信息。例如,10读取420条目可以包含所涉及的设备和从设备返回的值,而DMA操作可以包括与传输的发起和IRQ结果相关的信息。[0065]流400可以包含快照数据430。快照数据可以记录处理器状态(例如,执行状态401。处理器状态可以包括处理器寄存器的值、处理器计数器的值、执行位置、存储器表和或定义处理器的当时己有状态的任何其他数据。快照可以包含在过程的在前执行期间将执行状态401返回到特定点所必需的所有信息。[0066]流400的元素可以以多种方式组织。在一些实施例中,流中的条目可以按时间顺序存储,并且回滚过程可以扫描流400的每个条目以确定条目的类型。在一些实施例中,快照例如,快照4300可以包括对先前快照例如,快照430B和或先前存储器条目(例如,存储器页面4100的引用。存储器条目(例如,存储器页面410C可以包括对先前存储器条目(例如,存储器页面410B和或先前快照(例如,快照430B的引用。例如,快照430C可以包括对快照430B的流中的位置的引用。此外,例如,快照430C可以引用存储器页面410C,存储器页面410C可以引用存储器页面410B,并且存储器页面410B可以引用快照430B,以创建快照430C和快照430B之间的所有存储器页面的链接列表,从而提供用于遍历流中的快照430和存储器页面410的机制。在一些实施例中,每个条目可以包含对先前条目或相同类型的先前条目的引用。通过使用这些引用,这些实施例可以创建链接列表,从而允许在回滚过程期间的相关流条目的高效遍历。[0067]执行状态401表示计算环境的当前执行状态。执行状态401可以包含对最近流条目例如,快照4300的最后条目引用402以及对当前存储器状态450的存储器状态引用403。执行状态401可以包括执行用于运行过程的指令所必需的处理器状态的各方面。例如,执行状态401可以包括各种CPU寄存器的当前值。当处理器开始执行时,执行指令的结果可以更新执行状态。执行状态可以表示物理CHJ和虚拟CPU两者的处理器状态。在一些实施例中,执行状态401可以包含关于处理器状态的子集的信息,但信息的该子集可能足以执行运行过程。[0068]图4B是示例性流400和存储器状态450的示例性回滚的图。在开始回滚之前,计算环境必须选择快照430以用作回滚点。快照选择可以任意或系统地作出。在一些实施例中,计算环境的操作者可以手动确定用于回滚的快照430。在一些实施例中,系统或用户可以选择用于回滚的最近快照例如,流400中的快照4300。在一些实施例中,计算环境可以基于可外部定义的标准或算法来系统地决定系统应当使用哪个快照。例如,计算环境可以默认为最近快照,基于预定时间段的快照或基于配置设置的快照。一旦被选择,计算环境可以在存储器和执行状态回滚期间使用该快照。[0069]如图4A所示,执行状态401可以包含对流中的最近快照或存储器条目(例如,快照4300的最后条目引用402和对所选快照例如,快照430B的回滚快照引用404。以快照430C开始,回滚过程可以遵循包含在流400条目中的向后引用406。快照430C可以引用存储器页面410C。当通过回滚过程到达存储器页面410C时,可以将存储器页面加载到当前存储器状态450中。回滚过程可以然后遵循存储器页面410C向存储器页面410B的反向引用。回滚过程可以将存储器页面410B加载到当前存储器状态中,并且继续遵循对430B的向后引用。因为快照430B是期望的快照,所以回滚过程可以停止遵循进一步的引用。在一些实施例中,在到达期望的快照之前,回滚过程将跨存储器页面和快照的多个实例而继续。通过在初始存储器状态450和快照430B之间加载每个记录的存储器页面,回滚过程可以用存储在流中的值替换存储器状态450的值。该过程导致存储器复原405。存储器复原405表示存储器状态450复原到先前的存储器状态460。存储器状态460然后可以表示当其在快照430B的时间处存在时的存储器状态。应当理解,普通技术人员将认识到用于定位流中的存储器条目的附加实施例。这些附加实施例与基于存储在流例如,流400中的存储器数据将当前存储器状态例如,存储器状态450还原到先前存储器状态例如,先前存储器状态460的本公开一致。[0070]图4C是示例性流400以及IO操作的执行状态和重放的示例性加载的图。回滚过程可以将执行状态401重置为在快照430B的时间处存在的相同状态。计算环境可以读取快照数据例如,存储在快照430B中的寄存器值、指令和或存储器引用),并将该数据加载404到执行状态401中。通过将快照430B的值加载到执行状态401中,计算环境可以在执行状态401中重新创建在快照430B的时间处存在的状态。[0071]在一些实施例中,执行状态401可以在存储器被还原到先前存储器状态460之前被还原到快照430B中的值。在一些实施例中,向先前存储器状态460的存储器复原可以在执行状态401向快照430B中的值的复原之前。在存储器和执行状态复原后,可以重新启动执行周期。当运行过程执行时,计算环境可以拦截由执行过程所作出的所有IO请求,并且可以用记录在流400中的IO数据替换结果得到的事件。计算环境可以监视与运行过程相关联的时间戳和流400中的IO事件的时间戳。当由执行过程达到流400中的IO事件(例如,事件420B、421和4200的时间戳时,计算环境可以提供来自流的相关联的IO事件。[0072]随着运行过程执行,执行状态401的时间戳可以从快照430B的原始时间戳向前前进420,从而到达存储在流400中的IO事件。例如,当执行状态401的时间戳到达IO事件420B的时间戳时,计算环境可以从流中读取IO事件420B并将其提供给执行处理器(例如,执行状态401。处理器可以继续执行指令,并且当执行状态401的时间戳达到IRQ421的时间戳时,计算环境可以将IRQ421从流400提供给执行过程。该循环可以继续在事件最初发生的确切点处将存储在流400中的所有IO事件例如,事件420B、421和4200提供给执行过程。该过程可以继续运行直到(例如,由用户或程序错误)中断或者直到流400中的所有IO事件己经被提供给执行过程。通过提供整个执行历史的确定性重放,计算环境可以允许过去处理器执行的确定性重放。该能力可以具有各种应用。例如,用户可以重放过去过程执行来调查过程中的漏洞,或者用户可以监视过去过程执行来监视各种指令或操作的性能。[0073]图5是由管理程序302创建的示例性流结构。管理程序302可以主控虚拟机322。虚拟机322可以包含在虚拟处理器例如,虚拟处理器328上执行的访客操作系统例如,访客操作系统330。管理程序302可以在虚拟机322与诸如物理处理器例如,处理器308或物理IO设备例如,物理盘304、物理设备308、系统存储器312、和或图形存储器314之类的硬件组件和设备之间提供通道。管理程序可以监视虚拟机322的活动,并且可以基于虚拟机322的活动来创建流510。流510A可以包含与时间戳505A相关联的快照数据430。流510B可以包含与时间戳505B相关联的存储器数据410。流510C可以包含与时间戳5〇5C相关联的IO数据420和IRQ数据421。在一些实施例中,记录在流中的所有数据可以存在于一个流或多个流中。当在虚拟机322上发生事件时,管理程序302可以向流510写入事件。当管理程序在流510中记录事件时,管理程序还可以记录时间戳505。在一些实施例中,时间戳将对应于表示由虚拟机322运行的指令的数量的处理器指令计数器。应当理解,本领域普通技术人员可以认识到,管理程序302可以用可以监视与计算环境相关联的存储器、处理器执行和IO设备的任何硬件或软件机制来替换,并且不限于诸如管理程序3〇2的管理程序或诸如虚拟机犯2的虚拟机。[0074]管理程序302可以包括重复定时器。当定时器完成时,管理程序302可以在流510A中创建快照430和时间戳505A,从而产生以规则间隔创建的快照43〇。当创建快照时,管理程序可以进一步将所有存储器标记为写时复制或只读。在创建快照后,当虚拟机322尝试向存储器写入时,可能发生写时复制或只读异常。管理程序302可以捕获该异常,将受影响的存储器数据410和当前时间戳505B复制到流510B中,并将存储器位置标记为读写以防止进一步的中断。该过程可以允许计算环境高效地创建不包含快照之间的重复存储器页面或存储器条目的流。在一些实施例中,管理程序可以将所有存储器写入记录到流,而不将存储器标记为只读或写时复制。[0075]在虚拟机322作出IO请求的任何时间,管理程序302可以监视该请求,在流510Cd中创建IO数据420和时间戳505C条目。当IO设备触发IRQ时,管理程序302可以拦截IRQ,在流510C中创建IRQ421和时间戳505C条目,并将IRQ转发到虚拟机322。通过该过程,管理程序302可以创建按类型分类但仍根据时间戳505按时间组织的流510。在一些实施例中,快照数据430、存储器数据410、10数据420和IRQ数据421也可以包含对流中的先前条目的引用以帮助对流的稍后遍历。[0076]在示例性实施例中,因为在每个快照之后记录所有存储器改变,所以流510B可以包含在创建每个快照之后更新的用于相同存储器位置的存储器数据。但是在回滚期间,管理程序仅需要加载在期望快照之后最近存储的特定存储器位置的数据。用于该存储器位置的后续条目可能变得多余,因为它们可以被恢复,然后在向期望的快照回滚期间被重写。在一些实施例中,可以以变化的时间周期创建快照430条目。例如,在这些实施例中,可以每秒取得一些快照,而每100毫秒取得其他快照。在这些实施例中,每组快照可以在该特定时间周期期间将与第一改变相关联的存储器页面引用到特定存储器位置。因此,在这些实施例中,较不频繁的快照可以在与更频繁的快照相同的时间量上包含用于相同位置的更少存储器数据条目。使用用于快照的这些单独的时间周期,管理程序302可以创建允许更高效地遍历快照430和存储器数据410的层次结构。当在这些实施例中回滚存储器状态时,管理程序302可以使用较不频繁的快照引用以遍历更长的时间段,从而导致加载更少的存储器数据410条目,并且然后可以在接近期望的快照时切换到更频繁的快照。在这些实施例中,快照周期的混合使用可以平衡回滚操作的效率和更频繁地存储快照的有用性。[0077]图6是与本公开的实施例一致的用于生成流内容的示例性方法的流程图。将容易理解,所图示的过程可以被改变为删除步骤或进一步包括附加步骤。在初始步骤601之后,计算环境例如,管理程序302可以等待步骤㈤2定时器期满、存储器异常或IO操作。在发生这些之一后,计算环境可以生成步骤603时间戳例如,时间戳505。[0078]如果计算环境检测到定时器期满(步骤6〇5,则计算环境收集步骤61〇快照数据。快照数据例如,快照数据430可以是允许计算环境、处理器、虚拟处理器或其他系统组件执行运行过程所必需的任何数据。例如,快照数据可以包括所有当前寄存器值、存储器指针和或引用计数器。在收集快照数据之后,计算环境可以将所有存储器标记步骤611为写时复制或只读。将所有存储器标记为写时复制或只读将允许计算环境捕获方法的其他分支中的存储器改变。在标记所有存储器之后,计算环境可以将快照数据和生成的时间戳写入612到流例如,流400和或流510A。在将数据写入到流之后,计算环境可以继续等待步骤6〇2附加事件。[0079]如果计算机环境检测步骤606到存储器异常例如,只读存储器异常或写时复制存储器异常)而不是定时器期满,则计算环境可以将己有的存储器数据和先前生成的时间戳写入(步骤620到流例如,流400和或流5l〇B。在添加到流之后,计算环境可以从异常中检索步骤621新的存储器数据。计算环境可以将受影响的存储器位置标记步骤622为写,并且可以用来自异常的存储器值更新步骤似3受影响的存储器区域。该过程允许计算环境捕获更新存储器的所有尝试,记录这些尝试,并确保更新该存储器区域的未来尝试不会生成附加的存储器异常。在更新受影响的存储器区域之后,计算环境可以继续等待步骤602附加事件。[0080]在一些实施例中,代替将所有存储器标记为只读(步骤61D,计算环境可以将存储器的子集标记为在多个快照的过程上只读。在这些实施例中,计算环境可以选择在其之上所有存储器可以被标记为只读的时间段。在这些实施例中,在该时间内的每个快照期间,存储器的非重叠子集可以被标记为只读,使得在时间段结束之后,所有存储器位置可以在该时间段期间被标记为只读至少一次。因此,在这些实施例中,用于处理存储器改变的资源可以通过一组快照而不是每个快照来分摊。[0081]如果计算环境既未检测到定时器期满(步骤605也未检测到存储器异常(步骤606,则发生了IO操作。计算环境可以将IO操作数据和先前生成的时间戳写入步骤63〇到流例如,流400和或5100。在记录IO事件信息之后,计算环境可以继续等待步骤6〇2附加的事件数据。[0082]计算环境可以遵循该过程直到被中断。由计算环境处置的每个事件都可以添加到流中,并可以在稍后的回滚过程期间使用。应当理解,该方法中的每个分支路径可以取决于实施例而写入到相同的流或不同的流。还应当理解,以不同次序执行的一些步骤将仍然导致相同的结果。[0083]图7是与本公开的实施例一致的用于计算环境的回滚的示例性方法的流程图。将容易理解,所图示的过程可以被改变为删除步骤或进一步包括附加步骤。在初始步骤700之后,计算环境例如,管理程序302可以获取步骤710—个或多个数据流例如,流400或流510A、510B和5100。作为整体取得的流可以包括快照数据例如,快照数据430、存储器数据例如,存储器页面410和IO数据例如,IO数据似0和或IRQ数据421。此外,一个或多个流中的每个条目可以包括一个或多个快照。在一些实施例中,时间戳是计算环境的访客处理器的退出指令计数。[0084]在获取一个或多个流之后,选择期望的快照步骤720。可以任意或系统地确定快照的选择。在一些实施例中,用户将选择要使用的快照。在一些实施例中,算法可以分析环境并选择快照。例如,如果计算环境经历灾难性错误,则用户或系统可能选择最近的快照。[0085]在选择快照之后,计算环境可以将计算环境的当前存储器状态还原(步骤730到在快照的时间处存在的状态。系统可以收集具有期望快照之后的时间戳的流中的所有存储器数据,并将存储器的那些区域还原为存储在流中的值。在一些实施例中,可以通过向后遵循每个存储器页面之间的流中的引用来实现复原。在用创建快照后更新的那些值替换当前存储器值之后,存储器状态可以反映所选快照的时间处的确切存储器状态。[0086]在存储器状态还原之后,计算环境可以重新启动(740快照的时间处的处理器执行。计算环境可以从流中加载快照数据,并用快照值替换当前处理器状态中的值。在一些实施例中,所替换的值可以是快照数据中存在的所有处理器寄存器的值。通过加载存储在快照中的处理器状态,计算环境可以高效地将处理器置于在快照的时间处存在的确切状态中。与存储器复原组合,处理器然后可以开始执行指令。因为存储器和处理器状态二者都可以被还原,所以处理器可以从快照点以与处理器最初从该同一时刻执行的方式确切相同的方式开始执行。在一些实施例中,处理器寄存器之一将是用于访客操作系统的退出指令计数器。测量已经由访客操作系统运行的指令的数量的该寄存器可以存储在快照中。在这些实施例中,当从流中加载快照时,退出指令计数寄存器的值被快照中的值替换。在这些实施例中,当访客处理器完成执行指令时,该值以与在运行过程的原始执行中确切相同的方式递增。[0087]当处理器执行指令并与存储器交互时,计算环境可以监视处理器时间戳并在处理器时间戳与流中记录的时间戳匹配时执行步骤750记录在流中的任何I0事件。当处理器时间戳值与流中的I〇事件的时间戳匹配时,该I〇事件在处理器上执行。I〇事件通常为执行流水线的非确定性方面可以以可预测和确定性的方式执行。[0088]在所有IO数据被执行之后,计算环境可以停止步骤760执行。在一些实施例中,如果重新运行过程的执行导致系统错误,则该过程可以在流中的所有条目被使用之前退出。还应当理解,所述方法可以由用户或某个其他事件在任何步骤处中断,并且使用不同的快照和相同或不同的流重新起动。此外,应当理解,该过程可以使用不同或相同的流以及使用相同或不同的快照来完全重复多次。[0089]在前面的说明书中,已经参考可以因实现而异的许多具体细节来描述实施例。可以做出对所描述的实施例的某些适应和修改。根据对本文公开的本发明的说明书和实践的考虑,其他实施例对于本领域技术人员来说可以是显然的。旨在将说明书和示例视为仅示例性的。还旨在图中所示的步骤顺序仅用于说明性目的,并不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,这些步骤可以以不同的次序执行而同时实现相同的方法。

权利要求:1.一种用于回滚计算环境的第一计算设备,所述第一计算设备包括:一个或多个处理器,配置为:获取包含条目的流,所述条目包括快照条目、存储器条目和输入输出条目,其中所述条目中的每个条目包括信息并与时间戳相关联;接收所述快照条目中的快照条目,其中所接收的快照条目与第一时间戳相关联;使用在所述存储器条目中的至少一个存储器条目中提供的信息来还原到存储器状态,其中所述至少一个存储器条目与所述第一时间戳之后的时间戳相关联;以及重新执行先前执行的过程,其中所述过程的重新执行使用来自所接收的快照条目的信息和所述第一时间戳而开始,并且包括用于与关联于所述第一时间戳之后的时间戳的输入输出条目对应的输入输出操作的信息。2.根据权利要求1所述的第一计算设备,其中所述流包括快照条目的第一流、存储器条目的第二流、和输入输出条目的第三流。3.根据权利要求1和2中任一项所述的第一计算设备,其中所述流的每个条目包括时间戳。4.根据权利要求1-3中任一项所述的第一计算设备,其中所述流的条目的时间戳相对于所述流的其他条目的时间戳。5.根据权利要求1-4中任一项所述的第一计算设备,其中复原到所述存储器状态还包括所述一个或多个处理器被配置为:读取至少一个存储器条目中提供的信息;以及使用所述信息来更新所述存储器状态的一部分。6.根据权利要求5所述的第一计算设备,其中复原到所述存储器状态还包括所述一个或多个处理器被配置为:遵循至少一个存储器条目的第一存储器条目中的对至少一个存储器条目的先前第二存储器条目的引用。7.根据权利要求1-6中任一项所述的第一计算设备,其中所述过程的重新执行使用所接收的快照条目中的信息和所述第一时间戳来开始包括所述一个或多个处理器被配置为:使用所接收的快照条目中的信息来还原到处理器状态;将处理器时间戳还原到所述第一时间戳;以及开始处理器重新执行。8.根据权利要求1-7中任一项所述的第一计算设备,其中所述一个或多个处理器还被配置为在所述重新执行期间拦截输入输出事务。9.一种用于计算环境的回滚的方法,所述方法由包括一个或多个处理器的计算设备执行,所述方法包括:获取包含条目的流,所述条目包括快照条目、存储器条目和输入输出条目,其中所述条目中的每个条目包括信息并与时间戳相关联;接收所述快照条目中的快照条目,其中所接收的快照条目与第一时间戳相关联;使用在所述存储器条目中的至少一个存储器条目中提供的信息来还原到存储器状态,其中所述至少一个存储器条目与所述第一时间戳之后的时间戳相关联;以及重新执行先前执行的过程,其中所述过程的重新执行使用来自所接收的快照条目的信息和所述第一时间戳而开始,并且包括用于与关联于所述第一时间戳之后的时间戳的输入输出条目对应的输入输出操作的信息。10.根据权利要求9所述的方法,其中所述流包括快照条目的第一流、存储器条目的第二流、和输入输出条目的第三流。11.根据权利要求9和10中任一项所述的方法,其中还原到所述存储器状态还包括:读取至少一个存储器条目中提供的信息;以及使用所述信息来更新所述存储器状态的一部分。12.根据权利要求11所述的方法,其中还原到所述存储器状态还包括:遵循至少一个存储器条目的第一存储器条目中的对至少一个存储器条目的先前第二存储器条目的引用。13.根据权利要求9-12中任一项所述的方法,其中重新执行所述过程使用所接收的快照条目中的信息和所述第一时间戳,并且还包括:使用所接收的快照条目中的信息来还原到处理器状态;将处理器时间戳还原到所述第一时间戳;以及开始处理器重新执行。14.根据权利要求9-13中任一项所述的方法,还包括:在所述重新执行期间拦截输入输出事务。15.—种存储指令的非暂时性计算机可读存储介质,所述指令可由包括一个或多个处理器的第一计算设备执行以使得所述第一计算设备执行用于计算环境的回滚的方法,所述方法包括:获取包含条目的流,所述条目包括快照条目、存储器条目和输入输出条目,其中所述条目中的每个条目包括信息并与时间戳相关联;接收所述快照条目中的快照条目,其中所接收的快照条目与第一时间戳相关联;使用在所述存储器条目中的至少一个存储器条目中提供的信息来还原存储器状态,其中所述至少一个存储器条目与所述第一时间戳之后的时间戳相关联;以及重新执行先前执行的过程,其中所述过程的重新执行使用来自所接收的快照条目的信息和所述第一时间戳而开始,并且包括用于与关联于所述第一时间戳之后的时间戳的输入输出条目对应的输入输出操作的信息。16.根据权利要求15所述的非暂时性计算机可读存储介质,其中所述流包括快照条目的第一流、存储器条目的第二流、和输入输出条目的第三流。17.根据权利要求I5和I6中任一项所述的非暂时性计算机可读存储介质,其中还原到所述存储器状态还包括:…、读取与至少一个存储器条目对应的信息;以及使用所述信息来更新所述存储器状态的一部分。18.根据权利要求17所述的非暂时性计算机可读存储介质,其中还原到所述存储器状态还包括:遵循至少一个存储器条目的第一存储器条目中的对至少一个存储器条目的先前第二存储器条目的引用。~19.根据权利要求15-18中任一项所述的非暂时性计算机可读存储介质,其中重新执行所述过程使用所接收的快照条目中的信息和所述第一时间戳,并且还包括:使用所接收的快照条目中的信息来还原处理器状态;将处理器时间戳还原到所述第一时间戳;以及开始处理器重新执行。20.根据权利要求1S-19中任一项所述的非暂时性计算机可读存储介质,宜中指令集可由所述第一计算设备的至少一个处理器执行以使得所述第—计算设备进一步执在所述重新执行期间拦截输入输出事务。合进仃.

百度查询: 茨特里克斯系统公司 用于计算环境的活动回滚

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。