记一次服务器磁盘故障

故障描述:
代码报错:failed to open stream: No space left on device.
但是查看空间还有剩余。
# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 50G 19G 29G 40% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 508K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 380M 0 380M 0% /run/user/0

排查:
1、使用 df -i,查看,发现是linode不够用了,这是因为小文件数量太多。
2、进入根目录使用 df -u –max-depth=1 查看各目录磁盘情况,发现/tmp目录下文件占用空间较大。进入子目录继续查看,发现是因为php的session文件太多了。没有及时清理导致的。
3、centos 7 中关于临时文件的清理,可以参考这个链接:

CentOS / RHEL 6,7 : Why the files in /tmp directory gets deleted periodically

v /tmp 1777 root root 10d
X /var/tmp/systemd-private-%b-*/tmp

上面这条显示是每10天清理一次。但是systemd-private下的文件除外。而服务器上apache由于开启了privateTmp,session文件就在目录/var/tmp/systemd-private里,所以文件没清理掉。
4、解决方案是上面第一句改成5天,再把第2句删掉。
5、关于privateTmp的配置在/usr/lib/systemd/system/httpd.service。

发表评论

电子邮件地址不会被公开。 必填项已用*标注