基于目录对象的文件处理方法和系统的制作方法

文档序号:6583351阅读:219来源:国知局
专利名称:基于目录对象的文件处理方法和系统的制作方法
技术领域
本发明实施例涉及文件系统操作技术,尤其涉及一种基于目录对象的文件处理方
法和系统。
背景技术
在传统的文件系统中,如"Ext2/Ext3"等文件系统,文件包括元数据和数据块。文 件的元数据用于记录文件的访问属性和各数据块的存储位置,访问属性包括文件名、文件 长度、创建时间和修改时间等信息,文件的数据块保存实际的数据内容。文件系统中的目 录表示文件所在目录位置,目录的属性包括文件所在目录的名称及相应的路径访问控制属 性。目录文件是包含文件列表信息的文件。数据块的访问受控于文件的访问属性,文件的 访问则受控于目录属性。 在分布式存储文件系统中,通过文件访问属性和数据块分开管理将文件系统的元 数据信息与实际的数据内容读写分离,将元数据中的元节点(inode)部分分布到系统的每 个对象存储节点(Object Storage Node,简称0SN),从而大大地减轻了系统的元数据工作 负载,大大地提高了系统的整体性能。 但是,在实现本发明的研究过程中,发明人发现现有技术中对于需要处理的文件
请求,例如,当需要查找路径为"/home/firstlayer/secondlayer/test. log"中的test.
log文件时,现有技术的查找步骤如下 步骤1 、获取目录"home"的属性; 步骤2、在目录"home"下查找"firstlayer"; 步骤3、获取目录"firstlayer"的属性; 步骤4、在目录"f irstlayer,,下查找"secondlayer,,; 步骤5、获取目录"secondlayer"的属性; 步骤6、在目录"secondlayer,,下查找"test. log,,; 步骤7、获取文件"test. log"的属性; 步骤8、读取文件"test. log"的数据内容。 从上述查找过程可以看出,现有技术中对文件进行处理时需要按照路径信息逐级 目录获取目录元数据,从而查找到目标目录,再在查找到的目标目录下查找相应的文件,进 而对查找到的文件进行相应处理,处理效率较低。

发明内容
本发明实施例提供了一种基于目录对象的文件处理方法和系统,以提高文件系统 中的文件处理效率。 本发明实施例提供了一种基于目录对象的文件处理方法,包括 接收文件处理请求,所述文件处理请求中携带有待处理文件的文件信息和路径信
息;
根据所述路径信息中的目录名称以及预设的文件系统索引确定所述目录名称对应的目录对象号; 根据所述目录对象号在预设文件系统的目录对象列表中查找目录对象; 根据所述文件信息中的文件名以及预设映射规则,在查找到的所述目录对象中查
找所述文件名对应的桶和登记项; 根据所述文件处理请求以及查找到的所述桶和登记项对所述待处理文件进行处理。
本发明实施例还提供了一种基于目录对象的文件处理系统,包括 接收模块,用于接收文件处理请求,所述文件处理请求中携带有待处理文件的文
件信息和路径信息; 目录对象号确定模块,用于根据所述路径信息中的目录名称以及预设的文件系统索引确定所述目录名称对应的目录对象号; 目录对象查找模块,用于根据所述目录对象号在预设文件系统的目录对象列表中查找目录对象; 文件名查找模块,用于根据所述文件信息中的文件名以及预设映射规则,在查找到的所述目录对象中查找所述文件名对应的桶和登记项; 文件处理模块,用于根据所述文件处理请求以及查找到的所述桶和登记项对所述待处理文件进行处理。 采用本发明实施例的技术方案,采用目录对象列表、目录对象、桶和登记项的四层结构来处理文件,使得多级目录对应同一个目录对象,由目录对象号唯一索引,从而直接定位到文件所在目录下,而无须逐级进行查找。同时由于本发明实施例在目录对象下设置有桶,根据文件名和预设映射规则定位到该文件对应的桶和登记项,因此能够提高文件的查找、读写等处理效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所基于的预设文件系统的数据结构示意图; 图2为本发明实施例一提供的基于目录对象的文件处理方法的流程图; 图3为本发明实施例二提供的基于目录对象的文件处理方法中预设文件系统的
流程图; 图4A为本发明实施例三提供的基于目录对象的文件处理方法的流程 图4B为本发明实施例四提供的基于目录对象的文件处理方法中的流程 图5为本发明实施例五提供的基于目录对象的文件处理方法中构件文件系统的索引树的流程图; 图6为本发明实施例六提供的基于目录对象的文件处理方法中文件查找流程实例的流程 图7为本发明实施例七提供的基于目录对象的文件处理系统的结构示意 图8为本发明实施例八提供的基于目录对象的文件处理系统的结构示意 图9为本发明实施例九提供的基于目录对象的文件处理系统的结构示意 图IO为本发明实施例十提供的基于目录对象的文件处理系统的局部结构示意图。
具体实施例方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员
在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 本发明各实施例的技术方案是在基于目录对象的预设文件系统中实现的。图1为
本发明实施例所基于的预设文件系统的数据结构示意图。
如图l所示,该预设文件系统的数据结构分为四层,包括目录对象列表(Directory Object List)、目录对象(Directory Object)、桶(Bucket)禾口登记项(Entry)。下面逐一进行介绍
—、目录对象列表 文件系统中的所有目录对象都存储在目录对象列表中,并分配有唯一的目录对象号。根目录'7"的目录对象号可以默认定义为"0",且永远不改变。目录对象列表的结构如图1中的第一行结构所示,包括 (1)目录对象列表元数据(Object List Metadata)。目录对象列表还可以将目录对象分成不同的组,目录对象列表元数据描述了文件系统共有多少组、每组的编号和地址等信息。 (2)组描述(Group Descriptor)。当目录对象被划分为组时,则目录对象列表中还包括组描述,每组目录对象的信息用组描述进行描述。组描述描述了组号、每组有多少个目录对象、目录对象号的起始范围等等信息。 (3)目录对象号(dir0bjID)。各个目录对象的目录对象号顺序记录在目录对象列表中。 二、目录对象 每个目录会对应一个目录对象,目录对象用目录对象号标识。所谓目录对象,对应的是某个文件所在的完整目录路径,而非如现有技术那样仅指一级目录。例如,对于'7home/Firstlayer/Secondlayer/test. log,,来说,文件名为"test, log,,,从根目录开始的完整目录路径"/home/Firstlayer/Secondlayer〃,艮卩为文件"test. log"的目录,"/home/Firstlayer/Secondlayer〃,为目录名称。目录对象号是文件系统中用来标识目录对象的全局唯一序号,可以用一个定长位的整数标识,可以用16位、32位、48位或64位。其中48位能够支持3万亿个目录,满足规模为万兆字节(PB)级别的存储系统。目录对象号是由元数据服务器负责生成和管理的,目录对象号不需要回收。目录对象的结构如图1中第二行结构所示。每个目录对象根据目录大小,即根据目录下包括文件的多少不同可以分为多个不同的桶。如图l所示,目录对象包括目录对象元数据(dir objectmetadata)和各个桶对应的桶号(bucketID),目录对象元数据中描述了该目录对象下桶的个数、起始编号等信息。
三、桶 每个桶是一组登记项的集合,是用桶号(bucketID)来唯一标识的。桶号可以与桶中的登记项建立映射关系,若桶号是一个16位的整数,则每个桶最多可以支持65536个文件的登记项。这些登记项是由连续数据块构成的。 对桶的操作可以通过一次IO(输入输出)读取到桶下所有的登记项的文件元数据,从而可以大大提高文件元数据的访问速度。桶的结构如图1中第三行的结构所示,桶的结构包括桶元数据(bucket meta)和各个登记项对应的登记项号(entryID)。
四、登记项 登记项的结构如图1中第四行的结构所示,每个登记项对应一个文件。登记项描述了文件的文件元数据,文件元数据包括文件名(name)、文件权限、用户号(UID)、组序号(GID)、文件的创建访问和修改时间、文件对应的文件布局信息(layout)和数据块对象号(objID)等等。每个登记项中可以包括多个数据块对象号,即登记项可以分为多个数据块对象,每个文件可以分别存储在多个数据块对象所对应的数据块中,即每个数据块对象号与存储文件数据内容的磁盘上的一个或多个数据块的地址相对应。 每个数据块对象号指向一个或多个数据块。数据块里面是文件的数据内容。数据块对象号与数据块的对应关系如图1所示。
实施例一 图2为本发明实施例一提供的基于目录对象的文件处理方法的流程图,该方法可以基于图1所示的预设文件系统来实现,该方法可以包括如下步骤 步骤210、接收文件处理请求,该文件处理请求中携带有待处理文件的文件信息和所在路径的路径信息; 步骤220、根据路径信息中的目录名称以及预设的文件系统索引确定目录名称对应的目录对象号; 步骤220中根据目录名称和预设的文件系统索引获取对应的目录对象号的具体实施方式
有多种,将通过后续实施例进行介绍。 步骤230、根据目录对象号在预设文件系统的目录对象列表中查找目录对象;
步骤240、根据文件信息中的文件名以及预设映射规则,在查找到的目录对象中查找该文件名对应的桶和登记项; 其中每个桶与至少一个登记项相对应,每个登记项与一个文件相对应。 步骤250、根据文件处理请求以及查找到的桶和登记项对该待处理文件进行处理。 采用本实施例的文件处理方法,采用目录对象列表、目录对象、桶和登记项的四层
结构来处理文件, 一方面,文件的完整路径可以直接对应一个目录对象号,从而直接定位到
文件所在目录下,而无须逐级进行查找。另一方面,由于文件名与其所在目录下的桶和登
记项存在预设映射关系,可以根据预设映射规则定位到桶和登记项,无须在该目录下逐一
的进行查找,所以可以有效的提高文件定位效率,从而能够提高文件的查找、读写等处理效率。 采用本实施例的技术方案,预设映射规则优选的可以是映射表的形式,具体的映射规则可以人为设定,例如,以文件名的首字符作为与桶对应的索引,或者,以文件名的二
8进制码的高位数值作为与桶对应的索引,还可以以文件名的类型、文件名的字数长度等多种元素作为与桶对应的索引。采用该技术方案,通过文件名可以直接定位至桶。
实施例二 图3为本发明实施例二提供的基于目录对象的文件处理方法中预设文件系统的流程图,所构建的文件系统如图1所示,构建该文件系统的步骤包括
步骤310、创建目录对象列表; 该步骤具体可以为分配存储空间作为目录对象列表,在初始时,默认根目录已经存在,且其目录对象号为"0",且在目录对象列表元数据中记录根目录所对应目录对象的属性。 步骤320、接收目录创建请求,该目录创建请求中包含有待创建目录的目录名称;
步骤330、根据目录名称创建目录对象,为目录对象分配目录对象号并记录在目录对象列表中,且将待创建目录的属性记录至目录对象的目录对象元数据中。
步骤340、为每个目录对象创建桶;
步骤340可以包括 对应创建的目录对象创建桶并分配桶号,将分配的桶号记录在目录对象中,将创建的桶的属性记录在桶的桶元数据中。 具体的,在目录对象创建时可以在目录对象中创建一个桶,随着目录对象下文件数量的增加,可以实时增加创建新的桶。 采用本实施例的技术方案所创建的文件系统,提出将目录对象信息与文件的元数据分开管理。可以由目录对象索引服务器单独管理目录对象信息,为所有目录对象分配一个全局唯一的目录对象号。目录对象索引部署在分布式文件系统的元数据服务器上。元数据服务器需要保证目录对象号必须是全局唯一的。 在本发明的实施例的文件系统中,文件是通过目录对象号和文件名表示的。由于目录对象号是全局唯一的,而同一目录下的文件名也是局部唯一,这样,就可以通过"目录对象号+文件名"来表示出文件。 采用本实施例的技术方案,采用目录对象列表、目录对象、桶和登记项的四层结构来处理文件,使得多级目录对应同一个目录对象,由目录对象号唯一索引,可简化文件系统的体系结构,更适于查找、文件读写等文件处理过程,能够提高文件的处理效率。
实施例三 图4A为本发明实施例三提供的基于目录对象的文件处理方法的流程图,该实施例将以图1所示的文件系统应用于文件查找流程中进一步说明,如图4A所示,在图2所示的实施例的基础上,步骤250可以包括 步骤251a、当识别到文件处理请求为文件查找请求时,在查找到的登记项中读取该待处理文件的文件元数据; 步骤252a、根据该文件元数据和登记项中的数据块对象号在数据块中读取待处理文件的数据内容。 进一步的,在本实施例步骤240中,根据文件名和预设映射规则定位桶和登记项
的实现方式有多种,其中一种实施方式可以包括如下步骤 步骤241a、将文件名进行哈希(Hash)运算以获取文件号;
9
通过哈希运算获取的文件号比较准确,通常也能确保文件号的唯一性; 步骤242a、对文件号采用预设常数进行求模运算,将求模运算的商确定为桶号,将
求模运算的余数确定为登记项号; 例如,当文件号为999时,预设常数设为100,则确定的桶号为9,登记项号为99。 预设常数实际上决定了每个桶中可以包含的登记项的数量。 步骤243a、根据该桶号和登记项号在目录对象中查找对应的桶和登记项。 采用上述技术方案,可以根据文件名直接定位至桶和登记项,有效地提高了查找效率。 步骤240的另一种实施方式可以包括如下步骤 步骤241b、按照目录对象的目录对象元数据中存储的预设映射规则,查找文件名 对应的桶号; 步骤242b、根据桶号在目录对象中查找对应的桶; 步骤243b、在查找到的桶中根据文件名查找对应的登记项。 在本实施例的技术方案中,预设映射规则优选的可以是映射表的形式,具体的映 射规则可以人为设定,例如,以文件名的首字符作为与桶对应的索引,或者,以文件名的二 进制码的高位数值作为与桶对应的索引,还可以以文件名的类型、文件名的字数长度等多 种元素作为与桶对应的索引。采用该技术方案,通过文件名可以直接定位至桶。
如上述流程所示,相比于传统查找过程,本实施例的文件查找过程中通过一次定 位即可直接查找到待查找文件所在的最后一级目录,而无须逐级读取目录的元数据,且当 采用上述求模方式定位桶和登记项时,可以直接定位到桶和登记项,查找效率显著提高。当 采用上述的映射表形式的预设映射规则定位桶和登记项时,在定位到的桶对应的各登记项 中,分别查找各登记项中是否包含同样的文件名,从而查找文件。该技术方案可以避免在目 录下进行完全查找,仅在目录下文件名所对应的桶中查找即可,有效的提高了查找效率。
进一步的,在上述实施例的基础上,在根据文件信息中的文件名在查找到的目录 对象中查找文件名对应的桶和登记项之后,还可以包括将查找到的桶中各登记项的文件 元数据和数据块对象号记录至内存中。 采用上述技术方案,在下次进行该桶下的文件查找时,可以从内存中直接获取元 数据,有效减少了查找时间。 文件读取流程与文件查找流程相类似,进行定位后即可读取文件的数据内容。在
此不再赘述。 实施例四 图4B为本发明实施例四提供的基于目录对象的文件处理方法中的流程图,图4B 描述了向图l所示的文件系统中写入或者称创建新的文件的过程。如图4B所示,在图2所 示实施例基础上,步骤250可以包括 步骤25lb、当识别到文件处理请求具体为文件创建请求时,创建查找到的文件名 对应的登记项,并将创建的登记项的登记项号记录在查找到的文件名对应的桶中;
步骤252b、将文件信息中的文件属性记录在登记项的文件元数据中,将文件信息 中的待处理文件的数据内容存储在数据块中,且将数据块的数据块地址作为数据块对象号 记录在登记项中。
其中,步骤252b具体可以为根据文件创建请求将文件的属性记录在创建的登记 项的文件元数据中,且分配数据块对象号,分别记录存储该文件的数据内容的数据块的地 址。 进一步的,在本实施例步骤240中,根据文件名和预设映射规则查找桶和登记项 的实现方式有多种,与实施例三中描述的方式类似,当采用求模方式查找到桶号和登记项 号时,可以在该桶下根据该登记项号创建登记项,且将该登记项号记录在桶中。当采用目录 对象元数据中存储的映射表时,当查找到桶号之后,可以采用默认的方式查找登记项,例如 顺序分配登记项号,将分配的登记项号作为查找到的登记项号记录在桶号所对应的桶中, 且创建相应的登记项。具体可见前述实施例,在此不再赘述。 进一步的,在上述实施例的基础上,在根据文件信息中的文件名在查找到的目录 对象中查找文件名对应的桶和登记项之后,还可以包括将查找到的桶中各登记项的文件 元数据和数据块对象号记录至内存中。 采用上述技术方案,在下次进行该桶下的文件查找时,可以从内存中直接获取元 数据,进一步有效减少了查找时间,提高了创建文件的效率。 如上所述,相比于传统文件创建过程而言,本实施例的文件创建过程中可以通过 一次定位直接查找到待创建文件所在的最后一级目录,且可以直接定位到待创建文件所在 的桶和登记项,从而在查找到的桶中创建文件。该技术方案可以在写入文件时满足文件与 桶和登记项之间的映射关系,当查找或读取文件时,不必在目录下进行完全查找,仅在目录 下文件名所对应的桶中查找即可,有效的提高了文件处理效率。
实施例五 以下将以预设的文件系统索引为索引树的形式对本发明实施例所述的处理方法 中预设文件系统索引的设置过程进行说明。文件系统索引可以有多种形式来实现,本发明 实施例以索引树的形式进行说明,其中,在本发明实施例所述的文件系统的索引树中,索引 树的节点键值(key)代表目录名称,索引树的节点值(value)代表目录对象号,通过索引树 为目录对象号和目录名称建立一一对应关系。索引树可以包括B树、B+树、B-树。且文件 系统的索引树是常驻内存的,同时可以在硬盘也有备份。如图5所示,图5所述的构建文件 系统索引树的流程可以包括如下步骤 步骤510、当接收到目录创建请求时,根据目录创建请求中的目录名称在索引树中 逐级查找对应的最底端的叶节点; 步骤520、在查找到的最底端的叶节点增加下一级叶节点; 步骤530、将目录创建请求中的目录名称设置为增加的叶节点的键值,并将为目录
对象分配的目录对象号分配给增加的叶节点作为节点值。 在维护文件系统索引树时,还可以包括修改和删除流程。 当目录名称需要修改时,只需要在索引树上修改相应的键值,节点值不需要变化, 这样目录对象中所对应的桶和所有的文件不需要修改,极大地方便了文件系统的目录修 改。 在索引树中修改目录对象的流程具体可以包括 当接收到目录修改请求时,根据目录修改请求中的待修改目录名称在索引树中逐 级查找对应的叶节点,并将查找到的叶节点的键值根据目录修改请求进行修改。
11
当需要删除目录对象时,只需要将索引树中的键值和对应节点值从索引树上删 除,就可以实现文件系统的目录对象删除操作。在索引树中删除目录对象的流程具体可以 包括 当接收到目录删除请求时,根据目录删除请求中的待删除目录名称在索引树中逐 级查找对应的叶节点,并将查找到的叶节点及其下级叶节点删除,且将目录对象列表中的 目录对象号删除,并删除目录对象号对应的目录对象、桶和登记项。
索引树的构建极大的加快了目录对象号的查找速度。
实施例六 图6为本发明实施例六提供的基于目录对象的文件处理方法中文件查找流程实 例的流程图,本实施例以查找文件为例进一步以实例说明本发明实施例中的文件处理方 法。本发明实施例提出的目录对象和传统文件系统的目录结构逐级查找方法是完全不同 的。传统的文件系统是通过目录结构逐级进行查找。本实施的技术方案是通过目录对象号 直接进行目录的查找,直接找到目录所在的位置,然后在目录对象下找到相应的文件。本实 施例的文件查找步骤包括 步骤610、当接收到文件查找请求时,在文件查找请求中提取目录名称作为键值, 以查找"/home/firstlayer/secondlayer/test. log"文件为例,即从文件的全路径目录名
'home/f irstlayer/secondlayer/test, log,,中提取对应的巨录名禾尔"/home/f irstlayer,
secondlayer"。然后,以目录名称为键值,在文件系统的索引树中查找相应节点值作为目录 对象号。进行索引树的查找时,首先在内存索引树上查找。如果内存索引树上没有找到,可 以到硬盘索引树进行查找; 步骤620、根据目录对象号在文件系统的目录对象列表中定位目录对象,并在目录 对象的目录对象元数据中获取目录"/home/firstlayer/secondlayer"的属性,例如访问控 制等属性。 步骤630、根据目录对象号和文件查找请求中的文件名,在目录对象"/home/ f irstlayer/secondlayer"下定位桶禾口登记项;
具体定位方式可以参见上述实施例所述。 步骤640、根据文件名"test, log"在定位的登记项的文件元数据中查找文件 "test, log"的属性; 步骤650、根据定位的登记项中的数据块对象号在对应的数据块中获取文件 "test, log"的数据内容。 假定文件前面的目录层数为n,例如,上述实例即包括"home"、"firstlayer"和 "secondlayer"三层目录,或者,根目录也可以作为一层。对传统文件系统而言,需要2n+l 次过程获取逐级目录和文件的元数据,从而进行访问控制等操作,而后通过1次过程读取 文件实际的数据内容。而对于基于目录对象的文件系统而言,查找过程与目录层数n无关, 只需要3次过程获取文件元数据,1次过程读取实际数据内容,如上所示,查找目录对象号, 读取目录对象元数据,定位桶和登记项,以及读取文件元数据,而后读取文件的数据内容。 当n > 1时,目录对象需要的查找次数和磁盘10数明显少于传统文件系统。
优选的是,在上述步骤610之后,还获取定位的目录对象下其他文件的元数据,并 存放到内存中。由于同一目录对象下的所有文件对应的数据块都是连续分配的,所以可以通过一次10获取到其他所有文件的元数据。这样,下次读同一目录对象中的其他文件时,
不需要磁盘10,直接从本地内存读取,从而可以进一步提高读文件的效率。 本发明实施例提出的技术方案,提高了文件查找的效率。在相同的环境下查找相
同的文件,和传统文件系统相比,本实施例的查找方法特别适合规模为PB级别的分布式存
储系统。 采用本实施例的技术方案,由于目录对象和文件是完全分开的,目录属性定义在 目录对象中。这样,目录属性的修改完全不影响目录下的文件。
实施例七 图7为本发明实施例七提供的基于目录对象的文件处理系统的结构示意图。该系 统包括接收模块710、目录对象号确定模块720、目录对象查找模块730、文件名查找模块 740和文件处理模块750。其中接收模块710用于接收文件处理请求,该文件处理请求中 携带有待处理文件的文件信息和所在路径的路径信息;目录对象号确定模块720用于根据 路径信息中的目录名称以及预设的文件系统索引确定该目录名称对应的目录对象号;目录 对象查找模块730用于根据目录对象号在预设文件系统的目录对象列表中查找目录对象; 文件名查找模块740用于根据文件信息中的文件名以及预设映射规则,在查找到的目录对 象中查找文件名对应的桶和登记项,其中每个桶与至少一个登记项相对应,每个登记项与 一个文件相对应;文件处理模块750用于根据文件处理请求以及查找到的桶和登记项对待 处理文件进行处理。
本实施例所述的文件处理系统还可以包括 设置模块,用于设置上述预设文件系统,该预设文件系统可以包括目录对象列表、 目录对象、桶和登记项。其中,目录对象列表包括目录对象列表元数据和各个目录对象的目 录对象号;目录对象包括目录对象元数据和各个桶对应的桶号;桶包括桶元数据和各个登 记项对应的登记项号;登记项包括文件元数据和数据块对象号,数据块对象号与存储文件 数据内容的数据块的地址相对应。 具体的,该文件系统的结构可以如图1所示。 如上述方法实施例所述,由于实现根据文件名和预设映射规则的查找桶和登记项 的方式有多种,因此,在一种情形下,文件名查找模块740可以包括文件号计算单元741、 求模运算单元742和定位查找单元743。其中文件号计算单元741用于将文件名进行哈 希运算以获取文件号;求模运算单元742用于对文件号采用预设常数进行求模运算,将求 模运算的商确定为桶号,将求模运算的余数确定为登记项号;定位查找单元743用于根据 桶号和登记项号在目录对象中定位对应的桶和登记项。 采用本实施例的技术方案,采用目录对象列表、目录对象、桶和登记项的四层结构 来处理文件,使得多级目录对应同一个目录对象,由目录对象号唯一索引,同时在目录对象 下设置有桶,根据文件名和预设映射规则定位到桶和登记项,可以避免在文件处理过程中 对整个目录下的所有文件进行完全查找,因此能够提高文件的查找、读写等处理效率。
上述系统可以适用于多种文件处理流程,典型的包括文件查找流程和文件创建流 程等。在一种情况下,该系统的文件处理模块750具体可以包括文件查找单元751。其中, 文件查找单元751,用于当识别到文件处理请求为文件查找请求时,在文件名查找模块740 查找到的登记项中读取待处理文件的文件元数据,且根据文件元数据和登记项中的数据块对象号在数据块中读取待处理文件的数据内容。 进一步的,该文件处理模块750还可以包括内存记录单元752,用于将文件名查
找模块740查找到的桶中各登记项的文件元数据和数据块对象号记录至内存中。 采用上述技术方案,在下次进行该桶下的文件查找时,可以从内存中直接获取元
数据,有效减少了查找时间。
实施例八 图8为本发明实施例八提供的基于目录对象的文件处理系统的结构示意图。本实 施例与实施例七的区别在于提供了另一种实现预设映射规则的形式,其中,文件名查找模 块740可以包括映射查找单元744、桶查找单元745和登记项查找单元746。其中映射 查找单元744用于按照目录对象的目录对象元数据中存储的预设映射规则,查找文件名对 应的桶号;桶查找单元745用于根据桶号在目录对象中查找对应的桶;登记项查找单元746 用于在查找到的桶中根据文件名查找对应的登记项。 本实施例所采用的优选为映射表形式的预设映射规则,可以存储在目录对象元数 据中以备查询。该预设映射规则的具体内容可以由人为设定,可参见前述实施例所述,实现 文件名与桶和登记项之间的对应关系,以便在目录对象下定位文件时无须进行完全查找, 能够提高定位查找效率。
实施例九 图9为本发明实施例九提供的基于目录对象的文件处理系统的结构示意图。本实
施例与实施例七的区别在于,文件处理模块750还可以包括文件创建单元753。 文件创建单元753用于当识别到文件处理请求为文件创建请求时,创建文件名查
找模块740查找到的文件名对应的登记项,并将创建的登记项的登记项号记录在查找到的
文件名对应的桶中,且将文件信息中的文件属性记录在登记项的文件元数据中,将文件信
息中的待处理文件的数据内容存储在数据块中,将数据块的数据块地址作为数据块对象号
记录在登记项中。 上述文件创建单元753和文件查找单元751可以独立设置,优选是共同设置在文 件处理模块750中。 如上所述,相比于传统文件创建过程而言,本实施例的文件创建过程中可以通过 一次定位直接查找到待创建文件所在的最后一级目录,且可以直接定位到待创建文件所在 的桶和登记项,从而在查找到的桶中创建文件。该技术方案可以在写入文件时满足文件与 桶和登记项之间的映射关系,当查找或读取文件时,不必在目录下进行完全查找,仅在目录 下文件名所对应的桶中查找即可,有效的提高了文件处理效率。
实施例十 图IO为本发明实施例十提供的基于目录对象的文件处理系统的局部结构示意 图。本发明实施例的预设文件系统可以预设,优选的是根据需要进行创建,则该系统的设 置模块还可以具体包括目录创建请求接收单元761、目录对象创建单元762和桶创建单元 763。其中: 目录创建请求接收单元761用于接收目录创建请求,该目录创建请求包括待创建 目录的目录名称;目录对象创建单元762用于根据目录名称创建目录对象,为目录对象分 配目录对象号并记录在目录对象列表中,且将待创建目录的属性记录至目录对象的目录对象元数据中;桶创建单元763用于对应创建的目录对象创建桶并分配桶号,将分配的桶号 记录在目录对象中,将创建的桶的属性记录在桶的桶元数据中。 本发明实施例所提供的文件处理系统可以执行本发明实施例提供的文件处理方 法,具备相应的功能模块,采用本发明实施例的文件处理技术方案, 一方面,文件的完整路 径可以直接对应一个目录对象号,从而直接定位到文件所在目录下,而无须逐级进行查找。 另一方面,由于文件名与其所在目录下的桶和登记项存在预设映射关系,可以根据预设映 射规则定位到桶和登记项,无须在该目录下逐一的进行查找,所以可以有效的提高文件处 理效率。 本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、 RAM磁碟或者光 盘等各种可以存储程序代码的介质。 最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
1权利要求
一种基于目录对象的文件处理方法,其特征在于,包括接收文件处理请求,所述文件处理请求中携带有待处理文件的文件信息和路径信息;根据所述路径信息中的目录名称以及预设的文件系统索引确定所述目录名称对应的目录对象号;根据所述目录对象号在预设文件系统的目录对象列表中查找目录对象;根据所述文件信息中的文件名以及预设映射规则,在查找到的所述目录对象中查找所述文件名对应的桶和登记项;根据所述文件处理请求以及查找到的所述桶和登记项对所述待处理文件进行处理。
2. 根据权利要求1所述的方法,其特征在于所述预设文件系统包括目录对象列表、目 录对象、桶和登记项,其中,所述目录对象列表包括目录对象列表元数据和各个目录对象的目录对象号; 所述目录对象包括目录对象元数据和各个桶对应的桶号; 所述桶包括桶元数据和各个登记项对应的登记项号;所述登记项包括文件元数据和数据块对象号,所述数据块对象号与存储文件数据内容 的数据块的地址相对应。
3. 根据权利要求2所述的方法,其特征在于,所述根据所述文件信息中的文件名以及 预设映射规则,在查找到的所述目录对象中查找所述文件名对应的桶和登记项包括将所述文件名进行哈希运算以获取文件号;对所述文件号采用预设常数进行求模运算,将求模运算的商确定为桶号,将求模运算 的余数确定为登记项号;根据所述桶号和登记项号在所述目录对象中查找对应的桶和登记项。
4. 根据权利要求2所述的方法,其特征在于,所述根据所述文件信息中的文件名以及 预设映射规则,在查找到的所述目录对象中查找所述文件名对应的桶和登记项包括按照所述目录对象的目录对象元数据中存储的预设映射规则,查找所述文件名对应的 桶号;根据所述桶号在所述目录对象中查找对应的桶; 在查找到的所述桶中根据所述文件名查找对应的登记项。
5. 根据权利要求1 4任一所述的方法,其特征在于,根据所述文件处理请求以及查找 到的所述桶和登记项对所述待处理文件进行处理包括当识别到所述文件处理请求为文件查找请求时,在查找到的所述登记项中读取待处理 文件的文件元数据,并根据所述文件元数据和所述登记项中的数据块对象号在数据块中读 取待处理文件的数据内容;和/或当识别到所述文件处理请求为文件创建请求时,创建查找到的所述文件名对应的登记 项,并将创建的所述登记项的登记项号记录在查找到的所述文件名对应的桶中,并将所述 文件信息中的文件属性记录在所述登记项的文件元数据中,将所述文件信息中的待处理文 件的数据内容存储在数据块中,且将所述数据块的数据块地址作为数据块对象号记录在所 述登记项中。
6. 根据权利要求5所述的方法,其特征在于,在根据所述文件信息中的文件名以及预 映射规则,在查找到的所述目录对象中查找所述文件名对应的桶和登记项之后,还包括将查找到的所述桶中各登记项的文件元数据和数据块对象号记录至内存中。
7. 根据权利要求2 4任一所述的方法,其特征在于,还包括 接收目录创建请求,所述目录创建请求包括待创建目录的目录名称;根据所述目录名称创建目录对象,为所述目录对象分配目录对象号并记录在所述目录 对象列表中,且将所述待创建目录的属性记录至所述目录对象的目录对象元数据中;对应创建的所述目录对象创建桶并分配桶号,将分配的桶号记录在所述目录对象中, 将创建的所述桶的属性记录在所述桶的桶元数据中。
8. —种基于目录对象的文件处理系统,其特征在于,包括接收模块,用于接收文件处理请求,所述文件处理请求中携带有待处理文件的文件信 息和路径信息;目录对象号确定模块,用于根据所述路径信息中的目录名称以及预设的文件系统索引 确定所述目录名称对应的目录对象号;目录对象查找模块,用于根据所述目录对象号在预设文件系统的目录对象列表中查找 目录对象;文件名查找模块,用于根据所述文件信息中的文件名以及预设映射规则,在查找到的 所述目录对象中查找所述文件名对应的桶和登记项;文件处理模块,用于根据所述文件处理请求以及查找到的所述桶和登记项对所述待处 理文件进行处理。
9. 根据权利要求8所述的系统,其特征在于,还包括设置模块,用于设置所述预设文件系统,所述预设文件系统包括目录对象列表、目录对 象、桶和登记项,其中,所述目录对象列表包括目录对象列表元数据和各个目录对象的目录对象号; 所述目录对象包括目录对象元数据和各个桶对应的桶号; 所述桶包括桶元数据和各个登记项对应的登记项号;所述登记项包括文件元数据和数据块对象号,所述数据块对象号与存储文件数据内容 的数据块的地址相对应。
10. 根据权利要求9所述的系统,其特征在于,所述文件名查找模块包括文件号计算单元,用于将所述文件名进行哈希运算以获取文件号; 求模运算单元,用于对所述文件号采用预设常数进行求模运算,将求模运算的商确定为桶号,将求模运算的余数确定为登记项号;定位查找单元,用于根据所述桶号和登记项号在所述目录对象中查找对应的桶和登记项。
11. 根据权利要求9所述的系统,其特征在于,所述文件名查找模块包括 映射查找单元,用于按照所述目录对象的目录对象元数据中存储的预设映射规则,查找所述文件名对应的桶号;桶查找单元,用于根据所述桶号在所述目录对象中查找对应的桶; 登记项查找单元,用于在查找到的所述桶中根据所述文件名查找对应的登记项。
12. 根据权利要求8 11任一所述的系统,其特征在于,所述文件处理模块包括 文件查找单元,用于当识别到所述文件处理请求为文件查找请求时,在所述文件名查找模块查找到的所述登记项中读取待处理文件的文件元数据,且根据所述文件元数据和所 述登记项中的数据块对象号在数据块中读取待处理文件的数据内容;和/或文件创建单元,用于当识别到所述文件处理请求为文件创建请求时,创建查找到的所 述文件名对应的登记项,并将创建的所述登记项的登记项号记录在查找到的所述文件名对 应的桶中,并将所述文件信息中的文件属性记录在所述登记项的文件元数据中,将所述文 件信息中的待处理文件的数据内容存储在数据块中,且将所述数据块的数据块地址作为数 据块对象号记录在所述登记项中。
13. 根据权利要求12所述的系统,其特征在于,所述文件处理模块还包括 内存记录单元,用于将所述文件名查找模块查找到的所述桶中各登记项的文件元数据和数据块对象号记录至内存中。
14. 根据权利要求9 11任一所述的系统,其特征在于,所述设置模块包括目录创建请求接收单元,用于接收目录创建请求,所述目录创建请求包括待创建目录 的目录名称;目录对象创建单元,用于根据所述目录名称创建目录对象,为所述目录对象分配目录 对象号并记录在所述目录对象列表中,且将所述待创建目录的属性记录至所述目录对象的 目录对象元数据中;桶创建单元,用于对应创建的所述目录对象创建桶并分配桶号,将分配的桶号记录在 所述目录对象中,将创建的所述桶的属性记录在所述桶的桶元数据中。
全文摘要
本发明提供一种基于目录对象的文件处理方法和系统。该方法包括接收文件处理请求;根据目录名称以及预设的文件系统索引确定目录名称对应的目录对象号;根据目录对象号在预设文件系统的目录对象列表中查找目录对象;根据文件名以及预设映射规则,在查找到的目录对象中查找文件名对应的桶和登记项;根据文件处理请求以及查找到的桶和登记项对待处理文件进行处理。本发明采用目录对象列表、目录对象、桶和登记项的四层结构来处理文件,使得多级目录对应同一个目录对象,由目录对象号唯一索引,同时在目录对象下设置有桶,根据文件名和预设映射规则定位到桶和登记项,可以避免在整个目录下对所有文件进行完全查找,因此能够提高文件处理效率。
文档编号G06F17/30GK101719141SQ20091021555
公开日2010年6月2日 申请日期2009年12月24日 优先权日2009年12月24日
发明者程菊生 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1