prometheus中被deleted的数据文件句柄没有释放导致磁盘空间暴涨

0    97    2

Tags:

👉 本文共约806个字,系统预计阅读时间或需4分钟。

现象

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

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

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

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

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

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

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

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

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

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

排查

解决

直接杀掉父进程:

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

定时删除

总结

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

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

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部