在/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制
max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。
实战调整:
[root@nfs01 data]# cat /proc/sys/fs/inotify/max_ max_queued_events max_user_instances max_user_watches [root@nfs01 data]# cat /proc/sys/fs/inotify/max_user_watches 8192 [root@nfs01 data]# echo "50000000" > /proc/sys/fs/inotify/max_user_watches [root@nfs01 data]# cat /proc/sys/fs/inotify/max_user_watches 50000000 [root@nfs01 data]# cat /proc/sys/fs/inotify/max_queued_events 16384 [root@nfs01 data]# echo "326790" > /proc/sys/fs/inotify/max_queued_events [root@nfs01 data]# cat /proc/sys/fs/inotify/max_queued_events 326790 [root@nfs01 data]# sysctl -p 5.7 Rsync+inotify实时数据同步并发简单测试10K-100K
每秒100个并发
[root@nfs01 data]# paste inotify_100_server.log inotify_100_backup_server.log > inotify_100.txt [root@nfs01 data]# cat inotify_100.txt 23:05 34227 23:05 34227 23:05 34387 23:05 34387 23:05 35027 23:05 35027 23:05 35587 23:05 35587 23:05 36473 23:05 36473 23:05 36707 23:05 36707 23:05 37587 23:05 37587 以下省略...Inotify实时并发:
结论:经过测试,每秒200文件并发,数据同步几乎无延迟(小于1秒)
5.8 inotify 优点:1)监控文件系统事件变化,通过同步工具实现实时数据同步。
5.9 inotify 缺点1)并发如果大于200个文件(10-100k),同步就会有延迟
2)我们前面写的脚本,每次都是全部推送一次,但确实是增量的。也可以只同步变化的文件,不变化的不理。
3)监控到事件后,调用rsync同步是单进程的,而sersync为多进程同步。既然有了inotify-tools,为什么还要开发sersync?
1)支持通过配置文件管理
2)真正的守护进程socket
3)可以对失败文件定时重传(定时任务功能)
4)第三方的HTTP接口(例如:更新cdn缓存)
5)默认多进程rsync同步
1)inotify(sersync)+ rsync,是文件级别的。
2)drbd文件系统级别,文件系统级别,基于block块同步,缺点:备节点数据不可用
3)第三方软件的同步功能:mysql同步(主从复制),oracle,mongodb
4)程序双写,直接写两台服务器。
5)利用产品业务逻辑解决(读写分离,备份读不到,读主)
说明:
用户上传的图片或者附件单独存在NFS主服务器上;
用户读取数据从两台NFS备份服务器上读取;
NFS主和两台NFS备份通过inotify+rsync方式进行实时同步。
6)NFS集群(1,4,5方案整合)(双写主存储,备存储用inotify(sersync)+rsync