Linux显示磁盘空间不足,/tmp文件夹占用100%问题分析和解决方案
人shou保险 2024-07-07 08:37:07 阅读 57
系统运行过程中发现无法上传文件,第一反应是磁盘空间不足导致,登录服务器后查看文件存放的空间充足,但是无法上传文件且命令行的tab键自动补充也提示空间不足。最后经过搜索和分析发现是/tmp 文件夹占用100%导致。以下记录分析和解决流程。
问题分析
服务器环境
操作系统:银河麒麟V10
CPU:鲲鹏(ARM)
1. 通过 df -h 查看磁盘占用,发现/dev/vdb1 (文件存放路径)占用42%,空间充足;但是/tmp 文件夹占用率100%;
<code>df -h
这里已经释放了部分空间所以/tmp占用为91%。
2. 进入/tmp路径查看占用情况,发现文件占用才5.7M,实际总空间有16G。
<code>cd /tmp
3. 由于tmp为临时文件夹,文件使用结束后自动删除,猜测存在文件被删除但是空间未释放的情况。通过 lsof /tmp 查看文件情况,发现有大量的文件被删除但是依旧被进程占用,导致无法释放空间。
<code>lsof /tmp
4. 通过以上截图查看占用文件的进程PID为3860289,此进行未部署的springboot项目。正常情况下重启项目即可释放,但是当前为线上项目,重启会影响用户使用。所以需要不通过重启释放空间。
解决问题
1. 查询文件占用进程的文件fd信息 ls -i /proc/{进程PID}/fd 举例如下:
<code> ls -i /proc/3860289/fd
2. 通过 >/proc/{进程pid}/fd/{文件fd} 解除空间占用(文件fd为上图中红色部分第一个数字),举例如下:
<code>>/proc/3860289/fd/999
3. 批量解除文件占用,可通过编写shell脚本解决,举例:删除pid为3860289中fd为500到1000的文件占用。在任意位置创建批处理文件,填写内容后,赋予执行权限并执行。
vi deltmp.sh
#!/bin/bash
for i in {500..1000}
do
>/proc/3860289/fd/$i
done
chmod 755 deltmp.sh
4. 以上为临时删除文件占用,最后可通过重启应用解决问题 kill -9 {PID}
kill -9 3860289
下一篇: CentOS部署FastDFS+Nginx并实现远程访问本地服务器中文件
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。