生产环境中数据文件删除,空间不释放问题

首先数据文件删除文件系统空间不释放的问题不只出现在Linux平台,所有平台都可能有这样的问题。这里只是在Linux平台做一些测试,其他平台类似;其次只有将数据文件存放在文件系统中才会有此类问题。空间没有释放我们可能是通过df命令确认的,当我们用du去扫描目录的大小可能会发现df和du两个命令看到的空间使用情况是不同的,可能差别很大,找了一些文档,解决了这个问题;写这篇博客,希望跟大家分享一下。

今天通过监控,监控到某台服务器上的/home目录满了;通过df  -Th ,如下图显示:

微信图片_20180518122046

上图中显示:/home,Used%率达到100%;

随后用du  -sh ,发现/home总共才73G;微信图片_20180518122531微信图片_20180518122626

而且在/home目录下并没有找到大文件;看起来好诡异。

“df”命令报告使用了多少个磁盘块,同时“du”遍历文件系统,并报告所使用的区块的实际数量(按目录下的目录),包括与进程使用的文件相关的任何内容。

在大多数情况下,从“df”和“du”返回的空间利用率将是一致的。但是,对于一个正在运行的进程来说,删除一个大文件的潜力是存在的。在这个例子中,根据“du”,大文件不再存在,因此与删除文件相关联的区块不会被报告。随着进程仍在运行,并且仍然保留着对已删除文件的开放文件描述符,“df”继续跟踪和报告所使用的所有磁盘块,包括与已删除(幻影)文件相关联的磁盘块。在这种情况下,与被删除的文件相关联的磁盘空间只会在进程完全释放被删除的文件描述符或进程终止时(被杀死)时被释放回系统。

    解决方案

          解决方案是识别并停止(或杀死)继续为已删除文件打开文件描述符的过程。要做到这一点,请运行lsof命令(/usr/sbin/lsof )作为根来识别扣留过程,例如:

                                      #lsof   /home/  找出持有/home目录下文件的进程

                   #lsof  | grep deleted   数量太多的话,直接过滤出来,kill掉

下图中,发现都是faclcon-ag进程运行时,删除的一些日志文件;文件被删除了,但是进行还在运行着。杀掉这些进程,空间就可以得到释放。

微信图片_20180518123521

微信图片_20180518123530

 

之所以df和du命令看到的空间使用会有差别,原因在于du不统计已经删除的文件,df会统计已经删除的文件,但该文件依然被进程持有,只有等进程释放了该文件,df才不进行统计。通过lsof | grep deleted命令可以找出被删除的文件依然被进程持有的情况。

           总结:对于此类问题,我们首先要明白为什么df和du在空间计算上有所差别,其次要熟悉lsof和fuser两个命令,找出继续持有文件的进程号,通过该进程号可以在/proc目录下恢复文件,查看进程的环境信息,甚至杀掉进程来释放空间。

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98763

(1)
shenjialongshenjialong
上一篇 2018-05-17 21:20
下一篇 2018-05-18 15:00

相关推荐

  • grub stage1、grub stage1.5、grub stage2的破坏与修复实验

    grub stage1、grub stage1.5、grub stage2的破坏与修复实验 一、破坏并修复grub  stage1       446个字节 hexdump  -C  /dev/sda  -n  512             查看MBR的512个字节   dd    if=/dev/zero    of=/dev/sda    b…

    Linux笔记 2018-05-13
  • 第一周 笔记

    ../返回上一层 相对路径绝对路径    ../../   以根开始绝对路径 不以根开始是相对路径 alias 简化特别长得命令和参数(别名)  unalias去掉别名使用 .bashrc    -a全取消 ls .bashrc 别名目录文件 basename   查看主机名  (取最后的文件名) bc 计算器   obase=几进制  进制转换 clock…

    Linux笔记 2018-04-01
  • 学习liunx 系统笔记

    服务器按应用功能可分为:web 服务器   数据库服务器   文件服务器  中间件应用服务器  日子服务器   监控服务器   程序版本控制服务器  虚拟机服务器     邮件服务器   打印服务器   域控制服务器  多媒体服务器  通讯服务器    ERP 服务器等! 服务器按外形可分为:塔式服务器   、机架式服务器  、刀片式服务器。  

    Linux笔记 2018-04-01
  • 权限管理

    权限管理 普通权限 通过划分为三种人来管理,所有者u,所属组g,其他人o,所有人a 文件 删除文件用文件所在文件夹的写权限来决定 读写权限root不受控制,执行受控制 对于目录没有执行权限,无法进入目录,无法查看目录内文件属性,无法查看文件内容 执行权限是基础权限没有执行读写权限无用 程序要运行,所在目录要有执行权限 普通用户无法更改文件的所有者,要更改文件…

    Linux笔记 2018-03-31
  • 硬链接

    软连接:

    Linux笔记 2018-04-01
  • 总结_系统初始设置

    启动 自动联网 gedit /etc/sysconfig/network-scripts/ifcfg-ens33 /*图形界面 gedit*/ ONBOOT=yes 自动登录 nano /etc/gdm/custom.conf /*字符界面 nano*/ [daemon] AutomaticLoginEnable=Ture AutomaticLogin=XX…

    Linux笔记 2018-03-30