删除文件后,磁盘空间没有释放的处理记录

简介:

问题说明:IDC里的一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(80G),于是在跟有关同事确认后rm -f果断删除该文件。但是发现删除该文件后,/分区的磁盘空间压根没有释放出来,使用率还是100%!这是为什么呢??

1
2
3
4
5
6
[root@linux-node1 ~] # df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                        58G  7.8G   47G  100% /
tmpfs                 1.9G     0  1.9G   0%  /dev/shm
/dev/vda1              190M   72M  108M  40%  /boot

原因分析:
在Linux或者Unix系统中,通过rm或者文件管理器删除文件,只是将它会从文件系统的目录结构上解除链接(unlink),也就是说只是删除了文件和系统目录结构的链接;如果文件在删除时是被打开的(有一个进程正在使用该文件,文件被进程锁定或者有进程一直在向这个文件写数据等)状态,那么进程将仍然可以读取该文件,也就是说没有删除掉文件在读取的状态,所以磁盘空间也就会一直被占用。

一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除文件后,空间还没释放,就是因为有进程还在一直向这个文件写入内容,导致虽然删除了文件,但文件对应的指针部分由于进程锁定,并未从meta-data中清除,而由于指针并未被删除,那么系统内核就认为文件并未被删除,因此通过df命令查询空间并未释放也就不足为奇了。

解决措施有以下几种:
1)通过lsof|grep deleted命令获取到已经被删除但是仍然被应用程序占用的文件列表,然后kill掉还在占用所删除文件的进程。需要注意的是:如果有很多进程都在使用所删除文件,那么采用第1种方式kill进程就有点麻烦了,而且风险也比较大。因为kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。必须要确定不会对运行中的进程造成影响时才能使用,应用程序对这种方式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题。
2)或停掉或重启使用这个所删除文件的应用,让OS自动回收磁盘空间。
3)也可以重启操作系统,不过这并不是最好的方法
4)对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件。通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志。
在线清空文件(比如/home/wangshibo.log)的方式:

1
2
3
a) # echo " " > /home/wangshibo.log
b) # cat /dev/null > /home/wangshibo.log
c) # > /home/wangshibo.log

还有一种磁盘空间使用问题的现象:明明使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满:“no space left on device”!
这个参考:由索引节点(inode)爆满引发的问题

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************

本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6511220.html,如需转载请自行联系原作者
相关文章
|
5月前
|
存储 缓存 固态存储
怎么清理磁盘空间
随着我们频繁使用电脑进行工作、学习和娱乐,积累的文件和数据往往会占据大量的硬盘空间。这不仅会导致磁盘空间逐渐减少,还会减慢电脑的运行速度,甚至还会影响工作效率。幸运的是,通过一些简单的步骤,就可以有效地清理磁盘空间并提升电脑的性能。本文将为你提供几个简单实用的方法,帮你清理磁盘空间。
怎么清理磁盘空间
|
6月前
|
存储 Linux Apache
释放磁盘空间:解决文件删除但空间未释放的困扰
在管理Linux系统的日常中,最令人头疼的时刻之一就是发现尽管已删除了巨大的文件,但是磁盘空间的占用率仍然没有任何下降。这种情况不仅让我怀疑自己的操作是否正确,同时也给操作系统的运行带来了隐患。 究竟问题出在哪,又该如何解决?本次记录,将演示释放磁盘空间:解决文件删除但空间未释放的困扰。
释放磁盘空间:解决文件删除但空间未释放的困扰
|
8月前
|
弹性计算 运维 Shell
自动清理临时文件
【4月更文挑战第30天】
55 0
|
8月前
|
存储 缓存 Windows
释放C盘空间:WinSXS文件夹真实性大小判断及释放占用空间
WinSXS文件夹存储了不同版本的系统组件和动态链接库(DLL),包括各个Windows更新、Service Pack和功能更新安装后保留的旧版文件。即使新版本已经安装并投入使用,旧版本文件仍被保存以确保与依赖旧版本的应用程序兼容。
275 0
释放C盘空间:WinSXS文件夹真实性大小判断及释放占用空间
|
存储 Unix 应用服务中间件
服务器删除文件后磁盘空间没有立刻释放问题
服务器删除文件后磁盘空间没有立刻释放问题 服务器删除文件后磁盘空间没有立刻释放问题🔊业务场景📖一、现象描述🖥️二、原因分析🔖 三、解决办法📌四、删除原理🧣五、最后的话
302 0
|
存储 监控 应用服务中间件
为什么文件删除了但磁盘空间没有释放?
为什么文件删除了但磁盘空间没有释放?
C盘不够用了怎么办,看我4年未重做系统如何清理出25G的temp磁盘空间?
C盘不够用了怎么办,看我4年未重做系统如何清理出25G的temp磁盘空间?
179 0
C盘不够用了怎么办,看我4年未重做系统如何清理出25G的temp磁盘空间?
如何清理磁盘
我们的电脑在使用的过程当中会出现很多的垃圾占用内存,我们每天使用电脑之后清理一下比较好
如何清理磁盘
如何恢复磁盘中被删除的数据
如何恢复磁盘中被删除的数据
601 0
如何恢复磁盘中被删除的数据
|
算法 Linux Windows
如何找到系统里的重复文件,快速释放磁盘空间?
不管是 Windows 电脑还是 Linux 电脑,在使用的过程中,或多或少都会留下很多重复的文件。这些文件不仅会占用我们的磁盘,还会拖累我们的系统,所以,很有必要干掉这些重复的文件。
373 0
如何找到系统里的重复文件,快速释放磁盘空间?