问题现象

当磁盘空间不够的时候,客户删除了文件以释放空间,但是发现删除了文件空间依然没有释放。

问题背景

文件系统的数据分为两个部分:数据部分和指针部分,当有进程正在使用某个文件是,执行删除命令,空间是不会释放的,删除的是数据文件部分,指针部分并未删除,所以空间并不释放;以下为真实案例,本实验使用的操作系统是 ubuntu 16.04。

处理方法

  1. 执行命令安装 lsof。

    apt-get install  lsof
  2. 执行命令查看死文件占用情况。

    lsof |grep delete | more
  3. 如果这些文件过多,会占用很大的磁盘空间。可以通过如下方法来释放句柄,以清除僵尸文件

    • 执行命令正常停止或杀掉占用这些文件的服务进程。

      kill -9 pid
    • 执行清空命令,空间就会得到释放。

      echo " " > /tmp/nginx.log
    • 重启服务器。