实时复制inotify机制介绍
1,inotify是一种异步的件系统事件监控机制,Linux内核就加入了inotify,通过inotify可以从空文件系统中添加,删除,修改,移动等各种操作
inotify程序原理是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,可以做到对事件处理的实时响应
inotify的实现有几款软件:inotify-tools sersync
sersync软件在inotify基础上进行开发的,功能要更加强大一些,支持配置文件配置,多了定时重试复制机制,过滤机制,提供接口做CDN数据更新,支持多线程操作
inotify机制优点:
监控文件系统事件变化,通过复制工具实现实时数据复制
支持多线程实时复制
inotify机制缺点:
实测并发如果大于200个文件(10-100k),复制会有延迟
inotify-tools工具主要命令:
inotifywait命令实现对数据变化事件的监控,在被监控的目录等待特定文件系统事件发生,执行后处于阻塞状态,适合在shell脚本中使用,此命令是重点
inotifywatch命令实现对数据事件的信息统计,收集被监控的文件系统使用的统计数据,指文件系统时间发生的次数统计
实践第一步:
1,查看inotify支持情况
uname -r
2,安装inotify-tools
yum install epel-release -y
yum install inotify-tools -y
rpm -ql inotify-tools|head -2
3,了解命令参数和事件知识
4,实践测试
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /backup
5,一般需要监控文件系统的增加,删除,修改,在命令中加上该对应的参数即可监控
6,编写脚本
mkdir /server/scripts -p
rsync -az --delete /data/ rsync_backup@172.16.1.41::backup
sersync实践:
1,客户端实现推送成功,环境部署完成
2,部署sersync服务
wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
sersync_oldboy_64bit_20160928.tar.gz
[root@nfs01 /server/tools]# mkdir /application -p
[root@nfs01 /server/tools]# mv application/sersync /application/
[root@nfs01 /server/tools]# tree /application/
/application/
└── sersync
├── bin
│ └── sersync
├── conf
│ ├── confxml.xml
│ └── confxml.xml.ori
├── logs
│ └── rsync_fail_log.sh
└── readme.txt
4 directories, 5 files
3,sersync配置文件完成:做两件事
1,完成监控配置
inotifywait -mrq --format '%w%f' -e createFolder,close_write,delete,moveFrom,moveTo /data
2,完成命令拼接
rsync -az /data --timeout=100 rsync_backup@172.16.1.41::backup
4,启动服务
[root@nfs01 /application/sersync/conf]# ../bin/sersync -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param