CentOS 7が「Booting from Hard Disk...」で起動しない レスキューモードでgrub2を再設定しました。
目次
CentOS 7が重い
さくらのVPSの上で、CentOS 7をインストールしてGitlabを使っているのですが、なんか急に重くなって使えなくなりました。
さくらインターネットのVPSについては以下にまとめました。

CentOS 7のインストールについては以下にまとめました。

Gitlabのインストールについては以下にまとめました。

さて、Gitlabをブラウザ越しに見るとこんなエラーが出ました。
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET/.Reason: Error reading from remote server
これはnginxのエラーなんでしょうか?
Gitlabの再起動を試みます。
# gitlab-ctl graceful-kill
# gitlab-ctl once
# gitlab-ctl status
Apacheの再起動を試みます。
なんか、ちゃんとApacheが再起動してくれません。
止むを得ず、サーバーを再起動してみることにしました。
サーバーを再起動すると「Booting from Hard Disk...」で止まる
Booting from Hard Disk...
で止まってしまいました。
ちょっとヤバい。
エラーの現象は、これに似ているけれど原因は違うはず。

同様の問題を探してみて、これを読んで笑ってしまった。
さくらサポート「俺、悪くない。お前のせい。」
って返事がががが!(要約しすぎだ)
ただ、いずれにせよ、さくらインターネットのサポートは役に立たないのは知っています。
自力解決のみです。
CentOS 7をレスキューモードで起動
レスキューモードで起動します。
さくらインターネットの「カスタムOSインストール」でインストールOSとして「CentOS x86_64」を設定して起動します。
「Troubleshooting」を選択します。
「Rescue a CentOS system」を選択します。
「Continue」を選択します。
「OK」を押します。
「OK」を押します。システムは、/mnt/sysimage にマウントされました。
ブートローダー grub2 の再作成
CentOS 7は、それ以前のCentOSと大きく異なっています。
違いは以下にまとめました。

今回、CentOS 7のブートローダーであるgrub2を作り直してみようと思います。
# mv grub.cfg grub.cfg.org
# grub2-mkconfig -o grub.cfg
新しい grub.cfg が作成されました。
これで動くはず。
システムを再起動してみます。
うーん。。。
bio: create slab <bio-1> at 1
でしばらく止まって。。。。
最後は、
Warning: Could not boot.
Warning: /dev/dm-2 does not exist
Starting Dracut Emergency Shell...Generating "/run/initramfs/rdsosreport.txt"
となってしまいました。
/dev/dm-2が存在しない。。。。?
/dev/dm-2とは?
/dev/dm-2は論理デバイスのようです。
要は物理的なハードディスクの中を論理的に分けた部分の1個です。
再び、レスキューモードで起動してみます。
以下のコマンドでマップされたデバイスのデバイス名を確認します。
# dmsetup ls
どうやら以下の関係のようです。
dm-0 ⇒ live-rw
dm-1 ⇒ live-base
dm-2 ⇒ root centos_tk2–206–12914-root
dm-3 ⇒ swap centos_tk2–206–12914-swap
/mnt/sysimage/boot/grub2/grub.cfg を見てみると
linux /vmlinuz-3.10.0-123.13.2.el7.x86_64 root=/dev/dm-2
のように書かれている個所が3ヶ所ありました。
おや? dm-0 とか dm-1 ってレスキューモードのlive CDでは?
/mnt/sysimage/boot/grub2/grub.cfg
の中に書いてある
/dev/dm-2
を3ヶ所とも
/dev/dm-0
に書き換えてみます。
再起動します。
ビンゴか!?なんか起動してきました。
いけるか!?
ところが。。。。
ip6_tables: (c) 2000-2006 Netfilter Core Team
Ebtables v2.0 registered
Bridge firewalling registered
で真っ黒な画面に遷移してそのままです。
GUIモードをやめてCUIでCentOS 7を起動する
よく考えてみたのですが、このCentOS 7ってGUIモードで起動するようになっています。
たぶん、Xサーバーを起動しようとしてうまく起動できなかったのではないかと推測しました。
という訳で、GUIモードをやめてCUIでCentOS 7を起動してみます。
自動起動になっているディスプレイマネージャー gdm.service を無効化すればシステム起動時にCUIで起動するようになります。
再び、レスキューモードで起動します。
/mnt/sysimage/etc/systemd/system/display-manager.service
がシンボリックリンクになっているので、別の場所に移動しておきます。
再び、再起動します。
。。。今度こそ。。。起動しました!!
デフォルトゲートウェイの設定
CentOS 7は起動出来たものの、元々自動起動に設定していたいろいろなサービスが起動していないことがわかりました。
特にデフォルトゲートウェイの設定がうまくいっていないようで、外部ネットワークからアクセスできない、外部ネットワークにアクセスできないです。
/etc/sysconfig/network-scripts/ifcfg-eth0 をvimで開きます。
IPADDR=www.xxx.yyy.zzz
NETMASK=255.255.254.0
GATEWAY=aaa.bbb.ccc.1
この後、いろいろなサービスを起動します。
# systemctl daemon-reload
# systemctl start network.service
# systemctl start firewalld.service
# systemctl start sshd.service
# systemctl start httpd.service
# gitlab-ctl start
以下のコマンドでデフォルトゲートウェイが表示されることを確認します。
# route
5時間ぐらいかかったけれど、なんとか復旧完了。
さくらのVPSサーバー
↓月額685円からの低価格&高パフォーマンスのVPS、さくらのVPSはコチラ
SSDプランが月々685円から使える!さくらのVPS
コメント
OSをリブートしようとして同様の障害で悩まされた者です。
私の場合はgrub2の設定ファイル中の「/dev/dm-2」を
「/dev/dm-1」に修正することでOSを起動することができました。
linuxをはじめサーバー管理はズブの素人なので
大変助かりました。
ありがとうございました!
お役に立ててよかったです。
[…] […]