*** An error occurred during the file system check. *** Dropping you to a shell; the system will reboot *** when you leave the shell. Give root password for maintenance (or type Control-D to continue):/etc/fstab で fsck 実施を指定(第6フィールド)しているデバイスが見つからないと、fsck が失敗して、このメッセージが出力されるようです。/etc/rc.d/rc.sysinit の次の箇所です。
... if [ -z "$fastboot" -a "$READONLY" != "yes" ]; then STRING=$"Checking filesystems" echo $STRING if [ "${RHGB_STARTED}" != "0" -a -w /etc/rhgb/temp/rhgb-console ]; then fsck -T -t noopts=_netdev -A $fsckoptions > /etc/rhgb/temp/rhgb-console else fsck -T -t noopts=_netdev -A $fsckoptions fi rc=$? if [ "$rc" -eq "0" ]; then success "$STRING" echo elif [ "$rc" -eq "1" ]; then passed "$STRING" echo elif [ "$rc" -eq "2" -o "$rc" -eq "3" ]; then echo $"Unmounting file systems" umount -a mount -n -o remount,ro / echo $"Automatic reboot in progress." reboot -f fi # A return of 4 or higher means there were serious problems. if [ $rc -gt 1 ]; then if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --ping ; then chvt 1 fi failure "$STRING" echo echo echo $"*** An error occurred during the file system check." echo $"*** Dropping you to a shell; the system will reboot" echo $"*** when you leave the shell." str=$"(Repair filesystem)" PS1="$str \# # "; export PS1 [ "$SELINUX_STATE" = "1" ] && disable_selinux sulogin ...対策としては、次の3つ考えられます。
対策1 ストレージの立ち上げが完了してから、サーバを立ち上げる 対策2 fstab の第6フィールドを 0 に設定(ただ、これをやると fsck が行われなくなります) 対策3 rc.local に fsck と mount の記述を行う(もし、失敗しても立ち上がるように)対策1が1番良いとは思いますが、自分では対策3にしました。
なお、rc.sysinit の動作(システム起動を止める)の意図は、中途半端な状態で立ち上げを継続すると二次災害を起こす可能性があるため、安全策と思われます。なので、もし必要なデバイスが見えていないために、立ち上げが止まったならば、ストレージの状態等を確認後に再起動するのが、安全策であろうと思います。
2011-03-27追記
参考までに、実際には、rc.local に次のような感じで記述しています。CentOS 5.5 + LVM + ext4 を利用。
... SANDEV=/dev/vg1/lv1 if ! grep -q $SANDEV /proc/mounts ; then fsck -C -pv $SANDEV mount $SANDEV /mnt_lv1 fi ...ちなみに、NFS サーバになっており、当該領域を export しています。
2011-03-30追記
実際に、この rc.local でマウント失敗する状況に遭遇しましたが、LVM を使っているため、VG の活性化処理を行ってから、手動マウントする必要がありました。
# vgchange -a y vg1この操作を行わないと、LV のデバイスファイル(/dev/vg1/lv1)が作成されず、fsck も mount も失敗(No such file)します。
2011-04-02追記
ここまでに書いた処置で大丈夫と思っていましたが、SANストレージの mount に失敗した場合に、NFS クライアントが、root デバイスを mount してしまい、期待する中身が見えないという二次災害が起きることがわかりました。そこで、次のように、SANストレージの mount 後に NFS サービスを起動するように変更を加えました。
# chkconfig nfs off ※NFS サービスの自動起動をやめる # chkconfig --list nfs nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:offrc.local を次のように書き換え。
... SANDEV=/dev/vg1/lv1 if ! grep -q $SANDEV /proc/mounts ; then fsck -C -pv $SANDEV mount $SANDEV /mnt_lv1 /etc/rc.d/init.d/nfs start fi ...やはり、rc.sysinit が fstab 記載のディスクを mount 出来ない場合に、システム起動を停止してしまうという仕様は、このようなケースを避けるために、妥当なようです。だけど、この記事の冒頭に書いたメッセージが出てしまうと、ssh アクセスできずコンソールを見に行かないといけないので、(マシンルームまで距離があり)面倒なのですが。
なお、現在のところ、実際に計画停電に遭遇したことはなく。節電協力のため、毎日シャットダウン・翌日パワーオンを行っているという状況です。
0 件のコメント:
コメントを投稿