Linux如何处理文件已删除但空间不释放的问题
Linux如何处理⽂件已删除但空间不释放的问题
问题产⽣背景
⼀个业务系统的服务器监控系统发来预警通知,磁盘空间使⽤率已经达到90%了,然后就登陆服务器搜索了下⽐较⼤的⽇志⽂件,全部都删除了(坑在此处埋上了),磁盘空间释放了⼀些,当时也是疏忽,没有确认查出并删除的⽂件⼤⼩的空间是否已经全部释放。没过⼏天,服务器⼜被预警了,⽐较纳闷,⽇志怎么增长的这么快,排查之后发现,原来是上次操作删除⽂件后,有个较⼤的⽂件空间没有释放导致的。
问题还原及解决办法
到占⽤空间较⼤的数据⽂件
#查看磁盘空间使⽤情况
$ df -h
#先查询/tmp⽬录下占⽤空间较⼤的⽂件
$ du -sh /tmp/*|sort -nr|head -3
#在查询/home⽬录下占⽤空间较⼤的⽂件
$ du -sh /home/*|sort -nr|head -3
# 到⽂件后,进⾏删除即可,删除后,使⽤ df -h进⾏查看是否已经释放
说明下为啥在⽂件的时候,先了/tmp/*⽬录下的⽂件
Linux系统删除策略:Linux没有回收站功能,所以服务去会将要删除的⽂件都会先移动到系统/tmp⽬录下,然后定期清除/tmp ⽬录下的数据。
有好多服务器在安装系统的时候没有给/tmp进⾏单独分区,所以有可能是/tmp⽬录下的数据占⽤了很⼤⼀部分空间,可以先清除掉/tmp⽬录下的⽂件来释放空间。下雪的句子
优秀教师个人材料本次出现删除⽂件不释放空间,是在删除/home⽬录空间下的⼀个dubbo服务⽇志⽂件时发⽣的。
删除⽂件不释放空间原因伏尔加河的流向
⼀般情况下不会出现删除⽂件后空间不释放的情况,但在这个⽂件被进程锁住或者是有进程⼀直往这个⽂件写数据等情况下,还是会出现的。了解Linux下⽂件的存储机制和存储结构的原理就会理解这个问题了。
⽂件存在Linux系统中分为两部分:指针部分和数据部分。
指针部分:存在⽂件系统的meta-data中,我们执⾏rm命令将数据删除后,这个指针就从meta-data中被清除掉了。
数据部分:数据就是直接存储在磁盘上了,当指针被从meta-data中清除后,数据部分占⽤的空间就可以被覆盖并写⼊新的内容。
之所以出现删除dubbo⽇志⽂件后,空间还不释放,就是由于dubbo进程还在⼀直往这个⽂件⾥⾯写数据,在删除⽂件的时候,指针并没有被从meta-data中清除掉,所以⽇志⽂件还是占⽤着空间。
如何到此类⽂件
可以通过lsof命令获取已经删除但是还被程序占⽤的⽂件列表:
lsof | grep delete午夜骑士
世界最丑十大建筑
如何释放此类空间
蓝湛解决这⼀类问题释放空间的⽅法有很多种:重启占⽤的进程、重启操作系统、通过命令。⾮⽣产环境采⽤前两种⽅式最⽅便了,但是对于⽣产环境,还是尽量采⽤命令的⽅式,其实命令也很简单:
echo " " >/home/dubbo/log/xxx.log
通过这种⽅式,会⾥⾯释放掉占⽤的磁盘空间,也不影响进程继续执⾏。
到此这篇关于Linux如何处理⽂件已删除但空间不释放的问题的⽂章就介绍到这了,更多相关Linux ⽂件删除空间不释放内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。