免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2821 | 回复: 2
打印 上一主题 下一主题

探讨Linux文件系统监控 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-05 06:40 |只看该作者 |倒序浏览
最近在考虑Linux文件系统监控的问题,主要是要获取文件系统中的任何变化,如文件修改,增加,删除等等。

查阅了一些资料,但都没法完全解决问题,希望论坛高人指点。以下是我的一些想法。

1. inotify,在kernel 2.6.13后被引入,完全可以解决我的问题,但是我需要监控的系统多数是Kernel2.4的系统,而且不能被打补丁。

2. dnotify,在kernel2.4和2.6中都有,也是我可能唯一可以依靠的机制。但是dnotify的主要缺陷在于很难做到对整个文件系统的监控,因为它要打开监控的目录,而且只能监控一层。
    同时文件的变化,还需要事先Cache状态,在变化发生后,逐一比较。
    后者倒是其次,主要是如何让dnotify监控整个文件系统,

    我的想法是,尽可能减少dnotify监控的目录数,做到有的放失。
    在监控前,获取系统当前所有运行进程打开的文件句柄,从而得到文件/目录列表, 这要只监控这些文件/目录的父目录,可以大大减少dnotify打开文件句柄的数量。
    在监控文件系统的同时,监控系统中进程的运行状况,例如新进程被启动,运行进程退出,进程打开文件句柄变化等的情况,如果发生此类的变化,则动态调整dnotify的监控对象。
    从而最终使得dnotify可以有效的监控整个文件系统。

    现在的问题是,如何监控进程的运行状态,不能采用poll的方式,这样实时性下降,采用内核通知,但不知如何去做。好像kevent可以,但是好像也是2.6的机制。

    大家看看有何办法。

    谢谢

论坛徽章:
1
寅虎
日期:2015-01-23 02:35:47
2 [报告]
发表于 2008-05-05 08:55 |只看该作者
tripwire

论坛徽章:
0
3 [报告]
发表于 2008-05-05 21:41 |只看该作者
我google了一下Tripwire,看起来它是基于定期的文件系统扫描,不是实时的监测,而且扫描的话,开销会随着文件系统的庞大程度上升。

我想最好能有像2.6内核的inotify类似的机制。

和别人讨论了我的想法,试图可以通dnotify监控/proc文件系统,但是好像不能成功。

今天在研究一下kevent,看看能否有什么突破。

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP