登录
首页 >  文章 >  php教程

如何解决宝塔面板磁盘空间显示为0?排查Inode节点耗尽与日志文件过大

时间:2026-05-05 14:25:33 442浏览 收藏

推广推荐
下载万磁搜索绿色版 ➜
支持 PC / 移动端,安全直达

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《如何解决宝塔面板磁盘空间显示为0?排查Inode节点耗尽与日志文件过大》,以下内容主要包含等知识点,如果你正在学习或准备学习文章,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

宝塔报“磁盘已满”但 df -h 显示空间充足,大概率是 inode 耗尽或缓存未刷新;先运行 df -h 和 df -i 对比,若 IUse% ≥95% 而空间使用率低,则聚焦 /www/sess 或 /tmp 下大量 PHP session 小文件,用 find 统计并清理过期文件,再检查 lsof | grep deleted 是否存在被占用的已删文件,必要时重启 php-fpm。

如何解决宝塔面板磁盘空间显示为0?排查Inode节点耗尽与日志文件过大

df -h 显示空间充足但宝塔面板报“磁盘已满”

这八成不是磁盘空间真满了,而是 inode 耗尽或面板缓存未刷新。宝塔首页的磁盘使用率来自系统缓存快照,不主动识别新挂载点、bind 挂载,甚至在旧版 XFS 上存在统计异常——你扩容了硬盘,它可能还卡在 99%。先别信面板数字,直接运行 df -hdf -i 对比:如果 df -h 显示 / 或 /www 使用率才 30%,但 df -i 的 IUse% 达到 95%+,问题就锁定在小文件堆积。

确认是 /www/sess 或 /tmp 下 PHP session 文件占满 inode

宝塔本身不显示哪个目录吃掉了 inode,得手动查。常见高危路径就是 /www/sess/tmp,session 文件名形如 sess_abc123,单个几 KB,但几十万份就能把 inode 耗光。

  • 先用 php -i | grep session.save_path 确认实际存储路径(可能是 /www/sess,也可能是 /tmp
  • 再运行 find /www/sess -type f | wc -l 统计文件数;若输出超 10 万,基本坐实
  • 安全预览前 20 个:find /www/sess -name "sess_*" -type f | head -20
  • 只删 7 天前的(保留活跃会话):find /www/sess -name "sess_*" -type f -mtime +7 -delete
  • 全删(确定无长期登录需求):find /www/sess -name "sess_*" -type f -print0 | xargs -0 rm -f

清理后 inode 还不释放?检查被进程占用的“已删除文件”

Linux 删除文件只是解除硬链接,如果还有进程正打开它,inode 就不会真正归还。PHP-FPM 就常干这事:session 文件被删了,但 worker 进程还持有着句柄,状态显示为 deleted

  • 查这类“幽灵文件”:lsof | grep deleted 或更精准的 lsof +L1
  • 若发现大量 php-fpm 进程在占用已删的 sess_*,必须重启服务:systemctl restart php-fpm
  • 注意:重启 php-fpm 会导致当前 PHP 请求中断,建议选低峰期操作
  • XFS 文件系统还可能存在延迟回收,等下次挂载或运行 xfs_repair 才彻底释放——这不是 bug,是设计如此

日志文件过大导致磁盘空间真实告急

如果 df -i 正常但 df -h 真爆了,重点盯 /www/wwwlogs//var/log/ 和 systemd journal。Nginx/Apache 日志、宝塔自身日志、systemd 日志都可能几个月不清理,单个几百 MB 很常见。

  • 清空所有网站日志内容(保留文件结构):cat /dev/null > /www/wwwlogs/*.log
  • 删 7 天前的压缩归档:find /www/wwwlogs/ -name "*.log.*.gz" -mtime +7 -delete
  • 收缩 systemd 日志至 100MB:journalctl --vacuum-size=100M
  • 避免误删关键日志:别直接 rm -rf /var/log,先用 du -sh /var/log/* 2>/dev/null | sort -hr 定位最大项

真正卡住人的从来不是命令怎么写,而是删完 session 后用户登录态是否丢失、php-fpm 重启会不会引发连接池雪崩、以及宝塔下次自动巡检时是否又因 inode 检查逻辑反复弹窗——这些依赖关系和恢复节奏,比 find 参数重要得多。

今天关于《如何解决宝塔面板磁盘空间显示为0?排查Inode节点耗尽与日志文件过大》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>