这几天安装CentOS 6的虚拟机总是提示文件系统满,一开始以为是最近oracle经常操作大数据量提交导致undo tbs无限扩大,后来发现原来是NFS缓存管理包cachefilesd的问题。分享一下:
由于是测试虚拟机,文件系统懒得专门规划,只划分了一个根目录分区。(各位admin切记不要犯这种实际生产环境的大忌):
1
2
3
4
5
6
7
8
|
[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的文件,看有没有什么文件可以先删除:
1
2
3
4
|
[root@* /]
find
-size +1G
.
/var/log/messages
.
/var/log/messages-20170109
------output omitted------
|
/var/log/messages和带日期后缀的日志有问题,怎么会这么大?取文件后100行看看:
1
2
3
4
5
|
[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,内网升级太麻烦,索性关了吧:
1
2
|
[root@* log]service cachefilesd stop
[root@* log]chkconfig cachefilesd --level 35 off
|
最后,把非cachefilesd日志保存起来,清理源文件:
1
2
3
4
|
[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还有没有
1
|
cachefilesd[1226]: Scan complete
|
的日志,没有的话大功告成。
总结:1、业务文件系统必须和操作系统文件系统分离!2、定期检查并清理messages 。
本文转自 gole_huang 51CTO博客,原文链接:http://blog.51cto.com/golehuang/1892334