• du 与 df 不一致,删除文件后,空间未释放


    因空间不足,在自己的虚拟机上直接删了库的目录,释放一些空间,反正是自己玩的东西,不用跑路。(这不是重点)

    查看存储,df -h, 很是明显的/home 的存储并未释放

    Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据。 查看了一下,很明显并不是因为这个机制。(况且根目录根本的存储来看,也可以排除是这个原因)

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

    通过lsof|grep deleted命令获取到已经被删除但是仍然被应用程序占用的文件列表,(呕吼,够多)果然直接删除目录会有些问题。

     对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件。通过这种方法,磁盘空间不但可以马上释放,也可保障进程继续向文件写入日志。(但此种情况是我们已经删除,并且我不想要它了)所以使用第二种方式,直接杀死。

    lsof|grep delete|awk '{print "kill -9 "$2}'|sh
    

     查看存储,已经恢复正常。

    思考:删除后,发现有进程对日志操作,怎么操作?

     

  • 相关阅读:
    学习进度条第十周
    学习进度条第九周
    结巴分词python
    竞品分析
    学期总结(一)------文献挖掘
    分类结果评估
    scrapy 爬虫怎么写入日志和保存信息
    Python 安装 imread报错
    Python爬虫爬中文却显示Unicode,怎样显示中文--问题解答
    Python网络数据采集二
  • 原文地址:https://www.cnblogs.com/Leo-Cjh/p/13601668.html
Copyright © 2020-2023  润新知