首页> 中国专利> 在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统

在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统

摘要

本发明涉及在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统。对文件系统使用选择性元组版本化,从而提供使用选择性元组版本化的文件系统快照,以便保持文件系统的状态。

著录项

  • 公开/公告号CN103473251A

    专利类型发明专利

  • 公开/公告日2013-12-25

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN201310219415.3

  • 发明设计人 Y·巴查;A·库温特;A·勒维;

    申请日2013-06-05

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人申发振

  • 地址 美国纽约

  • 入库时间 2024-02-19 22:05:54

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-03-01

    授权

    授权

  • 2014-01-22

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20130605

    实质审查的生效

  • 2013-12-25

    公开

    公开

说明书

技术领域

本发明一般地涉及计算机,并且更特别地,涉及提供使用选择性元组版本化(tuple version)的用于保持文件系统的状态的文件系统快照。 

背景技术

在当今的社会中,计算机系统很普遍。计算机系统在工作场所、家里或者学校都可以见得到。计算机系统可以包括用于处理和存储数据的数据存储系统或磁盘存储系统。在各种计算环境中,计算机系统包含用来“归档(file away)”用户在以后将对其检索以进行处理的信息的文件系统。文件系统是用于组织和管理计算机文件的方法或数据结构。文件系统提供了用于在物理及逻辑上组织计算机上的文件的一种更佳方式。已知的用于实现文件系统的方法之一是通过使用关系数据库。由于各种因素,在计算环境内保持文件系统的状态方面产生了挑战。 

发明内容

如上所述,文件系统是用于组织和管理计算机文件的方法或数据结构。已知的用于实现文件系统的方法之一是使用关系数据库。文件系统数据库的实现方式给文件系统的用户及开发人员提供关系数据库系统的高级的可扩展的特征。此类特征包括涉及文件系统内的多个节点(例如,文件/目录)的高效率的事务及查询。考虑到这些特征,连同未提及的其他特征一起,需要使用用于在计算环境内保持文件系统在某个时间点的状态的快照的文件系统数据库的实现方式。 

因此,并且考虑到上述各种示例性的方法、系统及计算机程序产 品,本发明提供了提供使用选择性元组版本化的用于保持文件系统的状态的文件系统快照的实施例。快照表包含每个快照的单个条目,用于指示快照的时间。在快照下的文件/目录连同不在快照下的行一起被保持于该特定的文件系统的主文件系统表内。用于存储每个快照的单个条目的附加快照表包含快照标识(ID)和快照时间戳。换言之,通过添加快照表来对文件系统使用选择性元组版本化,以通过存储于包含与为了保留文件系统中的节点的以往状态而创建的快照相关的快照时间戳的快照表的行内而与文件系统关联。 

除了上述示例性的方法实施例外,本发明还提供了其他示例性的系统及计算机产品的实施例并且供给相关的优点。前面的总结已经被提供以用简单的形式引入概念的选取,这些概念将在下面的具体实施方式中进一步描述。本发明内容并非旨在识别所要求权利的主题的关键特征或基本特征,也并非旨在被用作对确定所要求权利的主题的范围的辅助。所要求权利的主题并不限定于用于解决在背景技术中指出的任何或全部缺点的实现方式。 

附图说明

为了使本发明的优点更容易理解,以上所简要给出的关于本发明的更具体描述将通过参照在附图中示出的具体实施例来给出。理解这些附图示出了本发明的实施例并且因此不应被认为是对本发明的范围的限定,本发明将通过附图的使用以附加的特异性和细节来描述和解释,在附图中: 

图1是示出具有其中可以实现本发明的各方面的实例存储器件的计算系统环境的框图; 

图2是示出其中可以实现本发明的各方面的在计算机系统中的示例性数据存储系统的硬件结构的框图; 

图3是示出用于提供使用选择性元组版本化的文件系统快照的一种示例性方法的流程图; 

图4A是示出用于创建节点的一种示例性方法的流程图; 

图4B是示出用于创建快照的一种示例性方法的流程图; 

图4C是示出用于请求保留节点的一种示例性方法的流程图; 

图4D是示出用于更新节点的一种示例性方法的流程图; 

图4E是示出用于检索节点的属性的一种示例性方法的流程图; 

图4F是示出用于去除请求以保留特定节点的一种示例性方法的流程图; 

图4G是示出用于删除快照的一种示例性方法的流程图; 

图4H是示出用于删除节点的一种示例性方法的流程图;以及 

图5是示出一种示例性文件系统以及使用选择性元组版本化的用于保留文件系统的状态的快照表的框图。 

具体实施方式

文件系统是节点的容器,而节点是文件/目录的通用名称。文件系统表代表文件系统,而节点被表示为包含于文件系统表内的行。文件系统可以含有大量的节点。文件系统数据库的实现方式给文件系统的用户及开发人员提供了关系数据库系统的高级的可扩展的特征。此类特征包括涉及文件系统内的多个节点(例如,文件/目录)的高效率的事务及查询。 

应用程序通常需要维持文件系统在某个时间点的状态。因此,需要提供使用对文件系统的选择性元组版本化的文件系统快照,用于在计算环境中维持文件系统(例如,节点的容器)的状态。还需要通过将位图添加到节点在文件系统表内的行来使用对文件系统的选择性元组版本化,以便保留节点的以往状态。要解决这些需求,计算系统必须满足下列要求。(1)计算系统应当使用用于保留文件系统的状态的快照来允许保留文件系统在某个时间点的状态。(2)计算系统应当允许保留文件系统在某个时间点的节点。(3)计算系统应当允许访问通过快照和/或位图保留的文件系统和/或节点。(4)在创建快照时,计算系统应当需要恒定的时间和输入/输出(I/O)复杂度,并且消耗恒定量的存储空间。(5)在快照的寿命期间,保留文件系统的快照的开销(overhead)不 可以给文件系统操作的经常成本增添比固定的一小部分成本更多的成本。此外,快照所消耗的空间应当是在快照的创建与文件系统的当前状态之间改变的节点数的函数(例如,自快照创建的时间以来改变了两次的节点应当只保留一次)。(6)快照删除必须需要作为由快照保留的节点的数量的函数的时间和I/O复杂度,并且恢复由快照保留的节点所占用的全部空间。 

要解决以上所列出的要求,所示出的实施例设法在文件系统表内提供用于保留文件系统(例如,节点的容器)在单个时间点的状态的文件系统快照。每次请求都需要细粒度的(Finely grained)快照来保留文件系统(例如,节点的容器)的状态。正因如此,文件系统快照的实现方式在复杂度及空间消耗方面必须是可扩展的且高效的。保留的含义是:如果在获取快照的时间之前创建的节点被修改,则(than)在快照创建之前已存在的状态被保留。快照以快照表来实现。快照表包含快照创建的时间,但不包含有关文件系统或文件系统节点的任何信息。快照表为每个快照存储包含快照标识(ID)和快照时间戳的单个条目。 

而且,在一种可替换的实施例中,通过将位图添加至文件系统表而对文件系统使用选择性元组版本化,用于保留单个节点的状态。如前所述,文件系统是含有文件系统内的全部节点(包括文件系统的根目录)的表格。在各种快照下的节点行被存储于文件系统表内,邻接不在快照下的行。在文件系统表内的所有行都含有起始时间和结束时间。快照的创建并不直接影响文件系统表内的行,因为只有在文件系统表内的行更新时该行才被复制。快照的创建会给快照表添加新的行。之后,当文件系统表内的在快照下的行被更新时(使用起始时间、结束时间及快照时间戳来推导出的),该行被复制而不是在原地更新。一旦创建了快照,文件系统就允许访问由快照保留的节点。文件系统允许删除快照以及恢复先前由通过快照保留的文件系统(和/或节点)占用的全部空间。 

在一种实施例中,以实例的方式(仅作示例),文件系统的节点被存储于表格内。表格的行包含每个节点的唯一标识符(例如,节点ID),包括节点属性,例如,名称、尺寸、创建时间等。文件系统的条 目不保存于数据库中。相反地,文件系统表包含文件系统内的节点(包括代表文件系统的根目录的节点)的条目。换言之,当文件系统被创建时,文件系统被创建为仅含有根节点的表格。之后,其他节点被创建为根节点的后代(decedent)。要维持文件系统的树形层次结构,可以通过在节点的每个行中保存父节点ID而存在从每个节点到父节点的引用。在这个框架上,选择性的元组版本化被使用并且使元组版本化适用于文件系统快照及位图的实现方式,并且称为选择性元组版本化。选择性元组版本化帮助在一个维度上保留行和/或单个节点的以往状态。纬度可以被定义为数据的逻辑分组(例如,消费者/产品数据)。 

在一种实施例中,对使用元组版本化来保持文件系统及单个节点的状态的保留通过给每个行添加用于定义该行有效的时间段的起始及结束时间来实现。当新行被添加到表内时,起始时间包含该新行被添加的时间,而该行的结束时间被设定为无穷大(∞)。为了在文件系统表中检索当前条目,结束时间等于无穷大的行被查询。当行在时间“T”更新时(其中“T”是用作实例的任意时间变量),该行被复制以形成新行,并且该新行的起始时间被设定为等于时间“T”。待更新的行是结束时间被设定为无穷大的新行。旧行的结束时间被更新并且被设定为等于时间“T”。要检索节点表内与时间“T”相关的条目,具有小于时间“T”的起始时间以及大于“T”的结束时间(例如,起始时间<T且结束时间>T)的行被查询。 

为了维持文件系统的状态,选择性元组版本化被应用。选择性元组版本化通过要求待添加到数据库内的附加信息而允许元组版本化的“选择性”。选择性元组版本化允许了选择性,使得并非表内的所有行都要自动复制,而是仅复制与快照相关的行。首先,“快照表”被添加到数据库内。换言之,附加行被添加到快照表内并且结合节点ID表来工作。快照表包含快照获取的时间,并且特别地,快照表内的行含有快照时间戳。与快照相关的所有其他信息(例如,与快照相关的节点)被维持于主文件系统表内。同样,为了允许保留单个节点,将附加字段添加到与具体节点相关的每个行内,以便指出该节点是否应当保留。新的字 段可以表示为位,其中每个位指示使用该节点的应用程序。与保留在任意时间“T”之前的所有节点的快照表相比,位图允许具体选择哪些节点来保留。使用位图,而不是简单的布尔标志(Boolean flag)或引用计数,以便通过给每个应用程序指派不同的位而允许多个应用程序彼此独立地保留单个节点。而且,与引用计数相比,位图容许应用程序试图多次保留或不保留同一节点。 

利用文件系统表内的快照表和/或位图中的附加信息,通过检查与具体节点相关的行的起始时间是否早于快照获取或者行内的位之一被开启(例如,设定为表示开启的“1”)的时间,可以作出关于应当何时保留行的确定。 

在一种实施例中,对由快照保留的文件系统的节点的访问通过使用与快照相关的快照标识(ID)来允许。在一种可替换的实施例中,对由位图保留的单个节点的访问通过使用在与具体节点相关的行内的起始时间来允许。快照ID提供对快照表时间的访问,用于在快照被创建时访问。与快照相关的节点具有小于快照时间戳的在行内的起始时间以及大于快照时间戳的在行内的结束时间。 

另一方面,如上所述,在文件系统表内的具体节点通过位图来保留,并且可以通过在与具体节点相关的行内的起始时间来访问。由位图保留的行类似于由快照保留的行那样通过使用小于行的起始时间且大于行的结束时间的时间“T”来访问。快照可以通过从快照表中去除快照行以及通过去除与所删除快照关联的全部节点(例如,节点的结束时间小于无穷大并且在节点的创建之后没有其他快照被创建,并且每个节点位图都被设定于零值“0”)来删除。 

对于每个新创建的节点,起始时间和结束时间都被添加至主文件系统表内的每个行。但是,快照表仅包含具有不同快照时间的条目。将起始时间和结束时间添加至文件系统表内的每个行以及保持快照表的结合,保留了文件系统在某个时间点的状态。另一方面,在文件系统表内的位图被用来保留单个节点在某个时间点的状态。快照ID被用来访问由快照保留的文件系统节点。由于快照创建仅涉及将单个行添加至快照 表,因而在时间和I/O操作中允许恒定的复杂度并且允许使用恒定量的存储空间。在快照的寿命期间,节点的状态通过一次对快照表的查询以及另一次对文件系统主表的查询(通过复制与具体节点相关的行)来保留。能够认定快照表的大小是显著小于节点表的,因而与快照表查询操作的开销被认为是较小的。所保留的行的复制添加了插入文件系统表的行,用于更新事务。由于插入和更新在单次数据库事务内完成,因而这些操作得以高效地执行。 

另外,文件系统(例如,节点的容器)通过同一快照来保留一次,因为在第一次更新后,文件系统的起始时间将晚于(例如,在其之后)快照时间(例如,快照时间戳)。这样的操作允许消耗作为在快照与文件系统的当前状态之间改变的节点的数量的函数的空间(例如,自快照创建的时间以来改变了两次的节点应当只保留一次)。 

快照也可以被删除。在这样做时,快照被从快照表的行内删除,并且执行查询以从文件系统表中去除不再由任何其他快照所引用的节点。由于从快照表中去除快照以及从文件系统表中去除节点可以在单次事务中执行,大部分数据库系统将需要比由快照保留的节点的数量显著要少的I/O操作。此外,在快照删除操作之后,由快照保留的节点所消耗的全部空间都将被恢复。此外,应当注意,位图并不直接连接至快照并且被用来实现选择性元组版本化。位图允许对单个节点层进行更细粒度的保留。 

现在转到图1,图中示出了一种计算机系统实施例的示例性体系结构10。计算机系统10包括与通信端口18及存储器件16连接的中央处理单元(CPU)12。通信端口18与通信网络20通信。通信网络20和存储网络可以被配置为与服务器(主机)24和22及存储系统通信,该存储系统可以包括存储设备14。存储系统可以包括可以配置于独立磁盘冗余阵列(RAID)内的硬盘驱动器(HDD)器件、固态器件(SSD)等。下文所描述的操作可以在存储设备14上执行,位于系统10内或其他地方,并且可以具有独立地和/或结合其他CPU器件12工作的多个存储器件16。存储器件16可以包括诸如电可擦除可编程只读存储器 (EEPROM)之类的存储器或者相关器件的主机。存储器件16和存储设备14经由信号传播介质连接至CPU12。另外,CPU12通过通信端口18连接至通信网络20,具有所连接的多个附加计算机主机系统24和22。另外,存储器件16和CPU12可以嵌入并包含于计算系统10的每个构件内。每个存储系统也可以包括单独的和/或不同的结合起来工作的或者作为单独的存储器件16和/或CPU12来工作的存储器件16和CPU12。 

图2是示出在根据本发明的计算机系统内的数据存储系统的硬件结构的示例性框图200。图中示出了主计算机210、220、225,每个主机都充当用于作为数据存储系统200的部件来执行数据处理的中央处理单元。集群主机/节点(物理或虚拟设备)210、220和225可以是一个或多个新的物理设备或逻辑设备,用于在数据存储系统200中实现本发明的目的。在一种实施例中,以实例的方式(仅作示例),数据存储系统200可以被实现为System StorageTMDS8000TM。网络连接260可以是光纤通道架构、光纤通道点到点链路、通过以太网架构或点到点链路的光纤通道、FICON或ESCON I/O接口、任何其他I/O接口类型、无线网络、有线网络、LAN、WAN、异构网络、同构网络、公共网络(即,英特网)、专用网络或者它们的任意组合。主机210、220和225可以是本地的或者分布于一个或多个位置,并且可以配备任何类型的架构(或架构通道)(在图2中未示出)或者到存储控制器240的网络适配器260,例如,光纤通道、FICON、ESCON、以太网、光纤、无线或同轴适配器。因此,数据存储系统200配备有适合的架构(在图2中未示出)或网络适配器260,以进行通信。在图2中示出了数据存储系统200,包括存储控制器240及集群主机210、220和225。集群主机210、220和225可以包括集群节点。 

为促进对本文所描述的方法的更清楚的理解,在图2中示出了作为单个处理单元的存储控制器240,包括将在下文更详细地描述的微处理器242、系统存储器243和非易失性存储设备(“NVS”)216。应当注意,在某些实施例中,存储控制器240包括多个处理单元,每个处理单 元都具有它们自己的处理器复合体和系统存储器,并且通过数据存储系统200内的专用网络来互连。存储设备230(在图3中标记为230a、230b和230n)可以包括一个或多个存储器件(例如,存储阵列),该一个或多个存储器件(通过存储网络)连接至存储控制器240,一个或多个集群主机210、220和225连接至每个存储控制器240。 

在某些实施例中,包含于存储设备230内的器件可以连接成环路结构。存储控制器240管理存储设备230并且促进针对存储设备230的写请求和读请求的处理。存储控制器240的系统存储器243存储程序指令和数据,这些程序指令和数据可由处理器242存取用于执行本发明的功能和方法步骤以便执行和管理本文所描述的存储设备230。在一种实施例中,系统存储器243包括用于执行本文所描述的方法和操作的操作软件250,或者与其关联或通信。如图2所示,系统存储器243还可以包括存储设备230的用于缓冲“写入数据”和“读出数据”的高速缓存245(在此也称为“缓冲存储器”)或者与其通信,该“写入数据”和“读出数据”分别指的是写/读请求以及它们的关联数据。在一种实施例中,高速缓存245位于系统存储器243外部的设备内,然而仍保持为可由微处理器242访问,并且除了执行本文所描述的操作外,还可以用来提供防止数据丢失的附加安全性。 

在某些实施例中,高速缓存245以易失性存储器和非易失性存储器来实现,并且为了数据存储系统200的增强性能而经由本地总线(在图2中未示出)耦接至微处理器242。包含于数据存储控制器内的NVS216可由微处理器242访问并且用来为其他图形所描述的本发明的操作及执行提供附加的支持。NVS216也可以称为“永久”高速缓存或者“高速缓冲存储器”,并且以可以使用或不使用外部电源来保持存储于其内的数据的非易失性存储来实现。NVS可以存储于高速缓存245内并与其一起用于适合于实现本发明的目的的任何用途。在某些实施例中,备用电源(在图2中未示出)(例如,电池)给NVS216供应足够的电能以在数据存储系统200失去电源的情况下保持存储于其内的数据。在某些实施例中,NVS216的容量小于或等于高速缓存245的总容量。 

存储设备230可以在物理上包括一个或多个存储设备,例如,存储阵列。存储阵列是个体存储设备(例如,硬盘)的逻辑分组。在某些实施例中,存储设备230包括JBOD(简单磁盘捆绑)阵列或RAID(独立磁盘冗余阵列)阵列。一组物理存储阵列可以被进一步结合以形成盘组(rank),该盘组使物理存储器与逻辑配置分离开。在盘组内的存储器空间可以分配于逻辑卷内,该逻辑卷定义了在写/读请求中指定的存储位置。 

在一种实施例中,以实例的方式(仅作示例),图2所示的存储系统可以包括逻辑卷,或者简称为“卷”,可以具有不同种类的分配。存储设备230a、230b和230n在数据存储系统200中被示为盘组,并且在此称为盘组230a、230b和230n。盘组可以是数据存储系统200本地的,或者可以位于物理上远程的位置。换言之,本地存储控制器可以与远程存储控制器连接并且管理在远程位置处的存储设备。盘组230a被示出为配置有两个整卷234和236,以及一个分卷232a。盘组230b被示出为具有另一个分卷232b。该卷232被分配为跨越盘组230a和230b。盘组230n被示出为完全分配给卷238——也就是,盘组230n指的是用于卷238的整个物理存储器。根据上述实例,应当意识到,盘组可以被配置为包括一个或多个分卷和/或整卷。卷和盘组还可以被划分成代表固定的存储块的所谓的“轨道”。因此,轨道与给定的卷关联并且可以被赋予给定的盘组。 

存储控制器240可以包括快照模块255、时间戳模块256、主文件系统表模块257以及选择性元组版本化模块259。主文件系统表模块257包含在快照之下的节点。快照模块255、时间戳模块256、主文件系统表模块257及选择性元组版本化模块259可以结合存储控制器240、主机210、220、225及存储器件230的每个及全部构件来工作。快照模块255、时间戳模块256、主文件系统表模块257及选择性元组版本化模块259在结构上可以是一个完整的模块,或者可以与其他个体模块关联和/或包含于其他个体模块中。快照模块255、时间戳模块256、主文件系统表模块257及选择性元组版本化模块259还可以位于高速缓存 245或其他构件内。 

存储控制器240包括:用于控制到主计算机210、220、225的光纤通道协议的控制开关241;用于控制整个存储控制器240的微处理器242;用于存储用于控制存储控制器240的操作的微程序(操作软件)250、用于控制的数据及后面描述的每个表的非易失性控制存储器243;用于临时存储(缓冲)数据的高速缓存245;以及用于辅助高速缓存245来读取和写入数据的缓冲器244,控制开关241用于控制对与存储器件230、快照模块255、时间戳模块256、主文件系统表模块257以及选择性元组版本化模块259之间的数据传输的进行控制的协议,在该存储控制器240中可以设定信息。多个缓冲器244可以以本发明来实现以帮助本文所描述的操作。在一种实施例中,集群主机/节点210、220、225及存储控制器240通过作为接口的网络适配器(该网络适配器可以是光纤通道)260,即经由至少一个称为“架构(fabric)”的开关来连接。 

在一种实施例中,主计算机或者一个或多个物理或虚拟设备210、220、225及存储控制器240通过作为接口的网络适配器(该网络适配器可以是光纤通道)260,即经由至少一个称为“架构(fabric)”的开关来连接。在一种实施例中,将对图2所示的系统的操作进行描述。微处理器242可以控制用于存储来自主机设备(物理的或虚拟的)210的命令信息以及用于识别主机设备(物理的或虚拟的)210的信息的存储器243。控制开关241、缓冲器244、高速缓存245、操作软件250、微处理器242、存储器243、NVS216、快照模块255、时间戳模块256、主文件系统表模块257与选择性元组版本化模块259彼此通信并且可以是分离的或一个个体构件。此外,几个(若非全部)构件(例如,操作软件250)可以包含于存储器243内。为了适合于本发明的用途,在所示出的器件内的每个构件都可以链接到一起,并且可以彼此通信。 

如上所述,快照模块255、时间戳模块256、主文件系统表模块257及选择性元组版本化模块259还可以位于高速缓存245或其他构件内。应当注意,RAM模块259可以好比是短期存储器,而硬盘好比是长期 存储器。换言之,RAM模块259是随机存取存储器。RAM(随机存取存储器)是计算机内用于保持当前使用的操作系统、应用程序及数据(使得它们能够被计算机的处理器242快速地获得)的地方。RAM的读写比计算机内的其他类型的存储设备(硬盘、软盘及CD-ROM)快得多。正因如此,一个或多个快照模块255、时间戳模块256、主文件系统表模块257及选择性元组版本化模块259可以根据需要来使用,基于存储体系结构及用户偏好。 

现在转到图3,图中示出了用于示出提供使用选择性元组版本化的文件系统快照的一种示例性方法300的流程图。方法300开始(步骤302)于通过添加快照表来使用对文件系统的选择性元组版本化,以与文件系统表关联,用于存储含有用于每个快照的单个条目(具有快照时间戳)的快照(例如,每个快照都具有快照ID及各自的快照时间戳)(步骤304)。在快照下的节点包含于主文件系统表内。方法300结束(步骤306)。存储快照(每个快照都具有ID和各自的快照时间戳)。 

要帮助提供使用选择性元组版本化的用于保持文件系统的状态的文件系统快照,生成由文件系统(例如,节点的容器)使用的各种时间戳(例如,起始时间戳、结束时间戳及快照时间戳)。时间戳通过使用随时间严格递增的(单调)函数来生成。在此类函数(f)中,如果时间“T1”大于时间“T2”(例如,T1>T2),则函数f(T1)大于或等于f(T2)(例如,f(T1)≥f(T2)),其中f是函数,T1是第一时间,而T2是第二时间段)。因此,所生成的时间戳是唯一的,并且永远不会随时间减小,而相反会随时间增加。无穷大(∞)的时间值可以通过使用“空(null)”和/或时间计数器可以保存的最大值来定义。 

用于提供使用选择性元组版本化的用于保持文件系统的状态的文件系统快照的过程使用各种文件系统操作并且将在下文描述。用于使用各种文件系统操作来提供使用选择性元组版本化的用于维持单个节点的状态的位图的过程同样如下进行描述。图4A是示出用于创建节点的一种示例性方法400的流程图。方法400开始(步骤402)于连同节点属性一起接收创建新节点的请求(步骤404)。节点被创建于文件系统表内 (步骤406)。标记为时间“T1”的新的时间戳值被生成(步骤408)。含有新创建的文件系统的属性的新行被添加至文件系统表,起始时间等于时间“T1”(例如,起始时间=T1)并且结束时间等于无穷大(例如,结束时间=∞)(步骤410)。方法400结束(步骤412)。 

图4B是示出用于创建快照的一种示例性方法401的流程图。方法401开始(步骤403)。创建快照的请求连同快照ID一起被接收(步骤405)。方法401可以创建快照(步骤407)。时间“T2”的新快照的时间戳值被生成(步骤409)。新的行被添加至快照表,时间戳被设定为等于“T2”(例如,时间=T2)(步骤411)。方法401结束(步骤413)。 

图4C是示出用于请求保留节点的一种示例性方法405的流程图。方法405开始(步骤414)。方法405可以接收保留具体节点的请求,连同节点ID和请求应用位一起(步骤416)。保留具体节点的请求仅与位图相关。应当注意,使用快照的保留在快照被创建时被执行。位被设定于节点位图内(步骤418)。节点起始时间被返回给用户,以使用户能够在以后的时间访问所保留的节点(步骤420)。方法405结束(步骤421)。 

图4D是示出用于更新节点的一种示例性方法425的流程图。方法425开始(步骤417)并且可以接收更新节点的请求,连同节点ID以及应当要改变的节点属性一起(步骤422)。时间“T3”的新的时间戳值被生成(步骤424)。然后,方法425确定节点位图是否具有位集合,或者是否存在快照时间“T3”大于在文件系统表内的节点的起始时间且小于在文件系统表内的节点的结束时间的快照(步骤426)。若是,则节点信息被复制到新行内,该节点的旧行的结束时间被设定为等于“T3”(例如,结束时间=T3)(步骤428)。与该节点相关的新行根据更新请求来更新,并且所更新的行的起始时间被设定为等于时间“T3”,并且所更新的行的位图可以被清除(步骤430)。若否,方法425结束(步骤431)。 

图4E是示出用于从快照中检索节点的属性的一种示例性方法435的流程图。方法435开始(步骤432),可以接收从快照中检索节点的属 性的请求,连同节点ID和快照ID一起(步骤433)。通过使用快照ID从快照表中检索出快照时间戳(步骤436)。方法435使用节点ID来从文件系统表中检索具有小于快照时间戳的起始时间且大于快照时间戳的结束时间的节点(例如,属性)(步骤438)。方法435结束(步骤439)。 

图4F是示出用于去除保留具体节点的请求的一种示例性方法445的流程图。方法445开始(步骤440)并且可以接收停止保留节点的请求,该请求包括节点ID、请求应用位及节点起始时间(步骤441)。方法445去除保留具体节点的请求(步骤442)。在文件系统表内的位图可以不设定位。如果节点的位图被清除并且节点的结束时间不同于无穷大,则如果节点的结束时间小于快照表中的最早的快照时间戳,或者如果节点的起始时间大于快照表中的最近的快照时间戳,就删除节点的行(步骤444)。方法445结束(步骤446)。 

图4G是示出用于删除快照的一种示例性方法455的流程图。方法455开始(步骤447)并且可以接收删除快照的请求,连同快照ID一起(步骤448)。方法455可以删除快照(步骤450)。方法455可以通过使用快照ID从快照表中检索快照时间戳“T”(步骤452)。方法455检查以查看是否还有在要删除的快照之前的快照(步骤454)。若是,则方法455将“Tprev”设定为先前快照的时间(步骤456)。若不存在先前快照,则将Tprev设定为零值“0”(步骤458)。方法455检查以查看是否还有在要删除的快照之后的快照(步骤460)。若是,则将“Tnext”设定为后续快照的时间(步骤461)。若不存在后续快照,则将Tnext设定为无穷大“∞”(步骤462)。方法455可以删除在节点表内具有被清除的位图的并且它们的起始时间大于Tprev且它们的结束时间小于Tnext的每个节点(步骤463)。快照行被从快照表中删除(步骤464)。方法455结束(步骤467)。 

图4H是示出用于删除节点的一种示例性方法465的流程图。方法465开始(步骤466)并且可以接收删除节点的请求,连同节点ID一起(步骤468)。方法465检查以查看节点位图是否具有位集合,和/或, 是否存在快照时间戳大于节点的起始时间且小于节点的结束时间的快照(步骤469)。若是,则生成新的时间戳值“T”并且将节点的行的结束时间设定为“T”(步骤470)。若否,则从节点表中删除该节点的行(步骤472)。方法465结束(步骤474)。 

图5是示出一种示例性的文件系统表以及使用选择性元组版本化的用于保留文件系统的状态的快照表的框图500。在图5中,示出并标记了文件系统表和快照表,包括“更新前”和“更新后”。在“更新前”的文件系统表中,示出了节点标识(ID)(例如,文件系统ID)、起始时间、结束时间、位图、尺寸及其他各种条目(在图表中示为“等”)的列。举例来说,图5示出了“更新前”的文件系统表,节点1、2和3被添加至文件系统表。节点1具有起始时间T1、被设定为无穷大(∞)的结束时间、位图中被设定为等于0000的位,并且节点的尺寸被示为任意值100(在此仅作为示例而示出)。节点2具有起始时间T2、被设定为无穷大(∞)的结束时间、位图中被设定为等于0001的位,并且尺寸被示为任意值100(在此仅作为示例而示出)。节点3具有起始时间T3、被设定为无穷大(∞)的结束时间、位图中被设定为等于0000的位,并且节点的尺寸被示为任意值100(在此仅作为示例而示出)。快照表包括标记为快照ID以及用于快照时间戳的快照时间的至少两列。快照ID指示被设定为等于1(“1”)的任意值,而快照时间被设定为等于T2。没有两个快照时间戳是相同的。在时间戳之间的顺序可以是T1小于T2以及T2小于T3(例如,T1<T2<T3),并且快照时间戳能够被标记为“Ts”,并且Ts大于T1且小于T2(例如,Ts>T1且<T2)。 

举例来说,图5还示出了“更新后”的文件系统表,节点1、2和3被更新。在节点1中,状态被保留,因为节点1在快照(例如,快照时间戳)之下。节点2的状态被保留,因为节点2具有通过使用位图来设定为“开启(on)”的位(例如,设定为0001的位)。但是,节点3的状态未保留,因为它既不在快照(例如,快照时间戳)之下也没有通过使用具有开启的位(例如,设定为0001)的位图来保留。 

对于节点1,节点1的复制行被创建,并且所复制的节点1的值具 有起始时间T1、被设定为T5的结束时间、位图中被设定为等于0000的位,并且节点的尺寸被示为任意值100(在此仅作为示例而示出)。现在,在更新之后,所保留的节点1具有起始时间T5、被设定为∞的结束时间,位图中被设定为等于0000的位,并且节点的尺寸被示为任意值200(在此仅作为示例而示出)。 

对于节点2,节点2的复制行被创建,并且所复制的节点2的值具有起始时间T2、被设定为T6的结束时间、位图中被设定为等于0001的位,并且节点的尺寸被示为任意值100(在此仅作为示例而示出)。现在,在更新之后,所保留的节点2具有起始时间T6、被设定为∞的结束时间、位图中被清除的且设定为等于0000的位,并且节点的尺寸被示为任意值200(在此仅作为示例而示出)。 

节点3的状态未保留,因为节点3既不在快照(例如,快照时间戳)之下,也没有通过使用具有开启的位(例如,设定为0001)的位图来保留。对节点3不进行复制,并且在更新之后,节点3具有起始时间T7,以及被设定为∞的结束时间,位图中被设定为等于0000的位,并且节点的尺寸被示为任意值200(在此仅作为示例而示出)。 

如图5所示,通过添加快照表来将选择性元组版本化用于文件系统表上,以与文件系统表关联,用于将与节点相关的行存储于文件系统表内。节点行仅存储于文件系统表内,而快照表被用来存储快照请求并且保存快照获取的时间。文件系统表包含具有以快照相关的时间戳标识的条目的行,被创建用于保留文件系统的以往状态。与快照关联的快照标识(ID)被添加至快照表,以便访问具体的快照。文件系统表仅包含有关包含于文件系统内的节点的数据。起始时间和结束时间被添加至与文件系统表内的新节点关联的行。起始时间被设定为等于新行被添加至文件系统表的时间。结束时间被设定为等于无穷大。换言之,在文件系统表内的每个行都包含起始时间和结束时间。当用于节点的行被添加至文件系统表(在时间“T”)时,则节点的起始时间被设定为“T”,而结束时间被设定为无穷大。 

快照时间戳被添加至在快照被获取时创建于快照表内的新行的条目 之一。快照保留在文件系统表中的在快照创建之前创建的全部节点。位图被用来保留单个节点,而不是整个文件系统(例如,节点的容器)。文件系统表可以被更新和/或请求可以被接收,用于去除保留文件系统的状态和/或具体节点的请求。新的字段被添加至文件系统表内的节点的每个行,用于指示节点是否应当保留。作为保留的一部分,在字段内的位可以被设定用于响应于接收到保留节点的请求而保留节点。位指示使用节点的应用程序。作为用于保留节点的请求的一部分,保留节点的请求连同节点标识(ID)以及用于请求保留节点的位一起被接收。快照标识(ID)被返回给用户,以便访问被保留的节点。当使用位图的节点被保留时,返回给用户的值是保留的当前时间,以允许用户访问所保留的行。快照ID在快照创建期间被分配,并且允许用户访问由快照保留的所有行。 

请求还可以被接收,用于连同节点ID以及需要更新的节点的相关属性一起来更新节点。请求一次只能够更新一个节点。换言之,一次不更新多个行,而是,一次(每个请求)只更新一个行。指示更新时间的新的时间戳被生成。结合更新,与要更新的节点关联的行被复制到新行内,结束时间被设定为等于所生成的新的时间戳。仅在存在具有大于节点的起始时间且小于节点的结束时间的快照时间戳的快照的情况下,执行复制。节点的起始时间被设定为等于新的时间戳。 

在任意时间点,可以接收用于请求删除快照的请求。在接收到删除快照的请求时,快照及快照标识(ID)被删除。此外,查询被执行,用于去除由所删除的快照保留的并且不与快照表中的任何其他快照关联的节点。 

此外,作为接收删除快照及快照标识(ID)的请求的一部分,通过使用快照ID来从快照表中检索出快照时间戳。先前快照(例如,在待删除的快照之前的且标记为“Tprev”的快照)的时间戳以及后续快照(例如,在待删除的快照之后的且标记为“Tnext”的快照)的时间戳被检索。如果在快照表中没有找到要删除的快照的先前快照,则将标记为“Tprev”(和/或“先前”)的时间戳设定为零值。如果在快照表中没有找 到要删除的快照的后续快照,则将标记为“Tnext”(和/或“后续”)的时间戳设定为无穷大值。具有大于先前快照的时间戳的起始时间以及小于后续快照的时间戳的结束时间戳的快照及其关联的与文件系统相关的行被删除。 

所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。 

可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。 

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软 件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。 

上面已经参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。 

也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。 

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序 执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。 

虽然已经详细地说明了本发明的一个或多个实施例,但是本领域技术人员应当意识到,在不脱离后面的权利要求书所阐明的本发明的范围的情况下可以对上述实施例进行修改和适应。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号