问题:网站无法登陆,上传文件失败 …
查找问题:
- 查看日志,出现如下错误:
PHP Warning: session_start(): open(/var/tmp/php/session/sess_s0enu22sojitqshbm6bs4dsf95, O_RDWR) failed: No space left on device (28) in /var/www/sites/prod/include.inc.php on line 2, referer: http://www.yuming.com/photodetail.php?id=ozx6G1zs/Ti00C6Rk/A&from=groupmessage
问题是磁盘空间不足,无法写入session,这种原因通常是文件空间不足或者文件索引被占用完
2. 查看磁盘空间信息
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
[root@srv-web1 tkont]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 3.9G 15G 21% /
tmpfs 1.9G 0 1.9G 0%
/dev/www 158G 42G 109G 28%
发现空间是足够的,然后df -i 查看了下inodes,发现根目录下的inodes值使用率为100%了
[root@srv-web1 tkont]# df -ih
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda1 1.3M 1.3M 0k 100% /
tmpfs 479K 1 479K 1% /dev/shm
/dev/www 10M 373K 9.7M 4% /var/www/sites
解决问题
通过以下脚本进行检查,查看到底哪个目录下面的文件最多,依次定位到最终最大的那个目录
for i in /*; do echo $i; find $i | wc -l; done
将大文件删掉,如果直接用rm -rf 会报错/bin/rm Argument list too long,用xargs 去避免这个问题
ls | xargs -n 10 rm -rf
然后登陆系统,问题最终解决!
问题总结
该问题从发现到解决总共花掉30分钟,定位问题相对容易,就是因为垃圾文件长时间没清理,导致清理文件花太多的时间,为了避免该类问题,最好对系统的垃圾文件进行定时清理,或者部署监视系统。