如果文件系统的空间占用达到100%,就会造成系统无法读写磁盘、应用程序无法执行等故障。造成文件系统空间占满的原因有很多,比如,安装系统时设计不合理,造成有些分区过小;网络通信故障造成日志文件迅速增长等。要预防和解决这些情况,可以试试下面这几招(以文件系统/home为例):
1.定期监控重要的文件系统
定期对重要的文件系统进行扫描,并比较每次扫描的结果,分析出那些文件经常被读写。通过分析,预测出空间的增长情况,同时,可以考虑对不经常读写的大文件进行压缩存储,以减少它们占用的空间。
#ls -lR /home >files.txt
#diff filesold.txt files.txt
对不经常读写的目录/home/odd进行压缩:
#tar cvf odd.bak /home/odd
#compress odd.bak
2. 查看inodes消耗
用下面命令查看空间被占满的文件系统的inodes消耗,如果还有大量inodes可用,说明是大文件占用了空间,否则可能是大量的小文件占用了空间。
#df -i /home
3.找出占用空间较大的目录
查看/home 占用的空间:
#du -hs /home
查看/home 下占用空间超过1000MB的目录:
#du |awk '$1>2000'
4. 找出占用空间较大的文件
查找占用空间大于2000KB的文件:
#find /home -size +2000k
查找大小为500KB到1000KB之间的文件:
#find -type f -size +500k -and -size -1000k
5.找出最近修改或创建的文件
如果文件系统昨天还是正常的,今天空间就被占满了,那就需要查出哪些文件被更新过,哪些文件是新创建的,以便找出并处理不正常的大文件。先“touch”一个文件,时间戳根据具体情况定为比较近的日期,再使用find命令找出比这个文件更新的文件。
#touch -t 08190800 test
#find /home -newer test -print
6.删除日志、邮件等没用的文件
删除core、mbox等文件:
#find / -name core | xargs rm -rf
#find / -name mbox | xargs rm -rf
删除日志文件:
#rm -rf /var/log/*
7.对文件系统做链接
对已经没有空间的文件体统做链接,链接到还有空间的文件系统。
#ln -s /home /usr/home
8.检查并修复文件系统
#fsck -y /home
9.找出耗费大量空间的进程
有的应用会占用很多磁盘空间,这种情况无法具体说明,需要根据不同的应用选择优化的方法。比如,邮件系统和Web代理系统可以通过设置文件保留时间和占用磁盘空间百分比等办法控制磁盘空间的占用。
10.重启机器
重新启动系统会对文件系统进行扫描,还会初始化进程、内存和磁盘空间的管理,是解决很多问题的好办法。有了以上几招,应该可以解决大部分问题,但关键还是要在安装时就规划好分区。另外,发现文件系统被占满时,要认真分析原因,小心应对,不要删错了文件。如果这些招数都试过了还是没有解决问题,就只有采取增加硬盘、重新安装系统等办法了。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1031/showart_78004.html