进程占用文件句柄导致文件系统空间无法释放

背景

  • 文件系统空间不足

起因

  • 发现告警信息
  • 显示空间不足
[apps@gd16-ceph-mon-llm-backup-001 ~]$ ceph -s
  cluster:
    id:     8dd9436e-fd11-4350-9e79-20ef6b702067
    health: HEALTH_WARN
            mon gd16-ceph-mon-llm-backup-001 is low on available space
  • 常见问题, 日志没有及时清理
  • ceph mon db 占良大量空间,需要执行压缩或者重建操作

系统检查

  • 磁盘空间占用比例高
[apps@gd16-ceph-mon-llm-backup-001 ~]$ df -h 
Filesystem                                                       Size  Used Avail Use% Mounted on
/dev/sda5                                                         67G   45G   19G  71% /
  • 发现空间展示不一致 ( 实际占用 16G, df 显示占用了 45G
[root@gd16-ceph-mon-llm-backup-001 /]# mount /dev/sda5 /mnt/sda5/
[root@gd16-ceph-mon-llm-backup-001 /]# cd /mnt/sda5/
[root@gd16-ceph-mon-llm-backup-001 sda5]# du -sh 
16G	.

检查程序占用情况

  • 发现进程没有释放文件句柄
  • 进程 pid 450345
  • 文件约 3G
  • 3G X 9 = 27GB + 实际空间 16GB = 43GB (跟 df 展示一致)
[root@gd16-ceph-mon-llm-backup-001 sda5]# lsof | grep -i delete | grep .recycle_2025
delete_re  450345                   root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345   42706           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450580           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450581           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450582           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450583           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450585           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450586           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
delete_re  450345  450587           root    3w      REG                8,5 30824532166    2628947 /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)

解决办法

  • 释放文件句柄即可
  • 方法如下
  • 找到对应文件句柄
cd /proc/450345/fs 
ls -lh 
l-wx------ 1 root root 64 Mar 26 01:04 3 -> /apps/logs/storegw.recycle/gd16-ai/delete_object_gd16-ai_.recycle_2025_03_26_01_04_01.log (deleted)
  • 清空文件句柄
truncate -s 0 /proc/450345/fd/3
  • 查看文件句柄释放后效果
[root@gd16-ceph-mon-llm-backup-001 fd]# df -h 
Filesystem                                                       Size  Used Avail Use% Mounted on
/dev/sda5                                                         67G   16G   48G  25% /

问题解决

高风险操作

  • 如果上面问题无法解决
  • 如果文件不重要,进程(内存中)数据不重要
  • 如果无法关闭进程,无法重启服务器
  • 再参考下面高风险操作
# 使用 gdb 强制关闭(最后手段)
sudo gdb -p <PID> -batch -ex 'call close(<FD_NUM>)'

# 示例:关闭 PID 450345  的 3 号文件描述符
sudo gdb -p 450345 -batch -ex 'call close(3)'
  • 操作可能会导致进程中所有数据无法落盘。。谨慎操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_Tsang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值