嵌套文件系统支持的制作方法

xiaoxiao2020-7-22  11

专利名称:嵌套文件系统支持的制作方法
嵌套文件系统支持背景通常,windows操作系统还不支持嵌套文件系统卷的挂载。在这些操作系统中,每个文件系统卷可以在对其它文件系统卷没有任何从属关系的情况下工作。如果文件系统曾执行了诸如例如转储清除数据、锁定卷、解除卷的挂载或其它具有系统级含义的操作等操作,以前从不担心对于一个卷的操作会影响对于其它卷的操作。虚拟硬盘(VHD)以及其它盘容器格式是新兴的技术,其展示一个完整的虚拟盘, 该虚拟盘可被封装为一个或多个文件。像真实盘一样,虚拟盘可具有分区、卷、目录及文件。当嵌套在真实盘的卷内的虚拟盘被显现给操作系统时,可挂载包含在该虚拟盘内的卷。在虚拟盘的卷和真实盘的卷之间存在从属关系,因为对虚拟盘的卷的操作实际上是对真实盘的卷的操作。多种类型的操作在不顾及文件系统从属关系而执行这些类型的操作时可导致虚拟盘的卷上的文件系统变得损坏。这些类型的操作的示例可包括但不限于1.解除真实盘的卷的挂载——在解除所有从属的(或嵌套的)卷的挂载之前被解除挂载的真实盘的卷会损坏从属卷的文件系统;2.系统关机——在关闭所有从属的(或嵌套的)盘之前关闭真实盘的卷会损坏从属卷的文件系统;3.卷快照操作(其制作卷的副本)——当在从与具有嵌套在(或从属于)真实盘的卷内的卷的虚拟盘相关联的高速缓存中转储清除数据之前对真实盘的卷执行卷快照操作时,卷快照操作会在等待对嵌套的(或从属的)卷的写在底层的真实盘的卷上完成的超时后失败。4.即插即用(PnP)用户界面不显示在真实盘被移除时被移除的所有的卷(真实盘的卷和虚拟盘上的任何嵌套卷)。概述提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。提供了用于追踪真实和虚拟盘上的卷之间的文件系统从属关系以及用于追踪卷之间的从属关系以避免文件系统损坏的处理设备和机器实现的方法。填补驱动程序(Shim driver)可专用于虚拟盘的卷的容器格式并可包括解析容器格式的解析器。填补驱动程序可接收关于虚拟盘的显现的指示。填补驱动程序可解析虚拟盘以展示其中包含的分区和卷。每当填补驱动程序打开一个嵌套卷时,填补驱动程序可向虚拟盘微过滤器发送注册请求。在接收到来自填补驱动程序的注册请求时,虚拟盘微过滤器可通过保存与卷和嵌套卷之间的关系有关的信息来保持对该关系的追踪。当接收到关于解除该嵌套卷的挂载的信息时,填补驱动程序可向虚拟盘微过滤器发送注销请求以删除与卷和嵌套卷之间的关系有关的信息。在所有与宿主卷和所有从属的嵌套卷之间的关系有关的信息被删除后,虚拟盘微过滤器可从宿主卷断开并可以被卸载。当虚拟盘微过滤器接收到关于卷的解除挂载请求的指示时,虚拟盘微过滤器可同步地以嵌套级的顺序将关于从属于该卷的所有嵌套卷的解除挂载请求传播至填补驱动程序。当虚拟盘微过滤器接收到关于设备关系的请求时,虚拟盘微过滤器可将从属的嵌套卷列表追加到相应的响应中。附图为了描述能够获得上述和其他优点和特征的方式,以下将描述并通过参考附图中示出的各具体实施例来呈现更为具体的描述。可以理解,这些附图仅描述各典型实施例, 从而不被认为是对其范围的限制,将通过使用附图用附加特征和细节来描述和说明各个实现。

图1是示例性处理设备的功能框图,该处理设备可用于实现根据本发明主题的各实施例。图2描述了存储有宿主卷和驻在各虚拟盘中的从属的嵌套卷的示例性的真实盘。图3是示出图2的卷、真实盘、以及虚拟盘之间的关系的示图。图4是示出对于客卷的示例性操作被引导到宿主盘并返回的高级流程图。图5-10是示出可由实现根据本发明主题的实施例的处理设备来执行的示例性过程的流程图。详细描述以下详细讨论各实施例。尽管讨论各个具体实现,但应当理解,这仅是出于说明的目的。相关领域的技术人员将认识到,可以使用其他组件和配置而不背离本发明的主题的精神和范围。概览提供了用于保持对真实和虚拟盘上的卷内的文件系统以及卷之间的从属关系的追踪以避免损坏从属卷和文件系统的机器实现的方法和处理设备。在根据本发明主题的实施例中,当硬件总线报告由于添加了新附加到实现系统的实施例的处理设备上的存储设备而导致的配置上的改变时,可通过设备发现机制来通知该系统内的输入/输出(I/O)管理器。在发现该新发现的存储设备之后,I/O管理器可发现该存储设备上的一个或多个分区并可使任何适当的驱动程序和文件系统被加载。例如,I/ 0管理器模块可加载与真实盘(宿主卷)相关联的宿主文件系统。当I/O管理器发出将虚拟盘容器格式展示为虚拟设备的请求时,可对填补驱动程序做出该请求,填补驱动程序随后打开并检查该虚拟盘容器。每当填补驱动程序打开将会被展示为客卷的文件时,填补驱动程序可向虚拟盘微过滤器注册。虚拟盘微过滤器可接收来自填补驱动程序的注册请求,并可保存宿主卷和所有相关联的从属的客卷之间的关系并保持对该关系的追踪。虚拟盘微过滤器可接收已变得可用的新卷的通知。当虚拟盘微过滤器接收到一通知时,虚拟盘微过滤器可将一查询沿存储接口向下发送至填补驱动程序以确定该新盘是虚拟的还是物理的。虚拟盘微过滤器可随后持久地记录关系信息。当客卷被解除挂载时,填补驱动程序可向虚拟盘微过滤器发送注销请求,虚拟盘微过滤器可以按照所有数据结构被完全卸下而不引起任何丢失写入或数据损坏的方式解除客盘上的所有客文件系统卷的挂载。虚拟盘微过滤器可随后删除与客卷和宿主卷之间的关系有关的信息。当所有与特定宿主卷和所有从属的客卷之间的关系有关的信息被删除后,虚拟盘微过滤器可从该特定宿主卷断开并可以被卸载。附加到文件系统栈的虚拟盘微过滤器可保存与宿主卷和从属的客卷之间的关系有关的信息。当宿主卷因解除挂载请求而被卸下时,虚拟盘微过滤器可对所有挂载的从属的客卷传播解除挂载请求。另外,虚拟盘微过滤器可接收对于设备关系的请求的响应,并可将从属的客卷列表追加到相应的响应中。当宿主卷所在的宿主盘变得不可用时,虚拟盘微过滤器可将与宿主盘的不可用性有关的信息传播到所有的从属的客卷,使得对宿主卷和从属卷的更新可立即失败且宿主盘的状态信息可被丢弃。示例性处理设备图1是示例性处理设备100的功能框图,其可用于实现与本发明的主题相一致的系统的各实施例。处理设备100可以是台式个人计算机(PC)、笔记本或膝上型PC、服务器、 或其它处理设备。处理设备100可包括总线110、存储器130、只读存储器(ROM) 140、处理器 120以及存储设备150。总线110可以准许处理设备100的各组件之间的通信。处理器120可以包括解释和执行指令的至少一个常规处理器或微处理器。存储器 130可以是随机存取存储器(RAM)或存储供处理器120执行的信息和指令的另一种类型的动态存储设备。存储器130可以存储在处理器120执行指令期间使用的临时变量或其他中间信息。ROM 140可以包括常规ROM设备或为处理器120存储静态信息和指令的另一种类型的静态存储设备。存储设备150可包括硬盘以及对应的驱动器、基于闪存的存储设备、或用于存储用于处理器120的数据和/或指令的其他类型的数据存储设备或介质。处理设备100可响应于处理器120执行诸如例如存储器130、ROM 140、存储设备 150或其他介质等有形机器可读介质中所包含的指令序列来执行这些功能。这些指令可从另一机器可读介质或经由通信接口(未示出)从单独的设备读入存储器130中。文件系统从属关系图2描述了诸如真实或宿主盘200之类的示例性可移动设备,其可被连接至实现根据本发明的主题的实施例的处理设备。宿主盘200可具有驻于其上的宿主卷202。第一嵌套(或客)卷204可驻于虚拟盘206上并可被嵌套在宿主卷202内。第二嵌套(或客) 卷208可驻于虚拟盘210上并可被嵌套在宿主卷202内。第三嵌套(或客)卷212可驻于虚拟盘214上并可被嵌套在第一嵌套卷204内,第一嵌套卷又嵌套在宿主卷202内。宿主卷202可具有与其相关联的宿主文件系统。第一嵌套卷204、第二嵌套卷208以及第三嵌套卷212各自可具有相应的与其相关联的客文件系统。图3描述了图2所示的宿主盘、虚拟盘、宿主卷以及嵌套的客卷之间的从属关系。 宿主卷202与宿主盘200有关,因为宿主卷202驻于宿主盘200上。第一嵌套卷204驻于虚拟盘206上,虚拟盘206从属于宿主卷202和宿主盘200。第二嵌套卷208驻于虚拟盘 210上,虚拟盘210从属于宿主卷202和宿主盘200。第三嵌套卷212驻于虚拟盘214上, 虚拟盘214从属于第一嵌套卷204和虚拟盘206以及宿主卷202和宿主盘200。基于上述从属关系,可容易地看到当宿主卷202被解除挂载或非预期地移除时,第一嵌套卷204、第二嵌套卷208以及第三嵌套卷212受到影响。类似地,当第一嵌套卷204被解除挂载时,第三嵌套卷212受到影响。图4是示出来自虚拟或客卷400的示例性操作被引导到宿主卷432并返回的高级流程图。当存储在物理盘430上的宿主卷432上的虚拟盘(未示出)被显现时,I/O管理器可加载填补驱动程序416。填补驱动程序416解析被显现的虚拟盘上的分区并且I/O管理器可加载适当的客文件系统410。填补驱动程序416可向虚拟盘微过滤器422发送注册请求以注册驻于虚拟盘上的客卷400。如果由于填补驱动程序416之前没有向虚拟盘微过滤器422发送与添加的从属卷有关的注册请求因而虚拟盘微过滤器422还没有被加载,则虚拟盘微过滤器422可被加载到文件系统栈上,该文件系统栈可包括宿主文件系统424以及存储过滤器驱动程序426。 当虚拟盘微过滤器422接收到可包含与客卷400所在的虚拟盘与虚拟盘和客卷400所在的宿主卷432之间的关系有关的信息的注册请求时,虚拟盘微过滤器422可保存该信息。当宿主卷432接收到与卷和盘的关系有关的请求时,在对于设备关系的查询的响应已经通过存储过滤器驱动程序426、宿主文件系统424以及文件系统过滤器栈420之后, 虚拟盘微过滤器422可将从属卷列表追加到该响应中。当客卷400被解除挂载时,填补驱动程序416可向虚拟盘微过滤器422发送注销请求,虚拟盘微过滤器422首先可解除仍被加载在客卷400上的任何客文件系统410的挂载,随后可卸下或删除与客卷400所在的虚拟盘与宿主卷432之间的相关联的关系有关的信息。当与宿主卷432和宿主卷的最后一个客卷所在的最后一个虚拟盘之间的最后的关系有关的信息被卸下或删除时,可任选地将虚拟盘微过滤器422从宿主卷432断开连接并卸载。当宿主卷432由于物理盘430的非预期移除而被卸下时,虚拟盘微过滤器422可通过I/O管理器406接收该非预期移除的指示,并可对与移除的物理盘430相关联的每个嵌套填补驱动程序向填补驱动程序416发送非预期移除通知。结果,填补驱动程序416可为对属于虚拟盘微过滤器422的每个从属嵌套卷发送相应的注销请求。虚拟盘微过滤器 422可接收相应注销请求的每一个,向任何相应客文件系统410发送相应的解除故在请求, 并卸下或删除与宿主卷432和相应的客卷所在的虚拟盘之间的关系有关的对应信息。盘驱动程序414可以是用于虚拟盘的驱动程序,而盘驱动程序4 可以是用于物理盘430的盘驱动程序。虚拟盘微过滤器409可保持对客卷400所从属的或从属于客卷400的卷和设备的追踪。示例性过程图5是结合图4的示出关于正被新附加到处理设备的可移动存储设备的示例性处理的流程图。该过程可开始于I/O管理器406被告知有关新附加的存储设备(动作502)。 I/O管理器406可尝试读取该存储设备,可发现该存储设备的介质上的一个或多个分区,并可加载合适的填补驱动程序416、盘驱动程序414、存储过滤器驱动程序412、文件系统410、 以及文件系统过滤器栈408 (动作504)。例如,I/O管理器可加载与介质上的宿主卷432有关的宿主文件系统424、存储过滤器驱动程序426以及文件系统过滤器栈420,并可加载存储过滤器驱动程序412、客文件系统410、文件系统过滤器408、盘驱动程序414以及填补驱动程序416。当宿主卷432上的盘容器格式文件被显现为虚拟盘时,填补驱动程序416可接收与盘容器格式文件的显现有关的指示(动作506),可解析该盘容器格式文件以展示其中的虚拟盘分区和卷(动作507),可尝试打开该虚拟盘分区内的一个或多个客卷或嵌套卷,并可向填补驱动程序416尝试打开的每个客卷的嵌套填补驱动程序工作者线程418发送注册请求(动作508)。可进行检查来判断与宿主卷432相关联的虚拟盘微过滤器422是否被加载(动作510)。如果虚拟盘微过滤器422没有被加载(这可能仅发生在填补驱动程序416 发送对宿主卷内的新的或第一嵌套卷的注册请求时),则虚拟盘微过滤器422可被加载并连接到宿主卷432的文件系统过滤器栈420 (动作51 。在加载了虚拟盘微过滤器422或确定虚拟盘微过滤器422已被加载后,虚拟盘微过滤器422可接收来自填补驱动程序416 的对于客卷400的相应注册请求,并可根据接收到的相应注册请求来追踪文件系统从属关系(动作514)。例如,如果虚拟盘微过滤器422接收到对于嵌套在宿主卷432内的客卷400 的注册请求,则该注册请求可包括与客卷400、宿主卷432以及宿主卷432所在的存储设备有关的信息。虚拟盘微过滤器422可存储该信息以保持对存储设备、存储其上的宿主卷432 以及从属于宿主卷432的客卷400的追踪。图6和7是示出关于解除具有一个或多个嵌套卷或客卷的宿主卷的挂载的示例性处理的流程图。该过程可开始于虚拟盘微过滤器422接收指示,该指示向虚拟盘微过滤器 422告知对宿主卷432的解除挂载请求(动作60 。虚拟盘微过滤器422可随后确定宿主卷的所有嵌套卷或客卷,并可同步地传播对宿主卷的每个从属的嵌套卷或客卷的相应的解除挂载请求(动作604)。填补驱动程序416可接收关于每个传播的解除故在请求的指示(动作606),并可向虚拟盘微过滤器422发送对每个从属的嵌套卷或客卷的相应注销请求(动作608)。虚拟盘微过滤器422可接收每个注销请求并可删除之前由虚拟盘微过滤器所保存的关于宿主卷和相应客卷的对应的从属关系数据(动作610)。可做出有关从属的嵌套卷或客卷所在的宿主卷是否具有任何剩余的从属的嵌套卷或客卷的判断(动作702 ;图7)。如果不存在具有剩余从属的客卷的宿主卷,虚拟盘微过滤器422可随后从过滤器栈420以及宿主文件系统似4断开(动作706),并且虚拟盘微过滤器可被卸载(动作708)。图8是示出关于作为系统关机的一部分而关闭存储设备上的宿主卷(432)的示例性处理的流程图。该过程可开始于虚拟盘微过滤器被告知宿主卷正被关闭(动作802)。例如,可接收到对宿主卷的关闭请求。做出关于宿主卷432是否具有任何从属(嵌套)卷的判断(动作804)。如果没有其他从属卷,则可完成该过程。否则,关闭请求可被同步地转换成注销请求。这可通过虚拟盘微过滤器422同步地以嵌套级顺序向客文件系统410发送解除挂载请求(动作806)以及填补驱动程序416 发送对嵌套在宿主卷432内的从属卷(客卷400)的注销请求(动作808)来完成。虚拟盘微过滤器422可接收对从属卷(客卷400)的注销请求并可删除与该从属卷相关联的从属关系数据(动作810)。然后可做出关于宿主卷432是否具有其它从属的客 (嵌套)卷的判断(动作812)。如果没有剩余其他从属的客卷,则可完成该过程。否则,可对下一客卷再次执行动作806-812。图9是示出关于存储设备被非预期地从处理设备拆卸或移除的示例性处理的流程图。该过程可开始于虚拟盘微过滤器被告知宿主卷不再可用(动作902)。虚拟盘微过滤器422可随后同步地向填补驱动程序416发送宿主卷432不再可用的指示(动作904)。在一些实施例中,宿主卷432不再可用的指示可包括从属于该宿主卷的客卷的列表。填补驱动程序416可发送对从属于宿主卷432的每个嵌套卷或客卷的注销请求 (动作906)。虚拟盘微过滤器422可接收各个注销请求并可在删除与客卷相关联的从属关系数据之前解除客卷上的嵌套文件系统的挂载(动作908)。如果没有剩余从属的客卷,则虚拟盘微过滤器422可从宿主文件系统424以及文件系统过滤器栈422断开(动作912) 并且虚拟盘微过滤器422可被卸载(动作914)。图10是示出关于处理对于诸如例如卷和盘关系之类的设备关系的查询的示例性处理的流程图。该过程可开始于宿主卷432接收对卷和盘关系的查询(动作1002)。在对于该查询的响应通过了存储过滤器驱动程序426、宿主文件系统424以及文件系统过滤器栈420传递之后,该响应可由虚拟盘微过滤器422接收(动作904)。虚拟盘微过滤器422 可随后根据所保存的从属关系信息将从属卷列表追加到该响应中(动作1006)。以此方式, 正确的客卷可被报告为从属卷。上述实施例涉及驻于盘上的卷以及具有嵌套于其中的客卷的卷。在根据本发明的主题的其它实施例中,卷可驻于闪存RAM设备、CD ROM、DVD或其它类型的块存储设备上。结论尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。虽然以上描述可包含具体细节,但决不应将其解释为是对权利要求的限制。所述各实施例的其他配置也是本发明的范围的一部分。此外,根据本发明的主题的各个实现可以具有参考图5-10比所描述的更多或更少动作,或者可以按与所示出的顺序不同的顺序来实现各个动作。因此,所附权利要求书及其合法的等效技术方案定义本发明,而非任何给出的具体示例。
权利要求
1.一种用于提供嵌套文件系统支持的机器实现的方法,所述机器实现的方法包括 在第一组件处接收关于盘容器格式文件显现为驻于与第一文件系统相关联的第一卷上的虚拟盘的指示(506);由所述第一组件解析所述盘容器格式文件以展示包含在该盘容器格式文件中的分区和卷(507),由所述第一组件打开包含在所述盘容器格式文件内的第二卷,所述第二卷与第二文件系统相关联并且嵌套在所述第一卷内(508);从所述第一组件向第二组件发送关于所述第二卷的注册请求(508);以及由所述第二组件通过保存与所述第一卷和所述第二卷之间的关系有关的信息来追踪文件系统从属关系(514)。
2.如权利要求1所述的机器实现的方法,其特征在于,还包括仅当所述第一组件注册一嵌套在所述第一卷中的新卷时,将所述第二组件加载到所述第一卷的文件系统栈上。
3.如权利要求1所述的机器实现的方法,其特征在于,还包括当所述第二卷被解除挂载时,由所述第一组件向所述第二组件发送注销请求,以通过删除与所述第一卷和所述第二卷之间的关系有关的信息来卸下所述第一卷和所述第二卷之间的关系。
4.如权利要求1所述的机器实现的方法,其特征在于,还包括 同步地将关于卷的关闭请求转换为注销请求。
5.如权利要求1所述的机器实现的方法,其特征在于,还包括当所述第一卷响应于解除挂载请求而被卸下时,由所述第二组件同步地传播关于嵌套在所述第一卷中的所有卷的解除挂载请求。
6.如权利要求1所述的机器实现的方法,其特征在于,还包括当所述第一卷由于所述第一卷的非预期的移除而被卸下时,由所述第二组件对嵌套在所述第一卷中的每个卷同步地传播关于所述第一卷的不可用性的指示。
7.如权利要求1所述的机器实现的方法,其特征在于,还包括由所述第二组件将从属卷的列表追加到对于关于卷和盘关系的查询的响应中。
8.一种有形机器可读介质,其上记录有供至少一个处理器执行如权利要求1-7中的任何一项所述的机器实现的方法的指令。
9.一种处理设备,包括用于接收故在卷的指示和关于该卷内的嵌套卷的信息的第一组件022,506,507);以及用于从第一组件接收嵌套卷的注册以及用于通过保存与所述卷和所述卷内的所有嵌套卷之间的关系有关的信息来追踪文件系统从属关系的第二组件(416,508,514)。
10.如权利要求9所述的处理设备,其特征在于所述第二组件还用于响应于向所述第一组件告知所述卷的解除挂载,从所述第一组件接收关于嵌套卷的注销请求并删除与卷和嵌套卷之间的关系有关的信息。
11.如权利要求9所述的处理设备,其特征在于当所述卷被卸下时,所述第二组件向所述第一组件传播关于所述卷内的所有嵌套卷的指示。
12.如权利要求9所述的处理设备,其特征在于响应于所述卷的非预期移除,所述第二组件对所述卷内的每个嵌套卷同步地传播关于所述卷的不可用性的指示。
13.如权利要求9所述的处理设备,还包括 与所述卷相关联的宿主文件系统;以及被附加到所述宿主文件系统的宿主文件系统过滤器栈,其中所述宿主文件系统过滤器栈向所述第二组件提供来自所述宿主文件系统的信息。
14.如权利要求13所述的处理设备,其特征在于在从所述第一组件接收到关于所述卷内的最后一个嵌套卷的注销请求并且删除与所述卷和所述最后一个嵌套卷之间的关系有关的信息之后,所述第二组件从所述宿主文件系统断开并卸载。
15.如权利要求13所述的处理设备,其特征在于当所述宿主文件系统栈向所述第二组件提供对于关于卷和盘关系的查询的响应时,所述第二组件将从属卷的列表追加到该响应中。
全文摘要
提供了用于追踪关于驻于存储设备上的卷和驻于虚拟存储设备上的嵌套在该卷内的客卷的文件系统从属关系的处理设备和机器实现的方法。填补驱动程序可接收虚拟存储设备被显现的指示,并可解析内容以向系统显现包含在虚拟存储设备内的分区和卷。填补驱动程序可打开嵌套在宿主卷内的客卷并可向与宿主卷相关联的虚拟盘微过滤器发送关于该客卷的注册请求。虚拟盘微过滤器可保存与宿主卷和客卷之间的关系有关的信息。保存的信息可被用于防止在宿主卷被解除挂载或非预期地移除时的文件系统损坏。
文档编号G06F9/06GK102165414SQ200980139436
公开日2011年8月24日 申请日期2009年9月23日 优先权日2008年9月30日
发明者A·海隆, M·J·史密斯, N·R·克里斯琴森, S·拉贾兰姆 申请人:微软公司

最新回复(0)