起因:磁盘告警
磁盘使用超过阈值,发送告警短信或邮件
主机:172.21.XXX.X,磁盘阈值:85%,使用率85%,发送时间:08:35:39
df -h 命令查看磁盘使用情况
[cent@node-03 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 45G 40G 5.0G 89% /
devtmpfs 16G 0 16G 0% /dev
/dev/mapper/centos-root 此为根目,磁盘使用情况超过阈值
常见的过阈值情况
某个进程存在,占用空间
df -h 命令可以查看根目录的使用情况
du -sh * 命令可以查看当前目录所有文件和文件夹的大小
sudo du / -h --max-depth=1 命令查看各个目录的占用空间
1.可能文件已被删除,但是进程还存活的场景
Linux 里的文件被删除后,空间没有被释放是因为在 Linux 系统中,通过 rm 或者文件管理器删除文件将会从文件系统的目录结构上解除链接 (unlink) 。然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。装态为 deleted 为标记被删除,其实该文件并没有从磁盘中删除,类似windows下的回收站状态。
lsof | grep -i delete 或者
lsof +d /tmp 或者
lsof +D /tmp
如上所示,将查询到的进程全部杀掉,再次用df -h 命令查看磁盘空间
2.存在某个进程一直在写文件,占用空间
1)首先使用 sudo du / -h --max-depth=1 命令查看各个目录的占用空间,试图找到占用较多空间的目录
13G /tmp/spark-26626127-eb28-430b-bcbd-92eb6c2613ef
13G /tmp/spark-56d798c6-9604-47e6-8a51-a0ca10d5df27
查询到上面目录占用空间较大,切换到该目录,进一步查看文件
[cent@node-03 ~]$ cd /tmp/spark-56d798c6-9604-47e6-8a51-a0ca10d5df27/__driver_logs__
[centuser@node-03 __driver_logs__]$ ls
driver.log
发现一直有日志写入到driver.log,日志数据为程序异常日志。
2)使用 lsof +d 命令查看进程号
lsof +d /tmp/spark-56d798c6-9604-47e6-8a51-a0ca10d5df27/__driver_logs__
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 218506 centuser 299w REG 253,0 13050726452 107002935 /tmp/spark-56d798c6-9604-47e6-8a51-a0ca10d5df27/__driver_logs__/driver.log
3)使用 ps -ef|grep PID 查看进程具体信息,评估是否可以kill
centuser 218670 218506 0 2022 ? 01:06:09 /opt/anaconda3/bin/python3 /home/centuser/apps/job_agent/query4livy.py -d data -i tmp/input-15b578cd50634f2184211ca9b3982afd
4)使用 kill PID 杀掉进程
kill 218670
5) 使用 df -h 检查磁盘使用情况
[cent@node-03 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 45G 16G 30G 36% /
结果磁盘占用恢复