具有倒置层次结构的文件系统的制作方法

文档序号:6559657阅读:95来源:国知局
专利名称:具有倒置层次结构的文件系统的制作方法
技术领域
本发明主要涉及计算机,嵌入式控制器等设备中使用的文件系统。更特别地,本发明涉及具有倒置层次结构的文件系统。
背景技术
计算机,嵌入式控制器,和其它基于微处理器的系统通常由多个不同的硬件元件构成。硬件元件可以包括处理器,I/O设备,人界面设备,等等。另外,这些系统用存储器单元保存系统中使用的数据。存储器单元可能具有多种不同形式,包括但不局限于硬盘驱动器,软盘驱动器,随机存取存储器,闪速存储器,等等。
这些系统中执行的高级应用程序必须经常与硬件元件进行无缝交互,包括存储器单元。为了达到这个目标,许多系统将操作系统作为应用程序和系统硬件之间的接口运行。文件系统软件可以作为操作系统的一部分,或者将其提供为与操作系统结合的辅助软件元件。在任何情况下,文件系统软件组织存储器单元内的数据以备处理器和处理器执行的高级应用程序访问。
在传统文件系统中,文件系统软件以层次结构组织存储器单元内的数据,该层次结构包括数据文件和相应贮存器,称为目录。传统层次结构是具有称为根目录的开始目录的倒树形式。另外的目录和文件依赖于根目录。另外的目录又可以进一步包含子目录和文件。
文件系统软件包含一个或多个元文件,这些元文件包括用来对应文件系统中每个文件/目录条目的名称和属性的记录。这些属性包括,例如,条目是数据文件还是目录,只读文件,隐藏文件,系统文件,等等。元文件中的记录也可以包含或指向物理访问存储在存储器单元中的文件数据所需要的信息。
用传统文件系统层次结构组织文件系统时,处理器必须在改变数据文件或目录时更新元文件中大量的不同记录。例如,当文件或目录创建,重命名,或从一个目录移动另一个目录时,必须更新元文件记录。在这些情况下必须更新大量元文件中的不同记录增加了这样的可能性在例如系统发生断电或其它硬件或软件故障的情况下,不能对给定记录进行更新。另外,以传统方式组织文件时,在出现这样的故障之后重建文件系统可能是复杂又耗时的。因此,需要对传统文件系统层次结构做替换。

发明内容
本发明公开了在传统文件系统层次结构基础上改进的计算机系统。计算机系统包括处理器和处理器可以访问的保持性数据存储设备。系统还可以包括由处理器执行的文件系统软件。文件系统软件可以用来将保持性数据存储设备的文件组织为多个包含在元文件中的记录。在元文件内,文件系统的文件和目录可以倒置层次结构来组织。在倒置层次结构中,与父目录的子目录和子文件相应的记录直接指向与父目录相应的元文件中的记录。在文件系统的一个实施例中,元文件中的各个记录可以分别用文件标志符设定地址。各个记录每一个又可以包括与其父目录记录的文件标志符相应的父标志符。
如果需要,与由元文件中的记录表示的文件/目录相关的事务可以简单地执行,而不用对其它相关父或子记录做相应的修改。在优化实施例中,只更新一个元文件记录,其中的文件或记录被创建,重命名,或从一个目录移动到另一个。
文件系统的倒置层次结构也可以根据需要很容易地扩展以增加与元文件中的文件或目录记录相关的信息的数量。例如,每个元文件记录可以包括指向相应的扩展文件记录的扩展文件标志符,该扩展文件记录存储在元文件中。扩展记录可以包括与文件或目录相应的附加信息,该文件或目录不能放在分配给元文件中单个文件或目录记录的存储空间内。
文件系统的倒置层次结构也非常适合在基于交互的系统中使用,尤其是其中的系统事务文件存储在闪速介质上的系统。在这样一个基于事务的系统中,文件系统的重建版本可以在系统启动过程中在随机存取存储器中生成。至少有一部分重建的文件系统可以从存储在元文件中的文件和目录记录生成。元文件中的记录以倒置层次结构被组织,可以用来促进有效的启动操作并优化重建文件系统的生成。
在对下列图形或详细说明研究之后,本发明的其它系统,方法,特征和优点对于本领域的技术人员将会或将变得明显。本文的意图是将所有这样的附加系统,方法,特征和优点包括进本说明,包括进本发明范畴,并用下列权利要求保护。


参照下列附图和说明可以更好地理解本发明。图中的元件不需要按比例,强调重点应放在对本发明原理的说明上。此外,图中,给不同图中的相应部件分配相同的附图标记。
图1是计算机系统方框图,该系统可以实现具有倒置层次结构的文件系统。
图2是示出文件系统内文件和目录的安排的一个范例的树型图,该文件系统具有倒置层次结构。
图3是说明一种实现方式的方框图,在该方式中,元文件里的记录经安排用来实现具有倒置层次结构的文件系统。
图4说明一种逻辑上安排事务记录的方式,该记录在基于事务的计算机系统的事务文件中。
图5示出一种闪速介质设备中存储器的物理安排。
图6和7说明多种样式,其中的事务记录可以安排在闪速介质设备中。
图8图解了多个可以用来生成扩展池的相关处理步骤,该扩展池又可以用在由计算机在启动过程中生成的重建文件系统中。
图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执行的(或未执行的)事务相应的数据,等等。
文件系统软件47用倒置层次结构组织存储在保持性存储单元30上的文件。图2是示出可以实现总体以50表示的倒置层次结构的图。在很多文件系统使用的传统层次结构中,文件系统的顶层以根目录开始,每个目录向下指向包含在目录中的文件或子目录。但是,在示范倒置层次结构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的记录。
根目录110可以构成倒置层次结构50的主干。在本例中,目录100和105和文件115包含在根目录110中。因此,文件系统软件47组织文件系统使得代表子目录100和105和子文件115的文件系统记录指向其父目录105的记录。
图3中示出了一种方式,其中文件系统软件47可以组织文件系统的记录来实现倒置层次结构。在文件系统的这种实现方式中,文件系统软件47可以生成包含与文件系统中使用的每个文件和目录相应的记录的一个或多个元文件。图3示出一个单个元文件120和示范方式,其中安排并格式化了元文件120中的记录。在本例中,可以将元文件120布置成包含多个相同长度记录条目125的表。每个记录条目125与文件系统中使用的单个文件或目录相对应。如130所示的惟一文件标志符可以被文件系统软件47用来寻址元文件120的相应记录125。如果每个记录条目125的记录长度相同,可以选择文件标志符的格式使得它可以直接或间接地作为元文件120中所需记录的索引。例如,文件标志符130可以构成与元文件120第一记录的存储地址位置一起使用的偏移值,来计算元文件记录的第一字节的存储地址位置,该元文件记录有需要的目录/文件信息。
在图3的示例中,文件标志符130指向元文件中120的记录135(条目7)。图3中以与元文件120毗邻的扩展形式示出记录135。记录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包含关于记录表示的文件的大小的信息,对于目录记录,其值为0。最后,短名字段185包含表示相应文件或目录短文本名称的ASCII字符。短名字段185的长度可以选择,例如,以符合POSIX的标准。另外,每个记录可以包含与短名相应的散列值(hash values)和/或名称总数。这种散列值和/或名称总数可以被文件系统软件47用来快速查找具体的目录和/或文件记录。
元文件120中的每个记录也可以包含用于扩展记录标志符190的字段。扩展记录标志符190可以用作指向元文件120中扩展记录的文件标志符。扩展记录可以包含记录表示的文件或目录的进一步信息,在所有与特定文件或目录有关的信息没有放在分配给单个元文件记录的存储空间的情况下尤其有用。
图3说明了一种方式,其中可以使用扩展记录标志符190。在本例中,记录135的扩展记录标志符190与用来访问元文件120中的记录195(条目11)的文件标志符(fid)相应。图3中示出了与记录135的分解视图毗邻的记录195的分解视图。该分解视解了可以用于扩展记录的一种记录格式。但是,扩展记录的父标志符字段200与指向扩展记录的记录的文件标志符相对应。在图3示出的示例中,父标志符字段200的内容可以用来指回记录135(条目7)。
在分配给两个记录条目的存储空间不足以存放所有有关文件或目录的信息的情况下,扩展记录195可以指向另一个使用其自己的扩展记录标志符的扩展记录,例如包含在记录195的字段205中的扩展记录。尽管没有示出扩展文件标志符125指向的另一个扩展记录的格式,另一个扩展记录同样可以包含指回记录195的父记录标志符。
扩展记录中包含的信息类型可以根据文件系统而有所不同。图3中,扩展记录195包含长名字段210,它包含与记录135表示的文件或记录的长名的文本相应的ASCII字符。另外的字段可以保存在每个扩展记录例如记录195的扩展区域215,以存储与相应文件或目录有关的附加信息。
在前面的示例中,文件系统使用的扩展记录存储在元文件120中。但是,作为选择,扩展记录和任何另外的扩展记录都也以存储于单独的元文件,多个元文件中,等等。单独的元文件不需要与元文件120或相互之间共享相同的存储介质。相反,元文件可以存储在存储处理器15可以访问的不同存储介质中。即使是基本元文件记录(没有相应扩展记录的目录和文件记录)也可以分布到多个文件和/或多个存储介质。这样,尽管示范系统的元文件记录存储在一个单个的元文件中,作为选择,元文件也可以采用在相同或不同存储介质上的许多单独文件的形式。
通过以倒置层次结构组织计算机系统10的文件和目录,文件系统可以实现一个或多个优点。例如,文件系统可以用任何这样的方式实现其中,典型文件和目录事务(即,移动文件/目录,删除文件/目录,创建文件/目录,复制文件/目录)作为单个元文件记录的修改,增加,删除而轻易地完成。例如,在本实施例中,可以只通过修改父标志符140使它指向新父目录的元文件记录,即可将记录135表示的文件/目录移动到层次结构中的另一个目录。这可以用对元文件中的记录135的一个单个的写操作完成。
可以用倒置层次系统优化交互或基于日志(log-based)的系统。示范性交互或基于日志的系统可以由图1所示的元件构成。在本例中,事务文件220可以保存在保持性存储单元30中,可以用来保存与文件系统的每个文件和目录相关的事务的记录。文件系统的更新基于包含在事务文件220中的事务记录轻易地完成。在其最简单的一种形式中,每个事务记录都可以作为单独逻辑页存储,该逻辑页被映射到保持性存储单元30的逻辑块或扇区。
图4中示出了一种方式,其中,事务记录225可以被格式化以用于计算机系统10。通常,事务文件220的每个事务记录225包含标题字段230和相应的数据字段230。标题字段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可以包含一个或多个闪速存储设备。闪速存储设备将信息存储在逻辑门中,称为“存储单元”,每个存储单元通常存储一位信息。闪存技术中最近的发展已经使这种设备每个单元能存储多于一位的信息,有时被称作多级单元设备。另外,闪存是非易失的,这意味着从设备撤走电源时不会失去存储单元的内容。
尽管闪速设备技术在不断发展,主要技术包括NANK闪速存储器和NOR闪速存储器。NOR闪速设备和NAND闪速设备用于每个存储单元的逻辑门的类型通常不同。图5中示出了NAND闪速存储设备275一种类型的示范性逻辑架构270。如图所示,设备275上可用的存储器可以组织到相邻的物理块280上,每个物理块有相同的存储单元数(即,16K字节)。NAND闪速存储设备275进一步将每个相邻块280分成特定数目的物理扇区或页面290。每个物理页面290又可以进一步分成数据区295和备用区300。数据区295被正常保留以存储数据,而备用区300通常被保留用于关于存储在数据区295中的数据的元信息的维护。元信息可以包含,例如,用于验证和修正扇区内容的错误修正码,循环冗余检验数据,等等。
除每页的备用区位于数据区对面之外,NOR闪速设备的架构与图5所示类似。NOR闪速设备还提供随机存取读和编程操作,允许各个存储位置读或被读。但是,一旦对块中的存储位置进行了写操作,NOR闪速设备不允许块被重新写入比块小的间隔尺寸(granularity)。同样,NOR闪速设备不允许在比块小的间隔尺寸进行删除操作。插入快速标记保存的文件在NOR和NAND闪速设备中的数据区295和备用区300通常都设置为特定尺寸。例如,图5中的示范性NAND闪速设备的每个页面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之间分割元数据信息300。
存储在相同设备块中的事务记录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,基于存储在顺序字段385中的值对块阵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中的目录结构信息。这种区别可以基于与事务关联的文件标志符。通常,元数据可以用公知的标志符表示并硬编码到文件系统软件37(例如,它们可以将元文件120识别为事务的对象文件)。由于只需用元数据来确保启动之后文件系统处于一致状态,事务数据部分的数据检查技术只在事务涉及这些元数据的时候执行。如果事务不涉及元数据的改动,数据检查技术最初可以只限于标题信息的检查。在图6示出的事务记录格式中,在系统启动时必须校验的主要标题信息可以存储在每个事务记录310的第一备用区300。这允许文件系统软件470跳过包含在每个事务记录310第二备用区中的标题信息的校验,从而进一步优化了启动程序。如下面进一步详细解释的那样,每个事务数据部分的错误检查可以推迟到启动程序完成之后文件系统软件37首先访问相应文件的时间。
事务记录的任何启动验证都可以通过将错误检查仅限于一系列连续事务的第一事务标题来进一步优化。在事务文件220的启动扫描过程中,发现事务标题指示跟随了许多相同文件的连续事务记录,一旦已经校验了顺序的第一事务记录的标题,可以跳过顺序中随后事务标题的校验。标题信息的扫描和校验可以用跟随最后的随后事务的下个块重新开始。
在RAM35中生成重建文件系统330的下个主要步骤包括重生成文件层次结构335的创建。在本例中,重生成文件层次结构335可以由文件和目录节点记录组成。图12的520概略地示出了目录节点记录的示范性格式,而图13的525概略地示出了文件节点记录的相应示范性格式。
目录节点记录520包括文件系统软件37使用的许多不同字段。更特别地,目录节点记录520可以包含兄弟字段530,文件标志符字段535,父标志符字段540,子字段545和目录命名字段550。同样,图13的文件字节记录包含文件系统软件37使用的许多不同字段。文件节点字段可以包含兄弟字段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中的文件条目或目录条目相对应。文件系统软件37会作出这个确定并采用适当的记录格式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,文件系统软件37可以检查以确定递归目录处理是否已完成。在本例中,递归目录处理在该处理上升到根结点时完成,根结点有唯一的可识别文件标志符。如果在步骤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中的数据的一种方式。如图所示,文件系统软件37给软件将访问的文件节点记录提供文件标志符730。在本例中,文件标志符730指向表示文件55的文件节点记录。然后文件系统软件37将文件节点记录的扩展索引565的内容用为到扩展池340的索引以查找事务文件220中文件的数据的位置。但是,可以看出,文件系统软件37能以除图15图解的之外的多种不同方式使用重建文件系统330的内容。
如上所述,不在启动过程执行对文件完整性的完全校验以便可以加速启动程序。相反,文件系统软件47可以推迟完全校验直到文件第一次被访问。为此,文件系统软件47可以保存一个表,该表指示出每个文件的完整性是否已被完全校验。可替换地,文件系统软件47可以使用重生成文件层次结构335中每个文件节点记录的一个或多个位以指示文件完整性是否已完全校验。文件系统软件47可以在启动之后文件至少第一次被访问时检查该指示器。如果指示器指示文件没有完全校验,那时可以执行文件的完全校验。可替换地,由于已经校验了文件事务的标题,文件系统软件只需校验文件每个事务的数据部分的完整性。校验程序可以包括一个或多个CRC程序,一个或多个ECC程序,等等。
如图5,6和7所示,每个事务记录中的许多不同字段可以用来校验整个事务记录的完整性。如果完整性检查失败,使用相关错误修正码的应用程序不能修正错误,那么可以将程序错误报告给作出访问文件内容要求的应用程序或系统。
描述本发明的各种实施例时,对本领域的技术人员来说很明显的一点是,在本发明范围内的更多实施例和实施办法是可能的。因此,除依照所附权利要求及其对等物之外,本发明并不受约束。
权利要求
1.一种计算机系统,包括处理器;可由所述处理器访问的保持性数据存储设备;至少一个可由所述处理器访问的元文件,该元文件具有多个与保持性数据存储设备上的文件以及该文件的目录贮存器相对应的记录,其中所述多个记录的各个记录每个都可以通过文件标志符进行寻址,所述各个记录包括父标志符,并且给定记录的父标志符与给定记录的父目录记录的文件标志符相对应。
2.如权利要求1所述的计算机系统,其中所述多个记录中的每一个都有固定的长度。
3.如权利要求1所述的计算机系统,其中所述多个记录中的每一个还包括扩展记录标志符,其中给定记录的扩展记录标志符与元文件中扩展记录的文件标志符相对应,并且所述扩展记录包含有与所述给定记录表示的文件或目录相关的进一步信息。
4.如权利要求3所述的计算机系统,其中所述扩展记录进一步包括多个ASCII字符,所述字符与扩展记录表示的文件或目录的长名相对应。
5.如权利要求3所述的计算机系统,其中给定扩展记录的父标志符与一记录的文件标志符相对应,该记录具有对所述给定记录进行寻址的扩展记录标志符。
6.如权利要求1所述的计算机系统,其中所述多个记录条目中的每一个进一步包括多个ASCII字符,该字符与所述记录表示的文件或目录的短名相对应。
7.如权利要求1所述的计算机系统,其中所述多个记录条目中的每一个进一步包含模式字段,包含与所述记录相对应的文件的类型的信息;访问时间字段,包含与所述记录相对应的文件上次被访问的时间的信息;和修改时间字段,包含与所述记录相对应的文件上次被修改的时间的信息。
8.一种计算机系统,包括处理器;可由所述处理器访问的保持性数据存储设备;由所述处理器执行的文件系统软件,其中所述文件系统软件用来将保持性数据存储设备的文件组织成多个包含在至少一个元文件中的记录,并且所述文件系统软件以倒置层次结构来组织元文件中的文件和目录,在所述倒置层次结构中与父目录的子文件和子目录相对应的记录直接指向与所述父目录相对应的元文件中的记录。
9.如权利要求8所述的计算机系统,其中所述多个记录中的每一个都有固定长度。
10.如权利要求8所述的计算机系统,其中所述多个记录中的每一个进一步包括扩展记录标志符,其中给定记录的扩展记录标志符与元文件中扩展记录的文件标志符相对应,所述扩展记录包含与所述给定记录表示的文件或目录相关的进一步信息。
11.如权利要求10所述的计算机系统,其中所述扩展记录进一步包括多个ASCII字符,所述字符与所述扩展记录表示的文件或目录的长名相对应。
12.如权利要求10所述的计算机系统,其中给定扩展记录的父标志符与一记录的文件标志符相对应,所述记录具有对所述给定记录进行寻址的扩展记录标志符。
13.如权利要求8所述的计算机系统,其中所述多个记录条目中的每一个进一步包括多个ASCII字符,所述字符与所述记录表示的文件或目录的短名相对应。
14.如权利要求8所述的计算机系统,其中所述多个记录条目中的每一个进一步包括模式字段,包含与所述记录相对应的文件的类型的信息;访问时间字段,包含与所述记录相对应的文件上次被访问的时间的信息;和修改时间字段,包含与所述记录相对应的文件上次被修改的时间的信息。
全文摘要
本说明公开了在传统文件系统层次结构基础上改进的计算机系统。计算机系统包含处理器和可以被处理器访问的保持性数据存储设备。系统也可以包含处理器执行的文件系统软件。文件系统软件用来将保持性数据存储设备的文件组织成包含在元文件中的多个记录。在元文件内,可以倒置层次结构组织文件系统的文件和目录。在倒置层次结构系统中,与父目录的子文件和子目录相对应的记录可以直接指向与父目录相对应的元文件中的记录。在文件系统的一个实施例中,元文件的各个记录可以用文件标志符分别寻址。各个记录中的每一个又可以包含父标志符,该标志符与其父目录记录的文件标志符相对应。
文档编号G06F17/30GK1983265SQ200610093179
公开日2007年6月20日 申请日期2006年6月23日 优先权日2005年7月1日
发明者D·道奇 申请人:Qnx软件操作系统德国有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1