Linux 下查看磁盘命令之 df 及磁盘 inodes 耗尽问题排查
实验平台:
CentOS Linux release 7.6.1810 (Core)
df Version:
df (GNU coreutils) 8.22
一、命令详解
1.参数详解
$ df --help
-a, --all #显示磁盘所有信息:包括伪的、重复的、不可访问的文件系统
-B, --block-size=SIZE #指定单位显示,(K, M, G, T, P, E, Z, Y) e.g.,
--direct #显示文件的统计数据而不是挂载点
--total #合计出总数
-h, --human-readable #以人类可见的形式显示,优化单位 (e.g., 1K 234M 2G)
-H, --si #换算不一样,按 1000 换算而不是 1024
-i, --inodes #不显示磁盘使用量,显示 inodes 的使用情况
-k #以KB的容量显示各文件系统,类似: --block-size=1K
-l, --local #只显示本地文件系统
--no-sync #在获取使用信息之前不要调用 sync 同步(默认)
--output[=FIELD_LIST] #使用 FIELD_LIST 定义的输出格式,如果省略 FIELD_LIST 则打印所有字段
-P, --portability #使用 POSIX output format
--sync #在获取使用信息之前调用 sync 同步
-t, --type=TYPE #显示指定类型的文件系统(ext3,ext4)
-T, --print-type #显示文件系统的类型
-x, --exclude-type=TYPE #不显示指定类型的文件系统
-v (ignored)
--help #打印帮助信息
--version #打印版本信息
2.使用详解
$ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 9.1G 29G 25% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 98M 893M 10% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 9.8G 2.9G 6.4G 31% /data
tmpfs 199M 0 199M 0% /run/user/1000
#Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称
#Size:分配磁盘的容量
#Used:已使用的容量大小
#Avail:剩余容量的大小
#Use%:磁盘使用率百分比
#Mounted on:挂载点
二、使用示例
1.显示一个总量统计
$ df --total -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 9.1G 29G 25% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 98M 893M 10% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 9.8G 2.9G 6.4G 31% /data
tmpfs 199M 0 199M 0% /run/user/1000
total 54G 12G 39G 24% -
2.查看磁盘 inodes
使用率
$ df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 2.5M 158K 2.4M 7% /
devtmpfs 245K 331 245K 1% /dev
tmpfs 248K 1 248K 1% /dev/shm
tmpfs 248K 747 247K 1% /run
tmpfs 248K 16 248K 1% /sys/fs/cgroup
/dev/sdb1 640K 36K 605K 6% /data
tmpfs 248K 1 248K 1% /run/user/1000
3.只查看类型为 ext4
的文件系统
$ df -ht ext4
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 9.1G 29G 25% /
/dev/sdb1 9.8G 2.9G 6.4G 31% /data
#可以先用 -T 查看磁盘的文件系统类型
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 41149664 9457940 29578396 25% /
devtmpfs devtmpfs 1003488 0 1003488 0% /dev
tmpfs tmpfs 1014056 0 1014056 0% /dev/shm
tmpfs tmpfs 1014056 99948 914108 10% /run
tmpfs tmpfs 1014056 0 1014056 0% /sys/fs/cgroup
/dev/sdb1 ext4 10189076 2960188 6688268 31% /data
tmpfs tmpfs 202812 0 202812 0% /run/user/1000
三、问题排查
1.inodes
耗尽异常
$ df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/centos-root 568K 568K 438 100% /
devtmpfs 225K 385 225K 1% /dev
tmpfs 228K 1 228K 1% /dev/shm
tmpfs 228K 725 227K 1% /run
tmpfs 228K 16 228K 1% /sys/fs/cgroup
/dev/sda1 256K 327 256K 1% /boot
tmpfs 228K 1 228K 1% /run/user/0
tmpfs 228K 1 228K 1% /run/user/1000
2.查看文件最多的目录
# for i in /*; do echo $i; find $i | wc -l; done
/bin
1
/boot
325
/data
34
/dev
390
/etc
2350
/home
63
/lib
1
/lib64
1
/media
1
/mnt
1
/opt
1
/proc
56091
/root
49
/run
735
/sbin
1
/srv
1
/sys
43866
/tmp
7
/usr
72158
/var
510407
# /var 下有 51 万多个,继续查
# for i in /var/*; do echo $i; find $i | wc -l; done
/var/adm
1
/var/cache
177
/var/crash
1
/var/db
5
/var/empty
2
/var/games
1
/var/gopher
1
/var/kerberos
3
/var/lib
4210
/var/local
1
/var/lock
1
/var/log
61
/var/mail
1
/var/nis
1
/var/opt
1
/var/preserve
1
/var/run
1
/var/spool
505900
/var/tmp
35
/var/yp
1
# for i in /var/spool/*; do echo $i; find $i | wc -l; done
/var/spool/anacron
4
/var/spool/cron
2
/var/spool/lpd
1
/var/spool/mail
4
/var/spool/plymouth
1
/var/spool/postfix
505887
# for i in /var/spool/postfix/maildrop*; do echo $i; find $i | wc -l; done
/var/spool/postfix/maildrop
505847
#最后核实下来是 /var/spool/postfix/maildrop* 是这个目录里文件最多
3.删除文件
$ find /var/spool/postfix/maildrop/ -type f -exec rm {} \;
或
$ cd /var/spool/postfix/maildrop/
$ ls | xargs -n 1000 rm -rf
#如果都是文件建议使用 find 删除,耗时最慢
可以参考这篇 -> Linux 下删除大量文件效率对比
4.原因总结
由于 linux
在执行 cron
定时任务时,会将 cron
执行脚本中的 output
和 warning
信息,都会以邮件的形式发送给 cron
所有者。由于客户环境中的 sendmail
和 postfix
没有正常运行,邮件发送不成功,导致全部小文件都堆积在 maildrop
目录下,再由于缺乏自动清理的机制,故此目录下堆积了大量的文件.
5.优化
1.设置 crontab -e 第一行增加MAILTO="" ,就没有文件产生
2.将输出文件定一只 /dev/null
00 22 * * * /usr/local/bin/python3 /root/wether/wether.py > /dev/null 2>&1
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1271 0 2021-01-04
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353090 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...