问题产生背景
一个业务系统的服务器监控系统发来预警通知,磁盘空间使用率已经达到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
通过这种方式,会里面释放掉占用的磁盘空间,也不影响进程继续执行。
更新日志
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]