前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus数据文件句柄未释放,磁盘空间飙升问题解决方案

Prometheus数据文件句柄未释放,磁盘空间飙升问题解决方案

作者头像
小麦苗DBA宝典
发布2024-04-25 14:12:17
1060
发布2024-04-25 14:12:17
举报

现象

有一个Linux主机,部署了Prometheus,但是基本每隔1个月,2T的磁盘就会被撑爆,通过dfdu找不到占用空间大的文件。

对于这类情况,一般都是deleted的文件导致。

在Linux中,如果一个文件被删除但仍然被某个进程打开,那么在lsof命令的输出中,该文件会显示为(deleted)标记。这意味着虽然文件已被删除,但进程仍然在使用它。通常情况下,删除文件后,磁盘空间不会立即释放,直到所有打开文件描述符关闭或进程退出为止。

这种情况下,文件在文件系统中的目录项已被删除,但文件仍然存在于磁盘上,只是无法通过文件名访问。这种情况下,文件的数据不会被真正删除,直到所有使用该文件的进程关闭。

当一个文件被删除后,如果有进程仍然在使用该文件,系统会保持文件的内容不变,直到所有打开文件描述符都关闭。这样可以确保正在使用文件的进程不会因为文件突然消失而导致错误。

要释放已删除文件占用的磁盘空间,你可以通过以下步骤之一:

  1. 重启正在使用该文件的进程。
  2. 关闭正在使用该文件的进程。
  3. 找到并杀死使用已删除文件的进程。

对于第三种情况,你可以使用类似于以下命令的方式:

代码语言:javascript
复制
lsof | grep delete | awk '{print $2}' | sort -u | xargs -I {} kill -9 {}

这将查找所有正在使用已删除文件的进程并将它们杀死,从而释放被删除文件占用的磁盘空间。

排查

代码语言:javascript
复制
[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)

解决

直接杀掉父进程:

代码语言:javascript
复制
[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

可以看到,磁盘空间自动释放掉了。

定时删除

代码语言:javascript
复制
cat > /root/kill_deleted_files_processes.sh <<"EOF"
#!/bin/bash

# 查找所有使用已删除文件的进程,并杀死它们
lsof | grep delete | awk '{print $2}' | sort -u | xargs -I {} kill -9 {}

# 可选:输出被杀死的进程信息
echo "Killed processes:"

EOF



chmod +x /root/kill_deleted_files_processes.sh


crontab -l
0 * * * * /root/kill_deleted_files_processes.sh

总结

1、对于这类情况,可以考虑写定时任务杀进程。

2、目前没深入查询是否是prometheus的bug导致。有懂的朋友可以留言,共同进步。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-19,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现象
  • 排查
  • 解决
  • 定时删除
  • 总结
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com