一個NFS緩存管理包的bug導致文件系統滿的問題和解決方法

這幾天安裝CentOS 6的虛擬機總是提示文件系統滿,一開始以爲是最近oracle經常操作大數據量提交導致undo tbs無限擴大,後來發現原來是NFS緩存管理包cachefilesd的問題。分享一下:

由於是測試虛擬機,文件系統懶得專門規劃,只劃分了一個根目錄分區。(各位admin切記不要犯這種實際生產環境的大忌):

[root@* /]df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_*-lv_root
                       54G   54G  0G  100% /
tmpfs                 3.9G  604M  3.3G  16% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
/dev/mapper/vg_*-lv_home
                      5.5G  478M  4.8G   9% /home


查找大於1g的文件,看有沒有什麼文件可以先刪除:

[root@* /]find -size +1G
./var/log/messages
./var/log/messages-20170109
------output omitted------

/var/log/messages和帶日期後綴的日誌有問題,怎麼會這麼大?取文件後100行看看:

[root@* log]tail -100 messages
Jan 16 16:29:42 * cachefilesd[1226]: Scan complete
Jan 16 16:29:42 * cachefilesd[1226]: Scan complete
Jan 16 16:29:42 * cachefilesd[1226]: Scan complete
------output omitted-------


cachefilesd scan complete是什麼鬼?找大俠問度娘:

http://blog.itpub.net/17203031/viewspace-1130002/


Cachefilesd進程是負責進行網絡文件系統的文件和目錄緩存管理的,比如AFSNFS這類網絡文件系統,需要在本地系統中存在一個Cache對象。這個問題是由於cachefilesd服務自身的bug造成的,由於內部設置了錯誤的日誌級別(log level)。所以每次cachefilesd在工作進行Scan的時候,都會寫入到/var/log/messages日誌文件裏面。”


詳細信息請點擊上述鏈接查閱。

明白了,反正是虛擬機,上面沒跑NFS,內網升級太麻煩,索性關了吧:

[root@* log]service cachefilesd stop
[root@* log]chkconfig cachefilesd --level 35 off


最後,把非cachefilesd日誌保存起來,清理源文件:

[root@* log]grep -v cachefilesd messages-20170109 > messages.bak
[root@* log]grep -v cachefilesd messages >> messages.bak
[root@* log]rm -f messages-20170109
[root@* log]echo > messages


最後再查看一下messages還有沒有

cachefilesd[1226]: Scan complete

的日誌,沒有的話大功告成。


總結:1、業務文件系統必須和操作系統文件系統分離!2、定期檢查並清理messages 。

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