zoukankan      html  css  js  c++  java
  • 未释放的已删除文件

    未释放的已删除文件

    1、du 和 df 不一致

    如果隐藏文件因素排除了,还是发现 du 出来的大小诡异,比如 du 发现磁盘并没有用满,但是 df 看到磁盘使用率却是 100% 。

    这又会是什么原因呢?

    这时候,通常就得怀疑有一些已删除的文件,还被一些进程 hold 住句柄没释放,导致这些文件虽然已经删除,也的确看不到了,但是却还占着磁盘空间;

    从而导致 du 和 df 出来的磁盘使用结果不一致的情况。

    2、处理建议

    通过执行 lsof | grep deleted 可以找到那些没有释放磁盘空间的文件和进程,

    然后通过重启对应进程,就可以达到释放已删除文件占用的空间的目的。

    这个帖子 《 清空热文件的常见错误操作 》 阐述了 “已删除文件还占用磁盘” 的产生场景和处理方式。

    另外,对于这种情况,还有个错误的处理方法,这里特别提醒下:

    有些同学在找到未释放已删除文件的 pid 之后,可能会直接通过 kill pid 来达到释放已删除文件的目的。

    这种做法确实能够释放已删除文件,从而释放磁盘空间,但是这种做法是有副作用的,危害可大可小。

    如果在离线环境这么操作,影响一般不大;但是如果在生产环境这么操作的话,那就可能搞出故障来了。

    我们假设这么一种场景:

    生产环境的某程序由于某种Bug,一直不会释放日志文件,而分时写入的日志文件又是有过期删除机制的,这样一直持续下去,就会发现服务器上有大量的已过期删除日志文件还占用着磁盘空间,直到产生磁盘满风险。

    那么这个时候如果直接通过 kill pid 来处理的话,就直接把生产环境的在线程序直接干掉了;这个后果就可想而知了:在这个程序被守护进程拉起来之前,这个服务都是不可用的。

  • 相关阅读:
    设计模式之外观模式(结构型)
    Oracle merge合并更新函数
    前端自定义搜索框实现
    Easyui学习整理笔记
    Jquery+Eayui实现列表选择功能
    Oracle SQL优化器简介
    设计模式之原型模式(创建型)
    Mysql学习笔记整理手册
    Oracle和Mysql语法异同整理笔记
    Mysql实现树形递归查询
  • 原文地址:https://www.cnblogs.com/agang-php/p/14245840.html
Copyright © 2011-2022 走看看