从一到无穷大 #6 盘满排查过程
文章目录
- 引言
- df/du 原理
- 排查思路
- 文件系统预留空间
- 进程占用句柄
- 挂载覆盖
引言
核心在于执行df和du的时候发现显示的存储量完全不同,我本地系统盘有99G空间,du显示占用了45G,但是df却显示使用了99G,排查的过程本文所示。
先记录几条大多数时候有用命令,看完文章就知道为什么有时候是不管用的了hhh
du -h / --exclude="data1" 2>/dev/null | grep '[0-9\.]\+G'
可以检查出目前/路径下目录的大小du -Sh ~ --max-depth=2 | sort -hr | head -10
可以递归的检查文件的大小find . -xdev -type f -size +100M
查找100M以上的文件find ~ -maxdepth 10 -type f -exec du -h {} + | sort -rh | head -10
最大文件top10
df/du 原理
从man page可以得到如下关键句:
df: df displays the amount of disk space available on the file system containing each file name argument.
du: Summarize device usage of the set of FILEs, recursively for directories.
从原理上讲,df是从super block直接读取该文件系统的元信息,简单的翻阅源码和执行下strace df -h
后不难发现df
实际是执行了statfs
,这个系统调用用于返回已经挂载的文件系统的元信息。
而du则完全不同,其原理是调用递归遍历目录,调用newfstatat系统调用获取文件信息,这允许 可以跨越多个文件系统统计大小,但是目录中文件很多时速度很慢。
[1][2]中描述df/du原理也很详细
排查思路
了解df/du原理后我们知道有三个情况可能这两种情况显示不同
文件系统预留空间
为了预防紧急情况,linux ext文件系统会预留部分硬盘空间,具体预留的数值可以通过tune2fs -l [dev_name] | grep "Reserved block count"
查看,这里预留的空间会被df计算到已用空间中,从而导致df和du统计不一致。如果需要调整预留空间大小,我们可以使用tune2fs -m [size] [dev_name]
来进行调整。
进程占用句柄
当一个文件被删除时,如果有别的进程正在使用它(占有句柄), 这个文件将不会被du统计到,但是这个文件被占用的磁盘空间却依然会被df统计到。这些文件,以及正在使用这些文件的进程可以通过lsof | grep deleted
查到。当进程停止或者被kill时,这些空间将被释放。 暴力的执行kill -9 $(lsof |grep -i deleted | awk '{print $2}' | sort -u)
可以删除这些进程,
挂载覆盖
当将一个目录挂在到一个新的设备(硬盘)上时,如果这个目录里面已经有数据,那么这一部分数据不会被遍历到,自然也不会被du感知,在文件系统中也看不到这些数据,但是这些数据又是确实占用了磁盘空间,是能够被df所统计到的。这时候通过du/df统计原设备的空间使用情况,就会发现df统计到的比du要多。
因为我把数据盘挂载在了根目录中,解决的方案就是unmount后删除这部分目录,我在这部分释放了15G空间。
umount的时候可以会遇到busy的情况,
- 因为代码都在挂载的盘中,首先关闭vscode的所有终端
- 其次镜像存储都在挂载的盘中,关闭minikube:
minikube stop; minikube delete
- 关闭 docker:
systemctl stop docker
- 再检查与挂载设备关联的进程:
lsof /data1
参考:
- http://sysunconfig.net/aixtips/df_du_diff_out.txt
- https://www.quora.com/What-is-the-difference-between-DU-and-DF-in-Linux
- umount卸载磁盘提示target is busy. (目标忙) 的问题解决方案
从一到无穷大 #6 盘满排查过程相关推荐
- 百度网盘满速下载文件
百度网盘满速下载文件 工具:IDM,油猴,谷歌浏览器. 1.IDM是一款多线程下载工具,可以嗅探网页资源,代替浏览器高速下载文件. IDM下载安装参照下面教程:https://www.onlinedo ...
- 计算机D盘已经清空了为什么显示还是满格的,d盘满到变红色了怎么清理 d盘满到变红色的清理方法...
首先可以利用电脑内的杀毒软件来清理一下缓存文件所产生的垃圾:也可以通过重装系统,将所有的系统盘全部格式化,然后重新分区分配:或者为D盘扩容也可以,这样D盘就不会出现变红色的情况了. d盘满到变红色了怎 ...
- 多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程
简介:记一次TCP全队列溢出问题排查过程 1. 前言 本文排查的问题是经典的TCP队列溢出问题,因TCP队列问题在操作系统层面没有明显的指标异常,容易被忽略,故把排查过程分享给大家. 2. 问题描述 ...
- 一次堆外OOM问题的排查过程
转载自 一次堆外OOM问题的排查过程 背景 线上服务有一台机器访问不通(一个管理平台),在公司的服务治理平台上查看服务的状况是正常的,说明进程还在.进程并没有完全crash掉.去线上查看机器日志, ...
- mysql 5.7 延迟同步_MySQL5.6升级5.7时出现主从延迟问题排查过程
最近在做zabbix的数据库MySQL5.6升级5.7时,出现主从延迟问题,这个问题困扰了很久没有解决,昨天终于解决了,整理了一下整个排查过程,分享给大家. 环境说明: mysql主库为5.6的版本, ...
- 内存很空却频繁gc_记一次不太成功的频繁 full gc 排查过程
上周自己负责的一个应用出现频繁full gc的问题,不得不尝试优化一下.第一次做这种事只能先看看网上的文章,然后亲自尝试怎么去完成减少full gc的频率,降低young gc的频率这一目标.虽然最终 ...
- mysql5.6 主从 延迟_MySQL5.6升级5.7时,出现主从延迟问题排查过程
最近在做zabbix的数据库MySQL5.6升级5.7时,出现主从延迟问题,这个问题困扰了很久没有解决,昨天终于解决了,整理了一下整个排查过程,分享给大家. 环境说明: mysql主库为5.6的版本, ...
- window服务器cpu过高的排查_生产服务器CPU占用率过高排查过程
一.问题详情 现象:API接口访问耗时过长,排查发现当前节点内存使用3.9G,CPU占用率295%. 当前节点已两周没发版,怀疑内存没有释放,可能是JVM垃圾回收的问题. 二.排查过程 1.定位问题进 ...
- 记录Rocketmq定时消息不消费问题的排查过程
记录Rocketmq定时消息不消费问题的排查过程 写在前面 问题根源初步确认 问题根源再次确认. 了解rocketmq定时消息原理以及处理过程. 源码调试 结论求证 后记 写在前面 此本记录了一个项目 ...
最新文章
- Halcon算子盘点:Chapter 16:System
- Boost Asio总结(12)class basic_socket_acceptor
- swagger2使用步骤
- Maven-打包的时候丢失非.java的文件
- “每天AI资讯这么多!该看哪些?”推荐一份优质资料清单
- 微信小程序 Video API
- Arduino控制微小的六足3D打印机器人
- python分布采样_python – 从有界域zipf分布中采样
- allegro铜皮优先级设置
- 进程间通信方式有哪些?各自有哪些优缺点?
- apk部分手机安装失败_安卓手机安装软件失败的4种常见原因和解决办法
- 03【Verilog实战】UART通信协议,半双工通信方式(附源码)
- 如何评价 2021 考研政治题,难度如何?
- 软件项目外包找我(附案例)
- 如何做好数据治理平台
- mysql半同步 rpo_PostgreSQL 双节点流复制如何同时保证可用性、可靠性(rpo,rto) - (半同步,自动降级方法实践)-阿里云开发者社区...
- WebRTC理论入门
- We‘re sorry but 项目名称 doesn‘t work properly without JavaScript enabled. Please enable it to continue.
- java+ssh+mysql学生用电服务管理系统
- 【BurpSuite】插件开发学习之J2EEScan - 汇总篇(主动+被动1-76)
热门文章
- OA软件厂商的综合素质到底有多重要?
- Praat脚本-029 | 一种更有效的校对音频内容的方案
- 生活中的经典感人语句
- int a[ ]={0};
- 语言代码与国家地区对照表(表格)
- C语言每日一练——第90天:青蛙跳台阶(升级版)
- canvas 绘制逼真人物_绘制逼真的iPad2 – Photoshop教程
- 哈尔滨小学计算机上课时间,哈市中小学各校新学期作息时间调整汇总,看看有没有你的学校!...
- java基础知识问题导航
- 前端框架Layui学习五:弹出层和数据表格