inotify+rsync实现数据实时同步

第1章 数据实时同步介绍 1.1 什么是实时同步:如何实现实时同步

A. 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化

B. 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上

1.2 实现实时同步的方法

inotify+rsync 方式实现数据同步

sersync 方式实现实时数据同步

1.2.1 实时同步原理介绍

inotify+rsync实现数据实时同步

 

1.3 inotify+rsync 方式实现数据同步 1.3.1 Inotify简介

Inotify是一种强大的,细粒度的。异步的文件系统事件监控机制,linux内核从2.6.13起,加入了 Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而 inotify-tools 正是实施这样监控的软件。国人周洋在金山公司也开发了类似的实时同步软件sersync

提示信息:

sersync软件实际上就是在 inotify软件基础上进行开发的,功能要更加强大些 ,多了定时重传机制,过滤机制了提供接口做 CDN,支持多线程橾作。

Inotify实际是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,而无须通过诸如cron等的轮询机制来获取事件。cron等机制不仅无法做到实时性,而且消耗大量系统资源。相比之下,inotify基于事件驱动,可以做到对事件处理的实时响应,也没有轮询造成的系统资源消耗,是非常自然的事件通知接口,也与自然世界事件机制相符合。

inotify的实现有几款软件:

inotify-toolssersynclrsyncd

1.3.2 inotify+rsync使用方式

inotify 对同步数据目录信息的监控

rsync  完成对数据信息的实时同步

利用脚本进行结合

1.4 部署inotify软件的前提

需要2.6.13以后内核版本才能支持inotify软件。2.6.13内核之后版本,在没有安装inotify软件之前,应该有这三个文件。

[root@backup ~]# ll /proc/sys/fs/inotify/

total 0

-rw-r--r-- 1 root root 0 Oct 17 10:12 max_queued_events

-rw-r--r-- 1 root root 0 Oct 17 10:12 max_user_instances

-rw-r--r-- 1 root root 0 Oct 17 10:12 max_user_watches

1.4.1 三个重要文件的说明

文件

 

默认值

 

作用说明

 

max_user_watches

 

8192

 

设置inotifywaitinotifywatch命令可以监视的文件数量(单进程)

 

max_user_instances

 

128

 

设置每个用户可以运行的inotifywaitinotifywatch命令的进程数

 

max_queued_events

 

16384

 

设置inotify实例事件(event)队列可容纳的事件数量

 
1.4.2 【服务优化】可以将三个文件的数值调大,监听更大的范围 1.4.3 【官方说明】三个重要文件

[root@nfs01 ~]# man proc

/proc/sys/fs/inotify (since Linux 2.6.13)

This  directory  contains    files    max_queued_events,

max_user_instances, and max_user_watches, that can be used

to limit the amount of kernel memory consumed by the  inotify interface. 

for further details, see inotify(7).

通过man手册的第7级别中查到 inotify的默认文件的详细说明。

[root@nfs01 ~]# man 7 inotify

/proc/sys/fs/inotify/max_queued_events

The  value  in this file is used when an application calls

inotify_init(2) to set an upper limit  on  the  number  of

events  that  can  be  queued to the corresponding inotify

instance.  Events in excess of this limit are dropped, but

an IN_Q_OVERFLOW event is always generated.

/proc/sys/fs/inotify/max_user_instances

This  specifies  an  upper  limit on the number of inotify

instances that can be created per real user ID.

/proc/sys/fs/inotify/max_user_watches

This specifies an upper limit on  the  number  of  watches

that can be created per real user ID.

1.5 inotify软件介绍及参数说明 1.5.1 两种安装方式

1 yum install -y inotify-tools

2 手工编译安装

注:

YUM 安装需要有epel

手工编译安装方式需要到github上进行下载软件包

inotify软件的参考资料链接:

https://github.com/rvoicilas/inotify-tools/wiki

1.5.2 inotify主要安装的两个软件

inotifywait (主要)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0dc5ef438a3cfc37133d5c3cedcc6394.html