CN101216850A - 文件系统访问记录的动态采集方法 - Google Patents

文件系统访问记录的动态采集方法 Download PDF

Info

Publication number
CN101216850A
CN101216850A CNA2008100558953A CN200810055895A CN101216850A CN 101216850 A CN101216850 A CN 101216850A CN A2008100558953 A CNA2008100558953 A CN A2008100558953A CN 200810055895 A CN200810055895 A CN 200810055895A CN 101216850 A CN101216850 A CN 101216850A
Authority
CN
China
Prior art keywords
file
module
visitor logs
parameter
index node
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
Application number
CNA2008100558953A
Other languages
English (en)
Other versions
CN100583099C (zh
Inventor
郑纬民
舒继武
汪旸
薛矛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN200810055895A priority Critical patent/CN100583099C/zh
Publication of CN101216850A publication Critical patent/CN101216850A/zh
Application granted granted Critical
Publication of CN100583099C publication Critical patent/CN100583099C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

文件系统访问记录的动态采集方法属于存储系统的测试和性能分析领域,其特征在于:无需卸载旧文件系统即可加载内核模块,因此无需打断正在运行的应用。文件系统操作拦截模块能够动态地拦截底层文件系统操作,将其替换成拦截模块中对应的函数。这些函数在执行底层文件系统操作的同时输出操作的类型和参数到访问记录输出模块。该模块将文件记录压缩,然后采用带缓存的记录输出,将多次操作的信息一次输出。访问记录输出模块控制输出文件的大小,防止文件过大带来的读写困难和超过文件系统限制等问题。访问记录文件管理模块搜集附加信息,并按照用户的指定打包和传输访问记录,方便用户的管理。测试表明访问记录的采集对于应用的影响很小。

Description

文件系统访问记录的动态采集方法
技术领域
文件系统访问记录的动态采集方法属于存储系统的测试和性能分析领域,尤其涉及其中的文件系统操作追踪和分析领域。
背景技术
文件系统访问记录采集技术是指:将文件系统中操作的类型,发生时间和参数等记录到日志文件中,供未来分析和测试使用。文件系统访问记录的主要用途有:首先,通过访问记录有助于设计更好的硬件和软件,发现文件系统的瓶颈,为系统的优化和改进提供有价值的数据。比如:可以通过文件创建的比例、文件读写操作的分布、文件操作的频率等各种数据来评估系统是不是有效的,是不是和预期相符。利用访问记录可以分析和优化存储系统,采集和播放访问记录提供了一种尽可能真实的应用场景来评测存储策略。其次,访问记录对于文件系统的开发和调试有很大的帮助。由于访问记录保存了各种文件操作,如果设计的文件系统出现问题或崩溃的话,通过分析访问记录,可以重现出出错的情况;访问记录能够帮助设计者更容易的定位崩溃的地方。比起传统的用printk打印信息的方法,访问记录更加有效,也更加方便。最后,在一些安全领域,访问记录也有它的用途。管理员可以通过监视文件操作有效得检测非法的入侵和评估对系统的损害。在对于计算机取证,访问记录也有帮助。利用访问记录,可以使系统回滚或重现被记录的操作。总之,文件系统访问记录不仅在系统设计,文件系统调试等传统的领域一直发挥着重要作用,它是重要的数据;在一些新的安全领域也有它独特的作用。
传统的访问记录采集方法有一些缺陷:有的采集器在系统调用层,而不是文件系统层采集访问记录,它们无法采集文件系统的内部操作,对于一些不通过系统调用层来访问文件的应用,如NFS服务器,它们也无能为力。有的采集器虽然在文件系统层工作,但是使用前要求重新加载文件系统,这会打断所有正工作在这个文件系统之上的用户应用。在某些环境中,这是不能容忍的,比如在一些并行计算或者企业应用中,要求24×7小时的可用性,停止应用会带来巨大的损失。
本发明提出了一种新的文件系统访问记录的采集方法,它通过拦截和替换文件系统操作的方法,能够动态地采集文件系统访问记录,从而有效解决了上述问题。
发明内容
本发明的目的在于提供一种能在实际环境中使用的文件系统访问记录采集方法,实现动态采集的功能,并尽量减少采集器给文件系统带来的负载。本发明的重点在于文件系统操作的动态拦截和替换,以及记录文件输出的优化。
本发明的特征在于:该方法是在Linux操作系统内核空间中的虚拟文件系统层和底层文件系统之间依次按以下步骤实现的,
步骤(1).初始化
在所述虚拟文件系统层和底层文件系统之间设置一个文件系统操作拦截模块,该操作拦截模块包括超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块,其中:
超级块操作拦截模块,用于拦截所述底层文件系统中用于存储设定文件系统信息的超级块的超级块操作函数表所设定的超级操作,其中至少含有超级块读写操作、所述文件系统加载和卸载操作,以及索引节点的创建和删除操作,记录操作的类型,发生时间和索引节点号,因而,所述超级块操作拦截模块是分别和所述虚拟文件系统层和底层文件系统互连的;
索引节点操作拦截模块,一个所述索引节点代表所述底层文件系统中的一个文件,该索引节点操作拦截模块用于拦截索引节点中索引节点操作函数表所设定的索引节点操作,这些操作至少包含文件的创建、连接、查找、删除操作,目录的创建、删除操作,以及文件的属性设置和读取操作,记录操作的类型,发生时间,索引节点号和操作参数,操作参数至少包括创建文件操作的文件大小,链接数,创建时间和访问时间参数,所述索引节点操作拦截模块是分别和虚拟文件系统层和底层文件系统互连的;
文件操作拦截模块,所述文件是指由打开系统调用、关闭系统调用销毁的已打开的文件,所述文件操作拦截模块拦截设在文件内操作函数表中的文件操作,所述文件操作至少包含文件的打开和关闭,同步读写,异步读写,向量读写,寻址,查找,读写控制,发送文件和发送页操作,记录操作的类型,发生时间,索引节点号和操作参数,操作参数至少包括同步读写文件和异步读写文件操作的访问偏移和访问大小参数、文件寻址操作的寻址偏移参数、读写控制操作的控制命令和参数、打开文件操作的文件的用户属性,链接数,大小,创建时间,访问时间,修改时间和打开方式参数、向量读写文件的访问偏移和访问次数参数、发送文件操作的访问偏移和访问大小参数以及发送页操作的访问偏移,访问大小和访问位置参数,所述文件系统操作拦截模块是分别和所述虚拟文件层和底层文件系统互连的;
在所述虚拟文件系统层和底层文件系统之间又设定一个访问记录输出模块,内含了访问记录压缩模块和带缓存的访问记录输出模块,其中:
访问记录压缩模块,三个输入端分别和所述超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块的操作参数输出端相连,所述访问记录压缩模块通过对本次操作访问记录和上次操作访问记录的对比,删除其中相同的信息,以减少访问记录的大小;
带缓存的访问记录输出模块,输入端和所述访问记录压缩模块的压缩过的访问记录输出端相连,以便把访问记录保存在自己的内存缓冲区中,当缓冲区满时把所有所述内存缓冲区中的内容写入磁盘中,当被写入的磁盘文件大于设定容量时,则创建新的文件用于写入;
此外,在用户空间,设有一个与所述带缓存的访问记录输出模块互连的访问记录文件管理模块,采集用户机器的CPU、内存、磁盘和进程信息,把他们和从所述带缓存的访问记录输出模块输出的访问记录文件一起压缩打包,再加上机器名和时间,用文件传输协议FTP或安全拷贝协议SCP发往用户指定的用户机器,然后,把原访问记录文件和包删除,释放磁盘空间;
步骤(2).按以下步骤进行文件系统访问记录的动态采集:
步骤(2.1).获取所述底层文件系统操作函数指针:
步骤(2.1.1).虚拟文件系统层通过文件操作拦截模块打开所述被采集的底层文件系统中的目标目录,得到超级块和索引节点;
步骤(2.1.2).超级块操作拦截模块和索引节点操作拦截模块分别得到所述底层文件系统的超级块操作函数集和索引节点操作函数集,并记录之;
步骤(2.2).替换所述底层文件系统的操作函数指针
步骤(2.2.1).保存用户指定的需要监测的底层文件系统操作函数指针到设定的位置,其中包括超级块和索引节点的操作函数指针;
步骤(2.2.2).所述虚拟文件系统把底层文件系统函数指针指向所述超级块操作拦截模块、索引节点操作拦截模块中相应的操作函数,以便调用步骤(2.2.1)中所存的操作函数,并把他们的返回值返回给用户;
步骤(2.3).再次获取所述底层文件系统操作函数指针:
步骤(2.3.1).超级块操作拦截模块监测超级块操作函数中的读取索引节点操作的索引节点参数,从中得到索引节点操作函数指针
步骤(2.3.2).索引节点操作拦截模块监测索引节点操作中的创建文件和创建连接操作的索引节点参数,从中得到索引节点操作函数和文件操作函数
步骤(2.4).再次替换所述底层文件系统的操作函数指针
步骤(2.4.1).保存用户指定的需要监测的底层文件系统操作函数指针到设定的位置,其中包括步骤(2.3.1)和(2.3.2)中获取的索引节点操作函数和文件操作函数;
步骤(2.4.2).所述虚拟文件系统把底层文件系统函数指针指向所述索引节点操作拦截模块、文件操作拦截模块中相应的操作函数,以便调用步骤(2.4.1)中所存的操作函数,并把他们的返回值返回给用户;
步骤(3).超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块生成初始文件系统访问记录,其中包括:操作类型、操作发生时间、目标文件或目标目录的索引节点号和操作参数,操作参数至少含有:创建文件操作的文件大小,链接数,创建时间和上次访问时间参数;文件寻址操作的寻址偏移参数;同步读文件操作的访问偏移和访问大小参数;异步读文件操作的访问偏移和访问大小参数;同步写文件操作的访问偏移和访问大小参数;异步写文件操作的访问偏移和访问大小参数;读写控制操作的控制命令和数据参数;打开文件操作的文件的用户属性,链接数,大小,创建时间,访问时间,修改时间和打开方式参数;向量读文件操作的访问偏移和访问次数参数;向量写文件操作的访问偏移和访问次数参数;发送文件操作的访问偏移和访问大小参数;发送页操作的访问偏移,访问大小和访问位置参数;
步骤(4).访问记录压缩模块对所述超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块输入的操作类型、操作时间、操作的索引节点号和操作参数信息进行压缩,从操作的类型、时间、索引节点号和参数四个方面分别比较本次和上次是否相同,两者相同则不保存本次操作的类型或时间或索引节点号或参数,否则需要保存本次操作的类型或时间或索引节点号或参数;
步骤(5).输出文件访问记录,其步骤如下:
步骤(5.1).带缓存的访问记录输出模块在缓冲区未满时从所述访问记录压缩模块输入文件系统的访问记录;
步骤(5.2).在缓冲区已满时把访问记录输出到文件中:
步骤(5.2.1).先生成输出文件名,在一个输出文件大小到达设定值时,生成一个新的输出文件;
步骤(5.2.2).根据文件名用追加的方式打开输出文件把缓冲区所有记录写入输出文件,再关闭该输出文件;
步骤(5.2.3).清空缓冲区,返回步骤(5.1);
步骤(6).记录文件的管理,本步骤和步骤(4)与步骤(5)并行执行
步骤(6.1).访问记录文件管理模块记录用户机器的CPU、内存、磁盘型号与容量和进程的名字与CPU占用率。
步骤(6.2).在磁盘空间满时把步骤(6.1)采集的信息和当前已有的访问记录文件压缩打包,加上机器名和时间戳发送到用户指定的机器;
步骤(6.3).删除已有的压缩包和访问记录文件;
步骤(7).根据用户命令停止记录采集功能
步骤(7.1).停止执行步骤(2.1)和步骤(2.2),把替换的所有指针还原;
步骤(7.2).在函数被执行时,全局计数加1,被执行完后全局计数减1,所有操作函数执行结束后,全局计数应为0;在全局计数为0时,停止所有模块的功能。
所述的文件系统操作拦截模块,访问记录输出模块和访问记录文件管理模块可以动态加载,无需卸载旧文件系统,因此无需中止正在运行的应用;采用访问记录压缩和带缓存的记录输出,减少文件输出的开销;访问记录文件管理模块可以在大量机器构成的机群中自动管理记录文件。
本发明的优点如下:
(1)内核模块可以直接通过Linux系统自带的模块加载命令动态加载,而不需要卸载旧的文件系统或者装载新的文件系统,这样就无需停止运行于文件系统之上的应用,提高了存储系统的可用性。
(2)采用记录压缩方式减少记录的大小,通过带缓存的记录输出方式,先将记录输出到缓冲区,等缓冲区满了再输出到文件,大大减少了文件访问的次数,从而减少了记录文件输出的负载。
(3)可以控制记录文件大小,通过拆分文件来防止单个记录文件过大带来的读写困难和超过文件系统限制等问题,可以定时转移已有的记录文件,防止记录文件总容量过大,占用过多的磁盘空间。
(4)通过访问计数记录被拦截函数的使用情况,从而实现了采集器模块的安全卸载。
本发明在清华大学计算机系高性能计算技术研究所进行了测试。结果表明,文件系统访问记录的动态采集方法可以在不停止应用的前提下加载和采集访问记录,且采集过程对应用的性能影响很小,测试表明采集过程对于普通的文件打开关闭和读写操作等带来的负载不超过4%。
对文件系统访问记录的动态采集方法的测试主要从性能方面进行衡量。测试环境由一台目标服务器、一台辅助数据服务器(用于网络文件系统如NFS的测试),1台千兆以太网交换机组成。目标服务器和辅助数据服务器均采用四片Intel Xeon 700MHZ CPU,1GB内存,操作系统为Linux,内核版本为2.6.9。目标服务器安装IBM DDYS-T36950M硬盘。我们采用Network Appliance公司开发的Postmark作为测试工具,在上述实验环境中进行了测试,图8对比测试了不加载本方法,加载本方法,以及加载本方法但不压缩三种情况下各种文件访问参数的性能。图9测试了文件压缩技术的效果。从测试结果中可以看出,本方法带来的负载小于4%,对应用的影响很小。文件压缩技术可以达到9倍的压缩比,同时降低总体负载。
附图说明
图1.文件系统访问记录的动态采集方法软件结构图。
图2.文件系统操作函数替换过程。
图2a.替换前的结构。
图2b.替换后的结构。
图3.采集器模块函数执行过程。
图4.压缩记录格式。
图5.记录压缩前后的对比。
图6.带缓存的访问记录输出模块执行过程。
图7.内核模块卸载过程。
图8.文件系统访问记录的动态采集方法的负载:
Figure S2008100558953D00071
未加载本方法的运行时间;
加载本方法的运行时间;
Figure S2008100558953D00073
加载本方法,但是不使用压缩技术的运行时间。
图9.文件访问记录压缩技术的效果:
Figure S2008100558953D00074
使用所述本方法压缩的文件访问记录文件大小;
Figure S2008100558953D00075
不压缩的原始文件访问记录文件大小;
Figure S2008100558953D00076
用tar工具压缩原始文件访问记录文件后的大小。
图10.文件系统访问记录的动态采集方法的程序流程图。
具体实施方式
文件访问记录的动态采集方法是在Linux操作系统的虚拟文件系统层(VFS)和底层文件系统之间实现的,可以用于任意底层文件系统访问信息的采集。
本发明的结构图如图1所示,具有如下模块:
模块(1).文件系统操作拦截模块,又分为三个子模块
模块(1.1).超级块操作拦截模块:用于拦截所述底层文件系统中用于存储设定文件系统信息的超级块的超级块操作函数表所设定的超级操作,其中至少含有超级块读写操作、所述文件系统加载和卸载操作,以及索引节点的创建和删除操作。
模块(1.2).索引节点操作拦截模块:该索引节点操作拦截模块用于拦截索引节点中索引节点操作函数表所设定的索引节点操作,这些操作至少包含文件的创建、连接、查找、删除操作,目录的创建、删除操作,以及文件的属性设置和读取操作。
模块(1.3).文件操作拦截模块:拦截设在文件内操作函数表中的文件操作,所述文件操作至少包含文件的打开和关闭,同步读写,异步读写,向量读写,寻址,查找,读写控制,发送文件和发送页操作。
模块(2).访问记录输出模块,又分为两个子模块
模块(2.1).访问记录压缩模块:通过对比本次操作的访问记录和上次操作的访问记录,删除本次操作访问记录中和上次相同的信息,从而减少访问记录的大小。
模块(2.2).带缓存的访问记录输出模块:将压缩过的访问记录保存在内存缓冲区中,当缓存满时将所有内存缓冲区的内容写入磁盘文件,然后清空内存缓冲区。如果被写入磁盘文件大于100M的话,则建立一新磁盘文件用于写入。
模块(3).访问记录文件管理模块:采集用户机器的CPU,内存,磁盘容量和进程的CPU占用率信息,将其和访问记录文件一起压缩打包,然后给包加上机器名和时间,最后将包发往用户指定的机器。本模块支持FTP和SCP两种发送方法。发送完成后将原访问记录文件和包删除,释放磁盘空间。
所述的文件访问记录的动态采集方法依次含有以下步骤:
步骤1:检测和替换底层文件系统操作函数指针:
文件系统操作拦截模块打开目标目录,可以得到其超级块和索引节点,从超级块的超级块操作域可以得到超级块操作函数指针,从索引节点的索引节点操作域可以得到索引节点操作函数指针,它们是需要被记录的函数。
接着文件系统操作拦截模块替换文件系统操作函数指针,它首先保存旧底层文件操作系统函数指针到用户指定的旧文件系统操作函数指针数组中,然后将底层文件系统函数指针指向文件系统操作拦截模块中的对应函数,这些函数会调用被保存的的旧的函数,并将他们的返回值返回给用户。
以上步骤无法保证能检测到所有的文件系统操作系统函数指针,所以文件系统操作拦截模块会再次检测和替换文件操作系统函数指针,它监测超级块操作中的读索引节点函数的索引节点参数,得到它的索引节点操作函数;监测索引节点操作中的创建文件和创建连接函数的索引节点参数,得到它的索引节点操作函数和文件操作函数。文件系统操作拦截模块同样也会保存和替换这些被检测到的文件系统操作函数。
替换完成后,文件系统操作拦截模块保存了底层文件系统的操作,而将原指针指向了文件系统操作拦截模块中的对应函数,这一关系如图2所示。这样,用户应用调用文件系统操作的时候,就会先执行文件系统操作拦截模块中的对应函数,这些函数会调用原底层文件系统的操作函数。
步骤2:生成原始文件访问记录
文件系统操作拦截模块输出操作的类型,操作的发生时间,对应的索引节点号和操作参数。操作参数随操作类型的不同而不同,具体包括:
1.创建文件操作:操作参数包括文件大小,链接数,创建时间,访问时间
2.文件寻址操作:操作参数包括寻址偏移
3.同步读写,异步读写操作:操作参数包括访问偏移和访问大小
4.读写控制操作:操作参数包括控制命令和命令数据
5.打开文件操作:操作参数包括文件的用户属性,链接数,大小,创建时间,访问时间,修改时间和打开方式
6.向量读写文件操作:操作参数包括访问偏移和访问次数
7.发送文件操作:操作参数包括访问偏移和访问大小
8.发送页操作:操作参数包括访问偏移,访问大小和访问位置
输出的执行过程如图3所示:首先记录操作的发起时间,接着判断该操作是不是针对目标文件系统,这是通过比较目标对象的超级块和目标文件系统的超级块是否相同来实现的,因为每个被加载的文件系统有唯一的超级块。然后假如该操作是针对目标文件系统,则输出其类型和参数到访问记录输出模块。最后调用原底层文件系统操作,并返回。
步骤3:压缩文件访问记录
访问记录输出模块的访问记录压缩模块首先将信息进行压缩,它采用了压缩数据格式进行存储,这一格式如图4所示。具体压缩步骤如下
步骤(3.1).比较本次操作类型和上次操作是否相同,如果相同的话操作标志位设为2,如果不相同的话设为1然后将操作类型写入字符串。
步骤(3.2).比较本次操作时间和上次操作是否相同,如果相同的话操作时间位设为2,如果不相同的话设为1然后将操作时间写入字符串。
步骤(3.3).比较本次操作的索引节点号和上次操作是否相同,如果相同的话索引节点号位设为2,如果不相同的话设为1然后将索引节点号写入字符串。
步骤(3.4).如果没有附加参数的话参数位设为0,否则比较本次操作的附加参数和上次操作是否相同,如果相同的话参数位设为2,如果不相同的话设为1,然后将附加参数内容写入字符串。
图5给出了一个压缩前后数据的例子。
步骤4:输出访问记录到文件
带缓存的访问记录输出模块负责将压缩过的信息写入文件,以供未来分析和测试使用。带缓存的访问记录输出模块的工作流程如图6所示,首先判断缓冲区是否已满,如果不满的话直接将记录写入缓冲区即可,如果已满的话则需要先将缓冲区内容写入文件。写文件之前先判断文件大小是否已经超过限制,如果超过的话则需要创建一个新的文件,否则打开旧的文件即可。写完文件以后即清空缓冲区,将新的记录写入缓冲区。
步骤5:管理访问记录文件
访问记录文件管理模块在用户空间运行,它负责采集机器的CPU,内存,磁盘信息,另外每隔5秒采集一次进程信息,均输出到信息文件。当访问记录文件的大小超过用户指定的阈值(默认为磁盘剩余空间的大小)的时候,将信息和访问记录文件一起用tar工具压缩打包,然后给包加上机器名和时间。最后将包发往用户指定的机器,支持文件传输协议FTP和安全拷贝协议SCP两种发送方法。发送完成后将原访问记录文件和包删除,释放磁盘空间。
步骤6:停止
内核模块卸载前,必须确保所有文件系统操作拦截器模块中的函数都不再被使用。这一过程如图6所示。文件系统操作拦截模块有一全局计数,在被替换的函数被执行时,全局计数加1,被执行完后全局计数减1,所有操作函数执行结束后,全局计数应为0。停止本方法时,首先将一标志位置为0,这表示不再进行任何新的文件系统操作的拦截和替换。接着检测全局计数是否为0,为0表示可以进行卸载,不为0的话就必须等待,直到访问计数为0为止。在全局计数为0时,停止所有模块的功能。

Claims (2)

1.文件系统访问记录的动态采集方法,其特征在于,该方法是在Linux操作系统内核空间中的虚拟文件系统层和底层文件系统之间依次按以下步骤实现的,
步骤(1).初始化
在所述虚拟文件系统层和底层文件系统之间设置一个文件系统操作拦截模块,该操作拦截模块包括超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块,其中:
超级块操作拦截模块,用于拦截所述底层文件系统中用于存储设定文件系统信息的超级块的超级块操作函数表所设定的超级操作,其中至少含有超级块读写操作、所述文件系统加载和卸载操作,以及索引节点的创建和删除操作,记录操作的类型,发生时间和索引节点号,因而,所述超级块操作拦截模块是分别和所述虚拟文件系统层和底层文件系统互连的;
索引节点操作拦截模块,一个所述索引节点代表所述底层文件系统中的一个文件,该索引节点操作拦截模块用于拦截索引节点中索引节点操作函数表所设定的索引节点操作,这些操作至少包含文件的创建、连接、查找、删除操作,目录的创建、删除操作,以及文件的属性设置和读取操作,记录操作的类型,发生时间,索引节点号和操作参数,操作参数至少包括创建文件操作的文件大小,链接数,创建时间和访问时间参数,所述索引节点操作拦截模块是分别和虚拟文件系统层和底层文件系统互连的;
文件操作拦截模块,所述文件是指由打开系统调用、关闭系统调用销毁的已打开的文件,所述文件操作拦截模块拦截设在文件内操作函数表中的文件操作,所述文件操作至少包含文件的打开和关闭,同步读写,异步读写,向量读写,寻址,查找,读写控制,发送文件和发送页操作,记录操作的类型,发生时间,索引节点号和操作参数,操作参数至少包括同步读写文件和异步读写文件操作的访问偏移和访问大小参数、文件寻址操作的寻址偏移参数、读写控制操作的控制命令和参数、打开文件操作的文件的用户属性,链接数,大小,创建时间,访问时间,修改时间和打开方式参数、向量读写文件的访问偏移和访问次数参数、发送文件操作的访问偏移和访问大小参数以及发送页操作的访问偏移,访问大小和访问位置参数,所述文件系统操作拦截模块是分别和所述虚拟文件层和底层文件系统互连的;
在所述虚拟文件系统层和底层文件系统之间又设定一个访问记录输出模块,内含了访问记录压缩模块和带缓存的访问记录输出模块,其中:
访问记录压缩模块,三个输入端分别和所述超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块的操作参数输出端相连,所述访问记录压缩模块通过对本次操作访问记录和上次操作访问记录的对比,删除其中相同的信息,以减少访问记录的大小;
带缓存的访问记录输出模块,输入端和所述访问记录压缩模块的压缩过的访问记录输出端相连,以便把访问记录保存在自己的内存缓冲区中,当缓冲区满时把所有所述内存缓冲区中的内容写入磁盘中,当被写入的磁盘文件大于设定容量时,则创建新的文件用于写入;
此外,在用户空间,设有一个与所述带缓存的访问记录输出模块互连的访问记录文件管理模块,采集用户机器的CPU、内存、磁盘和进程信息,把他们和从所述带缓存的访问记录输出模块输出的访问记录文件一起压缩打包,再加上机器名和时间,用文件传输协议FTP或安全拷贝协议SCP发往用户指定的用户机器,然后,把原访问记录文件和包删除,释放磁盘空间;
步骤(2).按以下步骤进行文件系统访问记录的动态采集:
步骤(2.1).获取所述底层文件系统操作函数指针:
步骤(2.1.1).虚拟文件系统层通过文件操作拦截模块打开所述被采集的底层文件系统中的目标目录,得到超级块和索引节点;
步骤(2.1.2).超级块操作拦截模块和索引节点操作拦截模块分别得到所述底层文件系统的超级块操作函数集和索引节点操作函数集,并记录之;
步骤(2.2).替换所述底层文件系统的操作函数指针
步骤(2.2.1).保存用户指定的需要监测的底层文件系统操作函数指针到设定的位置,其中包括超级块和索引节点的操作函数指针;
步骤(2.2.2).所述虚拟文件系统把底层文件系统函数指针指向所述超级块操作拦截模块、索引节点操作拦截模块中相应的操作函数,以便调用步骤(2.2.1)中所存的操作函数,并把他们的返回值返回给用户;
步骤(2.3).再次获取所述底层文件系统操作函数指针:
步骤(2.3.1).超级块操作拦截模块监测超级块操作函数中的读取索引节点操作的索引节点参数,从中得到索引节点操作函数指针
步骤(2.3.2).索引节点操作拦截模块监测索引节点操作中的创建文件和创建连接操作的索引节点参数,从中得到索引节点操作函数和文件操作函数
步骤(2.4).再次替换所述底层文件系统的操作函数指针
步骤(2.4.1).保存用户指定的需要监测的底层文件系统操作函数指针到设定的位置,其中包括步骤(2.3.1)和(2.3.2)中获取的索引节点操作函数和文件操作函数;
步骤(2.4.2).所述虚拟文件系统把底层文件系统函数指针指向所述索引节点操作拦截模块、文件操作拦截模块中相应的操作函数,以便调用步骤(2.4.1)中所存的操作函数,并把他们的返回值返回给用户;
步骤(3).超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块生成初始文件系统访问记录,其中包括:操作类型、操作发生时间、目标文件或目标目录的索引节点号和操作参数,操作参数至少含有:创建文件操作的文件大小,链接数,创建时间和上次访问时间参数;文件寻址操作的寻址偏移参数;同步读文件操作的访问偏移和访问大小参数;异步读文件操作的访问偏移和访问大小参数;同步写文件操作的访问偏移和访问大小参数;异步写文件操作的访问偏移和访问大小参数;读写控制操作的控制命令和数据参数;打开文件操作的文件的用户属性,链接数,大小,创建时间,访问时间,修改时间和打开方式参数;向量读文件操作的访问偏移和访问次数参数;向量写文件操作的访问偏移和访问次数参数;发送文件操作的访问偏移和访问大小参数;发送页操作的访问偏移,访问大小和访问位置参数;
步骤(4).访问记录压缩模块对所述超级块操作拦截模块、索引节点操作拦截模块和文件操作拦截模块输入的操作类型、操作时间、操作的索引节点号和操作参数信息进行压缩,从操作的类型、时间、索引节点号和参数四个方面分别比较本次和上次是否相同,两者相同则不保存本次操作的类型或时间或索引节点号或参数,否则需要保存本次操作的类型或时间或索引节点号或参数;
步骤(5).输出文件访问记录,其步骤如下:
步骤(5.1).带缓存的访问记录输出模块在缓冲区未满时从所述访问记录压缩模块输入文件系统的访问记录;
步骤(5.2).在缓冲区已满时把访问记录输出到文件中:
步骤(5.2.1).先生成输出文件名,在一个输出文件大小到达设定值时,生成一个新的输出文件;
步骤(5.2.2).根据文件名用追加的方式打开输出文件把缓冲区所有记录写入输出文件,再关闭该输出文件;
步骤(5.2.3).清空缓冲区,返回步骤(5.1);
步骤(6).记录文件的管理,本步骤和步骤(4)与步骤(5)并行执行
步骤(6.1).访问记录文件管理模块记录用户机器的CPU、内存、磁盘型号与容量和进程的名字与CPU占用率。
步骤(6.2).在磁盘空间满时把步骤(6.1)采集的信息和当前已有的访问记录文件压缩打包,加上机器名和时间戳发送到用户指定的机器;
步骤(6.3).删除已有的压缩包和访问记录文件;
步骤(7).根据用户命令停止记录采集功能
步骤(7.1).停止执行步骤(2.1)和步骤(2.2),把替换的所有指针还原;
步骤(7.2).在函数被执行时,全局计数加1,被执行完后全局计数减1,所有操作函数执行结束后,全局计数应为0;在全局计数为0时,停止所有模块的功能。
2.根据权利要求1所述的文件系统访问记录的动态采集方法,其特征在于:所述的文件系统操作拦截模块,访问记录输出模块和访问记录文件管理模块可以动态加载,无需卸载旧文件系统,因此无需中止正在运行的应用;采用访问记录压缩和带缓存的记录输出,减少文件输出的开销;访问记录文件管理模块可以在大量机器构成的机群中自动管理记录文件。
CN200810055895A 2008-01-11 2008-01-11 文件系统访问记录的动态采集方法 Expired - Fee Related CN100583099C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810055895A CN100583099C (zh) 2008-01-11 2008-01-11 文件系统访问记录的动态采集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810055895A CN100583099C (zh) 2008-01-11 2008-01-11 文件系统访问记录的动态采集方法

Publications (2)

Publication Number Publication Date
CN101216850A true CN101216850A (zh) 2008-07-09
CN100583099C CN100583099C (zh) 2010-01-20

Family

ID=39623282

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810055895A Expired - Fee Related CN100583099C (zh) 2008-01-11 2008-01-11 文件系统访问记录的动态采集方法

Country Status (1)

Country Link
CN (1) CN100583099C (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467514A (zh) * 2010-11-04 2012-05-23 英业达股份有限公司 重复数据删除系统
CN102999729A (zh) * 2011-09-13 2013-03-27 联想(北京)有限公司 文件管理方法及文件管理系统
CN103064929A (zh) * 2012-12-24 2013-04-24 创新科存储技术(深圳)有限公司 一种网络文件系统中服务器写数据的方法
CN103106233A (zh) * 2012-11-02 2013-05-15 北京邮电大学 应用于搜索引擎的海量文件异步索引及读写方法
CN103369284A (zh) * 2012-03-31 2013-10-23 浙江大华技术股份有限公司 一种音视频数据预录方法及装置
CN103399812A (zh) * 2013-07-22 2013-11-20 西安电子科技大学 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
CN104090903A (zh) * 2012-01-29 2014-10-08 北京奇虎科技有限公司 文件处理方法
CN104239511A (zh) * 2014-09-15 2014-12-24 西安交通大学 一种面向MongoDB的用户空间文件系统实现方法
CN106156129A (zh) * 2015-04-08 2016-11-23 联想(北京)有限公司 文件管理方法及装置
CN106681896A (zh) * 2017-01-09 2017-05-17 郑州云海信息技术有限公司 一种基于linux系统的文件拷贝压力测试方法
CN107515724A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于再现存储系统的输入输出的方法和设备
CN107679412A (zh) * 2017-09-15 2018-02-09 福建星瑞格软件有限公司 一种拦截数据库访问数据的方法以及装置
CN108733753A (zh) * 2018-04-10 2018-11-02 网宿科技股份有限公司 一种文件读取方法及应用实体
CN110096421A (zh) * 2019-04-30 2019-08-06 中国人民解放军海军大连舰艇学院 一种通信数据的采集与管理系统
CN110262787A (zh) * 2019-06-21 2019-09-20 北京搜房科技发展有限公司 语句替换方法、装置和电子设备
CN111258503A (zh) * 2020-01-15 2020-06-09 广州广哈通信股份有限公司 一种cirros文件系统的管理方法和装置
CN112214247A (zh) * 2019-07-12 2021-01-12 华为技术有限公司 一种系统启动方法以及相关设备
CN112558858A (zh) * 2019-09-10 2021-03-26 无锡江南计算技术研究所 基于动态io感知的超大规模应用外存访问特征获取方法
CN116383165A (zh) * 2023-06-03 2023-07-04 浙江档安科技有限公司 一种适应性写入的档案保存方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976269B (zh) * 2010-11-26 2012-12-05 山东中创软件工程股份有限公司 一种文件调度方法及系统

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467514A (zh) * 2010-11-04 2012-05-23 英业达股份有限公司 重复数据删除系统
CN102999729A (zh) * 2011-09-13 2013-03-27 联想(北京)有限公司 文件管理方法及文件管理系统
CN104090903A (zh) * 2012-01-29 2014-10-08 北京奇虎科技有限公司 文件处理方法
CN104090903B (zh) * 2012-01-29 2017-12-19 北京奇虎科技有限公司 文件处理方法
CN103369284A (zh) * 2012-03-31 2013-10-23 浙江大华技术股份有限公司 一种音视频数据预录方法及装置
CN103106233A (zh) * 2012-11-02 2013-05-15 北京邮电大学 应用于搜索引擎的海量文件异步索引及读写方法
CN103064929B (zh) * 2012-12-24 2016-06-29 创新科存储技术(深圳)有限公司 一种网络文件系统中服务器写数据的方法
CN103064929A (zh) * 2012-12-24 2013-04-24 创新科存储技术(深圳)有限公司 一种网络文件系统中服务器写数据的方法
CN103399812A (zh) * 2013-07-22 2013-11-20 西安电子科技大学 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
CN103399812B (zh) * 2013-07-22 2016-04-13 西安电子科技大学 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法
CN104239511A (zh) * 2014-09-15 2014-12-24 西安交通大学 一种面向MongoDB的用户空间文件系统实现方法
CN104239511B (zh) * 2014-09-15 2016-03-30 西安交通大学 一种面向MongoDB的用户空间文件系统实现方法
CN106156129A (zh) * 2015-04-08 2016-11-23 联想(北京)有限公司 文件管理方法及装置
CN107515724A (zh) * 2016-06-16 2017-12-26 伊姆西公司 用于再现存储系统的输入输出的方法和设备
CN107515724B (zh) * 2016-06-16 2021-04-02 伊姆西Ip控股有限责任公司 用于再现存储系统的输入输出的方法和设备
CN106681896A (zh) * 2017-01-09 2017-05-17 郑州云海信息技术有限公司 一种基于linux系统的文件拷贝压力测试方法
CN107679412A (zh) * 2017-09-15 2018-02-09 福建星瑞格软件有限公司 一种拦截数据库访问数据的方法以及装置
CN107679412B (zh) * 2017-09-15 2021-05-18 福建星瑞格软件有限公司 一种拦截数据库访问数据的方法以及装置
CN108733753A (zh) * 2018-04-10 2018-11-02 网宿科技股份有限公司 一种文件读取方法及应用实体
CN108733753B (zh) * 2018-04-10 2021-08-03 网宿科技股份有限公司 一种文件读取方法及应用实体
CN110096421A (zh) * 2019-04-30 2019-08-06 中国人民解放军海军大连舰艇学院 一种通信数据的采集与管理系统
CN110262787A (zh) * 2019-06-21 2019-09-20 北京搜房科技发展有限公司 语句替换方法、装置和电子设备
CN112214247A (zh) * 2019-07-12 2021-01-12 华为技术有限公司 一种系统启动方法以及相关设备
US11868631B2 (en) 2019-07-12 2024-01-09 Huawei Technologies Co., Ltd. System startup method and related device
CN112558858A (zh) * 2019-09-10 2021-03-26 无锡江南计算技术研究所 基于动态io感知的超大规模应用外存访问特征获取方法
CN112558858B (zh) * 2019-09-10 2022-11-15 无锡江南计算技术研究所 基于动态io感知的超大规模应用外存访问特征获取方法
CN111258503A (zh) * 2020-01-15 2020-06-09 广州广哈通信股份有限公司 一种cirros文件系统的管理方法和装置
CN111258503B (zh) * 2020-01-15 2024-04-05 广州广哈通信股份有限公司 一种cirros文件系统的管理方法和装置
CN116383165A (zh) * 2023-06-03 2023-07-04 浙江档安科技有限公司 一种适应性写入的档案保存方法
CN116383165B (zh) * 2023-06-03 2023-08-11 浙江档安科技有限公司 一种适应性写入的档案保存方法

Also Published As

Publication number Publication date
CN100583099C (zh) 2010-01-20

Similar Documents

Publication Publication Date Title
CN100583099C (zh) 文件系统访问记录的动态采集方法
Lee et al. Smart layers and dumb result: IO characterization of an android-based smartphone
US8121986B2 (en) Method and apparatus to capture and transmit dense diagnostic data of a file system
US6996807B1 (en) Consolidation and reduction of usage data
JP4157858B2 (ja) ストレージ・エリア・ネットワーク(san)ファイル・システムの並列高速バックアップ
Flouris et al. Clotho: Transparent Data Versioning at the Block I/O Level.
US8010505B2 (en) Efficient backup data retrieval
US8805847B2 (en) Journal event consolidation
CN107809467B (zh) 一种云环境下容器镜像数据的删减方法
US8472449B2 (en) Packet file system
CN108319543A (zh) 一种计算机日志数据的异步处理方法及其介质、系统
CN104408111A (zh) 一种删除重复数据的方法及装置
CN102436420A (zh) 使用辅助存储器的低ram空间、高吞吐量的持久键值存储
CN106294810A (zh) 一种企业产品数据归档的系统和方法
CN109445702A (zh) 一种块级数据去重存储系统
CN108153804A (zh) 一种对称分布式文件系统的元数据日志更新方法
Lee et al. {FloSIS}: A Highly Scalable Network Flow Capture System for Fast Retrieval and Storage Efficiency
US6571257B1 (en) Efficient, real-time management of storage resources
Allu et al. {Can’t} We All Get Along? Redesigning Protection Storage for Modern Workloads
US8880478B2 (en) Scan-free archiving
US8738669B1 (en) Method and apparatus for providing access to data objects within another data object
Zhang et al. Improving restore performance of packed datasets in deduplication systems via reducing persistent fragmented chunks
US11907533B2 (en) Computer system and method for recording data in storage device
CN108446076A (zh) 基于网络摘要数据的索引创建方法和系统
US10430380B2 (en) Tracking a large variety of record types with a small array

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100120

Termination date: 20160111

CF01 Termination of patent right due to non-payment of annual fee