源链接:https://www.cnblogs.com/sunfie/p/5978901.html
在对集群测试过程中发现系统中某一节点中的磁盘变成read-only file system,从而导致测试任务出错,从网上查找资料,找到以下解决方案:
这个报错的意思是硬盘属性变成只读,不可写入;
VOS本身是不可能更改你的硬盘属性的,只有操作系统有这样的能力;
一般可能原因有三点:
1.硬盘与主板的不兼容性导致;
2.硬盘损坏;
3.人为修改
首先利用fsck修复一下,
1 [root@localhost ~]# fsck 2 fsck 1.39 (29-May-2006) 3 e2fsck 1.39 (29-May-2006) 4 /dev/VolGroup00/LogVol00: recovering journal 5 Clearing orphaned inode 302154356 (uid=48, gid=48, mode=0100600, size=0) 6 Clearing orphaned inode 57245765 (uid=0, gid=0, mode=0100600, size=0) 7 Clearing orphaned inode 57245703 (uid=27, gid=27, mode=0100600, size=0) 8 Clearing orphaned inode 57245702 (uid=27, gid=27, mode=0100600, size=0) 9 Clearing orphaned inode 57245701 (uid=27, gid=27, mode=0100600, size=0) 10 Clearing orphaned inode 57245700 (uid=27, gid=27, mode=0100600, size=0) 11 Clearing orphaned inode 57245699 (uid=27, gid=27, mode=0100600, size=0) 12 /dev/VolGroup00/LogVol00: clean, 7592796/365756416 files, 80372202/365740032 blocks 13 e2fsck 1.39 (29-May-2006) 14 /dev/sda1 is mounted. 15 WARNING!!! Running e2fsck on a mounted filesystem may cause 16 SEVERE filesystem damage. 17 Do you really want to continue (y/n)? no 18 check aborted. 19 20 -----------------------------
尝试执行了一下fsck 直接出现了 修复提示,无任何异常!
如果出现这样的提示,就需要小心:
1 root@test ~]# fsck 2 fsck 1.35 (28-Feb-2004) 3 e2fsck 1.35 (28-Feb-2004) 4 /dev/sda1 is mounted. 5 WARNING!!! Running e2fsck on a mounted filesystem may cause 6 SEVERE filesystem damage. 7 Do you really want to continue (y/n)? no 8 check aborted. 9 [root@test ~]#
一定要选择NO,先拆卸文件系统,否则 对文件系统造成毁灭性的打击。
6.修复完成后,reboot 系统 正常启动
运行正常的一台机器linux服务器,早上发现挂了。满屏幕是 read-only file system的提示.检查/etc/fstab设置没有问题。重启计算机,init初始的过程中,不断的read-only file system提示。进入repair模式,人工干预地/分区进行fsck.
fsck /var -y 在不断的yes之后,修复完成.(真想给enter键上压个秤砣)
重启计算机,OK了.进入系统后进行检查,没有发现有价值的信息.系统出问题前没有重启过.排除了掉电的可能.只在dmesg找了一点线索
1 [root@cacti ~]# dmesg |grep error 2 hdb: packet command error: status=0x51 { DriveReady SeekComplete Error } 3 hdb: packet command error: error=0x54
利用 mount 指令解决 Read-only file system的问题
刚才在VirtualBox下装起了liveAndroid ,可是在利用wget下载apk包的时候,总是提示Read-only file system,也就是说系统是只读的,什么也写不了。于是在网上到处找了一下,发现解决起来挺容易的。一条命令就可以了
1 mount -o remount rw /
系统启动的时候报:
1 Updating /etc/fstab Unable to open /etc/fstab for writing:Read-only file system [FAILED] 2 touch:createing '/var/lock/subsys/kudzu':Read-only file system [OK] 3 Bringing up lookback interface: modprobe: modprobe: Can't locate module ...(此处看不到了) 4 modprobe:modprobe:Can'g locate module net-pf-4 5 modprobe:modprobe:Can'g locate module net-pf-5 6 modprobe:modprobe:Can'g locate module net-pf-18 7 modprobe:modprobe:Can'g locate module net-pf-9 8 Bringing up interface eth0: Inter(R) PRO/100 Network Driver -version ...(此处看不到了) 9 Copyright (c) 2003 Inter Corporation 10 PCI:Fount IRQ 9 for device 00:06.0 11 e100:eth0: Inter(R) PRO/100 Network Connection 12 Hardware receive checksums enabled 13 cpu cycle saver enabled
系统到这一步就不走了,半天没有反应,只能重启(事后发现此处等待n久时间是可以进入系统的,进入系统后也是没有主机名,文件系统只读)。
1,重启后进入单用户模式,打开/etc/fstab文件,查到如下信息:
/dev/sde1 /back ext3 noauto 2 3
有一个阵列柜上的分区加载,虽然只是noauto,不会自动加载,不过当时为了保险起见就像让把这一项去掉。去掉的时候提示文件系统治读。
不过用Mount 命令查看的时候是rw的。
2,这个时候用suse 10 x86的光盘引导进入恢复模式,进去的时候不能够发现本地的硬盘,只能够发现柜子的硬盘。
这个时候想起来了,是suse 10对这个型号的服务器的mageraid卡的驱动不支持,当时公司的这个型号的服务器只能安装radhat 3版本系列的操作系统,redhat 4和suse都不能安装上去。redhat 5出来后也可以安装redhat 5了。
3,想通过redhat 启动过程中的交互模式做点事情。
redhat 启动的时候会有一个按"I"进入的交互模式,可是这个服务器竟然没有这个选项,郁闷了,当时已经很久没有看到redhat 3的启动界面了,当时也不在现场,还以为redhat 3真的没有这个交互界面了。当时记得redhat 3u6是有的。
INIT: version 2.85 booting
Welcome to Red Hat Enterprise Linux AS
Press 'I' to enter interactive startup.
4,没有办法,只好去现在,去现场后用redhat 3u6的光盘引导系统。进入系统后用下面的命令Mount分区
mount -o rw /dev/sda1 /mnt/boot
mount -o rw /dev/sda3 /mnt/sysimage
发现是可以用读写方式加载的.打开系统的/etc/fstab文件,这个时候位置在/mnt/sysimage/etc/fstab。把这个文件的最后一行删除。重新启动还是不行。
5,用光盘引导进入系统后用
fsck.ext3 -f /dev/sda1
fsck.ext3 -f /dev/sda3
强制检查文件系统,没有发现异常。重启后还是不行。
6,系统启动的过程中会发现一些新硬件信息,此时弹出的配置界面都是乱码。应该是系统安装的时候配置的中文环境的缘故。用光盘引导系统,引导的过程中配置网络信息,配置加载本地的linux分区。
进去后修改/etc/sysconfig/i18n文件,这个文件的原信息为:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
修改为:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
这个时候启动的时候就为英文了。
7,上面的这些操作一直都不行,然后就继续想系统启动的步骤,就检查系统启动的文件。
发现/etc/inittab文件的下面一行多了一个#号
si::sysinit:/etc/rc.d/rc.sysinit
把这个#号去掉后就一切Ok。