首页 > 其他分享 >删除文件后,磁盘空间没有释放的处理记录

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

时间:2022-11-10 12:33:35浏览次数:64  
标签:文件 释放 删除 磁盘空间 meta 进程 指针

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

原因分析: 在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)的方式:

c)# > /home/wangshibo.log

 

标签:文件,释放,删除,磁盘空间,meta,进程,指针
From: https://www.cnblogs.com/wutao-007/p/16876671.html

相关文章

  • windows删除休眠文件hiberfil.sys的方法
    1、以管理员运行CMD,输入以下命令:POWERCFG-HOFF即自动删除该文件,这文件和内存等大。如内存2G这文件也为2G.大家看处理前后C盘空间的变化就知道了。2、恢复......
  • 如何在Windows资源管理器中删除遗留的SeaDrive快捷方式
    当你退出SeaDrive应用程序或者切换Seafile帐号后,Windows资源管理器中的“SeaDrive”快捷方式不会消失。这是特意设计的行为,如果以后还需要访问帐号,就不需要删除它们。在某......
  • Python list添加、删除、替换元素
    Python之list添加新元素现在,班里有3名同学:>>>L=['Adam','Lisa','Bart']今天,班里转来一名新同学Paul,如何把新同学添加到现有的list中呢?第一个办法是用list的​​......
  • 删除文件内的换行符
    【来源:https://www.xyhtml5.com/31757.html,转载请注明】删除文件里面的换行符,比如有一个文件a.txt:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6使用......
  • mongodb添加删除节点及仲裁节点
    温馨提示:此mongodb版本为5.0.11,并注意,如果要删除节点,可以直接删除,添加节点前要先删除仲裁节点。rs.remove("192.168.0.180:27017");  (移除节点,如果移除仲裁节点一直卡......
  • Vue学习记录--实现列表的添加删除以及查找功能
    1.x版本中的filterBy指令,在2.x中已经被废除:​​filterBy-指令​​<trv-for="iteminlist|filterBysearchNamein'name'"><td>{{item.id}}</td><td>{{item.name......
  • springboot项目整合-商城项目实现删除收货地址
    删除收货地址1.持久层1.1规划sql语句1.在删除之前需要判断该数据是否存在,判断该条数据的归属是否是当前的用户,不需要重复开发2.执行删除收货地址deletefromt_addre......
  • Oracle11g redo log 创建、添加、删除(重做日志组,重做日志文件)
    selectgroup#,sequence#,members,bytes,status,archivedfromv$log;selectgroup#,status,type,memberfromv$logfile;添加redo组alterdatabaseaddlogfile(......
  • SAP ABAP 修改已释放的请求(CTS)
    1.SE11进入E070数据库表  2.输入需要修改的请求号 3.双击  4./H回车两次,调起DEBUG模式  4.将CODE的值SHOW改为EDIT  5.修改后点击保存  ......
  • 015.更新与删除操作
    1.更新1.1在goods.xml中编写<updateid="update"parameterType="com.imooc.mybatis.entity.Goods">UPDATEt_goodsSETtitle=#{titl......