Linux故障排查案例实战
介绍在实际工作中遇到的故障以及解决思路。
Read-only file system
1:现象:网站无法添加数据,但网站可以访问
2:解决思路
根据故障现象,基本排查思路如下:
- 网站程序出现问题
- 服务器磁盘故障
3:排查问题
首先通知研发人员对网站程序问题进行排查,经过检查,并没有发现程序有问题,而在程序日志中发现了一条信息:
报错
java.lang.RuntimeException: Cannot make directory: file:/www/data/html/2013-03-10
根据这个输出得知,程序不能创建目录.试着手动创建一个:
mkdir /www/data/test
mkdir: cannot create directory 'test':Read-only file system
从这个信息可知,/www/data目录所在的磁盘分区出现了问题,通过检查发现,/www/data目录正是挂载的磁盘阵列分区.
4:解决问题
出现Read only file system的原因有很多,可能是文件系统数据块出现不一致导致的,也有可能是磁盘故障造成了.主流的ext3、ext4文件系统遇到致命错误无法修复时,为了保证数据一致性,会暂时屏蔽文件系统的写操作,将文件系统变为只读.
手工修复文件系统错误的命令是fsck,在修复系统前,最好卸载文件系统所在的磁盘分区:
umount /www/data
umount : /www/data: device is busy
提示无法卸载,可能这个磁盘中还有文件对应的进程在运行,检查如下:
fuser -m /dev/sdb1
/dev/sdb1: 8800
接着检查下8800端口对象的是什么进程:
ps -ef|grep 8800
得知是httpd占用了8800端口。
到这里只要停止httpd即可。
/usr/local/apache2/bin/apachectl stop
umount /www/data
fsck -V -a /dev/sdb1
如果有些数据无法修复,会提示是否删除,可根据情况选择,修复完成后,被删除的文件会保留在对应磁盘飞去挂载点的lost+found目录中。
修复完成后,执行挂载操作:
mount /dev/sdb1 /www/data
TIP
最后需要在/www/data目录创建文件验证下是否修复成功.