Linux系统——Inotify事件监控工具
每秒传输文件200个
Rsync放在定时任务中也只是一分钟执行一回,要想达到实时的效果,为防止单点nfs架构故障,再启动一台nfs服务器作为主nfs服务器的备份服务器,此时需要inotify实时同步数据(秒级别同步),而这台备份nfs服务器可以作为rsync备份服务器
Inotify是一种异步的文件系统事件监控机制软件,通过inotify可以监控文件系统中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统性文件的各种变化情况。
Inotify的软件版本
(1)inotify-tools
(2)sersync
(3)lsyncd
其中sersync版本软件是rsync与inotify的结合版本
云yum仓库安装
从网上下载一个epel.repo的yum源
(1)先查看wget软件包是否安装,若没有则yum安装wget
# yum -y install wget
(2)# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
把文件下载到这个位置 从哪里下载
(3)# yum -y clean all
(4)# yum makecache
Inotify安装步骤
# yum -y install inotify-tools
# which inotifywait
inotifywait参数 |
含义说明 |
-r --recursive |
递归查询目录 |
-q --quiet |
打印很少的信息,仅仅打印监控事件的信息 |
-m,--monitor |
始终保持事件监听状态 |
--exclude |
排除文件或目录时,不区分大小写。 |
--timefmt |
指定时间输出的格式 |
--format |
打印使用指定的输出类似格式字符串 |
-e,--event |
通过此参数可以指定需要监控的事件,如下一个列表所示 |
-e :--event的各种事件含义
Events |
含义 |
access |
文件或目录被读取 |
modify |
文件或目录内容被修改 |
attrib |
文件或目录属性被改变 |
close |
文件或目录封闭,无论读/写模式 |
open |
文件或目录被打开 |
moved_to |
文件或目录被移动至另外一个目录 |
move |
文件或目录被移动到另一个目录或从另一个目录移动至当前目录 |
create |
文件或目录被创建在当前目录 |
delete |
文件或目录被删除 |
umount |
文件系统被卸载 |
人工测试监控事件
开启两个窗口
测试create(创新事件)
# inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w %f' -e create /backup
-mrq:-m 进行不间断持续监听
-q 只输入简短信息
-r 递归监控整个目录包括子目录
--timefmt ‘’ 指定输出的时间格式
“%y %m %d %H %M”----“年 月 日 小时 分钟”
--format ‘’ 输出的不仅是时间,还有路径,会按照指定的格式输出变化的路径
“%T %w %f”-----“时间 路径 文件名”
-e 指定监控事件类型,“以create创建事件为例”
/backup 监控的目录
%w%f 表达的是路径+文件名,也就是绝对路径;
若管道符给rsync,就可以实时传送创建事件
测试delete(删除事件)
# inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w %f' -e delete /backup
当删除指定目录的文件时,delete事件有更新跟踪
测试close_write(写关闭事件)以write方式打开文件并关闭
close_nowrite 以非write方式打开文件并关闭
当在指定目录中,写入文件信息或创建文件预备写入信息时,写关闭时间会更新信息,记录情况。通常监控“echo”、“touch”、“vim”命令。
# inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w %f' -e close_write /backup
测试moved_to(移动事件)将文件移入被监测的目录
moved_from将文件移动被监测的目录出去
# inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w %f' -e moved_to /backup
编写inotify实时监控脚本
将inotify实时监控放在后台(在命令后面加“&”)
# inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w %f' -e moved_to /backup &
# backup_Server=备份服务器的IP地址
Inotify绝对路径 -mrq --format ‘%w%f’ -e create,close_write,delete /data | while read line
Rsync绝对路径
命令 | while read line(变量)默认将管道符左边的值复制到line这个变量中,执行while循环
关键参数调整
在/proc/sys/fs/inotify目录下有三个文件,对inotify机制有一定的限制
(1)max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
(2)max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
(3)max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。
inotify优点及缺点
(1)优点
监控文件系统事件变化,通过同步工具实现实时数据同步。
(2)缺点
- 并发如果大于200个文件(10-100k),同步就会有延迟
B. 我们前面写的脚本,每次都是全部推送一次,但确实是增量的。也可以只同步变化的文件,不变化的不理。
C. 监控到事件后,调用rsync同步是单进程的,而sersync为多进程同步。
sersync功能多:(inotify+rsync命令)
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通过rsync+inotify进行实时同步,同步两个完全一样的作为备份:NFS备份1、NFS备份2;同步的目的在于Web服务器读取数据NFS备份中上传过来的数据
Web服务器将读取的压力不再给主NFS,而是均衡负载到NFS备份1、NFS备份2上。这样。写入的压力给了主NFS,读取的压力在NFS备份上,这种方法称为读写分离,可以提高NFS性能(通常,互联网20%的压力在写入,80%的压力在读取,相当于多台NFS分担压力)。
NFS的双主双写模式(当写入压力大时使用该架构,网卡的使用要求极高,一般为万兆网卡)
环境后方为两个双主NFS服务器(记一个为IP1,一个为IP2),若开发时设定图片在IP1中写入,视频在IP2中写入,这样图片和视频的写入压力被分散。
假设,Web服务器的挂载目录都有两个共享目录(一个为/backup1,、另一个为/backup2),把IP1的主NFS服务器挂载到/backup1上,把IP2的主NFS服务器挂载到/backup2上,每台Web服务器都将NFS存储挂载到不同的共享目录上。开发默认,不论图片还是附件都先通过/backup1目录中读取,若/backup1中没有读取到,就去/backup2中读取,若都为读取到目标数据,则不存在该目标数据。通常,用来缓解NFS的写入压力。
集群架构的搭建
NFS与NFS之间通过rsync和inotify传递数据,进行数据间的实时同步(备份),NFS与Web服务器之间通过远程挂载进行数据共享
Linux系统——Inotify事件监控工具的更多相关文章
- Linux实战教学笔记23:Inotify事件监控工具
第二十三节 inotify事件监控工具 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载, ...
- (转)第二十三节 inotify事件监控工具
第二十三节 inotify事件监控工具 标签(空格分隔): Linux实战教学笔记-陈思齐 原文:http://www.cnblogs.com/chensiqiqi/p/6542268.html 第1 ...
- inotify事件监控工具
inotify事件监控工具 rsync + inotify 组合的起源 inotify优缺点 优点:监控文件系统事件变化,通过同步工具实现实时数据同步 缺点:并发如果大于200个文件(10-1 ...
- Linux系统与程序监控工具atop教程
引言 Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:).但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳 ...
- Linux系统inotify工具安装配置
inotify主要功能 Inotify 是一个 Linux特性,它监控文件系统操作,比如读取.写入和创建.Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多.学习如何将 ...
- Linux系统下 Rsync 环境安装搭建
一.Rsync简介 1.认识 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 ...
- 【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序
原始博文和参考博文 1.CentsOS系统inotify实时监控服务器文件 2.Linux中让进程在后台运行的方法 3.linux inotify 监控文件系统事件 非常好 方法一 说明: 服务器系统 ...
- 使用inotify实现linux系统下的目录变化监控
近期,有个项目须要及时删除Nginx服务生成的缓存文件,因为不是非常了解Nginx缓存生成的策略,在网上也沒有细致找,经过大家讨论,终于希望引入liunx的inotify功能,监控某个liunx文件夹 ...
- 非常实用的Linux 系统监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
随机推荐
- mybatis由浅入深day02_8spring和mybatis整合
8 spring和mybatis整合 8.1 整合思路 需要spring通过单例方式管理SqlSessionFactory.mapper接口. spring和mybatis整合生成代理对象,使用Sql ...
- 超全面的JavaWeb笔记day15<mysql数据库>
1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...
- Python Scrapy 自动爬虫注意细节(2)
一.自动爬虫的创建,需要指定模版 如: scrapy genspider -t crawl stockinfo quote.eastmoney.com crawl : 爬虫模版 stockinfo : ...
- php导出excel(xls或xlsx)(解决长数字显示问题)
1)demo $titles = array('订单号','商品结算码','合同号','供应商名称','专柜','商品名称','商品货号','商品单价','商品总价','供应商结算金额','商品数量' ...
- exp/imp与expdp/impdp区别
在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间,而且文件也 ...
- Receiver type for instance message is a forward
本文转载至 http://my.oschina.net/sunqichao/blog?disp=2&catalog=0&sort=time&p=3 这往往是引用的问题.ARC要 ...
- web基础----->readonly与disabled的区别
readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,今天我们通过案例来学习一下. readonly和Disabled的区 ...
- Docker源码分析(七):Docker Container网络 (上)
1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”.那 ...
- Docker源码分析(二):Docker Client创建与命令执行
1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖.便捷的软件集成测试与部署之道.在团队开发软件时,Docker可以提供可复用的运行环境.灵活的资源配置. ...
- 使用Android Studio调试内存问题
http://blog.csdn.net/yutao52shi/article/details/50055669 前言 内存问题对于Android开发者是永远的痛.如果一个android程序员说他没有 ...