inotify
inotify事件监控工具
inotify 实施准备
大前提rsync daemon 服务配置成功,可以再rsync客户端推送拉取数据,然后才能配置inotify服务。
1.在安装inotify-tools
前请先确认你的linux内核是否达到了2.6.13
,并且在编译时开启CONFIG_INOTIFY选项,也可以通过以下命令检测查看当前系统是否支持inotify
关键参数说明
2.配置云Yum仓库与安装inotify-tools
2.1首先得保证可以上网
2.2首先得有wget
这个安装包,没有就装
2.3清空/etc/yum.repos.d/目录下是Yum配置文件,可以:
2.4利用wget
从网上下载Yum配置文件
2.5清空缓存与建立新的缓存
2.6安装inotify-tools
- 一共安装了2个工具,即
inotifywait
和inotifywatch
- inotifywait:在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合shell脚本中使用。
- inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。
3.1inotifywait
命令常用参数详解
3.2-e :--event
的各种事件含义
4.人工测试监控事件
一个账号开启两个窗口
4.1 测试create
4.1.1第一个窗口测试输出(会卡住)
4.1.2第二个窗口测试
4.1.3检查第一个窗口会发现
4.2测试delte
4.2.1第一个窗口测试输出(会卡住)
4.2.2第二个窗口测试
4.2.3检查第一个窗口会发现
4.3测试close_write
4.3.1第一个窗口测试输出(会卡住)
4.3.2第二个窗口测试
4.3.3检查第一个窗口会发现
4.4测试move_to
4.4.1第一个窗口测试输出(会卡住)
4.4.2第二个窗口测试
4.4.3检查第一个窗口会发现
5.1编写inotify
实时监控脚本
5.2脚本可以加入开机启动:
提示:一个& 代表从后台开始运行该条命令。
6.1关键参数调整
在
/proc/sys/fs/inotify
目录下有三个文件,对inotify机制有一定的限制
max_user_watches
:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)max_user_instances
:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数max_queued_events
:设置inotify实例事件(event)队列可容纳的事件数量。
6.2实战调整
inotify 优点:监控文件系统事件变化,通过同步工具实现实时数据同步。
inotify 缺点:
- 并发如果大于200个文件(10-100k),同步就会有延迟
- 我们前面写的脚本,每次都是全部推送一次,但确实是增量的。也可以只同步变化的文件,不变化的不理。
- 监控到事件后,调用rsync同步是单进程的,而sersync为多进程同步。既然有了inotify-tools,为什么还要开发sersync?
8.serysync
功能多=(inotify+rsync命令)
- 支持通过配置文件管理
- 真正的守护进程socket
- 可以对失败文件定时重传(定时任务功能)
- 第三方的HTTP接口(例如:更新cdn缓存)
- 默认多进程rsync同步
9.高并发数据实时同步方案小结:
inotify(sersync)+ rsync
,是文件级别的。drbd
文件系统级别,文件系统级别,基于block块同步,缺点:备节点数据不可用- 第三方软件的同步功能:mysql同步(主从复制),oracle,mongodb
- 程序双写,直接写两台服务器。
- 利用产品业务逻辑解决(读写分离,备份读不到,读主)
说明:
- 用户上传的图片或者附件单独存在NFS主服务器上;
- 用户读取数据从两台NFS备份服务器上读取;
- NFS主和两台NFS备份通过inotify+rsync方式进行实时同步。