1.概念
一种强大的,细粒度的,异步文件系统事件监控机制,内核从2.6.23开始支持使用,具体监控事项(增删改)
2.安装软件
yum -y install inotify-tools (前提是部署好epel源)
3.inotify软件应用软件前提
linux内核从2.6.13起开始使用,加入inotify支持
[root@nfs01 ~]#cd /proc/sys/fs/inotify/
[root@nfs01 /proc/sys/fs/inotify]#ls
max_queued_events 队列容纳事件:16384
max_user_instances 默认进程数:128
max_user_watches 默认监控量:8192
max_user_watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
max_queued_events: 设置inotify实例事件(event)队列可容纳的事件数量
4.inotify软件命令
/usr/bin/inotifywait 开启实时监控服务(监控文件/目录数据变化)
/usr/bin/inotifywatch 统计事件变化次数
5./usr/bin/inotifywait 命令参数说明
-m (--monitor) 实时监控
-r 表示递归
-q (--quiet) 安静的输出信息,不提示,或输出重要信息
--mtime 指定时间输出格式
--format 指定输出格式
-e 指定监控事件参数
man strftime 可查看相关参数
6.监控重要的事件
(1)close_write事件
(2)move_to(移入)/move_from(移走)
(3)delete
(4)create
7.inotify 命令监控事件操作命令
(1)指定查看事件时间及显示格式 --timefmt --format
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f" /oldgirl/
优化二:
[root@nfs01 /]#inotifywait -mrq --timefmt "%F %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(2)指定显示查看事件 %e
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" /oldgirl/
(3)指定查看的事件 -e
[root@nfs01 /]#inotifywait -mrq --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件:%e" -e create /oldgirl/
1.划分存储与备份服务器
2.在nfs存储器上部署inotify监控服务器,监控相应文件或目录数据信息变化
3.将监控的文件/目录中变化信息进行推送,实现实时备份到rsync服务器
1.rsync守护进程模式要部署完成
2.inotify实时监控数据变化服务部署
[root@nfs01 ~]#yum -y install inotify-tools 安装inotify软件
[root@nfs01 ~]#cd /proc/sys/fs/inotify/ 查看inotfi的相关配置文件
[root@nfs01 /]#inotifywait -mrq /oldgirl/ 开启实时监控
3.利用脚本方式,将以上服务串联在一起
/server/scripts/inotify.sh 编写脚本如下
#!/bin/bash
inotifywait -mrq --format “%w%f” -e create,delete,close_wrte,moved_to /data | \
while read line
do
rsync -avz /data/ rsync@172.16.1.41::backup --password-file=/etc/rsync.password
done
1.inotify 优点
监控文件系统事件变化,通过nfs共享同步工具实现数据同步
2.inotify 缺点
(1)并发如果>200个文件(4-100k),同步会有延迟
(2)脚本推送同步服务的过程中,是增量传输的,影响传输效率
(3)监控到事件时,rsync同步是单线程的,sersync是多线程同步的
(4)inotify实现同步需要编写shell脚本,来实现实时同步
1.sersync 功能
(1)支持配置文件管理
(2)真正的守护进程是socket
(3)可以对失败文件定时重传(定时任务功能实现)
(4)第三方的http接口
(5)默认多线程同步
2.sersync 部署
(1)部署好rsync守护进程服务
(2)下载sersync服务
官方地址:https://github.com/wsgzao/sersync
解压缩软件程序包:unzip sersync_installdir_64bit.zip
将软件程序目录移动到指定目录中:mv sersync/ /usr/local/
编写sersync配置文件(/usr/local/sersync/conf)
注释说明:实时同步的排除功能,排除特殊文件
注释说明:指定监控文件或目录变化的事件信息
注释说明:配置文件主修改参数
(3)启动sersync服务
1.授予sersync执行权
cd sersync/sbin sbin目录下授权执行权
chmod +x sersync --- 授予sersync命令拥有执行权限
2.执行命令
./sersync?-dro?/usr/local/sersync/conf/confxml.xml
[root@nfs01 data]# ps -ef|grep sersync 查看服务启动情况
参数:
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
3.sersync 总结
互联网常见数据同步方法总结:
原文:http://blog.51cto.com/13520779/2089564