解决linux系统删除文件后,可用率没变,磁盘还是满的问题

 更新时间:2025年10月10日 09:40:29   作者:石子君  
这篇文章主要介绍了解决linux系统删除文件后,可用率没变,磁盘还是满的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

某天更新服务时,发现服务怎么也上传不了,原因是磁盘空间不足,这很简单,直接找到大文件删除rm -rf 即可,但是我删除之后,df -h 发现磁盘空间一点变化都没有,可用率还是满的

排查

随后进行问题排查

难道是系统反应慢,没有刷新造成的?

我就立即执行

lecho 3 > /proc/sys/vm/drop_caches

这个命令会强制释放系统缓存空间,清空所有级别的缓存,包括页面缓存、dentry缓存和inode缓存

但是没什么用。。。。。

于是百度了示意

在 Linux 中,文件存储在硬盘上的最小存储单位是扇区(Sector),每个 sector 只有 512字节大小;多个 sector 可以组成文件块 (block) 。当我们读取某个文件数据的时候,操作系统就需要知道这个文件存储在哪个 block 上。文件的数据存放位置信息被存放到了 inode (索引节点)上。也就是说,在 Linux 下,文件由指针部分(inode)和数据部分(data)组成。

因此,执行 rm xxx 命令删除文件的时候,只是删掉了inode数据,而文件的实际数据部分在 inode 被清除掉之后,会被覆盖并写入新的内容。但是如果文件在删除的时候是被打开的(有一个进程正在使用该文件,文件被进程锁定或者有进程一直在向这个文件写数据等)状态,那么进程依旧可以读取该文件,系统就会认为该文件的磁盘空间一直被占用。

虽然删除了文件,但是由于进程还在一直向这个文件写入内容,文件的 inode 并没有清除掉,系统内核认为文件并未删除,这才出现空间不释放的情况。也就是说:当一个进程持续的写入一个文件的时候,直接删除这个文件,磁盘空间并不会得到释放。

那么我们就清楚了,是被占用导致表象删除,所以我们可以重启相关服务,或者是直接杀死该进程

解决

lsof | grep deleted | grep docker

我是docker相关服务引发的,所以我检索了docker,各位在不清楚的时候可以不用检索,直接lsof | grep deleted

于是我将这个进程kill -9 进程号

df- h

这样就正常了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    这篇文章主要介绍了Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Linux下Mysql定时任务备份数据的实现方法

    Linux下Mysql定时任务备份数据的实现方法

    当安装完成操作系统之后,默认便会启动此任务调度命令。下面这篇文章主要给大家介绍了关于在Linux下Mysql定时任务备份数据的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • Linux下合并多个PDF文件为一个PDF文件的方法汇总

    Linux下合并多个PDF文件为一个PDF文件的方法汇总

    在 Linux 系统中,有时需要将多个 PDF 文件合并成一个大的 PDF 文件,例如,在整理文档、生成报告等场景下,合并多个相关的 PDF 文件可以提高文档的整体性和可读性,本文给大家介绍了一些常见的方法,需要的朋友可以参考下
    2025-07-07
  • Linux TCP队列的实例解读,提高网络性能和稳定性

    Linux TCP队列的实例解读,提高网络性能和稳定性

    这篇文章主要介绍了Linux TCP队列的实例解读,提高网络性能和稳定性,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Ubuntu 12.04 x64 编译安装lamp的步骤

    Ubuntu 12.04 x64 编译安装lamp的步骤

    Ubuntu 12.04 x64 编译安装lamp的步骤分享,需要的朋友可以参考下
    2012-07-07
  • 国产操作类linux系统vnc服务方式

    国产操作类linux系统vnc服务方式

    该文章介绍了如何在银河麒麟v10系统上配置和使用VNC(Virtual Network Console)虚拟网络控制台协议进行远程图形化控制,包括查看可用软件组、安装VNC服务、配置VNC服务、启动和停止VNC服务、VNC服务参数说明以及VNC服务其他说明
    2026-01-01
  • 使用Samba在Linux服务器上搭建共享文件服务的方法

    使用Samba在Linux服务器上搭建共享文件服务的方法

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。这篇文章主要介绍了使用Samba在Linux服务器上搭建共享文件服务 ,需要的朋友可以参考下
    2019-05-05
  • ubuntu中swap(虚拟内存)设置方法

    ubuntu中swap(虚拟内存)设置方法

    这篇文章主要介绍了ubuntu中swap(虚拟内存)设置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Linux基础学习之利用tcpdump抓包实例代码

    Linux基础学习之利用tcpdump抓包实例代码

    tcpdump是Linux下面的一个开源的抓包工具,和Windows下面的wireshark抓包工具一样, 支持抓取指定网口、指定目的地址、指定源地址、指定端口、指定协议的数据。下面这篇文章主要给大家介绍了关于Linux基础学习之利用tcpdump抓包的相关资料,需要的朋友可以参考下。
    2017-12-12
  • Linux查看有线网卡和无线网卡的方法详解

    Linux查看有线网卡和无线网卡的方法详解

    在 Linux 中查看有线网卡状态的命令与查看无线网卡的命令类似,但侧重点有所不同,以下是几个最常用和有效的命令,并有详细的代码供大家参考,感兴趣的小伙伴跟着小编一起来看看吧
    2025-10-10

最新评论