通过流存储的快速机器引导的制作方法

文档序号:6354430阅读:334来源:国知局
专利名称:通过流存储的快速机器引导的制作方法
技术领域
本发明涉及计算机存储,尤其涉及通过流存储的快速机器弓I导。背景随着远程存储变得常见,存在很多这样的情况其中具有本地存储的计算机系统 没有其需要在本地存储的某些数据。例如,计算机器可先前将其本地存储备份,然而,随着 备份磁盘数据被存储在不同的机器上,机器的当前磁盘数据可能会丢失或损坏。另一个例 子是在新的物理机器正在被预配(provision)且具有空的硬盘驱动器的时候。机器通过将 操作系统映像复制到本地硬盘驱动器来网络引导,使得机器能够从本地驱动器重新引导。作为另一个例子,计算机系统能主控一个或多个虚拟机,各个虚拟机包括作为物 理机执行的软件。虚拟机可使用一个或多个虚拟硬盘,各个虚拟硬盘基本上是文件或其他 被配置成作为物理硬盘驱动器运行的存储盘区(例如,磁盘、磁盘上的分区等)。虚拟机库 可由“黄金映像”组成,“黄金映像”表示和虚拟机模板相对应的磁盘内容,用于有效地创建 彼此几乎相同地开始的多个虚拟机。然而,主物理机本地也许没有存储黄金映像数据,或者 本地可能没有存储其他潜在的大量虚拟磁盘数据。把数据复制到主机的过程可能需要很长时间,例如要几分钟,因此计算机系统或 者计算机系统上的虚拟机不能快速地引导。一种避免长延迟的方案放弃对本地存储的使 用,改为把数据存储在基于网络的存储(例如,FibreChannel、iSCSI、SAN、SMB)上。尽管该 方案允许计算机系统/虚拟机相对快速地起动,但是网络资源和基于网络的存储资源仍然 继续被无限期地消耗。对网络存储的依赖也使计算机系统/虚拟机遭受到基于网络的存储 失效。而且,根据基于网络的存储技术,相对于使用本地存储可实现的性能来说,性能还会 降低。再者,和常规的本地存储相比,使远程存储看上去像是本地存储的现有技术一般要昂 贵得多。

发明内容
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表 性概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制 所要求保护的主题的范围的任何方式来使用。简言之,这里所述的发明主题的各个方面针对这样一种技术,通过该技术,物理或 虚拟计算计算机器的虚拟存储设备作为一数据结构(例如文件)链来保持,该数据结构包 括保持在远处(例如远程)后台存储处的远处数据以及保持在近处(例如本地)后台存储 (初始为空)处的近处数据。当需要数据来对读操作进行服务时,访问近处数据以便在数据 可用的情况下提供数据,近处数据例如其中包括至少一个区分层(例如虚拟硬盘的区分文 件)。否则,访问远处数据来提供数据,远处数据例如包括基层。根据需要,可以对近处数据 进行写操作,例如对其中的区分文件。根据需要可以沿着该链进一步传播写操作,例如对不 止一个区分层并且/或者一直到基层。由于虚拟盘可立即使用,而不是需要在从所下载的映像引导之前下载整个操作系统映像,因此该技术便于快速引导。例如,在引导操作期间,从引导盘仅需要相对少量的数 据,该相对少量的数据可从远处数据和/或近处数据获得。在另一方面,后台复制操作可以把远处数据从远处后台存储复制到近处后台存储 中的近处数据。除了任何写操作和经高速缓存的读操作以外,后台复制的数据填充近处后 台存储中的近处数据(例如一个或多个区分文件)。当所有数据都已被复制时,根据需要停 止后台复制以及与远处数据存储的任何其他通信。结合附图阅读以下详细描述,本发明的其他优点会变得显而易见。


作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或 相似的元素,附图中图1是示出用于经由远处后台存储处保持的远处数据以及在近处后台存储处保 持的近处数据,提供供机器使用的虚拟存储设备(例如虚拟盘)的示例组件的框图。图2是两层虚拟盘的表示,所述两层虚拟盘可用于在包括基层的远处数据以及包 括区分层的近处数据之间保持虚拟存储设备数据。图3是三层虚拟盘的表示,所述三层虚拟盘可用于在包括基层的远处数据以及包 括两个区分层的近处数据之间保持虚拟存储设备数据。图4是示出可被采取来用远处和近处后台存储之间保持的虚拟硬盘来执行操作 的示例步骤的流程图。图5是示出可被采取来把数据从远处后台存储的远处数据后台复制到近处后台 存储的近处数据的示例步骤的流程图。图6示出可以将本发明的各方面并入其中的计算环境的说明性示例。
具体实施例方式这里所述的技术的各个方面一般针对把数据存储在一数据结构(例如区分层和 基层)链中,所述数据结构链形成诸如虚拟块设备这样的虚拟存储设备,其中所述链在远 处(远程)存储中保持的后备存储文件或块设备(等)中终止。每个数据结构可稀疏地表 示虚拟存储设备的区域,使得当通过用近处数据内的区域来覆盖沿所述链表示的重叠区域 而联系在一起时,提供了诸如虚拟硬盘这样的完整数据集合。例如,0-16兆字节的数据范围 可以被存储在本地盘上,而16-32兆字节的范围可以被存储在远程盘上的远程文件中,依 此类推。作为虚拟存储设备的后备的远处数据和近处数据可以被称为“后备数据”,存储后 备数据的容器取决于其位置可以被称为“远处后备存储”或“近处后备存储”。和访问近处 数据相比,访问远处数据通常较慢或昂贵。文件可以充当后备存储,或者盘可以无须常规的 文件系统层而直接充当后备存储。基于文件的后备存储可以被本地或远程地存储。基于盘 的后备存储可以是本地附加的盘,或者是SAN LUN这样的网络可访问盘。注意到后备存储不需要是单个位置或者是任何特定格式,只要在请求时提供正确 的数据。因此,后备存储可以分布在许多位置和/或机器间。例如,单个后备存储可以为单 个虚拟盘或者为不止一个虚拟盘存储后备数据。同样,单个后备存储可以仅存储虚拟盘的后备数据的一部分,也就是说,虚拟盘的后备数据可以分布在不止一个后备存储上。后备存 储可以是有两个不同区分层的单个盘映像,例如对于在两台机器上引导的单个映像而言。 后备存储可以包括包含来自多个盘映像的块的块数据库。虚拟盘的后备存储数据可以是稀 疏的或者非稀疏的。此外,后备数据不需要被保持在传统磁盘或存储设备上,并且可以是数据的任何 排列,不必要是一般被视为文件或磁盘的排列。例如,除了具有各种格式的磁盘或文件之 外,后备文件可以被保持为块数据库、读和写操作的日志、等等。后备数据访问在可用时从近处数据进行,或者在不可用时从远处数据进行。在访 问后备数据的机器正在运行时,数据可以被复制到近处存储,以最终允许链被剪断而不影 响虚拟存储设备的内容。一旦被复制,就不再需要远处后备存储。由数据结构链所表示的虚拟存储设备可用于引导一机器(虚拟的或物理的)。即 使在引导所需的所有(或大多数)数据是远处后备存储中的远处数据时,引导仍然是快速 的,因为仅仅访问在引导期间所需的数据,而不是下载整个操作系统映像。尽管这里的一些例子一般针对虚拟机(VM)和块存储设备,但应当理解,这里所述 的任何例子都是非限制性的例子。从这里所述的链化存储获得的好处可以通过远处和近处 数据的任何有轨组合来实现。如此,本发明不限于此处所描述的任何特定实施例、方面、概 念、结构、功能或示例。相反,这里所描述的任何一个实施例、方面、概念、结构、功能或示例 都是非限制性的,且本发明可以按一般而言在计算和数据存储方面提供好处和优点的各种 方式来使用。图1示出一计算环境,其中机器102(物理的或虚拟的)耦合至远处后备存储104 和近处后备存储106。远处后备存储104包含诸如文件(例如,虚拟硬盘的一些或全部,比 如基层)或其他数据排列等远处数据108。近处后备存储106包含近处数据110,比如一个 或多个文件(比如一个或多个区分“diff”层)或其他数据排列,近处数据110在与远处数 据108组合时形成包括后备数据的完整集合在内的虚拟(例如块)存储设备。如下所述, 后备数据访问逻辑112正确地访问近处和远处后备存储数据以便作出该组合。注意到近处 数据110最初可以是空的,但通常该数据如下所述随着时间而被填充,例如,随着读和写操 作的发生,并且任选的是在后台复制操作中被填充。由于在被链接时,远处和近处后备数据108和110分别形成一个完整的数据集合, 例如虚拟硬盘,因此不需要修改现有的软件来访问数据。这包括用虚拟机管理器(系统管 理程序)来管理虚拟机内的软件和引导固件。例如,关于快速引导,由于后备文件从机器102的角度形成一个完整的数据集合 (例如,虚拟盘),因此机器可以立即从数据引导,而不需要首先复制映像。为此,引导固件 114标识它起动引导所需的数据,这相对于整个操作系统映像来说只是少量的数据。因此, 即使没有数据在本地可用,后备文件访问逻辑112也可以仅仅请求和接收所需的数据,从 而引导能立刻起动,例如花费几秒而非几分钟。例如,固件可以被配置成使用PXE(预引导执行环境,Preboot ExecutionEnvironment)技术来加载代码以运行。其他固件可以被配置成使用互联网 SCSI (iSCSI),它使远程存储设备像本地盘,其数据可用于引导,例如被镜像为近处数据 110。关于引导机器,以太网上的光纤通道(FCoE,Fibrechannel over Ethernet)可以按和iSCSI类似的方式使用。除了获得引导相关数据以外,后备文件访问逻辑112可以在后台操作中任选地把 数据从远处数据108复制到近处数据110。注意到后台复制的优先级(通常)低于服务立 即响应(on-demand)读操作的优先级。由于越来越多的数据在近处数据110中可用,访问 这些数据通常比访问远程后备存储104中的远程数据108更快,因此后台复制操作逐渐改 进了性能。最终,完整数据集合在近处数据110中可用,远程连接被撤销,而机器102不需 要访问远处数据108。这样,可以任选地使机器无须依赖于远处数据来继续机器的操作。注 意到可以根据需要而停止后台复制,而不影响虚拟存储设备的使用,例如,如果本地存储变 满,或者出于其他原因。还注意到,后台复制操作是任选的,一般是因为存在一些后台复制操作不是必要 的情况。例如,如果虚拟机要被快速起动来执行一些任务并且此后不多久就停止,则为该短 期的虚拟机获得近处数据的完整集合(例如虚拟硬盘)是对资源的不必要的浪费。然而, 类似于其他操作,通过根据需要起动(或停止)后台复制操作,该存储策略也可以在虚拟存 储设备保持使用时改变。这样,能够在使用虚拟存储设备的同时,并发处理对虚拟盘存储策略的改变,比如 对怎样存储写入数据的改变(如下所述,对直写(write-through)深度的改变)。虚拟存储 设备的一些区域和其他区域可以有不同的存储策略。如上所述,数据读操作的优先级高于后台复制的优先级。为了效率的目的,从远处 数据108读取的任何数据区域有机会作为读过程的一部分在近处数据110中被高速缓存 (例如被写出到区分层)。这允许最近读取的数据在再次需要时能快速的可用,而无须等待 后台复制到达这个区域。注意到,后台复制过程可以通过一适当的跟踪机制跳过复制已经 读取的数据。至于机器102所写的数据,写入数据可以是直写的、立即到链的可配置的任何层 (直写深度),包括根据需要一直回到远处数据108。对把写操作传回到链的哪一层的选择 取决于链的每一层处的物理存储的可靠性、以及对虚拟存储设备的可靠性要求。注意到直 写深度可以在虚拟存储设备在使用时被改变;如果层前往远处数据108,则后备文件访问 逻辑112可以在后台操作和/或转储清除操作中把以前写的近处数据110复制到远处数据 108。在一个实现中,被高速缓存的数据(读操作)区别于写入数据(有时称为“脏数据 (dirty data)”),以便能够优化虚拟存储设备管理操作。换言之,例如,系统知道经高速缓 存的数据存在于另一个远程位置,因此经高速缓存的数据可以根据需要被丢弃;(但如果 被丢弃,则为了正确地操作,远程数据108可能需要保持对于机器102可访问或者再次变得 对机器102可访问)。相反,保持在近处数据110中的写入数据一般不能被丢弃,也就是说, 除非已知写入数据已经被一直写回到远处数据108。可以从后备数据的一个或多个层构造虚拟盘。每一层都有在虚拟存储设备的偏移 处存在的可能稀疏的数据表示。简单虚拟盘只有一层后备存储数据,从这一层服务读操作 和写操作两者。当从虚拟盘的读操作发生时,读操作被转换成对应于所请求的虚拟块设备 偏移范围的相应的后备数据读操作。如果后备数据被稀疏地表示,则读操作可能是从目前 没有任何后备存储数据的虚拟块设备偏移进行的,在该情况下,可以通过用零来填充读缓冲器来服务于读操作。通过转换成对后备数据的相应写操作来服务于写操作,可能需要在 对后备数据的新区域进行写之前创建该新区域。例如,关于图2所示的多个层,通过使用区分层2 的数据(如果存在),然后在需 要时使用基层222的数据,可以形成有两个层222和226的虚拟盘220。在近处数据和远 处数据的上下文中,基层222可以包含远处数据108,而区分层2 可以包含近处数据110。 注意到两个层之间的一些或全部重叠区域可以包含相同的数据,这种相同的区域可以作为 经高速缓存的数据来跟踪。图3示出具有三个层的虚拟盘330。在近处数据和远处数据的上下文中,基层332 表示远处数据108。高速缓存层334表示近处数据110的一些(或可能全部),在任何重叠 区域中与基层332相同;(注意到在图3中,在高速缓存层334中只高速缓存了基层的一些 数据)。区分层336表示写数据,除非被直写回远处数据108/基层332,否则该写数据仅存 在于近处数据110中。在图2或图3的排列中,区分层中的数据逐个偏移地覆盖基层中的数据。换言之, 如果区分层具有给定偏移的数据,则这就是虚拟存储设备的该偏移的正式数据,而不考虑 基层为该偏移包含什么数据。基层(或者如果存在,即高速缓存层)可以用来服务于在区 分层中未表示的任何偏移的读操作。如果没有层具有给定偏移的数据,则虚拟块存储设备 为该偏移包含零值,也就是,在该偏移处进行读操作会返回零值。读操作可以部分从区分层 服务,部分从基层服务,这取决于区分层中表示读范围的哪些部分。写操作可以通过对区分 层进行写操作而整体服务,但如上所述它们可以根据需要被传播回基层。如上所述,在一个实施方式中,经高速缓存的数据和写入数据之间存在差别;在分 层配置中,如果基层是不可变的,则仅需要任何本地写的数据以及基层来完整地定义虚拟 盘。纯粹被高速缓存的数据可以根据需要被丢弃,例如如果这样做会使以后的操作变快时。 采用其中有如图2所示的单个区分层的分层数据,后备文件访问逻辑112可以内部地追踪 区分层中的每个扇区或类似物是应该从基层被复制,还是虚拟盘写操作的结果。采用分开的高速缓存层和区分层(即使高速缓存层中的数据实际上没有不同于 基层的数据,也可以被视为两个不同的“区分”层),如图3所示,写区分层336保持本地写的 数据。高速缓存层334(可以被视为第二区分层,以及总体上的中间层)仅保持从基层332 被复制和高速缓存的数据。高速缓存区分层334总是对于给定扇区“未填充”,或者对于给 定扇区等于基层。可以容易地理解,高速缓存层的一些或全部数据可以根据需要被丢弃。注意到除了分层以便把数据组合到虚拟盘等中和/或区分该数据以外存在其他 排列,例如,使用替代的数据结构来保持近处数据和远处数据。例如,系统可用于跟踪每个 数据区域的当前位置,例如,后备(远处)或脏(近处),或者后备(远处),经高速缓存的 (近处)或脏(近处)。后备数据访问逻辑112可以保持这样的系统,从而知道在哪里访问 每个数据区域以服务于读请求,并且在后台复制操作中不覆盖任何脏区域。注意到如同对虚拟盘的存储策略的其他变化一样,能够在使用虚拟盘的同时来并 发地处理对分层模型的变化(例如从两层至三层的变化)。同样,虚拟盘的一些区域和其他 区域有不同的存储策略。图4概述了在被配置成具有基层和区分层的示例远程盘或虚拟盘上服务读或写 请求的各个示例步骤。注意到,近处数据可以是本地存储,或者位于“近处”(具有快速访问)的SAN LUN或其他设备,但不是常规意义上的实际“本地”。在步骤402,向虚拟盘的近处数据添加一个新的区分层,预先存在的一个或多个层 成为基层。该新的区分层初始为空,因此虚拟盘的内容并不由于添加区分层而改变。在步 骤404,与虚拟盘相关联的机器可以开始引导,即使没有数据被存储为该机器的近处数据。如步骤406和408所示,对虚拟盘的虚拟盘写操作被存储在近处区分层中。例如, 以逐扇区或逐块的方式(根据区分层的粒度而变化),如果在步骤410区分层具有数据,则 在步骤406来自虚拟盘的虚拟盘读操作由近处区分层服务(步骤41 ,如果近处区分层没 有数据,则在步骤406来自虚拟盘的虚拟盘读操作由远处基层服务(步骤414)。注意到,在 存在高速缓存层的配置中,如果在步骤410数据不在近处区分层中,则首先检验高速缓存 层,如果读数据存在于高速缓存层中则从中读取数据。步骤416表示一任选步骤,其中可以用适当的锁定(如下所述)把从基层读取的 虚拟盘的一个或多个部分写回区分层,以确保自从读操作被服务起发生的任何写操作不被 来自基层的数据所覆盖。步骤416处的复制在高速缓存时是有用的,因为它消除了对访问 基层以再次读取数据的需求。图5表示后台复制操作的示例步骤,后台复制操作可以在虚拟盘正在被图4所示 的任何虚拟盘读和写使用时发生。步骤502从基层选择一数据集合(例如一个或多个区域 /范围)。通过步骤504和506,区分层中不存在的任何集合从基层被读取并且被写至区分 层。注意到这些基读取和区分写使用适当的锁定(如下所述)来防止与虚拟盘的读和写操 作冲突。最终,如步骤508所示,或者通过对区分层的写操作(覆盖基层中的任何数据),或 者通过已经从基层复制,基层中存在的所有数据范围也存在于区分层中。在这一点上,因为 虚拟盘整个由区分层定义,因此虚拟盘不再需要基层。在步骤512,区分层可以被任选地转 换成非区分层,基层可以与虚拟盘断开(步骤514)。注意到,例如,如果数据被一直写回远 处数据,则不会执行步骤514。转向另一方面,即锁定,在与虚拟盘的读和写操作同时进行后台复制(“抄写 (copy-down)")操作时,固有地存在数据一致性问题。例如,考虑进行中的对虚拟盘扇区 12的单次写。没有其他对虚拟盘扇区12的写操作在进行中,因此普通的磁盘语义要求在 对扇区12的写操作完成时,扇区12包含由对扇区12的写操作写入的数据。考虑到从基层 至(单个)区分层正在发生的对扇区12的数据的并发抄写复制。该抄写操作需要对区分 层的扇区12做一次写操作,但该次写操作是在普通盘的语义之外,因为虚拟盘的客户端并 没有发起该次写操作。这一写操作并不打扰虚拟盘写操作的语义。然而,如果没有锁定,则对区分区域的扇区12的抄写写操作会在对扇区12的虚拟 盘写操作之后立即发生。如果这样,则对扇区12的虚拟盘写操作被较旧的数据错误地覆 盖,使虚拟盘看上去未能对扇区12进行写操作,或者看上去已经对扇区12进行写操作然后 又回到扇区12中的旧数据。这是不可接受的盘语义。解决该问题的一种方法是简单地防止抄写读操作和写操作与虚拟盘的读操作和 写操作并发地发生,无论是读还是写,也无论这些操作是否共享任何共同的扇区。然而,该 方法是不必要地保守的,并且不必要地在总抄写操作期间减慢了虚拟盘I/O。解决该问题的另一种方法是防止抄写读操作和写操作与共享共同扇区的虚拟盘的读操作和写操作并发地发生。这仅仅影响虚拟盘I/O的性能,实际上与当前进行中的抄 写I/O重叠,然而它仍然是不必要地保守的并且将虚拟盘I/O减慢到一定程度。根据实现方式,可能有必要明确地排除对当前正在被写的同一区分层的同一扇区 的并发读操作,因为数据尚未完全存在。这可以通过不把扇区标记为在相关区分层中存在 直到对该区分层的写操作完成来隐含地得以保证。通过区分层写操作变得无关(被遮盖)的“抄写”写操作的任何部分都不能覆盖 该遮盖区分层中的数据。这需要在两层排列中处理。注意到在图5中(通过步骤504),已 经被区分层写操作(可能)遮盖的数据不会因为抄写的目的而从基层被读取。然而,一旦 抄写“从基层读取然后写至区分层”操作开始,则从基层的读取操作会继续,可能与对重叠 扇区的虚拟盘写操作并发。一旦基层读操作完成,则对区分层的写操作正常地发生。该操作的这一写至区分层(write-to-diff)部分需要首先获得在尝试写操作的 区分层的相关扇区上的写锁。在获得写锁之后,其中写锁确保对区分层没有虚拟盘写操作 当前正在进行,则重新检验区分层。如果区分层的扇区被填充,这意味着对虚拟盘的扇区进 行了写入,则该扇区的抄写数据不能被写至区分层而是被丢弃。该确定在适当的实现方式 中逐扇区地作出。如果实现方式是使区分层被保持在比扇区大的块的粒度下,则对区分层的虚拟盘 写操作不发生,直到相应的块已经首次从基层抄写为止。这是在对块的虚拟盘写操作首次 发生时引起的附加开销,然而它简化了锁定,因为抄写操作仅需要考虑区分层是否是逐块 地而非逐扇区地填充的。这样,虚拟盘保持等同于(或优于)物理盘的语义。在写入数据完全被提交至虚 拟盘的非易失性存储之前不可以完成的虚拟盘写操作可以这样标记,例如被标记为“强制 单元访问(force unit access)”。未这样标记的虚拟盘写操作是那些至少被提交至虚拟 盘内容的一致高速缓存的写操作。结果为,在写操作完成之后开始的数据的读操作获得数 据的一个反映写操作的版本,它不改变,除非对同一虚拟盘位置发生另一个写操作。这样, 除了作为被允许修改虚拟盘内容的特定操作的结果以外,虚拟盘的内容不改变。例如,写操 作可以改变虚拟盘的内容。作为另一个例子,优化的置零操作可以对虚拟盘的一部分置零。 虚拟盘的内容并不因为诸如抄写操作这样的内部操作而改变。如上所述,直写深度是指允许写操作被“直写”至一个可配置的层,并且相对于直 到该层的所有层都是一致的。这允许本地高速缓存与例如从可靠的SAN LUN进行的常规快 速引导共存。如果数据被直写至SAN LUN ,则SAN LUN不可能从正在使用的层的集合中移除(因 为使用SAN LUN —般是为了得到SAN LUN的可靠性和/或特征集合)。然而,假如数据已经 完成了被抄写到较低层,则如果任何时候管理员决定SAN LUN对于特定的虚拟盘不是必要 的,则可以如上所述地释放SAN LUN。当到除区分层以外的层(例如,到基层,或者如果基层是只读的,则到保持在远处 存储中的可能基本上相对于机器而隐藏的另一区分文件)的直写发生时,较低的一个或多 个区分层可以不包含数据、包含经高速缓存的数据、或包含脏数据。如果从基层的抄写尚未 发生或者并非期望时,可能发生“无数据”情况。在该情况下,因为区分层并未覆盖被写的 内容,因此对于基层发生直写操作并且虚拟块设备的内容正确地示出写入数据。
对于经高速缓存的数据直写操作,它可以在来自基层的某一抄写已经发生时发 生,高速缓存层中的数据需要被丢弃或者被覆盖,使得它等同于新写的数据。如果被丢弃, 则一些抄写操作实际上未完成,然而这可能允许写操作更快地完成。如果它被写成等同于 新写的数据,这意味着相同的数据并发地被写至两个层。当单次写操作变成把相同的数据并发写至两个层时,需要在存在另一并发虚拟盘 写操作时保持一致性,所述另一并发虚拟盘写操作把不同的数据写至相同的扇区(或一些 相同扇区)。结果,被并发地写至两个层的虚拟盘写操作需要防止另一个虚拟盘写操作对于 重叠的字节范围并发发生,使得在由第一虚拟盘写操作生成的层写操作已经完成之后,两 个层的内容最终是相同的。然后,第二虚拟盘写操作可以继续其自己的两个层写操作。如果与其他技术组合,或如果直写层最近被修改为链中的另一层,并且存储策略 中的变化尚未完成,则会出现脏数据。脏数据或者可以通过仅在区分层中写而用新写的数 据来替换,或者脏数据可以在新数据被直写至基层的同时、用区分层中的新数据来覆盖。对 于只在区分层中的写操作,区分层的该部分仍旧包含脏数据。对于区分层和基层的并发覆 盖,区分层的该部分包含干净的经高速缓存的数据。示例性操作环境图6示出其上可实现图1-5的各示例的合适的计算和联网环境600的示例。计算 系统环境600只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任 何限制。也不应该将计算环境600解释为对示例性操作环境600中示出的任一组件或其组 合有任何依赖性或要求。本发明可用各种其他通用或专用计算系统环境或配置来操作。适用于本发明的 公知计算系统、环境、和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式 或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产 品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中 描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、 组件、数据结构等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行 的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备 在内的本地和/或远程计算机存储介质中。参考图6,用于实现本发明的各方面的示例性系统可包括计算机610形式的通用 计算设备。计算机610的组件可以包括但不限于处理单元620、系统存储器630和将包括 系统存储器在内的各种系统组件耦合至处理单元620的系统总线621。系统总线621可以 是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用 各种总线体系结构中的任一种的局部总线。作为示例而非限制,这样的体系结构包括工业 标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子 技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总 线)。计算机610通常包括各种计算机可读介质。计算机可读介质可以是能由计算机 610访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为 示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块之类的信息或其他数据的任何方 法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅 限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘 存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算 机610访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号 来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任一信息传送介质。术语 “已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的 信号。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声 学、射频(RF)、红外线及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括 在计算机可读介质的范围内。系统存储器630包括易失性和/或非易失性存储器形式的计算机存储介质,如只 读存储器(ROM) 631和随机存取存储器(RAM) 632。基本输入/输出系统633 ¢10 包括如 在启动时帮助在计算机610内的元件之间传输信息的基本例程,它通常储存在ROM 631中。 RAM 632通常包含处理单元620可以立即访问和/或目前正在操作的数据和/或程序模块。 作为示例而非限制,图6示出了操作系统634、应用程序635、其他程序模块636和程序数据 637。计算机610还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介 质。仅作为示例,图6示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器 641,从可移动、非易失性磁盘651中读取或向其写入的磁盘驱动器652,以及从诸如⑶ROM 或其他光学介质等可移动、非易失性光盘656中读取或向其写入的光盘驱动器655。可以在 示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括 但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动 器641通常由不可移动存储器接口,诸如接口 640连接至系统总线621,磁盘驱动器651和 光盘驱动器655通常由可移动存储器接口,诸如接口 650连接至系统总线621。以上描述并在图6中示出的驱动器及其相关联的计算机存储介质为计算机610提 供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图6中,硬盘驱动 器641被示为存储操作系统644、应用程序645、其他程序模块646和程序数据647。注意, 这些组件可以与操作系统634、应用程序635、其他程序模块636和程序数据637相同,也可 以与它们不同。操作系统644、应用程序645、其他程序模块646和程序数据647在这里被 标注了不同的附图标记是为了说明至少它们是不同的副本。用户可通过诸如平板或电子数 字化仪664、话筒663、键盘662和定点设备661 (通常指的是鼠标、跟踪球或触摸垫)等输 入设备向计算机610输入命令和信息。图6中未示出的其他输入设备可以包括操纵杆、游 戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常由耦合至系统总线的用户输 入接口 660连接至处理单元620,但也可以由其他接口和总线结构,诸如并行端口、游戏端 口或通用串行总线(USB)连接。监视器691或其他类型的显示设备也经由接口,诸如视频 接口 690连接至系统总线621。监视器691也可以与触摸屏面板等集成。注意,监视器和/ 或触摸屏面板可以在物理上耦合至其中包括计算设备610的外壳,诸如在平板型个人计算 机中。此外,诸如计算设备610等计算机还可以包括其他外围输出设备,诸如扬声器695和 打印机696,它们可以通过输出外围接口 694等连接。
计算机610可使用至一个或多个远程计算机,如远程计算机680的逻辑连接在网 络化环境中操作。远程计算机680可以是个人计算机、服务器、路由器、网络PC、对等设备 或其他常见网络节点,并且通常包括许多或所有以上关于计算机610所描述的元件,尽管 在图6中仅示出了存储器存储设备681。图6中所示的逻辑连接包括一个或多个局域网 (LAN)671和一个或多个广域网(WAN)673,但也可以包括其他网络。这样的联网环境在办公 室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机610通过网络接口或适配器670连接至LAN 671。当在WAN联网环境中使用时,计算机610通常包括调制解调器672或用于通过诸如因 特网等WAN 673建立通信的其他装置。可为内置或可为外置的调制解调器672可以经由用 户输入接口 660或其他合适的机制连接至系统总线621。诸如包括接口和天线的无线联网 组件可通过诸如接入点或对等计算机等合适的设备耦合到WAN或LAN。在网络化环境中,关 于计算机610所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而 非限制,图6示出远程应用程序685驻留在存储器设备681上。可以理解,所示的网络连接 是示例性的,也可以使用在计算机之间建立通信链路的其他手段。辅助子系统699(例如,用于内容的辅助显示)可经由用户接口 660连接,从而即 使计算机系统的主要部分处于低功率状态中,也允许诸如程序内容、系统状态和事件通知 等数据被提供给用户。辅助子系统699可连接至调制解调器672和/或网络接口 670,从而 在主处理单元620处于低功率状态中时,也允许在这些系统之间进行通信。结论尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出 并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相 反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
权利要求
1.在计算环境中,一种系统包括机器的和近处后备存储耦合并且和远处后备存储耦 合的虚拟存储设备,至少直到所述机器不需要远处后备存储的远处数据为止,所述机器包 括访问逻辑,当和读操作相对应的数据在近处后备存储中可用时,所述访问逻辑从所述近 处后备存储中的近处数据服务于读操作,否则,则从远处数据服务于所述读操作。
2.如权利要求1所述的系统,其特征在于,所述机器包括从远程存储获得引导代码和 数据以执行读操作从而引导所述机器的操作系统的固件。
3.如权利要求2所述的系统,其特征在于,所述固件经由PXE技术、经由iSCSI技术、或 经由以太网上光纤通道技术来获得引导代码和数据。
4.如权利要求1所述的系统,其特征在于,所述虚拟存储设备包括虚拟硬盘,或者所述 机器包括虚拟机,或者既所述虚拟存储设备包括虚拟硬盘又所述机器包括虚拟机。
5.如权利要求1所述的系统,其特征在于,所述访问逻辑执行后台复制操作以便复制 至少一些远处数据使其成为近处数据。
6.如权利要求1所述的系统,其特征在于,所述读操作从所述远处数据服务,所述访问 逻辑把和所述读操作相对应的数据副本保持在所述近处数据中的高速缓存中。
7.如权利要求1所述的系统,其特征在于,所述近处数据包括区分层,所述区分层保持 和对虚拟存储设备的写操作相对应的写入数据。
8.如权利要求7所述的系统,其特征在于,所述机器把所述写入数据直写至至少一个 其他层。
9.如权利要求1所述的系统,其特征在于,所述远处后备存储分布在多个位置间。
10.如权利要求1所述的系统,其特征在于,所述近处数据包括高速缓存层,所述高速 缓存层保持和从所述远处数据复制的数据相对应的数据,所述从远处数据复制的数据对应 于通过服务于一读请求获得的、或通过后台复制操作获得的、或者既通过服务于一读请求 又通过后台复制操作获得的数据。
11.如权利要求1所述的系统,其特征在于,所述近处数据包括区分层,所述区分层保 持和对虚拟存储设备的写操作相对应的写入数据,并且保持和从所述远处数据复制的数据 相对应的经高速缓存的数据,其中所述机器保持把所述写入数据区别于所述经高速缓存的 数据的信息。
12.如权利要求1所述的系统,其特征在于,所述近处数据包括第一区分层和第二区分 层,所述第一区分层保持和从所述远处数据复制的数据相对应的经高速缓存的数据,所述 第二区分层保持和对虚拟存储设备的写操作相对应的数据。
13.如权利要求1所述的系统,其特征在于,所述近处后备存储包括网络盘。
14.在计算环境中,一种在至少一个处理器上执行的方法,包括提供具有一基层作为 远处数据以及至少一个区分层作为近处数据的虚拟盘;当和读操作相对应的数据在所述近 处数据的区分层中可用时从所述近处数据服务于读操作,或者当和读操作相对应的数据在 所述近处数据的区分层中不可用时从基层服务于读操作;以及通过把和写操作相对应的数 据写至所述近处数据的区分层来服务于写操作。
15.如权利要求14所述的方法,其特征在于,所述近处数据包括写区分层和高速缓存 层,其中服务于对所请求的数据集合的读操作包括如果所请求的数据集合从所述写区分 层可用,则从所述写区分层读取所请求的数据集合;如果所请求的数据集合从所述写区分层不可用,则如果所请求的数据集合从所述高速缓存层可用,则从所述高速缓存层读取所 请求的数据集合,如果所请求的数据集合从所述高速缓存层不可用,则从所述基层读取所 请求的数据集合。
16.如权利要求14所述的方法,还包括执行抄写操作以便把数据从所述基层复制到 所述近处数据的区分层。
17.如权利要求16所述的方法,还包括一旦已经从所述基层复制了作为近处数据所 需的所有数据,则停止获得远处数据的通信。
18.如权利要求14所述的方法,还包括通过从所述远处数据下载信息来起动操作系 统引导过程。
19.如权利要求14所述的方法,还包括在服务于读和写操作的同时改变存储策略,包 括改变所述近处数据的多个层,或者改变除所述写区分层以外的层是否接收和所述写操作 相对应的写入数据。
20.一个或多个具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在 被执行时执行以下步骤,包括通过从远处数据下载信息在机器上起动操作系统引导过程;经由所述机器访问虚拟盘,所述虚拟盘具有远处数据中的基层以及近处数据中的至少 一个区分层用以服务于读和写操作,包括当和所述读操作相对应的数据在所述近处数据 的区分层中可用时从所述近处数据的区分层服务于读操作,或者当和读操作相对应的数据 在所述近处数据的区分层中不可用时从基层服务于读操作;以及通过把和写操作相对应的 数据写至所述近处数据的区分层来服务于写操作;以及在抄写操作中,把至少一些数据从所述基层复制到所述近处数据的区分层。
全文摘要
本发明涉及通过流存储的快速机器引导。描述了一种技术,通过该技术在远处(例如远程)后备存储和近处(例如本地)后备存储之间保持虚拟硬盘,带来了便于和虚拟硬盘相耦合的机器的快速引导等好处。在数据在其上可用时,读请求从近处后备存储(例如区分层)来服务,在数据不可用时,读请求从远处后备存储(例如基层)来服务。近处后备存储可以被配置为具有和基层相对应的高速缓存层以及存储写操作的写区分层,或者被配置为可用来既对读数据进行高速缓存又用于存储写数据的单个区分层。可以使用后台复制操作来填充高速缓存,直到不再需要远处后备存储数据为止。
文档编号G06F9/445GK102147740SQ20111003739
公开日2011年8月10日 申请日期2011年1月31日 优先权日2010年2月8日
发明者D·L·格林, J·K·奥辛斯, M·L·内尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1