さくらVPSのUbuntuがリブート後に起動しなくなった
さくらVPSの障害でサーバが落ちていたんだけど、復旧後にOSが起動しないとさくらサポートさんから連絡があった。
障害の解消後、弊社にてご利用のVPSサーバのOS起動を確認させていただいたところ、ブートローダ GRUB が正しく動作せず、起動完了しない問題があることを確認しました。原因として、以前に kernel等のアップデートを行っていただいた際に、GRUB の更新に失敗していた可能性が考えられます。
GRUBを再インストールすることで復旧できる可能性がございますが、ご利用中のOSはVPSサービス標準インストールのOSとは異なると見受けられ、弊社では対応を致しかねます。申し訳ございません。
VPSコントロールパネルの「リモートコンソール」機能にて、VPSサーバのコンソールを直接操作していただくことが可能です。大変申し訳ございませんが、お客さまにて内容をご確認いただけますようお願いいたします。
うちのVPSサーバはUbuntu10.04をインストールした後に、12.04までアップデートしている。その途中でアップデートに失敗していてGRUBに爆弾を抱えていた状態だったんだろう。そういえば12.04にアップデートした後に、一度も再起動していない。VNCコンソールから接続して状況を確認すると、ブート直前で止まってる。
ことがGRUBだけに、下手をすると二度と起動しなくなる。ドキドキしながら類似の事例を探すと、レスキューモードでGrubリカバリというページが見つかった。
sakuraVPS 上の CentOS 5 で yum update 後 reboot したらGRUBエラーでサーバが復帰しなくなった際、sakura のサポートセンターから案内された復旧手順。
さくらVPSのカスタムOSインストール機能を使って、レスキューモードからGRUBを再インストールするというもの。OSの違いはあるものの、参考になりそう。
レスキューモードで復旧
さくらVPSのコントロールパネルへ移動し、カスタムOSインストールへ。Ubuntu12.04が提供されていたので、これを選択する。(Ubuntu12.04のCD-ROMを挿入してマシンを再起動するイメージ)
Ubuntu12.04のインストーラが起動するので、レスキューモードを選択。ネットワークの設定をして進めると、レスキューモードのメニューが表示される。
サーバのディスクが見えているので、 /dev/vda1
をルートとして選択。
次に何をするかを選択。最終的には Reinstall GRUB boot loader
を選べばいいんだけど、まずは Execute shell in /dev/vda1
を選択してシェルモードでいろいろと調査をした。 parted -l
コマンドでパーティション情報を確認したり。
GRUBのインストール先を聞かれるので /dev/vda
と入力する。
これでGRUBの再インストールが完了。再起動すると無事にサーバが起動した。心臓に悪いね。