背景
- 服务器:Redhat Linux 7.9
- 使用Docker部署
- Web服务器:Nginx
起因
系统总是在特定的数据更新时报错,查看Docker 日志,发现Nginx报错如下:
journalctl CONTAINER_NAME=xxx -e -b
[crit] 40#40: *9398 pwrite() "/var/cache/nginx/client_temp/0000000048" failed (28: No space left on device)
说得很清楚了,磁盘空间不足。但是很奇怪,换一条数据测试发现并没有打印类似的err log。
解决思路
1. 先确认一下磁盘容量。看根目录,已使用100%。可以确定,直接原因就是磁盘空间不足。
df -h
Filesystem Size Used Avail Use% Mounted on
(略)
/dev/mapper/rhel-root 118G 113G 0 100% /
(略)
2. 接着确认是哪些文件占用的磁盘空间最大。找到始作俑者,没用就删掉(rm -f)。
# 查看当前路径(根目录)下最大size的文件/夹
cd /
du -h --max-depth=1
3. 磁盘可用空间恢复后,测试发现确实不报错了。继续调查之前为什么会针对特定数据报错。仍参考之前的Nginx报错内容,可以看到本次更新生成了一个临时文件。