rsync備份海量文件時占用大量內(nèi)存的解決方法
linux發(fā)行版中大多都自帶rsync,不過版本比較低,一般都是2.6.X
在2.X的版本中,rsync備份時都是先列表再備份(添加或者刪除),在處理大量文件時,會耗費比較多的內(nèi)存。
備份的時候,rsync掃描到的每個文件(目錄也一樣),在它的列表中約占100字節(jié)的內(nèi)存,如果加了--delete參數(shù)的話,占用的內(nèi)存會更多。
例如我這里一臺服務(wù)器,約800萬的圖片,而且更新比較頻繁,文件數(shù)增長比較快,差不多每天增加約10萬張。備份的時候,rsync大約占用了將近2G的內(nèi)存,大量內(nèi)存的占用,造成服務(wù)器物理內(nèi)存不足,進而使用到swap,然后產(chǎn)生更高的iowait(交換內(nèi)存),進而造成rsync列表更慢,并且影響到服務(wù)器上的業(yè)務(wù)。
對于這樣的情況,在rsync 3.X出現(xiàn)之前,人們普遍給出的建議是把備份操作給拆分成若干個小的備份操作。比如原來有10個圖片目錄一起備份,現(xiàn)在拆成10個備份操作,每次只備份其中一個。另外,還有人建議減小目錄的深度,這樣可以減小目錄的數(shù)量,可以減少rsync占用的內(nèi)存。另外還有個叫做digisync的軟件,是專門用來備份G級數(shù)量的文件的。
rsync 3.X采用的是incremental file list,與原來的 2.X相比,現(xiàn)在是一邊列表一邊備份(添加或刪除)。這對于大量文件的備份操作來說,無疑節(jié)省了很多時間。
實測發(fā)現(xiàn),rsync 3.0.4備份時占用的內(nèi)存大約時4M,跟一個apache進程占用的內(nèi)存差不多。
rsync 的主頁在http://samba.anu.edu.au/rsync/ 目前最新穩(wěn)定版本為 rsync-3.1.1
cd /usr/src/
wget http://samba.anu.edu.au/ftp/rsync/src/rsync-3.1.1.tar.gz
tar xzvf rsync-3.1.1.tar.gz
cd rsync-3.1.1
./configure --prefix=/usr
make
make install
然后運行 rsync --version 來看看版本號
需要注意的是,源主機和目的主機必須都升級到 rsync 3.X 才能使用到rsync 3.X的新特性。
值得一提的是,自從 2006年11月6號發(fā)布 version 2.6.9以后,一直到08年3月才發(fā)布3.0,使得很長一段時間內(nèi),大家不得不找各種各樣的辦法來處理大量的文件備份操作
相關(guān)文章
如何快速搭建一個自己的服務(wù)器的詳細教程(java環(huán)境)
這篇文章主要介紹了如何快速搭建一個自己的服務(wù)器的詳細教程(java環(huán)境),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06教你一招一鍵搭建zerotier planet服務(wù)器腳本
ZeroTier 是一個加密的虛擬骨干網(wǎng),它的客戶端和服務(wù)端都是開源且免費的,對于一般的用戶,可以用它做內(nèi)網(wǎng)穿透,將處于不同內(nèi)網(wǎng)中的主機組成虛擬局域網(wǎng),這篇文章給大家介紹一鍵搭建zerotier planet服務(wù)器腳本的相關(guān)知識,感興趣的朋友一起看看吧2023-12-12TCP服務(wù)器實現(xiàn)數(shù)據(jù)通信
今天我們要介紹的是使用TCP協(xié)議實現(xiàn)數(shù)據(jù)通信,相比于之前寫的UDP服務(wù)器實現(xiàn)數(shù)據(jù)信,在主體邏輯上并沒有差別,下面,我們具體來看看UDP和TCP在編碼的實現(xiàn)上有什么不同,感興趣的朋友一起看看吧2023-08-08DELL DOSA 6.X 服務(wù)器引導光盤Dell Systems Build and Update Utility I
戴爾系統(tǒng)構(gòu)建和更新實用程序是可引導的實用程序,適用于單一服務(wù)器操作系統(tǒng)安裝、預加載操作系統(tǒng)固件更新和預加載操作系統(tǒng)系統(tǒng)配置2016-04-04阿里云盾網(wǎng)站安全防御(WAF)的使用方法(圖文)
這篇文章主要介紹了阿里云盾網(wǎng)站安全防御(WAF)的正確使用方法,需要的朋友可以參考下2015-09-09