一种文件系统序列化操作的分类方法

文档序号:6625606阅读:144来源:国知局
一种文件系统序列化操作的分类方法
【专利摘要】本发明涉及一种文件系统序列化操作的分类方法,其步骤包括:1)预先设定分类的规则集;2)将规则集中每条规则的文件路径名称根据目录层级进行分解;3)建立目录元的散列表和映射位图;4)为操作对象初始化一路径记录表;5)分解操作对象中的文件路径名称;6)将分解得到的目录元的名称和深度作为因子,查找散列表中对应的散列表单元;7)进行位图操作;8)重复执行步骤6)?7),直到循环过程结束。之后对得到的分类结果进行分析处理。本发明通过建立散列表和映射位图的方式并经过散列查询和位图与或操作就能快速判断序列化I/O操作对象的文件名称与规则集中一系列的文件路径名称之间的层级从属关系,从而达到快速分类的目的。
【专利说明】一种文件系统序列化操作的分类方法

【技术领域】
[0001] 本发明属于计算机数据存储和容灾备份领域,涉及一种针对文件系统序列化I/O 操作根据其操作对象的文件路径进行分类的方法,能够提高分类的效率,以便于后续对文 件系统序列化I/O操作请求做快速处理响应。

【背景技术】
[0002] 在计算机数据存储和容灾备份领域中,需要针对文件系统的序列化I/O操作进行 分类,然后采取相应的处理方法。实现对文件系统的序列化I/O操作分类的依据条件有多 种,根据操作对象文件的路径名称是最常用的依据条件,本发明就是针对根据操作对象文 件的路径名称这种依据条件提出的。
[0003] 判断一条文件路径名称与另一个文件路径名称的层级从属关系,简单的方法是 将二者进行字符串比较。但是当文件的路径名称作为分类条件依据时,就需要判断一条文 件路径名称与规则集一系列的文件路径名称之间的关系,对于大量的序列化I/O操作来说 每个操作都要进行分类,这种遍历式的字符串匹配是相当低效的。另外,传统上还可以把 一系列的文件路径名称根据路径名称的目录层级关系这一特点先转化成树状结构,然后将 每个操作对象的文件路径名称中的每一层与树中的每一层进行比较来遍历达到分类的目 的。这种方法在遍历的过程中可以忽略不符合条件的分支,一定程度上提高了遍历的效率, 但这种方法受到条件树的结构的影响,极端的情况是这些作为分类条件的文件路径名称之 间各自独立没有关联,那么组成的就不是一棵树,而是由单条枝干的树组成的森林,此情况 下匹配的效率与字符串遍历匹配的效率差不多,而此情况在实际应用中又是常见的。
[0004] 为了解决序列化I/O操作分类中以文件名称作为分类条件依据时匹配条件的效 率问题,本发明实现一种新的分类的方法,该方法与遍历式的字符串匹配或目录分层后树 型匹配的分类方法比,效率高,实现简单。


【发明内容】

[0005] 本发明实现的方法针对序列化I/O操作分类中以文件路径名称作为分类条件依 据时如何提高效率而提出的,该方法通过建立散列表和映射位图的方式并经过散列查询和 位图与或操作就能快速判断序列化I/O操作对象的文件名称与规则集中一系列的文件路 径名称之间的层级从属关系,从而达到快速分类的目的。
[0006] 本发明实现的方法可以分成两个部分:一,建立散列(hash)表和映射位图 (bitmap),二,利用散列查询位图操作的快速分类处理。本发明具体采用的技术方案如下:
[0007] -种文件系统序列化操作的分类方法,其步骤包括:
[0008] 1)预先设定分类的规则集,对规则集中的规则按顺序进行编号;
[0009] 2)将规则集中每条规则的文件路径名称根据目录层级进行分解,将每层目录名称 为目录元,将从路径根开始所经过的目录元个数称为目录元深度,分解后的目录元包括名 称、深度和规则编号;
[0010] 3)将目录元的名称和深度作为因子,通过hash函数建立目录元的散列表和映射 位图;
[0011] 4)为操作对象初始化一路径记录表,该路径记录表包含一个全部位设置为1的映 射位图和用来记录匹配到的规则号的一维数组;
[0012] 5)分解操作对象中的文件路径名称,分解后的目录元包括名称和深度;
[0013] 6)将分解得到的目录元的名称和深度作为因子,通过hash函数计算的值查找散 列表中对应的散列表单元;
[0014] 7)利用步骤4)所述路径记录表,在目录元找到散列表单元后进行位图操作,确认 该文件路径名称匹配的规则号;
[0015] 8)按操作对象分解得到的目录元的深度从浅到深的顺序重复执行步骤6)?7), 直到循环过程结束,得到分类结果。
[0016] 进一步地,还包括步骤9),该步骤对得到的分类结果进行分析处理。
[0017] 下面具体说明本发明的两个部分的各个步骤。
[0018] 一,根据预先设定分类的规则集建立散列表和映射位图。
[0019] 预先设定分类的规则集是由多条规则组成的,每规则元素包含如下的两个部分内 容:
[0020] l>path,文件路径,即匹配条件。该文件路径是指一条完整的单一的文件路径,而 不是多个路径组成的路径集。
[0021] 2>action,动作,即处理方法。指对文件系统序列化操作采用不同的后续处理,如 忽略,监控,同步等。
[0022] 1需要对规则集中的规则按顺序从1开始进行数字编号,同时最大编号决定映射 位图(bitmap)位数规模。
[0023] 2将规则集中每条规则的文件路径名称根据目录层级进行分解。文件路径名称的 特点是每两层目录间使用"斜杆"(/)或"反斜杆"(\)分隔符来分隔开,为便于叙述,被分 隔符隔开的每层目录名称为目录元,从路径根开始到该目录元所经过的目录元个数称为目 录元深度。分解后的目录元由名称,深度,规则编号三个元素构成。
[0024] 3建立目录元的散列(hash)表和映射位图(bitmap)。将目录元的名称和深度作 为因子通过hash函数建立目录元的散列表,用链表来解决hash冲突问题。散列表单元中 需要记录目录元的名称、深度、规则号映射位图(初始全〇)、结束位映射位图(初始全〇)、 冲突链指针。在记录散列表单元的同时,根据目录元的规则编号,将该编号数字对应的那一 位规则号映射位图置1。如果该目录元是路径名称中的最后一层,还要将该编号数字对应的 那一位结束位映射位图置1,表示路径名称的结束。在不同的规则中的目录元有可能是相同 的,即名称和深度相同(规则编号不同),此时在建立目录元的散列表时多个目录元将对应 到同一个散列表单元上(不是hash冲突,hash冲突时的名称和深度不同),只需在散列表 单元的映射位图有多个位被置位就能表示该目录元对应到多个不同的规则。
[0025] 二,利用散列查询位图操作的快速分类处理。
[0026] 在建立散列表和映射位图后,就可以根据这套建立好的规则体系,对序列化10 操作中基于操作对象的文件路径名称进行分类处理了,这个称为分类处理过程。完成分类 的过程可分成以下几个步骤。
[0027] 4为操作对象初始化一个路径记录表。路径记录表主要包含一个全部位设置为1 的bitmap (映射位图)和用来记录匹配到的规则号的一维数组。
[0028] 5分解操作对象中的文件路径名称。分解的方法与分解规则中的文件路径名称的 方法相同。分解后的目录元由名称和深度两个元素构成。
[0029] 6分解后的目录元查找散列表单元。将步骤5中分解得到的目录元的名称和深度 作为因子通过hash函数计算的值找到在散列表中对应的散列表单元,查找到的散列表的 单元的目录元名称和深度与该目录元是相同的。
[0030] 7目录元找到散列表单元后进行位图操作,确认该文件路径名称匹配的规则号。按 步骤6描述的目录元查找散列表单元的方法,每成功查找到一次,将步骤4中所述的操作对 象的路径记录表中的bitmap与散列单元中的规则号映射位图做相与的操作,得到的操作 结果A记录到bitmap中,bitmap中显示为1的位表示到本次查找的深度为止该操作对象 的文件名称与该位所对应的规则号的文件路径名称的前面部分是相同的。操作结果A再与 散列单元中的结束位映射位图做相与操作,得到操作结果B,操作结果B中显示为1的位表 示该位对应的规则号的文件路径名称已完整没有后续的目录元,即操作对象的文件路径名 称是该规则的文件路径名称的子目录或相同目录,在操作对象的路径记录表的匹配规则号 数组中记录下该位对应的规则号,说明操作对象匹配到该规则。
[0031] 8循环过程和结束。按操作对象分解得到的目录元的深度从浅到深的顺序进行步 骤6中的查找,查找到后进行步骤7中的位图操作和做记录。满足如下三个条件之一则循 环结束:一,步骤6中查找失败,即操作对象的某个深度的目录元没有找到相应的散列表单 元,说明规则集中已没有可以匹配的规则;二,步骤6中,深度已超过该文件路径名称的目 录元深度,说明该文件路径名称已经到完整地结尾;三,在步骤7中,操作结果A为全0时, 说明文件路径名称不能再更深的深度与规则集中任何规则的文件路径名称相匹配。
[0032] 9分类结果的分析处理。经过步骤6,步骤7的循环结束后的得到了操作对象的路 径记录表的匹配规则号数组,数组记录的长度表示匹配的规则的数量,数组记录的顺序表 示匹配规则中的文件路径名称的深度从浅到深的顺序,每个数组单元记录的是匹配的规则 号,通过规则号就可以找到规则设定的处理策略(action)。在决定对操作对象采取处理策 略时,利用该规则号数组可以非常灵活:可以对所有匹配到的规则的策略都处理,即全匹配 处理;也可以只对数组第一个记录的匹配规则的策略进行处理,即最短(深度最小)匹配处 理;也可以只对数组最后一个记录的匹配规则的策略进行处理,即最长(深度最大)匹配处 理。
[0033] 本发明的有益效果是:将二维的判断一个文件路径名称与一系列的文件路径名称 集合的层级从属关系的过程,变成一维的扫描这个文件路径名称分解成目录元并通过简单 的散列查找和位图操作的过程,这在需要大量这种分类判断的文件系统序列化10操作中 能够极大限度的提高效率。这是在本发明的具体实施过程的得到验证的结论。

【专利附图】

【附图说明】
[0034] 图1是是本发明方法的步骤流程图。
[0035] 图2是建立散列表和映射位图示例图。
[0036] 图3是利用散列查找和位图操作分类流程图。

【具体实施方式】
[0037] 本发明具体实施在容灾备份系统的工作机端,在工作机端挂接操作系统的文件 系统后会截获大量的文件系统系列化10操作,该容灾备份系统需要根据截获的系列化10 操作的操作对象的文件路径名称,判断是否满足规则集设定的条件,进而判断是否需要同 步到灾备机。在此大量的判断的过程中就使用到本发明提出的文件系统序列化10操作依 据操作对象的文件路径名称的分类方法。图1是是本发明方法的步骤流程图,图3是该方法 中建立散列表和映射位图示例图,图3是该方法中利用散列查找和位图操作分类流程图。 下面就结合图1至图3,通过具体的例子来介绍本发明的方法。
[0038] 第一部分,建立散列表和映射位图。
[0039] 1假设预先设定的规则集是:
[0040] 规则1,路径:/uSiy,策略:备份;
[0041] 规则2,路径:/usr/bin/,策略:忽略;
[0042] 规则 3,路径:/usr/local/bin/,策略:忽略。。。
[0043] 为描述方便就列举3条规则,实际上规则越多越能现在本发明的方法对分类性能 提高的效果。另假设规则集设定的是最长匹配的处理方式,即如果操作对象的文件路径名 称同时是两条以上规则中文件路径名称的子路径时,选定规则中文件路径名称的层级多的 规则为匹配策略。因为规则只有3条,所以映射位图的规模3位就够。
[0044] 2分解规则的文件路径名称(图2的S20)。例如,规则3可分解为usr, local, bin 三个目录元,记录为(usr,深度1,规则3),(local,深度2,规则),(bin,深度3,规则3)。 其他规则路径也以此分解。
[0045] 3建立散列表和映射位图(图2的S30)。设前两个规则已设置好,以规则3为例, 规则3中有usr, local, bin三个目录元。第一个目录元usr将〈usr,深度1>作为hash 因子计算hash值并在散列表中找到散列单元,发现〈usr,深度1>已经存在(这里不是指 hash冲突),则只需在该散列单元下的规则号映射位图的第三位值1,由于1,2两条规则都 有〈usr,深度1>,所以规则号映射位图111。第二个目录元local,〈local,深度2>找到散 列单元后,同样是规则号映射位图第三位置1,但由于1,2两条规则没有〈local,深度2>的 目录元,所以规则号映射位图置位后是001。第三个目录元,〈bin,深度3>找到散列单元后, 前面规则没有〈bin,深度3>的目录元,规则号映射位图第三位置1,因为是路径结尾,所以 结束置映射位图第三位置1。规则集最后的到4个散列单元和相应的映射位图:
[0046] 〈usr,深度1>,规则号位映射图:111,结束位映射图:100 ;
[0047] 〈bin,深度2>,规则号位映射图:010,结束位映射图:010 ;
[0048] 〈local,深度2>,规则号位映射图:001,结束位映射图:000 ;
[0049] 〈bin,深度3>,规则号位映射图:001,结束位映射图:001。
[0050] 第二部分,利用散列查询位图操作的快速分类处理。
[0051] 4先在截获的文件系统序列化10操作中找到操作对象的文件路径名称,比如/ usr/local/bin/mysql/mysql. tmp,为其初始化一记录结构(图 3 的 S40):
[0052] 映射位图:111,匹配规则号数组:{0,0,0}。
[0053] 5将文件名称分解(图3的S50)为〈名称,深度〉的目录元形式〈usr, 1>,〈local ,2>,〈bin, 3>,〈mysql, 4>,〈mysql. tmp, 5>。该分解的过程不用特意单独扫描,可在使用目录 查找散列单兀时再进行,扫描一个使用一个。
[0054] 6查找目录元的散列单元(图3的S60)。先从深度1开始,〈usr,1>做因子计算 hash值可以查找到散列单元:〈usr,深度1>,规则号位映射图:111,结束位映射图:100。
[0055] 7目录元找到散列表单元后进行位图操作(图3的S70)。操作对象的映射位图是 lll,〈usr,深度1>的规则号位映射图是111,相与的操作结果111,再记录到操作对象的映 射位图。再将相与的操作结果111与〈usr,深度1>的结束位映射位图100相与得到100, 第一位是1,说明第一条规则已是完整的路径,即操作对象是匹配到第一条,匹配数组记录 匹配的规则号{1,0, 0}。位图操作完成后该对象的记录结构是:映射位图:111,匹配规则号 数组:{1,0,0}。
[0056] 8重复6, 7的循环过程(图3的S80),继续处理该对象的文件路径名称中后续的目 录元〈local, 2>,〈bin, 3>,〈mysql, 4>,〈mysql. tmp, 5>,包括判断位图操作结果是否全0 (图 3的S81),和判断文件名称是否已到结尾(图3的S82),这个过程中,该对象的记录机构的 变化如下所示:
[0057] 初始,映射位图:111,匹配数组:{0,0,0};
[0058] 与〈usr,1>的散列单元操作后,映射位图:111,匹配数组:{1,0,0};
[0059] 与〈1(^1,2>的散列单元操作后,映射位图:001,匹配数组:{1,0,0} ;
[0060] 与<bin,3>的散列单元操作后,映射位图:001,匹配数组:{1,3,0};
[0061] 〈mysql,4>未找到散列单元(图3的S82),循环结束。
[0062] 9结果分析(图3的S90)。通过上述的散列查询和位图操作后,该对象的记录结 构是的规则号匹配数组是:{1,3,0},说明匹配了规则1,3,由于采用最长匹配的方式,于是 就匹配到规则3的策略
[0063] 通过上述具体例子的详细描述,可以看出本发明提出的基于文件路径名称的序列 化10操作的分类方法,具有一次扫描文件路径名称和快速散列查找及高效位图操作的优 点,对于大量高速的序列化10操作能大幅提高分类的效率,而其更普遍的意义在于对于其 他应用场合下基于文件路径名称的层级从属关系的文件分类也是高效,且实现简单的方 法。本发明的特点是建立散列表和映射位图,通过散列查找和位图操作实现快速的分类。 [0064] 以上实施步骤仅用以说明而非限制本发明的技术方案,不脱离本发明精神和范 围的任何修改或局部修改,均应涵盖在本发明的权利要求范围当中。
【权利要求】
1. 一种文件系统序列化操作的分类方法,其步骤包括: 1) 预先设定分类的规则集,对规则集中的规则按顺序进行编号; 2) 将规则集中每条规则的文件路径名称根据目录层级进行分解,将每层目录名称为目 录元,将从路径根开始所经过的目录元个数称为目录元深度,分解后的目录元包括名称、深 度和规则编号; 3) 将目录元的名称和深度作为因子,通过hash函数建立目录元的散列表和映射位图; 4) 为操作对象初始化一路径记录表,该路径记录表包含一全部位设置为1的映射位图 和用来记录匹配到的规则号的一维数组; 5) 分解操作对象中的文件路径名称,分解后的目录元包括名称和深度; 6) 将分解得到的目录元的名称和深度作为因子,通过hash函数计算的值查找散列表 中对应的散列表单元; 7) 利用步骤4)所述路径记录表,在目录元查找到散列表单元后进行位图操作,确认该 文件路径名称匹配的规则号; 8) 按操作对象分解得到的目录元的深度从浅到深的顺序重复执行步骤6)?7),直到 循环过程结束,得到分类结果。
2. 如权利要求1所述的方法,其特征在于:步骤1)中预先设定分类的规则集由多条规 则组成的,每规则元素包含如下两部分内容: a) path,文件路径,即匹配条件,指一条完整的单一的文件路径; b) action,动作,即处理方法,指对文件系统序列化操作采用不同的后续处理,包括忽 略,监控,同步。
3. 如权利要求1所述的方法,其特征在于:步骤3)中,散列表单元中记录目录元的名 称、深度、规则号映射位图、结束位映射位图、冲突链指针;在记录散列表单元的同时,根据 目录元的规则编号,将该编号数字对应的那一位规则号映射位图置1 ;如果该目录元是路 径名称中的最后一层,还要将该编号数字对应的那一位结束位映射位图置1,表示路径名称 的结束。
4. 如权利要求3所述的方法,其特征在于:步骤3)中,对于在不同的规则中目录元相 同的情况,即名称和深度相同,规则编号不同,此时在建立目录元的散列表时将多个目录元 对应到同一个散列表单元上,用散列表单元的映射位图的多个位被置位表示该目录元对应 到多个不同的规则。
5. 如权利要求1所述的方法,其特征在于,步骤7)的具体方法是:按步骤6)描述的目 录元查找散列表单元的方法,每成功查找到一次,将步骤4)中所述的操作对象的路径记录 表中的映射位图与散列单元中的规则号映射位图做相与的操作,得到的操作结果A记录到 映射位图中,映射位图中显示为1的位表示到本次查找的深度为止该操作对象的文件名称 与该位所对应的规则号的文件路径名称的前面部分是相同的;操作结果A再与散列单元中 的结束位映射位图做相与操作,得到操作结果B,操作结果B中显示为1的位表示该位对应 的规则号的文件路径名称已完整没有后续的目录元,即操作对象的文件路径名称是该规则 的文件路径名称的子目录或相同目录,在操作对象的路径记录表的匹配规则号数组中记录 下该位对应的规则号,说明操作对象匹配到该规则。
6. 如权利要求5所述的方法,其特征在于,步骤8)中循环结束的条件是:一,步骤6)中 查找失败,即操作对象的某个深度的目录元没有找到相应的散列表单元,说明规则集中已 没有可以匹配的规则;二,步骤6)中,深度已超过该文件路径名称的目录元深度,说明该文 件路径名称已经到完整地结尾;三,在步骤7)中,操作结果A为全0时,说明文件路径名称 不能再更深的深度与规则集中任何规则的文件路径名称相匹配。
7. 如权利要求1至6中任一项所述的方法,其特征在于,还包括步骤9),该步骤对步骤 8)所述分类结果进行分析处理:步骤6)?7)的循环结束后得到操作对象的路径记录表的 匹配规则号数组,数组记录的长度表示匹配的规则的数量,数组记录的顺序表示匹配规则 中的文件路径名称的深度从浅到深的顺序,每个数组单元记录的是匹配的规则号,通过规 则号可以找到规则设定的处理策略。
8. 如权利要求7所述的方法,其特征在于:步骤9)在决定对操作对象采取处理策略 时,对所有匹配到的规则的策略都处理,即全匹配处理;或者只对数组第一个记录的匹配规 则的策略进行处理,即最短匹配处理;或者只对数组最后一个记录的匹配规则的策略进行 处理,即最长匹配处理。
【文档编号】G06F17/30GK104216980SQ201410441179
【公开日】2014年12月17日 申请日期:2014年9月1日 优先权日:2014年7月24日
【发明者】陈勇铨, 周华, 胡军擎 申请人:英方软件(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1