包括虚拟盘的计算机的恢复的制作方法

文档序号:6594539阅读:276来源:国知局
专利名称:包括虚拟盘的计算机的恢复的制作方法
包括虚拟盘的计算机的恢复
背景技术
在当代基于Microsofl Windows 的操作系统中支持的虚拟机技术允许单个物
理计算机器同时运行多个操作系统,诸如以提供多个服务器环境。在这一技术中,虚拟盘是 可存储在物理盘驱动器上或另一虚拟盘驱动器上的文件,而采用允许该文件被用作(表现 为)盘设备的格式。例如,虚拟盘可以是Microsoft 虚拟硬盘(VHD)格式,由此理解VHD格 式的任何驱动器能够挂载VHD文件作为盘设备,即虚拟盘是通过使VHD驱动器挂载VHD文 件来创建的盘设备。这样的虚拟盘还可以在物理机上运行的Windows 操作系统上被创建 并且表面化。这些虚拟盘可用于存储关键操作系统文件(例如,引导卷)。这样的操作系统还可诸如经由被称为ASR(自动化系统恢复)的技术来提供裸机 恢复支持。这一技术允许在例如新的替换机器、用新盘修复的机器等不同物理机上重新创 建备份的计算机系统数据(包括状态)。一般而言,ASR为备份/还原应用提供了备份和还 原计算机的盘配置的能力。然而,现有ASR技术不适应虚拟盘。概述提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些代 表性的概念的选集。此概述摂并不打算标识所要求保护的主题的主要特点或基本特点,也 不打算让此概述摂被用来以任何方式限制所要求保护的主题的范围。简言之,文本描述的主题的各种方面针对可将计算设备的虚拟盘从备份的元数据 中还原的技术。一般而言,还原虚拟盘包括创建物理盘,并且在物理盘的一个分区上创建虚 拟盘。在一个方面,虚拟盘可以被嵌套。为了还原这样的嵌套虚拟盘,较高级的虚拟级盘 在任何较低嵌套级的虚拟盘之前被恢复。这提供了正规文件还原和块级还原。在一个方面,还管理对虚拟盘的备份。备份涉及评估盘是否对于备份是关键的,如 果是,则标记该盘的由于关键也需要被备份的任何容器。对于基本盘和动态卷,备份还区分 虚拟盘备份。通过下面的结合附图形对本发明进行的详细说明,其他优点可以变得显而易见。附图简述本发明是作为示例说明的,而不仅限于附图,在附图中,类似的附图标记表示类似 的元素,其中

图1是表示在包括用于备份和还原虚拟盘的备份和还原系统中的示例组件的框 图。图2是虚拟硬盘上单个卷的表示。图3是虚拟硬盘上多个卷的表示。图4是嵌套虚拟硬盘的表示。图5是表示还原包括虚拟盘的计算机可采取的示例步骤的流程图。图6示出可以将本发明的各方面并入其中的计算环境的说明性示例。详细描述
本文描述的技术的各种方面通常针对提供备份和还原计算机的盘配置的能力的 操作系统(或类似组件),包括当盘的一个或多个是存储在一个或多个物理盘上的虚拟盘 的情况。为此并且如文本描述的,这通过在文件中存储在备份时间关于虚拟盘及其对物理 盘或其他虚拟盘分区的依赖性的元数据信息来实现,在一个示例中,文件如“盘配置文件 (disk-config-file) ”。在恢复时间,访问盘配置文件来重新创建盘布局。更具体地,首先创建物理盘。此 后,创建虚拟盘。这一过程可进一步嵌套来处理虚拟盘包含其他虚拟盘的情形。具有虚拟 盘的分区被挂载到与备份时可用的相同名字空间。这允许备份供应商等等在虚拟盘被创建 并且挂载到相同名字空间之后将数据还原到虚拟盘。换言之,一个示例过程创建物理盘和分区,并且创建物理盘的卷。随后,在第一嵌 套级(1级)创建任何虚拟盘,之后该过程对1级虚拟盘分区并创建卷。如果存储在一个或 多个2级虚拟盘,则创建它们,随后在对2级虚拟盘分区并创建卷,依次类推直到最深嵌套 级。保存的元数据包含足以为虚拟盘的分层(逐级)重新创建找出每一虚拟盘的嵌套级的 信息。虚拟盘的这一逐级重新创建允许如下所述的每一级中的块级操作。转向图1,示出了包括用于对具有可包含一个或多个虚拟盘的盘104的计算机系 统102进行裸机恢复的组件的示例框图。备份机制106包括虚拟盘备份机制108,如下所 述,该虚拟盘备份机制108将特定文件和元数据备份到备份/还原介质110。在某一稍后时间,如虚线所示,包括同样如下所述的虚拟盘还原机制114的还原 机制112将文件和元数据还原到具有对应的重新创建的盘118的重新创建的计算机系统 116。还原机制112使用元数据来创建物理盘,随后创建虚拟盘,包括任何嵌套的虚拟盘。在一个基于Windows 的示例实现中,在自动化系统恢复ASR组件中提供备份机 制106和还原机制112。然而,任何程序都可实现本文描述的技术,包括在其他环境中,和/ 或用其他文件格式和元数据。如此,本发明不仅限于此处所描述的任何特定实施例、方面、 概念、结构、功能或示例。相反,在此所描述的实施例、方面、概念、结构、功能或示例中的任 何一个都是非限制性的,并且本发明可以按一般在计算和数据存储/访问中提供益处和优 点的各种方式来使用。系统可具有多个虚拟盘。一个示例场景是当引导卷在虚拟盘上时的情况,该虚拟 盘由位于系统分区(它是物理的)上的虚拟盘文件来支持。除了这一具体场景以外,一般存 在由物理卷或虚拟盘的卷上的虚拟盘文件来支持的虚拟盘。如本文描述的备份和还原(例 如,ASR)在这些场景中处理对盘布局的备份和还原。图2-4描绘了各种示例场景。在表示虚拟盘上单个卷的图2中,E 是物理卷,该 物理卷也是虚拟盘的容器(例如,VHD文件boot, vhd,在此示例中,它支持了引导卷,即卷 C:)。C 卷还可具有安装在其上的一个或多个应用程序。图3表示了在单个虚拟盘上的多个卷。在图3中,E 同样是虚拟盘文件(例如, boot, vhd)的容器,该虚拟盘文件包含C:(引导卷)和另一卷,卷D。图4表示了嵌套虚拟盘。在图4中,E 同样是引导虚拟盘(例如,boot, vhd)的容 器,该引导虚拟盘支持引导卷C:。引导虚拟盘还包含应用程序虚拟盘(例如,App. vhd), 该应用程序虚拟盘支持卷D ,并且容纳一个或多个应用程序。以下描述了在基于Windows 的环境中备份和还原的示例,其中自动化系统恢复(ASR)提供备份和还原机制。在此示例中,与虚拟盘相对应的文件以VHD格式来维护,带有 为该格式获取并且维护的适当的元数据。然而,如可容易理解的,任何环境可受益于所例示 的技术,和/或任何合适的文件格式可以与该格式的适当的元数据一起使用。在示例中,术语“包”指的是盘组(盘的分组),盘组包含一个或多个动态盘,(其 中动态盘是公知概念,通常与盘组相关联并且存储相同配置数据的副本)。在一个ASR实现中,AsrSystem是负责备份和重新创建盘的分区布局以及基本卷 的卷GUID的模块。AsrLdm是负责备份和重新创建包、包中动态盘、以及包中动态卷的模块。 AsrFmt是负责备份卷、以及恢复并且格式化重新创建的卷的模块。虚拟盘文件可包含多个(例如,VHD)文件。这诸如在新的虚拟盘需要基于现有虚 拟盘而具有某些改变时是有用的。这被称为差异化;注意对于差异化虚拟盘,需要重新创建 其整个链。返回到ASR环境中的备份,ASR对虚拟盘进行备份。一般而言,备份包含足够的 信息用于在还原期间可重新创建虚拟盘。在一个示例实现中,ASR使用以下Win32 API和 IOCTL在备份时间保存虚拟盘信息,并且在还原时间重新创建虚拟盘。备份1.获得存储依赖性信息(GetStorageDependencylnformation)。a.这一 API在备份期间使用,用于找出关于所挂载的虚拟盘的元数据信息。这一 API返回这些信息,例如,虚拟盘文件(在差异化虚拟盘的情况下不止一个)的文件路径、以 及虚拟盘的其他属性,诸如虚拟盘是否是稀疏的或固定的以及虚拟盘的块大小。b.对于虚拟盘,这一 API可返回附加信息,诸如虚拟盘标志以及差异盘链序列信 肩、ο还原2.创建虚拟盘(CreateVirtualDisk)。a.这一 API用于基于备份时“获取存储依赖性信息”所返回的信息来重新创建虚 拟盘文件。b.这一 API用于重新创建每一虚拟盘文件。3.表面虚拟盘(SurfaceVirtualDisk)。a. 一旦创建了虚拟盘文件,则这一 AIP用于将虚拟盘文件表面化为盘。4.在虚拟盘中重新创建卷。对于备份VSS(卷阴影(副本)服务)组件,如同物理盘和卷一样,ASR写入器报 告其中的虚拟盘和卷作为组件。虚拟盘的组件包含诸如“这是虚拟盘(This is a virtual disk),,或类似的说明,以便向查看ASR元数据的任何人传达有用的信息。在一个示例实现 中,盘组件看起来如〈COMPONENT IogicalPath = “ Disks “ c ο mp ο η e η t Nam e ="harddiskO “ componentType = “ fiIegroup “ caption =“This is a virtual disk”/〉对于ASR元数据,为了重新创建虚拟盘,可包括除了关于盘布局的信息以外诸如 虚拟盘的文件路径等附加信息,并且需要虚拟盘类型。每一虚拟盘的布局存储在<MbrDisk> 或<GptDisk>节点中,这与如何保存物理盘布局相同。供参考,这里再现了 MBR节点;其格式中没有改变<MbrDisk>或<GptDisk>,这与如何保存物理盘布局相同。供参考,这里再现了 MBR 节点;其格式中没有改变<MbrDisk NumPartitions = “ 4 “ PartitionTableSize = “ 4 “ BusKey =“2 “ DeviceNumber = “ 1 “ IsCritical = “ 1 “ MbrSignature ="0x88eb9d23" ···><MbrPartition PartitionIndex =“ 0〃 PartitionFlag =“ 0〃 BootFlag ="O"PartitionType = “ 0x7 “ FileSystemType = “ OxO “ NumSymbolicNames =“2 “ PartitionOffset = “ 1048576 “ PartitionLength ="5368709120" IsCritical = “ 1〃 ></MbrPartition>...</MbrDisk>虚拟盘的附加信息存储在新节点<VirtualDisk>中,如下<AsrVhd NumDisks =,,1” ><VirtualDisk DeviceNumber ="1"><VhdInfoFile =”\\ ? \Volume {e77e0446-d428-lldc-815b-000000000000} \pl\p2\foo. vhd”BlockSize = 0x200000Flag = 0x00000008Sequence = 0>〈VhdinfoFile =”\\ ? Wolume {e77e0446-d428-lldc-815b-000000000000} \pl\p2\fool. vhd”BlockSize = 0x200000Flag = 0x00000008Sequence = 1>...</VirtualDisk>...</AsrVhd>注意,在一个实现中已经创建了新节点,通常用于简化测试和开发。 <VirtualDisk>节点中DeviceNumber (设备号)属性用于在<MbrDisk>节点中查找其布局 信息。此外,注意,具有序列O的VhdInfo节点是以VHD格式表示虚拟盘的VHD文件。具有 序列大于O的VhdInfo节点表示此VHD链接到的差异VHD。标志值指示VHD的类型-动态 或固定。块大小(BlockSize)是在VHD文件内部使用的数据块的大小。它是VHD格式的一 部分。它以字节为单位。发现虚拟盘信息如下打开到该盘的句柄。调用“获得存储依赖性信息”,InfoLevel设置为2,并且GetParents (获取父信息)设置为真。如果返回的状态是STATUS_INVALID_DEVICE_REQUEST (状态无效设备请求),则不 是虚拟盘,否则,如果成功,则是虚拟盘。IOCTL 返回 STORAGE_QUERY_DEPENDENT_DISK_RESPONSE (依赖存储查询的盘响 应),定义如下BOOL WINAPI);它包含了 ST0RAGE_QUERY_DEPENDENT_DISK_LEV2_ENTRY (依赖存储查询的 2 级盘 条目)结构的数组,每一差异盘一个typedef struct_ST0RAGE_DEPENDENCY_INF0_LEVEL2{}ST0RAGE_DEPENDENCY_INF0_LEVEL2,*PST0RAGE_DEPENDENCY_INF0_LEVEL2 ;这一 API返回差异盘虚拟盘文件之间的序列信息。ASR将最远叶子的虚拟盘文件 从例如在依赖图中所表示的差异链中的其它虚拟盘文件进行区分。某些卷/盘被称为“关键的”,并且照此标记。当在物理盘的情况下,如果所挂载的 虚拟盘内的卷是关键的,则虚拟盘和其所属的包被标记为关键的。此外,由于虚拟盘依赖于 物理盘上或虚拟盘上的卷(虚拟盘文件驻留其中),也需要将父级被标记为关键的。需要考虑两种情况,包括当父卷在基本盘上的情况以及当父卷是动态卷(例如, 诸如具有软件RAID)的情况。当父卷在基本盘上时,所挂载的虚拟盘被标记为关键的,所挂 载的分区同样如此;由于父卷在基本盘上,因此其父分区和父盘也被标记为关键的。当父卷是动态卷时(例如,诸如具有软件RAID),所挂载的虚拟盘被标记为关键 的,所挂载的分区同样如此。一般而言,动态父卷不具有与其相关联的分区。一般而言,与 包含父卷的盘在相同的包的动态盘被标记为关键的;例如,关键卷信息被标记在〈AsrLdm〉 节点中,其中包和卷的“IsCritical”被适当标记。GetStorageDependencylnformation (_inHANDLE hFile,_inBOOL GetParents_inULONG InfoLevel,_inout_opt LPVOID StorageDependency,_inoutULONG 氺StorageDependencyLength
HANDLE hFile,ULONGULONGVIRTUALDEVICETYPEGUIDGUIDLPffSTRLPffSTRLPffSTRLPffSTR
DependencyTypeFlags ; ProviderSpecificFlags ;
VirtualDeviceType ; CallerContext ; DiskContext ; DependencyDeviceName ; HostVolumeName ; DependentVolumeName ; DependentVoIumeReIativePath ;
进一步注意,虚拟盘可依赖于排除在备份以外的盘;如果是并且虚拟盘是关键的, 则备份失败。或者,即使在还原时间包括虚拟盘,但该虚拟盘被标记为被排除的并且在还原 时间不被重新创建。转向与还原有关的各方面,在还原期间,ASR首先重新创建虚拟盘,挂载该虚拟盘 并且随后重新创建该虚拟盘中的卷。然而,在可完成这些之前,虚拟盘所依赖的盘、分区和 卷需要被重新创建。这些依赖性可以是物理的或虚拟的。结果,盘的重新创建需要逐层发生-从物理盘开始,随后重新创建仅依赖于物理 盘的虚拟盘,随后重新创建仅依赖于所重新创建的盘的虚拟盘,依次类推等等。由此重新创 建虚拟盘的整个过程中包括三个阶段a)从ASR元数据中提取虚拟盘的盘布局和依赖性信息。b)使用依赖性信息来标识其依赖性已经被创建的虚拟盘。c)重新创建步骤(b)中所标识的虚拟盘。d)重新创建在步骤(C)中所创建的虚拟盘内的分区和卷。重复步骤b、c和d直到所有VHD已经被重新创建或不再有VHD可被重新创建。在 按图像还原卷(“块级还原”)的备份应用程序的情况下,在可为下一嵌套级重复步骤b、c 和d之前,该应用程序需要在步骤(d)之后还原图像。用于请求还原(请求者)的程序(或多个程序)可通过使用如下的设置还原选项 (SetRestoreOptions)来选择跳过虚拟盘的重新创建IVssBackupComponentsSetRestoreOptions(asrffriterld, VSS_CT_FILEGROUP, NULL, L〃 ASR",L” · · · RecreateVHD = 0...");如果在还原选项串中存在“RecreateVHD = O”子串,则ASR不重新创建任何虚拟 盘文件和任何虚拟盘。转向提取用于还原的虚拟盘信息,如同其他盘,<MbrDisk>和<GptDisk>节点被去 串行化,由此知道对于虚拟盘的布局信息。此后,<AsrVhd>节点可以被去串行化。将关于 虚拟盘文件和任何父虚拟盘文件的信息作为附加信息来如下维护到现有结构体ASR_DISK_ INFO (ASR盘信息)中struct ASR_VHD_INF0{BOOL fVirtual ;H// \\ ? \ 卷{guid}\pl\p2\foo. vhdH//VDH文件名由<AsrVhd>中的“序列”来排序HWCHAR **rgwszVHDFiIenames ;DWORD dwNumFiles ;DWORD dwFlag ;//vhd标志-稀疏的或固定的。}; struct ASR_DISK_INF0
{Il//如果盘不是虚拟的则为空。IlASR_VHD_INF0* m_pVirtualDiskInfo ;};只在已经创建了虚拟盘的全部依赖性的情况下才创建该虚拟盘。虚拟盘依赖于虚 拟盘的虚拟盘文件所驻留的每一卷。如果已经重新创建了每个这样的卷,则重新创建虚拟
ο虚拟盘的重新创建阶段在现有AsrSys、AsrLdm和AsrFmt预还原完成之后执行。 这确保已经创建了虚拟盘文件所驻留的物理卷(基本或动态)。AsrSys已被修改成对于盘 分配、重新创建、以及检查所有关键的卷都已被重新创建而言不考虑虚拟盘。在虚拟盘的重新创建期间,可执行以下示例步骤a.对于表示虚拟盘的每一 ASR_DISK_INF0 pVhdDisk,进行b. {c.使用ASR_VHD_INF0: :rgwszVHDFiIenames从最后一虚拟盘文件开始,虚拟盘文 件被重新创建,使得差异链被正确地重新创建。·如果虚拟盘文件存在于被排除的盘上,则不重新创建该虚拟盘文件。·如果虚拟盘文件存在,则首先卸载其对应的文件(例如,VHD),并且删除该虚拟 盘文件。d.使用差异链的叶 ASR_VHD_INF0: :rgwszVHDFilenames
来挂载虚拟盘。e. 一旦挂载虚拟盘,返回其设备路径。 f.使用该路径,新ASR_DISK_INF0对象,pAssignedVHD被创建、初始化且添加到还 原期间系统上可用的盘的列表中(AsrSystem: :m_pDiskListDuringRestore)。g.由于已经为备份中一特定虚拟盘创建了虚拟盘,因此该机制直接执行盘分配 pVhdDisk->AssignedTo 被设置为 pAssignedVHD,并且 pAssignedVHDOAssignecTTo 被设置 为 pVhdDisk。h.像重新创建物理盘那样重新创建所挂载的虚拟盘。i.如果虚拟盘是关键的,则此阶段期间的任何失败导致整个还原的失败。j. }以下API用于重新创建虚拟盘文件Typedef stmct_CREATE_VIRTUAL_DISK_PARAMETERS_LEVELl{VIRTUALDEVICETYPE VirtualDeviceType ;//VHD 或 IS0-VHD 是否用于ASR。GUIDUniqueId ;LARGE_INTEGER MaximumSize ;//盘大小ULONGBlockSize ;//在VHD格式中要使用的数据块的大小。0154]ULONGSectorSize ;//512 字节。
0155]ULONGProviderSpecificFlags ;
0156]ULONGFlags ;//稀疏的或固定的
0157]LPffSTRParentPath ;//在差异盘的情况下的基VHD文
0158]件路径
0159]LPffSTRSourcePath ;
0160]}CREATE_VIRTUAL_DISK_LEVEL1_PARAMETERS,
0161]*PCREATE_VIRTUAL_DISK_L
0162]EVEL1_PARAMETERS ;
0163]BOOL WINAPI
0164]CreateVirtualDisk (
0165]_inULONGParameterLevel,
0166]_inLPffSTRPath,//VHD 文件的路径
0167]_in_opt LPVOIDParameters,
0168]_in_opt PSECURITY_DESCRIPTOR kcurityDescriptor,//所挂载
的设备上的安全性。
0169]in_opt VIRTUAL_DISK_PR0GRESSR0UTINE ProgressRoutine,
0170]_in_opt LPVOIDProgressRoutineContext
0171]);
0172]用于挂载(也称为表面化)虚拟盘的ΑΡΙΟΙ 73]typedef struct_SURFACE_VIRUTAL_DISK_LEVELl_PARAMETERS{
0174]GUID CallerContext ;
0175]GUID DiskContext ;
0176]PSECURITY_DESCRIPT0R SecurityDescriptor ;
0177]ULONG Timeout ;//在表面化的同时要指定的可任选的超时。
0178]ULONG Flags ;//VHD or ISO
0179]ULONG ProviderSpecificFlags ;
0180]USHORT OutputDeviceNameLength ;//所挂载的设备路径
0181]LPffSTR OutputDeviceNameBuffer ;
0182]}SURFACE_VIRUTAL_DISK_PARAMETERS_LEVEL1,
0183]*PSURFACE_VIRUTAL_DISK_PARAMETERS LEVELl ;
0184]BOOL WINAPI
0185]SurfaceVirtualDisk (
0186]_in LPffSTRPath,
0187]_in VIRTUALDEVICETYPEVirtualDeviceType,
0188]_in ULONGParameterLevel,
0189]in_opt PVOIDParameters,
0190]_in_opt VIRTUAL_DISK_PR0GRES SR0UTINE ProgressRoutine,
0191]_in_opt LPVOID ProgressRoutineContext
);对于卸载已经被挂载的虚拟盘,在重新创建虚拟盘之前,如果虚拟盘文件已经存 在并且被挂载,则该设备和文件被移除。用于卸载虚拟盘的一个API是BOOL WINAPIRemoveVirtualDisk (_in VIRTUALDEVICETYPE VirtualDeviceType,_in GUIDCallerContext,_in GUIDDiskContext,_in ULONGFlags);为了卸载设备,需要该设备的调用程序上下文(CallerContext)和盘上下文 (DiskContext)。为此,ASR 使用本机虚拟盘 API,GetMorageD印endencyhformation,以便 枚举在给定卷上具有虚拟盘文件的所挂载的虚拟盘。为每一虚拟盘进行卸载是低效的,因为每次都需要枚举所有挂载的虚拟盘。因此, 出于效率,在重新创建虚拟盘之前将卸载虚拟盘作为一次操作来完成。如下进行编译需要被重新创建的虚拟盘文件所驻留的卷名的列表(列表中没有重复)。1.对于每一卷,调用 GetStorageDependencylnformation, GetParents = FALSE (假),并且 InfoLevel = 1。2.对于所返回的每一 ST0RAGE_DEPENDENCY_INF0_LEVEL1,使用其 CallerContext 和DiskContext来卸载虚拟盘。3.出于确认,在虚拟盘重新创建阶段之后,ASR检查ASR元数据中存在的关键盘已 经被重新创建。在每一级虚拟盘都被创建并且分区之后且在下一级VHD文件可被创建之前,需要 调用块级还原。这些应用还可使用SkipVHDRe-creation (创建)选项来告诉ASR不尝试重新创任 何虚拟盘。转向嵌套虚拟盘的逐层重新创建,由于可存在多层虚拟盘,像在虚拟盘文件在另 一虚拟盘或物理卷上的虚拟盘上,虚拟盘被逐级创建,如图5中以及如下通常表示的1)在物理盘上重新创建分区和卷(步骤501)。2)重新创建级1虚拟盘(步骤50 -使用ASR元数据来寻找虚拟盘,这些虚拟盘 将其所有文件展开到步骤1中所重新创建的卷上。重新创建虚拟盘的文件(步骤504,针对级1),将虚拟盘文件表面化成虚拟盘,并 且重新创建其上的分区和卷,并且对分区/卷进行格式化(步骤505,针对级1)。3)重新创建级2虚拟盘(如果在步骤507块级还原正在发生,则步骤509增加级 别,这发生在步骤508的块级还原之后)-寻找目前为止在所重新创建的卷上有虚拟盘文件 的所有剩余虚拟盘。关于什么虚拟盘文件在哪一卷上的信息在ASR元数据中。重新创建虚拟盘的文件(步骤504,针对级2、,将虚拟盘文件表面化成虚拟盘,并 且重新创建其上的分区和卷,并且对分区/卷进行格式化(步骤505,针对级2)。4)重复3,直到没有新虚拟盘被重新创建(步骤502)。
如上所述,块级还原应用的逐层重新创建的一个优点是一次重新创建所有虚拟盘 并不适于块级请求者。如果块级请求者也还原了在其上虚拟盘文件已经被重新创建的卷, 则块级请求者不能避免破坏所重新创建的虚拟盘。这通过将API 添加到 ASR 写入器对象接口 -HRESULTIVssAsrWriterRestoreEx: :Re createNextLayer (void),使用逐层重新创建来解决,这允许请求者告知ASR何时创建下一 层。请求者不需要知晓虚拟盘及其依赖性。请求者可交互式地与ASR—起操作,如以下所阐述的1.请求者调用 IVssBackupComponents: PreRestore2. ASR重新创建物理盘请求者仅还原其已经备份的卷中的那些已经被重新创建的卷。可通过调用 FindFirstVolume/f indNextVolume 来找出。3.请求者调用 IvssAsrWriterRestoreEx: RecreateNextLayerASR通过重新创建虚拟盘来重新创建更多的卷,如上述步骤2中提到的。如果不存 在更多重新创建的卷,则返回S_FALSE4.请求者再次重复步骤2和3,直到ASR返回S_FALSE。对于分层虚拟盘重新创建期间动态卷的重新创建,一般而言,动态包可包括某些 虚拟盘和某些物理盘或完全是虚拟盘。这些动态虚拟盘可位于其他虚拟盘上并且因此是嵌 套的。在逐层重新创建期间,ASR中的以下附加逻辑也关顾及新创建动态盘和卷1.在物理盘重新创建照常使用AsrLdm来重新创建物理盘之后,有以下修改a.由于包的所有盘可能是虚拟盘,可能它们这时还不全可用,因此即使包中至少 所有的物理盘都已经被重新创建也创建该包。b. 一旦一个层的所有虚拟盘都已经被标识、表面化并且分区,则查看该盘是否为 动态盘(这可通过咨询ASR元数据来找出)。2.如果虚拟盘是动态盘,a.将虚拟盘添加到物理盘重新创建期间所重新创建的动态包b.从AsrLdm元数据中找出包(尚未被重新创建)中的那些完全位于目前为止添 加到包的盘集合的卷。重新创建并且格式化这些卷。3. ASR继续的终止条件相同,即,如果没有重新创建新的卷,则终止盘的重新创建。可以看出,由于虚拟化日益增长的使用,需要运行虚拟盘的机器的裸机恢复。这 包括从虚拟盘引导的物理机器的裸机恢复,以及具有多级虚拟盘(虚拟盘中所挂载的虚拟 盘)的物理机器的裸机恢复。然而,备份和还原仅仅是本文描述的有关虚拟化技术的一个示例使用。可使用这 一技术类似地执行虚拟环境到另一机器的迁移。此外,考虑主分区运行管理程序来监督作 为客机的虚拟机。可以经由这一技术来执行这些主机的自动化系统恢复和/或迁移,例如, 这些主机具有拥有虚拟盘的客机。示例性操作环境图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,从可移动、非易失性磁盘652中读取或向其写入的磁盘驱动器651,以及从诸如⑶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、远程控制(R/C) 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。诸如包括接口和天线的无线联网 组件674可以通过诸如接入点或对等计算机等合适的设备耦合到WAN或LAN。在网络化环 境中,相对于计算机610所描述的程序模块或其部分可被储存在远程存储器存储设备中。 作为示例而非限制,图6示出远程应用程序685驻留在存储器设备681上。可以理解,所示 的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。辅助子系统699(例如,用于内容的辅助显示)可经由用户接口 660连接,从而即 使计算机系统的主要部分处于低功率状态中,也允许诸如程序内容、系统状态和事件通知 等数据被提供给用户。辅助子系统699可连接至调制解调器672和/或网络接口 670,从而 在主处理单元620处于低功率状态中时,也允许在这些系统之间进行通信。结论
尽管本发明可以具有各种修改和备选的结构,但是,在图形中示出了并在上文详 细描述了某些示出实施例。然而,应了解,不打算将本发明只限于所公开的特定形式,相反 地,可以涵盖本发明的精神和范围内的所有修改、替换性结构,以及等效内容。
权利要求
1.一种在计算环境中的方法包括,还原(504、505、508)虚拟盘,包括创建物理盘(501) 以及在所述物理盘的分区上创建所述虚拟盘。
2.如权利要求1所述的方法,其特征在于,还原虚拟盘包括确定所述虚拟盘与第一嵌 套级相关联,并且基于每一虚拟盘的相关联的级按照分层顺序来还原所述虚拟盘和在第二 嵌套级的另一虚拟盘。
3.如权利要求2所述的方法,其特征在于,所述虚拟盘被配置成块级还原,并且还原虚 拟盘包括在第一嵌套级执行块级还原。
4.如权利要求1所述的方法,其特征在于,还原虚拟盘包括在分层操作中对所述虚拟 盘进行表面化和分区。
5.如权利要求4所述的方法,其特征在于,所述分层操作重新创建任何物理盘,重新创 建仅依赖于物理盘的任何虚拟盘,以及重新创建依赖所重新创建的盘的虚拟盘。
6.一种在计算环境中的方法包括,备份(108)虚拟盘(104)以供后续还原,包括维护用 于重新创建所述虚拟盘的元数据(110)。
7.如权利要求6所述的方法,其特征在于,所述元数据包括依赖性信息,或所述元数据 包括等级信息,或包括依赖性信息和等级信息两者。
8.如权利要求6所述的方法,其特征在于,还包括确定卷或盘是关键的,并且将所述卷 或盘标记为关键的。
9.如权利要求6所述的方法,其特征在于,还包括确定所挂载的虚拟盘内的卷是否为 关键的,并且如果是,则将所述虚拟盘及其所属的包标记为关键的。
10.如权利要求6所述的方法,其特征在于,还包括确定虚拟盘是否依赖于卷或依赖于 其虚拟盘文件所驻留的虚拟盘,并且如果是,则将该虚拟盘的父卷标记为关键的。
11.如权利要求6所述的方法,其特征在于,还包括确定所述父卷是否在基本盘上,并 且如果是,则将所挂载的虚拟盘标记为关键的,将所挂载的分区标记为关键的,将父分区标 记为关键的,以及将父盘标记为关键的。
12.如权利要求6所述的方法,其特征在于,还包括确定所述父卷是否是动态卷,并且 如果是,则将所挂载的虚拟盘标记为关键的,将所挂载的分区标记为关键的,以及将与包含 所述父卷的盘在相同的包的任何动态盘标记为关键的。
13.如权利要求6所述的方法,其特征在于,还包括确保被标记为关键的虚拟盘不依赖 于备份所排除的盘。
14.一种在具有计算设备的计算环境中的系统包括,还原机制(112),包括基于在所述 计算设备(10 的备份时间所维护的元数据(110)来重新创建物理盘的机制(114),以及在 所述物理盘(118)上重新创建虚拟盘的机制。
15.如权利要求14所述的系统,其特征在于,还包括在所述备份时间将包括虚拟盘元 数据的所述元数据备份到由所述还原机制访问的介质的备份机制。
16.如权利要求14所述的系统,其特征在于,所述计算设备包括由所述还原机制还原 的多个虚拟盘。
17.如权利要求15所述的系统,其特征在于,所述计算设备包括由所述还原机制还原 的虚拟盘上的引导卷,其中所述虚拟盘与在物理系统分区上的虚拟盘文件相关联。
18.如权利要求15所述的系统,其特征在于,所述计算设备包括由所述还原机制还原的物理卷,其中所述物理卷包含支持引导卷的虚拟盘。
19.如权利要求15所述的系统,其特征在于,所述计算设备包括由所述还原机制还原 的单个虚拟盘上的多个卷,所述多个卷包括作为包含多个卷的虚拟盘文件的容器卷。
20.如权利要求15所述的系统,其特征在于,所述计算设备包括由还原机制还原的嵌 套虚拟盘,所述嵌套虚拟盘包括物理卷,所述物理卷包含支持引导卷的引导虚拟盘以及支 持另一卷的另一虚拟盘。
全文摘要
描述了虚拟盘的备份和/或还原。一般而言,备份了元数据以供还原虚拟盘。为了还原该盘,创建物理盘,而虚拟盘被创建在该物理盘的一个分区上。描述了嵌套虚拟盘的备份和还原,包括块级还原。还描述了关键虚拟盘及其容器的备份,以及相对于基本盘和动态盘的虚拟盘备份。
文档编号G06F3/06GK102124437SQ200980132800
公开日2011年7月13日 申请日期2009年8月18日 优先权日2008年8月20日
发明者A·斯里瓦斯塔瓦, D·哈利德斯, J·吴, R·卡拉赫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1