当前位置: 首页 > news >正文

Linux Quota 显示空间占用远大于实际数据的问题排查记录

问题描述

在日常运维中,我们发现某用户 aa 在 Samba 挂载目录下实际数据仅为 90G,但通过 quota 命令查看,其磁盘配额占用高达 158G,并且 Samba 挂载出来也显示空间占用异常:

# 查看用户配额
root@server:~# quota -vs aa
Disk quotas for user aa (uid 10120): Filesystem   space   quota   limit   grace   files   quota   limit   grace/dev/sdb1    158G    170G    200G            795k       0       0        # 查看用户目录大小
root@server:~# du -sh /home/aa
90G     /home/aa# 查看磁盘使用
root@server:~# df -h | grep /home
/dev/sdb1       4.8T  3.4T  1.2T  75% /home

因为还有其他程序在跑,所以不能重启服务器

原因分析

duquota 显示数据严重不符时,常见的原因之一是:

有文件虽然已被删除,但仍被进程占用,其空间不会释放,仍计入 quota,但不会被 du 显示。

排查过程

使用 lsof +L1 可以列出所有“已被删除但仍被打开的文件”:

root@server:/home# lsof +L1 | grep aa
... ...
vim       31266  aa    5u   REG   8,17 72175783936     0 101525185 /home/aa/workspace/.../.csp.c.swp (deleted)

可以看到,vim 进程(PID 为 31266)仍然占用一个被删除的 .swp 文件,大小高达 72G,刚好就是多出的大小。

解决方案

尝试释放该文件所占用的空间:

# 方法一(不成功)
pkill -u aa# 方法二(不成功)
kill 31266# 方法三(成功)
kill -9 31266
# 估计是因为有锁在,导致得强制kill

杀掉进程后,空间立即释放,quota 和 Samba 空间都显示都恢复正常。

总结

当 quota 显示占用远高于实际文件大小时:

  • 第一时间使用 lsof +L1 排查是否有 被删除但仍占用的文件
  • 找到具体进程后,根据情况优雅退出、重启或 kill -9 强制释放;
  • 最后用 quota -vs 用户名 确认配额恢复。

这种问题常见于开发环境或长时间运行的服务日志处理,建议配合监控及时发现并自动化清理。

相关文章:

  • 01 mysql 安装(Windows)
  • 32单片机——独立看门狗
  • 算法基础学习|03整数二分
  • 如何编制研发部门绩效考核制度
  • 删除k8s某命名空间,一直卡住了怎么办?
  • java之Integer、Double自动拆装箱比较,踩坑值int和Integer比较之空指针异常
  • 垒球世界纪录多少米·棒球1号位
  • 三格电子上新了——超高频RFID读写器
  • 2025最新福昕PDF编辑器,PDF万能处理工具
  • PostgreSQL事务与并发清理
  • Electron Forge【实战】自定义菜单 -- 顶部菜单 vs 右键快捷菜单
  • 力扣HOT100——207.课程表
  • pbchsim.c中main函数流程
  • 数据库有哪些特性是什么
  • 如何用GPU Instancing来优化树木草石重复模型
  • 【网络原理】 《TCP/IP 协议深度剖析:从网络基础到协议核心》
  • 产品VP简历模板案例
  • 基于大模型的膀胱肿瘤全周期诊疗方案研究报告
  • 在柯希霍夫积分法偏移成像中,旅行时计算中振幅和相位信息
  • 斯坦福RGA软件 老版本和兼容Windows 11版本可选
  • 民生访谈|支持外贸企业拓内销,上海正抓紧制定便利措施
  • 中方拟解除对5名欧洲议会议员制裁?外交部:望中欧立法机构相向而行
  • 神十九乘组安全顺利出舱
  • “乐购浦东”消费券明起发放,多个商家同期推出折扣促销活动
  • 69岁朱自强被查,曾任南京地铁总经理
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布