パブリッククラウドが全盛期となる今日、ほそぼそとVPSいじってましたところ、Karnel Panicが発生。
OSは起動せず、キー入力も受け付けず、レスキューモードにも入れず、途方に暮れる事態に陥りました。
ということで、解決までの紆余曲折をお話したいと思います。
環境
項目 | 値 |
---|---|
VPS | Conoha |
OS | CentOS 7 |
症状 | Karnel Panic |
※Conohaでの解決方法です。
再起動でも直らない
Karnel panicとはOSで発生した致命的なエラーです。
多くの場合、OSのアップデートが上手くいかなかったときに出るエラーで、運が良ければ再起動でも直ることがあるそうです。
参考
https://qiita.com/toshihirock/items/a0cd2e04e03d1f479e48
https://wa3.i-3-i.info/word13389.html
これで直れば御の字でしたが、何度再起動を試みても一向に回復する気配なし。
どうやら、手を施す必要がありそうです。
キー入力ができない
Karnel Panicが発生した場合、というかOSに障害が発生した場合、まずはレスキューモードでOSを復旧するのが通常の流れになります。オンプレの場合、キー入力が効くはずなので、特定のコマンドで入ったり、起動オプションでレスキューモードを選択したりと、やりようがあります。
しかし、VPSはコントロールパネルのコンソールウィンドウからキー入力を行います。ところによりますが、再起動するとコンソールの接続が切れ、再接続するとまたしてもKarnel Panic...。この状態ではキー入力を受け付けないので、復旧の仕様がありません。
どんなに優秀なインフラエンジニアでも、キー入力ができなければ無力なのです(私が優秀というわけではなく)。
レスキューモードに入れない
実は以前、カーネルではない別のファイルシステムが破損したことがありました。ディスクをマウントするために、レスキューモードに入った覚えがあるのですが、そのときはちゃんと再起動時にOSの起動オプションが表示されていました。
しかし、今回は何度再起動してもKarnel Panicが表示されるだけで、一切のキー入力をすることができません。
ただ、Karnel Panicの画面を表示することになってしまった私のサーバ…
どうすることもできなくなった私は、最後の手段に出ることにしました。
泣く泣くサポートに電話
「技術者が何たる体たらく」と思われてもしかたありません。
そうです。最終的にConohaのサポートセンターに電話することにしました。
Karnel Panic自体の復旧はもちろんサポートしていませんが、レスキューモードに入る手順ぐらいは教えてくれるはず…
自身の責任でOSが破損したのは間違いないので、一切のサポートを受けられないことも覚悟していました。
ちょっと手こずったが無事解決
サポートに電話すると、ほとんど待つことなくスタッフの方につながりました。
IDや名前を伝え、事情を説明するとレスキューモードの入り方を教えてくれました。
非常に丁寧な対応でした。(しかし、公式ヘルプに手順がないのはなぜ?)
レスキューモード手順
手順としては簡単ですが、コツがいります。
1. コンソール接続(Karnel Panic画面)
2. サーバ再起動
3. コンソールの再読み込みボタンをタイミングよく押す
1. コンソール接続
Conohaのコントロールパネルに入り、該当のVPSサーバを選択します。
下記のようなボタンが並んでいる場面で、コンソールボタンを押し、コンソールを起動します。
実際のKarnel Panicのコンソール画面です。このままだと一切のキー入力を受け付けません。
2. サーバ再起動
次にコントロールパネルに戻って再起動ボタンを押し、コンソールを注視しましょう。
左下の「接続完了」が「切断されました」に表示が変わります。
3. コンソールの再読み込みボタンをタイミングよく押す
ここが一番難しいです。コンソール右上に再読み込みボタンがあるかと思いますが、サーバとの接続が切れて数秒したら再読み込みボタンを押してください。早すぎると接続されず、遅すぎるとKarnel Panicが出てきてしまいます。私の場合、起動ボタンを押して2,3秒ぐらいでしょうか。
すると起動オプションが一瞬表示されるので、カーソルキーを連打すればオプション画面が継続されます。
ここまでくれば、レスキューモードでOSを起動できます。
うまくオプション画面が表示されなかったら、手順1に戻って何度か繰り返しましょう。サーバが復旧できると思えば、安いトライです。
今回の学び
再起動前にバックアップは取っておけ
まあ、当然といえば当然です。
正常なうちにバックアップはとっておく。それも定期的に
一度痛い目みないと、バックアップは怠りがちです。
大きなアップデート前はもちろんのこと、再起動時や何もないときであってもバックアップを取っておけば保険になります。
私の場合、最新のバックアップが1ヶ月前だったので、もし復旧できなかったらかなりのダメージでした。
バックアップ、超大事
復旧手順は確認しておく
今回は手厚いサポートのおかげで円滑な復旧ができましたが、障害時の対応や復旧手順はきちんと知っておくべきです。障害が起きてから初めて調べるなど愚の骨頂。サーバ管理者の端くれにもおけません。
特にVPSやパブリッククラウドは独自の方法でレスキューモードに入ること場合が多いです。BIOSに入れなかったり、特殊キーが受け付けなかったり、とオンプレとは訳が違います。
つまるところ、平時に障害時の準備をすることが大切なのです。
補足:Karnel Panicの解決
大した解決方法ではないので、あくまで補足として
Karnel PanicはOSのアップデートで発生することが多いエラーです。
というわけで、レスキューモードで入り、OSの再アップデートをかけることで、解決しました。
CentOSだったので、yum -y update
ですね。
Karnel Panicになったとしても、人間までパニックになる必要はありませんでした。