CN101359335B - 用于可伸缩文件系统恢复的资源管理 - Google Patents

用于可伸缩文件系统恢复的资源管理 Download PDF

Info

Publication number
CN101359335B
CN101359335B CN2008101317672A CN200810131767A CN101359335B CN 101359335 B CN101359335 B CN 101359335B CN 2008101317672 A CN2008101317672 A CN 2008101317672A CN 200810131767 A CN200810131767 A CN 200810131767A CN 101359335 B CN101359335 B CN 101359335B
Authority
CN
China
Prior art keywords
container
file system
file data
subclauses
index node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008101317672A
Other languages
English (en)
Other versions
CN101359335A (zh
Inventor
洪波
J·科尔格洛夫
R·潘廷
王峰
O·吉塞莱弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gen Digital Inc
Original Assignee
Symantec Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Symantec Corp filed Critical Symantec Corp
Publication of CN101359335A publication Critical patent/CN101359335A/zh
Application granted granted Critical
Publication of CN101359335B publication Critical patent/CN101359335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及用于可伸缩文件系统恢复的资源管理。提供了一种用于存储数据的系统和方法。在一个实施例中,文件系统存储包括关联元数据的数据。响应于检测到发生了文件系统错误,文件系统识别包括发生了错误的数据的容器,并对包括在容器中的数据执行一致性检查。如果在该容器和另一容器之间存在双向链接,并且如果在该双向链接中发现了错误,那么文件系统对包括在该另一容器中的数据执行一致性检查,并确定在该另一容器和第三容器之间是否存在另一双向链接。如果在该另一容器和第三容器之间存在另一双向链接,并且如果在该另一双向链接中发现了错误,那么文件系统对包括在第三容器中的数据执行一致性检查。

Description

用于可伸缩文件系统恢复的资源管理
技术领域
本发明涉及计算机系统,更具体地讲,涉及计算机系统内的文件系统的资源管理。
背景技术
计算机文件存储系统正变得越来越大,消耗大量的资源,并且对于多种文件系统操作来说存在可伸缩性问题。具体地讲,在传统的文件系统中,修复受损文件系统所需的时间量在最好时会随着文件系统元数据的大小而成比例增长。在进行修复的同时,文件系统通常是离线的,从而造成长时间不能访问所存储的文件,这令人难以接受。
修复受损文件系统如此耗时的一个原因是,资源被毫无约束地进行全局分配。因此,错误会影响文件系统的任一部分,这就必须进行彻底的一致性检查。换言之,故障域可能是整个文件系统。为了支持诸如公知的文件系统一致性检查器(FSCK)的工具,必须要维护全局元数据跟踪表。在FSCK运行期间,必须能够访问这些跟踪表。因此,对虚拟内存子系统施加了压力,并且会难以使一致性检查操作并行化。如果将大文件系统划分成许多较小的文件系统,那么修复这些较小系统中的一个会比较快。然而,还会有不可接受的管理开销,并且单个文件系统的语义可能会丢失。可以采用多种技术来减少运行FSCK之类的工具所需的时间。然而,有些类型的错误(例如,由软件缺陷(bug)或外部代理造成的错误)可能仍然需要耗时的一致性检查。鉴于上文,期望一种解决这些问题的用于动态管理文件系统的资源的更有效的系统和方法。
发明内容
公开了计算机系统和方法的多种实施例。在一个实施例中,提供了一种计算机系统,其包括文件系统,该文件系统包括存储的数据和关联的存储的元数据。响应于检测到发生了文件系统错误,文件系统被配置成识别包括发生了错误的文件数据和关联元数据的第一容器,并对包括在第一容器中的文件数据和关联元数据执行一致性检查。在一个实施例中,容器是文件系统的动态创建的、大小可变的部分,该部分包括多个分配的数据存储单元和关联的元数据存储单元。在另一实施例中,可将数据存储在块中并将关联元数据存储在索引节点(inode)中。可使用容器来隔离索引节点和块的所属关系(ownership)。例如,容器中的索引节点可以仅引用同一容器中的块。如果在第一容器和第二容器之间存在双向链接,并且如果在该双向链接中发现了错误,那么文件系统被进一步配置成对包括在第二容器中的文件数据和关联元数据执行一致性检查,并确定在第二容器和第三容器之间是否存在第二双向链接。如果在第二容器和第三容器之间存在双向链接,并且如果在第二双向链接中发现了错误,那么文件系统被进一步配置成对包括在第三容器中的文件数据和关联元数据执行一致性检查。
响应于接收到存储新文件数据的请求,文件系统被进一步配置成:识别包括在逻辑名字空间中链接到新文件数据的先前存储的数据的目标容器。如果所述新文件数据不包括新目录,或者如果所述新文件数据包括新目录并且所述目标容器有足够的资源来容纳新目录,则所述文件系统被进一步配置成将所述新文件数据存储在所述目标容器中。如果所述目标容器没有足够的资源用于新目录,则所述文件系统被进一步配置成:创建链接容器;将文件数据存储在所述链接容器中;并存储所述目标容器和所述链接容器之间的双向链接。响应于诸如在逻辑名字空间中移动文件或重命名文件的文件系统操作,所述文件系统可被进一步配置成:响应于检测到在逻辑名字空间中创建第三容器中存储的数据和第四容器中存储的数据之间的连接的操作,存储所述第三容器和所述第四容器之间的双向链接。
所述文件系统被进一步配置成维护容器之间的双向链接的表。所述双向链接的表包括至少一对条目,每个条目识别源容器、源索引节点和目的索引节点。给定条目的源索引节点用于存储与在所述给定条目的源容器中存储的文件数据相关联的元数据。一个给定对的第一条目的目的索引节点与该给定对的第二条目的源索引节点相同。
考虑以下的描述和附图,这些和其它实施例将变得清楚。
附图说明
图1示出了计算机系统的一个实施例。
图2示出了逻辑名字空间的一个实施例。
图3a示出了可用于在文件系统内存储数据的处理的一个实施例。
图3b示出了可用于对文件系统执行一致性检查的处理的一个实施例。
图4是物理文件系统的一个实施例的一般化框图。
图5示出了可用于管理容器及其关联索引节点的一组表的一个实施例。
图6示出了可用于管理容器及其关联块的一组表的一个实施例。
图7示出了可用于管理容器及其关联链接的一组表的一个实施例。
图8示出了可用于在文件系统内存储数据的处理的一个实施例。
图9示出了可用于对跨容器边界的文件系统操作进行跟踪的处理的一个实施例。
图10示出了可用于扫描文件系统的错误的处理的一个实施例。
虽然本发明容许各种更改和可替换形式,但是通过附图中的示例示出了具体实施例并在此对其进行详细描述。然而,应当明白的是,附图及对它的详细描述并不意图将本发明限制在所公开的具体形式,相反,本发明旨在覆盖落在所附权利要求所限定的本发明的精神和范围内的所有变型、等同物和替换物。
具体实施方式
图1示出了计算机系统100的一个实施例。如所示出的,系统100包括物理文件系统120和逻辑名字空间130。物理文件系统120可包括耦合到逻辑名字空间130的全局资源管理器110。在一另选实施例中,全局资源管理器110可以是独立的组件。物理文件系统120也可以耦合到一个或更多个数据存储设备,例如硬盘或CD-ROM等。传统上,物理文件系统120还可耦合到一个或更多个处理元件(未示出)或其它标准计算机系统组件。
全局资源管理器110可以负责分配物理文件系统120的资源,例如索引节点、块或者元数据和数据存储的其它物理单元。全局资源管理器110还可以维护对资源分配进行跟踪的数据结构。此外,全局资源管理器110可以跟踪物理文件系统120的状态,并且可以检测和纠正可能由于异常结束操作、软件缺陷、突然断电等而引起的错误。全局资源管理器110可以实现为硬件、软件或者它们的组合。
图2示出了逻辑名字空间130的一个实施例。在示出的实施例中,名字空间130从根节点210开始,并且包括节点220、225、231-235、241和242。节点220和225可以链接到根节点210,节点231和232可以连接到节点220,节点233-235可以链接到节点225,节点241和242可以链接到节点232。节点可以按分层的等级进行链接。例如,节点220和225可以形成分层结构的第二等级,节点231-235可以形成第三等级等等。在另选实施例中,名字空间130可以包括比图2中所示出的要多得多的节点和多得多的等级,包括少于或多于两个的链接到根节点的节点。
在操作期间,当在系统100中存储文件时,用户可以选择逻辑名字空间130内的目标位置。逻辑名字空间130中的目标位置可以被映射到文件系统120中的物理位置。全局资源管理器110可以管理文件系统120内的资源分配,并可以根据下面将进一步描述的处理来执行诸如检测与纠正文件系统120中的元数据错误和其它不一致性的维护操作。
现在转到图3a和图3b,其示出了可以由全局资源管理器110执行的一般化处理。具体地讲,图3a示出了可用于在文件系统内存储数据的处理302的一个实施例,图3b示出了可用于对文件系统执行一致性检查的处理304的一个实施例。要注意的是:在另选实施例中,在处理302和处理304中示出的单独块可以按不同的次序执行;并且/或者一些块可以与其它块并行执行。如这里所使用的,一致性检查可包括被配置成检测和/或纠正错误的一个或更多个处理。
处理302可以从接收在文件系统中存储数据的请求(块310)开始。如果该请求要求创建新的顶级目录(判定块320),那么可以创建新容器(块330),可以将数据与关联元数据一起存储在该新容器中(块335),从而该处理完成。这里所使用的以及在下文进一步详细描述的容器是指文件系统的动态创建的、大小可变的部分,该部分包括多个分配的数据存储单元和关联的元数据存储单元。在一个实施例中,数据可以被存储在块中,关联元数据可以被存储在索引节点中。容器可用来隔离索引节点和块的所属关系。例如,容器中的索引节点可以仅引用同一容器中的块。
如果目标位置不是新的顶级目录(判定块320),那么可以识别包括待存储数据的父文件的容器(块340)。如果该请求没有要求在顶级目录下面创建新目录(判定块342),那么可以将数据与关联元数据一起存储在所识别的容器中(块344),从而该处理完成。换言之,要存储在现有目录中的新文件数据可以总是被存储在与父目录相同的容器中。如果该请求要求在顶级目录下创建新目录,并且如果确定了空间足以为该新目录保持期望数据(判定块350),那么可将数据与关联元数据一起存储在所识别的容器中(块344),从而该处理完成。否则,可创建新的链接容器(块352)。然后,可将数据与关联元数据一起存储在该链接容器中(块354)。此外,可以在所识别的容器和所述链接容器之间创建双向链接(块356),从而完成该处理。
处理304可以从接收检查文件系统的错误的请求(块360)开始。可以在记录失配元数据和未完结事务的状态跟踪表中对错误进行跟踪。一旦接收到请求,就可以对分配给文件系统的各容器的资源的范围(scope)进行检查(块362),从而使错误局部化。然后,可以选择与第一容器对应的状态记录(块364)。如果在所选状态记录中检测到错误(判定块370),那么可以检查存储在对应容器中的各个文件的元数据,并纠正任意错误(块380)。此外,可以检查对应容器与其它容器之间的任何链接(块385)。如果双向链接的一侧或两侧不是有效的(判定块390),那么可修复该链接,并可以选择该链接所连接的容器(块395)。可以通过重复执行块380、块385、块390和块395按类似的方式来检查新选择的容器及其链接,直到检测不到双向链接错误为止。当没有剩余的链接错误时(判定块390)或者如果在所选状态记录中没有检测到容器错误(判定块370),并且如果尚未检查到最后一个状态记录(判定块374),那么可选择下一状态记录(块372),并且重复错误检测(块370)。一旦检查了最后一个状态记录(判定块374),则该处理完成。
图4是物理文件系统120的一个实施例的一般化框图。在示出的实施例中,物理文件系统120包括一个或更多个容器,例如容器410、420、430、440和450。每个容器包括存储空间和关联元数据。例如,容器410包括存储器414,存储器414可包括用来存储大量数据文件的空间。容器410还包括元数据412,元数据412包括与存储在存储器414中的文件相关联的元数据。类似地,容器420包括存储器424和元数据422,容器430包括存储器434和元数据432,容器440包括存储器444和元数据442,并且容器450包括存储器454和元数据452。虽然仅示出了五个容器,但是在物理文件系统120中可以包括更多或更少的容器。每个容器可通过双向链接而链接到一个或更多个其它容器,这也被称为跨容器引用(cross-container reference)。
例如,在示出的实施例中,容器410和容器420通过链接461和462连接,容器410和容器430通过链接463和464连接,容器440和容器450通过链接465、466、467和468连接。如果检测到特定条件,例如检测到第一容器没有足够的用于另外的存储数据的资源,则可以建立从该第一容器到第二容器的链接。这种条件可被称作溢出,第二容器可被称作是链接容器。例如,在一个实施例中,当将更多的存储添加到第一容器将要求其管理超过预定最大数量的存储单元、对象、文件等时,可添加链接容器。在不同的实施例中,限定资源是否充足的标准可以包括代替存储器资源可用性的任何期望标准或除存储器资源可用性以外的任何期望标准,并且可通过决策来确定、通过用户输入来动态地确定、或者通过任何其它期望手段来确定。
在物理文件系统120的一个实施例中,存储器和元数据可包括传统的块和索引节点。更具体地讲,存储元件414、424、434等中的每个可包括一个或更多个块集的分配,元数据元件412、422、432等中的每个可包括对应的索引节点集。可以通过下面将进一步描述的处理将块集和索引节点集分配给容器。全局资源管理器110可以对块和索引节点到容器的映射的记录进行维护,以及利用各种数据结构来跟踪容器之间的链接。图5、图6和图7及所附描述提供了这样的数据结构的一个实施例的细节,在所述数据结构中,元数据的单元是索引节点,并且数据存储的单元是块。在另选实施例中,可以使用各种存储分配单元和元数据单元中的任何一种来代替块和索引节点。
图5示出了可用于管理容器及其关联索引节点的一组表的一个实施例。图5包括容器状态表510、索引节点集所属关系表520和索引节点集概要表530。表510可包括在文件系统中已创建的每个容器的条目。如在所示出的实施例中所表明的,条目可通过容器ID 512来区分。因此,示出了通过容器ID C1、C2、C3、C4和C5标识的五个条目。每次当将一个容器添加到文件系统时,可将一个条目添加到该表中。每个条目还可包括状态位514和516。状态位514和516可记录与对应容器相关联的潜在错误情形。
例如,在一个实施例中,状态位514可以表示:存在涉及存储在或将要存储在对应容器中的数据的未完结事务。状态位516可以表示:存在冲突的元数据引用。虽然未完结事务不一定有错误,但是如果在预期文件系统为静止(quiescent)的时候设置未完结事务状态位,则可以假定有错误。也可假定冲突的元数据引用是指示文件系统中的错误。每当在事务期间发生意外断电时,在硬件故障之后,或者由于软件错误等,就会遇到这种情形。在系统重启时,可以设置未完结事务位,其指示虽然事务不再是待处理的,但是事务并未完成。对于本领域的普通技术人员显而易见的是,可通过状态位来跟踪其它错误情形。
表520可以包括在文件系统中已分配的每个索引节点集的条目。如所示出的实施例中所表明的,条目可通过索引节点集ID 524来区分。因此,示出了通过索引节点集ID IS1至IS11标识的11个条目。每次当在文件系统中分配一个索引节点集时,可将一个条目添加到该表中。每个条目还可包括容器ID 522,容器ID 522指示索引节点集被分配给哪个容器。
表530包含对每个容器的索引节点使用进行概括的数据。在一个实施例中,表530可包括条目531至538等。每个条目可包括索引节点集ID 541、已分配索引节点计数542、空闲索引节点计数543和目录索引节点计数544。每次当分配一个索引节点时,例如每当将一个文件或目录添加到文件系统时,可在该表中更新一个条目。索引节点集ID 541可保持用于识别索引节点集并与表520中的索引节点集ID524的值相匹配的值。表530可通过索引节点集ID 541来索引。已分配索引节点计数542跟踪该集合中已分配的索引节点的数目。空闲索引节点计数543跟踪该集合中可供分配的索引节点的数目。目录索引节点计数544跟踪与目录而非文件相关联的索引节点的数目。
图6示出了可用于管理容器及其关联块的一组表的一个实施例。图6包括块集所属关系表620和块集概要表630。表620可包括在文件系统中已分配的每个块集的条目。如所示出的实施例中所表明的,条目可通过块集ID 624来区分。因此,示出了通过块集ID S1至S11标识的11个条目。每次当将一个块集分配给容器时,可将一个条目添加到该表中。每个条目还可包括容器ID 622,容器ID 622指示该块集已分配给哪个容器。表630可包括条目631至638等。每个条目可包括块集ID 641、容器ID 642和块集概要643。块集ID 641可保持用于识别块集并与表620中的块集ID 624的值相匹配的值。容器ID 642可保持用于识别块被分配到的容器的值,该值与表620中的容器ID 622的值相匹配。块集概要643可包括描述与块集ID 641相关联的块的使用的数据。每次当使用一个块时,例如,每当将文件数据添加到文件系统时,可在表630中更新一个条目。
图7示出了可用于管理容器及其关联链接的容器链接表710和750的一个实施例。每个容器可以与它自身的容器链接表相关联。表710可包括条目711至718等,并且可以与第一容器相关联。类似地,表750可包括条目751至758等,并且可以与第二容器相关联。每个条目可包括类型字段和两个附加字段。例如,条目711可包括类型722、内部索引节点ID 723和外部索引节点ID 724。类型722的值为“外部”,这表示内部索引节点723引用通过外部索引节点ID 724识别的另一容器中的索引节点。如果在文件系统中不存在错误或元数据失配,那么将在另一容器链接表(例如表750)中存在对应的第二条目,在这种情况下表750包括匹配条目758。条目758包括类型782,类型782的值为“外部”,这表示内部索引节点783引用通过外部索引节点ID784识别的另一容器中的索引节点。在这种情况下,内部索引节点ID783的值与条目711的外部索引节点ID 724的值相同,并且外部索引节点ID 784的值与条目711的内部索引节点ID 723的值相同。还示出了包括类型742、内部索引节点ID 743和内部文件ID 744的条目714。类型742的值为“内部”,这表示内部索引节点743引用通过内部文件ID 744识别的同一容器内的文件。与形成双向对的条目711和758不同,条目714没有位于另一容器链接表中的匹配条目。相反,条目714指示同一容器中的文件和目录之间的额外硬链接。所有文件可以具有到目录的至少一个链接,但是可以具有到其它目录的附加链接。可以借助诸如表710中的条目714来跟踪每个附加链接。在修复操作期间,全局资源管理器可以利用在匹配的条目对中存在的冗余来确定文件系统元数据的正确状态。
图8示出了可用于在文件系统内存储数据的处理800的一个实施例。处理800可以从接收新数据存储请求(块810)开始。可以首先确定作为存储请求的目标的容器(块820)。然后,如果索引节点和足够数目的块可用于保持来自该请求的数据(判定块830),那么可以设置容器状态表中该目标容器的未完结事务状态位(块860)。为了确定索引节点的可用性,可以查询索引节点集所属关系表和索引节点集概要表。为了确定块的可用性,可以查询块集所属关系表和块集概要表。可以识别可用的索引节点(块862),可以识别可用的块(块864),并将所述块与所述索引节点关联(块870)。一旦索引节点和块被关联并被指定为要使用,则它们在索引节点集概要表和块集概要表中的对应条目可被更新,以指示它们正在使用(块875)。然后,可将数据存储在指定的块中(块880)。在存储了数据之后,可以清除容器状态表中该目标容器的未完结事务状态位(块885),从而完成该处理。
返回到判定块830,如果在目标容器中没有索引节点和足够数目的块可用来保持来自该请求的数据,那么可确定新数据请求的类型。如果该请求不是要添加新顶级目录或者需要比目标容器可提供空间多的空间的新目录(判定块840),那么可设置容器状态表中该目标容器的未完结事务状态位(块850)。可以获得一个索引节点集,并将其分配给目标容器(块852)。可以创建索引节点集所属关系表和索引节点集概要表中的新条目,以指示新索引节点被分配给目标容器并且正在使用(块854)。可以获得一个块集,并将该块集分配给目标容器(块856)。可以创建块集所属关系表和块集概要表中的新条目,以指示新块被分配给目标容器并且正在使用(块858)。可以将一个或更多个新块与一个新索引节点关联(块870),并执行剩余的处理,即块875、880和885,从而如前面描述地完成该处理。
返回到判定块840,如果该请求是要添加新顶级目录或者需要比目标容器可提供空间多的空间的新目录,则可以将新的链接容器添加到与目标容器链接的文件系统(块842)。然后,可以在容器状态表中创建一个新容器条目,并且可以设置新条目的未完结事务状态位(块844)。然后,处理800可以从块852继续进行直到完成。要注意的是,在另选实施例中,处理800中示出的单独块可以按不同的次序来执行;并且/或者一些块可以与其它块并行执行。
图9示出了可用于对跨容器边界的文件系统操作进行跟踪的处理900的一个实施例。处理900可以从接收在名字空间内重命名文件、移动文件、复制文件等的、在两个文件容器之间创建了交叉引用的请求(块910)开始。可以识别源容器(块920),并且可以识别目的容器(块930)。例如,可以将文件从映射到第一容器(源)的名字空间中的一个节点移动或复制到映射到第二容器(目的)的名字空间中的另一节点。另选地,可以通过在容器之间创建跨容器引用来实现将存储在一个容器中的文件移除到与另一容器相关联的目录。一旦识别了源容器和目的容器,就可以设置容器状态表中源容器和目的容器的未完结事务状态位(块940)。然后,如果操作是复制操作,那么可以在目的容器中识别或获得一个索引节点(块960),并且可以在目的容器中识别或获得足够数目的用于保持文件数据的块(块962)。为了确定索引节点的可用性,可以查询索引节点集所属关系表和索引节点集概要表。为了确定块的可用性,可以查询块集所属关系表和块集概要表。可以将所述块与所述索引节点关联(块964)。
一旦索引节点和块被关联且被指定为要使用,则它们在索引节点集概要表、索引节点集所属关系表、块集所属关系表和块集概要表中的对应条目可被更新,以指示所述索引节点和块正在使用(块966)。然后,可以将数据存储在指定块中(块968)。在存储了数据之后,可以清除容器状态表中目标容器的未完结事务状态位(块970),从而完成该处理。
如果操作不是复制操作,例如,如果操作是移动操作或重命名操作,那么也可以在容器链接表中创建双向的条目对(块982)。然后,可以清除容器状态表中目标容器的未完结事务状态位(块984),从而完成该处理。要注意的是,在另选实施例中,处理900中示出的单独块可以按不同的次序来执行;并且/或者一些块可以与其它块并行执行。
图10示出了可用于扫描文件系统的错误的处理1000的一个实施例。处理1000可以从每当系统重启发生时或者响应于来自用户或应用程序等的命令而扫描容器状态表中与所选容器对应的第一条目的状态位(块1010)开始。可以假定,当发生扫描时,文件系统已处于静止状态。因此,可以将已设置的任何未完结事务状态位解译成文件系统错误。如果针对所选容器条目没有设置状态位(判定块1020),并且如果已扫描了容器状态表中的所有条目(判定块1030),那么处理1000完成(块1050)。如果设置了状态位(判定块1020),那么可以检查文件系统的对应部分,并纠正错误。
纠错处理可使用与在公知的FSCK操作中使用的处理相似的处理,但是仅检查文件系统的一部分。因此,该处理可被称作“局部FSCK”。更具体地讲,在一个实施例中,可以检查索引节点集所属关系表和块集所属关系表中与所选容器对应的条目,以确定要验证的索引节点和块的范围(块1060)。还可以将索引节点集概要表中的对应条目和块集概要表中的对应条目读取到存储器中,以进一步证实索引节点和块的所属关系。可以解决索引节点和块的所属关系中的冲突。在处理1000中,索引节点集概要表和块集概要表中的条目随后也经历更改。如果发现的错误数目超过了某预定阈值(判定块1070),例如可能是发生了主文件系统损坏的情况,那么可以执行全面文件系统检查(块1090),从而该处理完成(块1050)。
如果仅发现少数容器含有错误(判定块1070),那么可以验证索引节点至块(inode-to-block)的引用,并且可以修复发现的任何错误(块1072)。可以独立地检查每个容器。更具体地讲,如果索引节点引用无主块集中的块,那么可将该块集添加到所选容器,其中所属关系让与是通过一个锁来保护的。如果该块集被另一容器所有,那么可在检查并验证该另一容器之后通知该冲突以便随后解决。
接下来,可以验证索引节点的层级,并修复错误(块1074)。更具体地讲,所述验证可包括在所有的目录块和目录条目中检查正确的父子关系。此外,可以检查容器链接表。该检查可以包括验证至所选容器内的文件的任何硬链接,并修复可发现的任何错误(块1076)。另外,可以验证所选容器的在容器链接表中引用其它容器的条目(块1078)。如果所选容器的在容器链接表中的一个条目引用外部容器中的索引节点,那么该外部容器的在容器链接表中的对应条目也应当存在。如果不存在,则存在错误,必须验证该外部容器。没有条目或者匹配的双向条目表示不存在跨容器错误。可以通过多种策略或算法之一来解决失配条目(块1080)。例如,可以假定容器链接表中与所选容器对应的条目的值是不正确的,并将该值修改为与对应的反向条目一致。另外或另选地,可以去除错误目录条目或从当前容器进出的悬摆链接。可以将孤儿索引节点链接到失物招领(lost-and-found)目录。
一旦修复了条目,就可以清除容器状态表中与所选容器对应的状态位错误(块1085)。如果已扫描了容器状态表中的所有条目(判定块1030),那么处理1000完成(块1050)。如果尚未扫描容器状态表中的所有条目(判定块1030),那么通过继续对下一容器条目进行扫描(块1040),并检查状态位(判定块1020)等,对容器状态表中的每个条目重复处理1000。要注意的是,在另选实施例中,处理1000中示出的单独块可以按不同的次序来执行;并且/或者一些块可以与其它块并行执行。
还要注意的是,上面描述的实施例可以包括软件。在这样的实施例中,实现方法和/或机制的程序指令可以被传送或存储在计算机可读介质上。可以使用被构造成存储程序指令的许多类型的介质,这些介质包括硬盘、软盘、CD-ROM、DVD、闪存、可编程ROM(PROM)、随机存取存储器(RAM)和各种其它形式的易失性存储器或非易失性存储器。
虽然上面已经相当详细地描述了实施例,但是对于本领域的普通技术人员,一旦全面理解了上述公开,许多变型和更改就是显而易见的。应该将所附权利要求书解释成包含所有的这些变型和更改。

Claims (10)

1.一种计算机文件系统,包括:
存储数据的装置;
存储元数据的装置;和
处理装置;
其中,响应于检测到发生了文件系统错误,所述处理装置被配置成:
识别与检测到的所述文件系统错误对应的第一容器;
对包括在所述第一容器中的文件数据和元数据执行一致性检查;
确定在所述第一容器和第二容器之间是否存在第一双向链接;以及
响应于在所述第一双向链接中检测到链接错误,对包括在所述第二容器中的文件数据和元数据执行一致性检查;
其中,所述处理装置还被配置成维护多个容器之间的双向链接的表;
其中,所述表包括至少一对条目,每个条目识别源容器、源索引节点以及目的索引节点;
其中,给定条目的源索引节点对应于该给定条目的源容器;并且
其中,对于给定的一对条目,第一条目的目的索引节点与第二条目的源索引节点相同。
2.如权利要求1所述的系统,其中,如果在所述第一双向链接中发现错误,则所述处理装置被进一步配置成:
对包括在所述第二容器中的文件数据和元数据执行一致性检查;
确定在所述第二容器和第三容器之间是否存在第二双向链接;以及
响应于在所述第二双向链接中检测到错误,对包括在所述第三容器中的文件数据和关联元数据执行一致性检查。
3.如权利要求1所述的系统,其中所述第一容器和第二容器中的每个包括文件系统的动态创建的、大小可变的部分,该部分包括分配的数据存储单元和关联的元数据存储单元,其中给定容器中的元数据排他地引用该给定容器中的数据。
4.如权利要求3所述的系统,其中响应于接收到存储新文件数据的请求,所述处理装置被进一步配置成:
识别包括在逻辑名字空间中链接到所述新文件数据的数据的第四容器;
如果所述新文件数据不包括新目录,或者如果所述新文件数据包括新目录并且所述第四容器有足够的资源来容纳新目录,则将所述新文件数据存储在所述第四容器中;以及
如果所述第四容器没有足够的资源来容纳新目录,则:
创建第五容器;
将文件数据存储在所述第五容器中;并且
在所述表内存储对应于所述第四容器和所述第五容器之间的双向链接的信息。
5.如权利要求4所述的系统,其中响应于检测在所述逻辑名字空间中创建第六容器中存储的文件数据和第七容器中存储的文件数据之间的链接的文件系统操作,所述处理装置被进一步配置成:在所述表内存储对应于所述第六容器和所述第七容器之间的双向链接的信息。
6.一种管理计算机文件系统的方法,包括以下步骤:
检测到发生了文件系统错误;
识别与检测到的文件系统错误对应的第一容器;
对包括在所述第一容器中的文件数据和元数据执行一致性检查;
确定在所述第一容器和第二容器之间是否存在第一双向链接;
响应于在所述第一双向链接中检测到链接错误,对包括在所述第二容器中的文件数据和元数据执行一致性检查;以及
维护多个容器之间的双向链接的表;
其中,所述表包括至少一对条目,每个条目识别源容器、源索引节点以及目的索引节点;
其中,给定条目的源索引节点对应于该给定条目的源容器;并且
其中,对于给定的一对条目,第一条目的目的索引节点与第二条目的源索引节点相同。
7.如权利要求6所述的方法,其中如果在所述第一双向链接中发现错误,则该方法还包括以下步骤:
对包括在所述第二容器中的文件数据和元数据执行一致性检查;
确定在所述第二容器和第三容器之间是否存在第二双向链接;以及
响应于在所述第二双向链接中检测到错误,对包括在所述第三容器中的文件数据和关联元数据执行一致性检查。
8.如权利要求6所述的方法,其中所述第一容器和第二容器中的每个包括文件系统的动态创建的、大小可变的部分,该部分包括分配的数据存储单元和关联的元数据存储单元,其中给定容器中的元数据排他地引用该给定容器中的数据。
9.如权利要求8所述的方法,其中响应于接收到在所述文件系统中存储新文件数据的请求,所述方法还包括以下步骤:
识别包括在逻辑名字空间中链接到所述新文件数据的数据的第四容器;
如果所述新文件数据不包括新目录,或者所述新文件数据包括新目录并且所述第四容器有足够的资源来容纳新目录,则将所述新文件数据存储在所述第四容器中;以及
如果所述第四容器没有足够的资源来容纳新目录,则:
创建第五容器;
将文件数据存储在所述第五容器中;并且
在所述表内存储对应于所述第四容器和所述第五容器之间的双向链接的信息。
10.如权利要求9所述的方法,还包括:响应于检测在逻辑名字空间中创建第六容器中存储的文件数据与第七容器中存储的文件数据之间的链接的文件系统操作,在所述表内存储对应于所述第六容器和所述第七容器之间的双向链接的信息。
CN2008101317672A 2007-06-29 2008-06-27 用于可伸缩文件系统恢复的资源管理 Active CN101359335B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/772,036 US7676704B2 (en) 2007-06-29 2007-06-29 Resource management for scalable file system recovery
US11/772,036 2007-06-29

Publications (2)

Publication Number Publication Date
CN101359335A CN101359335A (zh) 2009-02-04
CN101359335B true CN101359335B (zh) 2013-10-16

Family

ID=40161930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101317672A Active CN101359335B (zh) 2007-06-29 2008-06-27 用于可伸缩文件系统恢复的资源管理

Country Status (4)

Country Link
US (1) US7676704B2 (zh)
EP (1) EP2031513B1 (zh)
JP (1) JP5620053B2 (zh)
CN (1) CN101359335B (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958167B2 (en) * 2008-03-05 2011-06-07 Microsoft Corporation Integration of unstructed data into a database
SE533007C2 (sv) 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
US8843533B1 (en) * 2008-11-12 2014-09-23 Netapp, Inc. File system consistency check system
EP2387200B1 (en) 2010-04-23 2014-02-12 Compuverde AB Distributed data storage
US8577855B2 (en) 2010-10-19 2013-11-05 Symantec Corporation Online file system consistency check
US9223788B2 (en) * 2010-11-09 2015-12-29 Symantec Corporation File system consistency check on part of a file system
US8856792B2 (en) 2010-12-17 2014-10-07 Microsoft Corporation Cancelable and faultable dataflow nodes
US8813071B2 (en) 2011-01-31 2014-08-19 Symantec Corporation Storage reclamation systems and methods
US8806159B2 (en) 2011-04-08 2014-08-12 Symantec Corporation Data storage resource management systems and methods
US8954435B2 (en) 2011-04-22 2015-02-10 Symantec Corporation Method and system for reclaiming storage on a shared storage device or independent of the mount state of a file system
US8751768B2 (en) 2011-04-29 2014-06-10 Symantec Corporation Data storage reclamation systems and methods
US8650365B2 (en) 2011-09-02 2014-02-11 Compuverde Ab Method and device for maintaining data in a data storage system comprising a plurality of data storage nodes
US8997124B2 (en) 2011-09-02 2015-03-31 Compuverde Ab Method for updating data in a distributed data storage system
US9626378B2 (en) 2011-09-02 2017-04-18 Compuverde Ab Method for handling requests in a storage system and a storage node for a storage system
US8645978B2 (en) 2011-09-02 2014-02-04 Compuverde Ab Method for data maintenance
US9021053B2 (en) 2011-09-02 2015-04-28 Compuverde Ab Method and device for writing data to a data storage system comprising a plurality of data storage nodes
US8769138B2 (en) 2011-09-02 2014-07-01 Compuverde Ab Method for data retrieval from a distributed data storage system
US9213618B2 (en) * 2011-09-16 2015-12-15 Symantec Corporation Storage management systems and methods in hierarchical storage systems
US10127236B1 (en) * 2013-06-27 2018-11-13 EMC IP Holding Company Filesystem storing file data in larger units than used for metadata
CN105556462A (zh) * 2013-07-29 2016-05-04 惠普发展公司,有限责任合伙企业 写入文件和文件元数据
US10628411B2 (en) * 2013-11-20 2020-04-21 International Business Machines Corporation Repairing a link based on an issue
SG11201606070QA (en) * 2014-01-24 2016-08-30 Agency Science Tech & Res Method of file system design and failure recovery with non-volatile memory
JP6245700B2 (ja) 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
CN105554102A (zh) * 2015-12-14 2016-05-04 中电科华云信息技术有限公司 基于容器集群的弹性伸缩方法及其应用系统
US10372547B1 (en) 2015-12-29 2019-08-06 Veritas Technologies Llc Recovery-chain based retention for multi-tier data storage auto migration system
CN107133120A (zh) * 2016-02-29 2017-09-05 阿里巴巴集团控股有限公司 一种文件数据的校验方法、装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828876A (en) * 1996-07-31 1998-10-27 Ncr Corporation File system for a clustered processing system
CN1211121A (zh) * 1997-02-24 1999-03-17 三星电子株式会社 确定数据错误校正范围的方法
US20030163594A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald Open-architecture file system
CN1749995A (zh) * 2004-09-15 2006-03-22 微软公司 内容相关对象的创建和管理

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2745477B2 (ja) * 1988-06-03 1998-04-28 株式会社リコー データ処理装置
US5537652A (en) * 1990-08-20 1996-07-16 International Business Machines Corporation Data file directory system and method for writing data file directory information
JPH0833828B2 (ja) * 1990-08-29 1996-03-29 富士通株式会社 プログラム動作システム
ATE195825T1 (de) * 1993-06-03 2000-09-15 Network Appliance Inc Anordnung eines dateisystems zum beschreiben beliebiger bereiche
US5875444A (en) * 1996-12-10 1999-02-23 International Business Machines Corporation Computer file system check and repair utility
US6058400A (en) * 1998-04-28 2000-05-02 Sun Microsystems, Inc. Highly available cluster coherent filesystem
US6850959B1 (en) * 2000-10-26 2005-02-01 Microsoft Corporation Method and system for transparently extending non-volatile storage
US6775679B2 (en) * 2001-03-20 2004-08-10 Emc Corporation Building a meta file system from file system cells
US7093086B1 (en) * 2002-03-28 2006-08-15 Veritas Operating Corporation Disaster recovery and backup using virtual machines
US7430570B1 (en) * 2003-04-28 2008-09-30 Ibrix, Inc. Shadow directory structure in a distributed segmented file system
US7552146B1 (en) * 2005-04-28 2009-06-23 Network Appliance, Inc. Method and apparatus for offline and online consistency checking of aggregates and flexible volumes
US7617370B2 (en) * 2005-04-29 2009-11-10 Netapp, Inc. Data allocation within a storage system architecture
US7739318B2 (en) * 2005-06-20 2010-06-15 Netapp, Inc. System and method for maintaining mappings from data containers to their parent directories
US7707193B2 (en) * 2005-09-22 2010-04-27 Netapp, Inc. System and method for verifying and restoring the consistency of inode to pathname mappings in a filesystem
US8301673B2 (en) * 2006-12-29 2012-10-30 Netapp, Inc. System and method for performing distributed consistency verification of a clustered file system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828876A (en) * 1996-07-31 1998-10-27 Ncr Corporation File system for a clustered processing system
CN1211121A (zh) * 1997-02-24 1999-03-17 三星电子株式会社 确定数据错误校正范围的方法
US20030163594A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald Open-architecture file system
CN1749995A (zh) * 2004-09-15 2006-03-22 微软公司 内容相关对象的创建和管理

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Val Henson, Zach Brown."Reducing fsck time for ext2 file system.《Proceedings of the Linux Symposium》.2006,第1卷1-12. *

Also Published As

Publication number Publication date
EP2031513A2 (en) 2009-03-04
CN101359335A (zh) 2009-02-04
EP2031513A3 (en) 2010-05-12
US20090006494A1 (en) 2009-01-01
EP2031513B1 (en) 2017-11-29
US7676704B2 (en) 2010-03-09
JP5620053B2 (ja) 2014-11-05
JP2009015849A (ja) 2009-01-22

Similar Documents

Publication Publication Date Title
CN101359335B (zh) 用于可伸缩文件系统恢复的资源管理
US9842126B2 (en) Automatic repair of corrupt HBases
CN105359099B (zh) 索引更新管线
US11516072B2 (en) Hybrid cluster recovery techniques
US7191198B2 (en) Storage operation management program and method and a storage management computer
US8433947B2 (en) Computer program, method, and apparatus for controlling data allocation
US8229897B2 (en) Restoring a file to its proper storage tier in an information lifecycle management environment
US9344498B2 (en) Policy-based management of storage functions in data replication environments
US7546486B2 (en) Scalable distributed object management in a distributed fixed content storage system
JP5254611B2 (ja) 固定内容分散データ記憶のためのメタデータ管理
JP5539683B2 (ja) 拡張可能な2次ストレージシステムと方法
US7159150B2 (en) Distributed storage system capable of restoring data in case of a storage failure
US8495111B1 (en) System and method of hierarchical space management for storage systems
US10733045B2 (en) Online repair of metadata for structured data including file systems
US8484413B2 (en) Recording medium storing control program for decentralized data, storage management program, control node, and disk node
US20100217931A1 (en) Managing workflow communication in a distributed storage system
CN110489426A (zh) 一种数据库表的自动化分区方法、装置及设备
US9898468B2 (en) Single pass file system repair with copy on write
CN107943412B (zh) 一种分区分裂、删除分区中数据文件的方法、装置及系统
CN105550230A (zh) 分布式存储系统节点故障的侦测方法和装置
CN112486942B (zh) 一种文件数据的多副本存储方法及多副本存储系统
US11275666B1 (en) Method and apparatus for identifying high importance devices of a consistency group
US8356230B2 (en) Apparatus to manage data stability and methods of storing and recovering data
US20130318040A1 (en) Data replication apparatus and method using hierarchical organization of data servers
US20170004030A1 (en) Method and system for validating data integrity

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant