首页 > 代码库 > 磁盘空间已满,但是还有可用空间

磁盘空间已满,但是还有可用空间

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定位到了Binode,就是说再写日志是不通过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

磁盘空间已满,但是还有可用空间