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

提示

最后需要在/www/data目录创建文件验证下是否修复成功.

上次更新:
贡献者: iEchoxu