高效地创建频繁应用程序一致的备份的利记博彩app

文档序号:6455008阅读:215来源:国知局
专利名称:高效地创建频繁应用程序一致的备份的利记博彩app
高效地创建频繁应用程序一致的备份
背景
背景和相关技术
随着计算机化系统的日益流行,存储和备份由相关联的用户和应用程序创 建的电子文件和其他通信的需要也日益增加。 一般而言,计算机系统和相关的 设备出于各种原因创建文件,诸如在工作环境中创建一个文字处理文档,以及 创建用于更复杂数据库的目的的文件的一般情况下。此外,许多这些文档可包 括有价值的工作产品,或应该被保护的敏感信息。因此人们将会认识到, 一个 组织会想要定期备份电子文件,并藉此在需要时创建最初创建的文件的可靠的 还原有各种原因。
尽管有许多常规的备份系统提供的某些便利,但许多常规系统使用的机制 通常不如最优机制那样高效。例如,创建应用程序一致的备份的能力可能是某 些备份系统的重要组成部分。应用程序一致(以及文件系统一致)的备份基本 上是对于特定的时间点在文件状态上一致的备份的数据集。例如,如果备份管 理员复制给定生产服务器巻上的所有数据,甚至当该数据正处于被写入或更新 的过程中的时候,则对应的备份副本的文件状态可能不一定对单个时间点是一 致的。因此,创建应用程序一致的备份一般涉及协调文件状态的附加工作。
然而,可以认识到,可能有任意数量的与创建应用程序一致的数据备份相 关联的困难。例如,用于创建备份的常规机制一般涉及诸如邮件或数据库应用 程序的备份组件等应用程序调用一个或多个备份和/或还原应用程序编程接口
("API")。特别地,该备份组件可告知API冻结对生产服务器上的某些指 定的盘数据的写入,然后创建该数据的备份副本(即,"复制品")。不幸的 是, 一般没有简单的方法来供备份组件向生产服务器处的备份API描述其数 据。有时候可能有大量需要在备份过程期间参考的备份API的事实进一步加剧 了这一困难。
另外,创建特定数据的特定应用程序正请求备份服务的事实通常意味着在任何给定时间可能备份少于全部的生产服务器数据。例如,常规的备份机制通 常对于正被备份的数据而言是应用程序专用的。这一应用程序专用备份方法通 常涉及在备份过程期间运行给定应用程序的多个实例。然而,可以理解,运行 给定应用程序的多个实例出于多种原因,不论是从成本还是资源花费观点来看 都是低效的。
此外,甚至使用应用程序来提供备份服务在某种程度上是低效的,因为应 用程序专用的备份一般不提供应用程序数据的时间点副本而不带来重大的资 源花费。这可意味着应用程序可能无法以高频率提供应用程序一致的时间点备 份(由此提供高粒度的恢复点)而不使生产服务器和备份服务器负担过重。由 此,由特定应用程序执行的常规备份通常不能提供仅旧了几分钟的时间点备份
的"开机备用"(hot standby)。
该一般缺乏粒度可配置性可延及备份系统中的各种各样其它问题。例如, 常规的备份系统可能难以为特定巻上的各种类型的文件、特定文件夹或文件夹 位置来配置。由此,可能存在与使得常规备份系统以比仅整个一个或多个巻或 仅整个文件更好的粒度来备份生产服务器数据,而非仅备份文件的实际上已经 修改了的那些部分相关联的困难。这些和其它类似的问题通常意味着生产服务 器和备份服务器被配置成在其间复制和传输比所需的更多的数据,这当然会影 响系统性能和网络带宽。特别地,生产服务器可能正在复制和传输未改变的文 件数据,以及仅一小部分改变的整个文件。由于这一原因,备份服务器也可能 需要投入比所需的更多的存储容量来备份生产服务器数据。
因此,可以理解,上述因素中的每一个(或其组合)会负面地影响恢复点 目标("RPO"),其一般指的是需要将数据恢复回到多远的时间以使组织能 在灾难之后重新启动操作。上述因素也会负面地影响恢复时间目标(RTO), 其一般指的是在灾难之后要经过多少时间才可恢复重新启动操作所必需的数 据。即,常规的备份系统一般配备较差以致于无法提供相对高的恢复点,尤其 是在相对快的时间量内,而不会对系统资源带来不恰当的负担。
因此,现有的备份系统面临着可被解决的多个困难。
简要概述本发明的各实现用被至少部分地配置成优化备份系统中的恢复点目标和 恢复时间目标的系统、方法和计算机程序产品解决了现有技术中的一个或多个 问题。例如,在至少一个实现中,生产服务器处的资源节省可通过用巻过滤器 驱动器监视对生产服务器巻的改变来实现。另外,可通过主要仅向备份服务器 传输自从最后一个复制周期以来的增量改变(例如,改变的字节或字节范围) 来高效地使用网络带宽和备份服务器资源。如可从本文中更完全地理解的,这 些优化可提供以实际上连续(或近乎连续)的方式备份生产服务器数据而不会 大量耗尽生产服务器资源、备份服务器资源和/或网络带宽问题的能力。
例如,从生产服务器的观点来看的以实际上连续的、 一致的方式复制生产 服务器数据的方法可涉及将巻数据的副本从生产服务器的一个或多个巻发送 到备份服务器。在这一情况下,所发送的关于巻的数据的副本一般对于第一时
间实例(instance of time)是一致的(即,应用程序一致或文件系统一致)。 此外,该方法可涉及经由一个或多个巻日志文件来标识对巻数据的一个或多个 改变。该方法还可涉及在标识了复制周期事件之后,将一个或多个数据改变保 存在一个或多个巻日志文件中。 一般而言, 一个或多个数据改变对于第二(即, 后续的)时间实例也是一致的。此外,该方法可涉及向备份服务器发送一个或 多个改变的副本。由此,备份服务器将具有一个或多个巻的数据的副本,其中 数据对于第一时间实例和第二时间实例是有效的。
相反,从备份服务器的观点来看的以实际上连续的、 一致的方式复制生产 服务器数据的方法可涉及从生产服务器接收一个或多个巻备份。在这一情况 下, 一个或多个巻备份对于初始时间实例是一致的。该方法还可涉及接收一个 或多个应用程序一致的备份更新,其中至少一个备份更新是对于后续时间实 例、对一个或多个巻备份中的至少一个的一致更新。另外,该方法可涉及接收 对根据后续时间实例为有效的数据的恢复请求。
此外,该方法还可涉及标识一个或多个备份服务器巻处对后续时间实例所 请求的数据。在这一情况下,所请求的数据包括至少一个应用程序一致的备份 更新的至少一部分。另外,该方法可涉及将对后续时间实例有效的所请求的数 据发送给生产服务器。
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨 在用于帮助确定所要求保护的主题的范围。
本发明的示例性实现的附加特征和优点将在以下描述中叙述,且其一部分 根据本描述将是显而易见的,或可通过对这些示例性实现的实践而获知。各个 特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现和获得。 这些和其他特征将从以下描述和所附权利要求书中变得更完全显而易见,或者 可通过如下所述的这些示例性实现的实践而知。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方法,将通过引用附图 中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可 以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限 制,本发明将通过使用附图用附加特征和细节来描述和说明,附图中


图1A示出了根据本发明的一个实现的体系结构概览图,其中生产服务器 创建增量的应用程序(或文件系统) 一致的备份,并将这些备份发送给备份服 务器;
图1B示出了根据本发明的一个实现的概览图,其中巻过滤器驱动器使用 系统存储器和一个或多个物理盘来监视对巻的改变;以及
图2示出了根据本发明的各实现的、包括从生产服务器和备份服务器的观 点执行的动作序列的方法的流程图。
详细描述
本发明涉及至少部分地被配置成优化备份系统中的恢复点目标和恢复时 间目标的系统、方法和计算机程序产品。例如,在至少一个实现中,生产服务 器处的资源节省可通过用巻过滤器驱动器监视对生产服务器巻的改变来实现。 另外,可通过主要仅向备份服务器传输自从最后一个复制周期以来的增量改变 (例如,改变的字节或字节范围)来高效地使用网络带宽和备份服务器资源。 如可从本文中更完全地理解的,这些优化可提供以实际上连续(或近乎连续) 的方式备份生产服务器数据而不会大量耗尽生产服务器资源、备份服务器资源和/或网络带宽问题的能力。
如可从以下说明书和权利要求书中更完全理解的,本发明的各实现可通过 用生产服务器数据的"全快照"刷新备份服务器来满足各种各样的"恢复时间 目标"。另外,本发明的各实现包括能在生产服务器处实现的巻过滤器驱动器。
如此处可更完全地理解的,巻过滤器驱动器可被配置成监视对生产服务器巻上 的字节(和/或字节块)的改变。生产服务器因而可被配置成通过仅向备份服务 器发送这些改变的字节(或字节块)来发送整个快照(或备^3、副本)。由此, 对巻过滤器驱动器的使用可减轻对否则可能在将生产服务器数据的全快照移 至备份服务器时消耗的资源的负担。
此外,由于这些和其它特征,生产服务器可向备份服务器提供时间上间隔 较近的若干"一致"(即,应用程序一致和/或文件系统一致)快照(即,初始 备份和后续阴影副本)的实际上连续的备份。另外,由于对备份的每一更新是 应用程序一致(和/或文件系统一致)的,或者对特定的时间实例是有效的,因 此每一更新之间的差异也将是应用程序一致的。由此,本发明的各实现向用户
提供了以相当高的粒度(例如,仅旧了几分钟)恢复各种各样的应用程序一致 的数据(例如,从文件级、数据库级、甚至整个生产服务器级)而只有比本来 所需的少得多的负担的能力。
一般而言,有各种根据本发明的各实现的用于实现连续的、 一致的备份服 务的方法。在至少一个非常基本的意义上,创建一致备份包括创建一个或多个
巻(例如,175)的基线副本(例如,145),然后用对该一个或多个巻的递增 的、 一致的更新(例如,150、 155)来补充该基线副本。例如,图1A示出生 产服务器105创建所选巻175上的数据的至少一个基线备份副本(例如,145)。 除了简单地创建基线副本145之外,系统100中的备份管理员可使用任意数量 或类型的机制来使得副本145 —致。
在一个实现中,备份管理员可使用安装在备份服务器110和/或生产服务 器105处的复制代理(未示出)来引导该复制过程。例如,在复制周期期间, 复制代理可被配置成指示生产服务器105上的任何一个或多个适当的应用程序 写入器对单个时间点即刻挂起任何一个或多个巻上的写活动(例如,数据库可
横跨若干巻,并且若干应用程序可使用具有不同复制时间表的同一巻)。(对于文件共享备份,可能甚至完全不涉及应用程序写入器)。这允许复制代理因 而创建一个或多个巻的单时间点备份(即,"阴影副本")。
复制代理还可向每一应用程序写入器提供指令以对其感兴趣的数据执行 特定功能,由此确保所有数据和元数据对于复制周期的该时间点是一致的。对 于没有应用程序写入器或与其相关联的相应插件的更简单的应用程序,复制代 理可被配置成仅仅指示这些应用程序在复制周期期间冻结或关闭。上述用于创 建一致备份的代理、组件和功能在至少一个实现中可在例如具有巻阴影副本服 务("VSS")的微软环境中提供。
在任何情况下,对特定的时间实例冻结了对特定巻(或多个巻)的感兴趣
的写入,生产服务器105然后可形成并发送感兴趣的巻(或替换地,仅这些所 选的文件夹、文件或文件类型)的副本。例如,图1A示出生产服务器105可 向备份服务器110提供该初始基线副本145。 一般而言,生产服务器105可用' 任意数量的方式来提供基线副本145。例如,在一个实现中,生产服务器105 只需通过网络连接来发送副本145。在其它实现中,诸如在网络带宽可能更受 限的情况下,备份管理员可以将巻副本转移到磁带(或另一中间存储节点一未 示出),且在稍后将该磁带连接到备份服务器110。不论是如何执行的,生产 服务器105都向备份服务器110提供了对于共享同一复制周期的感兴趣的巻、 文件夹、文件或文件集的所有数据的至少一个一致的基线副本(即,对于时刻 "to"是有效的)。
在提供了一个或多个生产服务器巻的一个或多个基线副本之后,备份服务 器110可继续接收对基线备份的更新。例如,备份服务器110可按照各种各样 可配置复制时间表,诸如范围为约5-10分钟、10-15分钟、15-30分钟等的时 间表,来继续备份生产服务器105。 一般而言,备份管理员配置复制周期的等 级是能访问特定"恢复点"的粒度等级。
如先前所讨论的,通常时间点备份的可访问性中的相对较高的粒度等级可 能对于某些备份系统而言是极其资源昂贵的。由此,为了创建上述"恢复点" 的粒度等级而不会必然地损害"恢复所花费的时间"(例如,不招致显著的开 销),本发明的各实现可提供多个重要的组件和功能。
例如,在以下更完整讨论的一个实现中,可使用巻过滤器驱动器115来监视对生产服务器105处的一个或多个巻(例如,175)中的任一个的迭代改变, 这或者用存储器中位图来实现,或者通过在盘上的巻日志文件中标记特定的已 改变字节(或字节块)来实现。 一般而言,巻过滤器驱动器(例如,115)将 独立于基于硬件或软件的"快照"如何在生产服务器105上实现。然而,可以 理解,巻过滤器驱动器115不一定是必需的,并且可由其它组件执行类似的功 能,这些功能也在此讨论。在附加或替换实现中,生产服务器105还可通过使 用常规的阴影副本监视机制,和/或更新序列号日记(即,"USN日记"140) 等,来监视对巻的改变(例如,对文件120、 125、 130等的改变)。特别地对 于微软操作环境,例如,这些组件是通过对巻阴影副本服务("VSS")和 USN日记的组合使用来提供的。
一般而言,巻日志文件(例如,135)可包括在关于对巻的每一次写入的 特定复制周期期间对巻的所有改变(例如,巻偏移量、数据长度改变),和/ 或改变的存储器内位图。当出现特定复制周期时,现有巻日志文件(例如,135) 被冻结,并且可创建一新的巻日志文件(未示出)来收集对于下一复制周期的 改变。在一个实现中,巻级改变可直接被发送到备份服务器110,而没有任何 附加的相关信息。发送到备份服务器110的对应的更新然后可作为"字节n" (或"字节块n变为n+l")应用于复制品。在附加或替换实现中,生产服务 器105处的巻数据也可与USN日记(或相关组件)140信息相关。
特别地,USN日记(例如,140)包括关于文件系统中的文件名数据的这 些活动的加时间戳的信息。与USN日记140相似或相同的组件也被称为改变 过滤器或改变日记等。因此,此处对"USN日记"140的特别引用主要是出于 方便的目的而做出的。在任何情况下,参考文件系统活动,生产服务器105可 组合巻日志文件(例如,135)数据和改变日记数据(例如,USN日记140) 来将对巻174的各个写入的时间、活动类型和文件名等相关。
由此,USN日记140也可结合巻日志文件135使用来将诸如特定字节或 "字节块"改变的地址(以及对于该改变的对应的文件)等相关。特别地,巻 上的每一文件可被认为是可寻址字节的开集,以及可寻址固定长度字节块的开 集。在某些情况下,监视并传输字节块(而非个别字节)可能是监视并传输改 变以及确定对备份目的需要多少空间更高效的方式。特别地,这部分地是由于字节块表示了通常在某种程度上小于整个文件、但大于单个字节的粒度等级。 由此,图1A示出生产服务器105将对其要保护的文件的各种字节或字节块改 变记入日志。
例如,图1A示出生产服务器105将自从上一个复制周期(例如,前5、 10、 15、 20、 25或30分钟等)以来文件120的字节(或"字节块")121、 122 和123已改变(例如,120是一新文件)记入日志。类似地,尽管文件125包 括字节(或字节块)127、 128和129,但仅字节128和129已改变;并且在文 件130包括字节131、 132和133的情况下,仅字节133自从上一个复制周期 以来已改变。 一般而言,生产服务器105可将这些已改变字节记入巻、文件夹 或相关文件的只读阴影副本中。如上所述,生产服务器105还可将对于巻日志 文件的这些已改变字节作为存储器内位图(例如,对巻上的每一数据块使用一 位)来存储,该位图稍后在复制期间被传递给物理盘。不论是如何记入日志或 监视的,在适当的时刻(即,下一复制周期),生产服务器105然后可仅准备 这些文件改变(即,121、 122、 123、 128、 129、 133等)来发送到备份服务器 110。
在该特定示例中,改变(即,121、 122、 123、 128、 129、 133等)各自
对于最新近的时间点(即,"V')是有效的,且因此是一致的(即,应用程 序一致或文件系统一致)。值得注意的是,由于这些字节(或字节块)表示了 两个一致的时间点备份之间的差异,因此备份服务器110处的这些字节(或字 节块)的应用也可以是一致的。在标识了这些数据改变之后,生产服务器105 可将这些改变作为更新150 (对时刻h)发送到备份服务器110。类似地,生 产服务器105可在对下一复制周期的下一递增更新中标识并发送每一下一递增 数据改变集(即,对一个或多个巻记入日志的数据改变)。例如,图1A还示 出生产服务器105准备并向备份服务器110发送更新155 (对时刻t2)等等。
可以理解,从生产服务器105读取改变的数据并准备消息150的时刻,对 巻数据可能有附加的改变,这会使得所读取的数据变得不一致(即,对于时刻 "V'是一致的,且对后续时刻是有效的)。因此,如先前关于基线副本145 所讨论的,在至少一个实现中可使用巻阴影副本服务(或其它类似VSS的机 制)来读取仅关于冻结的、特定的时间实例的数据,而不读取其后续的任何改变。这可帮助确保快照更新150 (以及155等)直到所指示的发生快照(也称
为备份更新或更新)操作的时间实例都是一致的。
在接收到之后,备份服务器110可将每一备份和对应的更新存储在特定的 复制巻中。在一个实现中,备份服务器110将备份和更新存储在同一存储介质 的同一巻分配中。在其它实现中,备份服务器110 (和/或另外的备份服务器或
存储节点)可将备份和对应的更新存储在分开的巻上,甚至存储在分开的存储 介质上,而不管备份管理员期望如何。
在某些情况下,由于对生产服务器105的实际上连续的、迭代的备份的特 性,备份管理员可能需要将数据的多个方面与生产服务器105数据同步。例如, 可能存在复制周期期间和/或在若干复制周期上失败的情况,诸如可能由于网络 断线、日志溢出(例如,USN日记换行等)。因此,在一个实现中,备份管理 员可以通过创建生产服务器105的新基线全快照(例如,类似于145)来执行 确认或纠正。备份管理员然后可以在生产服务器105上的数据的快照和备份服 务器110上的数据之间执行(例如,仅有生产服务器105)校验和比较(或其 它确认)。如有必要,然后可修补备份服务器110上的任何错误数据。
特别地对于WINDOWS操作组件,例如,该校验和在至少一个实现中可 以使用在WINDOWS SERVER 2003中使用的远程差异比较("RDC")来执 行。在某些情况下,对RDC类型的机制的使用在广域网("WAN")环境中 可能是优选的。在另一实现中,诸如在局域网("LAN")中可能是优选的, 备份管理员可将快照中的每一文件划分成"组块"(例如,字节块)集,然后 对每一组块计算校验和。
在任何情况下,部分地由于由本发明的各实现提供的复制粒度等级,如果 用户请求仅旧了几分钟的文件(或其它数据表示)的特定版本(例如,因最近 的个人计算机崩溃而需要的),则用户可向备份服务器110发送对该文件的特 定版本的请求。例如,用户可请求在5分钟之前(例如,"V',或在更新121、 122、 123之前)有效的文件120的特定副本。类似地,管理员可请求一个或多 个巻175的整个复制(未示出)。在接收到该请求之后,并取决于请求的 本质,备份服务器110然后可找出适当的所请求的数据。例如,对于基本文件 系统数据,巻175的每一更新可包含所请求的数据的全副本。由此,备份服务器110可能只需标识用户所请求的时刻,标识该时刻相应的更新内的数据,然 后向用户提供该数据的副本(例如,恢复消息160)。
在其它情况下,诸如对于邮件或其它类型的数据库应用程序数据,备份服
务器110所接收的每一增量更新(例如,150、 155)可能仅包含对所请求的数 据的增量更新。由此,备份服务器110可被配置成回放从回到最后一个完整基 线的所请求的恢复点开始的每一增量更新。备份服务器IIO然后可在回放期间 组合所标识的所请求的数据(例如,145、 150、 155或t^),直到达到请求中 所指定的时刻。当组合并准备了来自原始备份和相应更新的所有相关数据时, 备份服务器IIO然后可发送恢复响应(例如,160),其根据所请求的时刻是 有效的。例如,图1A示出备份服务器IIO发送响应160,其指示所恢复的数 据对于时刻"t,是有效的。
在上述实现中,备份服务器110因此需要应用程序支持来回放增量更新。 在另一实现中,基线全副本和基线全和所请求的时间点之间的任何对应的增量 更新可以简单地被复制回生产服务器105。生产服务器105处相应的应用程序 写入器(例如,阴影副本服务框架内的应用程序写入器)然后可回放该全备份 上的日志。
一般而言,在对特定数据的请求和相应的响应之间经过的时间是至少以下 两部分的函数
1. 将数据从备份服务器IIO传输到生产服务器105的时间;以及
2. 备份服务器IIO (例如,经由相关备份代理)完成恢复的时间。 当然,将数据从目标传输到源的时间一般是可用网络带宽以及备份服务器
IIO和生产服务器105处的盘速度和资源使用的函数。相反,创建特定恢复的 时间通常是从给定基线恢复生产服务器数据的全副本所需的时间、以及标识并 回放从基线累积的累积更新(例如,)以恢复特定时间点所需的时间的 函数。因此,可以理解,恢复时间可以通过限制备份服务器110 (或生产服务 器105)对任何给定恢复请求必须回放的更新的数量,诸如通过创建周期性的 基线全副本(例如,145)来极大地改善。
如上所述,限制备份服务器110需要回放的增量更新的数量的一种方法可 涉及周期性地创建新的"全"基线快照。由于创建并向备份服务器110发送新的全快照在某些情况下可能是资源昂贵的(例如,网络带宽、生产服务器105 资源、以及所需的备份服务器110盘空间的量),因此本发明的各实现还允许 创建"智能全快照"。这些智能全快照实际上是预定时间点的基线分界。例如, 每隔预定时段,诸如每隔两周,备份服务器110可巻起两周的增量更新(例如, 150、 155等)以及数据的上一个基线副本(例如,145或更加新),且因此创 建生产服务器105数据的本质上新的"tQ"副本。
为了将这些增量更新的每一个高效地巻在一起,备份服务器IIO可被配置 成监视自从上一次全快照以来对生产服务器105巻的所有写入。例如,在至少 一个实现中,备份服务器IIO在生产服务器105处实现巻过滤器驱动器115以 监视对巻(即, 一个或多个巻)的改变,并在每一复制周期间将这些写入存储 在生产服务器105的存储器170中。例如,图1A (也参见图1B)示出巻过滤 器驱动器115在生产服务器105上的巻175和存储器170之间接口 。如在图1B 中更全面地理解的,每次当对巻数据做出改变时,巻过滤器驱动器115可将该 改变(或改变集)记录在巻日志文件135中。在至少一个实现中,这些改变作 为对一个或多个巻的每一个的存储器内位图(例如,117a)被记录在系统存储 器170中。当生产服务器105准备好特定的复制周期时,巻过滤器驱动器115 然后可将所有存储器内位图传递给巻175,并且生产服务器105然后可将对应 的数据发送给备份服务器IIO。
例如,图1B示出存储170用于收集对应于各种存储器内位图的快照数据。 特别地,图1B示出巻过滤器驱动器115标识特定文件改变(g卩,文件改变121、 122、 123等),并随后将这些改变作为相应的存储器内位图193、 195等存储 在存储器分配190a中。在该特定示例中,巻过滤器驱动器115存储自从上一 复制周期以来对相应的一个或多个巻的所有改变(即,快照185a— "t2"), 且因此每一位图193、 195等对于相应快照(即,190a,快照"t3")中的最新 近的时间实例是有效的。
当触发复制周期时,诸如由于从复制代理接收到指令,巻过滤器驱动器 115将对快照190a的所有位图(即,位图193、 195等)传输到适当的巻175 分配190b。例如,图1B示出存储器快照部分180a和185a被清空,因为已经 经过了生成它们的复制周期。此外,对应的巻175分配180b、 185b等现在包含先前分别存储在存储器部分180a、 185a中的"所有位图"183、 187。最终, 当对应于位图集的快照被删除时,位图(例如,183、 187)可保留在巻(例如, 175)上。
这些存储器内位图(例如,193、 195)可用多种不同的方式来创建和实现。 例如,在一个实现中,备份服务器110取生产服务器105巻的阴影副本快照(例 如,快照150),可向阴影副本提供者(软件或硬件)发送输入/输出控制
("IOCTL")。该IOCTL可由巻过滤器驱动器115截取以拆分活动位图。 作为响应,在阴影副本的创建期间,巻过滤器驱动器115通过创建一组冻结的 位图(例如,180a/189b、 185a/185b)以及一组新的活动位图(例如,190a/190b) 来同步该拆分。在另一替换实现中,能够获得阴影副本差异区域(例如,VSS 差异区域)的实体可知晓巻级改变并且还知晓USN/文件系统。由此,该实体 可提供将给出改变的文件集和文件中的改变集的抽象。适当的复制或备份应用 程序然后可使用该基础结构来实现复制。
当触发复制周期时,巻过滤器驱动器115将冻结的位图传递给盘以减少存 储器170使用。巻过滤器驱动器115还可展示可针对自从最新近的快照(例如, "C )发生以来的所有改变来查询的一个或多个IOCTL。在一个实现中, 查询这些IOCTL返回自从最新近的快照以来累积的所有位图。可以理解,使 用此处描述的存储器内位图来监视改变可以是非常高效的,这至少部分是由于 存储器内位图往往不会显著影响生产服务器105资源。
在替换实现中,为标识这些所监视的改变的每一个,备份服务器110还可 使用例如USN日记140(或使用其它监视的文件元数据)来标识改变的文件集。 备份服务器110 (或相关组件)然后可以向生产服务器105文件系统查询每一 改变的文件所占据的文件范围。从文件系统查询到的文件范围和巻过滤器驱动 器115所报告的文件范围之间的交集可提供自从上一个复制周期以来改变的文 件的范围,且因此允许将特定文件(例如,数据库文件)排除在特定复制过程 之外。备份服务器110 (或相关组件)然后可对每一改变的文件(或者如USN 日记所报告的,或者如类似配置的元数据文档所报告的)重复该过程。
特别地对于使用USN日记来监视生产服务器105处的改变,可以理解, 生产服务器105处的文件参考号("FRN")可能不匹配存储在备份服务器110处的同一文件的FRN。由此,为了从生产服务器105向备份服务器110发送监 视的改变,在某些情况下计算到特定的改变的文件的正确的、匹配的路径可能 是重要的。例如,巻可具有以下改变,这涉及修改生产服务器105处对于文件 "y.txt"的路径
1) 修改C:\a\b\c\y.txt
2) 重命名C:\a\b为C:\p\q\r
3) 修改C:\p\q\r\b\c\y.txt
4) 删除C:\a
在以上示出的示例中,生产服务器105处的原始路径"a\b"被重命名为 路径"p\q\r",而原始路径的目录"\a"被删除。这得到生产服务器105处对 于文件"y.txt"的路径为"C:\p\q\p\r\b\c\y.txt"。然而,对生产服务器105处的 "y.txt"的这些路径改变可能不会自动导致对备份服务器110处的路径的改变。 具体地,对备份服务器110处的y.txt的路径一般保持为"a\b\c\y.txt"。 在 快照的时候,生产服务器105还可将以下对示例记录1-5所示的改变记录到 USN日记中
1) (rsn-修改,FRN = yFRN,父FRN-cFRN, 文件名=y.txt}
2) {rsn=重命名-旧,FRN = bFRN,父FRN = aFRN, 文件名=b}
3) {rsn=重命名-新,FRN = bFRN,父FRN = rFRN,文件名=b}
4) {rsn =修改,FRN = yFRN,父FRN = cFRN, 文件名=y.txt}
5) {rsn =删除,FRN = aFRN,父FRN =根,文件名=a} 除了上述示例之外,相关生产服务器105巻在复制时的状态被示为
"C:\p\q\r\b\c\y.txt"。
为了将该具体示例中对记录1的改变发送到备份服务器110,生产服务器 105需要从备份服务器110检索对"y.txt"的文件路径。具体地,由于上述路 径改变,对于"c-FRN"的快照中生产服务器105处的"y.txt"的路径是 C:\p\q\r\b\c\y.txt,这不同于其在备份服务器110处的路径(即,C:\a\b\c\y.txt)。 本发明的各实现可用至少两种替换方法来解决该问题。例如,在一个实现中, USN日记可简单地在关系型数据库中从备份服务器110检索并存储路径元数 据,且因此连续地将生产服务器105和备份服务器110处的文件路径相关。在替换实现中,生产服务器105可扫描USN日记两次。在第一遍中,生 产服务器105可通过对USN日记140的迭代扫描(或"遍")来相关该信息。 在一次扫描中,例如,生产服务器105高速缓存每一文件夹重命名。在第二遍 中,生产服务器105可基于高速缓存的重命名和当前路径来计算备份服务器 110处的相应路径。例如,在第一遍的结束,生产服务器105可高速缓存以下 关于已删除和/或重命名的目录的信息
{FRN = bFRN, 复制品—父=aFRN, 复制品_名称=b} {FRN = aFRN, 复制品一父=根, 复制品一名称-a) 为计算y.txt的文件路径,生产服务器105首先标识记录"1"中y.txt的父 FRN (即,"文件参考号")是cFRN。在下一步,生产服务器105计算cFRN 的文件名,以及父FRN的文件名。生产服务器105然后在査询文件系统之前 查看高速缓存。在该示例中,由于高速缓存对于父cFRN没有文件名条目,因 此生产服务器105查询文件系统,并确定文件名为c,且父为bFRN。
生产服务器105然后计算bFRN的文件名,以及bFRN的对应的父文件名。 如前一样,生产服务器105首先在査询文件系统之前查看。由于该示例中高速 缓存具有对于bFRN的条目,因此生产服务器105确定文件名是b,且父是 aFRN。生产服务器然后计算aFRN的文件名以及aFRN的父文件名。再一次, 生产服务器105在查询文件系统之前首先査看高速缓存,且由于该示例中髙速 缓存具有对于aFRN的条目,因此生产服务器105确定aFRN的文件名是"a", 且父FRN是"根"。
最终,生产服务器105计算最终路径为"c:\a\b\c\y.txt"。接着,当在第二 遍中处理记录3 (重命名-新)时,如下对新的父文件名更新高速缓存。 {FRN = bFRN,复制品—父=rFRN, 复制品—名称=b} {FRN = aFRN,复制品_父=根, 复制品—名称=&}
当生产服务器105处理了记录4时,即使该记录与记录1相同,为y.txt 计算的路径现在也是"C:\p\q\r\b\c\y.txt"。所计算的路径在该特定情况下是不 同的,因为高速缓存中的父"bFRN"现在是"rFRN"。因此,上文示出了两 遍算法如何可帮助优化生产服务器105传输到备份服务器110的数据量。特别 地,上文描述了生产服务器105可在第二遍时标识任何创建的文件,以及任何修改然后被删除的文件,且由此正确地将文件路径与备份服务器110相关的多 种方式。
因此,图1A-1B和相应的文字提供了用于以实际上连续的方式高效地备 份生产服务器的数据的多种系统、组件和机制。除了上述内容之外,本发明的 各实现还可以按照具有用于实现特定结果的动作序列的方法的流程图来描述。
具体地,图2示出了从生产服务器105和备份服务器110的观点来看的、根据 本发明的各实现的用于备份和恢复数据的流程图。图2所示的动作在以下参考 图1A-1B所示的组件和图示来描述。
首先要说明的是,此处有时作出对时间序列中的"第一"、"第二"或"第 三"事件(或"实例")的引用。然而,可以理解,这些指定仅仅是为了区分 连续集上的独特实例,使得"第一"事件或实例不仅不同于"第二"或"第三"
实例,而且还在"第二"和域"第三"实例之前的某一点发生。例如,创建和 发送数据(例如,145)的基线"全副本"也可被认为是关于某一先前事件(未 示出)的第二或第三(或稍后)实例,即使其最初被描述为对于更新150的第 一实例。类似地,更新150可被描述为相对于更新155 (例如,"第二"实例) 的"第一"时间实例处发生的事件,等等,尽管这些术语最初在此被描述为所 示示例中相对于基线全145的"第二"和"第三"时间实例。在相对意义上对 顺序事件的此类术语使用也适用于此处对术语"最初"或"后续"的使用。
例如,图2示出从生产服务器105的观点来看的以实际上连续的、应用程 序(即,或文件系统) 一致的方式复制生产服务器数据,使得新近的数据可容 易地从备份服务器恢复的方法包括向备份服务器发送巻数据的一致副本的动 作200。动作200包括从生产服务器向备份服务器发送巻数据的副本,其中数 据对于第一时间实例是一致的。例如,生产服务器105 (例如,响应于复制代 理或来自备份服务器110的其它命令)创建对特定时间点(例如,"to") — 致的完整巻备份145。在一个实现中,这涉及调用生产服务器105处的所有应 用程序写入器冻结并开始准备备份。生产服务器105然后复制巻(或特定文件、 文件夹或文件类型等)上的所有数据,并准备该数据来发送到(并存储在)备 份服务器110。
类似地,图2示出从备份服务器110的观点来看的以实际上连续的、 一致的方式复制生产服务器数据,使得新近数据可从备份服务器容易地恢复的方法
包括从生产服务器接收一致巻备份的动作240。动作240包括从生产服务器接
收一个或多个巻备份,其中一个或多个巻备份对于初始时间实例是一致的(即,
应用程序或文件系统一致)。例如,图1A示出备份服务器1I0接收并存储全 备份145,该备份是通过网络从生产服务器105接收的,或是从在某一点处与 备份服务器110连接的磁带驱动器或其它存储节点接收的。特别地,备份管理 员可以获得生产服务器105的硬件快照,然后将该快照附连到备份服务器110。
此外,图2示出从生产服务器105的观点来看的方法包括标识对巻数据的 一个或多个改变的动作210。动作210包括经由一个或多个巻日志文件来标识 对巻数据的一个或多个改变。例如,如图1A和1B所示,巻过滤器驱动器115 可跟踪对文件120、 125和130的改变,并将这些改变存储在巻日志文件135 中。在一个实现中,这一个或多个改变可在被置于巻日志文件135中之前替换 地作为存储器内位图存储在存储器170中。
图2还示出从生产服务器105的观点来看的方法包括将一个或多个一致更 新保存到盘的动作220。动作220包括在标识了复制周期事件之后,将一个或 多个数据改变保存在一个或多个巻日志文件中,其中一个或多个数据改变对于 第二时间实例是一致的。例如,在标识了复制周期触发器(例如,来自复制代 理)之后,巻过滤器驱动器将存储器分配190a中的位图193、 195传递给所分 配的物理盘空间190b (例如,也对应于巻日志文件135)。该物理盘分配190b 因而包括了不同于存储在盘分配185b处的快照187 (即,"所有位图"187) 的、对于一个时间点的快照。
此外,图2示出从生产服务器105的观点来看的方法包括在复制期间将一 致更新的副本发送到备份服务器的动作230。动作230包括将一个或多个数据 改变的副本发送到备份服务器,使得备份服务器具有对于第一时间实例和第二 时间实例有效的数据副本。例如,除了将全更新145传递给备份服务器110之 外,生产服务器还发送一致快照更新150和155,它们各自对于不同的时间点 (即,"t, 、 "t2"等)是有效的。
因此,图2示出从备份服务器110的观点来看的方法包括接收一个或多个 一致更新的动作250。动作250包括接收一个或多个一致备份更新,其中至少一个备份更新是对于后续时间实例的、对一个或多个巻备份中的至少一个的一
致更新。例如,备份服务器110接收一致快照更新150、 155中的任一个,使 得备份服务器现在具有与全备份145 ( "to",或某一其它基线全)相比的、 对于各种增量时间点(即,"V' 、 "t2"等)的数据副本。
此外,图2示出从备份服务器110的观点来看的方法包括接收恢复请求的 动作260。动作260包括接收对根据后续时间实例为有效的数据的恢复请求。 例如,备份服务器110接收对于对时刻"t,有效的特定文件的请求(未示出), 该特定文件是在基线全备份145和更新150两者中找到的文件。此外,图2示 出从备份服务器110的观点来看的方法包括标识对后续时间实例有效的所请求 的数据的动作270。动作270包括标识一个或多个备份服务器巻处对后续时间 实例的所请求的数据,其中所请求的数据包括至少一个一致备份更新的至少一 部分。
例如,对于数据库数据,备份服务器110可将每一前导和当前时间点处对 该请求有效的文件的副本巻在一起;S卩,备份服务器110组合来自时刻"to" 和"t,的文件副本。另一方面,对于文件系统数据,每一后续更新(例如, 150、 155)可包括所请求的文件的全更新副本,且因此,备份服务器110只需 标识对所请求的时间点的最新近的更新(或某一其它后续更新)中所请求的数 据。由此,取决于所请求的数据的类型,备份服务器UO可能需要标识从所请 求的点回到最近的基线全的每一增量更新,或者可能需要仅仅标识最近的时间 点更新中所请求的数据。
由此,图2也示出从备份服务器110的观点来看的方法包括返回所请求的 数据的动作280。动作280包括将对后续时间实例有效的所请求的数据发送给 生产服务器。例如,对于数据库数据的情况,备份服务器110提供恢复160, 其包括基线全数据(例如,145)以及增量更新数据(例如,150、 155),而 对于文件系统数据,备份服务器110提供至少具有来自所请求的更新时间点的 文件数据的恢复。备份服务器110的响应160也可以是响应对于哪一恢复时间 有效的指示。如图1A所示,恢复数据160示出数据对于时刻"tr是有效的。
因此,根据本发明的各实现的图示、组件和方法提供了优于常规备份系统 的多个优点。具体地,本发明的各实现提供了备份数据的方法,该方法是数据源不可知的(例如,经由巻过滤器驱动器115)、不一定要求运行在备份服务 器上的应用程序的版本、并且表示实际上连续的复制。如上所述,这些优化至 少部分地基于使用巻过滤器驱动器(例如,115)在巻级以低开销跟踪或监视 改变,以及也使用例如USN日记在文件级执行复制周期,使得文件级包括/排 除仍可被应用。
另外,本发明的各实现能够以优化的方式在备份服务器处创建生产服务器 数据的全基线副本,而无需通过网络传输完整的数据。最小化传输到备份服务 器的后续数据的量可大量减少网络和生产服务器上的潜在资源耗尽。由此,本 发明的各实现进一步提供了满足严格的恢复时间目标的多种替换方式。本发明 的各实现还提供了以低性能开销来跟踪数据改变(例如,字节或字节块级), 以及以独立于文件系统和硬件/软件快照的方式来跟踪数据改变的多种方式。此
外,本发明的各实现还提供重构路径信息(诸如用基于USN的复制)而无需
相关生产服务器上的持久状态的一种或多种方式。
本发明的各实施例可以包括含有各种计算机硬件的专用或通用计算机,这 将在以下做出进一步讨论。本发明的范围内的各实施例也包括用于承载或其上 储存有计算机可执行指令或数据结构的计算机可读介质。这样的计算机可读介 质可以是可由通用或专用计算机访问的任何可用介质。作为示例而非限制,
这样的计算机可读介质可包括RAM、 ROM、 EEPROM、 CD-ROM或其它光盘 存储、磁盘存储或其它磁存储设备、或可用于承载或存储计算机可执行指令或 数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其它 介质。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合) 传输或提供给计算机时,该计算机将该连接适当地视为计算机可读介质。因此, 任何这样的连接被适当地称为计算机可读介质。以上的组合也应包括在计算机 可读介质的范围之内。
计算机可执行指令包括例如,使通用计算机、专用计算机、或专用处理设 备执行某一功能或某组功能的指令和数据。尽管用对结构特征和/或方法动作专 用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于 上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例 形式公开的。本发明可具体化为其它具体形式而不背离其精神或本质特征。所述实施例 在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附 权利要求书而非所述描述指示。落入权利要求书的等效方式的含义和范围内的 所有改变应被权利要求书的范围涵盖。
权利要求
1. 一种在计算机化环境(100)中的生产服务器(105)处的方法,在所述计算机化环境中,一个或多个生产服务器在一个或多个备份服务器(110)处备份一个或多个卷(175)上要保护的数据,所述方法以实际上连续的、一致的方式复制生产服务器数据,使得新近数据可容易地从所述备份服务器恢复,所述方法包括以下动作从生产服务器(105)向备份服务器(110)发送(200)一个或多个卷的数据的副本,其中所述数据对于第一时间实例(145)是一致的;使用一个或多个卷日志文件(135)标识(210)对所述一个或多个卷(175)的数据的一个或多个改变(121、122、123);在标识了复制周期事件之后,将所述一个或多个数据改变保存(220)在所述一个或多个卷日志文件中,其中所述一个或多个数据改变对于第二时间实例(150)是一致的;以及将所述一个或多个卷的一个或多个数据改变的副本发送(230)到所述备份服务器,使得所述备份服务器具有对第一时间实例(145)和第二时间实例(150)有效的所述一个或多个卷的数据的副本。
2. 如权利要求1所述的方法,其特征在于,还包括将所述巻的文件级数据改变保存在改变过滤器、改变日记或USN日记(140)之一中。
3. 如权利要求2所述的方法,其特征在于,还包括将所述一个或多个巻日志文件(135)与所述改变过滤器、改变日记或USN日记(140)之一相关以标识对应于每一改变的文件中的一个或多个数据改变的一个或多个改变的文件(120)的动作。
4. 如权利要求1所述的方法,其特征在于,还包括在所述一个或多个巻曰志文件中标记在字节级或字节块级的任一个上的所述一个或多个数据改变(121、 122、 123)的动作。
5. 如权利要求1所述的方法,其特征在于,还包括经由一个或多个存储器内位图(117a)标识对所述一个或多个巻的数据的改变的动作,其中所述一个或多个存储器内位图对应于所述第二时间实例(150)。
6. 如权利要求5所述的方法,其特征在于,还包括在所述复制周期事件 期间将所述一个或多个存储器内位图(187)保存到所述一个或多个巻日志文 件的动作,其中所述一个或多个巻日志文件存储在盘(117b、 185b)上。
7. 如权利要求5所述的方法,其特征在于,还包括以下动作 冻结对应于所述第二时间实例的一个或多个存储器内位图;以及 创建对应于在所述第三事件实例(155)对所述一个或多个改变的文件的新写入的一个或多个存储器内位图(193、 195)的新集合。
8. 如权利要求l所述的方法,其特征在于,巻过滤器驱动器(115)接收 所述一个或多个数据改变,并将所述一个或多个数据改变应用于所述一个或多 个巻日志文件(135)。
9. 如权利要求1所述的方法,其特征在于,对所述第一和第二时间实例 一致的所述一个或多个数据改变是应用程序一致或文件系统一致的至少一种。
10. 如权利要求1所述的方法,其特征在于,还包括改变所述生产服务器 处对应于所述一个或多个数据改变(121、 122、 123)中的任一个的文件(120) 的文件路径,使得所述生产服务器(105)处的文件路径不同于到所述备份服 务器(110)处的文件的路径的动作。
11. 如权利要求10所述的方法,其特征在于,还包括用于将所述生产服 务器(105)处和所述备份服务器(110)处的文件的路径相关,使得对所述文 件的新改变可与所述文件的路径改变一起被发送到所述备份服务器的步骤。
12. 如权利要求ll所述的方法,其特征在于,所述用于将文件(120)的 文件路径相关的步骤包括以下动作标识所述文件(120)的初始路径;以及 存储所述生产服务器(105)处的所述文件的初始文件路径。
13. 如权利要求ll所述的方法,其特征在于,所述用于将文件(120)的 文件路径相关的步骤包括以下动作至少第一次扫描USN日记(140)以高速缓存所述生产服务器处的所述文 件路径的改变;至少第二次扫描所述USN日记以标识所述生产服务器(105)处的所述初始文件路径;基于所述第一次和第二次扫描计算到所述备份服务器处的所述文件的经 调整的路径。
14. 如权利要求l所述的方法,其特征在于,还包括将所述生产服务器处的巻数据的新更新发送到所述备份服务器的动作,其中所述新更新对于第三时间实例(155)是一致的,并且其中在所述第二 (150)和第三(155)时间实 例之间经过的时间可被配置为小于约一小时、或小于约半小时中的任一个。
15. 如权利要求14所述的方法,其特征在于,还包括向所述备份服务器 (110)发送对一个或多个文件的副本的请求的动作,其中向所述备份服务器的对一个或多个文件的副本的请求包括所述一个或多个文件对于所述第二 (150)或第三(155)时间实例中的一个是有效的指示。
16. 如权利要求15所述的方法,其特征在于,还包括从所述备份服务器 (110)接收恢复响应(160)的动作,其中所述恢复响应包括从所述第二或第三时间实例开始的所请求的一个或多个文件的数据的全副本。
17. —种在计算机化环境(100)中的备份服务器(110)处的方法,在所 述计算机化环境中, 一个或多个备份服务器备份来自 一个或多个生产服务器(105)的一个或多个巻的数据,所述方法以实际上连续的、 一致的方式复制 所述一个或多个生产服务器巻(175)的数据,使得新近数据可从所述备份服 务器容易地恢复,所述方法包括以下动作从生产服务器(105)接收(240) —个或多个巻备份,其中所述一个或多 个巻备份对于初始时间实例(145)是一致的;接收(250) —个或多个一致的备份更新,至少一个备份更新是关于后续 时间实例(150、 155)对所述一个或多个巻备份中的至少一个的应用程序一致 的更新;接收(260)对根据所述后续时间实例为有效的数据的恢复请求;标识(270) —个或多个备份服务器巻处关于所述后续时间实例的所请求的数据,其中所请求的数据包括所述至少一个一致备份更新的至少一部分;以及将对所述后续时间实例有效的所请求的数据(160)发送(280)给所述生 产服务器。
18. 如权利要求16所述的方法,其特征在于,还包括以下动作标识所请求的数据的基线全副本(145);标识在接收所述基线全副本和接收关于所述后续时间实例的至少一个备份更新之间接收到的、对所请求的数据的一个或多个一致备份更新(150、 155) 中的每一个;以及将所请求的数据的基线全副本与所标识的对所请求的数据的一个或多个 一致备份更新相组合。
19. 如权利要求18所述的方法,其特征在于,所述一个或多个巻备份和所述一个或多个一致备份更新是应用程序一致或文件系统一致中的至少一个。
20. —种在计算机化环境(100)中的生产服务器(105)处的计算机程序 产品,在所述计算机化环境中, 一个或多个生产服务器在一个或多个备份服务 器(110)处备份要保护的数据,所述计算机程序产品上存储有计算机可执行 指令,所述计算机可执行指令在被执行时使得所述生产服务器处的一个或多个 处理器执行一种方法,所述方法以实际上连续的、应用程序一致的方式复制生 产服务器数据,使得新近数据可容易地从所述备份服务器恢复,所述方法包括 以下动作从生产服务器(105)向备份服务器(110)发送(200) —个或多个巻的 数据的副本,其中所述数据对于第一时间实例(145)是一致的;使用一个或多个巻日志文件(135)标识(210)对所述一个或多个巻(175) 的数据的一个或多个改变(121、 122、 123);在标识了复制周期事件之后,将所述一个或多个数据改变保存(220)在 所述一个或多个巻日志文件中,其中所述一个或多个数据改变对于第二时间实 例(150)是一致的;以及将所述一个或多个巻的一个或多个数据改变的副本发送(230)到所述备 份服务器,使得所述备份服务器具有对第一时间实例(145)和第二时间实例 (150)有效的所述一个或多个巻的数据的副本。
全文摘要
数据可在生产服务器处以实际上连续的方式受到保护,而不必对源应用程序施加严格的约束。例如,生产服务器可以创建一个或多个卷的应用程序一致的备份,这些备份对应于第一时间实例。卷过滤器驱动器可使用存储器内位图来监视数据改变,同时日志文件和/或更新序列号日记可跟踪哪些文件被修改。卷更新对于(稍后的)时间实例也是一致的。在下一复制周期,诸如每隔几分钟(不论是如何配置的),卷过滤器驱动器将每一存储器内位图传递给生产服务器上的物理盘。生产服务器然后将更新发送给备份服务器,后者因而存储对多个时间实例的对卷的应用程序一致的备份。
文档编号G06F12/16GK101460934SQ200780020313
公开日2009年6月17日 申请日期2007年4月26日 优先权日2006年5月29日
发明者A·艾利, A·辛格拉, K·S·阿南德, M·K·瓦利亚帕拉姆比尔, R·M·弗莱尔斯, V·S·拜德弥, V·萨哈斯拉纳曼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1