首页> 中国专利> 前摄错误扫描及隔离的错误校正

前摄错误扫描及隔离的错误校正

摘要

本发明涉及前摄错误扫描及隔离的错误校正。用于文件系统卷错误检测的处理和用于结果的错误校正的处理被分开,以支持系统可用性和用户满意度。在卷保持在线时,前摄地扫描用于存储数据结构的文件系统卷以搜索卷上的错误或损坏。根据标识的错误的严重性,错误校正调度和/或按照文件系统管理员和/或用户的确定,调度以修正找到的错误,即,点校正,以帮助维持最小的用户和文件系统的影响。当初始化点校正时,每次使得一个文件系统卷离线以校正。点校正验证离线卷先前记录的损坏,且如果独立地被验证,则尝试校正先前标注的损坏。仅在验证及尝试校正先前标注的卷损坏所必需的时间,将卷保持离线。

著录项

  • 公开/公告号CN102567143A

    专利类型发明专利

  • 公开/公告日2012-07-11

    原文格式PDF

  • 申请/专利权人 微软公司;

    申请/专利号CN201110426176.X

  • 申请日2011-12-19

  • 分类号G06F11/14(20060101);

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人董宁;刘鹏

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 05:55:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-13

    专利权的转移 IPC(主分类):G06F11/14 变更前: 变更后: 登记生效日:20150422 申请日:20111219

    专利申请权、专利权的转移

  • 2014-12-03

    授权

    授权

  • 2012-09-12

    实质审查的生效 IPC(主分类):G06F11/14 申请日:20111219

    实质审查的生效

  • 2012-07-11

    公开

    公开

说明书

背景技术

文件系统利用数据结构(也被称为文件系统盘上格式)来维护和组织非易失性(即,永久性)的存储器(例如,卷、盘、硬驱动器等)上的数据。文件系统访问和解释这些数据结构以为用户和应用、或过程或计算机程序(例如,当执行软件指令或计算机代码时)存储和检索数据。

当前,当在正常的应用或用户发起的处理期间有访问和/或解释有故障的数据结构的尝试时,在文件系统数据结构中发现错误(即损坏)。在正常处理期间,在这样的错误检测的情况下,一般在不方便的和中断的时间(即,当用户和/或应用正尝试访问和/或使用有故障的数据结构时)发现标识的错误。即使有在线隔离和校正报告的错误的努力(即,自愈式支持系统),除非使得卷离线,否则并不能解决所遇到的一些数量的损坏。而且在卷离线时,其上以其数据结构存储的数据和信息对于任何用户或其他应用而言是不可用的。这些离线时段可能是漫长的,进一步降低系统性能和用户满意度。因此,损坏检测的时机和后续的校正尝试本身对于正常的系统处理而言是相对中断的。

当整个文件系统对于用户和其他应用保持不可用(即,离线),而进行系统存储卷的检查时,在系统启动期间,也可能发现数据结构损坏。当用户和其他应用被排除访问系统卷时,在开启时产生(entail)错误检查的这些启动事件可能是耗时的,导致进一步的性能降级和用户不满意。

因此,期望的是,利用最小化对于系统性能和用户满意度的影响的处理,对于潜在的系统卷损坏进行前摄扫描。也将期望的是,缩短校正所标识的需要离线处理的卷损坏所需的时间。此外,也将期望的是, 将扫描卷损坏的处理和校正标识的损坏的处理分开, 以减少当系统卷对于用户和其他处理而言不可用的停机时间(downtime)量。

发明内容

提出本发明内容,以简化的形式介绍以下在具体实施方式中进一步描述的所选概念。本发明内容既不意图标识要求保护的主题的关键特征或重要特征,也不意图被用于辅助确定要求保护的主题的范围。

此处讨论的实施例包括用于针对文件系统的卷的前摄错误或损坏检测和点损坏处理的系统和方法。

在实施例中,针对文件系统的卷执行错误扫描,以便在其上前摄标识损坏。在实施例中,前摄错误扫描处理包括生成针对文件系统的卷的快照,并在卷的快照中的数据结构上执行动作,以标识现存的损坏。在实施例中,前摄错误扫描处理执行,同时文件系统卷保持在线并对于其他用户和任务而言可访问。

在实施例中,进行尝试以解决在前摄错误扫描处理期间检测的损坏,同时文件系统卷保持在线并对于其他用户和任务而言可访问。

在实施例中,记录在前摄错误扫描处理期间检测的并保持未解决的损坏,以用于后续的补救这些错误的高效尝试。

在实施例中,除了在前摄错误扫描处理期间外,在适合的时间执行点损坏校正。在实施例中,在其上有先前确定的损坏的卷上执行点损坏校正。在实施例中,每次在一个卷上执行点损坏校正,同时该一个卷被保持离线且文件系统的所有其他卷保持在线和可访问。在实施例中,执行点损坏校正以尝试仅校正卷上在以前检测到的损坏。

附图说明

现在将参照其意图例示而非限制的特定实施例和例子的附图,描述这些和其他特征,附图中:

图1描绘了实施例文件系统,其包括前摄错误扫描和点损坏校正。

图2A-2B例示了用于文件系统数据结构的在线前摄错误扫描的实施例逻辑流。

图3描绘了示例损坏日志条目。

图4A-4B例示了用于文件系统卷损坏的点校正的实施例逻辑流。

图5是具有处理软件(即,程序代码,或指令)能力的示例基本计算装置的框图。

具体实施方式

在以下描述中,为了解释的目的,阐述了许多的具体细节,以便提供此处描述的实施例的全面理解。然而,本领域技术人员清楚的是,可实践实施例而无需这些具体的细节。在其他情况中,或简单引用或以框图形式示出公知结构和装置,以便避免不必要的费解。全文使用的任何和所有标题仅便于解释起见而非用于任何限制用途。

图1描绘了具有文件系统管理器110的实施例文件系统100。在一个实施例中,文件系统管理器110是软件应用任务,其具有管理文件系统100以帮助确保正确的处理和操作的能力。

在一个实施例中,文件系统100具有一个或多个卷140,其以数据结构存储供处理应用、任务、程序、例程等(此处统称为处理应用170)和用户180使用的数据。在一个实施例中,一个卷140是系统卷140。

在实施例中,访问文件系统100的一个或多个卷140的处理应用或任务170可以是文件系统100的一部分和/或与文件系统100分开。

实施例文件系统100具有前摄错误扫描器组件120。在一个实施例中,前摄错误扫描器120是由文件系统100启动以执行的软件应用任务,并具有前摄扫描(即,检查)与存储在文件系统 的卷140上的数据结构相关联的错误或损坏的能力。在一个实施例中,前摄错误扫描器120执行被设计为标识(即,检测)在文件系统100的卷140上的损坏的动作。在该实施例的一个方面中,这些动作包括读取卷140的数据结构,并检查卷的数据结构是否内部一致,或以其他方式验证卷的数据结构是内部一致的。

在一个实施例中,前摄错误扫描器120操作,同时文件系统的卷140保持在线,并且因此,在前摄错误扫描器120正在执行时,,文件系统的卷140 的每一个可用于由其他应用或用户180使用。因此,在一个实施例中,虽然前摄错误扫描器120执行文件系统100的具体卷140的在线扫描花费的时间量与扫描时卷140上驻留的文件数目成比例,正在被扫描的卷140保持在线并可用于其他用途。在该实施例中,前摄错误扫描器120处理不影响正常的文件系统100的可用性。

在一个实施例中,在检测到文件系统100的卷140中的损坏时,启动或以其他方式调用前摄错误扫描器120以运行(即,执行)。在该实施例的一个方面中,当在卷140中遇到损坏时,文件系统管理器110调用前摄错误扫描器120以执行。

在第二实施例中,如果先前在文件系统100的至少一个卷140中已检测到损坏,则在标识的时间间隔启动前摄错误扫描器120以运行。在该第二实施例的一个方面中,当在文件系统100的至少一个卷140中已检测到损坏时,文件系统管理器110在预定周期时间间隔调用前摄错误扫描器120以执行。

在第三实施例中,如由系统管理员180或用户180(此处也统称为用户180)编程的,文件系统管理器110将前摄错误扫描器120调度为按某一时间间隔(例如,一天一次在午夜、一周一次在周日晚上十一点三十分、一月一次在当月第一个周日晚上一点等)被调用。在该第三实施例的一个方面中,在文件系统100内建立有意义的默认值,以确保在其他时间间隔未建立或未正确建立(例如,尚未由用户180编程),不适合的或错误的(例如,仅一年一次、每分钟一次等),已被非故意地删除或损坏等情况下前摄错误扫描器120按某一时间间隔(例如,至少一月一次等)执行。

在第四实施例中,当用户180命令时,起动(即,调用以执行)前摄错误扫描器120。在该第四实施例的一个方面中,用户180可发出命令,或提供某输入(例如,请求)(此处统称为命令),以供前摄错误扫描器120执行。在该第四实施例的一个方面中,文件系统管理器110接收用户命令。在该第四实施例的一个方面中,在接收到用户命令后,文件系统管理器110调用前摄错误扫描器120以执行。

在一个实施例中,前摄错误扫描器120扫描所有文件系统的卷140上的损坏。在替代实施例中,前摄错误扫描器120仅扫描文件系统100的以前已在其上标识出损坏并仍存在损坏的卷140上的损坏。

在一个实施例中,文件系统100的每一卷140具有相关联的卷损坏日志150(例如$corrupt文件)(此处也被称为错误校正日志、卷损坏日志和/或损坏日志150),其中记录或以其他方式表示相应卷140的确认的(即,验证的)数据结构错误。在其他实施例中,通过使用其他机制来报告确认的数据结构错误(此处也被称为卷错误或卷损坏)(例如,利用单个卷损坏日志150报告文件系统100的所有卷140的所有卷错误,维护和写入表格以保持跟踪卷错误等)。

在一个实施例中,每一卷140具有相关联的脏比特或标志145,其在被设置时,表示卷140具有尚未被校正或以其他方式解决的至少一个验证的(即,真的)、现存的损坏。

实施例文件系统100具有点损坏校正器组件130。在一个实施例中,点损坏校正器130是由文件系统100启动以执行的软件应用任务,并具有尝试校正卷损坏的能力。在一个实施例中,点损坏校正器130操作,同时要被修复或以其他方式校正的相关联的卷140离线。

在一个实施例中, 点损坏校正器130仅保持卷140离线长达有必要让点损坏校正器130尝试修复以前标识的与其上存储的数据结构相关联的卷损坏的时间。因此,在一个实施例中,虽然点损坏校正器130处理卷140以尝试补救其损坏而花费的时间量与其上先前标识的损坏数目成比例,正在被处理的卷140仅在点损坏校正器130尝试校正卷的已知损坏的必要时间中才离线。在该实施例中,点损坏校正器130通过仅处理已知的错误条件,而非执行离线卷140的完整错误扫描和/或尝试发现和/或校正在离线卷140上的新损坏,来最小化卷140离线的时间。

在一个实施例中,文件系统管理器110调度点损坏校正器130的执行,以最小化对于系统处理、可用性和用户满意度的影响。在一个实施例中,文件系统管理器110利用来自用户180的输入调度点损坏校正器130的执行。在一个实施例中,基于标识的卷损坏的性质和严重性,文件系统管理器110调度点损坏校正器130的执行。

在一个实施例中,文件系统100具有事件日志190,经由例如事件日志条目195报告事件(例如,验证的损坏、损坏校正、未解决的损坏等)。在一个实施例中,利用事件日志条目195,用于前摄错误扫描器120和文件系统管理器110之间的通信,以及点损坏校正器130和文件系统管理器110之间的通信。在一个实施例中,事件日志条目195被文件系统110用来向(多个)系统管理员180和/或用户180通知事件(例如,验证的损坏、损坏校正、未解决的损坏等)。在一个实施例中,文件系统100利用事件日志条目195,用于文件系统100的分析、维护、错误检测和校正等。在实施例中,使用事件日志条目195,用于附加的、其他的、附加的和/或其他的任务组合。

实施例文件系统100具有损坏自愈器组件160。在一个实施例中,损坏自愈器160是软件应用任务,其被启动执行以尝试校正卷损坏并对其他应用(例如,处理任务170,和用户180)具有最小的影响。在该实施例的一个方面中,前摄错误扫描器120激活损坏自愈器160以进行处理。在该实施例的一个替代方面中,文件系统管理器110激活损坏自愈器160以进行处理。在该实施例的其他替代方面中,其他文件系统100组件和或文件系统100组件的其他组合激活损坏自愈器160以进行处理。

在一个实施例中,损坏自愈器160操作,同时要被修复或以其他方式校正的相关联的卷140在线并对其他应用和用户180保持可用。

图2A-2B例示了文件系统100的实施例前摄错误扫描器120的实施例逻辑流。尽管针对此处描写的系统进行了以下讨论,但可在其他系统中实现描述的操作。此处描述的操作不限于示出的顺序。另外,在其他替代实施例中,可执行更多或更少的操作。进一步地,可通过实施例前摄错误扫描器120 通过或实施例前摄错误扫描器120与一个或多个其他系统实体、组件和/或应用或任务相结合执行描绘的操作。

参照图2A,在一个实施例中,前摄错误扫描器120在文件系统205中标识卷或第一卷,以前摄检查错误或损坏。在该实施例的一个方面中,前摄错误扫描器120将仅扫描(即,检查损坏)文件系统100的先前已在其上标识出且仍然存在损坏的那些卷140。在该实施例的另一方面中,前摄错误扫描器120将扫描文件系统100的所有卷140。

在一个实施例中,前摄错误扫描器删除所标识的(多个)卷错误日志210(例如,卷损坏日志150)中的当前条目。在一个实施例中,因为当前摄错误扫描器120将扫描(即,检查)当前卷140的损坏,卷错误日志中的当前损坏条目是不需要的,且事实上最终将是重复的。这是因为在一个实施例中,作为前摄错误扫描器处理的结果,将在卷损坏日志150中报告前摄错误扫描器120在卷140中暴露、或以其他方式发现或遇到的损坏。

在一个替代实施例中,前摄错误扫描器120不删除所标识的(多个)卷错误日志中的当前条目。在该替代实施例的各个方面中,前摄错误扫描器120将所标识的(多个)卷损坏日志中的当前条目表示(denote)或以其他方式标注(label)或标识为不相关的、无效的、旧的或非当前的。

在第二替代实施例中,前摄错误扫描器120删除或以其他方式使标识的(多个)卷错误日志中的条目无效,该卷错误日志在前摄错误扫描器120开始处理所标识的卷140时但仅在前摄错误扫描器120完成扫描当前标识的卷140的错误之后存在。在该第二替代实施例中,即使前摄错误扫描器120未能完成其对当前标识的卷140的扫描,现存的错误日志条目仍将用于后续的文件系统处理(例如,对应损坏的尝试校正)。

在一个实施例中,前摄错误扫描器生成当前标识卷215的快照。在一个实施例中,此后,前摄错误扫描器扫描卷的快照的损坏,同时文件系统和实际标识的卷保持在线并对于其他应用和用户220而言可访问。

在判决框225,确定是否已在当前正被处理的卷快照中找到损坏。如果没有,则在一个实施例中,在判决框230,确定前摄错误扫描器是否处于卷快照的结尾(即,已完成扫描当前卷快照)。如果没有,则在一个实施例中,前摄错误扫描器继续扫描当前卷快照的数据结构损坏255。

然而,如果在判决框230,已完全地扫描了当前卷快照,则在一个实施例中,前摄错误扫描器因为现在不再需要而删除卷快照235。

在一个实施例中,在判决框240,确定是否存在要被扫描损坏的、文件系统的任何其他卷。在该实施例的一个方面中,在判决框240,确定是否存在当前具有在其上标识的尚未解决的损坏的、文件系统100的任何其他卷140。在该实施例的一个替代方面中,在判决框240,确定是否存在前摄错误扫描器120在其当前执行期间尚未处理的、文件系统100的任何其他卷140。

如果在判决框240,确定此时不再有将要被扫描损坏的文件系统的卷,则在一个实施例中,前摄错误扫描器已完成其当前处理并结束250。

然而,如果在判决框240,仍有文件系统的其他卷要被扫描损坏,则在一个实施例中,前摄错误扫描器在文件系统中标识下一个卷以扫描损坏245。

再次参照判决框225,如果在当前正被处理的卷的快照中找到损坏,则在一个实施例中,并参照图2B,如以下参考图3进一步讨论的,损坏被归类260。

在一个实施例中,调用或者以其他方式激活损坏自愈器处理、或应用或任务以处理,以尝试补救,或者以其他方式校正当前标识的卷损坏160。在一个实施例中,前摄错误扫描器120激活损坏自愈器160以处理当前标识的卷损坏。在一个替代实施例中,前摄错误扫描器120通知文件系统管理器110标识的卷损坏,且文件系统管理器110激活损坏自愈器160。

在一个实施例中,在判决框265,确定是否已补救或者以其他方式改正(rectify)卷损坏。如果是,则在一个实施例中,生成损坏事件280的事件通知。在一个实施例中,事件通知是在标识损坏被校正的文件系统事件日志190中生成的条目195。

在一个实施例中,该事件通知可被系统管理员180、用户180、文件系统管理器110和/或其他文件系统管理任务、其他处理任务170等用于例如复查(review)和监控文件系统100处理和/或损坏历史、文件系统维护和/或校正等。

如果在判决框265,损坏自愈器160未补救卷损坏,则在一个实施例中,前摄错误扫描器在错误日志(例如,卷损坏日志)中针对快照正在被扫描的卷生成条目(270)。在一个实施例中,生成的错误日志条目标识前摄错误扫描器120针对其快照正在被处理的当前卷140 发现的损坏。

在一个替代实施例中,前摄错误扫描器120通知文件系统管理器110现存的损坏,且文件系统管理器110在相应卷损坏日志150中生成条目。

在处理发现的卷损坏之后,无论其是否由损坏自愈器改正,在一个实施例中,在图2A描绘的判决框230,作出关于前摄错误扫描器是否在卷快照结束时(即,已完成扫描当前卷快照)的确定。

在一个实施例中,一旦前摄错误扫描器120已完成处理,而且,如果在针对前摄错误扫描器120刚处理的任何卷140的任何卷损坏日志150中有标识的任何损坏,则文件系统管理器110生成损坏事件的事件通知。在一个实施例中,事件通知是在标识文件系统100的至少一个卷140中存在损坏的文件系统事件日志190中生成的条目195。

在一个实施例中,文件系统管理器110生成该事件通知,以告知(多个)系统管理员180和/或用户180在文件系统的至少一个卷140中存在损坏。在一个实施例中,文件系统管理器110使用事件通知向(多个)系统管理员180和/或用户180输出用于通知所发现的、现存的(多个)损坏的消息(例如,经由在计算装置显示屏上的弹出文本框)。

在一个实施例中,事件通知可以被系统管理员180、用户180、文件系统管理器110和/或其他文件系统管理任务、其他处理任务170等用于例如复查和监控文件系统100处理和/或损坏历史、文件系统维护和/或校正等。

如前所述,在一个实施例中,前摄错误扫描器120对所发现的未能经由例如损坏自愈器160在线补救的卷损坏进行归类。参照图3,实施例卷损坏记录300包括损坏类型字段320。在一个实施例中,文件系统100组件生成损坏类型字段320的条目,该文件系统100组件发现卷损坏并生成被写入卷损坏日志150的卷损坏记录300,例如前摄错误扫描器120。在一个实施例中,当前摄错误扫描器120扫描卷快照并发现未能由损坏自愈器160成功补救的损坏时,前摄错误扫描器120生成损坏类型字段320的条目。

在替代实施例中,在前摄错误扫描器120标识卷损坏之后,其他文件系统100组件生成损坏类型字段320的条目,例如,文件系统管理器110等生成损坏记录300的损坏类型字段320。

在一个实施例中,标识用来对卷损坏进行归类或者以其他方式标注的类别集合360。在一个实施例中,类别集合360中存在有限数目的类别,以帮助提升卷损坏的高效的和有意义的处理。

在一个实施例中,类别360的集合包括一般(general)损坏类别302。在一个实施例中,一般损坏类别302表明某一类型的损坏被注意并表示保证针对错误的整个卷140的审查。

在一个实施例中,类别集合360中包括孤儿(orphan child)类别304。在一个实施例文件系统100中,在每个卷140上存储一个或多个文件的总集。在一个实施例中,卷140上存储的每个文件具有一个或多个记录,且每个记录由一个或多个片段构成。在一个实施例中,每个片段由每个包含数据的一个或多个字段构成。在一个实施例中,文件记录片段是可从卷140检索的最小元素。在一个实施例中,每个文件记录由根(root)、基础(base)、父(parent)等片段构成。在一个实施例中,每个文件记录也可包含一个或多个从属片段(即,子片段)。在一个实施例中,孤儿类别304 表明正在使用并包含可行(viable)数据的子文件记录片段被定位(即,有现存的正在使用的从属文件记录片段),但其基础、或根、文件记录片段并未在使用,也未将子文件记录列为子(child)。

在一个实施例中,类别集合360中包括坏簇(bad cluster)类别306。在实施例文件系统100中,簇是卷文件的盘空间分配的单位。为了减少文件系统卷140的管理开销,实施例文件系统100不分配单独的盘扇区而是连续的扇区组,被称为簇。在一个实施例中,簇是可向卷140上的文件分配的盘空间的最小逻辑量。在一个实施例中,坏簇类别306表明在访问一簇非驻留的流数据时标识出故障扇区。

在一个实施例中,流数据是用户数据。在一个实施例中,在文件记录中直接存储流数据。在一个实施例中,非驻留流数据是存储在其自己的簇中而非直接存储在文件记录中的用户数据。在一个实施例中,坏簇类别306表明其是存储非驻留流数据的有损坏的用户数据簇。

在一个实施例中,类别集合360中包括坏空闲簇类别308。在一个实施例中,坏空闲簇类别308表明在访问卷140上的空闲的(即,至今未被使用)簇期间注意到故障簇。

在一个实施例中,类别集合360中包括交叉链接损坏类别312。在一个实施例中,交叉链接损坏类别312表明找到两个不同的盘区(extent)(例如,两个不同的卷文件)正在使用逻辑重叠的簇(即,正在使用同一或同一部分的卷的盘空间)。

在一个实施例中,类别集合360中包括安全描述符损坏类别314。在一个实施例中,安全描述符损坏类别314表明在安全描述符流中注意到某一类型的损坏。在一个实施例中,针对卷140上文件的安全描述符流是与文件相关联的一个或多个安全属性(例如,授权访问规则)的集合。

在一个实施例中,类别集合360中包括无效安全标识(或id)类别316。在一个实施例中,无效安全标识类别316表明找到一个或多个文件记录具有在安全ID索引中不正确注册的非零安全ID。

在一个实施例中,类别集合360中包括索引属性损坏类别318。在一个实施例文件系统100中,索引是用于提升文件系统卷140的数据(即,对象)检索速度的一个或多个数据结构。在一个实施例中,索引属性定义或者以其他方式描述索引支持的文件的一个方面。在一个实施例中,索引属性损坏类别318表明在索引属性中找到使得必须删除与相应索引有关的所有属性的损坏。

在一个实施例中,类别集合360中包括索引条目损坏类别322。在一个实施例中,索引包含文件的名字,并指向文件系统卷140上命名的文件。在一个实施例中,索引条目损坏类别322表明在指示的索引条目自身中有某一类型的损坏。

在一个实施例中,类别集合360中包括索引子树(subtree)损坏类别324。在一个实施例中,索引子树损坏类别324表明子树索引条目引用不存在的对象。

在一个实施例中,类别集合360中包括索引偏量损坏类别326。在一个实施例中,索引偏量损坏类别326表明索引条目是损坏的。在该实施例的一个方面中,索引偏量损坏类别326可进一步表明在同一索引框中每一个后续的索引条目是潜在损坏的。

在一个实施例中,类别集合360中包括索引次序损坏类别328。在一个实施例中,索引次序损坏类别328表明索引包含乱序的条目。

在一个实施例中,类别集合360中包括索引连接损坏类别332。在一个实施例中,索引连接损坏类别332表明索引条目引用不存在的对象(即,似乎有效的索引条目,然而未能引用任何对象)。在一个实施例中,索引连接损坏类别332表明一个或多个对象应有可能作为例如损坏的索引的恢复的结果而被插入在索引中。

在一个实施例中,类别集合360中包括目录循环损坏类别334。在一个实施例文件系统100中,目录用于将文件与其相应的文件名相关联。在一个实施例中,目录循环损坏类别334表明文件系统名空间中找到目录循环,即,在标识目录的先辈(ancestor)(即,父)的卷140的目录中存在条目)。

在一个实施例中,类别集合360中包括簇分配损坏类别336。在一个实施例中,簇分配损坏类别336表明找到卷140上正在使用的但针对相应的卷被标记为空闲(即,未在使用)的簇。

在一个实施例中,卷损坏记录300的格式是相对紧凑的,以便节省空间,但是其也被设计为易于解析,以便利用其内容工作的应用(例如,实施例点损坏校正器130)可解译记录的内容而无需过于复杂的解串行操作。在一个实施例中,卷损坏记录300的格式还能通过最小的数据和/或应用的重新设计,灵活适应例如未来的扩展。

实施例卷损坏记录300具有可变长度的二进制格式。在一个实施例中,对卷损坏记录300的字段进行编码。在该实施例的一个方面中,利用小尾数字节(little endian byte)排序对卷损坏记录300的字段进行编码。

实施例卷损坏记录300具有头字段310,其包括唯一地标识具体的卷损坏记录300的实例标签。在一个实施例中,卷损坏记录300的头字段310还包括卷损坏记录300的长度(例如,以字节计)。

实施例卷损坏记录300包括调用堆栈标识字段330。在一个实施例中,调用堆栈标识字段330包含数据结构条目,其描述在检测到相应卷损坏时的内核调用堆栈。在一个实施例中,调用堆栈标识字段330包含文件标识id,其唯一地标识在检测到相应卷损坏时正在执行的源文件。在一个实施例中,调用堆栈标识字段330包含在检测到相应卷损坏时正在执行的源行号的标识。在一个实施例中,调用堆栈标识字段330包含用于标识在当检测到相应卷损坏时正在执行的代码库中的位置的唯一整数。

实施例卷损坏记录300包含二进制样本损坏字段340。在一个实施例中,二进制样本损坏字段340包含具有二进制数据的任意样本(其例示相应卷损坏)的数据结构条目。

图4A-4B例示了文件系统100的实施例点损坏校正器130的实施例逻辑流。尽管对于此处描写的系统进行了以下讨论,但可在其他系统中实现所描述的操作。此处描述的操作不限于示出的顺序。另外,在其他替代实施例中,可执行更多或更少的操作。进一步地,可通过实施例点损坏校正器130或通过与一个或多个其他系统实体、组件和/或应用结合的实施例点损坏校正器130执行所描绘的操作。

在一个实施例中,文件系统管理器110激活或者以其他方式调用点损坏校正器130以进行处理。在一个实施例中,当用户180请求其调用时,激活点损坏校正器130。 在该实施例的一个方面,如此前参照图2B讨论的,用户180可请求或者以其他方式命令,在接收消息之后的特定时间激活点损坏校正器130,前摄错误扫描器120处理发起向用户180展示该消息。

在一个实施例中,在系统启动时,当存在针对文件系统100的至少一个卷140的损坏日志条目155时,点损坏校正器130也(或替代地)被激活。在文件系统100是服务器文件系统且快速开启(即,激活用于处理)服务器文件系统是重要的一个实施例中,仅当存在系统卷140的损坏日志条目155时才在服务器文件系统启动时激活点损坏校正器130。在文件系统100是服务器文件系统的该实施例的各个方面中,在除了服务器文件系统启动的其他时间(例如,在当存在针对至少一个卷140的至少一个损坏日志条目155时的所调度的维护时间表期间,在当存在针对至少一个卷140的至少一个损坏日志条目155时的所调度的错误校正时间表期间等),激活点损坏校正器130。

在文件系统100是客户端文件系统且易于管理和自动修复是重要的一个实施例中,在客户端文件系统启动时,当存在针对客户端文件系统100中的任何卷140的损坏日志条目155时,激活点损坏校正器130。

在一个实施例中,点损坏校正器130使得具有错误日志条目的卷离线(405);例如,在一个实施例中,点损坏校正器130使得在其对应的损坏日志(例如,$corrupt)150中具有至少一个条目的卷140离线405。

在一个实施例中,并使用当前正被处理的损坏日志条目中的信息,点损坏校正器尝试验证标识的记录的损坏410。

在判决框415,确定点损坏校正器是否已独立验证离线卷中的所记录的损坏。如果没有,则在一个实施例中,假定所标识的卷错误事实上不存在。在一个实施例中,点损坏校正器删除当前已经在处理的卷损坏日志条目(440)。

在一个实施例中,因为一些原因中的一个或多个,可能不能通过点损坏校正器130验证410先前标识的卷错误。这些原因可包括但不限于,在以前标识损坏(例如,通过前摄错误扫描器120)时和现在点损坏校正器130正在处理以验证损坏时之间,以这样的方式改变了卷140,而使得损坏不再存在;在点损坏校正器130执行之前,删除了具有先前标识的损坏的卷140的部分等。

在一个实施例中,在判决框450,确定是否还存在针对当前正被处理的卷损坏日志的卷损坏日志条目。如果有,则在一个实施例中,点损坏校正器在卷损坏日志中标识另一条目进行处理455,并且点损坏校正器利用新标识的损坏日志条目中的信息尝试验证所标识的日志损坏410。

如果在判决框415,点损坏校正器已独立验证了离线卷中的所记录的损坏,则在一个实施例中,点损坏校正器工作以解决所记录的损坏420。

在一个实施例中,在判决框425,确定点损坏校正器是否成功校正了相关联的卷的所记录的损坏。如果是,则在一个实施例中,点损坏校正器删除当前已经在处理的卷损坏日志条目(430)。

在一个实施例中,点损坏校正器生成校正的卷损坏的事件通知(435)。在一个实施例中,事件通知是在文件系统事件日志190中生成的标识相应文件系统卷140中损坏被校正的条目195。

在一个实施例中,报告通知可被系统管理员180、用户180、文件系统管理器110和/或其他文件系统管理任务、其他处理任务170等用于例如复查和监控文件系统100处理、校正动作和/或损坏历史等。

在一个实施例中,文件系统管理器110还(或替代地)使用事件通知向(一个或多个)系统管理员180和/或用户180输出通知所校正的损坏的消息(例如,经由在计算装置显示屏上的弹出文本框)。在一个替代实施例中,在执行点损坏校正器130之后,文件系统管理器110使用在执行点损坏校正器130期间生成的所有事件通知向(一个或多个)系统管理员180和/或用户180输出通知所校正的损坏的消息或一系列消息(例如,经由在计算装置显示屏上的弹出文本框)。

在一个实施例中,在判决框450,确定是否还存在当前正被处理的卷损坏日志的卷损坏日志条目。

如果在判决框425,点损坏校正器未能解决当前正在处理的记录的损坏,则在一个实施例中,点损坏校正器130通知文件系统管理器应当执行完整的离线卷一致性检查,以解决仍存在的卷损坏445。在一个实施例中,完整 离线卷一致性检查(此处也被称为完整检查盘动作)包含排他性地锁闭(即,使得离线)其上具有未解决的数据结构损坏的文件系统100的卷140,并在其上执行完整的诊断和任何必要的补救处理。在一个实施例中,完整的 检查盘动作的时间长度依赖于具有未解决损坏的卷140的数目和损坏的数目及严重性。在实施例中,完整的检查盘动作可能是耗时的。在一个实施例中,完整的 检查盘动作是解决任何仍然现存的卷损坏的最后的努力手段。

在一个实施例中,在被通知应当执行完整的离线卷一致性检查时,文件系统管理器110设置文件系统状态(例如,设置适当的卷的脏比特145),其将触发或者以其他方式使得文件系统100在下一次系统启动时在卷140上执行完整的检查盘动作。

在一个实施例中,在被通知应当在文件系统100的卷140上执行完整的离线卷一致性检查时,文件系统管理器110向系统管理员180或用户180通知存在其上具有至少一个未解决的损坏的文件系统100的卷140。在该实施例的一个方面中,管理员180或用户180可请求或者以其他方式命令文件系统100立即或在某一其他管理员180或用户180指定的时间,在具有未解决的损坏的卷140上执行完整的检查盘动作。

在一个实施例中,在判决框450,确定是否还存在当前正被处理的卷损坏日志的卷损坏日志条目。

一旦点损坏校正器通知文件系统管理器需要对卷445进行完整的离线卷一致性检查,或如果在判决框450不再存在当前正被处理的损坏日志的卷损坏日志条目,则在一个实施例中,并参照图4B,点损坏校正器将当前正被处理的卷恢复为在线(475)。在该实施例的一个方面中,当前恢复在线的卷140此后可供其他应用(例如,处理任务170和用户180)使用。

在一个实施例中,在判决框480,确定是否还存在任何其他系统卷的当前在其中具有有效条目的损坏日志。如果是,则在一个实施例中,点损坏校正器标识具有损坏日志条目的另一卷(485),并再次参照图4A,排他性地锁闭新标识的卷,即,使得卷离线(405)。

如果在图4B的判决框480,当前不再存在具有条目的损坏日志,则在一个实施例中,点损坏校正器处理结束(490)。

计算装置系统配置

图5是框图,其例示了可在其上实现实施例的示例计算装置系统500。计算装置系统或计算装置的例子500包括但不限于服务器、服务器系统、计算机,例如,台式计算机、膝上计算机(此处也被称为膝上型计算机、笔记本计算机等)等。

实施例计算装置系统500包括用于传送信息的总线505或其他机制,和用于处理信息的与总线505耦合的处理单元510(此处也被称为处理器510)。计算装置系统500还包括系统存储器515,其可以是易失性的或动态的,例如随机存取存储器(RAM),非易失性的或静态的,诸如只读存储器(ROM)或闪存,或两者的某一组合。系统存储器515被耦合至总线505,用于存储处理单元510执行的信息和指令,且也可被用于在处理器510执行指令期间存储临时变量或其他中间信息。系统存储器515经常包含操作系统和一个或多个程序、或应用、和/或软件代码,且还可包括程序数据。

在一个实施例中,诸如磁或光盘、固态驱动器、闪速驱动器等的存储装置520也被耦合至总线405,用于存储包括程序指令代码和/或数据(例如,卷140)的信息。在实施例计算装置系统500中,存储装置520是计算机可读储存器或机器可读储存器520。

实施例计算装置系统500一般包括一个或多个显示装置535,诸如但不限于显示屏(例如,阴极射线管(CRT)或液晶显示器(LCD))、打印机、和一个或多个扬声器,用于向计算装置的系统管理员180和用户180提供信息。实施例计算装置系统500一般还包括一个或多个输入装置530,诸如但不限于键盘、鼠标、跟踪球、笔、声音输入装置,和触摸输入装置,系统管理员180和用户180可利用其向处理器510传送信息和命令选择。所有这些装置在本领域中是已知的且无需在此详细讨论。

处理器510执行一个或多个程序的一个或多个序列、或应用、和/或系统存储器515中包含的软件代码指令。可从包括但不限于存储装置520的另一计算装置可读介质读取这些指令至系统存储器515中。在替代实施例中,硬连线电路可被用于代替软件指令或与软件指令结合。实施例计算装置系统500环境不限于硬件电路和/或软件的任何特定的组合。

此处使用的术语“计算装置可读介质”指的是可参与向处理器510提供程序、或应用、和/或软件指令用于执行的任何介质。这样的介质可采用许多形式,包括但不限于存储介质和传输介质。存储介质的例子包括但不限于RAM、ROM、EEPROM、闪存、固态驱动器、CD-ROM、USB棒驱动器、数字多功能盘(DVD)、磁带盒、磁带、磁盘存储器或任何其他磁介质、软盘、柔性盘、打孔卡、纸带、或有洞的模式的任何其他物理介质、存储芯片或卡带。实施例计算装置系统500的系统存储器515和存储装置520是存储介质的进一步例子。传输介质的例子包括但不限于诸如同轴电缆、铜线和光纤的有线介质,以及诸如光学信号、声学信号、RF信号和红外信号的无线介质。

实施例计算装置系统500还包括耦合至总线505的一个或多个通信连接550。(一个或多个)实施例通信连接550提供从计算装置系统500耦合至其他计算装置的双向的数据通信,该其他计算装置在局域网(LAN)565和/或包括万维网、或因特网570和各种其他通信网络575(例如,基于SMS的网络、电话系统网络等)的广域网(WAN)上。(一个或多个)通信连接550的例子包括但不限于综合业务数字网(ISDN)卡、调制解调器、LAN卡和能够发送和接收电的、电磁的、光学的、声学的、RF或红外信号的任何装置。

实施例计算装置系统500接收的通信可包括程序、或应用、和/或软件指令和数据。实施例计算装置系统500接收的指令可由处理器在接收其时执行,和/或存储在存储装置520或其他非易失性存储装置中用于以后的执行。

结论

尽管此处描述了各种实施例,这些实施例已经仅以例子的方式呈现,且不意图限制要求保护的主题的范围。处于以下权利要求的范围内的许多变化是可能的。在查看此处的说明书、附图和权利要求之后,这样的变化是清楚的。因此,除在以下权利要求及其等价物中定义之外,要求保护的主题的宽度和范围是不受限制的。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号