快速分布式文件系统文件元数据的生成方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数据处理技术,尤其涉及一种快速分布式文件系统文件元数据的生成 方法及装置。
【背景技术】
[0002] FastDFS (Fast Distributed File System,快速分布式文件系统)是一款轻量级 的分布式文件存储系统,其为了实现轻量和高效,规定对文件的操作必须通过其提供的专 用API (Application Programming Interface,应用程序编程接口)实现,目前其仅支持文 件的存储、访问、节点间同步等少量必备的功能,而未提供文件元数据的管理。因此,若想获 取当前FastDFS中已保存哪些文件,官方并未提供相应的方法,而本领域技术人员容易想 到的方式是直接登录到存储节点,借助操作系统层的命令获取,但是这种方式必须要登录 到FastDFS存储节点,现实场景中基本不存在这种设定,通常都是由应用层通过指定API获 取相关信息。若希望在应用层获取FastDFS中保存的文件系统,根据目前可检索到的信息, 暂无公开的解决方案。若要实现类似需求,最传统的方案,即由业务层应用端记录所有向 FastDFS存储层的写入和删除操作,相当于由业务应用程序记录自己的写入日志等行为,以 此来维护FastDFS存储系统的元数据。这种方式的缺点主要表现在下列几个方面:业务层 应用需要额外逻辑记录操作行为,增加开发工作量;业务层应用只能收集他自己产生的信 息,一方面资源利用率低,另一方面准确性难以保证;若同时有多个应用连接读写FastDFS 存储层,则操作行为需要设计的较为复杂,即便如此,一旦出现漏记情况,则应用端的元数 据就失去了参照性;需要对使用FastDFS的每一套应用进行针对性开发,适用场景较窄。
【发明内容】
[0003] 有鉴于此,本发明提供了一种快速分布式文件系统(即FastDFS)文件元数据的生 成方法及装置,可以准确的获取FastDFS中保存的文件列表。
[0004] 本发明提供了一种快速分布式文件系统文件元数据的生成方法,包括:
[0005] 在快速分布式文件系统中同一组下任意存储节点配置用于文件同步的rsync命 令;
[0006] 执行所述rsync命令,将所述存储节点存储的变更日志文件同步至Oracle数据 库;
[0007] 利用所述Oracle数据库中的外部表特性将所述变更日志文件创建为外部表对 象,生成所述快速分布式文件系统文件元数据。
[0008] 优选的,所述在快速分布式文件系统中同一组下任意存储节点配置用于文件同步 的rsync命令包括:
[0009] 在快速分布式文件系统中同一组下任意存储节点,使用rsync命令创建用于将变 更日志文件同步至Oracle数据库的同步命令,并将所述同步命令直接设置在crontab命令 中以执行,并在所述crontab命令中设置执行时间间隔。
[0010] 优选的,所述在快速分布式文件系统中同一组下任意存储节点配置用于文件同步 的rsync命令包括:
[0011] 在快速分布式文件系统中同一组下任意存储节点,使用rsync命令创建用于将变 更日志文件同步至Oracle数据库的同步命令,将所述创建的同步命令保存至脚本文件中, 将所述脚本文件在crontab命令中执行,并在所述crontab命令中设置执行时间间隔。
[0012] 优选的,所述利用Oracle数据库中的外部表特性将所述变更日志文件创建为外 部表对象包括:
[0013] 创建指向同步至的变更日志文件所在目录的目录对象,并为用户授予对目录对象 的读写权限;
[0014] 根据所述创建的目录对象加载变更日志文件,并根据Oracle数据库中的外部表 特性的创建规则将所述变更日志文件创建为外部表对象。
[0015] 优选的,所述生成所述快速分布式文件系统文件元数据之后,还包括:接收并响应 基于结构化查询语句SQL的外部表查询请求,所述外部表查询请求用于请求查询外部表中 文件列表和/或文件的创建时间。
[0016] 本发明提供了一种快速分布式文件系统文件元数据的生成装置,包括:
[0017] 配置模块,用于在快速分布式文件系统中同一组下任意存储节点配置用于文件同 步的rsync命令;
[0018] 同步模块,用于执行所述rsync命令,将所述存储节点存储的变更日志文件同步 至Oracle数据库;
[0019] 外部表创建模块,用于利用所述Oracle数据库中的外部表特性将所述变更日志 文件创建为外部表对象,生成所述快速分布式文件系统的文件元数据。
[0020] 优选的,所述配置模块,具体用于在快速分布式文件系统中同一组下任意存储节 点,使用rsync命令创建用于将变更日志文件同步至Oracle数据库的同步命令,并将所述 同步命令直接设置在crontab命令中以执行,并在所述crontab命令中设置执行时间间隔。
[0021] 优选的,所述配置模块,具体用于在快速分布式文件系统中同一组下任意存储节 点,使用rsync命令创建用于将变更日志文件同步至Oracle数据库的同步命令,将所述 创建的同步命令保存至脚本文件中,将所述脚本文件在crontab命令中执行,并在所述 crontab命令中设置执行时间间隔。
[0022] 优选的,所述外部表创建模块包括:
[0023] 创建目录和授权单元,用于创建指向同步至的变更日志文件所在目录的目录对 象,将创建的目录对象的读写权限授予指定的用户;
[0024] 处理单元,用于根据所述创建的目录对象加载变更日志文件,并根据Oracle数据 库中的外部表特性的创建规则将所述变更日志文件创建为外部表对象。
[0025] 优选的,还包括:
[0026] 接收和响应模块,用于接收并响应基于结构化查询语句SQL的外部表查询请求, 所述外部表查询请求用于请求查询外部表中文件列表和/或文件的创建时间。
[0027] 本发明的有益效果:
[0028] 本发明实施例首先意识到FastDFS在操作文件时会将对文件的修改操作的相关 信息记录在变更日志文件中,而其修改方式只有创建和删除,因此从变更日志文件中排除 已删除的文件记录及其对应的创建记录,就可以得到FastDFS中实际保存的文件列表,就 可以准确的获取FastDFS中保存的文件列表;鉴于此,本发明实施例选择采用Oracle数据 库中的外部表特性将变更日志文件创建为外部表对象,从而准确的生成FastDFS文件元数 据,由于在创建外部表时需要获取变更日志文件,因此本发明实施例选择采用rsync命令 将变更日志文件同步至Oracle数据库;另外,由于FastDFS中同一组下各存储节点的变更 日志文件均相同,因此本发明实施例在FastDFS中同一组下任意存储节点配置rsync命令 即可。
【附图说明】
[0029] 下面结合附图和实施例对本发明作进一步描述:
[0030] 图1是本发明提供的FastDFS文件元数据的生成方法的实施例的流程示意图。
[0031] 图2是利用Oracle外部表分析FastDFS日志生成文件元数据的处理流程图。
[0032] 图3是本发明提供的FastDFS文件元数据的生成装置的实施例的结构示意图。
【具体实施方式】
[0033] FastDFS是一种轻量级的分布式存储系统,客户端连接时只需要连接任意一个 存储节点,由存储节点负责将读写的文件,同步到集群中其它节点中,为了实现这一点, FastDFS在操作文件时将相关信息记录到日志中,该日志文件命名规则为binlog. [num], 这里面就记录了所有的文件修改操作,通过分析FastDFS的原理,其文件修改行为只有两 种:即C(对应创建)和D(对应删除)。因此,分析FastDFS日志中记录的信息,排除已删 除的文件记录及其对应的创建记录,就可以得到FastDFS中实际保存的文件列表。
[0034] 但是,业务层应用直接处理FastDFS日志,还面临几个实际困难:第一、分析日志 需要单独编码,需要一定的开发工作量;第二、分析的日志需要从FastDFS存储节点传输到 业务层应用本地,但通常业务层应用都有多套,这可能涉及到FastDFS日志多次复制的成 本开销;第三、传输日志采用什么样的策略也很重要,最好能够自动进行;第四、考虑到文 件读写频繁的话,FastDFS日志文件体积不小,对其分析时的性能指标也很重要。
[0035] 鉴于此,为了解决以上技术问题,本发明提供了如下的技术方案。
[0036] 请参考图1,是本发明提供的FastDFS文件元数据的生成方法的实施例的流程示 意图,其包括如下步骤:
[0037] 步骤Sll、在FastDFS中同一组下任意存储节点配置用于文件同步的rsync命令;
[0038] 步骤S12、执行rsync命令,将存储节点存储的变更日志文件同步至Oracle数据 库。
[0039]