はじめに
OCI Compute Instance では、カーネルパニックが発生すると SSH 接続ができなくなり、通常の運用手段(踏み台や Bastion Serviceからの接続)では調査や復旧が困難になります。
OCI ではそのような場合でも、 コンソール接続 を利用することで、 OS が起動する際のブートローダー画面から確認・操作を行い、原因調査や対応を行うことができます。
本記事では、以下のような状況を想定し、 Cloud Shell を利用してシングル・ユーザーモードでインスタンスに接続し、復旧する手順を紹介いたします。
想定する障害など
- fstab の編集ミスによりカーネルパニックが発生
- 再起動しても正常起動しない
- SSH 接続不可
前提条件
- OCI Console にログインできること
- Cloud Shell を使用する権限を有していること
- 対象インスタンスに対する操作権限を有していること
- コンソール接続を作成する権限を有していること
- 対象OSは Oracle Linux 9 とする
コンソール接続とは
コンソール接続には複数のパターンがあり、接続方法にも種類があります。
参考: https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/serialconsole.htm
| 接続方法 | 利用経路 | 接続方法 | 用途 |
|---|---|---|---|
| Cloud Shell 接続ボタンから起動されるシリアル・コンソール | OCI Cloud Shell | シリアル・コンソール | シリアル・コンソール、シリアル・コンソール接続の作成 |
| Cloud Shell + シリアル・コンソール接続 + SSH | OCI Cloud Shell | SSH | シリアル・コンソール接続を経由した SSH 接続 |
| ローカルPC + シリアル・コンソール接続 + SSH | SSH クライアント | SSH | ローカル PC からシリアル・コンソール接続を経由して SSH 接続を行う |
| ローカルPC + シリアル・コンソール接続 + VNC | VNC Viewer | VNC | ローカル PC からシリアル・コンソール接続を経由して VNC 接続を行う |
- Cloud Shell 接続ボタンから起動されるシリアル・コンソールは最も手軽に利用できる接続方法であり、 SSH や VNC クライアントを必要としません。
- Cloud Shell を利用したコンソール接続では、 VNC 接続はサポートされていないことは注意が必要です。
- 画面上では Cloud Shell 接続ボタンより作成されたシリアル・コンソール接続には、 VNC 接続用のメニューが存在し、コマンドも表示されますが、サポートされておりません。
- 参考: https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/serialconsole.htm?Highlight=ssh#creating-instance-connection-cloud-shell
いずれの接続に関しても、トラブル・シューティングの目的で利用すべき接続であり、管理や一般的な運用目的での利用は推奨されていないことも注意してください。
今回のトラブルシューティングの流れ
- カーネルパニック発生
- SSH 接続確認 -> 不可
- OCI コンソールにてコンソール接続作成
- 再起動
- シングル・ユーザーモードで起動
- 原因確認
- 設定修正
- 再起動(通常起動確認)
※本記事では仮想トラブルシューティングのため、 1 と 2 はスキップして 3 から紹介いたします。
3. コンソール接続作成
インスタンス詳細画面の OS 管理タブをクリックし、コンソール接続の Cloud Shell接続の起動 ボタンを押下します。
Cloud Shell が起動しシリアル・コンソール接続の画面が表示されます。
※シリアル・コンソールに接続した状態では、下記表示で止まったようになりますが、 Enter を押下していただくと、ログイン・プロンプトが表示されます
|
1 2 3 4 5 6 |
================================================= IMPORTANT: Use a console connection to troubleshoot a malfunctioning instance. For normal operations, you should connect to the instance using a Secure Shell (SSH) or Remote Desktop connection. For steps, see https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/accessinginstance.htm For more information about troubleshooting your instance using a console connection, see the documentation: https://docs.cloud.oracle.com/en-us/iaas/Content/Compute/References/serialconsole.htm#four ================================================= |
4. 再起動
アクション・メニューより再起動を選択します。
5. シングル・ユーザーモードで起動
Cloud Shell 画面にカーネルの出力情報が表示され、再起動されます。
※カーネルパニックの状況次第では再起動が受け付けられないかもしれませんが、その場合には 電源をただちに切断した後、再投入することで、インスタンスを強制再起動します にチェックを入れ、強制再起動を実施するなどを検討します。
タイミングがとてもシビアではありますが、 GRUB メニューが表示されるように [Esc] キーを入力します。
GRUB メニューが表示されれば、起動したいカーネルを選択し、 [e] キーを押下します。
linux もしくは linuxefi で始まる行の行末に init=/bin/bash を追加します。
[Ctrl] + [x] を押下し、編集モードを抜けて起動します。
起動後は、シングル・ユーザーモードで起動されるため、ログイン・プロンプトは表示されずに bash が起動されます。
6. 原因確認
今回は障害として、 fstab の異常を想定していますので、 fstab ファイルの内容を確認します。
|
1 2 3 4 |
/usr/sbin/load_policy -i /bin/mount -o remount, rw / tail -n 5 /etc/fstab |
変更するファイルのコンテキストを保持するSElinuxポリシーをロードし、読取り/書込み権限でルート・パーティションを再マウントします。
今回は fstab の編集ミスによるカーネル・パニックを想定していますので、 /etc/fstab の内容を確認します。
7. 設定修正
fstab の内容を適切に修正します。
|
1 2 |
vi /etc/fstab |
8. 再起動(通常起動確認)
インスタンスを再起動し、正常に起動するか確認します。
|
1 2 |
/usr/sbin/reboot -f |
まとめ
上記の手順を実行することで、カーネルパニックになっているインスタンスを復旧することができます。
また、本記事では触れておりませんが、コンソール接続は Windows インスタンスでも利用することができ、 VNC を用いて GUI で操作することも、 Windows Special Administration Console (SAC) を有効にしておけば、ブート・メニューにアクセスしてセーフ・モードで起動するなども可能になります。
このようにコンソール接続を用いれば、通常の手段(SSH や RDPなど)で接続できない状況に陥った場合でも、トラブルシューティングを行うことが可能となりますので、もしもの時に備えて接続方法などは事前に確認していただければと思います。
特に接続方法により事前にSSH鍵の準備が必要であるなどの注意点も多いため、ドキュメントは一度ご確認いただければと思います。
https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/serialconsole.htm













