针对文件的错误检测的制作方法

文档序号:6360949阅读:178来源:国知局
专利名称:针对文件的错误检测的制作方法
针对文件的错误检测
背景技术
各种电子存储媒体上的数据会随时间推移而变得受损。利用一些诸如⑶、DVD、磁带、软盘及其他的一些类型的媒体,该媒体实际上开始衰朽并且因此而丢失数据。利用诸如EPROM和闪存之类的其它类型的媒体,电荷会消散而导致数据丢失。虽然一般已知硬盘驱动器会在它们发生崩溃或者以其它方式而变得无法操作时丢失数据,但是至少并非被行业之外的人士众所周知的是,即使正常工作的硬盘驱动器也会具有不知不觉地或以其它方式受损的数据。这里所请求保护的主题并不局限于解决任何缺点或仅在诸如以上所描述的那些环境中操作的实施例。相反,该背景技术仅被提供以说明这里所描述的一些实施例可以在其中得以实践的一个示例性技术领域
发明内容

简言之,这里所描述主题的各方面涉及针对文件的错误检测。在各方面中,在允许清理文件的更新之前,向非易失性存储器写入将文件标记为污损(dirty)的标志。随后,只要需要,该文件就可以被更新。定期地或者在某个其它时间,在针对该文件的所有未完成(outstanding)更新以及与该文件相关联的错误代码被写入存储之后,该文件可以被标记为清洁。在等待未完成更新和错误代码被写入存储的同时,如果接收到更新该文件的另外请求,则在允许该另外请求对该文件进行更新之前可以将该文件再次标记为污损。写入与该文件相关的清洁标志的请求可以惰怠地(Iaz i Iy )完成。提供该发明内容以简单地标识出以下在具体实施方式
中进一步描述的主题的一些方面。该发明内容并非意在标识出所请求保护主体的关键特征或必要特征。该发明内容也并非意在被用于对所请求保护主体的范围进行限制。除非上下文另外明确指出,否则短语“这里所描述的主题”是指在具体实施方式
中进行描述的主题。术语“各方面”要被理解为“至少一个方面”。标识出在具体实施方式
中所描述主题的各方面并非意在标识出所请求保护主题的关键或必要特征。以上所描述的各方面以及这里所描述主题的其它方面在附图中作为示例而非限制进行图示,其中同样的附图标记指示类似元素,其中。


图I是表示这里所描述主题的各方面可以结合于其中的示例性通用计算环境的框 图2是图示依据这里所描述主题的各方面的错误代码和数据的框 图3是表示依据这里所描述主题的各方面进行配置的系统的框 图4是依据这里所描述主题的各方面的总体上表示可以在准备更新当前被标记为清洁的文件时所发生的一些示例性动作的流程 图5是依据这里所描述主题的各方面的总体上表示可以结合将文件标记为清洁而进行的一些示例性动作的流程图;和
图6是依据这里所描述主题的各方面的总体上表示可以在恢复时发生的一些示例性动作的流程图。
具体实施例方式如这里所使用的,术语“包括”及其变化形式要被理解为表示“包括,但并不局限于”的开放性术语。除非上下文另外明确指出,否则术语“或者”要被理解为“和/或”。术语“基于”要被理解为至少部分基于。术语“一个实施例”和“实施例”要被理解为“至少一个实施例”。术语“另一个实施例”要被理解为“至少一个其它实施例”。其它明确或隐含定义可以包括在下文之中。示例性操作环境
图I图示了可以在其上实施这里所描述主题的各方面的适当计算系统环境100的示 例。计算系统环境100仅是适当计算环境的一个示例而并非意在对这里所描述主题的各方面的使用或功能范围暗示任何限制。计算环境100也不应当被解释为关于示例性操作环境100中所图示的任意一个组件或组件组合具有任何依赖性或要求。这里所描述主题的各方面可利用多种其它通用或专用计算系统环境或配置进行操作。适用于这里所描述主题的各方面的公知的计算系统、环境或配置的示例包括个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费者电器、网络PC、小型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶盒的电器、媒体中心或其它电器、车载或与之相连的计算设备、其它移动设备、包括任意以上系统或设备的分布式计算环境,等等。这里所描述主题的各方面可以在诸如由计算机所执行的程序模块之类的计算机可执行指令的一般上下文中进行描述。通常,程序模块包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。这里所描述主题的各方面还可以在分布式计算环境中进行实践,其中任务由通过通信网络进行链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储媒体中。参考图1,用于实施这里所描述主题的各方面的示例性系统包括计算机110形式的通用计算设备。计算机可以包括能够执行指令的任意电子设备。计算机110的组件可以包括处理单元120、系统存储器130以及将包括系统存储器在内的各种系统组件耦接到处理单元120的系统总线121。系统总线121可以是若干类型的总线结构的任一个,包括使用各种总线结构的任一种的存储器总线或存储器控制器、外部总线以及局部总线。作为示例而非限制,这样的架构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA (EISA)总线、视频电子标准协会(VESA)局部总线、也被称作Mezzanine总线的外部组件互连(PCI)总线、扩展外部组件互连(PCI-X)总线、先进图形端口(AGP)和PCI express(PCIe)。计算机110通常包括各种计算机可读媒体。计算机可读媒体可以是计算机110所能够访问的任意可用媒体并且包括易失性和非易失性媒体以及可移动和非可移动媒体。作为示例而非限制,计算机可读媒体可以包括计算机存储媒体和通信媒体。
计算机存储媒体包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任意方法或技术所实施的易失性和非易失性、可移动和非可移动媒体。计算机存储媒体包括RAM、ROM、EEPR0M、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁性盒带、磁带、磁盘存储或其它磁性存储设备,或者能够被用来存储所期望信息并且能够由计算机110所访问的任意其它介质。通信媒体通常以诸如载波或其它传输机制的调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任意信息传递媒体。术语“调制数据信号”意味着其一个或多个特征以在信号中编码信息的方式进行设置或改变的信号。作为示例而非限制,通信媒体包括诸如有线网络或直接线路连接的有线媒体,以及诸如声音、RF、红外和其它无线媒体的无线媒体。以上的任意组合也应当包括在计算机可读媒体的范围之内。系统存储器130包括易失性和/或非易失性存储器形式的计算机存储媒体,诸如只读存储器(ROM) 131和随机访问存储器(RAM) 132。包含有助于诸如在启动期间在计算机 110内的元素之间传输信息的基本例程在内的基本输入/输出系统133 (BIOS)通常被存储在ROM 131中。RAM 132通常包含可由处理单元120立即访问和/或当前在其上进行操作的数据和/或程序模块。作为示例而非限制,图I图示了操作系统134、应用程序135、其它程序模块136和程序数据137。计算机110还可以包括其它可移动/非可移动、易失性/非易失性计算机存储媒体。仅作为示例,图I图示了从非可移动、非易失性磁性媒体进行读取并对其写入的硬盘驱动器141,从可移动、非易失性磁盘152进行读取并对其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学媒体的可移动、非易失性光盘156进行读取并对其写入的光盘驱动器155。能够在示例性操作环境中使用的其它可移动/非可移动、易失性/非易失性计算机存储媒体包括磁性带盒、闪存卡、数字多功能盘、其它光盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141通常通过诸如接口 140的非可移动存储器接口连接到系统总线121,并且磁盘驱动器151和光盘驱动器155通常通过诸如接口 150的可移动存储器接口连接至系统总线121。以上所讨论并且在图I中图示的驱动器及其相关联的计算机存储媒体为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图I中,例如,硬盘驱动器141被图示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被给予不同数字而以最低限度图示它们为不同副本。用户可以通过诸如键盘162和指示设备161的输入设备向计算机110中输入命令和信息,所述指示设备161 —般是指鼠标、轨迹球或触摸板。其它输入设备(未示出)可以包括麦克风、操控杆、游戏垫、卫星碟形天线、扫描仪、触摸敏感屏幕、书写板等。这些和其它输入设备经常通过耦接至系统总线的用户输入接口 160而连接至处理单元120,但是也可以通过其它接口和总线结构进行连接,诸如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也经由诸如视频接口 190的接口连接至系统总线121。除了监视器之外,计算机还可以包括诸如扬声器197和打印机196的其它外部输出设备,它们可以通过输出外设接口 195进行连接。
计算机110可以使用到诸如计算机180的一个或多个远程计算机的逻辑连接而在联网环境中进行操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、端点设备或其它普通网络节点,并且通常包括以上关于计算机110所描述的许多或全部元素,尽管在图I中仅图示了存储器存储设备181。图I中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN) 173,但是还可以包括其它网络。这样的联网环境在办公室、企业范围内的计算机网络、企业内部网和互联网中是常见的。当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接到LAN171。当在WAN联网环境中使用时,计算机110可以包括调制解调器172或其它器件以便通过诸如互联网的WAN 173建立通信。可以处于内部或外部的调制解调器172可以经由用户输入接口 160或其它适当机制连接到系统总线121。在联网环境中,关于计算机110所描绘的程序模块或者其一部分可以存储在远程存储器存储设备中。作为示例而非限制,图I将远程应用程序185图示为处于存储器设备181上。将要意识到的是,所示出的网络连接是示例性的并且可以使用在计算机之间建立通信链路的其它手段。
错误检测
如之前所提到的,存储媒体上的数据可能变得受损。图2是图示依据这里所描述主题的各方面的错误代码和数据的框图。在一个实施例中,连同写入数据215 —起而向存储写入错误代码205。错误代码205包括可以被用来验证数据215还没有变为受损的数据。错误代码205可以是简单或复杂的,并且可以包括检测不同错误类型的信息。例如,奇偶位可以被用来检测奇偶错误,而诸如循环冗余校验(CRC)的更为复杂的错误代码可以被用来检测若干数位的突发错误。诸如消息认证代码(MAC)、加密散列函数以及一些其它函数的一些错误代码可以被用来检测针对存储上的数据可能出现的其它数据受损。错误代码可以在错误检测中或者错误检测和更正中使用。例如,错误代码可以包括检测错误但是并不对错误进行更正的数据。作为另一个示例,错误代码可以包括检测并更正某些类型的错误的数据。以上示例并非意在全部包含或穷举了可以由这里所描述主题的各方面所使用的错误代码的类型。实际上,基于这里的教导,本领域技术人员可以认识到可以使用其它错误代码而并不背离这里所描述主题的各方面的精神和范围。可以参考图2来说明错误代码所具有的问题。当错误代码以及与错误代码相关联的数据都被写入非易失性存储时,则错误代码可以被可靠地用来在错误代码的特征限制之内检测该数据的受损。当数据被写入非易失性存储或者错误代码被写入非易失性存储但是数据和错误代码并未都被写入非易失性存储时,这就造成该潜在的问题。在一些实施方式中,错误代码可以被附着或插入并且连同与错误代码相关联的数据一起进行写入。例如,利用数据库,数据库管理系统(DMBS)可以在每个页面中保留空间以向存储进行写入并且可以在对该页面进行改变时计算错误代码并存储在该空间中。当页面被写入存储时,该页面的错误代码页被写入存储。然而,在诸如文件系统的其它实施方式中,错误代码可以独立于与错误代码相关联的数据进行存储。例如,错误代码可以存储在关于文件的元数据中,与数据文件分离的一个或多个文件中,存储设备上的指定位置中,等等。
在这些实施方式中,关于数据或者与数据相关联的错误代码中的哪一个首先被写入存储存在竞争条件。例如,参考图2,如果错误代码210被写入存储而数据220没有被写入存储,则错误代码210在被应用于数据215的情况下会给出错误结果。类似地,如果数据220被写入存储而错误代码210没有被写入存储,则错误代码205在被应用于数据220的情况下会给出错误结果。写入错误代码210和数据220之间,系统崩溃或磁盘变得无法操作会在这些类型的实施方式中导致问题。诸如丢失或错误指向的写入之类的其它磁盘错误也会在这些类型的实施方式中导致问题。以上示例并非意在是无所不包括或穷举的。实际上,基于这里的教导,本领域技术人员可以认识到可以在其中应用这里的教导而并不背离这里所描述主题的各方面的精神或范围的其它存储情形。为了解决这个和其它问题,可以采取以下动作
I.文件可以被标记为清洁。清洁意味着错误代码和数据都已经被成功写入非易失性存储或者该文件是新的且还没有被写入。例如,将文件标记为清洁可以采用设置或清除与
2.在文件已经被标记为清洁之后,应用或其它数据写入器可以试图改变该文件。为了如此,数据写入器可以发送向文件系统写入文件的请求。3.在接收到第一请求(例如,文件已经被标记为清洁之后的第一个请求)时,文件系统可以在该文件上设置污损标志并且将该污损标志写入存储。文件系统可以确保该污损标志实际上在履行来自数据写入器的第一请求之前被写入存储。一种确保污损标志被实际写入存储的方式是向存储发送刷新(flush)命令并且接收该刷新命令成功的确认。另一种确保污损标志被实际写入存储的方式是通过强制单元访问(FUA)。FUA指示一次写入要被写入到存储设备的非易失性存储而并非仅写入高速缓存。在各种存储设备中,可以存在用于确保该数据被写入存储的其它机制,其可以被使用而并不背离这里所描述主题的各方面的精神和范围。4.文件系统可以接收与文件相关的多个写入请求。在针对文件更新数据时,文件系统可以为要写入存储的每个页面创建新的错误代码。5.定期地按照需要,在文件关闭时或其它时间,文件系统可以确保数据以及与文件相关联的所有错误代码都被写入存储。为了如此,如果有的话,文件系统可以保存到来的针对写入到文件的请求并且可以对它们进行排队直至文件系统已经接收到数据和所有错误代码已经被写入存储的指示。数据和所有错误代码已经被写入存储的指示可以采取许多形式。例如,在一个实施例中,文件系统可以发出刷新命令并且该指示可以包括从存储设备接收该刷新命令成功完成的确认。在另个实施例中,文件系统可以追S示针对存储的所有未完成与入。存储可以在每次写入在存储上成功地写入时发送确认。当已经接收到针对每个未完成写入的确认时,文件系统可以将此等同于数据和所有错误代码已经被成功写入存储的指示。以上示例并非意在全部包含或穷举了文件系统可以接收以指示数据和所有错误代码已经被写入存储的指示的类型。基于这里的教导,本领域技术人员可以认识到可以采用的指示数据和所有错误已经被成功写入存储而并不背离这里所描述主题的各方面的精神或范围的其它指示。
6.在文件系统接收到数据和所有错误代码已经被成功写入存储的指示之后,文件系统可以设置标志以指示文件清洁。在一个实施例中,文件系统可以在允许文件上的后续操作之前将该标记刷新(flush)到存储。在另一个实施例中,文件系统可以允许该标志被怠惰地写入存储并且可以同时允许在文件上执行其它操作。在文件系统已经设置了标志(并且可能将其刷新到存储)之后,可以重复以上动作。作为一种变化形式,如果在以上的步骤5或其之后接收到针对文件的写入请求,则可以省略将标志重新设置为清洁以及将其写入磁盘。作为另一种变化形式,将错误代码和标志写入存储可以在事务(transaction)的的上下文中执行。事务是可以包括各种属性的操作群组,所述属性例如包括原子的、一致的、隔离的以及可持续的。如这里所使用的,事务至少包括原子属性并且可以包括一个或多个以上的其它属性。 原子属性被用来指操作群组,其中群组中的每个操作成功或者群组中操作的切实效果(例如,文件变化)被撤销、被丢弃或未被应用。为了简明,术语被丢弃在这里有时被用来指采取任意适于确保事务的上下文中所做出的任何变化都没有被反映在与该变化相关联的对象中的动作。丢弃可以包括撤销、丢弃、不应用更新操作,等等。例如,银行汇款可以作为两个操作的原子集合来实施从一个账户借出和贷入另一个账户。如果一个操作成功而另一个没有成功,则汇款不公平地有利于银行或账户持有人。因此,在事务中,要么两个操作都成功,要么成功的任意操作的切实效应(例如,存储到磁盘或存储器上的数据)被丢弃。当一个或多个对象在“事务的上下文中”被修改时,这意味着存在关于为了修改一个或多个对象而发布的更新操作将强制执行(enforce)原子属性的假设。例如,在事务的上下文中请求修改的应用可以安全地假设,要么进行修改的所有更新操作都成功,要么所进行的或原本会成功的更新将被丢弃。因此,在事务的上下文中写入标志和错误代码确保了要么标志和错误代码全部被写入存储,要么关于标志和错误代码对存储做出的更新被丢弃。作为另一种变化形式,关于文件更新刷新数据和与之相结合地写入错误代码之间的间隔可以根据存储该错误代码的存储设备的一个或多个特性而调整。例如,对于闪存,该间隔可以被设置为数毫秒、设定数量的更新或者其它一些间隔;而对于诸如硬盘之类的较慢存储,该间隔可以被设置为数百毫秒、更短或更长、较多数量的更新或者其它一些间隔。可以针对写时拷贝(copy on write)文件系统、不执行写时拷贝的文件系统、其组合等执行以上动作。在写时拷贝文件系统中,在文件被修改之前,所要修改的部分的副本被复制到另一个位置。在原位写入文件系统中,文件在原位被修改而并不将原始部分复制到另一个位置。在一种实施方式中,与文件相关联的元数据可以在事务的上下文中进行更新而文件的数据则在事务的上下文之外进行更新。元数据可以包括一个或多个错误代码以及指示该文件是污损还是清洁的标志。在该实施方式中,在污损标志已经被写入磁盘之后,可以在事务内执行对文件元数据的更新。在该实施方式中,可以对事务成功完成施加另外的条件。特别地,为了事务成功完成,可以通过读取文件数据并且从其计算错误代码来验证元数据中所包括的错误代码。如果错误代码匹配,则允许事务完成。如果错误代码不匹配,则事务被异常终止。异常终止事务可以撤销对元数据做出的改变但是并不撤销对文件数据所进行的改变。如果事务成功完成,则文件被标记为清洁。如果事务异常终止,则清洁标志不被留存至存储并且被留存至存储的污损指示表明该文件可能受损,但并非必然如此。在该实施方式中,文件可能在设置清洁标志的同时被更新(例如,在可能或不会被异常终止的事务中)。图3是表示依据这里所描述主题的各方面进行配置的系统的框图。图3中所图示的组件是示例性的而并非意在全部包括可能需要或包括的组件。在其它实施例中,结合图3进行描述的组件和/或功能可以包括在(示出或未示出的)其它组件中或者被置于子组件之中而并不背离这里所描述主题的各方面的精神或范围。在一些实施例中,结合图3所描述的组件和/或功能可以跨多个设备进行分布。转向图3,系统305可以包括更新请求器310、错误检测组件315、存储350和其它组件(未示出)。错误检测组件315可以包括错误代码计算器320、污损标志管理器325、存 储管理器330、清洁标志管理器335、恢复管理器340和其它组件(未示出)。系统305可以在一个或多个计算机(例如,图I的计算机110)上实施或者由一个或多个计算机所实施。一个或多个错误检测组件315的动作可以由一个或多个处理来执行。如这里所使用的术语“处理”及其变化形式可以包括执行任务的一个或多个传统处理、线程、组件、库、对象等。处理可以以硬件、软件或者硬件和软件的组合来实施。在实施例中,处理是任意计算机机制,然而被调用时,能够执行动作或用于执行动作。处理可以在多个设备或单个设备上进行分布。在一个实施例中,错误检测组件315可以被实施为对象的方法。在另一个实施例中,一个或多个错误检测组件415可以被实施为一个或多个功能或者其部分。如这里所使用的术语“函数”可以被认为是执行一个或多个任务的代码部分。虽然函数可以包括返回数据的代码块,但是并不局限于返回数据的代码块。函数还可以执行具体任务而并不返回任何数据。此外,函数可以具有或不具有输入参数。函数可以包括子例程、子程序、过程、方法、例程等。更新请求器310是试图对存储350上的文件进行更新的任意实体。一些示例性实体包括应用、操作系统组件等。更新请求器310可以驻留在托管一个或多个错误检测组件315的装置上或者可以驻留在不同装置上。存储350包括能够存储文件并且由文件系统进行管理的任意存储媒体。存储350可以是外部的、内部的,或者包括处于系统305内部和外部的组件。如这里所使用的术语文件包括目录、文件、其它文件系统对象等。如这里所使用的,文件包括数据。术语数据要被宽泛地理解为包括可由一个或多个计算机存储元素所表示的任意内容。在逻辑上,数据可以被在易失性或非易失性存储器中被表示为一系列I和O。在具有非二进制存储介质的计算机中,数据可以根据存储介质的容量进行表示。数据可以被组织为不同类型的数据结构,包括诸如数字、字母等的简单数据类型,分层、链接或其它相关数据类型,包括多种其它数据结构或简单数据类型的数据结构,等等。数据的一些示例包括信息、程序代码、程序状态、程序数据、其它数据等。错误代码计算器320可操作来确定存储设备的文件的错误代码。每个错误代码包括与对应于该错误代码的文件相关的数据。如之前所提到的,该数据可用于检测(并且可能更正)与文件或其一部分是否被正确写入存储设备相关的一个或多个错误。错误代码计算器320可操作来结合对文件所进行的一个或多个改变而重新计算错误代码。污损标志管理器325可操作来在允许对文件进行任何更新之前向存储设备写入污损标志。污损标志管理器325可以进行检查以确定文件是否已经具有存储在存储设备上的污损标志,如果文件已经具有存储在存储设备上的污损标志,污损标志管理器325可以禁止向文件再次写入污损标志。存储管理器330可操作来对存储设备(诸如存储350)的文件进行存储并提供对其的访问。存储管理器可以从存储设备接收关于对该存储设备的写入成功或失败的确认。清洁标志管理器335可操作来设置清洁标志并且将该清洁标志写入到存储。在一个实施例中,文件的清洁标志和污损标志可以被实施为被更新来指示文件是清洁还是可能污损的数位、字节或其它数据。换句话说,指示文件清洁可以涉及对当前指示文件可能污损的数位或其它数据进行设置或重新设置,而指示文件污损则可以涉及对相同数位或其它数 据进行重新设置或设置。换句话说,文件的清洁和污损标志可以被表示为与文件相关联的单个数据的两种不同状态。如之前所提到的,清洁标志管理器335可以怠惰地或者在允许对文件进行另外更新之前将清洁标志写入存储。清洁标志管理器335可以在与文件相关联的所有错误代码都已经被写入存储设备之后或者共同(例如,在事务的上下文中)写入清洁标志。恢复管理器340可操作来从存储设备读取指示文件是否被标记为污损的数据。如果数据指示文件被标记为污损,则恢复管理器340可以指示该文件为可疑。否则,恢复管理器340可以指示该文件为清洁。可疑的文件可能受损或没有受损。例如,如果在向磁盘写入污损标志之后但是在向磁盘写入其它数据之前系统崩溃或者磁盘变得无法操作,则文件可能没有受损。另一方面,如果在对磁盘进行写入的期间,在写入数据之后但是写入相对应的错误代码之前或反之亦然,系统崩溃或者磁盘变得无法操作,则文件可能受损。更新管理器345可操作来从更新请求器310接收更新文件的请求。更新管理器345可进一步操作来在允许更新继续进行到存储管理器330以依据请求更新文件之前利用污损标志管理器325将文件标记为污损。更新管理器345可进一步操作来响应于对文件所做出的改变而利用错误代码计算器320为文件确定错误代码,所述改变是响应于更新文件的请求而对文件进行的。更新管理器345可进一步操作来使用清洁标志管理器335来指示该文件为清洁。图4-6是总体上表示依据这里所描述主题的各方面所发生的动作的流程图。为了解释的简明,结合图4-6所描述的方法被描绘和描述为一系列动作。所要理解并意识到的是,这里所描述主题的各方面并不被所图示的动作和/或动作的顺序所限制。在一个实施例中,动作以如下所描述的顺序发生。然而,在另一个实施例中,动作可以并行发生、以其它顺序进行,和/或具有没有在这里没有给出并描述的其它动作。此外,并非所图示的所有动作都会被需要来实施依据这里所描述主题的各方面的方法。此外,本领域技术人员将会理解并意识到,该方法能够可替换地经由状态图被表示为一系列相互关联的状态或者被表示为事件。图4是总体上表示依据这里所描述主题的各方面的可在准备对当前标记为清洁的文件进行更新时进行的一些示例性动作的流程图。翻到图4,在框405,动作开始。在框410,可以接收更新文件的请求。例如,参考图3,更新管理器345可以从更新请求器310接收更新文件的请求。在框415,并不对文件进行更新,直至该文件的污损标志已经被写入非易失性存储。例如,参考图3,响应于更新文件的请求,更新管理器345禁止对文件进行更新,除非该文件的污损标志已经被写入存储350。 在框420,为文件设置污损标志。例如,参考图3,更新管理器345指示污损标志管理器325确保文件的污损标志被写入存储350。该污损标志指示该文件可能污损(例如,怀疑),原因在于在对文件写入任意更新之前系统可能崩溃,或者还可能能够将该文件的所有数据和错误代码写入存储350而系统在写入文件的清洁标志之前崩溃。在框425,发送向非易失性存储器写入污损标志的请求。例如,参考图3,污损标志管理器325可以指示存储管理器330针对所要更新的文件向存储350写入污损标志。在框430,接收污损标志已经被写入非易失性存储的指示。例如,参考图3,存储管理器330接收污损标志已经被成功写入存储350的指示。存储管理器330可以将该指示送至污损标志管理器325,其可以将该消息中继至更新管理器345。在框435,依据请求对文件进行更新。例如,参考图3,更新管理器345可以向存储管理器330发送写入针对文件的更新的请求,所述存储管理器330随后可以对文件进行相应更新。更新文件可以原位执行,通过写时拷贝执行,或者以之前所指示的其它方式执行。在框440,如果存在,可以执行其它动作。图5是总体上表示依据这里所描述主题的各方面的可结合将文件标记为清洁而进行的一些示例性动作的流程图。在框505,动作开始。在框510,确定与更新文件的未完成请求相关联的错误代码和数据要被写入非易失性存储。例如,参考图3,更新管理器345可以确定是时候将所有未完成请求以及与之相关联的错误代码刷新至存储350。这可以基于自上次这样做起所过去的时间段来确定,这是因为已经接收到关闭文件的请求,或者基于如之前所指示的各种其它因素来确定。在框515,如果存在,则所到来的更新文件的请求可以被保存在数据结构中。例如,参考图3,更新管理器345可以以队列、列表或其它数据结构保存到来的请求直至当前待决的错误代码和数据被写入非易失性存储。在另一种可替换方式中,如果在等待当前的待决错误代码和数据被写入非易失性存储的同时接收到另外的更新文件的请求,则这可以以与文件被标记为清洁并且接收到更新文件的请求的相同方式来对待。在那种情况下,任何更新文件的(多个)另外请求都被保存直至指示文件污损的数据被写入存储。换句话说,在这种可替换方式中,可以执行与图4的框410-435相关联的动作以确保文件在执行另外的更新之前被标记为污损。在框520,接收错误代码和数据已经被写入存储的指示。例如,参考图3,存储管理器330可以接收与未完成写入相关联的错误代码和数据已经被写入存储350的指示。作为响应,存储管理器330可以通知更新管理器345。在框525,清洁标志被设置为指示文件不再污损。例如,参考图3,清洁标志管理器335可以为文件设置清洁标志。在框530,发送向存储写入清洁标志的请求。例如,参考图3,清洁标志管理器335可以向存储管理器330发送向存储写入清洁标志的请求。作为响应,存储管理器330可以发送指令来将对应于清洁标志的数据写入存储350。如之前所提到的,存储管理器330可以在其它数据被发送到存储(例如,经由刷新)之前向存储发送对应于清洁标志的数据,或者可以将对应于清洁标志的数据怠惰地发送至存储。换句话说,可能与设置清洁标志和/或向存储写入清洁标志同时地依据一个或多个到来的请求对文件进行更新。如之前所提到的,清洁标志或错误代码可以在事务的上下文中被写入非易失性存储。在框535,如果存在,可以执行其它动作。图6是总体上表示依据这里所描述主题的各方面的可在恢复时进行的一些示例性动作的流程图。在框605,动作开始。
在框610,恢复动作可以开始。例如,参考图3,响应于系统故障,恢复管理器340可以开始关于存储350的文件的恢复动作。从错误检测组件315的观点来看,恢复动作可以被限制为指示每个文件是清洁还是可能污损。在指示文件清洁或可能污损之后,可以采取另外的动作来验证文件是否受损。在框615,针对文件读取清洁/污损标志。例如,参考图3,恢复管理器340可以针对存储在存储350上的文件读取清洁/污损标志。如果该标志指示文件被标记为清洁,则这指示与该文件相关联的错误代码在恢复之前被写入非易失性存储。如果该标志指示文件被标记为污损,则如之前所指示的,这指示该文件为可疑(例如,可能污损)。在框620,如果标志指示文件清洁,则在框625继续动作;否则在框630继续动作。在框625,作出文件为清洁的指示。例如,参考图3,恢复管理器340可以向恢复程序(未示出)指示文件清洁。在框630,做出文件为可疑的指示。例如,参考图3,恢复管理器340可以向恢复程序(未示出)指示文件可疑。在框635,如果存在,可以执行其它动作。如从之前详细描述所能够看出的,已经关于文件的错误检测对各方面进行了描述。虽然这里所描述主题的各方面易于受到各种修改以及可替换构造的影响,但是其某些所图示的实施例在附图中示出并且已经在上文中进行了详细描述。然而,应当理解的是,其并非意在将所请求保护主题的各方面限制到所公开的具体形式,而是与之相反,意图要覆盖落入这里所描述主题的各个方面的精神和范围之内的所有修改、可替换构造和等同形式。
权利要求
1.一种至少部分地由计算机实施的方法,该方法包括 接收更新文件的请求; 禁止对文件进行更新直至该文件的污损标志已经被写入非易失性存储; 设置污损标志以指示该文件可能污损; 发送向非易失性存储写入污损标志的请求; 接收污损标志已经被写入到非易失性存储的指示;并且 在接收到该指示之后,依据更新文件的请求对文件进行更新。
2.根据权利要求I的方法,进一步包括 确定与更新文件的未完成请求相关联的错误代码和数据要被写入到非易失性存储; 如果存在,则在数据结构中保留一个或多个更新文件的到来请求的指示; 接收与请求更新文件的一个或多个未完成请求相关联的数据已经被写入非易失性存储的指不;并且 接收与未完成请求相关联的错误代码已经被写入非易失性存储的指示; 设置清洁标志以指示该文件不再污损;并且 发送向非易失性存储写入清洁标志的请求。
3.根据权利要求2的方法,其中确定与更新文件的未完成请求相关联的错误代码和数据要被写入非易失性存储包括确定已经过去了预先定义的周期。
4.根据权利要求3的方法,进一步包括根据非易失性存储的一个或多个特性调整该预先定义的周期。
5.根据权利要求2的方法,进一步包括在事务的上下文中向非易失性存储写入错误代码和清洁标志。
6.根据权利要求I的方法,其中依据更新对文件进行更新包括原位更新文件而并不将文件或其任意部分复制到非易失性存储的另一个位置。
7.一种具有计算机可执行指令的计算机存储介质,所述计算机可执行指令在被执行时实施动作,包括 在文件系统中实施动作,在所述文件系统中至少一些文件通过原位写入进行更新而作为该文件系统上所保存文件的恢复的一部分,所述动作包括 读取指示文件是否被标记为污损的标志,该标志在允许针对文件的任何更新之前被事先写入非易失性存储; 如果该标志指示文件被标记为污损,则指示该文件可疑; 如果该标志指示文件未被标记为污损,则指示该文件清洁。
8.根据权利要求7的计算机存储介质,其中指示该文件清洁包括指示与该文件相关联的所有错误代码都被存储在非易失性存储上。
9.根据权利要求7的计算机存储介质,其中指示该文件可疑包括指示与该文件相关联的错误代码和/或与该错误代码相关联的更新数据可能没有被写入非易失性存储。
10.根据权利要求7的计算机存储介质,进一步包括 在恢复之前执行动作,包括接收更新文件的请求;并且禁止对文件进行更新直至该文件的污损标志已经被写入非易失性存储。
11.根据权利要求7的计算机存储介质,进一步包括定期向非易失性存储写入所有未完成更新以及与之相关联的错误代码,并且随后怠惰地发送写入标志以将该文件标记为清洁的请求。
12.在计算环境中,一种系统,包括 存储管理器,其可操作来对存储设备的文件进行存储并且提供对其的访问; 错误代码计算器,其可操作来确定存储设备的文件的错误代码,每个错误代码包括与对应于该错误代码的文件相关的数据,所述数据可用于检测与该文件或者其一部分是否被正确写入存储设备相关的一个或多个错误; 污损标志管理器,其可操作来在允许对文件进行任何更新之前向存储设备写入污损标志;和 更新管理器,其可操作来从更新请求器接收更新文件的请求,所述更新管理器可进一步操作来利用所述污损标志管理器在允许对所述存储管理器进行更新以依据请求更新文件之前将该文件标记为污损,所述更新管理器可进一步操作来利用所述错误代码计算器来响应于对文件做出的改变来确定该文件的错误代码,所述改变响应于更新文件的请求而对该文件所做出。
13.根据权利要求12的系统,进一步包括清洁标志管理器,其可操作来连同关联于文件的所有错误代码都已经被写入存储设备一起或者在其之后设置清洁标志并且将该清洁标志怠惰地或者在允许对文件进行另外更新之前写入存储。
14.根据权利要求12的系统,进一步包括恢复管理器,其可操作来从存储设备读取指示该文件是否被标记为污损的数据,并且如果所述数据指示该文件被标记为污损,则指示该文件可疑;否则指示该文件清洁。
15.根据权利要求12的系统,其中所述更新管理器可进一步操作来使得所述存储管理器连同允许对所述存储管理器进行更新一起对该文件的至少一部分进行重写。
全文摘要
这里所描述主题的各方面涉及针对文件的错误检测。在各方面中,在允许对清理文件的更新之前,向非易失性存储器写入将文件标记为污损的标志。随后,只要需要,该文件就可以被更新。定期地或者在某个其它时间,在针对该文件的所有未完成更新以及与该文件相关联的错误代码被写入存储之后,该文件可以被标记为清洁。在等待未完成更新和错误代码被写入存储的同时,如果接收到更新该文件的另外请求,则在允许该对该文件进行更新的另外请求之前可以将该文件再次标记为污损。写入与该文件相关的清洁标志的请求可以惰怠地完成。
文档编号G06F11/08GK102934089SQ201180029786
公开日2013年2月13日 申请日期2011年6月3日 优先权日2010年6月17日
发明者T·J·米勒, J·M·卡吉尔, W·R·蒂普顿, S·费尔马 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1