碰到一台机器,根分区和/upgrade分区变成了read-only system。
第一反应很可能硬件出现了故障,使用了如下的方法来检测和排除故障:
使用dmesg检查是否有关于磁盘错误的信息,果不其然发现大量磁盘扇区错误的信息,如下: end_request: I/O error, dev 03:06 (sda), sector
从上面的输出我们判定扇区可能出现了问题,使用badblocks -s -v -o /root/badblocks.log /dev/sda 检查硬盘是否产生坏道并输出到badblocks.log中。log大约是这样的模式:64039224 64039240 64039241 64039242 64039243 64039256 64039257 64039258 64039259 687056
可修复修复坏道修复方法:1 使用 badblocks -s -w /dev/sda END START END代表需要修复的扇区末端,START代表需要修复的扇区起始端。2 使用fsck -a /dev/sda1
磁盘坏道分为三种:0磁道坏道,逻辑坏道,硬盘坏道。
其中逻辑坏道可以使用上面的方法修复,0磁道坏道的修复方法是隔离0磁道,使用fdsk划分区的时候从1磁道开始划分区。
如果是硬盘坏道的话,只能隔离不能修复。
硬盘坏道的监测方法:使用上述方法检测修复后,再使用badblocks -s -v -o /root/badblocks.log /dev/sda监测看是否还有坏道存在,如果坏道还是存在的话说明坏道属于硬盘坏道。硬盘坏道隔离方法,首先记录监测出的硬盘坏道,然后分区的时候把硬盘坏道所在的扇区分在一个分区(大小一般大于坏扇区大小),划分出的坏道分区不使用即可达到隔离的目的。隔离只是暂时方案,建议尽快更换硬盘,因为坏道会扩散,以免以后出现严重的数据问题。