zoukankan      html  css  js  c++  java
  • linux中df和du查看磁盘大小不一致解决方法

     

    挂了一块50G到/data目录下
    #  df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/xvdb1 50G 46G 1.2G 98% /data
    显示已经使用快50G空间了

    可是在/data 下用 du -sh . 只显示使用了19G

    导致这个两个命令查看磁盘容量不一致的原因是,用户删除了大量的文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它。然而如果此时还有运行的进程持有这个已经被删除的文件句柄,那么这个文件就不会真正在磁盘中被删除,分区超级块中的信息也就不会更改,df仍会统计这个被删除的文件。

    可通过 lsof命令查询处于deleted状态的文件,被删除的文件在系统中被标记为deleted。如果系统有大量deleted状态的文件,会导致du和df统计结果不一致。

    # lsof |grep deleted        #在opt目录下执行lsof |grep deleted

    解决方法:

    1、根据lsof列出的pid直接kill相应进程或者重启对应的服务。示例:
    # kill -9 692
    注:如果服务器正在运行业务,kill 会导致进程直接终止,可能会影响到业务,请慎重操作。


    2、重启服务器。

    重启服务器系统会退出现有的进程,开机后重新加载。该过程会释放调用的deleted文件的句柄。

  • 相关阅读:
    说一说Java的Unsafe类
    阿里云CentOS下安装jdk
    LeetCode 5
    五种方法实现Java的Singleton单例模式
    聊聊Java的final关键字
    LeetCode 4
    Java9都快发布了,Java8的十大新特性你了解多少呢?
    【Spring】mvc:annotation-driven 使用
    【gradle】【maven】gradle 转 maven pom.xml
    [GIT]比较不同分支的差异
  • 原文地址:https://www.cnblogs.com/reachos/p/12095639.html
Copyright © 2011-2022 走看看