背景
- 文件系统空间不足
起因
- 发现告警信息
- 显示空间不足
[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)'
- 操作可能会导致进程中所有数据无法落盘。。谨慎操作