linux df/du 结果不一致问题分析

问题描述:

在k8s 环境中,新创建的pod在某一节点被驱逐,查看log,显示磁盘压力

Warning  Evicted    3m26s  kubelet    The node had condition: [DiskPressure]

df 查看结果如下

$ df -ah /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2       118G  109G  2.7G  98% /

du 查看结果如下

$ du -ah 
...
25G	/

排查思路

  • 挂载点的考量: df -ah会显示整个文件系统的使用情况,包括所有直接挂载在当前目录下的子文件系统。这意味着,如果你在根目录(/)下运行df -ah,它会计算根目录下所有挂载点的总和,包括如/home、/var等独立分区的使用情况。
    而du -ah则递归遍历当前目录下的所有文件和子目录,计算它们占用的空间,但不会深入到其他挂载点的内部。换句话说,du不会跨过挂载点去统计其他文件系统的使用情况。

  • 隐藏文件和目录: du -ah包含了所有文件和目录(包括隐藏的,即以.开头的文件或目录)的大小,确保了统计的完整性。
    如果没有使用-a选项,du默认可能忽略了一些隐藏的大型文件或目录,而这些在df的统计中依然会被计算。

  • 文件系统元数据和预留空间: df报告的已用空间可能包括了文件系统的元数据(如inode信息)占用的空间,以及文件系统可能预留的部分空间。
    du则主要关注实际文件和目录占用的空间,可能不包括上述元数据和预留空间。

  • 已删除文件和打开文件描述符: 如果有文件被删除但仍有进程保持其打开,这部分空间在du统计时可能不会体现,因为du不考虑已删除但未被释放的文件空间,而df则会计入这些空间。

  • 缓存和缓冲区: df显示的已用空间可能包括了操作系统用于缓存和缓冲的磁盘空间,这部分空间在需要时可被快速释放,但du统计时通常不包括这些临时缓存。

  • 统计误差或不一致性: 极少数情况下,文件系统损坏或统计不一致可能导致df和du的结果差异,需要检查文件系统的健康状况。

为缩小这种差异,你可以:

  • 确认是否有额外的挂载点导致的统计差异。
  • 使用lsof命令检查是否有进程持有已删除文件的句柄。
  • 运行sync命令刷新文件系统缓存,然后再次检查。
  • 检查是否有大量的小文件未被正确统计(du在处理大量小文件时可能会有性能问题)。
  • 如有必要,使用fsck检查并修复文件系统。

解决办法

首先当前目录下没有其他挂载点,所以使用lsof 检查是否有进程持有已删除的句柄:

lsof -w -n -r1 | grep '(deleted)'# -w选项表示不警告无法stat的文件
# -n避免解析主机名,提高输出速度
# -r1告诉lsof每秒重复执行一次(直到你中断它),这有助于捕捉瞬时情况

发现大量已删除句柄,终止这些进程,磁盘空间恢复正常。

du和df差异总结

df (disk free)

  • 原理:
    df命令主要通过读取文件系统层次标准(Filesystem Hierarchy Standard, FHS)规定的/proc/mounts文件或者直接查询内核的mount信息来获取各个文件系统的磁盘使用情况。它显示的是整个文件系统级别的磁盘使用概况,包括总的容量、已用空间、可用空间以及挂载点。这意味着df告诉你的是整个分区或挂载点的使用情况,包括未分配给任何文件的剩余空间。

  • 特点:

    • 关注整体:提供文件系统的总览,包括挂载点、总大小、已用空间、可用空间和使用百分比。
    • 快速:因为它直接从系统内部读取信息,而不需要遍历文件系统,因此执行速度较快。
    • 不考虑文件:不显示单个文件或目录的大小。

du (disk usage)

  • 原理:du命令则是通过递归遍历指定目录(或当前目录,如果不指定的话)及其所有子目录和文件,计算并汇总它们各自占用的磁盘空间大小。这意味着du提供的是更细粒度的磁盘使用信息,它直接基于文件和目录的实际大小来计算。

  • 特点:

    • 细致入微:能够显示每个目录和文件的磁盘使用量,适合于查找占用空间较大的文件或目录。
    • 慢速:相较于df,du需要遍历文件系统,因此在大型文件系统或深度嵌套的目录结构中执行速度较慢。
    • 可以配合选项使用,如-h使输出更易读,-s只显示总计,-a显示所有文件,包括隐藏文件。

差异比较

  • 关注点不同:df关注的是整个文件系统或分区的使用情况,而du则专注于特定目录或文件的磁盘使用细节。
  • 信息来源不同:df从系统内部直接获取信息,速度快;du通过实际遍历文件系统,速度相对较慢但信息更具体。
  • 使用场景不同:当你需要了解整个磁盘或分区的概览时,使用df;而当你需要找出具体是哪些文件或目录占用了大量空间时,应该使用du。

文件删除的理解

当一个文件被删除时,它的磁盘空间被视为可用,文件系统的目录项(即文件名和相关元数据的记录)被标记为可重用。然而,如果有一个或多个进程仍然保持着该文件的打开句柄,那么该文件的内容实际上并未立即从磁盘上清除。这些内容会一直保留,直到最后一个引用该文件的进程关闭句柄。在此期间,这些文件的数据块虽然标记为可覆盖,但如果没有新的数据写入,它们依然会占据物理磁盘空间。

inode 学习

在Linux文件系统中,inode(索引节点)是核心概念之一,它扮演着文件系统元数据存储库的角色。每个文件或目录在Linux的文件系统中都有一个对应的inode,包含了该文件或目录的关键属性信息,但不包括文件名和实际数据内容。以下是inode的几个关键特征和作用:

元数据存储

inode存储了文件或目录的元数据信息,包括但不限于:

  • 权限:读、写、执行权限等。
  • 所有权:属主和所属组的信息。
  • 时间戳:创建时间、最后修改时间和最后访问时间。
  • 大小:文件的大小(以字节为单位)。
  • 链接计数:指向该inode的硬链接数量。
  • 数据块指针:指向文件内容所在的磁盘块的指针。对于大文件,可能有间接块指针。

索引节点号

每个inode都有一个唯一的数字标识符,称为inode号码(inode number)。在Linux中,可以通过ls -i命令查看文件或目录的inode号码。

文件系统结构

在Linux文件系统中,文件名和inode号码之间存在一个层次结构的目录项表。当访问文件时,系统首先通过文件名找到对应的目录项,进而获取inode号码,再通过inode号码访问到实际的inode和文件数据。

硬链接与软链接

  • 硬链接:创建硬链接实际上是在文件系统中创建了新的目录项,指向同一个inode。因此,硬链接文件和原文件共享相同的inode和数据块,修改任一文件的内容都会影响另一个。
  • 软链接(符号链接):软链接则是一个包含目标文件路径名的新文件,有自己的inode和数据块,它只是指向另一个文件的路径名。

inode耗尽问题

由于inode是有限资源,每个文件系统在创建时会分配固定数量的inode。当大量小文件填满inode空间,即使磁盘空间充足,也可能出现无法创建新文件的问题,这被称为inode耗尽。

参考文档

1、https://www.cnblogs.com/tian874540961/p/12024744.html

2、https://www.cnblogs.com/ToTigerMountain/articles/17568487.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149523.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024年9月23日---关于MyBatis框架(2)

4.7 不同返回值类型的查询 4.7.1 返回基本数据类型 /**查询student表中的记录个数 */ int selectCount(); <select id"selectCount" resultType"_int">select count(*) from student; </select> 4.7.2 返回引用类型(实体类) /**返回值为实…

智能泡茶设备控制系统设计-设计说明书

设计摘要&#xff1a; 智能泡茶设备控制系统设计旨在实现对泡茶过程的自动化控制&#xff0c;提升泡茶的便利性和稳定性。本系统采用嵌入式技术与传感器相结合&#xff0c;实现对泡茶设备的全方位监控和控制。关键功能包括水温控制、浸泡时间控制、浸泡压力控制、茶水浓度控制…

电信、移动、联调等运营商都有那些国产化自研软件

国产化自研软件方面有着积极的探索和实践&#xff0c;包括操作系统、数据库和中间件等&#xff0c;电信运营商在国产化软件方面取得了显著进展&#xff1a; 操作系统&#xff1a; 中国电信推出了基于华为欧拉openEuler开源系统的天翼云操作系统CTyunOS&#xff0c;已上线部署5万…

基于JAVA+SpringBoot+Vue的医院后台管理系统

基于JAVASpringBootVue的医院后台管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

DBeaver启动报错 Faild to load the JNI shared library

DBeaver启动报错 Faild to load the JNI shared library 问题现象 安装完成后&#xff0c;启动dbeaver报错 查看版本为64位版本&#xff0c;JAVA也为64为版本 dbeaver版本 java版本 解决 在dberver.ini添加指定配置&#xff0c;即可启动成功

HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景

HarmonyOS是目前华为手机所搭载的鸿蒙系统&#xff0c;它在Open Harmony的基础上兼容了安卓的AOSP&#xff0c;所以可以使用安卓APK应用&#xff0c;HarmonyOS属于华为在当前阶段过渡使用的系统&#xff0c;原生鸿蒙的应用生态尚未发展起来&#xff0c;兼容安卓应用可以让用户有…

Spring源码-ConfigurationClassPostProcessor类解析spring相关注解

ConfigurationClassPostProcessor类的作用 此类是一个后置处理器的类&#xff0c;主要功能是参与BeanFactory的建造&#xff0c;主要功能如下 1、解析加了Configuration的配置类 2、解析ComponentScan扫描的包 3、解析ComponentScans扫描的包 4、解析Import注解 该类在springbo…

【web开发】Spring Boot 快速搭建Web项目(三)

Date: 2024.08.31 18:01:20 author: lijianzhan 简述&#xff1a;根据上篇原文Spring Boot 快速搭建Web项目&#xff08;二&#xff09;&#xff0c;由于已经搭建好项目初始的框架&#xff0c;以及自动创建了一个启动类文件&#xff08;TestWebApplication.java&#xff09; …

带你一文了解CISP-PTE的用处

CISP-PTE认证是由中国信息安全测评中心颁发的国家级专业证书&#xff0c;专注于培养和考核网络安全渗透测试方面的高级应用安全人才。CISP-PTE认证的目的是提升个人在信息安全领域的技术水平&#xff0c;特别是在渗透测试方面。 一、CISP-PTE的重要性 1.提升职业竞争力 CISP-PT…

华为云发布全栈可观测平台AOM,以AI赋能应用运维可观测

9月19日&#xff0c;华为全联接大会2024举办期间&#xff0c;在“AI赋能应用现代化&#xff0c;加速软件生产力跃升”为主题的论坛上&#xff0c;华为云发布全栈可观测平台AOM&#xff0c;以AI赋能应用运维可观测&#xff0c;提升企业应用可用性与稳定性。 该平台发布标志着华…

MacOS上安装MiniConda的详细步骤

前言 MiniConda是一种环境配置工具。在不同的开发项目中&#xff0c;我们会使用到不同版本的Python和第三方库&#xff08;例如Numpy、Pandas)。如果不使用环境配置工具&#xff0c;每次开发都需要清除电脑里上一次开发的环境和配置文件。为了在同一台机器上同时开发多个项目&…

Redis面试笔记

1.什么是Redis 简单来说 redis 就是一个数据库&#xff0c;不过与传统数据库不同的是 redis 的数据是存在内存中的&#xff0c;所以读写速度非常快&#xff0c;因此 redis 被广泛应用于缓存方向。另外&#xff0c;redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持…

Leetcode尊享面试100题-252.会议室

给定一个会议时间安排的数组 intervals &#xff0c;每个会议时间都会包括开始和结束的时间 intervals[i] [starti, endi] &#xff0c;请你判断一个人是否能够参加这里面的全部会议。 示例 1&#xff1a; 输入&#xff1a;intervals [[0,30],[5,10],[15,20]] 输出&#xff…

R包:VennDiagram韦恩图

加载R包 library(VennDiagram)数据 # Prepare character vectors v1 <- c("DKK1", "NPC1", "NAPG", "ERG", "VHL", "BTD", "MALL", "HAUS1") v2 <- c("SMAD4", "DKK1…

海康HIK IN客户端使用帮助说明

HIK IN客户端是海康威视推出的一款配套公司USB相机的工具客户端。该软件不仅可以轻松的帮助用户实现画面的实时预览&#xff0c;而且支持用户USB接口连接&#xff0c;同时拥有AI参数配置等功能。 HIK IN提供了丰富的相机参数设置选项&#xff0c;能够帮助摄影师优化相机的性能&…

906. 超级回文数

1. 题目 906. 超级回文数 2. 解题思路 题目意思很简单&#xff0c;在给定范围中找到所有满足&#xff0c;它本身是回文&#xff0c;且它的平方也是回文的数字个数。 这题需要注意题目给定的范围&#xff0c;后面很有用&#xff1a; 因为回文范围是有限的&#xff0c;那么我…

红外热成像应用场景!

1. 电力行业 设备故障检测&#xff1a;红外热成像仪能够检测电气设备&#xff08;如变压器、电线接头&#xff09;的过热现象&#xff0c;及时发现并定位故障点&#xff0c;预防火灾等安全事故的发生。 水电站查漏&#xff1a;在水电站中&#xff0c;红外热成像仪可用于快速查…

汇成百年公益迭代3.0:从捐到助再到创

创业的终极目的是什么&#xff1f; 在汇成百年教育创始人周文强的创业七步法中&#xff0c;实现企业自动化运转、财富自由之后&#xff0c;创业的最后一步是回馈社会、做慈善。 &#xff08;2024年2月周文强成为《商界》封面人物&#xff09; 周文强一直身体力行地在实践着。…

网络服务管理

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 # 学习方法&#xff1a; ## 当天…

巧用服务名解决主备集群中主库DMDSC节点间会话负载不均衡的问题

一、背景描述 为了实现数据的冗余&#xff0c;同时为了保护数据的安全&#xff0c;实现业务系统数据在两个机房间保持一致&#xff0c;需要在同城异地机房搭建备库。某金融客户业务系统将两节点DMDSC集群改造成两节点DMDSC主单机备集群后&#xff0c;进行功能测试时&#xff0…