管理文件系统版本的制作方法

文档序号:6400629阅读:169来源:国知局
专利名称:管理文件系统版本的制作方法
技术领域
本发明涉及管理文件系统版本的方法和系统。更具体地说,本发明涉及文件系统的逻辑版本的产生和去除。
背景技术
管理逻辑文件系统版本的系统和方法在本领域中已为人们所知。图1是运行单一操作系统实例的节点12的方框图10。节点12具有带有文件系统管理逻辑16的节点软件14。另外,该节点与包括文件数据空间和系统元数据空间19的本地存储介质18通信。文件系统管理逻辑16起管理文件系统的逻辑版本的作用。现有系统向文件系统的逻辑版本分配一个纪元编号(epoch number),但是不包括用于文件系统内的对象的识别系统。为了确定在现有文件系统版本中是否已删除了某一对象,必须检查其它记录,以确定该对象的死亡纪元编号是什么。因此,现有系统不包括识别逻辑文件系统版本内,确定其中对象有效的逻辑文件系统范围的对象的逻辑。
类似地,图2是与存储区域网络30通信的客户机/服务器节点22的方框图20。客户机/服务器节点具有带有文件系统逻辑26的软件24。另外,客户机/服务器节点22与包括文件数据空间32和文件系统元数据空间34的存储区域网络30通信。在打开存储区域网络30中的存储介质上的现有文件对象的内容的过程中,客户机联系客户机/服务器节点22,以便获得元数据。元数据向客户机提供关于文件的信息,例如文件属性及在存储设备上的位置。客户机/服务器节点22对存储区域网络30的元数据34内的请求文件,进行元数据信息的查寻。客户机/服务器22把文件元数据传送给请求客户机,包括构成该文件的所有数据块的位置。一旦客户机知道数据块位置,则客户机能够直接从与存储区域网络30通信的共享存储设备获得该文件的数据。另外,客户机/服务器节点22包括具有文件系统逻辑26的软件24。文件系统逻辑26起产生并管理文件系统的准瞬时(near-instantaneous)逻辑版本。但是,文件系统逻辑26向文件系统的逻辑版本分配一个纪元编号,但是不包括用于文件系统内的对象的一个两部分识别系统。因此,现有系统不包括识别逻辑文件系统版本内,确定其中对象有效的逻辑文件系统范围的对象的逻辑。
逻辑文件系统版本的产生的其它例子是盘镜像(disk mirroring)。借助该方法,在两个盘上保持文件系统数据的两个物理逻辑版本。通过使镜像分裂开,产生文件系统的准瞬时版本。从而,文件系统数据的逻辑版本导致使所需存储空间数量加倍的代价。另外,在能够获得文件系统的后续逻辑版本之前,这种方法要求产生另一镜像对。产生文件系统逻辑版本的另一例子是基于日志的文件系统,其中对文件系统对象的每个修改进行写时复制过程(copy-on-write procedure)。定期检查系统的状态,以便记录文件系统的状态,并去除非引用的逻辑文件系统版本。另外,后台进程持续不断地联合文件系统的内容。因此,这两个例子在效率方面都有限,并且增大了存储容量要求。
在支持文件系统的逻辑版本的已知现有系统中,存在和要求增大存储空间及后台处理相关的限制。于是,需要既无需增大存储空间又无需后台处理的文件系统逻辑版本的准瞬时产生和存储。

发明内容
本发明包括管理文件系统的逻辑版本的方法和系统。
在本发明的第一方面,提供一种管理文件系统的逻辑版本的方法。向文件系统的逻辑版本分配一个纪元(epoch)值。向文件系统对象分配一对纪元值。保持所有有效的文件系统纪元值的版本表,同时每个列出的纪元值对应于文件系统的一个有效逻辑版本。通过把文件系统的逻辑版本的当前纪元值保存在永久存储器中的版本表中,并单调递增当前文件系统纪元值,在单一时刻(single point-in-time)产生文件系统的准瞬时逻辑版本。对象纪元值对确定其中对象有效的逻辑文件系统版本的范围。
在本发明的第二方面,提供一种数据存储系统。该系统包括由一个纪元值识别的逻辑文件系统版本,和由一对纪元值识别的文件系统对象。版本表被用于保持所有有效的文件系统纪元值的列表。列出的每个纪元值对应于文件系统的一个有效逻辑版本。提供在单一时刻产生文件系统的准瞬时逻辑版本的版本管理器。与文件系统的当前逻辑版本相关的当前纪元值适合于保存在永久存储器中的版本表中。另外,版本管理器单调增大当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第三方面,提供一种计算机可读信号承载介质。在介质中提供向文件系统的逻辑版本分配一个纪元值,向文件系统对象分配一对纪元值的单元。另外,在介质中提供保持所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本。最后,在介质中提供在单一时刻产生文件系统的准瞬时逻辑版本的单元。文件系统产生单元把文件系统的逻辑版本的当前纪元值保存在永久存储器中的版本表中,并单调递增当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第四方面,提供一种管理文件系统的逻辑版本的方法。文件系统逻辑被嵌入运行单一操作系统实例的节点的服务器软件内。所述逻辑适合于与节点的本地存储介质的元数据空间通信。向文件系统的逻辑版本分配一个纪元值。向文件系统对象分配一对纪元值。保存所有有效文件系统纪元值的版本表,同时每个列出的纪元值对应于文件系统的一个有效逻辑版本。通过把文件系统的逻辑版本的当前纪元值保存在永久存储器中的版本表中,并单调递增当前文件系统纪元值,在单一时刻产生文件系统的准瞬时逻辑版本。对象纪元值对确定其中对象有效的逻辑文件系统版本的范围。
在本发明的第五方面,提供一种数据存储系统。文件系统逻辑被嵌入适于运行单一操作系统实例的节点的服务器软件内。所述文件系统逻辑适合于与节点的本地存储器的元数据通信。所述系统包括由一个纪元值识别的逻辑文件系统版本,和由一对纪元值识别的文件系统对象。版本表被用于保持所有有效的文件系统纪元值的列表。列出的每个纪元值对应于文件系统的一个有效逻辑版本。提供在单一时刻产生文件系统的准瞬时逻辑版本的版本管理器。与文件系统的当前逻辑版本相关的当前纪元值适合于保存在永久存储器中的版本表中。另外,版本管理器单调增大当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第六方面,提供一种呈计算机可读信号承载介质形式的产品。在介质中提供运行在节点的服务器软件内的文件系统逻辑的单元,所述节点运行单一的操作系统实例。所述逻辑适合于与节点的本地存储介质的元数据通信。在介质中提供向文件系统的逻辑版本分配一个纪元值,向文件系统对象分配一对纪元值的单元。另外,在介质中提供保持所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本。最后,在介质中提供在单一时刻产生文件系统的准瞬时逻辑版本的单元。文件系统产生单元把文件系统的逻辑版本的当前纪元值保存在永久存储器中的版本表中,并单调递增当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第七方面,提供一种管理文件系统的逻辑版本的方法。文件系统逻辑被嵌入与共享存储系统通信的服务器节点的服务器软件内。所述系统包括由一个纪元值识别的逻辑文件系统版本,和由一对纪元值识别的文件系统对象。版本表被用于保持所有有效的文件系统纪元值的列表。列出的每个纪元值对应于文件系统的一个有效逻辑版本。提供在单一时刻产生文件系统的准瞬时逻辑版本的版本管理器。与文件系统的当前逻辑版本相关的当前纪元值适合于保存在永久存储器中的版本表中。另外,版本管理器单调递增当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第八方面,提供一种数据存储系统。文件系统逻辑被嵌入与共享存储系统通信的服务器节点的服务器软件内。所述逻辑适合于与共享存储系统的的元数据空间通信。所述系统包括由一个纪元值识别的逻辑文件系统版本,和由一对纪元值识别的文件系统对象。版本表被用于保持所有有效的文件系统纪元值的列表。列出的每个纪元值对应于文件系统的一个有效逻辑版本。提供在单一时刻产生文件系统的准瞬时逻辑版本的版本管理器。与文件系统的当前逻辑版本相关的当前纪元值适合于保存在永久存储器中的版本表中。另外,版本管理器单调增大当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的第九方面,提供一种呈计算机可读信号承载介质形式的产品。在介质中提供运行与共享存储系统通信的服务器节点的服务器软件内的文件系统逻辑的单元。所述逻辑适合于与共享存储系统的元数据通信。在介质中提供向文件系统的逻辑版本分配一个纪元值,向文件系统对象分配一对纪元值的单元。另外,在介质中提供保持所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本。最后,在介质中提供在单一时刻产生文件系统的准瞬时逻辑版本的单元。文件系统产生单元把文件系统的逻辑版本的当前纪元值保存在永久存储器中的版本表中,并单调递增当前文件系统纪元值。对象纪元值对确定其中对象有效的文件系统逻辑版本的范围。
在本发明的所有方面,纪元值可以是任意可递增的值,例如(但不限于)数字。
结合附图,根据本发明的优选实施例的下述详细说明,本发明的其它特征和优点将变得显而易见。


图1是现有技术的带有文件系统管理逻辑的单一节点的方框图。
图2是现有技术的具有与存储区域网络通信的服务器节点的计算机系统的方框图,所述服务器节点具有文件系统管理逻辑。
图3是具有单一节点的计算机系统的方框图,所述单一节点具有根据本发明的优选实施例的文件系统管理逻辑。
图4是具有服务器节点的计算机系统的方框图,所述服务器节点具有根据本发明的优选实施例的文件系统管理逻辑,其中服务器节点与存储区通信。
图5是图解说明产生根据本发明优选实施例的文件系统的准瞬时版本的过程的流程图。
图6是图解说明文件系统的逻辑版本的准瞬时去除的过程的流程图。
图7是图解说明对于文件系统的逻辑版本的准瞬时复原的过程的流程图。
图8是图解说明把对象插入文件系统中的过程的流程图。
图9是图解说明查寻文件系统的识别对象的过程的流程图。
图10是图解说明对引用的文件系统对象进行写时复制过程的流程图。
图11是图解说明去除非引用文件系统对象的过程的流程图。
图12是图解说明重置文件系统对象的死亡纪元编号的过程的流程图。
具体实施例方式
概述在服务器中,提供文件系统,其中文件系统呈生根于特定目录的子树的形式。树根说明生根于根目录的文件系统树,并向所有客户机提供具有名称树的一致形式(view)的能力。在目录层保持文件系统的逻辑版本。每个逻辑文件系统版本被赋予呈整数形式的一个独特编号,下面称为纪元编号。当初始产生文件系统时,文件系统具有为1的纪元编号。每次产生文件系统的逻辑版本时,例如当发出产生文件系统的逻辑版本的命令时,纪元编号被加1。除了文件系统的纪元编号之外,文件系统中的所有对象具有对象标识符和两个纪元编号。第一个对象纪元编号被称为出生纪元编号,第二个对象纪元编号被称为死亡纪元编号。出生和死亡纪元编号定义它们被分配给的对象的存在时间。借助其对象标识符和出生纪元编号,访问文件系统中的对象。保持具有组织文件系统的逻辑版本的版本表的数据结构,以便识别持久保存的文件系统的逻辑版本。因此,存在分配给文件系统的一个纪元编号,和分配给文件系统对象的两个纪元编号。
背景技术
图3是运行根据优选实施例的单一操作系统实例文件系统管理逻辑的节点42的方框图40。节点42具有客户机驱动器44和服务器软件46。节点42的服务器软件46包括嵌入节点的软件内的文件系统管理逻辑48。文件系统管理逻辑48的功能是向文件系统的逻辑版本分配一个识别号,并向文件系统对象分配两个识别号。文件系统对象的识别号确定对象有效的逻辑文件系统版本的范围。
类似地,图4是具有共享持久存储器和根据本发明优选实施例的嵌入文件系统管理逻辑的分布式系统的方框图60。分布式系统包括具有多个服务器节点70和80、管理节点(administrator node)90和多个客户机节点92和94的存储区域网络62。存储区域网络62具有文件数据空间64和元数据空间66。元数据空间被保留用于服务器节点70和80。客户机节点92和94都可访问保存在存储区域网络62的文件数据空间64上的一个对象或多个对象,但是不能访问元数据空间66。在打开存储区域网络62中存储介质上的现有文件对象的内容的过程中,客户机联系服务器以获得元数据和锁(lock)。元数据向客户机提供和文件有关的信息,例如其属性和在存储设备上的位置。锁向客户机提供打开文件和读取或写入数据所需的特权。服务器节点对存储区域网络62的元数据空间66内的请求文件进行元数据信息的查寻。服务器节点70或80把批准的锁信息和文件元数据传送给发出请求的客户机节点,包括构成文件的数据块的位置。一旦客户机节点持有分发的锁,并且知道数据块位置,则客户机能够直接从连接在存储区域网络上的共享存储设备获得文件的数据。另外,每个服务器节点70和80分别包括服务器软件72和82。服务器软件72和82分别具有嵌入的文件系统管理逻辑74和84。文件系统管理逻辑使服务器能够产生它们管理的文件系统的逻辑版本。另外,逻辑向文件系统的逻辑版本分配一个识别号,并向文件系统对象分配两个识别号。对象识别号确定逻辑文件系统版本的范围,该对象在所述范围中有效。
图5是图解说明产生文件系统的逻辑版本的准瞬时过程的流程图100。文件系统的新的逻辑版本被赋予一个图像名称(步骤102)。文件系统的逻辑版本被赋予文件系统的以前的纪元编号,原像(primaryimage)的纪元编号被加1(步骤104)。关于文件系统的新的纪元编号标识符,产生版本表中的一个条目(步骤106)。数据结构保持对文件系统来说有效的所有纪元编号标识符的列表。
在把新的纪元编号标识符输入数据结构中之后,进入原像的数据分配(步骤108)。随后,原像的纪元编号标识符和文件系统的逻辑版本的原始纪元编号标识符被写入永久存储器(persistent storage)(步骤110)。在步骤110之后,成功完成文件系统的逻辑版本的产生(步骤112)。因此,产生文件系统的逻辑版本的准瞬时过程包括在永久存储器中保持原像的纪元编号标识符和文件系统的准瞬时逻辑版本。
除了产生文件系统的逻辑版本之外,还可通过准瞬时过程,从版本表去除文件系统的逻辑版本。图6是图解说明从内存(memory)和永久存储器准瞬时地去除文件系统的逻辑版本的过程的流程图120。操作员提供与选择从版本表去除的文件系统的逻辑版本相关的纪元编号标识符。从版本表去除关于原始纪元编号标识符的条目(步骤122),随后从永久存储器删除关于识别的逻辑文件系统版本的条目(步骤124)。之后,启动后台进程,从版本表和永久存储器去除为逻辑文件系统版本一部分的所有非引用对象(non-referenced object)。在步骤126之后,完成指定的逻辑文件系统版本的去除(步骤128)。因此,从内存和永久存储器去除文件系统的逻辑版本的过程包括从版本表去除与逻辑文件系统版本相关的对应纪元编号标识符。
除了从内存和永久存储器去除文件系统的逻辑版本之外,操作员也可选择复原特定的逻辑文件系统版本。图7是图解说明准瞬时地复原文件系统的特定逻辑版本的过程的流程图140。以搜索参数的形式输入操作员打算复原的特定纪元编号标识符。随后进行测试,确定文件系统的原始纪元编号标识符是否和搜索参数相同(步骤142)。如果对步骤142的测试的响应是否定的,则从版本表,即从内存去除关于该纪元编号标识符的条目(步骤144)。之后,从永久存储器去除关于该纪元编号标识符的条目(步骤146)。版本表中的纪元编号标识符现在被减1,小于内存中和永久存储器中先前去除的条目(步骤148)。算法随后返回步骤142的测试,直到关于纪元编号标识符的条目和输入参数相同为止。如果对步骤142的测试的响应是肯定的,则与原像纪元编号标识符相关的文件系统的逻辑版本变成新的原像(步骤150)。步骤150的处理包括对于新原像,在版本表中标记一个条目。新原像也保存在永久存储器中(步骤152)。随后,启动后台进程,从版本表和永久存储器去除非引用的对象(步骤154)。在步骤154之后,完成复原文件系统的规定逻辑版本(步骤156)。因此,对于文件系统的逻辑版本的准瞬时复原的过程包括去除版本表中和永久存储器中的所有插入逻辑文件系统版本,并把原始纪元编号标识符设置成正在复原的纪元编号标识符。
每个文件系统包括呈文件、目录和符号链接等形式的对象。所有文件系统对象保存在B树(btree)记录中,其中每个记录描述相同的一个或多个对象实例。文件系统对象可保存在其它永久数据结构中,只要它们是根据其关键字的群集,并且支持高效的查寻和扫描访问方法。文件系统对象不需要修改作为产生文件系统的逻辑版本的过程的一部分。类似地,当去除或复原文件系统的逻辑版本时,文件系统对象不需要修改。由于去除或复原文件系统的逻辑版本的结果,非引用对象被去除,但是这是由独立的后台进程来实现的,所述独立的后台进程由去除或复原过程触发。如果在产生文件系统的逻辑版本之后不修改文件系统对象,则不需要额外的空间来保存逻辑文件系统版本中的对象。因此,B树中的单一记录能够代表某一对象的数量无限的相同实例,而不需要任何额外的存储器。
图8是图解说明产生文件系统对象的过程的流程图170。用两个纪元编号(一个出生纪元编号和一个死亡纪元编号)识别文件系统中的每个对象。产生文件系统对象的第一步是把出生纪元编号分配给该对象。分配的出生纪元对象是文件系统的原始纪元编号标识符(步骤172)。分配的死亡纪元编号是无穷大(步骤174)。随后用对象标识符初始化文件系统对象(步骤176)。在把出生纪元编号和死亡纪元编号分配给文件系统对象和对象标识符的初始化之后,该文件系统对象作为记录被插入B树中(步骤178)。因此,以B树中的记录的形式产生文件系统对象的过程要求向每个文件系统对象分配识别协议。
每个对象保存在具有一个两部分关键字的B树记录中。关键字的第一部分是在步骤176初始化的对象标识符,关键字的第二部分是在步骤172产生的出生纪元编号。按升序对对象标识符分类,按降序对出生纪元编号分类。图9是图解说明查寻保存在B树中的对象的过程的流程图。连同是否打算修改搜索的对象的指示,操作员输入要搜索的对象标识符和纪元编号作为原始搜索要素。在输入搜索参数之后,进行测试,以确定正被搜索的纪元编号的值是否为0(步骤192)。当请求为0的搜索纪元编号时,文件系统的纪元编号被替换成搜索纪元编号值(步骤194)。在步骤194的原始纪元编号的替换或者确定纪元标识符不为0之后,进行B树的扫描(步骤196)。扫描的初始关键字的第一参数是对象标识符,第二参数是搜索纪元编号。扫描的终止关键字的第一参数是对象标识符,第二参数为1。向前扫描B树,并返回对于对象标识符找到的第一条记录。返回的记录具有对象的出生纪元编号小于或等于搜索纪元标识符的性质。进行测试,以确定扫描是否完成(步骤198)。如果对步骤198的测试的响应是否定的,则进行后续测试,以确定返回记录的死亡纪元编号是否小于搜索纪元标识符(步骤200)。对步骤198或200的测试的肯定响应表示在步骤196提供的扫描范围内,没有找到记录(步骤202)。但是,对步骤200的测试的否定响应表示返回的对象有效,返回的对象在步骤204进行复原处理。因此,查寻B树中某一记录的过程的第一部分是复原在输入参数内识别的对象。
在步骤204复原识别的对象之后,进行测试,以确定是否提供了调用者(caller)将修改返回对象的指示符(步骤206)。对步骤206的测试的否定响应表示操作员希望查找指定对象的位置,但是不需要对其的任何修改。如果不需要对该对象的任何修改,则完成对象定位和复原(步骤208)。但是,对步骤206的测试的肯定响应将导致确定返回的记录是否描述唯一对象的参考计数(步骤210)。在计算参考计数的过程中,已知对象的出生纪元编号和死亡纪元编号。进行从出生纪元编号到死亡纪元编号的所有版本表条目的存储器内扫描,提供该范围内条目数目的计数,称为参考计数。如果参考计数大于1,则该记录并不描述唯一的对象,在能够修改该记录之前,需要写时复制过程(步骤212)。因此,修改步骤204的返回对象的过程需要计算参考计数,以确定返回的记录是否描述唯一的对象,因为只有描述唯一对象的记录才能被修改。
如图8和9中所示,文件系统的每条记录被保存为B树中的一条记录。在复原具体的逻辑文件系统版本或去除具体的逻辑文件系统版本的过程中,启动从B树去除非引用对象的后台进程。例如,在图7中,原像已被复原之后,容纳对象记录的B树将包含不存在的对象实例的记录。B树不受这些记录的影响,因为在查寻过程中并不读取这些记录。图11是图解说明在如图7的步骤154和图6的步骤126所示的文件系统的逻辑版本的准瞬时去除或复原过程中,从永久存储器去除文件系统对象的非引用逻辑版本s的过程的流程图260。通过扫描永久存储器中所有逻辑文件系统版本的全部记录,启动该过程(步骤262)。之后,进行测试,以确定扫描是否返回了某一对象(步骤264)。如果未返回任何对象,则结束扫描(步骤266)。但是,如果扫描返回了某一对象,则对于该对象计算参考计数(步骤268)。为0的参考计数表示该对象未被其它对象引用,该记录被删除(步骤274)。之后,过程返回步骤262,继续进行扫描过程。但是,如果参考计数在步骤268返回引用所识别对象的至少一个对象,则被引用对象被复原(revert)(步骤270),并用出生纪元编号替换引用的对象记录(步骤272)。之后,过程返回步骤262,继续进行扫描过程。如果响应复原过程,启动图11中所示的文件系统的非引用逻辑版本的去除,则在完成图11中的过程之前,不会产生文件系统的任何另外的逻辑版本。这种要求防止错误的B树记录出现为原像的一部分。另一方面,如果响应文件系统的逻辑版本的准瞬时去除过程,启动图11中所示的文件系统的非引用逻辑版本的去除,则会产生文件系统的另外的逻辑版本。因此,去除文件系统的非引用对象的过程去除B树中出生纪元编号大于在复原指定逻辑文件系统版本之后当前文件系统的纪元编号的所有记录。
除了如图11中所示,去除非引用文件系统对象的版本之外,还可修改引用的文件系统对象。但是,只能修改唯一的那些文件系统对象。在进行修改之后,在多个文件系统版本中有效的文件系统对象必须通过写时复制过程。图10是图解说明对在图9的步骤212中识别的,不描述唯一对象的记录进行写时复制过程的流程图220。该过程要产生识别对象的二个或三个记录,以便保留非原像(non-primary image)中的数据。当本发明要修改保留的非原像时,产生三个记录。通常可不修改非原像,因为为了维持文件系统的逻辑版本的完整性,必须保留它们的内容。但是,在生产系统中,需要临时维护,并提供对非原像进行写时复制的支持以便于这种维护。可使用其的例子是文件系统检查和修复,或者更新具有驻留在已发生故障的永久存储器中的数据块的文件对象。写时复制过程中的第一步是对识别的对象分配给一个局部变量新的出生纪元编号(初始对象的出生纪元编号的值),以及分配给一个局部变量新的死亡纪元编号(初始对象的死亡纪元编号的值)(步骤222)。随后计算具有第一参数(出生纪元编号)和第二参数(搜索纪元编号减1)的参考计数,称为以前记录(before record)。在内存中产生具有等于初始出生纪元编号的出生纪元编号以及等于搜索纪元编号减1的死亡纪元编号的以前记录,并被写入永久存储器中(步骤226)。由于以前记录的出生纪元编号未被改变,因此已存在具有以前记录的关键字的B树记录,于是,使用替换记录操作,替换记录操作修改和预先存在的关键字相关的数据。之后,新的出生纪元编号被赋予搜索纪元编号。在步骤228的分配之后,或者在对步骤224的值不大于0的参考计数的响应之后,随后在步骤230进行具有被加1的第一参数(搜索纪元编号)和第二参数(死亡纪元编号)的参数计数。步骤230的值大于0的参考计数会导致产生第三记录,称为以后记录(after record)。在内存中产生具有等于搜索纪元编号加1的出生纪元编号,和等于初始死亡纪元编号的死亡纪元编号的以后记录,并将其写入永久存储器中(步骤232)。由于以后记录的出生纪元编号具有新的值,B树中不应存在具有以后记录的关键字的任何记录,于是使用插入记录操作插入新的B树记录和关键字。之后,一个新的死亡纪元编号被赋予搜索纪元编号的整数值(步骤234)。流程图的剩余部分(236、238、240和242)涉及中间记录的产生。最后产生中间记录,因为中间记录是调用者打算修改的记录。中间记录将具有等于在步骤22或228分配的新的出生纪元编号的出生纪元编号。中间记录将具有等于在步骤222或234分配的新的死亡纪元编号的死亡纪元编号。在步骤234的分配或步骤230的值大于0的参考计数之后进行测试136,以确定初始记录的出生纪元编号是否等于在步骤222分配的新的出生纪元编号。对步骤236的测试的肯定响应会导致具有新的出生纪元编号和新的死亡纪元编号的现有记录的替换(步骤238)。另一方面,对步骤236的测试的否定响应将以把具有新的出生纪元编号和新的死亡纪元编号的参数的记录插入B树中的形式,导致中间记录的产生(步骤240)。产生中间记录的过程会导致把新记录插入B树中,或者导致现有记录的替换。步骤238或240的第二记录的产生会导致把新的出生纪元编号分配为出生纪元编号,把新的死亡纪元编号分配为死亡纪元编号(步骤242)。因此,写时复制过程使得识别的要修改的对象记录可被分成两个或三个副本,从而保留(preserve)文件系统对象在文件系统的在先逻辑版本中出现的初始状态。
和现有技术相比的优点一旦产生了文件系统的逻辑版本,则逻辑版本表现为文件系统根目录的一部分,并且可被备份实用程序用于当文件系统仍然在线时,产生第二存储器备份。另外,可参考文件系统的逻辑版本,以便实现文件恢复或者保持文件系统的历史。这里公开的产生文件系统的逻辑版本的准瞬时过程在存储空间方面效率较高。在产生文件系统的逻辑版本之后,对文件系统对象的更新导致发生写时复制过程,从而保持逻辑文件系统版本之前的文件系统对象的初始状态。只有在获得逻辑文件系统版本之后发生变化的文件系统对象需要额外的存储空间。如果在产生逻辑文件系统版本之后,文件系统对象未被修改,则不需要额外的存储空间来保存文件系统的逻辑版本。单一记录可代表对象的数量无限的相同实例,而不需要额外的存储空间。另外,不需要额外的后台处理来保持文件系统的原像或文件系统的逻辑版本。从而,不存在与访问和在文件系统的逻辑版本中引用的对象比较的原像的对象相关的任何额外的成本要求。因此,在保持系统的初始状态的同时,文件系统的逻辑版本及相关对象的组织和维护保持了文件系统的逻辑版本。
备选实施例显然虽然这里出于举例说明的目的,说明了本发明的具体实施例,不过在不脱离本发明的精神和范围的情况下可做出各种修改。特别地,当文件系统的复原逻辑版本变成文件系统的新原像时,连带着复原特定的逻辑文件系统版本,文件系统的逻辑版本中的引用对象可具有重置为无穷大的死亡纪元编号。具有原像文件系统的纪元编号的任意对象具有无穷大的死亡纪元编号。图12是图解说明重置引用对象的死亡纪元编号的步骤的流程图280。在步骤282进行测试,以确定对象的出生纪元编号是否小于或等于文件系统的逻辑版本的纪元编号。对步骤282的测试的肯定响应将导致在步骤284进行测试,以确定对象的死亡纪元编号是否大于或等于文件系统的逻辑版本的纪元编号。如果对步骤282或284的响应是否定的,则死亡纪元编号不需被重置(步骤288)。但是,对步骤282和284的肯定响应会导致把对象的死亡纪元编号重置成无穷大。当访部记录时,对于出生纪元编号小于或等于逻辑文件系统版本的纪元编号,并且死亡纪元编号大于或等于逻辑文件系统版本的纪元编号的记录,发生在图12中略述的过程。最后,纪元值可以是任意可递增的值,例如字母或原始字节-不必只是数字。因此,本发明的保护范围只由下述权利要求及其等同限定。
权利要求
1.一种管理文件系统的逻辑版本的方法,包括(a)向所述文件系统的逻辑版本分配一个纪元值;(b)向文件系统对象分配一对纪元值;(c)保持所有有效的文件系统纪元值的版本表,每个列出的纪元值对应于文件系统的一个有效逻辑版本;和(d)通过把所述文件系统的所述逻辑版本的当前纪元值保存在永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本。
2.按照权利要求1所述的方法,其中所述对象纪元值对确定其中所述对象有效的逻辑文件系统版本的范围。
3.按照权利要求1所述的方法,其中产生文件系统的准瞬时逻辑版本的步骤包括把所述逻辑版本的额外空间限制于所述文件系统中多重引用的变化后的文件系统对象。
4.按照权利要求1所述的方法,还包括在保留所述文件系统的初始状态的同时,保持文件系统的逻辑版本。
5.按照权利要求1所述的方法,还包括所述文件系统的所述逻辑版本的准瞬时去除。
6.按照权利要求5所述的方法,其中所述文件系统的所述逻辑版本的所述准瞬时去除步骤包括从所述永久存储器中的所述版本表中去除所述版本的相应纪元值。
7.按照权利要求6所述的方法,还包括去除与所述去除的版本相关的非引用对象。
8.按照权利要求1所述的方法,还包括所述文件系统的现有逻辑版本的准瞬时复原。
9.按照权利要求8所述的方法,其中所述文件系统的现有逻辑版本的所述准瞬时复原步骤包括去除永久存储器中所述版本表中的所有插入条目,并把文件系统纪元值设置成和所述复原的逻辑文件系统版本对应的纪元值。
10.按照权利要求1所述的方法,还包括通过响应多重引用的文件系统对象的修改,执行写时复制过程,保留文件系统的初始状态。
11.按照权利要求10所述的方法,其中执行所述写时复制过程的步骤包括响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述文件系统对象分成三个副本。
12.一种数据存储系统,包括由一个纪元值识别的文件系统版本;由一对纪元值识别的文件系统对象;适合于保持所有有效的文件系统纪元值的列表的版本表,其中列出的每个纪元值对应于所述文件系统的一个有效逻辑版本;和适合于在单一时刻产生所述文件系统的准瞬时逻辑版本的版本管理器,其中与所述文件系统的当前逻辑版本相关的当前纪元值适合于保持在永久存储器中的所述版本表中,当前文件系统纪元值被单调增大。
13.按照权利要求12所述的系统,其中所述复制管理器把所述逻辑版本中的额外空间限制于所述文件系统中的改变后的对象。
14.按照权利要求12所述的系统,其中所述版本管理器适合于保持所述文件系统的逻辑版本,同时保留所述文件系统的初始状态。
15.按照权利要求12所述的系统,其中对象纪元值对适合于确定其中所述对象有效的所述文件系统的逻辑版本的范围。
16.按照权利要求12所述的系统,还包括适合于准瞬时地去除所述文件系统的所述逻辑版本的所述版本管理器。
17.按照权利要求16所述的系统,其中所述版本管理器适合于准瞬时地从所述永久存储器去除所述版本的对应纪元值。
18.按照权利要求17所述的系统,其中所述版本管理器去除与所述去除的版本相关的非引用对象。
19.按照权利要求12所述的系统,还包括适合于准瞬时地复原所述文件系统的已有逻辑版本的所述版本管理器。
20.按照权利要求19所述的系统,其中所述版本管理器适合于去除永久存储器中所述版本表中的插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑文件系统版本相关的纪元值。
21.按照权利要求12所述的系统,还包括适合于响应多重引用的文件系统对象的修改,进行写时复制过程的记录管理器。
22.按照权利要求21所述的系统,其中所述记录管理器响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述记录分成三个副本。
23.一种产品,包括计算机可读信号承载介质;介质中的向文件系统的逻辑版本分配一个纪元值的单元;介质中的向文件系统对象分配一对纪元值的单元;介质中的保持所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本;介质中的通过把所述文件系统的所述逻辑版本的当前纪元值保存在永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本的单元。
24.按照权利要求23所述的产品,其中所述介质选自包含可记录的数据存储介质和调制的载波信号的组。
25.按照权利要求23所述的产品,其中所述对象纪元值对确定其中所述对象有效的逻辑文件系统版本的范围。
26.按照权利要求23所述的产品,还包括介质中的准瞬时地去除所述文件系统的所述逻辑版本的单元,其中所述单元包括适合于从永久存储器中的所述版本表中去除所述文件系统版本的对应纪元值的版本管理器。
27.按照权利要求26所述的产品,还包括介质中的用于去除与所述去除的版本相关的非引用对象的单元。
28.按照权利要求23所述的产品,还包括介质中的用于准瞬时地复原所述文件系统的现有逻辑版本的单元,其中所述单元包括适合于去除永久存储器中所述版本表中的所有插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑版本对应的纪元值的版本管理器。
29.按照权利要求23所述的产品,还包括介质中的响应多重引用文件系统对象的修改进行写时复制过程的单元,其中所述单元包括适合于响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述文件系统对象分成三个副本的记录管理器。
30.按照权利要求23所述的产品,其中介质中的在单一时刻产生所述文件系统的准瞬时逻辑版本的单元是适合于把所述逻辑版本中的额外空间限制于所述文件系统中的改变后的对象的版本管理器。
31.按照权利要求23所述的产品,还包括介质中的保持所述文件系统的逻辑版本,同时保留所述文件系统的初始状态的单元。
32.一种管理文件系统的逻辑版本的方法,包括(a)把文件系统逻辑嵌入运行单一操作系统实例的节点的服务器软件内,其中所述逻辑适合于与所述节点的本地存储介质的元数据空间通信;(b)向所述文件系统的逻辑版本分配一个纪元值;(c)向文件系统对象分配一对纪元值;(d)保持所有有效文件系统纪元值的版本表,每个列出的纪元值对应于文件系统的一个有效逻辑版本;和(e)通过把所述文件系统的所述逻辑版本的当前纪元值保存在所述本地存储介质的永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本。
33.按照权利要求32所述的方法,其中所述对象纪元值对确定其中所述对象有效的逻辑文件系统版本的范围。
34.按照权利要求32所述的方法,其中产生文件系统的准瞬时逻辑版本的步骤包括把所述逻辑版本的额外空间限制于所述文件系统中多重引用的变化后的文件系统对象。
35.按照权利要求32所述的方法,还包括所述文件系统的所述逻辑版本的准瞬时去除,其中从所述本地存储介质的永久存储器中的所述版本表中去除所述版本的对应纪元值,并且去除与所述去除的版本相关的非引用对象。
36.按照权利要求32所述的方法,还包括所述文件系统的现有逻辑版本的准瞬时复原,其中从所述本地存储介质的永久存储器中去除所述版本表中的所有插入条目,所述文件系统纪元值被设置成和所述复原的逻辑文件系统版本对应的纪元值。
37.按照权利要求32所述的方法,还包括通过响应多重引用的文件系统对象的修改,进行写时复制过程,保留文件系统的初始状态。
38.一种数据存储系统,包括嵌入适于运行单一操作系统实例的节点的服务器软件内的文件系统逻辑,其中所述逻辑适合于与所述节点的本地存储器的元数据通信;由一个纪元值识别的文件系统版本;由一对纪元值识别的文件系统对象;适合于保持所有有效文件系统纪元值的列表的版本表,其中列出的每个纪元值对应于所述文件系统的一个有效逻辑版本;和适合于在单一时刻产生所述文件系统的准瞬时逻辑版本的版本管理器,其中与所述文件系统的当前逻辑版本相关的当前纪元值适合于保持在所述本地存储介质的永久存储器中的所述版本表中,当前文件系统纪元值被单调递增。
39.按照权利要求38所述的系统,其中所述对象纪元值对适合于确定其中所述对象有效的文件系统逻辑版本的范围。
40.按照权利要求38所述的系统,还包括适合于准瞬时地去除所述文件系统的所述逻辑版本的所述版本管理器,其中所述版本管理器适合于从所述本地存储介质的永久存储器中的所述版本表中去除所述版本的对应纪元值,并去除与所述去除的版本相关的非引用对象。
41.按照权利要求38所述的系统,还包括适合于准瞬时地复原所述文件系统的现有逻辑版本的所述版本管理器,其中所述版本管理器适合于去除所述本地存储介质的永久存储器中所述版本表中的插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑版本对应的纪元值。
42.按照权利要求38所述的系统,还包括适合于响应多重引用文件系统对象的修改,进行写时复制过程的记录管理器。
43.按照权利要求42所述的系统,其中所述记录管理器响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述记录分成三个副本。
44.一种产品,包括计算机可读信号承载介质;介质中的运行在运行单一的操作系统实例的节点的服务器软件内的文件系统逻辑的单元,其中所述逻辑适合于与所述节点的本地存储介质的元数据通信;介质中的向文件系统的逻辑版本分配一个纪元值的单元;介质中的向文件系统对象分配一对纪元值的单元;介质中的保持所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本;介质中的通过把所述文件系统的所述逻辑版本的当前纪元值保存在所述本地存储介质的永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本的单元。
45.按照权利要求44所述的产品,其中所述介质选自包含可记录的数据存储介质和调制的载波信号的组。
46.按照权利要求44所述的产品,还包括介质中的准瞬时地去除所述文件系统的所述逻辑版本的单元,其中所述单元包括适合于从所述本地存储介质的永久存储器中的所述版本表中,去除所述文件系统版本的对应纪元值的版本管理器。
47.按照权利要求44所述的产品,还包括介质中的用于准瞬时地复原所述文件系统的现有逻辑版本的单元,其中所述单元包括适合于去除所述本地存储介质的永久存储器中所述版本表中的所有插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑文件系统版本对应的纪元值的版本管理器。
48.按照权利要求44所述的产品,还包括介质中的响应属于所述文件系统的非原始逻辑版本的多重引用对象的修改,进行写时复制过程的单元。
49.按照权利要求48所述的产品,其中所述写时复制单元包括适合于响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述文件系统对象分成三个副本的记录管理器。
50.按照权利要求44所述的产品,其中介质中的在单一时刻产生所述文件系统的准瞬时逻辑版本的单元是适合于把所述逻辑版本中的额外空间限制于所述文件系统中改变后对象的版本管理器。
51.一种管理文件系统的逻辑版本的方法,包括(a)把文件系统逻辑嵌入与共享存储系统通信的服务器节点的服务器软件内,其中所述逻辑适合于与所述共享存储系统的元数据通信;(b)向所述文件系统的逻辑版本分配一个纪元值;(c)向文件系统对象分配一对纪元值;(d)保持所有有效文件系统纪元值的版本表,列出的每个纪元值对应于文件系统的一个有效逻辑版本;和(e)通过把所述文件系统的所述逻辑版本相关的当前纪元值保存在所述共享存储系统的永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本。
52.按照权利要求51所述的方法,其中所述对象纪元值对确定其中所述对象有效的逻辑文件系统版本的范围。
53.按照权利要求51所述的方法,其中产生文件系统的准瞬时逻辑版本的步骤包括把所述逻辑版本的额外空间限制于所述文件系统中改变后的对象。
54.按照权利要求51所述的方法,还包括所述文件系统的所述逻辑版本的准瞬时去除,其中从所述共享存储系统的永久存储器中的所述版本表中去除所述版本的相应纪元值,并去除与所述去除的版本相关的非引用对象。
55.按照权利要求51所述的方法,还包括所述文件系统的现有逻辑版本的准瞬时复原,其中从所述共享存储系统的永久存储器中去除所述版本表中的所有插入条目,并把所述文件系统纪元值设置成和所述复原的逻辑文件系统版本对应的纪元值。
56.按照权利要求51所述的方法,还包括通过响应多重引用文件系统对象的修改执行写时复制过程,保留文件系统的初始状态。
57.一种数据存储系统,包括嵌入与共享存储系统通信的服务器的服务器软件内的文件系统逻辑,其中所述逻辑适合于与共享存储系统的的元数据通信;由一个纪元值识别的文件系统版本;由一对纪元值识别的文件系统对象;适合于保持所有有效的文件系统纪元值的列表的版本表,其中列出的每个纪元值对应于所述文件系统的一个有效逻辑版本;和适合于在单一时刻产生所述文件系统的准瞬时逻辑版本的版本管理器,其中与所述文件系统的当前逻辑版本相关的当前纪元值适合于保存在所述共享存储系统的永久存储器中的版本表中,并且当前文件系统纪元值被单调递增。
58.按照权利要求57所述的系统,其中所述对象纪元值对适合于确定其中所述对象有效的所述文件系统的逻辑版本的范围。
59.按照权利要求57所述的系统,还包括适合于准瞬时地去除所述文件系统的所述逻辑版本的所述版本管理器,其中所述版本管理器适合于从所述共享存储系统的永久存储器中的所述版本表中去除所述版本的对应纪元值,并去除与所述去除的版本相关的非引用对象。
60.按照权利要求57所述的系统,还包括适合于准瞬时地复原所述文件系统的现有逻辑版本的所述版本管理器,其中所述版本管理器适合于去除所述共享存储系统的永久存储器中所述版本表中的插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑版本对应的纪元值。
61.按照权利要求57所述的系统,还包括适合于响应多重引用文件系统对象的修改,进行写时复制过程的记录管理器。
62.按照权利要求61所述的系统,其中所述记录管理器响应属于设置成要修改的所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述记录分成三个副本。
63.一种产品,包括计算机可读信号承载介质;介质中的运行与共享存储系统通信的服务器节点的服务器软件内的文件系统逻辑的单元,其中所述逻辑适合于与所述共享存储系统的元数据通信;介质中的向文件系统的逻辑版本分配一个纪元值的单元;介质中的向文件系统对象分配一对纪元值的单元;介质中的保存所有有效文件系统纪元值的版本表的单元,每个列出的纪元值对应于文件系统的一个有效逻辑版本;介质中的通过把所述文件系统的所述逻辑版本的当前纪元值保存在所述共享存储系统的永久存储器中的所述版本表中,并单调递增当前文件系统纪元值,在单一时刻产生所述文件系统的准瞬时逻辑版本的单元。
64.按照权利要求63所述的产品,其中所述介质选自包含可记录的数据存储介质和调制的载波信号的组。
65.按照权利要求63所述的产品,其中所述对象纪元值对确定其中所述对象有效的逻辑文件系统版本的范围。
66.按照权利要求63所述的产品,还包括介质中的准瞬时地去除所述文件系统的所述逻辑版本的单元,其中所述单元包括适合于从所述共享存储系统的永久存储器中的所述版本表中,去除所述文件系统版本的对应纪元值的版本管理器。
67.按照权利要求63所述的产品,还包括介质中的用于准瞬时地复原所述文件系统的现有逻辑版本的单元,其中所述单元包括适合于去除所述共享存储系统的永久存储器中所述版本表中的所有插入条目,并把所述文件系统纪元值设置成与所述复原的逻辑文件系统版本对应的纪元值的版本管理器。
68.按照权利要求63所述的产品,还包括介质中的响应属于所述文件系统的非原始逻辑版本的多重引用对象的修改,进行写时复制过程的单元。
69.按照权利要求68所述的产品,其中所述写时复制单元包括适合于响应属于所述文件系统的非原始逻辑版本的多重引用文件系统对象的修改,把所述文件系统对象分成三个副本的记录管理器。
70.按照权利要求63所述的产品,其中介质中的在单一时刻产生所述文件系统的准瞬时逻辑版本的单元是适合于把所述逻辑版本中的额外空间限制于所述文件系统中改变后对象的版本管理器。
全文摘要
提供一种管理通过准瞬时复制过程产生的文件系统的逻辑版本的系统和方法。文件系统的每个逻辑版本(包括原始版本)被赋予一个唯一的纪元编号或者其它识别值,每个文件系统对象被赋予两个纪元编号,所述两个纪元编号定义对象所存在的逻辑版本的空间。在版本表中保存所有有效的纪元编号的列表。文件系统的逻辑版本的准瞬时产生需要把唯一的纪元编号条目插入版本表中(106)以及下一逻辑版本的下一纪元编号。通过对被逻辑文件系统版本引用的文件系统对象应用写时复制过程,保留系统的初始状态(120)。因此,文件系统版本被保持,并且逻辑文件系统版本的在先状态的初始状态被保留。
文档编号G06F12/00GK1622087SQ200410038688
公开日2005年6月1日 申请日期2004年4月27日 优先权日2003年4月29日
发明者贾森·C·扬, 拉贾格帕·阿纳萨拉纳拉亚南, 罗伯特·M·里斯, 戴维·M·沃尔夫, 拉尔夫·A·贝克-泽恩迪, 小詹姆斯·J·西格, 达雷尔·D·E·龙, 兰德尔·C·伯恩斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1