发明内容
本发明实施例提供一种文件系统和该文件系统中检索、写入、修改或删除文件的方法与装置。
一种文件系统,包括超级块区、索引节点区以及数据块区;
所述超级块区包括至少两个超级块作为文件的不同属性的检索入口;
所述索引节点区包括与每个超级块对应的属性索引项列表,以及与数据块区存储的每个文件对应的索引节点,每个所述属性索引项列表保存一种文件属性与索引节点编号的对应关系,所述索引节点保存有文件的属性和存储地址,所述存储地址指向数据块区存放该文件的数据块;
使得检索文件的装置根据接收的文件检索请求中包含的请求检索文件的属性确定相应的超级块,将所述请求检索文件的属性与所述超级块对应的属性索引项列表进行匹配,获得对应的索引节点编号;从所述索引节点编号表示的索引节点中获取所述请求检索文件的各种属性和存储地址,从所述存储地址表示的数据块中获取所述请求检索文件的内容。
一种文件系统中检索文件的装置,所述文件系统为上述的文件系统,所述装置包括:
接收单元,用于接收文件检索请求,所述文件检索请求包含请求检索文件的属性;
匹配单元,用于根据所述文件检索请求包含的请求检索文件的属性确定相应的超级块,将所述请求检索文件的属性与所述超级块对应的属性索引项列表进行匹配,获得对应的索引节点编号;
获取单元,用于从所述索引节点编号表示的索引节点中获取所述请求检索文件的各种属性和存储地址,从所述存储地址表示的数据块中获取所述请求检索文件的内容。
一种文件系统中写入文件的装置,所述文件系统为上述的文件系统,所述装置包括:
接收单元,用于接收文件写入请求;
第一建立单元,用于通过所述目录超级块在对应的目录索引项列表中建立请求写入文件的目录索引项,所述目录索引项包括所述请求写入文件的目录与索引节点编号的对应关系;
写入单元,用于将请求写入文件的属性写入所述索引节点编号表示的索引节点中,将请求写入文件的内容写入所述索引节点指向的数据块中;
第二建立单元,用于通过对应于目录以外其它属性的属性超级块在相应的属性索引项列表中建立请求写入文件的各个属性索引项。
一种文件系统中修改及删除文件的装置,所述文件系统为上述的文件系统,所述装置包括:
接收单元,用于接收文件修改请求或文件删除请求;
第一修改单元,用于根据所述文件修改请求或文件删除请求修改或删除该文件对应的索引节点;
第二修改单元,用于通过对应于该文件的各个属性的超级块在各个属性索引项列表中修改或删除所述文件的各个属性索引项。
一种文件系统中检索文件的方法,所述文件系统为上述的文件系统,所述方法包括:
接收文件检索请求,所述文件检索请求包含请求检索文件的一种属性;
根据所述文件检索请求包含的请求检索文件的属性确定相应的超级块,将所述请求检索文件的属性与所述超级块对应的属性索引项列表进行匹配,获得对应的索引节点编号;
从所述索引节点编号表示的索引节点中获取所述请求检索文件的各种属性和存储地址,从所述存储地址表示的数据块中获取所述请求检索文件的内容。
一种文件系统写入文件的方法,所述文件系统为上述的文件系统,所述方法包括:
接收文件写入请求;
通过所述目录超级块在对应的目录索引项列表中建立请求写入文件的目录索引项,所述目录索引项包括所述请求写入文件的目录与索引节点编号的对应关系;
将请求写入文件的属性写入所述索引节点编号表示的索引节点中,将请求写入文件的内容写入所述索引节点指向的数据块中;
通过对应于目录以外其它属性的属性超级块在相应的属性索引项列表中建立请求写入文件的各个属性索引项。
一种文件系统修改或删除文件的方法,所述文件系统为上述的文件系统,所述方法包括:
接收文件修改请求或文件删除请求;
根据所述文件修改请求或文件删除请求修改或删除该文件对应的索引节点;
通过对应于该文件的各个属性的超级块在各个属性索引项列表中修改或删除所述文件的各个索引项。
本发明实施例提供的文件系统,包括至少两个超级块作为文件的不同属性的检索入口,每个超级块对应一种属性索引项列表,每个属性索引项列表保存一种文件属性与索引节点编号的对应关系,从而,该文件系统通过对应于文件的不同属性的超级块和属性索引项列表提供了不同的检索方式,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题。
具体实施方式
本发明实施例提供一种文件系统,包括:超级块区和索引节点区以及数据块区;超级块区包括至少两个超级块作为文件的不同属性的检索入口;索引节点区包括与每个超级块对应的属性索引项列表,以及与数据块区存储的每个文件对应的索引节点,每个属性索引项列表保存一种文件属性与索引节点编号的对应关系,索引节点保存有文件的属性和存储地址,该存储地址指向数据块区存放该文件的数据块。本发明实施例还提供该文件系统中检索、写入、修改或删除文件的方法与装置。以下分别进行详细说明。
本发明实施例提供一种文件系统。文件系统是一种在存储介质例如磁盘上管理文件信息的系统,用于对文件存储空间进行组织和分配,负责文件存储。
请参考图2,本实施例的文件系统包括:超级块区101和索引节点区102以及数据块区103。其中,
超级块区101包括至少两个超级块作为文件的不同属性的检索入口;
索引节点区102包括与每个超级块对应的属性索引项列表,以及与数据块区存储的每个文件对应的索引节点,每个属性索引项列表保存一种文件属性与索引节点编号的对应关系,索引节点保存有文件的属性和存储地址,该存储地址是数据块区存放该文件的数据块的地址。
与现有技术的仅包括一个目录超级块,只能根据目录进行检索的文件系统的不同之处在于,本发明文件系统的超级块区包括一个由至少两个超级块组成的超级块组(Super Block Group)。其中的每个超级块对应文件的一种属性,具体是与索引节点区保存的一种属性索引项列表链接,以提供对应该种文件属性的检索方式,以便于用户通过文件的该种属性进行文件检索。从而,该文件系统通过对应于文件的不同属性的超级块和属性索引项列表提供了不同的检索方式,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题
本发明实施例中,文件的属性可以包括文件名、文件大小、修改时间、用户名等任何能够对文件进行区分的属性。每个文件的所有属性均保存在该文件对应的索引节点中。
本发明文件系统中,超级块区可以包括作为目录检索入口的目录超级块(Dir Superblock)。超级块区还可以包括:作为关键字检索入口的关键字超级块(Keyword Superblock),作为大小检索入口的大小超级块(Size Superblock),作为修改时间检索入口的时间超级块(Time Superblock),以及作为用户检索入口的用户超级块(User Superblock)中的至少一个超级块,可以包括其中的一个超级块,也可以包括其中的多个超级块,还可以包括所列举的全部超级块。需要说明的是,本发明的文件系统还可以包括其它文中未列举的超级块,这些超级块对应于其它任何能够对文件进行区分的属性。
每一个超级块是一种检索入口,对应于一种属性索引项列表。属性索引项列表至少包括对应于目录超级块的目录索引项(Dir Entry)列表,还可以包括:对应于关键字超级块的关键字索引项(Keyword Entry)列表,对应于大小超级块的大小索引项(Size Entry)列表,对应于时间超级块的时间索引项(TimeEntry)列表,以及对应于用户超级块的用户索引项(User Entry)列表中的一个或多个属性索引项列表。
下面对各个超级块对应的各种索引方式做进一步说明:
目录超级块是目录索引方式的检索入口,支持以文件名进行文件检索。与目录超级块对应的目录索引项列表。目录索引项列表可以采用列表方式构建,也可以采用目录结构树方式构建。目录索引项列表中包含多个目录索引项(DirEntry),每个目录索引项对应一个文件。每个目录索引项中保存有对应文件的文件名以及对应索引节点的编号。当用户通过文件名进行检索时,将收到的请求检索文件的文件名与目录索引项列表进行匹配,找到对应的目录索引项,获取对应的索引节点的编号,进而可以从该编号表示的索引节点中,获取文件的属性和存储地址,再通过该存储地址在相应的数据块中获取文件的内容。
时间超级块是时间索引方式的检索入口,对应于时间索引项列表。时间索引项列表中包含多个时间索引项(Time Entry),每个时间索引项对应一个文件。时间索引项至少包括所对应文件的修改时间和保存该文件的属性与存储地址的索引节点的编号。当用户通过修改时间进行检索时,将收到的请求检索文件的修改时间与时间索引项列表进行匹配,找到对应的时间索引项,即可获得请求检索文件对应的索引节点的编号,进而可以从该编号所表示的索引节点中获取文件的属性和存储地址,再从该存储地址的数据块中获取文件的内容。
关键字超级块是关键字索引方式的检索入口,对应于关键字索引项列表。关键字索引项列表中包含多个关键字索引项(Keyword Entry),每个关键字索引项对应一个文件。关键字索引项至少包括所对应文件的关键字和保存该文件的属性与存储地址的索引节点的编号。当用户通过关键字进行检索时,将收到的请求检索文件的关键字与关键字索引项列表进行匹配,找到对应的关键字索引项,即可获得请求检索文件对应的索引节点的编号,进而可以从该编号所表示的索引节点中获取文件的属性和存储地址,再从该存储地址的数据块中获取文件的内容。
大小超级块是大小索引方式的检索入口,对应于大小索引项列表。大小索引项列表中包含多个大小索引项(Size Entry),每个大小索引项对应一个文件。大小索引项至少包括所对应文件的大小和保存该文件的属性与存储地址的索引节点的编号。当用户通过大小进行检索时,将收到的请求检索文件的大小与关键字索引项列表进行匹配,找到对应的大小索引项,即可获得请求检索文件对应的索引节点的编号,进而可以从该编号所表示的索引节点中获取文件的属性和存储地址,再从该存储地址的数据块中获取文件的内容。
用户超级块是用户索引方式的检索入口,对应于用户索引项列表。用户索引项列表中包含多个用户索引项(Size Entry),每个用户索引项对应一个文件。用户索引项至少包括所对应文件的用户和保存该文件的属性与存储地址的索引节点的编号。当用户通过用户进行检索时,将收到的请求检索文件的用户与关键字索引项列表进行匹配,找到对应的用户索引项,即可获得请求检索文件对应的索引节点的编号,进而可以从该编号所表示的索引节点中获取文件的属性和存储地址,再从该存储地址的数据块中获取文件的内容。
需要说明的是,文件系统中的每个文件可以对应有多个属性索引项,但是仅对应有一个索引节点,即,对应于同一文件的所有的属性索引项对应相同的索引节点,该索引节点中保存该文件的所有属性信息和该文件的存储地址。
请参考图3所示的文件系统的超级块区及索引节点区在文件卷中的布局,超级块组包含的所有超级块位于文件卷的开头部分的物理块中,其后是索引节点区。索引节点区包括了组描述信息(group descriptor)、数据块位图(blockbitmap)、索引节点位图(inode bitmap)和索引节点表(inode table),inode table保存有对应于每个超级块的属性索引项列表。
每个属性索引项列表包含多个与每个文件对应的属性索引项。
如表1所示,目录索引项列表中的每个目录索引项(Dir entry,Dentry)包括以下部分:索引节点编号(dnode)、记录长度(Recorder length)、文件名长度(Name length)、文件类型(File type)、文件名(name)等。
表1
如表2所示,时间索引项列表中的每个时间索引项(Time entry,Tentry)包括以下部分:索引节点编号(tnode)、记录长度(Recorder length)、时间段(Time scope)、修改时间(Modified time)、文件标识号(File ID)等。
表2
如表3所示,关键字索引项列表中的每个关键字索引项(Keyword entry,Kentry)包括以下部分:索引节点编号(knode)、记录长度(Recorder length)、关键字(Keyword word)、文件标识号(File ID)等。
表3
如表4所示,大小索引项列表中的每个大小索引项(Size entry,Sentry)包括以下部分:索引节点编号(snode)、记录长度(Recorder length)、文件大小范围(File size scope)、文件大小(File size)、文件标识号(File ID)等。
表4
用户索引项列表中的每个用户索引项(User entry,Sentry)包括以下部分:索引节点编号(unode)、记录长度(Recorder length)、组名(Group name)、用户名(User name)等。
表5
如图4所示,本发明实施例还提供一种文件系统中检索文件的装置,该文件系统为上述实施例提供的文件系统,该装置包括:
接收单元201,用于接收文件检索请求,所述文件检索请求包含请求检索文件的属性;
匹配单元202,用于根据所述文件检索请求包含的请求检索文件的属性确定相应的超级块,将所述请求检索文件的属性与所述超级块对应的属性索引项列表进行匹配,获得对应的索引节点编号;
获取单元203,用于从所述索引节点编号表示的索引节点中获取所述请求检索文件的各种属性和存储地址,从所述存储地址表示的数据块中获取所述请求检索文件的内容。
本发明实施例装置,利用各种不同的超级块以及对应的不同类型的属性索引项列表的属性索引项即可以进行不同方式的检索,包括目录检索、时间检索、关键字检索、大小检索、用户检索等,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题
请参考图5,具体的检索过程包括:
首先是接收用户提交的文件检索请求,该文件检索请求包含请求检索文件的属性;
其次,文件系统根据文件检索请求包含的属性,从超级块组中查找到相应的超级块。例如,如果是根据目录文件名检索,就查找目录超级块;如果是根据关键字进行检索,就查找关键字超级块。
进入超级块后,根据文件检索请求包含的文件属性,与超级块对应的属性索引项列表的所有属性索引项(entry)进行匹配。匹配成功后,根据entry中的索引节点编号(node号),查找到相应的索引节点(inode)。例如,如果是根据文件目录查找,需要查找目录超级块对应的所有dentry项,根据目录文件名查找到相应的dnode号,通过dnode号查找到相应的inode,inode中保存有该文件的属性信息和存储地址(inode地址)。如果是根据文件修改时间进行查找,需要查找时间超级块对应的所有tentry项,根据文件修改时间找到相应的tnode号,然后通过tnode查找到相应的inode,在inode中包含该文件的属性信息和存储地址(inode地址)。
最后从inode地址表示的数据块中获取文件的内容。
如图6所示,本发明实施例还提供一种文件系统中写入文件的装置,该文件系统为上述实施例提供的文件系统,该装置包括:
接收单元301,用于接收文件写入请求;
第一建立单元302,用于通过所述目录超级块在对应的目录索引项列表中建立请求写入文件的目录索引项,所述目录索引项包括所述请求写入文件的目录与索引节点编号的对应关系;
写入单元303,用于将请求写入文件的属性写入所述索引节点编号表示的索引节点中,将请求写入文件的内容写入所述索引节点指向的数据块中;
第二建立单元304,用于对应于目录以外其它属性的属性超级块在相应的属性索引项列表中建立请求写入文件的各个属性索引项。
下面就如何在对应的属性索引项列表中建立相应的属性索引项举例描述。
如表6所示,在文件系统中建立文件修改时间的时间索引项。每个时间索引项(Tentry)包括以下部分:索引节点编号(tnode)、记录长度(Recorderlength)、时间段(Time scope)、修改时间(Modified time)、文件标识号(FileID)等。首先,根据实际情况,建立时间段(Time scope)。表1给出的是一种缺省时间段,以“年-月”为单位,在其它实施例中也可以“年-月-日”为单位。其次,将文件的修改时间(Modified time)提取出来,匹配到相应的时间段(Timescope),并以Tentry的形式记录文件标识号(File ID,FID)。如果某个时间段的文件数目过多,可以将该时间段进一步细化,分成多个时间段。
表6
如表7所示,在文件系统中建立文件大小的索引项。大小索引项(Sentry)包括以下部分:索引节点编号(snode)、记录长度(Recorder length)、文件大小范围(File size scope)、文件大小(File size)、文件标识号(File ID)等。首先,文件系统将文件大小从0K到4T分成多个范围。表2给出的是其中一种缺省方法。然后,提取文件大小,并根据文件大小将发文件标识号匹配到相应的大小索引项(Sentry)中。如果某个区间内的文件过多,可以将该区间再细分为多个区间。
表7
如表8所示,在文件系统中建立关键字索引项。关键字索引项(Kentry)包括以下部分:索引节点编号(knode)、记录长度(Recorder length)、关键字(Keyword word)、文件标识号(File ID)等。首先,文件系统提取文件内容的多个关键字,然后根据关键字建立关键字索引项,将关键字和文件标识号等记录在关键字索引项(Kentry)中。关键字索引可以包括多个关键字,关键字1,关键字2等。
表8
本发明实施例装置,可以在文件系统中建立不同类型的属性索引项。根据对应于不同属性超级块的各个属性索引项即可以进行不同方式的检索,包括目录检索、时间检索、关键字检索、大小检索、用户检索等,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题
如图7所示,本发明实施例还提供一种文件系统中修改及删除文件的装置,该文件系统为上述实施例提供的文件系统,该装置包括:
接收单元401,用于接收文件修改请求或删除请求;
第一修改单元402,用于根据所述文件修改请求或删除请求修改或删除该文件对应的索引节点;
第二修改单元403,用于通过对应于该文件的各个属性的超级块在各个属性索引项列表中修改或删除所述文件的各个属性索引项,每个所述超级块作为文件的一种属性的检索入口,每个属性索引项列表对应于一个所述超级块,每个所述属性索引项列表保存一种文件属性与索引节点编号的对应关系。
当文件写操作完成后,文件系统中已经建立好文件的各种属性索引项,包括文件名目录索引项、文件修改时间索引项、文件大小索引项、文件关键字索引项、用户名索引项等。此时,如果文件发生修改、删除等操作,导致文件的大小、时间、关键字、用户等发生改变,即可利用本实施例的装置进行相应修改或删除。
请参考图8,本发明实施例还提供一种文件系统中检索文件的方法,所述文件系统为上述任一实施例所述的文件系统,所述方法包括:
501、接收文件检索请求,文件检索请求包含请求检索文件的一种属性;
502、根据所述文件检索请求包含的请求检索文件的属性确定相应的超级块,将所述请求检索文件的属性与所述超级块对应的属性索引项列表进行匹配,获得对应的索引节点编号;
503、从索引节点编号表示的索引节点中获取所述请求检索文件的各种属性和存储地址,从所述存储地址表示的数据块中获取所述请求检索文件的内容。
本实施例方法提供了多种文件检索方式,包括按照文件目录名、文件修改时间、文件大小、文件关键字、创建者等进行检索,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题。所有这些检索方式都是通过文件系统直接进行,不需要通过数据库或其他系统。
请参考图9,本发明实施例还提供一种文件系统中写入文件的方法,所述文件系统为上述任一实施例所述的文件系统,所述方法包括:
601、接收文件写入请求;
602、通过所述目录超级块在对应的目录索引项列表中建立请求写入文件的目录索引项,所述目录索引项包括所述请求写入文件的目录与索引节点编号的对应关系;
603、将请求写入文件的属性写入所述索引节点编号表示的索引节点中,将请求写入文件的内容写入所述索引节点指向的数据块中;
604、通过对应于目录以外其它属性的属性超级块在相应的属性索引项列表中建立请求写入文件的各个属性索引项。
本实施例方法,公开了如何在本发明文件系统中写入文件,实现了建立不同类型的属性索引项。根据对应于不同属性超级块的各个属性索引项即可以进行不同方式的检索,包括目录检索、时间检索、关键字检索、大小检索、用户检索等,解决了现有技术中文件系统只能提供以文件名作为属性进行检索的单一的检索方式存在的问题。
请参考图10,本发明实施例还提供一种文件系统中修改或删除文件的方法,所述文件系统为上述任一实施例所述的文件系统,所述方法包括:
701、接收文件修改请求或删除请求;
702、根据所述文件修改请求或删除请求修改或删除该文件对应的索引节点;
703、通过对应于该文件的各个属性的超级块在各个属性索引项列表中修改或删除所述文件的各个索引项,每个所述超级块作为文件的一种属性的检索入口,每个属性索引项列表对应于一个所述超级块,每个所述属性索引项列表保存一种文件属性与索引节点编号的对应关系。
采用本实施例方法,在文件发生修改、删除等操作,导致文件的大小、时间、关键字、用户等发生改变时,可以实现了对不同类型的属性索引项列表的修改或删除。
本领域技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存取存储器、磁盘或光盘等。
以上对本发明实施例所提供的文件系统和该文件系统中检索、写入、修改或删除文件的方法与装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。