LVM、checkfs先于ISCSI initiator加载引起的开机错误

来源:互联网 发布:速卖通打单软件 编辑:程序博客网 时间:2024/05/30 02:25

    由于项目需要,在一台服务器上部署了iscsi的initiator,并用LVM管理iscsi挂载的分区,当每次重启的时候,系统会报错:

fsck.ext3 ...

File system check faild. Please repair CONTROL-D will exit from this shell and manually continue system startup...

 

*** when you leave the shell
Give root password for maintenance
(or type Control-D to continue):

 

经过一番检查,认定是由于lvm跟chechfs.sh两个脚本先于iscsi initiator启动,这样造成了内核检查文件系统的时候,没有发现/etc/fstab中标明的iscsi设备,从而提示出错。这个错误倒无所谓,但是每次报错的时候正是启动的过程,还不能通过ssh的终端远程连接,每次只能跑到机房里来按这个ctrl+d。于是打算研究研究,该如何解决。方法其实就很简单了,只要将iscsi initiator先于lvm和checkfs.sh启动就行了,于是找到/etc/rcS.d目录,发现其中启动lvm的软链接为S26lvm,启动checkfs.sh的软链接为S30checkfs,这里S表示start,S后的数字表示顺序,也就是当系统启动的时候,内核会根据/etc/rcS.d目录下S后的数字顺序,依次启动各个服务。于是创建如下的软链接:

ln -s  /etc/rcS.d/S20iscsi.d   /etc/init.d/iscsid

ln -s  /etc/rcS.d/S21iscsi      /etc/init.d/iscsi

(我的系统为centos 5.2,initiator为iscsi-initiator-utils,属于open-iscsi开源项目的一部分)

 

重启,果然发现在启动lvm之前,iscsi initiator首先连到了target端,问题基本解决了。

 

    但是,紧接着发现另一个问题,假如我把target端的ip san关掉或者拔掉网线,这时候重启服务器,发现系统无法挂载iscsi设备,内核仍然让我输入ctrl+d,才肯进入系统,这该咋办?于是找到“File system check faild. Please repair CONTROL-D will exit from this shell and manually continue system startup”错误信息的出处,原来是chechfs.sh这个脚本,它的功能是负责在每次启动系统的时候用fsck来扫描硬盘,于是打开这个脚本,发现里面有这样一段话:

     if [ $? -gt 1 ]
     then
        log_action_end_msg "$?" || true
        log_failure_msg "File system check failed.  Please repair manually."
        log_failure_msg "CONTROL-D will exit from this shell and continue system startup."
        # Start a single user shell on the console
        /sbin/sulogin $CONSOLE
    else
        log_action_end_msg 0
    fi

 

其中/sbin/sulogin $CONSOLE大约就是阻塞并等待输入ctrl+d的命令了,将它注释掉,再重启,问题解决

原创粉丝点击