×

磁盘空间用尽导致的系统500错误(failed to openstream:No space left on device)

hqy hqy 发表于2025-05-05 01:00:52 浏览7 评论0

抢沙发发表评论

问题描述

今天测试环境某项目报了500错误。查看部署在同一测试环境的其他项目发现报以下错误:

问题解决:

1‌、确认分区是否已满‌:
使用df -h命令查看磁盘空间使用情况,确认/dev/mapper/centos-root分区确实已满。

[root@localhost myweb]# df -h
文件系统                         容量       己用     可用      已用 %      挂载点
devtmpfs                        3.8G        0       3.8G       0%          /dev
tmpfs                           3.8G        0       3.8G       0%          /dev/shm
/dev/mapper/centos-root         215G       215G      20k      100%         /

2、清理分区

确认分区满了时,可以按照以下步骤进行清理:

2.1)找出大文件和目录
第一步:使用du命令从根目录开始逐层检查每个目录的磁盘占用情况。例如:

du -h --max-depth=1 / | sort -rh | head -n 10

这将列出根目录下占用空间最大的前10个子目录。你可以进一步进入占用空间较大的目录,使用相同的命令继续查找。

[root@localhost www]# du -h --max-depth=1 / | sort -rh | head -n 10
216G	/
207G	/www
4.5G	/usr
2.8G	/var
402M	/run
357M	/etc
237M	/git-2.31.0
155M	/boot
79M  	/root
37M	    /.Recycle_bin

第二步:由以上命令可知 /www 目录占用了207G的磁盘空间,进一步查看www子目录找出实际占用空间的文件。依次进入www下各个子目录执行 du -h --max-depth=1 命令,发现www/server/php/73/var/log 目录下的 php-fpm.log 日志文件占用了201G的内存。

[root@localhost /]# cd www
[root@localhost www]# du -h --max-depth=1
204G	./server
2.8G	./wwwroot
36M	./wwwlogs
192M	./backup
0	./.Recycle_bin
0	./php_session
207G	.
[root@localhost www]# cd server
[root@localhost server]# du -h --max-depth=1
497M	./panel
202G	./php
4.0K	./stop
36M	./apache
57M	./phpmyadmin
0	./phpinfo
591M	./mysql
1012M	./data
0	./bt_tomcat_web
0	./python_project
0	./pyporject_evn
0	./nodejs
0	./other_project
4.0K	./go_project
644K	./pure-ftpd
160M	./ffmpeg
0	./proxy_project
0	./java
0	./net_project
204G	.
[root@localhost server]# cd php
[root@localhost php]# du -h --max-depth=1
234M	./74
202G	./73
202G	.
[root@localhost php]# cd 73
[root@localhost 73]# du -h --max-depth=1
34M	./bin
180K	./etc
5.9M	./include
15M	./lib
72K	./php
11M	./sbin
201G	./var
166M	./src
202G	.
[root@localhost 73]# cd var
[root@localhost var]# du -h --max-depth=1
201G	./log
4.0K	./run
201G	.
[root@localhost var]# cd log
[root@localhost log]# du -h --max-depth=1
201G	.

2‌.2)清空、删除或移动不必要的文件‌:
根据上一步的结果,找到并清空、删除或移动不必要的文件。例如本例中,可执行 truncate -s 0 /www/server/php/73/var/log/php-fpm.log 命令清空log日志文件。

[root@localhost log]# truncate -s 0 /www/server/php/73/var/log/php-fpm.log
[root@localhost log]# du -h --max-depth=1
2.0M	.

也可通过以下操作处理:

1)删除日志文件

删除日志文件的命令示例:

sudo rm -rf /var/log/old_logs/*

2)‌清理临时文件‌:
删除/tmp/var/tmp目录下的临时文件。

sudo rm -rf /tmp/* sudo rm -rf /var/tmp/*

3)清理YUM缓存‌:
使用yum clean all命令清理YUM缓存。

sudo yum clean all

4‌)删除旧的内核文件‌:
使用package-cleanup命令删除旧的内核文件。

sudo package-cleanup --oldkernels --count=1

5‌)清理Docker日志‌:
如果Docker占用了大量磁盘空间,可以清空Docker容器的日志文件。

cat /dev/null > /var/lib/docker/containers/*/*-json.log

6)查找并删除僵尸进程‌:
有时文件被删除但进程仍然占用空间,可以通过lsof命令查找并删除这些僵尸进程。

lsof | grep delete kill -9 进程ID

2‌.3)扩展磁盘空间‌:
如果以上步骤仍然无法释放足够的空间,可以考虑扩展磁盘空间。这通常涉及到添加额外的硬盘或调整分区大小,需要谨慎操作。

3、确认清理效果
清理完成后,再次使用df -h命令确认/dev/mapper/centos-root分区的空间是否得到释放。

[root@localhost myweb]# df -h
文件系统                         容量       己用     可用      已用 %      挂载点
devtmpfs                        3.8G        0       3.8G       0%          /dev
tmpfs                           3.8G        0       3.8G       0%          /dev/shm
/dev/mapper/centos-root         215G       23G      193G      11%          /

注意:在进行任何删除操作之前,务必备份重要数据,以防误删导致数据丢失。


打赏

本文链接:https://www.kinber.cn/post/5103.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客