首页 > 代码库 > 磁盘空间已满,但是还有可用空间
磁盘空间已满,但是还有可用空间
1.问题:
tts服务器邮件提示西安交大教学中心磁盘空间已满。根据查看磁盘空间命令显示,应该还有23g的剩余空间,但在Avail这一项上,已显示为0,如下图所示。
[root@xianjiaoda streams]# df –h
2.排查:
2.1inode节点用完
inode节点是否用完,显示只用了6%,排除。
[root@xianjiaoda streams]# df –i
2.2系统预留空间过大
大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满了),这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就crash,给监控系统和管理员一点时间去察觉。在linux ext2/ext3/ext4文件系统上通常默认预留5%的硬盘空间,是不是有运维人员对这个进行调整了呢?根据下图,显然是系统默认设置,排除
[root@xianjiaoda data]# dumpe2fs /dev/sda6 |grep -i "block coun"
2.3存在“僵尸空间”
大多数服务在运行时,是不能删除当前正在写入的日志文件的。因为当前日志B被进程A占用,通过rm命令删除后,实际只删除了B的文件名(有的日志文件应用记数不为0,因为空间不会被释放),进程A仍然写日志到B中,当进程A开启时,已经通过B定位到了B的inode,就是说再写日志是不通过B了,即使删除了B,进程A依然写到B所在的inode节点,磁盘空间还会增加,空间也不会释放。是不是这种原因呢?
2.3.1查看删除文件占用空间情况
[root@xianjiaoda data]# lsof |grep delete
杀掉这个进程或重启即可
3.相关:
3.1调整系统预留增加空间
可以通过调整系统预留大小来增加空间,但是不推荐,windows的文件系统就没有预留空间。
3.1.1检查磁盘空间占用情况
[root@zhongguanc ~]# df –h
3.1.2将预留大小调整为10%,默认%5
[root@zhongguanc ~]# tune2fs -m 10 /dev/sda2
3.1.3查看调整后的效果,变小了
[root@zhongguanc ~]# df -h
3.2删除过期日志
删除日志增加空间大小,因为tts服务器下的tomcat日志文件catalina.out没有做日志分割,所以需要手动删除。
3.2.1查看日志大小
[root@xianjiaoda data]# du –sh /data/tomcat/logs/catalina.out
3.2.2删除日志,关闭tomcat服务
[root@xianjiaoda data]# rm -rf /data/tomcat/logs/catalina.out
[root@xianjiaoda data]# /data/tomcat/bin/shutdown.sh
3.2.3重启tomcat,查看日志大小
[root@xianjiaoda data]# /data/tomcat/bin/startup.sh
[root@xianjiaoda ~]# du -sh /data/tomcat/logs/catalina.out
3.24查看磁盘空间大小,验证结果
[root@xianjiaoda ~]# df –h
4小结:
1) 在排查第二种可能的时候,已经得到了正确答案,500G的磁盘系统预留5%,即25G,现在有23G不知道为什么不能用,但是当时没有意识到。
2) 在排查第三种可能的时候,确实已经找到了java所删除 文件仍然占用空间,准备中午的时候重启服务,释放空间,但是中午在查看的时候,删除文件已经不占用空间,而且之后磁盘可用空间也没有增加。所以这是很奇怪的问题。
3) 总的来说,问题搞清了是系统预留空间,但是关于“僵尸空间”的问题,还需要在今后的工作中更深入的了解。
5:补充
现有的文件系统中ext4和xfs具有日志记录和磁盘缓存功能,这两个功能用于用户误删数据恢复使用的,默认是开启的,这两个功能的开启也会占用一部分磁盘空间。为提高磁盘性能的话可以管理,但是这样操作磁盘的性能提升很少。
本文出自 “庭中有奇树” 博客,请务必保留此出处http://zhangdl.blog.51cto.com/11050780/1881840
磁盘空间已满,但是还有可用空间