CN102110156A - 基于选择性扫描的文件系统的元数据抽取方法及装置 - Google Patents
基于选择性扫描的文件系统的元数据抽取方法及装置 Download PDFInfo
- Publication number
- CN102110156A CN102110156A CN 201110042837 CN201110042837A CN102110156A CN 102110156 A CN102110156 A CN 102110156A CN 201110042837 CN201110042837 CN 201110042837 CN 201110042837 A CN201110042837 A CN 201110042837A CN 102110156 A CN102110156 A CN 102110156A
- Authority
- CN
- China
- Prior art keywords
- directory
- metadata
- scanning
- subobject
- variance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000002123 temporal effect Effects 0.000 claims abstract description 55
- 238000000605 extraction Methods 0.000 claims abstract description 17
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 8
- 230000008676 import Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 10
- 239000000284 extract Substances 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000013517 stratification Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013549 information retrieval technique Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于选择性扫描的文件系统的元数据抽取方法及装置,该方法包括以下步骤:A.定义目录分组模式;B.根据扫描策略加载目录组;C.对目录排序并扫描;D.判断是否扫描完成,如果否则选择要扫描的目录并初始化其子对象元数据列表;E.判断是否扫描完成,如果否则读取下一个子对象元数据并加入子对象元数据列表中,更新时间局部性目录组;F.否则更新时间戳方差目录组;和G.判断当前扫描是否为基础扫描,如果是则更新当前目录的子目录数组并转至步骤D,否则直接转至步骤D。应用本发明实施例的元数据抽取方法,极大的提高了抽取效率。另外,本发明设计简单,易于实现。
Description
技术领域
本发明涉及外挂方式元数据搜索技术领域,特别涉及一种基于选择性扫描的文件系统的元数据抽取方法及装置。
背景技术
文件系统的元数据包括目录和普通文件的属性,以及目录结构等。文件的属性包括文件名、权限、时间、文件大小和数据块的索引。目录的属性包括目录名、权限、时间和上述目录所包含的文件和子目录等目录内容。
随着现代文件系统的规模的日益增大,文件系统的元数据搜索在存储管理环节扮演的地位日益重要,逐渐成为管理员不可或缺的工具之一。与广为人知用于数据定位和找寻的桌面搜索系统不同,元数据搜索主要被系统管理员用于监视文件系统的运行状况和了解文件系统当前的占用和构成情况。元数据查询的结果主要用于回答诸如“哪个目录(树)或者用户占用了最多的空间?”或者“哪些文件已经不被使用从而可以归档或者移动到优先级更低的设备上去?”。这类信息可用于指导空间的管理和预留,负载均衡,文件系统的优化,以及层次化的存储管理等。
出于性能和稳定性的考虑,实际应用的产品级的文件系统目前并不提供内建的对元数据搜索的支持。因此,目前的元数据搜索的解决方案通常是通过外挂工具(或服务)实现。这类工具(或服务)通过维护目标文件系统的元数据的完整副本,利用现代数据库和信息检索技术,实现高效的元数据查询操作。这类解决方案所面临的一个主要挑战是如何快速地获得目标文件系统的元数据生成需要的数据副本以及在目标文件系统变化时,实现真实元数据与其副本之间的高效同步,即元数据的获得和同步。
元数据搜索的挑战主要来自以下几个方面,首先,磁盘的固有的特性和文件系统的发展趋势导致元数据抽取在相当长的时期内仍将是一个非常耗时的任务。磁盘空间的指数级增长(每年翻一番)与文件大小的线性增长(每年15%)的巨大差距导致平均每个磁盘上的文件数目不断增多,但与之相对的数据访问性能提升却不大。其直接后果就是通过扫描的方式抽取单个磁盘上的文件的元数据信息日益成为一个耗时的任务。
其次,文件系统的层次化的数据模型和迭代式的元数据访问接口(readdir()和stat())对于元数据的抽取操作而言是很低效的。文件系统标准接口的迭代模型导致了元数据抽取中对于每个文件必须进行一次stat()操作。更糟糕的是,为了日常数据读取时减少磁头的移动,改进数据的访问性能,几乎所有的文件系统都通过某些机制实现元数据和数据的协同放置。其直接后果就是导致了元数据分散在整个文件系统中,致使元数据抽取中存在大量的随机读写,从而严重降低了元数据抽取的性能。
再次,分布式文件系统的网络通信开销是也是一个潜在的瓶颈。由于网络时延和协议开销,跨网络的Stat()操作相对低效。例如:根据我们的实测,用于产品级的文服务器的商用网络文件系统单个连接每秒钟也仅能够完成约1000个stat()操作。
此外,简单的平行扩展(如:多线程并行扫描)由于其潜在的大量系统资源消耗和对正常文件系统工作负载的干预,无法成为元数据抽取的理想解决方案。
由于多媒体、数字办公为代表的非结构化数据的迅速增加和随之而来的文件系统规模的不断扩大,存储系统的管理员对于高效的元数据抽取的解决方案的需求日趋迫切。已经在传统的桌面搜索系统中取得巨大成功的相对常熟的解决方案在新的大规模分布式文件系统中仍面临新的技术挑战,主要表现在以下几个方面:
A.周期性扫描的解决方案效率底下,无法满足大规模文件系统的要求。
作为一种最有效也最直接的解决方案,周期性扫描的方式以其无可比拟的简单性、可靠性和可移植性广泛应用于桌面搜索。但由于存在对于每个文件和目录进行stat()操作所带来的随机读写和可能的网络通信(分布式或网络文件系统中)的巨大开销,导致该方案在面对具有亿级数量文件的大型文件系统时,存在严重的性能瓶颈问题。例如,我们实测的商用系统中,扫描一个含有1900万个文件的网络文件系统需要花费7个多小时。因此,频繁的全面扫描现代大规模文件系统是不实用的。
B.基于文件系统修改通知的机制不适合大规模分布式文件系统。
另一个广泛应用于桌面搜索(如:Google的桌面搜索)的解决方案是借助文件系统内建的事件通知机制。这种方式能够让订阅通知的应用程序确切地知道那些文件被修改了以及什么时候修改的。然而,依据操作系统内部的不同实现机制,这种方式可能带来较大的运行时开销。例如:由于inotify需要将所有监听的文件的索引节点(inode)保存在内存中,如果不对其数目加以限制,一个亿级文件系统给内核的内存管理系统的压力将是不可接受的。此外,缺乏分布式协议的支持和无法跨网络应用是这类解决方案不适用与大规模分布式文件系统的另一个很难克服的障碍。
C.采用非标准接口,面向特定的文件系统的解决方案存在兼容性问题。
鉴于上述两种解决方案的局限性,部分文献中提出了一些不兼容标准的解决方案。比较典型的是spyglass系统中提出的基于快照的元数据抽取。该方案的高效性是利用了WAFL文件系统本身的特性,但无法平滑地推广到现有的其他文件系统。此外,大型文件系统的管理员出于对可靠性和稳定性的考虑,往往不愿意采用这种修改文件系统本身的解决方案。甚至某些商用的文件系统由于许可证的限制无法获取相应的源代码,导致这种方案根本就无法被应用。
发明内容
本发明的目的旨在至少解决上述的技术缺陷之一。
为此,本发明的目的在于提出一种快速的基于选择性扫描的文件系统的元数据抽取方法。
本发明的另一目的在于提出一种基于选择性扫描的文件系统的元数据抽取装置。
为了实现上述目的,本发明第一方面的实施例提出一种基于选择性扫描的文件系统的元数据抽取方法,包括以下步骤:A.根据时间局部性、目录子对象时间戳方差和子对象数分别对目录进行分组以得到对应的时间局部性目录组、时间戳方差目录组和子目录数组;
B.根据预定义的扫描策略加载相应目录组中的目录并对所述目录进行去重;
C.对所述目录排序并根据排序顺序依次对目录组进行扫描;
D.判断所述目录是否扫描完成,如果未完成则选择下一个要扫描的目录并初始化其对应的子对象元数据列表;
E.进一步判断当前扫描目录是否扫描完成,如果判断为未完成则读取所述当前扫描目录的下一个子对象元数据并加入所述子对象元数据列表中,并通过时间局部性窗口更新所述时间局部性目录组;
F.如果判断结果为完成则根据子对象元数据列表的元数据计算所述当前目录的目录子对象时间戳方差并通过时间戳方差分组器更新所述时间戳方差目录组;和
G.判断当前扫描是否为基础扫描,如果是则更新所述当前扫描目录的所述子目录数组并转至步骤D,否则直接转至步骤D。
根据本发明实施例的基于选择性扫描的文件系统的元数据抽取方法,通过基于启发式选择性扫描的解决方案。通过探索文件系统元数据变化的内在模式,采用启发式算法,将扫描限制在那些可能会改变的目录下,从而在很大程度上缩减了需要扫描的目录数,极大地提高了元数据的抽取效率。在典型的文件系统中,通过采用本发明实施例的基于选择性扫描的文件系统的元数据抽取方法相比传统的典型文件系统中的元数据抽取方法,其元数据抽取效率提高两个数量级。
在本发明的一个实施例中,所述步骤E进一步包括:如果所述步骤E的执行过程出现异常,则判断所述异常是否为可恢复错误,如果是则继续执行步骤E,否则终止执行。
在本发明的一个实施例中,所述步骤E中通过时间局部性窗口更新所述时间局部性目录组,进一步包括:判断子对象元数据是否属于所述时间局部性窗口范围内;如果所述子对象元数据属于所述时间局部性窗口范围内,则建立或更新所述时间局部性窗口的文件列表中相应子对象对应的表项;如果所述子对象元数据不属于所述时间局部性窗口范围,则删除所述时间局部性窗口的文件列表中相应子对象对应的表项;和,判断所述子对象的修改时间与当前时间之差是否大于所述时间局部性窗口大小,如果判断大于则删除相应的表项,并获取剩余文件列表的父目录。
在本发明的一个实施例中,所述时间局部性窗口包括:窗口大小,所述窗口大小为子对象的修改时间与当前时间的之差的最大值;最近修改过的文件列表,包括存储被所述时间局部性窗口记录的所有文件及所述文件的修改时间,所述文件列表的表项包括相应文件的全路径及最后修改时间戳。
在本发明的一个实施例中,所述步骤F中通过所述时间戳方差分组器更新所述时间戳方差目录组,进一步包括:判断子对象元数据是否属于所述时间戳方差分组器;和如果所述子对象元数据属于所述时间戳方差分组器,则将其加入所述时间戳方差分组器的时间戳方差目录列表;计算所述时间戳方差目录组的待扫描目录列表并返回所述待扫描目录的路径。
在本发明的一个实施例中,所述时间戳方差分组器包括:确定所述时间戳方差分组器所保留方差区间的方差上界和方差下界;目录列表,包括存储没有被所述时间戳方差分组器过滤掉的目录列表,所述目录列表的表项包括相应目录的全路径和其对应的对象方差。
在本发明的一个实施例中,所述步骤G中更新所述当前扫描目录的子目录数组,进一步包括:7a.输入所述当前扫面目录的信息,其中,所述当前扫描目录的信息包括全路径、依赖计数和子对象数;7b.判断所述依赖计数是否为0;7c.如果所述依赖计数不为0,则判断所述全路径是否属于未完成列表,如果所述全路径属于未完成列表,则停止执行并退出,否则将所述当前扫描目录加入所述未完成列表后停止执行并退出。7d.如果所述依赖计数为0,则判断所述全路径是否为根目录;如果所述全路径为根目录,则定制执行并退出;7e.否则继续判断所述子对象数是否大于预定临界值;7f.如果所述子对象数大于预定临界值,则输出相应的全路径和子对象数为子树,并将所述子树的父目录子对象数减一与父目录依赖计数减一,并转至7b继续对所述父目录的依赖计数进行判断;和7g.如果所述子对象数小于预定临界值,则把当前扫描目录的子对象数加到相应父目录的子对象数上,并将所述相应父目录的依赖计数减一,并转至7b继续对所述相应父目录的依赖计数进行判断。
在本发明的一个实施例中,所述基础扫描为以整个文件系统的名字空间为操作对象的一次全扫描。
本发明第二方面的实施例提出一种基于选择性扫描的文件系统的元数据抽取装置,包括:策略管理模块,所述策略管理模块用于根据预用户定义的扫描策略管理系统中的所有策略并负责启动相应的元数据扫描;目录分组模块,所述目录分组模块用于根据用户预定义的分组模式、时间局部窗口、时间戳分组器和子对象数分组器完成对目录的分组;调度模块,所述调度模块用于根据所述策略管理模块的扫描策略对所述目录分组模块的扫描目录进行调度;元数据抽取模块,所述元数据抽取模块用于从调度模块中获取所述扫描目录的子对象的元数据,并在所述扫描目录的扫描过程中更新所述扫描目录的分组;和存储模块,所述存储模块用于存储所述元数据抽取模块的元数据抽取结果。
根据本发明实施例的基于选择性扫描的文件系统的元数据抽取装置,结合本发明第一方面实施例的文件元数据抽取方法,能够节省在大型文件系统的元数据抽取过程的时间。
在本发明的一个实施例中,所述元数据抽取模块还用于所述元数据抽取过程出现异常时判断所述异常是否为可恢复错误,如果所述错误为可恢复错误则继续执行判断所述当前扫描目录是否扫描完成,否则终止程序运行。
在本发明的一个实施例中,所述目录分组模块的时间局部性窗口进一步包括窗口大小和最近修改的文件列表,其中,所述窗口大小为子对象的修改时间与当前时间的之差的最大值,所述最近修改过的文件列表包括存储被所述时间局部性窗口记录的所有文件及所述文件的修改时间,所述文件列表的表项包括相应文件的全路径及最后修改时间戳。
在本发明的一个实施例中,所述时间局部性窗口用于判断子对象元数据是否属于所述时间局部性窗口范围内,如果所述子对象元数据属于所述时间局部性窗口范围,则在所述时间局部性窗口的文件列表中建立或更新相应的表项,如果所述子对象元数据不属于所述时间局部性窗口范围,则删除所述时间局部性窗口的文件列表中相应表项。
在本发明的一个实施例中,所述目录分组模块的时间戳分组器进一步包括方差上界和方差下界及目录列表,其中,所述方差上界和方差下界用于确定所述时间戳方差分组器所保留方差区间所述目录列表的表项包括相应目录的全路径和其对应的目录对象时间戳方差。
在本发明的一个实施例中,所述时间戳分组器用于判断子对象元数据是否属于所述时间戳方差分组器,如果所述子对象元数据属于所述时间戳方差分组器,则将其加入所述时间戳方差分组器的目录列表。
在本发明的一个实施例中,所述目录分组模块的分组模式包括:时间局部窗口分组模式、时间戳方差分组器分组模式和子对象数分组器分组模式。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的基于选择性扫描的文件系统的元数据抽取方法的流程图;
图2为本发明实施例的更新子目录分组的流程图;和
图3为本发明实施例的基于选择性扫描的文件系统的元数据抽取装置的结构图。
具体实施方式
下面详细描述本发明的全部实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
下面参考附图1-2首先描述根据本发明实施例的基于选择性扫描的文件系统的元数据抽取方法。
如图1所示,为本发明实施例的基于选择性扫描的文件系统的元数据抽取方法的流程图。具体而言,所述方法包括以下步骤:
步骤S101,目录组加载。
具体地,读取相应的扫描策略,并根据扫描策略,加载需要扫描的目录组,其中,扫描策略由用户自定义得到。
步骤S102,排序去重。具体而言,由于同一个扫描策略可以指定多个扫描的目录组,而多个目录组可能包含重合的目录,所以在完成对目录树的去重操作,对要扫描的目录组按照名字空间的字典序进行排序。
步骤S103,判断扫描是否完成。如果判断扫描已经完成,则直接退出。
步骤S104,如果判断扫描未完成,则选取下一个要扫描的目录。
步骤S105,初始化上述扫描目录的子对象元数据列表,以下对所述子对象元数据列表简称子对象表。
步骤S106,判断是否完成上述扫描目录的扫描。
步骤S107,如果判断尚未完成上述扫描目录的扫描,则通过文件系统标准接口读取下一个子对象的元数据并将其加入上述初始化的子对象表中。
步骤S108,调用元数据存储接口模块(具体视外部需求而定)完成对元数据的存储。
步骤S109,利用时间局部行窗口机制更新和调整时间局部性组。
具体地,在本发明的一个实施例中,时间局部性窗口参考实现及其对应的目录分组的维护方法如下所示:
其中,时间局部性窗口至少包括:一个必要参数-窗口大小,指示应该被窗口记录的对象的年龄的最大值;一个核心组件-最近修改过的文件列表,存储被窗口记录的所有对象及其修改时间;文件列表对象的表项至少包括两个必要域-对象的全路径和对象的最后修改时间戳。
更为具体地,在本发明的一个实施例中,上述时间局部性窗口提供两个核心接口,接口Add负责判断一个文件系统对象是否被窗口所覆盖,如果判断为真,则将其加入时间局部性窗口的文件列表中。
接口GetDirList负责返回该窗口预测的需要扫描的目录列表。在返回列表的过程中,首先去掉那些已经不在窗口之内的文件,然后对于剩下的文件,获取其父目录,即为需要的对目录以时间局部性方式分组结果。当完成后跳转至步骤S106判断继续判断上述扫描目录。
步骤S110,如果步骤S106中判断结果为已完成上述扫描目录的扫描,则对上述扫描目录进行子对象时间戳的方差计算。
具体而言,子对象方差分组器参考实现及其目录分组的维护方法如下所示:
其中,上述子对象方差分组器至少包括:两个必要参数-方差上界和方差下界,用于确定该分组器所保留的方差的区间;一个必要核心组件-目录列表,存储没有被分组器过滤掉的目录的信息;目录列表的每个表项至少包括两个必要域-目录的全路径和其对应的对象方差。
更为具体地,所述子对象方差分组器提供两个核心接口,其中,接口Add负责判断一个目录对象是否被分组器所保留,如果是,则将其加入所述子对象方差分组器窗口的目录列表中。
接口GetDirList负责返回子对象方差分组器窗口预测的需要扫描的目录列表。与时间局部性分组器不同,子对象方差分组器的实现过程直接返回内部的目录列表组件内的路径以完成基于子对象时间戳方差的目录分组的调整。
步骤S112,判断当前扫描方式是否为基础扫描,在本发明的一些实施例中,基础扫描为以整个文件系统的名字空间为操作对象的一次全扫描。如果判断不是基础扫描,则直接转至步骤S103进行下一次的循环迭代。
步骤S113,当为基础扫描时,则更新并调整基于子对象数的目录分组,然后转至步骤S103进行下一次的循环迭代。
具体地,在本发明的一个实施例中,利用子对象数分组器对基于子对象数的目录进行分组,其实现过程及其对应目录分组维护方法如下:
其中,上述子对象数分组器至少包括:一个必要参数-子对象的数目阈值,用于确定当一个目录包含多少个子对象的时候就将其划分为一个单独的子目录树,以便在基础扫描时实现并行扫描或者多次扫描;一个必要的核心组件-子目录树列表。子目录树列表的每个表项至少包含三个必要域-子目录树的树根的全路径、目录树下子对象的数目以及最后一次扫描的时间戳。
如图2所示,为本发明实施例的更新子目录分组的流程图。由于在多线程的环境下统计一个目录下面的子对象的个数相对来说比较复杂,所以还需要的核心数据包括一个映射表(以下简称未完成列表),在本发明的一个优选实施例中,上述映射表为散列表,散列表能够提高效率,作用为保存当前已经扫描过但没有完成其子目录扫描的所有目录,并且扫描线程均可以访问该表,其上述映射表的键是目录的全路径,值是二元组(依赖计数,已知子对象数),依赖计数指的是该目录下面有多少个子目录。已知子对象数是已经扫描过的部分有多少个文件系统对象是该目录的子对象;名字空间分组结果表(可以用数组或者列表实现),该表为全局表,对于所有扫描线程均可参考。
更为具体地,在本发明的一个优选实施例中,参考图2,基于子对象数的目录进行分组的实现过程包括以下步骤:
需要理解:上述实现过程算法为内嵌算法,即图1中的步骤S113的具体实现,所以该算法的输入由步骤S113提供,退出后返回步骤S113中。
步骤S201,输入当前扫描的目录信息的三元组(全路径,依赖计数,子对象数)。
步骤S202,判断依赖计数是否为0。如果判断步骤S202不为0,则转至步骤S203,否则转至步骤S206。
步骤S203,判断全路径是否在未完成列表中。如果在未完成列表中,则直接转至步骤S205,否则转至步骤S204。
步骤S204,将当前目录加入未完成列表后转至步骤S205。
步骤S205,完成并退出。
步骤S206,判断全路径是否为根目录。如果是根目录,则转至步骤S205,否则转至步骤S207。
步骤S207,判断子对象数是否大于预定的临界值。如果大于预定的门限值,则直接转至步骤S210,否则转至步骤S208。
步骤S208,直接将当前目录的子对象数加到其父目录的子对象数上,并将父目录的依赖计数减一(当前目录及其子树不能成为一个独立的子树,将其并入父目录),并转至步骤S209。
步骤S209,用父目录元组代替当前元组后转到步骤S202继续迭代。
步骤S210,将输出二元组(path,子对象数)作为一颗子树(当前目录及其下面的子目录可以成为一个独立的子树),并转至步骤S211。
步骤S211,将父目录子对象数减一,父目录依赖计数减一,并转至步骤S209。
如果步骤213判断当前扫描不是基础扫描,则直接转入步骤203的主循环的下一次迭代。
步骤S114,如果步骤S107或步骤S108出现异常或错误,则判断上述错误或异常是否为致命错误,如果判断不是致命错误则转至步骤S106继续判断当前扫描目录是否完成。
步骤S115,当判断为致命错误后,则进行相应的错误处理并控制终止执行。
根据本发明实施例的元数据抽取方法,通过基于启发式选择性扫描的解决方案。通过探索文件系统元数据变化的内在模式,建立时间局部性目录组分组模式、时间戳方差目录组分组模式和子目录数组分组模式。采用启发式算法,将扫描限制在那些可能会改变的目录下,从而在很大程度上缩减了需要扫描的目录数,极大地提高了元数据的抽取效率。在典型的文件系统中,通过采用本发明实施例的基于选择性扫描的文件系统的元数据抽取方法相比传统的典型文件系统中的元数据抽取方法,其元数据抽取效率提高两个数量级。
以下结合附图3描述本发明实施例的基于选择性扫描的文件系统的元数据抽取装置。
如图3所示,为本发明实施例的基于选择性扫描的文件系统的元数据抽取装置的结构图。
根据本发明实施例的基于选择性扫描的文件系统的元数据抽取装置300包括策略管理模块310、目录分组模块320、调度模块330、元数据抽取模块340和存储模块350。
其中,所述策略管理模块310用于根据预用户定义的扫描策略管理系统中的所有策略并负责启动相应的元数据扫描。所述目录分组模块320用于根据用户预定义的分组模式、时间局部窗口、时间戳分组器和子对象数分组器完成对目录的分组。所述调度模块330用于根据所述策略管理模块310的扫描策略对所述目录分组模块320的扫描目录进行调度。所述元数据抽取模块340用于从调度模块330中获取所述扫描目录,并在所述扫描目录的扫描过程中所述更新所述扫描目录的分组。所述存储模块350用于存储所述元数据抽取模块340的元数据抽取结果(元数据副本)。
在本发明的一些实施例中,所述元数据抽取模块340还用于在所述元数据抽取过程出现异常时判断所述异常是否为可恢复错误,如果所述错误为可恢复错误则继续执行判断所述当前扫描目录是否扫描完成,否则终止程序运行。
在本发明的一些实施例中,所述目录分组模块320的时间局部性窗口进一步包括窗口大小和最近修改的文件列表,其中,所述窗口大小为子对象的修改时间与当前时间的之差的最大值,所述最近修改过的文件列表包括存储被所述时间局部性窗口记录的所有文件及所述文件的修改时间,所述文件列表的表项包括相应文件的全路径及最后修改时间戳。并且所述时间局部性窗口用于判断子对象元数据是否属于所述时间局部性窗口范围内,如果所述子对象元数据属于所述时间局部性窗口范围,则在所述文件列表中建立或者更新相应的表项,如果所述子对象元数据不属于所述时间局部性窗口范围,则删除所述文件列表的相应表项。
在本发明的一些实施例中,所述目录分组模块320的时间戳分组器进一步包括方差上界和方差下界及目录列表,其中,所述方差上界和方差下界用于确定所述时间戳方差分组器所保留方差区间所述目录列表的表项包括相应目录的全路径和其对应的对象方差。并且所述时间戳分组器用于判断子对象元数据是否属于所述时间戳方差分组器,如果所述子对象元数据属于所述时间戳方差分组器,则将其加入所述时间戳方差分组器的目录列表并返回所述目录列表的路径。
根据本发明实施例的基于选择性扫描的文件系统的元数据抽取装置,能够节省在大型文件系统的元数据抽取过程的时间。此外,该装置操作简单,易于实现。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (15)
1.一种基于选择性扫描的文件系统的元数据抽取方法,其特征在于,包括以下步骤:
A.根据时间局部性、目录子对象时间戳方差和子对象数分别对目录进行分组以得到对应的时间局部性目录组、时间戳方差目录组和子目录数组;
B.根据预定义的扫描策略加载相应目录组中的目录并对所述目录进行去重;
C.对所述目录排序并根据排序顺序依次对目录组进行扫描;
D.判断所述目录是否扫描完成,如果未完成则选择下一个要扫描的目录并初始化其对应的子对象元数据列表;
E.进一步判断当前扫描目录是否扫描完成,如果判断为未完成则读取所述当前扫描目录的下一个子对象元数据并加入所述子对象元数据列表中,并通过时间局部性窗口更新所述时间局部性目录组;
F.如果判断结果为完成则根据子对象元数据列表的元数据计算所述当前目录的目录子对象时间戳方差并通过时间戳方差分组器更新所述时间戳方差目录组;和
G.判断当前扫描是否为基础扫描,如果是则更新所述当前扫描目录的所述子目录数组并转至步骤D,否则直接转至步骤D。
2.根据权利要求1所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述步骤E进一步包括:
如果所述步骤E的执行过程出现异常,则判断所述异常是否为可恢复错误,如果是则继续执行步骤E,否则终止执行。
3.根据权利要求1所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述步骤E中通过时间局部性窗口更新所述时间局部性目录组,进一步包括:
判断子对象元数据是否属于所述时间局部性窗口范围内;
如果所述子对象元数据属于所述时间局部性窗口范围内,则建立或更新所述时间局部性窗口的文件列表中相应子对象对应的表项;
如果所述子对象元数据不属于所述时间局部性窗口范围,则删除所述时间局部性窗口的文件列表中相应子对象对应的表项;和,
判断所述子对象的修改时间与当前时间之差是否大于所述时间局部性窗口大小,如果判断大于则删除相应的表项,并获取剩余文件列表的父目录。
4.根据权利要求3所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述时间局部性窗口包括:
窗口大小,所述窗口大小为子对象的修改时间与当前时间的之差的最大值;
最近修改过的文件列表,包括存储被所述时间局部性窗口记录的所有文件及所述文件的修改时间,所述文件列表的表项包括相应文件的全路径及最后修改时间戳。
5.根据权利要求1所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述步骤F中通过所述时间戳方差分组器更新所述时间戳方差目录组,进一步包括:
判断子对象元数据是否属于所述时间戳方差分组器;和
如果所述子对象元数据属于所述时间戳方差分组器,则将其加入所述时间戳方差分组器的时间戳方差目录列表;
计算所述时间戳方差目录组的待扫描目录列表并返回所述待扫描目录的路径。
6.根据权利要求5所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述时间戳方差分组器包括:
确定所述时间戳方差分组器所保留方差区间的方差上界和方差下界;
目录列表,包括存储没有被所述时间戳方差分组器过滤掉的目录列表,所述目录列表的表项包括相应目录的全路径和其对应的对象方差。
7.根据权利要求1所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述步骤F中更新所述当前扫描目录的子目录数组,进一步包括:
7a.输入所述当前扫描目录的信息,其中,所述当前扫描目录的信息包括全路径、依赖计数和子对象数;
7b.判断所述依赖计数是否为0;
7c.如果所述依赖计数不为0,则判断所述全路径是否属于未完成列表,如果所述全路径属于未完成列表,则停止执行并退出,否则将所述当前扫描目录加入所述未完成列表后停止执行并退出。
7d.如果所述依赖计数为0,则判断所述全路径是否为根目录;如果所述全路径为根目录,则停止执行并退出;
7e.否则继续判断所述子对象数是否大于预定临界值;
7f.如果所述子对象数大于预定临界值,则输出相应的全路径和子对象数为子树,并将所述子树的父目录子对象数减一与父目录依赖计数减一,并转至7b继续对所述父目录的依赖计数进行判断;和
7g.如果所述子对象数小于预定临界值,则把当前扫描目录的子对象数加到相应父目录的子对象数上,并将所述相应父目录的依赖计数减一,并转至7b继续对所述相应父目录的依赖计数进行判断。
8.根据权利要求1所述的基于选择性扫描的文件系统的元数据抽取方法,其特征在于,所述基础扫描为以整个文件系统的名字空间为操作对象的一次全扫描。
9.一种基于选择性扫描的文件系统的元数据抽取装置,其特征在于,包括:
策略管理模块,所述策略管理模块用于根据预用户定义的扫描策略管理系统中的所有策略并负责启动相应的元数据扫描;
目录分组模块,所述目录分组模块用于根据用户预定义的分组模式完成对目录的分组;
调度模块,所述调度模块用于根据所述策略管理模块的扫描策略和所述分组模块的分组情况对当前元数据扫描进行调度;
元数据抽取模块,所述元数据抽取模块基于从调度模块中获取的所述扫描目录,完成对于目录下文件系统的对象的元数据的抽取,并在所述扫描目录的扫描过程中所述更新所述扫描目录的分组;和
存储模块,所述存储模块用于存储所述元数据抽取模块的元数据抽取结果。
10.根据权利要求9所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述元数据抽取模块还用于所述元数据抽取过程出现异常时判断所述异常是否为可恢复错误,如果所述异常为可恢复错误则继续执行判断所述当前扫描目录是否扫描完成,否则终止程序运行。
11.根据权利要求9所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述目录分组模块的时间局部性窗口进一步包括窗口大小和最近修改的文件列表,
其中,所述窗口大小为子对象的修改时间与当前时间的之差的最大值;所述最近修改过的文件列表包括存储被所述时间局部性窗口记录的所有文件及所述文件的修改时间,所述文件列表的表项包括相应文件的全路径及最后修改时间戳。
12.根据权利要求11所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述时间局部性窗口用于判断子对象元数据是否属于所述时间局部性窗口范围内,如果所述子对象元数据属于所述时间局部性窗口范围,则在所述时间局部性窗口的文件列表中建立或更新相应的表项,如果所述子对象元数据不属于所述时间局部性窗口范围,则删除所述时间局部性窗口的文件列表中相应表项。
13.根据权利要求9所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述目录分组模块的时间戳分组器进一步包括方差上界和方差下界及目录列表,
其中,所述方差上界和方差下界用于确定所述时间戳方差分组器所保留方差区间所述目录列表的表项包括相应目录的全路径和其对应的目录对象时间戳方差。
14.根据权利要求13所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述时间戳分组器用于判断子对象元数据是否属于所述时间戳方差分组器,如果所述子对象元数据属于所述时间戳方差分组器,则将其加入所述时间戳方差分组器的目录列表。
15.根据权利要求9所述的基于选择性扫描的文件系统的元数据抽取装置,其特征在于,所述目录分组模块的分组模式包括:
时间局部窗口分组模式、时间戳方差分组器分组模式和子对象数分组器分组模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110042837.9A CN102110156B (zh) | 2011-02-22 | 2011-02-22 | 基于选择性扫描的文件系统的元数据抽取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110042837.9A CN102110156B (zh) | 2011-02-22 | 2011-02-22 | 基于选择性扫描的文件系统的元数据抽取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102110156A true CN102110156A (zh) | 2011-06-29 |
CN102110156B CN102110156B (zh) | 2015-02-18 |
Family
ID=44174317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110042837.9A Active CN102110156B (zh) | 2011-02-22 | 2011-02-22 | 基于选择性扫描的文件系统的元数据抽取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102110156B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268288A (zh) * | 2014-10-21 | 2015-01-07 | 福州瑞芯微电子有限公司 | 一种基于ntfs的媒体库扫描方法及装置 |
CN104685496A (zh) * | 2012-09-28 | 2015-06-03 | 甲骨文国际公司 | 关系型数据库管理系统中删减聚类表的磁盘块 |
CN108052524A (zh) * | 2017-11-07 | 2018-05-18 | 清华大学 | 文件系统元数据的扫描方法和系统 |
CN110069457A (zh) * | 2019-04-24 | 2019-07-30 | 苏州浪潮智能科技有限公司 | 一种基于分布式文件存储系统中过期文件删除方法及系统 |
CN112560032A (zh) * | 2020-12-03 | 2021-03-26 | 星优选有限公司 | 一种文件泄漏监测方法、系统及设备 |
CN118410008A (zh) * | 2024-07-01 | 2024-07-30 | 四川省华存智谷科技有限责任公司 | 一种提高大型分布式文件系统元数据访问效率的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1687926A (zh) * | 2005-04-18 | 2005-10-26 | 福州大学 | 一种基于xml的pdf文档信息抽取系统的方法 |
CN101178720A (zh) * | 2007-10-23 | 2008-05-14 | 浙江大学 | 一种面向互联网微内容的分布式聚类方法 |
WO2008155686A1 (en) * | 2007-06-21 | 2008-12-24 | Nokia Corporation | Method, apparatus and computer program product for providing association of objects using metadata |
-
2011
- 2011-02-22 CN CN201110042837.9A patent/CN102110156B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1687926A (zh) * | 2005-04-18 | 2005-10-26 | 福州大学 | 一种基于xml的pdf文档信息抽取系统的方法 |
WO2008155686A1 (en) * | 2007-06-21 | 2008-12-24 | Nokia Corporation | Method, apparatus and computer program product for providing association of objects using metadata |
CN101178720A (zh) * | 2007-10-23 | 2008-05-14 | 浙江大学 | 一种面向互联网微内容的分布式聚类方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104685496A (zh) * | 2012-09-28 | 2015-06-03 | 甲骨文国际公司 | 关系型数据库管理系统中删减聚类表的磁盘块 |
CN104685496B (zh) * | 2012-09-28 | 2018-03-06 | 甲骨文国际公司 | 关系型数据库管理系统中删减聚类表的磁盘块 |
CN104268288A (zh) * | 2014-10-21 | 2015-01-07 | 福州瑞芯微电子有限公司 | 一种基于ntfs的媒体库扫描方法及装置 |
CN104268288B (zh) * | 2014-10-21 | 2018-06-19 | 福州瑞芯微电子股份有限公司 | 一种基于ntfs的媒体库扫描方法及装置 |
CN108052524A (zh) * | 2017-11-07 | 2018-05-18 | 清华大学 | 文件系统元数据的扫描方法和系统 |
CN108052524B (zh) * | 2017-11-07 | 2020-05-22 | 清华大学 | 面向电镜数据存储系统的文件元数据获取方法与系统 |
CN110069457A (zh) * | 2019-04-24 | 2019-07-30 | 苏州浪潮智能科技有限公司 | 一种基于分布式文件存储系统中过期文件删除方法及系统 |
CN112560032A (zh) * | 2020-12-03 | 2021-03-26 | 星优选有限公司 | 一种文件泄漏监测方法、系统及设备 |
CN118410008A (zh) * | 2024-07-01 | 2024-07-30 | 四川省华存智谷科技有限责任公司 | 一种提高大型分布式文件系统元数据访问效率的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102110156B (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103229173B (zh) | 元数据管理方法及系统 | |
CN104933133B (zh) | 分布式文件系统中的元数据快照存储和访问方法 | |
CN102110156B (zh) | 基于选择性扫描的文件系统的元数据抽取方法及装置 | |
Graefe | Sorting And Indexing With Partitioned B-Trees. | |
US8965941B2 (en) | File list generation method, system, and program, and file list generation device | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
CN104317800A (zh) | 一种海量智能用电数据混合存储系统及方法 | |
US20090240711A1 (en) | Method and apparatus for enhancing performance of database and environment thereof | |
US20090254594A1 (en) | Techniques to enhance database performance | |
Shukla et al. | Schema-agnostic indexing with Azure DocumentDB | |
US20080235183A1 (en) | Workload Aware Checking of Database Reorganization | |
US20140046928A1 (en) | Query plans with parameter markers in place of object identifiers | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
Yoon et al. | Mutant: Balancing storage cost and latency in lsm-tree data stores | |
CN103384256A (zh) | 一种云存储方法及装置 | |
CN102332004B (zh) | 用于海量数据管理的数据处理方法和系统 | |
CN102880541A (zh) | 日志信息的获取系统和获取方法 | |
Sockut et al. | Online reorganization of databases | |
CN102708203A (zh) | 一种基于xml元数据的数据库动态管理方法 | |
WO2023093607A1 (zh) | 一种离线数据模糊搜索方法、装置、设备和介质 | |
CN108153804A (zh) | 一种对称分布式文件系统的元数据日志更新方法 | |
CN101866356B (zh) | 一种磁盘目录信息的结构化管理方法 | |
US20070260579A1 (en) | Method of designing query classification component for multilevel dbms | |
CN109189343B (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
Doekemeijer et al. | Key-Value Stores on Flash Storage Devices: A Survey |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |