2019-04-19课堂笔记

实时复制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/ [email protected]::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 [email protected]::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

你可能感兴趣的:(2019-04-19课堂笔记)