rsync備份海量文件時占用大量內存的解決方法
linux發(fā)行版中大多都自帶rsync,不過版本比較低,一般都是2.6.X
在2.X的版本中,rsync備份時都是先列表再備份(添加或者刪除),在處理大量文件時,會耗費比較多的內存。
備份的時候,rsync掃描到的每個文件(目錄也一樣),在它的列表中約占100字節(jié)的內存,如果加了--delete參數的話,占用的內存會更多。
例如我這里一臺服務器,約800萬的圖片,而且更新比較頻繁,文件數增長比較快,差不多每天增加約10萬張。備份的時候,rsync大約占用了將近2G的內存,大量內存的占用,造成服務器物理內存不足,進而使用到swap,然后產生更高的iowait(交換內存),進而造成rsync列表更慢,并且影響到服務器上的業(yè)務。
對于這樣的情況,在rsync 3.X出現(xiàn)之前,人們普遍給出的建議是把備份操作給拆分成若干個小的備份操作。比如原來有10個圖片目錄一起備份,現(xiàn)在拆成10個備份操作,每次只備份其中一個。另外,還有人建議減小目錄的深度,這樣可以減小目錄的數量,可以減少rsync占用的內存。另外還有個叫做digisync的軟件,是專門用來備份G級數量的文件的。
rsync 3.X采用的是incremental file list,與原來的 2.X相比,現(xiàn)在是一邊列表一邊備份(添加或刪除)。這對于大量文件的備份操作來說,無疑節(jié)省了很多時間。
實測發(fā)現(xiàn),rsync 3.0.4備份時占用的內存大約時4M,跟一個apache進程占用的內存差不多。
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,使得很長一段時間內,大家不得不找各種各樣的辦法來處理大量的文件備份操作
相關文章
如何快速搭建一個自己的服務器的詳細教程(java環(huán)境)
這篇文章主要介紹了如何快速搭建一個自己的服務器的詳細教程(java環(huán)境),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06DELL DOSA 6.X 服務器引導光盤Dell Systems Build and Update Utility I
戴爾系統(tǒng)構建和更新實用程序是可引導的實用程序,適用于單一服務器操作系統(tǒng)安裝、預加載操作系統(tǒng)固件更新和預加載操作系統(tǒng)系統(tǒng)配置2016-04-04