用于文件系统快照持久性的方法和装置的制作方法

文档序号:6513919阅读:513来源:国知局
专利名称:用于文件系统快照持久性的方法和装置的制作方法
技术领域
本发明通常涉及改进型数据处理系统,特别是,用于处理数据的方法和装置。更具体而言,本发明提供了一种用于管理文件系统的方法,装置和计算机指令背景技术文件系统是用于在盘上存储和检索文件的机制。文件系统定义了用于跟踪文件的目录结构和访问文件所需的路径语法。文件系统也定义了命名文件的方式,以及文件或卷的最大文件尺寸。文件系统通常由两个不同的部分组成,即文件集合和目录结构。在文件集合中的每个文件存储有关的数据。目录结构组织并提供有关文件系统中文件的信息。
关于文件系统的某些问题涉及文件系统中出现的损坏和错误。采用文件系统快照来建立在某一时间点处文件系统的一致块级映像。块表示同时一起发送或处理的数据组。块也被称之为数据块。例如,块的大小可为1K字节。文件系统快照用于创建文件系统的备份。
这些快照用于重构文件系统。目前的快照对于数据处理系统崩溃不具有持久性(persistence)。本发明认识到当前可获得的快照系统在文件系统恢复操作期间并不会被保持。从而,这些类型的快照在系统重新启动期间不具持久性。
因此,提供用于创建和管理文件系统快照的改进型方法,装置,和计算机指令将是有益的。

发明内容
本发明提供了一种用于在数据处理系统中管理文件系统中的数据的方法,装置和计算机指令。在文件系统恢复期间,检测用于修改文件系统中数据块的请求。当检测到该请求时,将描述数据块的元数据写入快照映像。将文件系统中数据块的数据拷贝到快照映像。当将该数据拷贝到快照映像中之后修改文件系统中的数据块。该快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。


看作是本发明特性的新颖特征由所附权利要求给出。不过,结合附图,参照以下示意性实施例的详细描述,将更好地理解本发明本身,优选实施方式,及其他目的和优点,其中图1为根据本发明优选实施例可实现本发明的数据处理系统的示意图;图2为可实现本发明的数据处理系统的框图;图3表示根据本发明优选实施例用在创建和管理文件系统快照中的示意性部件;图4表示根据本发明优选实施例的快照元数据;图5表示根据本发明优选实施例、文件系统快照的开始部分的示意图;图6表示根据本发明优选实施例、快照映像中的快照映像组的示意图;图7表示根据本发明优选实施例、快照映像组中的快照映像页的示意图;图8表示根据本发明优选实施例的分段的示意图;图9A和9B表示根据本发明优选实施例、用于更新文件系统快照的流程图;图10表示根据本发明优选实施例、用于启动恢复过程的过程;图11表示根据本发明优选实施例、用于检查文件系统的过程;图12表示根据本发明优选实施例、用于对文件系统执行文件系统检查恢复过程的过程;
图13表示根据本发明优选实施例、用于对写有日志的文件系统执行日志重写恢复过程的过程。
具体实施例方式
现在参照附图,具体参照图1进行描述,其中,图1表示根据本发明优选实施例可实现本发明的数据处理系统的示意图。所示计算机100包括系统单元102,视频显示终端104,键盘106,存储设备108(存储设备108可包括软盘驱动器以及其他类型的永久和可移动存储介质),和鼠标110。个人计算机100还可包括附加输入设备,如操纵杆,触摸板,触摸屏,跟踪球,麦克风等。计算机100可使用任何合适的计算机实现,如IBM eServer计算机或IntelliStation计算机(它们是处于纽约Armonk的IBM公司的产品)。尽管所述表示示出为计算机,然而还可以用其他类型的数据处理系统,如网络计算机,来构成本发明的其他实施例。计算机100还优选包括图形用户接口(GUI),在计算机100的运行操作中,图形用户接口可通过驻留在计算机可读介质中的系统软件来实现。
现参照图2,图2表示可实现本发明的数据处理系统的框图。数据处理系统200是计算机的示例,如图1中的计算机100,其中,可设置有用于实现本发明的过程的代码或指令。数据处理系统200采用外设部件接口(PCI)局部总线体系结构。虽然所述示例采用PCI总线,但也可采用其他总线体系结构,如加速图形端口(AGP)和工业标准体系结构(ISA)。处理器202和主存储器204通过PCI桥208与PCI局部总线206连接。PCI桥208还可包括用于处理器202的集成存储器控制器和高速缓存。通过直接部件互连或通过内插(add-in)连接器可构成到PCI局部总线206的附加连接。在所述示例中,局域网(LAN)适配器210,小型计算机系统接口SCSI主机总线适配器212,和扩展总线接口214通过直接部件连接与PCI局部总线206连接。与之相反,音频适配器216,图形适配器218,和音频/视频适配器219通过插入到扩展槽中的内插板与PCI局部总线206连接。扩展总线接口214为键盘和鼠标适配器220,调制解调器222,和附加存储器224提供连接。SCSI主机总线适配器212为硬盘驱动器226,磁带驱动器228,和CD-ROM驱动器230提供连接。典型的PCI局部总线的实现将支持三或四个PCI扩展槽或内插连接。
操作系统运行在处理器202上,用于协调和控制如图2所示数据处理系统200内的各种部件。操作系统可为市场上可获得的操作系统,如Windows XP(可从微软公司获得)。面向对象的编程系统,如Java,可结合操作系统运行,并提供从数据处理系统200上执行的Java程序或应用对操作系统的调用。“Java”为Sun Microsystems公司的商标。用于操作系统的指令,面向对象的编程系统,以及应用或程序置于存储设备上,如硬盘驱动器226上,并可将其载入主存储器204中以便由处理器202执行。
本领域普通技术人员将会理解,在图2中的硬件可根据实现方式进行变化。除图2所示的硬件外,还可使用或代之以使用其他内部硬件或外设,如快擦写只读存储器(ROM),等效非易失性存储器,或光盘驱动器等。此外,本发明的程序还可应用于多处理器数据处理系统。
例如,对于数据处理系统200,如果可选地配置为网络计算机,其可不包含SCSI主机总线适配器212,硬盘驱动器226,磁带驱动器228,和CD-ROM 230。在此情形中,计算机(恰当称之为客户机计算机)包括某些类型的网络通信接口,如LAN适配器210,调制解调器222等。作为另一示例,数据处理系统200可为独立系统,其被配置成可在不依赖于某类型网络通信接口的条件下进行启动,而不管数据处理系统200是否包括某类型网络通信接口。作为又一示例,数据处理系统200可为个人数字助理(PDA),且该个人数字助理配置有ROM和/或快擦写ROM,以提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器。
图2所述示例以及上述示例并不意在表示对体系结构的限制。例如,除采用PDA的形式外,数据处理系统200还可为笔记本计算机或手持式计算机。数据处理系统200还可为公用信息机(kiosk)或Web电器。
本发明的处理通过处理器202使用计算机实现的指令来执行,指令可设置在诸如主存储器204,存储器224之类的存储器中,或设置在一个或多个外设226-230中。
参看图3,图3表示根据本发明优选实施例用在创建和管理文件系统快照中的示意性部件。如此处所使用的,术语“快照”用于表示文件系统的快照,另外还可将其称为“文件系统快照”。
在该示例中,存在有用户空间300和内核空间302。快照用户接口304和恢复用户接口306处在用户空间300中。采用这些用户接口以接收用来创建快照的用户输入,以及当要将文件系统恢复到先前状态时执行恢复处理。具体是,使用快照用户接口304启动快照的创建。该接口用于接收诸如创建或删除查询之类的命令。用户可为个人或应用程序。恢复用户接口306用于在系统崩溃或断电后启动文件系统的恢复。
内核空间302包含文件处理线程308,文件系统快照线程310,逻辑卷管理器312,文件系统设备314,和快照设备316。文件系统318处在文件系统设备314内,而快照320处在快照设备316内。在这些示例中,这两个设备为逻辑卷。文件处理线程308用于数据访问,如读操作,写操作,或安装驱动操作。对文件系统(如文件系统设备314中的文件系统318)中发现的数据执行这些操作。当在正常文件系统操作期间接收到用于数据访问的请求时,使用文件处理线程308的处理。
文件系统快照线程310用于实现创建快照(如处在快照设备316中的快照320)的处理。该设备可设置在多个位置。例如,快照320可与文件系统318处在同一物理硬盘驱动器上。或者,快照320可处在另一存储介质上,如非易失性随机存取存储器(NVRAM),另一物理硬盘驱动器,或光学介质上。逻辑卷管理器312用于在文件处理线程308,文件系统快照线程310和逻辑设备,与文件系统设备314和快照设备316之间提供接口。
在运行期间,按照当数据处理系统中出现崩溃时可重构快照320中的状态的方式,构造快照元数据并将其写入快照320。在这些说明性示例中,在文件系统恢复或修复期间,在快照设备320中重构的快照通过恢复或修复程序而不断被更新,从而使重新设置时所重构快照的状态与重新设置时所修复的文件系统的状态相一致。当文件系统恢复或修复操作完成后,快照将继续包含创建快照时刻的文件系统的一致块级映像。
特别是,当在文件系统中要修改数据时,如将其写入文件系统318或从文件系统318中将其删除时,使用来自文件系统的数据来更新快照320。在这些示例中,将所要在文件系统318中修改的数据块在对其实际进行修改之前将其拷贝到快照320中。除来自数据块的数据外,还将描述修改之前该数据块的信息和元数据拷贝或写入到快照320中。可使用在针对快照320中数据块的运行期间所产生的元数据和数据,将文件系统318设置到对该数据块进行修改之前的状态。
下面参看图4,图4表示根据本发明优选实施例的快照元数据。快照元数据400为用于跟踪文件系统中的文件系统块的快照元数据的示例,如在图3中的快照320。快照元数据400通过快照处理(如在图3中的文件系统快照线程310)来创建。在本发明所示示例中,该快照在数据处理系统的系统重新启动期间是具有持久性的。在这些示例中,当文件系统恢复或修复操作能够保持快照映像时,会出现快照的持久性。
在所示示例中,快照元数据400包含快照摘要映像(snapshotsummary map)402,快照映像404,和快照分段406。在快照摘要映像402中的项用于描述在快照映像404中发现的快照映像页。在这些示例中,在快照摘要映像402中的每个项描述快照映像404中快照映像组的初始化状态。快照映像组包含32个快照映像页。在快照映像404中的数据描述在文件系统中每个数据块的现用(in-use)和拷贝(copied)状态。快照分段406包含描述拷贝到快照分段406中的数据块的前映像(before-image)描述符,以及文件系统修改之前的数据块。
在运行期间,当要对文件系统上的数据块进行修改时,在快照元数据400中保留盘上(on-disc)结构状态。这些修改包括写入时拷贝(COW,copy-on-write)和删除时拷贝(COD,copy-on-delete)操作。对数据块的这些状态的保留使得能够将文件系统返回到文件系统中的数据块被修改之前的状态。对在快照映像404中的快照映像组进行分配,初始化每个快照映像项的现用状态,并将其同步写到在快照元数据400中初始化的每个快照映像组的盘上。在运行期间,同步初始化和更新摘要快照映像项。
现在参看图5,根据本发明优选实施例,给出了文件系统快照的开始部分的示意图。部分500表示在硬盘驱动器上的包含有快照超级块502,块映像Xtree拷贝504,和快照摘要映像506的部分。
快照摘要映像506为快照的开始,如在图4中的快照元数据400。快照超级块502用于标识快照的开始,并指向自文件系统最后安装后所写入的快照中的快照分段的开始和末尾。当在数据处理系统中文件系统可用于访问时,文件系统安装完毕。块映像X树(Xtree)拷贝504包含有描述文件系统中不同块的现用状态的文件系统结构映像。快照摘要映像506包含有若干项,其中,每个项指向快照分段,该快照分段包含快照映像组,以及该快照映像组中初始化的每个快照映像页的现用状态的摘要。
现参看图6,根据本发明优选实施例,表示出快照映像中的快照映像组。快照映像组600表示设置在快照映像(如图4所示的快照映像404)中的页的示例。在这些示例中,快照映像组600包括32个页,但在该图中仅显示出其中的4个页,快照映像页602,快照映像页604,快照映像页606,和快照映像页608。将快照组600中的每个快照映像页初始化为现用状态,并将其同步写到对于该页映射的每个文件系统块的盘上。文件系统块的前映像进行拷贝后,将文件系统块的拷贝状态异步写入到快照映像页中。
现参看图7,根据本发明优选实施例,表示出快照映像组中的快照映像页。快照映像页700表示快照映像页(如在图6中的快照映像页602)的示例。该页或项包含有与快照分段中的该具体页相关的每个数据块的现用状态的描述。例如,项702,704,706,708,710,712和714描述正处于使用状态的文件系统数据块。该示例表示,当创建了快照时,文件系统块0,1,2,508,509,510和511在文件系统中处于现用(in use)状态。项716,718和720显示文件系统块处理拷贝(copied)状态。该示例表示,文件系统块509,510和511已将其前映像拷贝到快照中。项726,728和730显示在快照中拷贝了文件系统块的前映像的位置。该示例表示,文件系统块509的前映像被拷贝到了快照块516,文件系统块510的前映像被拷贝到了快照块517,以及文件系统块511的前映像被拷贝到了快照块518。项722和724显示为既没有被使用,又没有被拷贝。在这些示例中,在快照映像页700中出现有512个项。出于说明目的,在快照映像页700中仅显示出数个项。
下面,参看图8,显示出根据本发明优选实施例的分段的示意图。分段头部800表示处在快照分段(如在图4中的快照分段406)中的分段头部的示例。在该示例中,分段头部800处在分段801中的某个页中,在该示例中,分段801的长度为128k字节。当然,根据实现方式,可使用任何大小的分段。
分段801包含分段头部800和248个sLog项,分段头部800包含链接,自身值,和扩展(extent)数。链接是到下一个分段的地址,自身值是当前分段的地址。扩展数的值表示被拷贝到分段中的扩展的数目。扩展是作为单位分配到文件系统的连续文件系统块的序列。如图所示,sLog项804,806和808是用于描述已拷贝到快照中的文件系统前映像的头部项的示例。每个sLog项包括循环冗余校验(CRC)数据,起始数据块地址,(sAddr)和长度,该长度表示连续数据块的数量。在该示例中,在部分或扩展810或812中找到前映像文件系统数据块。在此情形中,“前映像”表示在创建快照时在文件系统中已存在的文件系统块。当试图修改块映像时,该块映像即成为“前映像”。同时,将新的块映像称为“后映像”。快照获取文件系统块的前映像的拷贝,然后,文件系统能够将后映像块写入到其设备上。
对于分段,如分段801,将前映像数据块同步写入到这些分段中。这些分段在超级块(如在图5中的快照超级块502)中的链表中得以描述。该链表的最后分段的头部,总是在仅次于最后的分段的头部被写成指向该最后分段之前被初始化。这些分段还包括描述拷贝到分段中的数据块的前映像描述符。在这些示例中,校验和字段,如CRC数据字段,用于验证当出现崩溃时最后前映像扩展的换出。
图9A和9B表示,根据本发明优选实施例,用于更新文件系统快照的流程图。在图9A和9B的处理还可在快照过程(如在图3中文件系统快照线程310)中实现。
处理以接收到用于修改文件系统中数据的请求而开始,例如写入或删除请求(步骤900)。接下来,确定是否存在文件系统的快照(步骤902)。如果存在快照,则确定块X的快照摘要映像(ssMap)项是否已初始化(步骤904)。在这些示例中,ssMap项在ssMap中创建,如在图4中的快照摘要映像402中创建。块X用于在文件系统中要被修改的数据块。如果块X的ssMap项未被初始化,则对该ssMap项的32个sMap页进行现用(inUse)状态的初始化(步骤906)。这些sMap页例如可为在图6所示快照映像组600中的页。
之后,将32个快照映像(sMap)页同步写入到快照中(步骤908)。接下来,将ssMap标记为已被初始化,在该项中对sMapGroup的位置进行标记,并将其同步写入到在快照中的摘要快照映像中(步骤910)。
下面,确定当产生快照时块X是否处于现用状态(步骤912)。如果当产生快照时在文件系统中块X处于现用状态,则确定块X是否被拷贝到快照中(步骤914)。如果块X尚未从文件系统拷贝到快照中,则从文件系统读取来自文件系统的块X的前映像(步骤916)。
之后,确定在快照中的当前分段是否已满(步骤918)。如果当前分段未满,则使用以下内容修改当前分段头部块X的前映像在快照中的位置,该数据块在文件系统中的位置,以及块X的前映像的校验和(步骤920)。接下来,将分段头部和块X的前映像同步写入到快照中(步骤922)。换而言之,将在修改文件系统的数据块之前从文件系统读取的对于数据块的数据写入到快照中。之后,异步更新sMap页,以表示块X已被拷贝到快照中,以及表示块X的前映像的位置(步骤924)。该快照映像页例如可为在图6中的快照映像页602。下面,执行文件系统修改,如文件系统写入或删除操作(步骤926),其后,过程终止。
转到步骤902,如果快照不存在,则过程进行到如以上所述的步骤926。接下来,回到步骤904,如果块X的ssMap项已被初始化,则过程直接进行到如以上所述的步骤912。在步骤912中,如果当产生快照时块X未处于现用状态,则过程进行到如以上所述的步骤926。回到步骤914,如果块X未拷贝到快照中,则过程进行到如以上所述的步骤926。
回到步骤918,如果当前分段满,则在快照中为新分段分配空间(步骤928)。接下来,初始化新分段的头部,以显示新分段为空,且目前在快照中是最后的分段(步骤930)。然后,同步写入新分段头部(步骤932)。此外,标记前一个分段,以使其指向作为下一个分段的新分段(步骤934)。下面,同步写入前一个分段的头部(步骤936)。同步写入这些分段的头部,并按这种特定顺序,从而确保在它们都被写入盘上之前不会出现系统崩溃。该文件系统恢复过程依赖于能够确定在该列表中最后写入的分段。然后,将新分段标记为当前分段(步骤938)。之后,过程进行到如上所述的步骤920。
图10-13的流程图描述了用于将文件系统恢复到一致状态的恢复过程。本发明的机制提供了用于保留当发生文件系统的恢复或修复时的快照的方法。
通过遍历(walking)前映像数据分段的链表以找出已拷贝到快照中的文件系统块,从而重构摘要映像页的拷贝状态。此外,以下所描述的过程通过恢复或修复过程对文件系统数据块的任何写入或删除执行写入时拷贝和删除时拷贝处理。在未安装文件系统的条件下出现系统崩溃或掉电后,文件系统元数据将处在不一致的状态。例如,可能已刷新某些块到盘中,而其他块未刷新到盘中。使用恢复/修复过程(fsck代码或日志重写(logredo))将系统文件元数据恢复到一致状态。该状态不必与当前快照的状态相同。内核侧(kernel-side)代码不对不一致状态的文件系统进行处理,从而,文件系统在其能够被再次安装前必须进行修复。此外,以下所描述的过程在运行期间保持有盘上结构状态,以便在中断时能够继续进行恢复和修复。
图10表示根据本发明优选实施例、用于启动恢复过程的过程。可在诸如图3所示恢复UI 306之类的过程中实现该过程。
过程以读取从超级块所指向的第一分段头部而开始(步骤1000)。该超级块例如为在图5中的快照超级块502。其次,选出在分段中未处理的sLog项(步骤1002)。该项等效于如图8中所示sLog项。然后,确定该选出的分段是否为快照分段表中最后的分段(步骤1004)。如果这就是最后的分段,则通过检查校验和来确定是否已拷贝了数据块(步骤1006)。利用步骤1006确定在系统暂停之前前映像是否完全写到盘上。例如,如果来自文件系统的数据块未拷贝到快照,而数据块的元数据已写入到快照中且系统崩溃,校验和将不匹配。在这种情形中,数据块未拷贝到快照中,而在文件系统上的数据块保持完整,这是由于在这种情形中数据块在文件系统上未被修改。由于分段头部的同步写入,该校验只在最后分段上是必需的。
接下来,确定在项中的校验和是否正确(步骤1008)。如果校验和正确,则确定数据块是否标记为在sMap中已拷贝(步骤1010)。如果数据块当前未标记为在sMap中已拷贝,则现在将该数据块标记为在sMap中已拷贝(步骤1012)。
此外,确定对该分段是否存在任何附加项(步骤1018)。如果对该分段存在附加项,则确定是否存在另一个未处理的分段(步骤1020)。如果存在另一个未处理的分段,则读取下一个未处理的分段(步骤1022)。然后,过程进行到以上所述的步骤1002。回到步骤1018,如果对分段存在更多未处理的项,则过程还进行到如上所述的步骤1002。
回到步骤1020,如果不存在另一未处理的分段,则开始进行恢复处理(步骤1014)。其次,启动运行时处理过程(步骤1016),之后过程终止。步骤1014与图12中的步骤1208或图13中的步骤1306相同。步骤1016与图12中的步骤1214或图13中的步骤1312相同。
回到步骤1004,如果这不是最后的分段,则过程进行到如上所述的步骤1010。回到步骤1008,如果校验和不正确,则过程进行到如上所述的步骤1014。在步骤1010中,如果块被标记为在sMap中已拷贝,则过程进行到如上所述的步骤1018。
下面,参看图11,根据本发明优选实施例,表示用于检查文件系统的过程。图11中的过程可被实现到恢复UI(如在图3中的恢复UI306)中。该过程表示当启动文件系统恢复如fsck代码时的流程。
过程以运行日志重写而开始(步骤1102)。用于日志重写所执行的步骤在后面的图13中进行更详细的描述。其次,确定是否请求了快速文件系统检查以及文件系统是否标记为干净(clean)。检查文件系统超级块,以确定文件系统是否干净。如果日志重写不能修复文件系统,则状态将被标记为脏(dirty)。如果快速文件系统检查未被请求或标记为干净,则运行文件系统(步骤1106),之后,过程终止。文件系统检查步骤将在后面的图12中进行更详细地描述。回到步骤1104,如果快速文件系统检查被请求,以及文件系统被标记为脏,则之后过程终止。
在图12中,根据本发明优选实施例,表示用于对文件系统执行文件系统检查恢复过程的过程。文件系统检查恢复过程是通过查看所有系统元数据来验证和修复文件系统元数据使之具有一致性的方法。该过程还被称为fsck。在图12中的过程可被实现到恢复UI(如在图3中的恢复UI 306)中。
过程以确定文件系统检查是否具有文件系统写入许可而开始(步骤1202)。如果文件系统检查具有文件系统写入许可,则将运行时结构初始化以与快照连接(步骤1204)。运行时结构是用于保持所要在恢复操作期间写入到快照中的数据的缓冲区。
接下来,通过遍历分段表来重构sMap页(步骤1206)。参照在图10中的步骤1000-1014以及1018-1022更详细地描述了步骤1206。由于在运行期间sMap页被异步写入,从而恢复sMap页。sMap页没有必要具有文件系统块的正确拷贝状态。之后,继续进行正常的读/写(rw)文件系统处理(步骤1208)。在步骤1208期间,fsck代码查看所有文件系统元数据,并确定在系统文件元数据中是否存在任何不一致性。如果fsck代码找到任何不一致性,则fsck代码确定如何修复文件系统元数据。fsck代码或去除文件系统对象,或尝试修复文件系统对象的元数据。去除将导致COD,修复将导致COW。
然后,确定文件系统检查是否通过写入时拷贝(COW)操作或删除时拷贝(COD)操作来修改文件系统(步骤1210)。如果文件系统检查不通过COW操作或COD操作修改文件系统,则通过刷新sMap页的任何缓冲写入到盘上而关闭快照(步骤1212),之后,过程终止。
回到步骤1202,如果文件系统检查不具有文件系统写入许可,则继续进行不具有快照交互的只读文件系统检查(步骤1216),之后,过程终止。在只读检查期间,fsck代码查看所有文件系统元数据,如果找到任何不一致性,则发出告警消息。它不对文件系统做任何修改。回到步骤1210,如果文件系统检查通过COW操作或COD操作修改文件系统,那么,假如文件系统块已被拷贝到快照中,则执行运行时检查(步骤1214),然后,过程进行到如上所述的步骤1208。该检查采用与图9A和9B所述相同的方式进行。它是在与当前运行在图3所示恢复UI 306中的fsck代码过程相同的过程下进行。
下面,参看图13,根据本发明优选实施例,表示用于对写有日志的文件系统执行日志重写恢复过程的过程。图13中的过程可被实现到恢复UI(如图3中的恢复UI 306)中。
过程以初始化运行时结构以与快照连接而开始(步骤1302)。接下来,通过遍历分段表来重构sMap页(步骤1304)。参照在图10中的步骤1000-1014以及1018-1022更详细地描述了步骤1304。之后,继续进行正常的日志重写处理(步骤1306)。读取与文件系统相关的日志记录。文件系统使用数据库日志技术,以通过在日志记录中跟踪文件系统元数据的变化,从而保持文件系统的结构一致性。重现日志记录。每个日志记录包含关于文件系统元数据变化的信息。通过重现日志记录,根据日志记录来修改文件系统元数据。将从日志结束起始并且反向移动的所有日志记录重现,直至到达最近的同步点。其次,确定日志重写是否通过COW操作或COD操作来修改文件系统(步骤1308)。如果日志重写不通过COW操作或COD操作修改文件系统,则通过刷新sMap页的任何缓冲写入到盘上而关闭快照(步骤1310),之后,过程终止。
回到步骤1308,如果日志重写通过COW操作或COD操作修改文件系统,那么,执行运行时检查以确定文件系统数据块是否已被拷贝到快照中(步骤1312)。与fsck代码类似,步骤1312等效于先前在图9A和9B所述的过程。然后,过程进行到如上所述的步骤1306。
从而,本发明提供了用于从系统崩溃恢复,并保持通过本发明的过程所创建的文件系统快照的改进型方法,装置和计算机指令。本发明的机制动态更新文件系统的快照。将关于在文件系统中进行修改的数据块的元数据包括在快照中。在这些示例中,修改为在文件系统中对数据块的写入和删除操作。在文件系统中对数据块执行修改操作之前,将要经受这样操作的数据块拷贝到快照中。此外,在修改之前,将诸如在文件系统中数据块的位置之类的数据,以及在快照中数据块的位置,包括在快照中。数据块被写入到快照之前,将关于数据块的元数据写入到快照中。写入到快照中的数据块用于该数据块的前映像,这是由于在创建快照时它已存在于文件系统中。在文件系统中的数据块的修改发生在元数据以及数据块的前映像写入快照之后。该修改导致数据块的“后映像”版本。如果想要将文件系统的状态恢复到创建快照时的状态,则可使用快照进行恢复。
重要的是应注意,虽然针对全功能的数据处理系统描述了本发明,然而本领域普通技术人员应该理解,本发明的处理能够以指令的计算机可读介质的形式以及多种形式分布,并且无论实际用于实现分布的信号承载介质的具体类型如何,本发明均同样适用。计算机可读介质的示例包括可记录型介质,如软盘,硬盘驱动器,RAM,CD-ROM,DVD-ROM,和传输型介质,诸如使用例如无线电频率和光波传输的传输形式的数据和模拟通信链路,有线或无线通信链路。计算机可读介质可采用编码格式的形式,该格式在具体数据处理系统中为实际应用而进行解码。
本发明的描述是出于说明及描述的目的,并不意在以所批露的形式详尽列举出本发明或限制本发明。显而易见,本领域普通技术人员能够易于想到多种修改和变形。所选及所述实施例是旨在更好地说明本发明的原理以及实际应用,并使本领域其他普通技术人员能够想到本发明的多种修改的多种实施例,这些修改的实施例适用于他们所想到的具体应用。
权利要求
1.一种在数据处理系统中用于管理文件系统中的数据的方法,所述方法包括检测用于修改在文件系统中的数据块的请求;当检测到所述请求时,将描述文件系统中的数据块的元数据写入快照映像中;将文件系统中数据块的数据拷贝到快照映像中;以及当将数据块中的数据拷贝到快照映像中之后,修改在文件系统中的数据块,其中所述快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。
2.根据权利要求1的方法,其中,拷贝步骤包括将用于定位数据的信息标识存储在快照映像内的表中,其中,所述表用于定位在文件系统中的不同数据块。
3.根据权利要求1的方法,其中,快照映像包括快照摘要映像,快照映像和一组分段,且其中摘要映像标识快照映像中快照映像页的初始化状态,快照映像包含快照映像页,所述快照映像页标识在文件系统中现用的数据块,所述分段组包括来自文件系统的数据块的拷贝。
4.根据权利要求1的方法,其中,元数据包括快照摘要映像,摘要映像,和分段头部。
5.根据权利要求4的方法,其中,所选事件为当在修改文件系统中的数据块时数据处理系统的失效。
6.根据权利要求4的方法,其中,所选事件为请求将文件系统恢复到一致状态的用户输入。
7.根据权利要求1的方法,其中,写入步骤包括在由快照映像组所引用的任何前映像数据块被写入到快照映像之前,将快照映像组的快照映像项的现用状态写入到快照映像中。
8.根据权利要求7的方法,其中,写入步骤还包括当将快照映像组的数据块的现用状态写入到快照映像后,将摘要快照映像项标记为被初始化,并标记快照映像组的位置。
9.根据权利要求8的方法,其中,写入步骤还包括在将前一个分段修改为指向分段表中新的最后分段之前,初始化该新的最后分段的分段头部。
10.根据权利要求4的方法,其中,快照映像包括快照映像页,且其中在恢复操作期间重构所述快照映像页。
11.根据权利要求10的方法,其中,由恢复操作处理文件系统中将由恢复操作修改的数据块的前映像的拷贝。
12.一种用于管理文件系统中的数据的数据处理系统,所述数据处理系统包括检测装置,用于检测修改文件系统中的数据块的请求;写入装置,当检测到所述请求时,用于将描述文件系统中的数据块的元数据写入快照映像中;拷贝装置,当检测到所述请求时,用于将文件系统中数据块的数据拷贝到快照映像中;以及修改装置,当将数据块中的数据拷贝到快照映像中之后,用于修改在文件系统中的数据块,其中,所述快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。
13.根据权利要求12的数据处理系统,其中,拷贝装置包括存储装置,用于在快照映像内的表中存储用于定位数据的信息标识,其中,所述表用于定位文件系统中的不同数据块。
14.根据权利要求12的数据处理系统,其中,快照映像包括快照摘要映像,快照映像,和一组分段,且其中摘要映像标识快照映像中快照映像页的初始化状态,快照映像包含快照映像页,所述快照映像页标识文件系统中的现用数据块,所述分段组包括来自文件系统的数据块的拷贝。
15.根据权利要求12的数据处理系统,其中,元数据包括快照摘要映像,摘要映像,和分段头部。
16.根据权利要求15的数据处理系统,其中,所选事件为当修改文件系统的数据块时数据处理系统的失效。
17.根据权利要求15的数据处理系统,其中,所选事件为请求将文件系统恢复到一致状态的用户输入。
18.一种在计算机可读介质中、用于在数据处理系统中管理文件系统中的数据的计算机程序产品,所述计算机程序产品包括第一指令,用于检测修改文件系统中的数据块的请求;第二指令,当检测到所述请求时,用于将描述文件系统中的数据块的元数据写入快照映像中;第三指令,当检测到所述请求时,用于将文件系统中数据块的数据拷贝到快照映像中;第四指令,用于当将数据块中的数据拷贝到快照映像中之后修改文件系统中的数据块,其中,所述快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。
19.根据权利要求18的计算机程序产品,其中,第三指令包括子指令,用于在快照映像中的表中存储用于定位数据的信息标识,其中,所述表用于定位文件系统中的不同数据块。
20.根据权利要求18的计算机程序产品,其中,快照映像包括快照摘要映像,快照映像,和一组分段,且其中,摘要映像用于标识快照映像中快照映像页的初始化状态,快照映像包含快照映像页,所述快照映像页标识文件系统的现用数据块或拷贝到快照中的数据块,所述分段组包括来自文件系统的数据块的拷贝。
21.根据权利要求18的计算机程序产品,其中,元数据包括快照摘要映像,摘要映像,和分段头部。
22.根据权利要求21的计算机程序产品,其中,所选事件为当修改文件系统中的数据块时数据处理系统的失效。
23.根据权利要求21的计算机程序产品,其中,所选事件为用于将文件系统恢复到一致状态的用户输入。
24.一种数据处理系统,所述数据处理系统包括总线系统;与所述总线系统连接的存储器,其中,所述存储器包括一组指令;和与总线系统相连的处理单元,其中处理单元执行一组指令,所述指令用于检测用于修改文件系统中的数据块的请求;当检测到所述请求时,将描述文件系统中的数据块的元数据写入快照映像中;当检测到所述请求时,将文件系统中数据块的数据拷贝到快照映像中;当将数据块中的数据拷贝到快照映像中之后修改文件系统中的数据块,其中,所述快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。
全文摘要
一种用于在数据处理系统中管理文件系统中的数据的方法,装置和计算机指令。在文件系统恢复期间,检测用于修改文件系统中数据块的请求。当检测到该请求时,将描述数据块的元数据写入快照映像。将用于文件系统中数据块的数据拷贝到快照映像。当将该数据拷贝到快照映像中之后修改文件系统中的数据块。该快照映像可用于将文件系统返回到修改文件系统中的数据块之前的状态。
文档编号G06F17/30GK1655146SQ20051000642
公开日2005年8月17日 申请日期2005年1月31日 优先权日2004年2月12日
发明者珍妮特·伊丽莎白·艾德金斯, 乔恩·常 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1