inotify

摘要:
inotify事件监控工具inotify实施准备大前提rsyncdaemon服务配置成功,可以再rsync客户端推送拉取数据,然后才能配置inotify服务。inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。inotify缺点:并发如果大于200个文件,同步就会有延迟我们前面写的脚本,每次都是全部推送一次,但确实是增量的。
inotify事件监控工具

inotify 实施准备

大前提rsync daemon 服务配置成功,可以再rsync客户端推送拉取数据,然后才能配置inotify服务。

image_1cjpiqlkvn1t1c3n1f7f1vtb5v29.png-460.6kB

1.在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,也可以通过以下命令检测查看当前系统是否支持inotify

image_1cjpj5412rjgeu0in22cctm2m.png-8.9kB

关键参数说明

image_1cjpj66jh14au1at31g3l9fc22r13.png-12.9kB

2.配置云Yum仓库与安装inotify-tools

2.1首先得保证可以上网

image_1cjnl2n8a14bl1kus17np1pdknc29.png-13.2kB

2.2首先得有wget这个安装包,没有就装

image_1cjnlc1nk1rke1a3h1jkt1ouca7d13.png-1.8kB

image_1cjnl9rse16jf1hl81f8p14uiqlgm.png-2.2kB

2.3清空/etc/yum.repos.d/目录下是Yum配置文件,可以:

image_1cjnlfein18fs15kqf8eb9vi11g.png-6.7kB

2.4利用wget从网上下载Yum配置文件

image_1cjnlo5efa6n1bhb1qh318r2g461t.png-3.7kB

image_1cjnlp382nv29lj1baamvpbv2a.png-2.4kB

2.5清空缓存与建立新的缓存

image_1cjnlsodlbi81kjh19dmu461oco2n.png-5.6kB

image_1cjnm51odbi81h5r1vc21tj81n6s6d.png-1.9kB

2.6安装inotify-tools

image_1cjnm9iev1f79nng1pc6191011756q.png-2.1kB

image_1cjnma8u61rtuqko17q4qnoe6f77.png-3.4kB

  • 一共安装了2个工具,即inotifywaitinotifywatch
  • inotifywait:在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合shell脚本中使用。
  • inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计。

3.1inotifywait命令常用参数详解

image_1cjnn80gh1fhvudf17fn12sr1k3s8k.png-31.4kB

3.2-e :--event的各种事件含义

image_1cjnqjmt8c2t1e9c19hloh5tsv9.png-37.6kB

4.人工测试监控事件

一个账号开启两个窗口

4.1 测试create

4.1.1第一个窗口测试输出(会卡住)

image_1cjo59j9457o1rcqefg1hjt1jgj9.png-4.5kB

4.1.2第二个窗口测试

image_1cjo5c66b17k2t5823cfu1u03m.png-2kB

4.1.3检查第一个窗口会发现

image_1cjo5dlfn1nsv1kh1dek6n6196p13.png-6.1kB

image_1cjo5f1t5lsddqpdiknqis1e1g.png-10.5kB

4.2测试delte

4.2.1第一个窗口测试输出(会卡住)

image_1cjo5iocqnrsdde1fo916l11sh91t.png-4.7kB

4.2.2第二个窗口测试

image_1cjo5ju24bqouj1a5k1lo2g3s2a.png-2.1kB

4.2.3检查第一个窗口会发现

image_1cjo5kbl28cscng132vm6k14142n.png-6.4kB

image_1cjo5l1d09j9u6u1t32dea170834.png-2.9kB

4.3测试close_write

4.3.1第一个窗口测试输出(会卡住)

image_1cjo5papp1v1m14248891jsekk83h.png-5.3kB

4.3.2第二个窗口测试

image_1cjo5tfehdlg1dgg1afatog1dsu3u.png-5.8kB

4.3.3检查第一个窗口会发现

image_1cjo5tvva14kn1bgg16d2vru1b6l4b.png-7.8kB

image_1cjo5ufbia9sb8r1jnh934cv74o.png-3.3kB

4.4测试move_to

4.4.1第一个窗口测试输出(会卡住)

image_1cjo669jj11dm132rlf381614j26v.png-4.6kB

4.4.2第二个窗口测试

image_1cjo64nj115ggh6mg9t1i951p2665.png-4kB

4.4.3检查第一个窗口会发现

image_1cjo65ai91ku6b7vielv71qsh6i.png-6.8kB

5.1编写inotify实时监控脚本

image_1cjpjemjg18dteoahmb1vbn1j891g.png-17.2kB

5.2脚本可以加入开机启动:

image_1cjpjgkcs1s3l1e664d91vrj105i1t.png-3kB

提示:一个& 代表从后台开始运行该条命令。

6.1关键参数调整

/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制

  • max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
  • max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
  • max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。

6.2实战调整

image_1cjpjlspjtb41ltu3it1lah1km12a.png-30.6kB

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
  • 程序双写,直接写两台服务器。
  • 利用产品业务逻辑解决(读写分离,备份读不到,读主)
    image_1cjpk4p8v1qmt1c611ucar2prqi37.png-214.9kB

说明:

  • 用户上传的图片或者附件单独存在NFS主服务器上;
  • 用户读取数据从两台NFS备份服务器上读取;
  • NFS主和两台NFS备份通过inotify+rsync方式进行实时同步。

9.6NFS集群(1,4,5方案整合)(双写主存储,备存储用inotify(sersync)+rsync

image_1cjpk8kumtcoinj39ir0q1m9q3k.png-275.1kB

免责声明:文章转载自《inotify》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java多线程-线程的调度(合并)DB2 日期时间函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

rsync详细配置

1 说在前面的话 rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。 rsync可以实现scp的远程拷贝(rsync不支持远程到远程的拷贝,但scp支持)、...

rsync+sersync实现数据实时同步

一、为什么要用rsync+sersync架构? 1、sersync是基于inotify开发的,类似于inotify-tools的工具 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录 二、rsync+inotify-tools与rsyn...

centos 配置rsync+inotify数据实时同步2

一、Rsync服务简介 1. 什么是Rsync 它是一个远程数据同步工具,它在同步文件的同时,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。可以保持原来文件的权限、时间、软硬链接等附加信息。 2. Rsyn...

linux下的文件审计功能(audit inotify)

为了满足这样的需求:记录文件变化、记录用户对文件的读写,甚至记录系统调用,文件变化通知。本文介绍audit和inotify.什么是auditThe Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s)Kern...

rsync + inotify 实现主机间数据实时同步的原理

一、rsync实现两台服务器数据同步的原理:        Rsync 是基于rsync算法校验源(SRC)与目标(DEST)之间的差异实现数据同步的。也就是说,当使用rsync工具同步数据时候,只复制源(SRC)发生改变的文件,到目标(DEST),这类似于增量备份。所以rsync同步数据的速度是很快的。但是rsync的传输性能有点差,在海量小文件需要同步...