qq58945591 发表于 2017-10-01 13:51

关于实时监控目录变化的要求. 【已解决】

本帖最后由 qq58945591 于 2017-10-22 10:36 编辑

由于线上机器还有一台老的FreeBSD 8.4 , 领导要求对上面的某个目录进行实时同步备份, 任何变动包括增删改都配合rsync实时同步至另外一台内网机器,防止这台机器挂了,数据没有及时同步.
FreeBSD 上没有Linux上常用的inotify机制以及工具包, 查了一下,说是bsd 上有类似inotify 机制的是kqueue , 网上找了一下,目前发现两个工具说是支持这种实时监控的需求.


1. fswatch
这个玩意简单测试了一下,针对少量文件是有效,大量文件的话,需要配合打开内核参数kern.maxfiles 加大该参数, 但不幸的是,在实测监控包含大量文件的目录当中出现卡死无响应问题 , 暂时放弃.

2. clsync
这个据说也支持,但还没时间测试, 效果未知.


所以,只好到论坛来求助一下,有没有什么比较好用的类似于Linux 上的 inotify +rsync 实时监控目录并同步的方案,工具等, 求推荐或者建议.

lolizeppelin 发表于 2017-10-02 10:53

这种不应该用监控来解决

lolizeppelin 发表于 2017-10-02 10:54

上drbd或者集群文件系统

lolizeppelin 发表于 2017-10-02 10:58

在Linux下是有DRBD可以使用的。FreeBSD下也有与DRBD类似的项目,名字为Highly Available Storage(HAST)

qq58945591 发表于 2017-10-02 22:25

感谢楼上回复, 改drbd 有点大工程了,不现实。现在力求最简单方式,仅监控目录变化同步文件即可,无奈没有什么好的工具啊。

zmoon 发表于 2017-10-17 11:19

那么, 用zfs 定时快照增量发送接收呢?

lsstarboy 发表于 2017-10-19 09:06

回复 6# zmoon

快照已经不是实时的了。
如果可以忍受分钟级的延迟,cron+rsync也可以。

fzfh 发表于 2017-10-21 18:11

是否可以尝试将需要监控的目录操作写入到一个log中,然后写一个daemon秒级监控该log最后一行的变化情况。一旦发生写入操作,在写入完成后立即启用rsync。

qq58945591 发表于 2017-10-22 10:36

问题暂时解决了,最终方案还是用回fswatch, 但是分拆多个部分启动多进程进行监控, 不至于同时监控总目录由于小文件数量太多导致无响应.

期间也测试了其他方案,包括python 版的watchdog ,以及python 使用gevent异步方法的,效果都不够理想.

目前虽然暂时是解决了,但毕竟不是长久之计,随着文件数量增多,响应延迟还是可能会出现的.


好像在新版本的freebsd 上有基于libinotify库可以使用的inotify-tools,   老式freebsd没有,或者可能需要自己另行开发改造源码吧,可惜我没有这个能力. 另外,似乎这种需求也很少,网上找的解决方案都是linux 的,即便是linux , 基于文件实时同步这种场景也是很low的做法了,现如今都是各种分布式存储,对象存储了.
页: [1]
查看完整版本: 关于实时监控目录变化的要求. 【已解决】