闪速类介质中存储事务记录的文件系统的制作方法

文档序号:6559658阅读:119来源:国知局
专利名称:闪速类介质中存储事务记录的文件系统的制作方法
技术领域
本发明主要涉及在计算机,嵌入式控制器等设备中使用的文件系统。更特别地,本发明涉及基于事务的文件系统,其中文件系统在闪速类介质中存储用于文件系统的事务记录。
背景技术
计算机,嵌入式控制器和其它基于微处理器的系统通常由多种不同的硬件元件构成。硬件元件可以包括处理器,I/O设备,人界面设备,等等。另外,这样的系统用存储器单元保存系统中使用的数据。存储器单元可以采用多种不同的形式,包括但不限于硬盘驱动器,软盘驱动器,随机存取存储器,闪速存储器,等等。
这样的系统的执行的高级应用程序必须经常与这些硬件元件进行无缝交互,包括存储器单元。为此,许多系统将操作作为应用程序与系统硬件之间的接口运行。文件系统软件可以作为部分操作系统被包含,或者可以将其提供为与操作系统交互的辅助软件元件。无论在哪种情况下,文件系统软件在存储器单元中组织数据,以备处理器和处理器执行的高级应用程序访问。
有许多不同的文件系统类别,因为有很多种实现文件系统的方法。例如,基于事务的文件系统是一个其中的文件系统总保持一致状态的系统,因为对文件系统结构和数据做的所有更新都作为事务文件的事务记录下来。更特别地,所有对文件系统的更新都在事务文件内作为事务进行,文件系统的内容通过连续应用所有已提交的事务动态重组。
事务文件中的事务或者被提交或者没有完成。例如,如果文件系统的操作由于电源故障这样的原因被中断,可以通过参考事务文件的内容恢复文件系统的状态。所有已提交的事务都被文件系统使用,所有没有完成的事务都被退回,将文件系统的状态恢复到试图更新之前的状态。
由于事务文件被用来恢复文件系统,它必须存储在某种形式的保持性数据存储设备上。为此必须使用非易失性集成电路存储设备。但是,很多这种非易失性集成电路存储设备的物理存储器组织属性使得难于将其用来执行事务文件。

发明内容
在此阐述了带有基于事务的文件系统的计算机系统。计算机系统包括处理器,处理器可以访问的保持性存储设备,和处理器可以执行的文件系统软件。保持性数据存储设备包含组织在多个毗邻的存储块中的闪速类存储介质,每个存储块中包含多个毗邻的存储页面。每个存储页面包含数据存储区和备用存储区。文件系统软件管理存储在保持性存储设备中的文件的文件数据和文件系统结构,并进一步保存存储在闪速类介质中的事务文件。事务文件包含多个事务记录,每个事务记录包含逻辑标题段和逻辑数据段。每个事务记录的逻辑标题段与闪速类存储介质相同块内的两个或多个毗邻的存储页面的备用存储区相对应,而每个事务记录的逻辑数据段与两个或多个毗邻的存储页面的数据存储区相对应。
在一个实施例中,每个事务记录的逻辑标题段对应于相同存储块内毗邻的第一和第二存储页面的备用存储区,而每个事务记录的逻辑数据段与第一和第二存储页面的数据存储区相对应。布置逻辑标题字段使得在文件系统启动过程中用来校验事务记录和/或重建文件系统的主要信息位于第一存储页面的备用区。执行事务记录的完全校验需要的次要信息可以置于第二存储页面的备用区内。
基于对下列附图和具体实施例的研究,本发明的其它系统,方法,特征和优点对本领域的技术人员将会或将变得显而易见。意图是将所有这样的附加系统,方法,特征和优点包含在本说明中,包含在本发明的范畴内,并由下列权利要求保护。


参照下列附图和说明可以更好地理解本发明。图中的元件不需要按比例,而是将强调重点放在说明本发明的原理。此外,在图中,相同的附图标记指示所有不同图中的相应部件。
图1是用闪速类介质实现基于事务的文件系统的计算机系统的方框图。
图2是示出可以在基于事务的文件系统中实现的文件和目录结构的一个示例的树型图。
图3是图解一种模式的方框图,在该模式中,元文件的记录可以经布置实现图2中所示的文件系统结构。
图4图解了逻辑布置基于事务的文件系统的事务文件中的事务记录的一种模式。
图5示出一种闪速类介质设备中存储器的物理结构。
图6和7图解了各种模式,在这些模式中,事务记录可以布置在闪速类介质设备中,以便在基于事务的文件系统中使用。
图8图解了多个可以用来生成扩展池(extents pool)的相关步骤,而扩展池又用在计算机在启动过程中创建的重建文件系统中。
图9到图11主要涉及用在图8所示的处理步骤中的各种记录类型的示范性格式。
图12主要涉及重生成文件层次结构的目录节点记录的示范性格式,其中重生成文件层次结构在重建文件系统中使用。
图13主要涉及重生成文件层次结构的文件节点记录的示范性格式,其中重生成文件层次结构在重建文件系统中使用。
图14图解了可以用来创建用在重建文件系统中的重生成文件层次结构的多个相关处理步骤。
图15是重建文件系统应用于图2所示的示范性文件和目录结构时的逻辑表示,该系统已经用图8到图14中所述的方式生成。
具体实施例方式
图1图解了可以用在示范性的基于事务的计算机系统10中的元件。如图所示,示范性系统10包括处理器15,只读存储器20,和保持性存储单元30。计算机系统10也可以包括随机存取存储器35,I/O接口40,和用户界面45。可根据由计算机系统10实现的具体功能在计算机系统10中定制特定元件。因此,除了处理器15之外,元件的存在或不存在是依照施加在计算机系统10上的设计标准而具体确定的。例如,计算机系统10采取嵌入式控制器等形式时可以省略用户界面45。
只读存储器20可以包含操作系统节点43,它控制处理器15和各种硬件元件执行的高级应用程序之间的交互,其中硬件元件包含存储设备20和35,保持性存储单元30,和接口设备40和45。操作系统节点43可以包含文件系统软件,用来组织存储在保持性存储单元30上的文件。作为选择,可以将文件系统软件提供为只与操作系统节点43交互的独立软件元件。在后面的情形中,与文件系统软件相对应的节点可以存储在只读存储器20,保持性存储单元30等设备中。计算机系统10通过I/O接口40与其它计算机和/或存储设备联网时,文件系统软件可以根据需要远程存储并下载到计算机系统10。但是,图1图解了文件系统软件47在只读存储器20中的存储。
保持性存储单元30可以采用多种不同的形式。例如,保持性存储单元30可以采用硬盘驱动器,软盘驱动器等形式。它也可以是非旋转介质设备的形式,例如以集成电路形式实现的非易失性存储器(例如,闪速存储器,等等)。另外,保持性存储单元30不需要限于单个的存储器结构。相反,保持性存储单元30可以包含相同类型的多个独立存储设备(例如,全部为闪速存储器)和/或不同类型的独立存储设备(例如,一个或多个闪速存储器和一个或多个硬盘驱动设备)。
存储在保持性存储单元30中的文件包括依照应用程序或操作系统节点43使用的预定格式解释的数据。例如,存储在文件中的数据可以组成可执行程序的软件代码,数据库记录的ASCII文本,与计算机系统10执行(或没有执行)的事务相对应的数据等。
在这个示范性系统10中,文件系统软件47用倒置层次结构组织存储在保持性存储单元30上的文件。图2是示出一种模式的图,在该模式中可以实现以50概略地示出的倒置层次结构。在许多文件系统使用的传统层次结构中,文件结构的顶级以根目录开始,每个目录向下指向包含在目录中的文件和子目录。但是,在示范性倒置层次结构50中,包含在父目录中的子文件和子目录向上指向父目录。根据文件开始其组织的位置,根目录可以构成文件系统结构的最低层。
示范性倒置层次结构在文件系统结构的顶层包含5个文件55,60,65,70和75。文件55,60和65包含在目录80内,而文件70和75包含在目录85内。因此,文件系统软件47组织文件系统使得表示子文件55,60和65的文件系统记录指向其父目录80的记录。同样,表示子文件70和75的文件系统记录指向其父目录85的记录。
在示范性倒置层次结构50的下一级,文件90和95与目录80一起包含在目录100内,而目录85可以包含在目录105内。因此,文件系统软件47组织文件系统使得表示子目录80和子文件90和95的文件系统记录指向其父目录100的记录。同样,表示子目录85的文件系统记录指向其父目录105的记录。
根目录100可以构成倒置层次结构50的主干。在本例中,目录100和105和文件115包含在根目录110内。因此,文件系统软件47组织文件系统使得表示子目录100和105和子文件115的文件系统记录指向其父目录105的记录。
图3中示出了一种模式,在该模式中,文件系统软件47可以组织文件系统的记录以实现倒置层次结构。在文件系统的这个实施例中,文件系统软件47可以生成一个或多个元文件,元文件包含与文件系统中使用的每个文件和目录相对应的记录。图3示出单个元文件120和示范性模式,在该模式中可以布置并格式化元文件120中的记录。在本例中,可以将元文件120布置成包含多个相同长度的记录条目125的表。每个记录条目125与可以在文件系统中使用的单个文件和目录相对应。文件系统软件47可以使用唯一的文件标志符,例如130所示,以寻址元文件120的相应记录125。如果每个记录条目125的长度相同,可以选择文件标志符130的格式使其可以直接或间接作为指向元文件120中所需记录的索引使用。例如,文件标志符130可以构成偏移值,该值可以与元文件120的第一记录的存储器地址位置一起使用,以计算具有所需目录/文件信息的元文件记录的第一位存储器地址位置。
在图3的示例中,文件标志符130指向元文件120中的记录135(条目7)。记录135在图3中以毗邻元文件120的扩展形式示出。记录135的扩展形式也图解了可以用于每个记录条目125的基本记录格式。在本例中,记录135包含多个不同字段,这些字段包含与记录表示的文件或目录相关的信息。这些信息,连同其它信息一起,与文件系统结构内文件或目录的逻辑位置相对应。
文件系统的倒置层次结构可以通过使用元文件记录格式实现,在这种格式中,每个元文件记录包含指向表示其父目录的元文件记录的指针。图3示出了元文件记录格式,在这种格式中,每个元文件记录包含存储其父目录的文件标志符的父标志符字段140。在本例中,元文件记录135的父记录标志符140与用来寻址记录145(条目9)的文件标志符相对应。记录145又包含与包含记录135表示的文件或目录的目录有关的信息。
每个元文件记录也可以包含与记录表示的目录或文件有关的的其它信息。在记录135的示范性记录格式中,使用了多个不同信息字段。这些信息字段包括模式字段150,用户标识字段155,组标识字段160,访问时间字段165,修改时间字段170,创建时间字段175,文件大小字段180和短名字段185。模式字段150可以用来确定记录表示的文件或目录是否是系统文件/目录,隐藏文件/目录,只读文件/目录,等等。用户标识字段155和组标识字段160包含有关所表示文件或目录的用户和组所有权的信息。访问时间字段165,修改时间字段170和创建时间字段175包含有关时间的信息,这些时间分别指所表示文件或目录最后被访问的时间,所表示文件或目录最后被修改的时间,和所表示文件或目录创建的时间。大小字段185包含有关记录表示的文件的大小的信息,对于目录记录为零。最后,短名字段185包含表示相应文件或目录的短文本名称的ASCII字符。短名字段185的长度可以经选择,例如,与POSIX标准一致。另外,每个记录包含与短名相对应的名称总和和/或散列值。这些散列值和/或名称总和可以被文件系统软件47用来快速查找特殊目录和/或文件记录。
元文件120中的每个记录还可以包含用于扩展记录标志符190的字段。扩展记录标志符190可以作为指向元文件120中的扩展记录的文件标志符使用。扩展记录可以包含记录表示的文件或目录的进一步信息,在有关具体文件或目录的所有信息不能放在给单个元文件记录分配的存储空间内的情况下特别有用。
图3图解了一种可以使用扩展记录标志符190的模式。在本例中,记录135的扩展记录标志符190与用来访问元文件120中的记录195(条目11)的文件标志符(fid)相对应。图3中与记录135的分解图毗邻地示出了记录195的分解图。该分解解了可以用于扩展记录的一种记录格式。如图所示,每个扩展记录可以包含它自己的父标志符字段200。但是扩展记录的父标志符字段200与指向扩展记录的记录的文件标志符相对应。在图3所示示例中,父标志符字段200的内容可以用来指回记录135(条目7)。
在分配给两个记录条目的存储空间不足以存放有关文件或目录的所有信息的情况下,扩展记录195可以用其自身的扩展记录标志符,例如用包含在记录195的字段205中的标志符,指向另外的扩展记录。尽管没有示出用于扩展文件标志符125指向的另外的扩展记录的格式,但另外的扩展记录同样可以包含指回记录195的父记录标志符。
包含在扩展记录中的信息类型可以在文件系统之间变化。在图3中,扩展记录195包含长名字段210,它包含与记录135表示的文件或目录的长名文本相对应的ASCII字符。可以在每个扩展记录,例如记录195的扩展区215保留另外的字段,以存储有关相应文件或目录的附加信息。
在前面的示例中,文件系统使用的扩展记录存储在元文件120中。但是,作为选择,扩展记录和任何另外的扩展记录也可以存储于单独元文件,多个元文件,等等。单独元文件不需要和元文件120或相互之间共享相同的存储介质。相反,元文件可以存储在处理器15可以访问的不同存储介质中。即使是基本元文件记录(没有相应扩展记录的目录和文件记录)也可以分布在多个文件和/多个存储介质之间。这样,尽管示范性系统的元文件记录存储在单个元文件中,元文件也可以采用在相同或不同存储介质上的很多单独文件的方式。
通过以倒置层次结构组织计算机系统10的文件和目录,可以实现文件系统的一个或多个优点。例如,文件系统能以任何一种模式实现,在这些模式中,典型文件和目录事务(即,移动文件/目录,删除文件/目录,创建文件/目录,复制文件/目录)作为单个元文件记录的修改,添加或删除而简单地完成。在本实施例中,例如,只需要改变父标志符140,使其指向新父目录的元文件记录,即可将记录135表示的文件/目录移动到层次结构中的另一个目录。这可以用对元文件120中记录135的单独一个写操作完成。
可以使用倒置层次结构来优化交互或基于日志的系统。示范性交互或基于日志的系统可以用图1所示的元件构成。在本例中,事务文件220可以保存在保持性存储单元30中,可以用来保存与文件系统的每个文件和目录相关的事务的记录。文件系统的更新基于包含在事务文件220中的事务记录简单地提交。在其最简单的一个实施例中,每个事务记录可以存储为单个逻辑页面,该页面被映射到保持性存储单元30的物理块或扇区。
图4中示出了一种模式,其中事务记录225被格式化以便在计算机系统10中只用。一般而言,事务文件220的每个事务记录225包含标题字段230和相应数据字段[230]xxx。标题字段230可以包含多个不同的子字段。图4中示出的子字段包含事务顺序字段240,文件标识字段245,事务状态字段250,集群高字段255,集群低字段260和集群数目字段265。另外,在标题230中可以包含另外的子字段以校验事务的完整性并修正错误。这些另外的子字段包含集群总和字段247,事务总和字段,检查并修正标题230的错误修正代码字段257,检查并修正数据235的错误修正代码字段259,和指示储存事务记录的存储位置状态的另外状态字段262。
标题字段230的每个子字段对文件系统软件47都有意义。在本例中,事务顺序字段240可以是文件系统软件47分配的单调增加的事务标志符。当将新事务记录加到事务文件220时,新记录的存储在事务顺序字段240中的值可以在之前较早的事务记录的事务顺序字段值上增加预定数量。因此,认为事务标志符值较大的事务记录加到事务文件220的时间比事务标志符值较小的事务记录迟。事务的这种流水排序,如事务顺序字段240的值(以及在某些情况下,事务文件220块内的事务记录位置)表示的那样,允许文件系统软件47按适当的顺序应用(即,提交)事务以维持文件系统内容的完整性。也可以使用其它对事务进行流水排序的方法。
文件系统软件47用事务状态字段250确定事务记录225的事务是否已经提交。一旦事务已经提交,文件系统软件47会阻止对提交记录225的进一步修改。这确保了文件系统的一致性,并允许文件系统将事务文件220存储于,例如,一次性写入介质,闪速类介质,等等。
标题230的文件标志字段245识别可以被事务记录225影响的文件。文件标识字段245的格式可以经选择使之与元文件记录中使用的文件标志符相同。集群高字段255和集群低字段260可以被文件系统软件47用来确定数据235被写入被识别文件的起始位置,而集群数目字段265可以用来确定有多少被识别文件的集群将被数据235覆盖。
如上所述,保持性存储单元30可以包含一个或多个闪速存储器设备。闪速存储器将信息存储在逻辑门中,称为“存储单元”,每个存储单元通常存储一位信息。闪速类介质技术的最新发展可以使这种设备的每个单元存储量多于一位,有时被称作多级单元设备。另外,闪速存储器是非易失性的,这意味着从设备撤掉电源时,存储单元的内容不会丢失。
尽管闪速设备技术不断发展,主要技术包括NAND闪速存储器和NOR闪速存储器。NOR闪速设备NAND闪速设备通常在用于每个存储单元的逻辑门类型上有所不同。图5示出了一种NAND闪速存储设备275的示范性逻辑架构270。如图所示,设备275上的可用存储器可以组织到毗邻的物理块280中,每个物理块有相同数量的存储单元(即16K字节)。NAND闪速存储设备275进一步将每个毗邻块280分割成特定数量的物理扇区或页面290。每个物理页面290又可以进一步分割成数据区295和备用区300。数据区295通常被保留以存储数据,而备用区300通常被保留以用于与存储在数据区295中的数据有关的信息的维护。元信息可以包含,例如,用于扇区内容校验和修正的错误修正代码,循环冗余校验数据,等等。
除每个页面的备用区位于数据区的对面这一点之外,NOR闪速设备的架构与图5中所示的类似。NOR闪速设备还提供随机访问读取和编程操作,允许各个存储位置读或被读。但是,一旦对块中的存储位置进行了写操作,NOR闪速设备不允许块被重写小于块的间隔尺寸,NOR闪速设备不允许在比块小的间隔尺寸进行删除操作。
在NOR和NAND闪速设备中的数据区295和备用区300通常都设置为特定尺寸。例如,图5中的示范性NAND闪速设备275的每个页面290都包含512字节的数据区295和16字节的备用区300,页面大小总共为528字节。NAND闪速设备275还在每个块280使用32个页面290。其它的页面大小可以用在计算机系统10中,并且可在市场上获得。例如,许多NAND设备包含具有64个页面的块,其中每个页面存储2112个字节,使得每个页面的总数据区为2048字节,每个页面的备用区为64字节。
象NAND闪速设备275这样的闪速存储设备,通常每次在存储器的整个块280上进行删除操作。删除操作将块280内的所有位设置为一致状态,通常设置为二进制值“1”。在闪速设备275的删除块280上的编程操作只能改变一整个页面290的内容(尽管NOR闪速设备可以用稍微不同的方式编程)。一旦NAND闪速设备的页面290被编制程序,其状态直到再次删除整个块280才能进一步改变。对闪速设备275的内容的读操作也在页面级进行。
图6图解了一种模式,其中事务记录可以组织在象NAND闪速设备275这样的闪速存储设备中。在本例中,每个事务记录305可以由两个或多个毗邻的逻辑页面315组成。每个逻辑页面315又由闪速设备275的块280的两个或多个物理页面290组成。事务记录310的元数据信息可以存储在备用区300,可以包含一些与图4的标题230相关的字段。根据每个页面290的备用区300的大小,元数据信息可划分到事务记录310的多个备用区300中。图6中示出两个连续物理页面290的备用区300之间的元数据信息分割。图6示出的事务记录也可以经组织使得每个事务310对应单独一个逻辑页面315,该逻辑页面又由,例如,两个毗邻的的物理页面290组成。
图7示出闪速设备275的物理页面290可以与每个逻辑页面315一一对应的可替换结构。该结构与图6所示结构的不同之处在于所有元数据信息320可以存储在事务310的第一物理页面290的一个单个备用区300中。使用大容量闪速设备时,这类结构尤其适用。但是,也可以在事务记录的两个毗邻的物理页面290的备用区300之间分割元数据信息320。
存储在相同设备块290中的事务记录310的顺序标志符可以有相同的值。在这样的情况下,顺序标志符提供可以用来比较不同设备块的事务记录之间的时间关系的流水信息。存储在相同块中的有关事务记录310的流水信息可以由块290内的事务记录310的偏移位置导出,较晚发生的事务记录310发生较大偏移。
系统10启动或接通电源之后,文件系统的完整性可以通过在随机存取存储器35中生成文件系统的重建版本来校验。在图1的330概略地示出的重建文件系统可以用存储在事务文件220中的有效执行事务和由存储在元文件120中的文件/目录信息生成。图1中,重建文件系统330包括重生成的文件层次结构335和扩展表340。
图8到图11示出了一种生成扩展表340的方式。图8图解了多个可以用来生成扩展池340的相关处理步骤,而图9到图11图解了在这些操作中生成和使用的各种表和阵列的逻辑组织。
扩展表340的生成可以在图8的步骤345通过扫描事务文件220的块以查找所有事务记录开始。块可以按从最低顺序块到最高顺序块的顺序扫描,其中可以找到提交的事务记录。在块内找到事务时,辨识每个有事务记录的设备块的块记录阵列可以在步骤350生成。
文件系统软件47扫描事务的事务文件220的块来查找事务时,文件系统软件会遇到作为已经停止使用的事务的结果被删除,或因为块没有被指派用在文件系统中而被删除的块。可以构造事务标题使得带有设置为删除值(通常为二进制“1”)的所有标题位的有效事务不存在。文件系统软件47扫描事务文件220的块时,会跳过任何标题指示删除块的事务。这个标题不变量是删除值的反数时,可以通过将单个位用作指示事务在被文件系统使用的标记来加强(enforce)。一旦在事务标题中查找这种删除标识值,可以跳过对块中剩余页面的扫描,因此节省了否则将用来访问删除页面的时间。整个系统的启动时间可以相应缩短。
图9中示出示范性块阵355的组织结构。每个块阵记录360包含顺序字段365,开始事务字段370和事务数目字段375。顺序字段365可以用来存储用于存储在块中的事务记录的事务标志符值。开始事务字段370可以用来在块中存储第一事务的索引,事务数目字段375可以用来存储在块中找到的事务的数目。
在图8的步骤380,文件系统软件47在块阵355中生成用于每个记录条目的事务编目表。图9图解了可以组织事务编目表385的一种方式。在本例中,块阵355的每个记录360指向事务编目表385的至少一个事务编目记录390。更特别地,可以为由给定块阵记录360表示的块中找到的每个事务生成事务编目记录390。存储在给定块阵记录360的事务数目字段375中的值可以与给定块中的事务数目相对应并指明多少个给定块的记录390会被加到事务编目表385。
事务编目表385的每个事务编目记录390可以有相同的记录长度,包含相同的记录字段。图9的记录390中使用的示范性字段包括文件集群偏移字段395,设备集群索引字段400,集群数目字段405和文件标志符/索引字段410。文件集群偏移字段395可以用来辨识块内事务的物理位置。设备集群索引字段400可以用来辨识事务数据开始的位置。集群数目字段405可以用来辨识事务内存在多少个数据集群。最后,如下面将阐明的那样,文件标志符/索引字段410有多个用途。但是,首先,存储在文件标志符/索引字段410中的值可以用来辨识应用事务的文件。存储在字段410中的文件标志符值可以直接与用来参考元文件120中的记录的文件标志符相对应。一旦完成步骤380,块阵355的记录360将按照例如增加的块顺序组织,而每个块阵记录360的记录390将按增加的页面顺序组织。
在步骤415,基于存储在顺序字段365中的值对块阵355的记录360排序。可以执行该操作以按流水顺序排列事务编目表385的记录390(即,其中相应事务被应用于文件系统的文件的顺序)。
然后,可以用块阵355的排序记录和事务编目表385在RAM35中生成存储文件节点信息的临时文件440,其中的文件节点信息与文件系统的事务记录相对应。为此,可以首先将相应于文件系统根目录的基本记录加到临时文件440。用来在临时文件440中产生根目录节点的信息可以从对应存储在元文件120中的根目录文件的记录获得。
图10的445概略地示出了安排临时文件440中文件节点记录的一种方式的逻辑图。在本例中,每个文件节点记录450包括文件节点字段455和起始字段460。文件节点字段455的内容可以用来辨识可以与事务编目表385的各种事务记录390链接的文件节点。为简易起见,文件节点字段455的内容可以有与用来访问元文件120的相应记录条目125的文件标志符相同的格式。起始字段460的内容可以用来辨识事务编目表385中第一事务记录390的位置,其中的事务编目表385与文件节点字段455中辨识的文件相对应。这样,每个文件节点记录450辨识文件系统内的文件和与被辨识文件相关的第一事务的位置。
在步骤420,事务编目表385和块阵355的每个分类记录360和390被反复检查以确定临时文件440是否包含与存储在文件标志符/索引字段410中的文件标志符相对应的文件节点记录450。如果在临时文件440中没有找到有与事务记录390相同的文件标志符的文件节点记录450,那么可以在步骤430创建新的文件节点记录450。一旦临时文件440中存在与事务编目记录390相对应的文件节点记录450,事务编目记录390就可以链接到文件节点记录450的事务列表。在本例中,事务编目记录390可以在图8的步骤435链接到文件节点记录450的事务列表。事务编目记录390可以链接到文件节点的事务列表的方式取决于事务编目记录390是文件节点的第一事务编目记录还是文件节点的后继事务编目记录。如果它是文件节点的第一事务编目记录,那么可以更新文件节点记录450的起始字段460以辨识这个第一事务编目记录390的起始位置。这样,文件节点记录450的起始字段460的内容可以用来指向事务编目表385中的位置,而事务编目表385又包含应用于文件的第一事务的扩展信息。事务编目记录390可以附加到文件节点的现有事务编目记录时(即,它不是文件节点的第一事务编目记录时),文件标志符/索引410的功能可以改变。更特别地,字段410的功能和值可以改变使它指向与文件节点关联的最后事务记录390。图10中对此进行了说明,其中文件节点记录450的起始字段460指向事务编目记录390的起始部分。记录390的文件标志符/索引字段410又指向事务编目记录465的起始部分,事务编目记录465包含关于由文件节点记录450所表示文件的第二事务位置的信息。同样,文件节点记录470的起始字段460指向事务编目记录475的起始部分。事务编目记录475的文件标志符/索引字段410指向事务编目记录480的起始部分,它包含关于由文件节点记录470所表示文件的第二事务位置的信息。
一旦将事务编目表385的所有事务编目记录以适当的方式与相应的文件节点记录链接,每个文件节点的事务编目记录在步骤485被反复检查以去除所有未执行参照和/或坏文件事务的事务编目记录。这种事务编目记录的去除可以用多种不同的方法完成。例如,文件系统软件47可以检查最后发生事务的状态字段以确定它有没有提交。如果事务已经提交,可以不改动事务编目表385中的相应记录。但是,如果事务还没有提交,事务编目表385中的相应记录可以去除或忽略。
为了加速这种事务提交检查,文件系统软件47只需确保最后发生的事务已经提交。可以跳过所有其它记录的提交检查,因为只有最后发生的事务受电源故障,系统不正常关闭等的影响。通过跳过所有其它记录的提交检查,系统启动所需的时间可以显著减少。
尽管步骤485作为部分线性顺序示出,它也可以在处理每个事务编目记录以便并入相应文件节点时执行。例如,文件系统软件47可以检查包含在每个事务记录标题中的状态信息以确定事务是否已提交。这种检查可以在每个事务记录用来生成相应事务编目记录时发生。一旦文件系统软件47发现事务还没有提交,那么就不需要对图8步骤420到485中的事务编目记表385进行进一步处理。
在步骤490,扩展池340中生成每个文件节点的条目。图11中示出了可以完成这种操作的一种方式。在本例中,每个文件节点的起始字段460的内容可以经修改使它现在作为扩展索引字段487运行。扩展索引字段487指向扩展池340中的第一位置,该扩展池包含在关于文件的第一事务的事务数据位置的信息。每个扩展记录490可以包含集群数目字段495,起始集群字段500和下个扩展字段505。起始集群字段500辨识设备270中的起始位置,在该处存储了与文件节点相对应的文件的第一文件事务。集群数目字段495辨识有多少个设备270的毗邻的集群用于存储文件事务。下个扩展字段505辨识文件的下个扩展记录的扩展索引,该文件由文件节点表示。在本例中,扩展索引487指向扩展记录510,而扩展记录510的下个扩展字段505指向扩展记录515。
用来生成扩展池340的记录的数据至少部分来源于存储在事务编目记录385中的数据。在这里示出的示例中,扩展池340可以是事务编目表385的更简洁形式。为此,如果事务编目记录是相同文件节点的一部分,文件系统软件47可以将有毗邻的数据的事务编目记录合并到单个扩展记录条目。同样,不再需要保存RAM35中的块阵355。因此,可以从RAM35中丢弃块阵355。
事务文件220中事务的完整性在多个用来生成扩展池340的步骤的执行过程中检查。例如,事务记录的完整性检查可以在图8的步骤350或380的过程中执行。公用数据检查包括CRC和ECC技术。
为了缩短计算机系统10的启动时间,错误检查技术可以限于包含在某些事务的标题中的信息。如果在图8示出的启动程序中发现事务,文件系统软件47会辨识事务是否影响文件数据或元数据,例如元文件120中的目录结构信息。这种区别可以基于与事务关联的文件标志符。通常,元数据可以用公知的标志符表示并硬编码到文件系统软件47(例如,它们可以将元文件120识别为事务的对象文件)。由于只需用元数据来确保启动之后文件系统处于一致状态,事务数据部分的数据检查技术只在事务涉及这些元数据的时候执行。如果事务不涉及元数据的改动,数据检查技术最初可以只限于标题信息的检查。在图6示出的事务记录格式中,在系统启动时必须校验的主要标题信息可以存储在每个事务记录310的第一备用区300。这允许文件系统软件47跳过包含在每个事务记录310第二备用区中的标题信息的校验,从而进一步优化了启动程序。如下面进一步详细解释的那样,每个事务数据部分的错误检查可以推迟到启动程序完成之后文件系统软件47首先访问相应文件的时间。
事务记录的任何启动验证都可以通过将错误检查仅限于一系列连续事务的第一事务标题来进一步优化。在事务文件220的启动扫描过程中,发现事务标题指示跟随了许多相同文件的连续事务记录,一旦已经校验了顺序的第一事务记录的标题,可以跳过顺序中随后事务标题的校验。标题信息的扫描和校验可以用跟随最后的随后事务的下个块重新开始。
在RAM35中生成重建文件系统330的下个主要步骤包括重生成文件层次结构335的创建。在本例中,重生成文件层次结构335可以由文件和目录节点记录组成。图12的520概略地示出了目录节点记录的示范性格式,而图13的525概略地示出了文件节点记录的相应示范性格式。
目录节点记录520包括文件系统软件47使用的许多不同字段。更特别地,目录节点记录520可以包含兄弟字段530,文件标志符字段535,父标志符字段540,子字段545和目录命名字段550。同样,图13的文件字节记录包含文件系统软件47使用的许多不同字段。文件节点字段可以包含兄弟字段555,文件标志符字段560,扩展索引字段565和名称总数字段570。
由于包含在元文件120的记录中的数据可以用在重生成文件层次结构335的创建中,元文件记录布置在元文件120中的方式会影响系统启动性能。为此,元文件120的记录作为长度相同的毗邻的记录布置在单个元文件中,并全都存储在相同存储介质中。这种布置提高了文件系统软件47可以访问元文件数据的速度,并减少了这种访问需要的处理数量。
图14示出了一个可以用来生成重生成文件层次结构335的每个文件节点记录525和目录节点记录520的字段的步骤顺序。图解的顺序可以经执行用于每个元文件120中的记录,可以在步骤575开始。在步骤575,可以基于元文件120内的第一记录条目的偏移生成文件标志符。可以在步骤580检查重生成文件层次结构335以确定与文件标志符相对应的文件节点记录525或目录节点记录520是否已经存在。如果相应的记录520或525不存在,可以在重生成文件层次结构335中创建新的记录文件。新创建记录的格式取决于文件标志符是否与元文件120中的文件条目或目录条目相对应。文件系统软件47会作出这个确定并采用适当的记录格式520或525。
在步骤585,新创建记录的字段用在元文件120中找到的文件/目录的属性生成。如果新创建的记录与目录节点相对应,父标志符字段540和目录名称字段550用父文件标志符中的数据和元文件120中相应记录的短名字段生成。如果新创建记录与文件节点相对应,可以用直接存储在元文件120中的相应记录的文件名数据中的或源于此处的数据生成名称总数字段570。可以用在相应文件节点记录450的扩展索引字段487中找到的数据生成扩展索引字段565(详见图11)。
如果新创建的文件与目录节点相对应,可以在步骤590进行贯穿重生成文件层次结构335的搜索以确定父节点是否存在。如果父节点不存在,相应于父节点的目录记录可以加到重生成的文件层次结构335。
在步骤595,可以将新生成的文件/目录链接到父目录节点的树型结构。如果新生成文件/目录的子字段545指示父目录没有子代,可以重新设置父目录记录的子字段545的值使之指向新生成文件/目录,新生成文件/目录记录的兄弟字段555或530可以经设置指示新生成文件/目录记录没有任何兄弟。如果父节点记录的子字段545指示父目录节点有子代,新生成文件/目录记录的兄弟字段565或530可以经设置指向父目录的现有子代,父目录的子字段545可以经设置指向新生成的文件/目录记录。如果新生成的文件/目录记录与目录节点相对应,新生成目录记录的父标志符字段540可以经设置指向父目录节点。
在步骤600,文件系统软件47递归地上升父节点,从新生成文件/目录记录的父目录开始,并执行一系列的处理步骤直到到达根节点。在这点,可以将新生成文件/目录记录的父目录节点作为当前目录节点。在图14示出的示范性程序中,文件系统软件47检查重生成的文件层次结构335以确定与当前目录的父节点相对应的目录节点记录是否存在。该程序可以在步骤605和610执行。如果在重生成的文件层次结构335中不存在这样的目录记录,可以在步骤615生成新的目录记录。然后新生成目录记录的子字段545可以经设置指向当前目录节点记录,作为新目录记录的唯一子代。在步骤620,当前目录节点记录的父标志符字段540可以经设置指向新生成的目录记录。在步骤625中,当前目录记录的兄弟字段530可以经设置指示没有当前目录节点记录的兄弟。
如果在步骤605和610执行的检查指示重生成文件层次结构335中存在与当前目录的父节点相对应的目录记录,那么可以在步骤630将当前目录节点链接到父目录节点的大体树型结构。为此,当前节点的父标志符字段540可以经设置指向重生成文件层次结构335中父节点记录的位置。当前目录节点的兄弟字段530可以经设置指向与父节点记录的子字段545所指向的相同的记录。最后,父目录节点的子字段545可以经设置指向当前目录节点的位置。
在步骤635,文件系统软件47可以检查以确定递归目录处理是否已完成。在本例中,递归目录处理在该处理上升到根结点时完成,根结点有唯一的可识别文件标志符。如果在步骤635中已经到达根节点,元文件120中下个文件记录条目的处理可以在步骤640开始,步骤640将处理的控制返回到步骤575。如果在步骤635中没有到达根节点,那么上升文件/目录层次结构中下个父节点的处理可以在步骤605开始重复。
图15是重建文件系统330的逻辑图,与图8到14的处理步骤在有图2所示文件层次结构的文件系统中的应用相对应。在本例中,线665,670,675,和680分别表示与目录节点记录的父标志符字段540的内容相对应的指针,其中的目录节点记录表示目录105,100,80和85。线645,650,660,655和652分别表示与目录节点记录的子标志符字段545的内容相对应的指针,其中的目录节点记录表示目录110,100,105,80和85。线685,690,695,和705分别表示与目录节点记录的兄弟标志符字段530的内容相对应的指针,其中的目录节点记录与目录100,105和80相对应。线700,705,710和715分别表示与文件节点记录的兄弟标志符字段555的内容相对应的指针,其中的文件节点记录与文件90,55,60和70相对应。
图15中还图解了用重建文件系统330访问保持性存储单元30的事务文件220中的数据的一种方式。如图所示,文件系统软件47给软件将访问的文件节点记录提供文件标志符730。在本例中,文件标志符730指向表示文件55的文件节点记录。然后文件系统软件47将文件节点记录的扩展索引565的内容用为到扩展池340的索引以查找事务文件220中文件的数据的位置。但是,可以看出,文件系统软件47能以除图15图解的之外的多种不同方式使用重建文件系统330的内容。
如上所述,不在启动过程执行对文件完整性的完全校验以便可以加速启动程序。相反,文件系统软件47可以推迟完全校验直到文件第一次被访问。为此,文件系统软件47可以保存一个表,该表指示出每个文件的完整性是否已被完全校验。可替换地,文件系统软件47可以使用重生成文件层次结构335中每个文件节点记录的一个或多个位以指示文件完整性是否已完全校验。文件系统软件47可以在启动之后文件至少第一次被访问时检查该指示器。如果指示器指示文件没有完全校验,那时可以执行文件的完全校验。可替换地,由于已经校验了文件事务的标题,文件系统软件只需校验文件每个事务的数据部分的完整性。校验程序可以包括一个或多个CRC程序,一个或多个ECC程序,等等。
如图5,6和7所示,每个事务记录中的许多不同字段可以用来校验整个事务记录的完整性。如果完整性检查失败,使用相关错误修正码的应用程序不能修正错误,那么可以将程序错误报告给作出访问文件内容要求的应用程序或系统。
描述本发明的各种实施例时,对本领域的技术人员来说很明显的一点是,在本发明范围内的更多实施例和实施办法是可能的。因此,除依照所附权利要求及其对等物之外,本发明并不受约束。
权利要求
1.一种计算机系统,包括处理器;可由所述处理器访问的保持性数据存储设备,所述保持性数据存储设备包括闪速类存储介质,其中所述闪速类存储介质包括多个毗邻的存储块,并且所述多个毗邻的存储块中的每一个都包括多个毗邻的存储页面,且其中所述多个毗邻的存储页面中的每一个都包括数据存储区和备用存储区;可由所述处理器执行的文件系统软件,以管理存储在所述保持性数据存储设备上的文件的文件数据和文件系统结构;被所述文件系统软件保存在所述闪速类介质中的事务文件,其中所述事务文件包括多个事务记录,且每个事务记录包括逻辑标题段和逻辑数据段,其中每个事务记录的所述逻辑标题段与相同块内的两个或多个毗邻的存储页面的备用存储区相对应,而每个事务记录的所述逻辑数据段与所述两个或多个毗邻的存储页面的数据存储区相对应。
2.一种计算机系统,包括处理器;可由所述处理器访问的保持性数据存储设备,所述保持性数据存储设备包括闪速类存储介质,其中所述闪速类存储介质包括多个毗邻的存储块,并且所述多个毗邻的存储块中的每一个都包括多个毗邻的存储页面,且其中所述多个毗邻的存储页面中的每一个都包括数据存储区和备用存储区;可由所述处理器执行的文件系统软件,以管理存储在所述保持性数据存储设备上的文件的文件数据和文件系统结构;被所述文件系统软件保存在所述闪速类介质中的事务文件,其中所述事务文件包括多个事务记录,且每个事务记录包括逻辑标题段和逻辑数据段,其中每个事务记录的所述逻辑标题段与第一存储页面的备用存储区和第二存储页面的备用存储区相对应,且所述第一和第二存储页面在同一存储块内毗邻,并且其中每个事务记录的所述逻辑数据段与所述第一和第二存储页面的数据存储区相对应。
3.如权利要求1所述的计算机系统,其中每个事务记录的所述逻辑标题段包括事务标识字段,所述事务标识字段帮助对文件的一个或多个相关事务记录按照流水顺序排序。
4.如权利要求3所述的计算机系统,其中所述事务标识字段包括由所述文件系统软件分配的单调增加的事务标志符。
5.如权利要求1所述的计算机系统,其中所述文件系统软件基于所述相同块内的事务记录的偏移值,导出存储在保持性数据存储设备的所述块中的事务记录的流水信息。
6.如权利要求1所述的计算机系统,其中每个事务记录的所述逻辑标题段包括事务状态字段,该字段可以被所述文件系统软件访问,以确定与各个事务记录相对应的事务是否已被提交。
7.如权利要求1所述的计算机系统,其中每个事务记录的所述逻辑标题段包括存储器状态字段,用来指示存储各个事务记录的存储块的状态。
8.如权利要求1所述的计算机系统,其中每个事务记录的所述逻辑标题段包括存储器状态字段,用来指示存储各个事务记录的存储块是否处于被擦除状态。
9.如权利要求1所述的计算机系统,还包括可由所述文件系统软件访问的元文件。
10.如权利要求9所述的计算机系统,其中所述元文件包括多个元文件记录,并且其中每个所述元文件记录包括文件标识字段。
11.如权利要求10所述的计算机系统,其中每个事务记录的所述逻辑标题段包括文件标识字段。
12.如权利要求11所述的计算机系统,其中所述逻辑标题段的文件标识字段与所述元文件的文件标识字段相对应。
13.如权利要求1所述的计算机系统,其中所述闪速类介质包括闪速存储器,所述闪速存储器选自NOR闪速存储器和NAND闪速存储器中的一种。
14.如权利要求1所述的计算机系统,还包括存储在可由所述处理器访问的随机存取存储器中的重建文件系统。
15.如权利要求14所述的计算机系统,其中所述重建文件系统以倒置层次结构的方式来组织文件和目录。
16.如权利要求2所述的计算机系统,其中每个事务记录的所述逻辑标题段包括事务标识字段,所述事务标识字段帮助对文件的一个或多个相关事务记录按照流水顺序排序。
17.如权利要求16所述的计算机系统,其中所述事务标识字段包括由所述文件系统软件分配的单调增加的事务标志符。
18.如权利要求2所述的计算机系统,其中所述文件系统软件基于所述相同块内的事务记录的偏移值,导出存储在保持性数据存储设备的所述块中的事务记录的流水信息。
19.如权利要求2所述的计算机系统,其中每个事务记录的所述逻辑标题段包括事务状态字段,该字段可以被所述文件系统软件访问,以确定与各个事务记录相对应的事务是否已被提交。
20.如权利要求2所述的计算机系统,其中每个事务记录的所述逻辑标题段包括存储器状态字段,用来指示存储各个事务记录的存储块的状态。
21.如权利要求2所述的计算机系统,其中每个事务记录的所述逻辑标题段包括存储器状态字段,用来指示存储各个事务记录的存储块是否处于被擦除状态。
22.如权利要求2所述的计算机系统,还包括可由所述文件系统软件访问的元文件。
23.如权利要求22所述的计算机系统,其中所述元文件包括多个元文件记录,并且其中每个所述元文件记录包括文件标识字段。
24.如权利要求23所述的计算机系统,其中每个事务记录的所述逻辑标题段包括文件标识字段。
25.如权利要求24所述的计算机系统,其中所述逻辑标题段的文件标识字段与所述元文件的文件标识字段相对应。
26.如权利要求2所述的计算机系统,其中文件的所述文件系统结构包括文件和目录的层次结构。
27.如权利要求2所述的计算机系统,其中所述闪速类介质包括闪速存储器,所述闪速存储器选自NOR闪速存储器和NAND闪速存储器中的一种。
28.如权利要求2所述的计算机系统,还包括存储在可由所述处理器访问的随机存取存储器中的重建文件系统。
29.如权利要求28所述的计算机系统,其中所述重建文件系统以倒置层次结构的方式组织文件和目录。
全文摘要
阐述了具有基于事务的文件系统的计算机系统。其包含处理器,处理器可以访问的保持性数据存储设备,和可被处理器执行的文件系统软件。保持性数据存储设备包含闪速类存储设备,其被组织成多个毗邻的存储块,每个存储块包含多个毗邻的存储页面。每个存储页面包含数据存储区和备用存储区。文件系统软件管理存储在保持性数据存储设备上的文件的文件数据和文件系统结构,并保存存储在闪速类介质中的事务文件。事务文件包含多个事务记录,其每个包含逻辑标题段和逻辑数据段。每个事务记录的逻辑标题段对应闪速类存储介质的同一块内的两个或多个毗邻存储页面的备用存储区,每个事务记录的逻辑数据段对应两个或多个毗邻存储页面的数据存储区。
文档编号G06F12/00GK1983266SQ200610093180
公开日2007年6月20日 申请日期2006年6月23日 优先权日2005年7月1日
发明者D·道奇 申请人:Qnx软件操作系统德国有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1