原 prometheus中被deleted的数据文件句柄没有释放导致磁盘空间暴涨
发布日期 · 已更新  
👉 本文共约806个字,系统预计阅读时间或需4分钟。
现象
有一个Linux主机,部署了Prometheus,但是基本每隔1个月,2T的磁盘就会被撑爆,通过df
和du
找不到占用空间大的文件。
对于这类情况,一般都是deleted的文件导致。
在Linux中,如果一个文件被删除但仍然被某个进程打开,那么在lsof
命令的输出中,该文件会显示为(deleted)
标记。这意味着虽然文件已被删除,但进程仍然在使用它。通常情况下,删除文件后,磁盘空间不会立即释放,直到所有打开文件描述符关闭或进程退出为止。
这种情况下,文件在文件系统中的目录项已被删除,但文件仍然存在于磁盘上,只是无法通过文件名访问。这种情况下,文件的数据不会被真正删除,直到所有使用该文件的进程关闭。
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
当一个文件被删除后,如果有进程仍然在使用该文件,系统会保持文件的内容不变,直到所有打开文件描述符都关闭。这样可以确保正在使用文件的进程不会因为文件突然消失而导致错误。
要释放已删除文件占用的磁盘空间,你可以通过以下步骤之一:
- 重启正在使用该文件的进程。
- 关闭正在使用该文件的进程。
- 找到并杀死使用已删除文件的进程。
对于第三种情况,你可以使用类似于以下命令的方式:
1 | lsof | grep delete | awk '{print $2}' | sort -u | xargs -I {} kill -9 {} |
这将查找所有正在使用已删除文件的进程并将它们杀死,从而释放被删除文件占用的磁盘空间。
排查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | [root@lhrprometheus /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 2.0T 1.2T 772G 62% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/centos-root 2.0T 1.2T 772G 62% /etc/hosts tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 16G 33M 16G 1% /run tmpfs 3.2G 0 3.2G 0% /run/user/0 [root@lhrprometheus /]# lsof | grep delete | wc -l 44 [root@lhrprometheus /]# lsof | grep delete | wc -l 44 [root@lhrprometheus /]# lsof | grep delete prometheu 161 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 205 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 205 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 206 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 206 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 207 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 207 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 208 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 208 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 210 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 210 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 211 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 211 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 212 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 212 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 213 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 213 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 214 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 214 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 215 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 215 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 228 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 228 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 233 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 233 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 234 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 234 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 235 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 235 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 236 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 236 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 237 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 237 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 238 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 238 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 263 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 263 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 264 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 264 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 265 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 265 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) prometheu 161 106397 root 745r REG 0,45 129790352 2231413562 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/chunks/000001 (deleted) prometheu 161 106397 root 746r REG 0,45 6101881 2214610318 /data/01HVSWSDRV4ZNQRBP9GY1XDPH7/index (deleted) |
解决
直接杀掉父进程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | [root@lhrprometheus /]# kill -9 161 [root@lhrprometheus /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 2.0T 1.2T 772G 62% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/centos-root 2.0T 1.2T 772G 62% /etc/hosts tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 16G 33M 16G 1% /run tmpfs 3.2G 0 3.2G 0% /run/user/0 [root@lhrprometheus /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 2.0T 1.1T 871G 57% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/centos-root 2.0T 1.1T 871G 57% /etc/hosts tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 16G 33M 16G 1% /run tmpfs 3.2G 0 3.2G 0% /run/user/0 [root@lhrprometheus /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 2.0T 803G 1.2T 41% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/centos-root 2.0T 803G 1.2T 41% /etc/hosts tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 16G 33M 16G 1% /run tmpfs 3.2G 0 3.2G 0% /run/user/0 [root@lhrprometheus /]# df -h Filesystem Size Used Avail Use% Mounted on overlay 2.0T 489G 1.5T 25% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm /dev/mapper/centos-root 2.0T 489G 1.5T 25% /etc/hosts tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 16G 33M 16G 1% /run tmpfs 3.2G 0 3.2G 0% /run/user/0 |
可以看到,磁盘空间自动释放掉了。
定时删除
1 2 3 4 5 6 7 8 9 10 11 12 13 | cat > /root/kill_deleted_files_processes.sh <<"EOF" #!/bin/bash # 查找所有使用已删除文件的进程,并杀死它们 lsof | grep delete | awk '{print $2}' | sort -u | xargs -I {} kill -9 {} EOF chmod +x /root/kill_deleted_files_processes.sh crontab -l 0 23 * * * sh /root/kill_deleted_files_processes.sh && date >> /tmp/kill_deleted_files_processes.log |
总结
1、对于这类情况,可以考虑写定时任务杀进程。
2、目前没深入查询是否是prometheus的bug导致。有懂的朋友可以留言,共同进步。
相关文章
- Linux中查询swap占用率最高的前几个进程
- Linux中的1777是什么权限
- ssh连接远程欧拉系统时报错Unable to negotiate with 100.194.18.75 port 22: no matching host key type found. Their offer: ssh-rsa
- yum安装报错error: cannot open Packages database in /var/lib/rpm
- Linux中禁用virbr0网卡
- Linux中的soft nproc 、hard nproc、soft nofile、hard nofile、ulimit的最大进程数和最大文件数等说明
- 自动同步linux时间(修改时区)
- Linux中core文件简介及关闭systemd-coredump服务
- OS巡检生成html报告
- Oracle高可用(rac+dg+ogg)培训
- MySQL OCP考证
- MySQL考证
- 【DB宝72】pgpool-II和pgpoolAdmin的使用
- 【DB宝50】Oracle异构平台迁移之完全可传输导出导入(Full Transportable Export & Import)
- 【DB宝48】JumpServer:多云环境下更好用的堡垒机
- 【DB宝39】使用Docker分分钟搭建Zabbix 5.0配置MySQL监控
- 【DB宝38】CentOS 6的网络yum源配置(最新地址)
- 【DB宝35】使用MySQL 8.0 克隆(clone)插件快速添加MGR节点
- 【DB宝32】Oracle DG环境中主库做闪回操作后,备库如何修复继续同步
- 【DB宝31】Oracle DG环境中主库使用rman做不完全恢复后,备库如何修复继续同步