一种联合文件系统文件访问频率元数据采集方法及装置与流程

文档序号:16532140发布日期:2019-01-05 10:50阅读:160来源:国知局
本公开涉及计算机领域,具体涉及一种联合文件系统文件访问频率元数据采集方法及装置。
背景技术
::联合文件系统是一种虚拟的文件系统,它并不具备真正的实体,而是通过将多个实体的文件系统聚合在一起,形成一个层级,构成的一个虚拟的文件系统,对这个文件系统的读写,将会映射到层级聚合的实体文件系统中。联合文件系统(unionfs)是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终结果。在联合文件系统中进行文件访问频率的统计是各种文件缓存系统所必备的一个功能,常规的实现方法为通过分析缓存的访问日志进行统计,这种统计方法有一个缺点就是无法实时性太差,统计本身消耗的性能较大,文件访问频率数据作为一个文件的元数据,在文件的调度管理中有着非常重要的参考作用,但是目前的文件系统,均没有对该元数据的支持,这个数据的获取,一般都是通过对文件的访问日志进行统计得到,这种方法的实时性(要事先统计),便利性(需要额外的统计,不能直接获取)均非常的差。技术实现要素:本公开提供一种联合文件系统文件访问频率元数据采集方法及装置,在联合文件系统中直接实现了该元数据的实时获取,极大的方便了文件系统之上的各种文件管理应用的构建和实施,例如可以直接获取到该数据,来决定文件是否应该转移到更加高速的层级中进行访问等。为了实现上述目的,根据本公开的一方面,提供一种联合文件系统文件访问频率元数据采集方法,所述方法包括以下步骤:步骤1,设立一个hashmap用于存储文件访问频率的统计数据;步骤2,每个文件在hashmap中以文件的访问路径作为键值分配一个独立的内存空间;步骤3,在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;步骤4,将环形链表的时间戳全部设定为当前时间;步骤5,在联合文件系统进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针;步骤6,当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;步骤7,在联合文件系统的ioctl中加入文件访问频率查询的分支;步骤8,调用ioctl的方法获取访问频率元数据:进一步地,在步骤2中,在hashmap中为每个文件分配一个独立的内存空间。进一步地,在步骤4中,所述时间戳能够设置为当前时间,可人工调整时间,对时间不做限制。进一步地,在步骤5中,所述inode,即索引节点,为储存文件管理信息的区域,每个inode号码对应一个文件名,每一个文件都有对应的inode,inode中不仅仅存储着指针,还存储着对应资源的权限、属主、属组和大小,inode对于文件一般是一一对应的,但是有时可以共享一个inode,通过多个文件指向同一个inode,实现了借助不同的方式访问到同一个文件内容,这就是硬链接。inode包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的userid、文件的groupid、文件的读、写、执行权限、文件的时间戳(文件的时间戳共有三个:ctime指inode上一次变动的时间,time指文件内容上一次变动的时间,atime指文件上一次打开的时间)、链接数,即有多少文件名指向这个inode、文件数据block的位置。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb或每2kb就设置一个inode。假定在一块1gb的硬盘中,每个inode节点的大小为128字节,每1kb就设置一个inode,那么inodetable的大小就会达到128mb,占整块硬盘的12.8%。进一步地,在步骤7中,ioctl是设备驱动程序中对设备的i/o通道进行管理的函数,所谓对i/o通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的参数个数如下:intioctl(intfd,intcmd,…);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就能在用户程序中使用ioctl函数控制设备的i/o通道。进一步地,在步骤7中,所述文件访问频率查询的分支的方法为加入访问频率的计算公式,访问频率的计算公式为:进一步地,在步骤8中,调用ioctl的方法获取访问频率元数据的方法包括以下子步骤:步骤8.1,从inode中获取到最新时间戳指针,并进一步获取到该指针所指向的环形链表的下一个数据节点步骤8.2,从数据节点中获取到其中记录的时间戳,因为是环形链表,所以该时间戳是环形链表中最早的一次访问的时间戳;步骤8.3,访问频率的计算公式为:步骤8.4,将计算的结果作为文件的访问频率元数据。本发明还提供了一种联合文件系统文件访问频率元数据采集装置,所述装置包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:存储设立单元,用于设立一个hashmap用于存储文件访问频率的统计数据;内存分配单元,用于在每个文件在hashmap中以文件的访问路径作为键值分配一个独立的内存空间;时间戳链表单元,用于在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;时间戳设置单元,用于将环形链表的时间戳全部设定为当前时间;inode指针单元,用于在联合文件系统进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针;指针指向单元,用于在当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;频率查询单元,用于在联合文件系统的ioctl中加入文件访问频率查询的分支;元数据输出单元,用于调用ioctl的方法获取访问频率元数据。本公开的有益效果为:本发明提供一种联合文件系统文件访问频率元数据采集方法及装置,在联合文件系统中直接实现了文件访问频率元数据的实时获取,极大的方便了文件系统之上的各种文件管理应用的构建和实施,例如可以直接获取到该数据,来决定文件是否应该转移到更加高速的层级中进行访问等,实时性与便利性都很好,且获取方式为实时获取,在获取的时候,只需要进行两个链表节点的比较,简单,快速可以实时输出。附图说明通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:图1所示为一种联合文件系统文件访问频率元采集的方法;图2所示为一种联合文件系统文件访问频率元数据采集初始化的方法;图3所示为一种联合文件系统文件访问频率元数据实时更新的方法;图4所示为一种联合文件系统文件访问频率元数据采集装置图。具体实施方式以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。如图1所示为一种联合文件系统文件访问频率元采集的方法,图2所示为一种联合文件系统文件访问频率元数据采集初始化的方法,图3所示为一种联合文件系统文件访问频率元数据实时更新的方法,下面结合图1,图2和图3来阐述根据本公开的实施方式的一种联合文件系统文件访问频率元数据采集方法。本公开提出一种联合文件系统文件访问频率元数据采集方法,具体包括以下步骤:步骤1,设立一个hashmap用于存储文件访问频率的统计数据;步骤2,每个文件在hashmap中以文件的访问路径作为键值分配一个独立的内存空间;步骤3,在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;步骤4,将环形链表的时间戳全部设定为当前时间;步骤5,在联合文件系统进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针;步骤6,当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;步骤7,在联合文件系统的ioctl中加入文件访问频率查询的分支;步骤8,调用ioctl的方法获取访问频率元数据:进一步地,在步骤2中,在hashmap中为每个文件分配一个独立的内存空间。进一步地,在步骤4中,所述时间戳能够设置为当前时间,可人工调整时间,对时间不做限制。进一步地,在步骤5中,所述inode,即索引节点,为储存文件管理信息的区域,每个inode号码对应一个文件名,每一个文件都有对应的inode,inode中不仅仅存储着指针,还存储着对应资源的权限、属主、属组和大小,inode对于文件一般是一一对应的,但是有时可以共享一个inode,通过多个文件指向同一个inode,实现了借助不同的方式访问到同一个文件内容,这就是硬链接。inode包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的userid、文件的groupid、文件的读、写、执行权限、文件的时间戳(文件的时间戳共有三个:ctime指inode上一次变动的时间,time指文件内容上一次变动的时间,atime指文件上一次打开的时间)、链接数,即有多少文件名指向这个inode、文件数据block的位置。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb或每2kb就设置一个inode。假定在一块1gb的硬盘中,每个inode节点的大小为128字节,每1kb就设置一个inode,那么inodetable的大小就会达到128mb,占整块硬盘的12.8%。进一步地,在步骤7中,ioctl是设备驱动程序中对设备的i/o通道进行管理的函数,所谓对i/o通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的参数个数如下:intioctl(intfd,intcmd,…);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就能在用户程序中使用ioctl函数控制设备的i/o通道。进一步地,在步骤7中,所述文件访问频率查询的分支的方法为加入访问频率的计算公式,访问频率的计算公式为:进一步地,在步骤8中,调用ioctl的方法获取访问频率元数据的方法包括以下子步骤:步骤8.1,从inode中获取到最新时间戳指针,并获取到该指针所指向的环形链表的下一个数据节点步骤8.2,从数据节点中获取到其中记录的时间戳,因为是环形链表,所以该时间戳是环形链表中最早的一次访问的时间戳;步骤8.3,访问频率的计算公式为:步骤8.4,将计算的结果作为文件的访问频率元数据。本实施例的访问次数统计方法为:1.设立一个hashmap用于存储文件访问频率的统计数据;2.每个文件在hashmap中以文件的访问路径为键值,分配一个独立的内存空间;3.在该内存空间中建立一个固定大小的环形链表,用于存放文件访问的时间戳;4.在该内存空间中的一个固定位置存放环形链表最新插入的时间戳所在的链表节点的指针;5.当文件发生访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将最新时间戳指针指向该链表节点;6.收到文件频率统计请求的时候;7.取出最新时间戳指针所指向的链表节点中的时间戳数据;8.取出最新时间戳指针所指向的链表节点的前一个节点中的数据;9.将所得的两个数据的差除以链表的长度,即得到文件的访问频率。本公开的实施例提供的一种联合文件系统文件访问频率元数据采集装置,如图4所示为本公开的一种联合文件系统文件访问频率元数据采集装置图,该实施例的一种联合文件系统文件访问频率元数据采集装置包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种联合文件系统文件访问频率元数据采集装置实施例中的步骤。所述装置包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:存储设立单元,用于设立一个hashmap用于存储文件访问频率的统计数据;内存分配单元,用于在每个文件在hashmap中以文件的访问路径作为键值分配一个独立的内存空间;时间戳链表单元,用于在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;时间戳设置单元,用于将环形链表的时间戳全部设定为当前时间;inode指针单元,用于在联合文件系统进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针;指针指向单元,用于在当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;频率查询单元,用于在联合文件系统的ioctl中加入文件访问频率查询的分支;元数据输出单元,用于调用ioctl的方法获取访问频率元数据。所述一种联合文件系统文件访问频率元数据采集装置可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种联合文件系统文件访问频率元数据采集装置,可运行的装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种联合文件系统文件访问频率元数据采集装置的示例,并不构成对一种联合文件系统文件访问频率元数据采集装置的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种联合文件系统文件访问频率元数据采集装置还可以包括输入输出设备、网络接入设备、总线等。所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种联合文件系统文件访问频率元数据采集装置运行装置的控制中心,利用各种接口和线路连接整个一种联合文件系统文件访问频率元数据采集装置可运行装置的各个部分。所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种联合文件系统文件访问频率元数据采集装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1