导读:在日常工作中,经常碰到服务器由于各种各样的原因,出现IO只读故障,将机器重启后,故障就可以恢复,找不到具体故障原因。频率可能几天或者几周出现1次。
?
目前已知的造成硬盘分区只读的可能原因有:
?? 文件系统错误
?? 内核相关硬件驱动bug
?? FW固件类问题
?? 磁盘坏道
?? 硬盘背板故障
?? 硬盘线缆故障
?? HBA卡故障
?? RAID卡故障
?
linux文件系统只读后怎么修复
1 重启系统看是否可以自动修复。
2 使用fsck -y /dev/sda1 进行自动修复。(用”-y”选项来执行该命令对硬盘进行检查和修复)
添加参数:fsck -y -C -t ext3 /dev/sda1 (一般情况下修复完成后,所有文件移动到 lost+found目录,文件名会被改变)
(-C 显示进度条 -t 指定文件系统类型 -y 默认自动yes修复)
?
3. 如果fsck修复完成后,启动系统依然自读。
#mount????????????? 用于查看哪个模块输入只读,一般显示为:
????????????? /dev/nb1 on /EarthView/RAW type ext3 (ro)(变为只读了)
重新mount,或者umount以后再remount
umount /dev/nb1
如果发现有提示“device is busy”,找到是什么进程使得他busy
fuser -m /mnt/data 将会显示使用这个模块的pid
fuser -mk /mnt/data 将会直接kill那个pid
然后重新mount即可。
还有一种方法是直接remount,命令为
mount -o rw,remount /mnt/data
?
使用脚本监控linux系统文件只读
使用了一个最笨的原理:
获取服务器分区,然后在每个分区进行创建文件,如果文件创建成功,删除文件,如果没有创建,那么报警文件系统发生只读。
?
#!/bin/bash datetime=`date '+%F %T'` hostn=`hostname` ip=`/sbin/ifconfig | grep 192.168|sed 's/ //g;s/Bcast//g'|awk -F : '{print $2}'` read_only() { partition=(`df -Th | awk '{print $7}' | xargs`) for (( i=`expr ${#partition[@]} - 1`;i>0;i-- )) do cd ${partition[i]} touch readonly_test if [ -f "readonly_test" ];then rm -rf readonly_test else the_partition[i]="${partition[i]}" fi done if [[ ${#the_partition[*]} != "0" ]];then message="${the_partition[*]}分区出现只读" echo “文件系统只读” fi } read_only
?
原创脚本,转载请回复!