磁盘空间耗尽导致服务器无法启动
当前系统:centos6.5
故障现象:
如上图所示:启动的时候就卡在这儿了,无法正常启动,远程IP也无法连接。通过上图是无法知道到底问题出在了什么地方,我们在启动时需要进入到字符界面,这样就能清楚的看问题出在了什么地方,那么如何进入到字符启动界面呢?
关机---启动时按F2,出现内核选项界面之后再按(ctrl+alt+F2) 进入字符界面启动,如果是虚拟机的话就用shift+F2进入字符界面启动,效果如下所示:
通过倒数第四行我们会发现,/etc/rc.5.d这个脚本报错说是写入错误,没有空间了,没有空间了怎么还会启动失败呢?按理说我们启动时也不需要向硬盘里面写入什么呀?其实是有的,我们在启动的时候系统要记录启动日志,启动服务的时候,比如启动httpd,mysql之类的都会写入日志产生磁盘IO,而记录启动日志就会向硬盘当中写入数据,硬盘当中没有空间了就会无法启动了!除了产生日志需要IO写磁盘,还有一些服务在启动时会创建pid文件,也会产生磁盘IO,无法创建pid,也无法启动服务。这怎么办呢?
进入到救援模式清理空间,进入救援模式可以通过多种方法,比如通过光盘引导,可以进入到救援模式,通过救援模式我们可以使用光盘上的系统启动,而不用磁盘当中的系统启动,启动之后会照样挂载原来的文件系统,挂载之后,我们就可以进入里面删除一些非关键的数据,为系统启动腾出空间来。
等等,这种方法肯定能解决问题,但是在当前这种情况下我们没有必要使用光盘,只要进入单用户模式即可,为什么呢?在0-6这七个启动级别之下,启动服务最多的是当属图形模式和多用户字符模式,而单用户模式下基本也没有什么服务,就是会挂载上文件系统,这正是我们需要的。
重启---在内核选项界面按e,如下所示:
进入内核选项之后选中内核继续按e,会进入这样的界面,如下所示:
输入single之后回车,回车之后会返回到内核选项界面,按b启动就会进入到单用户模式,如下所示:
在单用户模式下做的事情比较多,比如忘记密码之后可以修改密码,系统当中的文件丢失了,我们可以找一个文件再补回来,好,下面我们看一下哪个文件满了,如下所示:
/var目录满了,通常日志默认都会将日志写入到这个目录里面,而很多服务的pid文件默认也会在这个目录下创建,比如httpd的pid文件就会创建到/var/run/httpd里面,所以我们在安装系统的时候一定要注意/var目录,或者做好监控、用脚本定期清理等等,反正就是要注意一下这个目录,尽量保证这个目录下有足够的空间。
下面就很简单了,通过du –sh看看哪个子目录占用的空间最多,确认没有什么价值之后将其删除即可,最后reboot重启。