rsync同步海量文件時/var分區滿問題

1、rsync同步海量文件時/var分區滿問題

最近老是碰到/var分區滿的問題, 一直都找不到是哪個文件把分區漲爆了.

用下面的命令看/var目錄的大小, 只有81M.

#du -sh /var
81M     /var

但是用df命令看分區情況, 發現/var卻是滿滿的..

#df -h
/dev/sdc6             2.0G  2.0G  0  100% /var

機器在同步一些圖片, 我粗略估算一下大概有1,2千萬張圖片. 開始同步的時候很正常, 當rsync運行幾個小時之後, /var開始漸漸地變大, 然後爆滿. 這個時候rsync進程使用內存也就2MB, 我猜想由於文件太多, rsync在對比server和client端的文件list的時候使用/var分區的磁盤做爲臨時的stack, 把/var分區佔滿了..

#killall rsync
#df -h
/dev/sdc6             2.0G  109M  1.8G   6% /var

kill了rsync進程, 磁盤空間又釋放了... 無奈...


總結:

rsync在對比server和client端的文件list的時候使用了臨時文件,但是我們又看不到臨時文件在哪裏, 困惑了吧.

在linux中, 先創建一個臨時文件, 然後進程打開文件, 再調用unlink刪除文件, 但是文件這個時候還是打開的, 操作系統不會將它真正的刪除, 當進程不停地寫的時候, 分區就會慢慢地漲滿, 當進程退出的時候, 操作系統檢測到文件已經沒有被使用了, 纔會被刪除.

你也不必將var鏈接到大分區, 同步海量文件的時候, 你可以按目錄將你的任務切換成若干小任務就可以了.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章