真正的inotify+rsync實時同步 徹底告別同步慢
我們公司在用inotify+rsync做實時同步,來解決分散式叢集檔案一致性的問題。但當web檔案越來越多(百萬級數量html,jpg等小 檔案),同步就越來越慢,根本做不到實時,按照網上的調優方法都嘗試過,問題根本沒有解決。經過我一翻細緻研究,終於把慢的核心問題研究明白,先總結一句 inotifywait響應不會有延遲,rsync也很快。大家同樣有慢的煩惱,那是因為網上的inotify+rsync的教程都是坑。下面我們來分 析。
inotifywait 單獨分析
1 | /usr/local/bin/inotifywait-mrq--format'%Xe %w%f'-emodify,create |
執行上面命令,是讓inotifywait監聽/data/目錄,當監聽到有發生modify,create,delete,attrib等事件發生時,按%Xe %w%f的格式輸出。
在/data/目錄touch幾個檔案
1 | touch/data/{1..5} |
觀看inotify輸出
12345 | ATTRIB/data/1 --表示發生了ATTRIB事件路徑為/data/1ATTRIB/data/2ATTRIB/data/3ATTRIB/data/4ATTRIB/data/5 |
知道上面的輸出效果之後 我們應該想得到,可以用rsync獲取inotifywait監控到的檔案列表來做指定的檔案同步,而不是每次都由rsync做全目錄掃描來判斷檔案是否存在差異。
網上的inotify+rsync分析
我們來看網上的教程,我加了註釋。(網上所有的教程基本都一模一樣,儘管寫法不一樣,致命點都是一樣的)
1 2 3 4 5 6 |
#!/bin/bash
/usr/bin/inotifywait-mrq--format'%w%f'-ecreate,close_write,delete/backup|whileread
file
#把發生更改的檔案列表都接收到file
然後迴圈,但有什麼鬼用呢?下面的命令都沒有引用這個$file 下面做的是全量rsync
do
cd |
#注意看 這裡的rsync 每次都是全量的同步(這就坑爹了),而且 file列表是迴圈形式觸發rsync ,等於有10個檔案發生更改,就觸發10次rsync全量同步(簡直就是噩夢),那還不如直接寫個死迴圈的rsync全量同步得了。
#有很多人會說 日誌輸出那裡明明只有差異檔案的同步記錄。其實這是rsync的功能,他本來就只會輸出有差異需要同步的檔案資訊。不信你直接拿這句rsync來跑試試。
#這種在需要同步的源目錄檔案量很大的情況下,簡直是不堪重負。不僅耗CPU還耗時,根本不可以做到實時同步。
備註:backup為rsync server配置module,除了編寫指令碼以外,還需要配置一個rsync server,rsync server配置參考《http://www.ttlsa.com/linux/rsync-install-on-linux/》
改良方法
要做到實時,就必須要減少rsync對目錄的遞迴掃描判斷,儘可能的做到只同步inotify監控到已發生更改的檔案。結合rsync的特性,所以這裡要分開判斷來實現一個目錄的增刪改查對應的操作。
指令碼如下
相關推薦
真正的inotify+rsync實時同步 徹底告別同步慢
我們公司在用inotify+rsync做實時同步,來解決分散式叢集檔案一致性的問題。但當web檔案越來越多(百萬級數量html,jpg等小 檔案),同步就越來越慢,根本做不到實時,按照網上的調優方法都嘗試過,問題根本沒有解決。經過我一翻細緻研究,終於把慢的核心問題研究明白,先總結一句 inotifyw
inotify+rsync實時同步 徹底告別同步慢
背景 公司在用inotify+rsync做實時同步,來解決分散式叢集檔案一致性的問題。但當web檔案越來越多(百萬級數量html,jpg等小 檔案),同步就越來越慢,根本做不到實時,按照網上的調優方法都嘗試過,問題根本沒有解決。經過我一翻細緻研究,終於把慢的核心問題研究明白,先總結一句 inot
inotify + rsync 實時同步
linux系統管理、數據同步方案下載inotifywget https://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz安裝:[[email protected]/* */ ~]# tar
Inotify+Rsync實時同步文件
tle alt ces inotify water type title cto mar 一、網絡拓補圖: Inotify+Rsync實時同步文件
inotify+rsync實時同步
首先要分清楚服務端(server端)和客戶端(client端)的概念 (服務端配置 | 服務端IP173.36.17.71) rsync以daemon模式啟動 新建rsync配置檔案/etc/rsyncd.conf加入以下內容: uid = root gid
inotify+rsync實時檔案同步
程式碼釋出伺服器 192.168.67.133 釋出伺服器上下載 wget https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz wget https://github.com/downloads/rvoicilas/inot
Linux-13-Inotify+Rsync實時資料同步
配置前檢查 1.首先確定Rsync已經配置完成,客戶端可以向服務端推送檔案 [[email protected] ~]$ rsync -avzP ./syncdir [email
Linux NFS掛載優化,inotify+rsync實時備份
修復 屬性 rom 可控 共享 生產場景 優化參數 包括 linux 查看客戶端掛載的參數強制卸載高並發情況下,可以通過明確加上noatime,以達到提升優化I/O性能ro:以只讀方式掛載一個文件系統rw: 以可寫的方式掛載一個文件系統 defaults(默認):這是f
inotify+rsync實時備份總結
inotify+rsync實時同步第1章 inotify簡介 1.1 rsync+inotify組合的起源Rsync(remote sync)遠程同步工具,通過rsync可以實現對遠程服務器數據增量備份同步,但是rsync自身也有瓶頸,同步數據時,rsync采用核心算法對遠程服務器的目標文件進行對比,只進行差
rsync+inotify-tools實時同步
linuxrsync概述:rsync是類unix系統下的數據鏡像備份工具——remote sync。一款快速增量備份工具 Remote Sync,遠程同步 支持本地復制,或者與其他SSH、rsync主機同步Rsync(remote sync)是UNIX及類UNIX平臺下一款神奇的數據鏡像備份軟件,它不像FTP
Centos利用 rsync+inotify實現實時同步
rsync inotify 1.1 inotify介紹inotify是一種強大的、細粒度的、異步的文件系統事件控制機制。linux內核從2.6.13起,加入了inotify支持,通過inotify可以監控文件系統中添加、刪除、修改、移動等各種事件,利用這個內核接口,第三方軟件就可以監控文件系統下文件的
RSYNC04-配置rsync+inotify實現實時同步
cccccc ror 編譯速度 響應 大於 grep 軟件開發 介紹 cdn 1,背景介紹 Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各種變化情況,如文件存取、刪除、移動等。利用這一機制,可以非常方便地實現文件異動告警、
rsync+inotify實現實時同步
rsync inotify 一、前期準備 1、準備兩臺主機,我這裏的系統是rhel7,分別是192.168.4.11和192.168.4.22二、rsync命令的用法:1、基本格式: rsync [選項] 目錄1/ 目錄2/ 註意加斜線和不加斜線的區別,加斜線就是只同步目錄下的文件2、
inotify+rsync實現實時同步並郵件通知
代碼 moni 創建目錄 存在 echo ets selinux 5.0 from 服務器之間文件實時同步,監控文件的變化,發送郵件通知,並實時同步文件。 由於人工同步多臺服務器的文件比較吃力,可以借助這樣一套軟件,自動化的實現這樣的工作。 並且可以事實監控變化發送郵件
inotify+rsync做實時同步
progress create 同步 log echo amp etc let att 一、配置inotify隨機啟動 vi /etc/rc.local nohup /home/jenkins/inotify/inotify.sh > nohup.out 2>
rsync+inotify搭建實時同步系統
-- 切換 服務 文件系統 版本 行數據 實現 兩臺 lock Rsync 優點 rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期地備份文件服務器數據到遠程服務器上,對本地磁盤定期進行數據鏡像等。 Rsyn
rsync+inotify實現實時同步、增量備份
version rev pts 常用 無需 ESS 成功 dex http 主機A:被備份的源主機主機B:備份的目的主機 在linux內核中,默認的inotify機制提供了三個調控參數 [root@fudanwuxi html]# uname -r 3.10.0-69
inotify+rsync監控實時同步
swd fin private 創建文件 process tp5 做的 color done 監控到Centos7-001機器上的網站內容發生變化時,就同步Centos7-001:/var/www/html/目錄到Centos7-002上 Centos7-001上所做的操作
inotify+rsync檔案實時同步
需要程式碼釋出伺服器與需要同步的伺服器 釋出伺服器上下載 在程式碼釋出伺服器上安裝inotify,執行如下命令 wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz ta
inotify+rsync實現實時同步(附解決crontab中無法執行python指令碼的問題)
1.準備環境 # 系統支援的話,下面的目錄就會存在 ls /proc/sys/fs/inotify/ rpm -qa inotify-tools yum -y install inotify-tools 2.inotifywait監控目錄狀態變化 /usr/bin/inotif