這幾天安裝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進程是負責進行網絡文件系統的文件和目錄緩存管理的,比如AFS和NFS這類網絡文件系統,需要在本地系統中存在一個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 。