ディスクのマウント設定を変えた直後に再起動したら、起動プロセスが途中で止まってしまった。SSHで接続しようとしても応答がない。こういう事態はLinuxエンジニアなら誰もが一度は経験するものです。
Azure上のLinux VMでは、こういった起動障害や接続不能状態に対応するために「ブート診断(Boot Diagnostics)」と「シリアルコンソール(Serial Console)」という2つの機能が用意されています。ブート診断は起動中のシリアルログとスクリーンショットを記録し、シリアルコンソールはSSHポートを一切通さずにVM内のターミナルへ直接アクセスできます。
この記事では、azコマンドによるブート診断の有効化から、起動ログの取得、シリアルコンソールでのログインまでを実践的に解説します。fstabミスから実際にVMを回復させる手順も紹介するので、緊急時の対応力を今日のうちに身につけてください。実行環境はRHEL 9.4 / Ubuntu 22.04 LTSで動作確認済みです。
この記事のポイント
・az vm boot-diagnostics enableで起動ログとスクリーンショットを記録できる
・シリアルコンソールはSSHなしでVMのターミナルへ直接アクセスできる
・fstabミスによる起動障害もシリアルコンソール経由で回復できる
・AWS EC2シリアルコンソールとの設計の違いも実例付きで解説する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ブート診断とシリアルコンソールが必要になる場面
Azure上のLinux VMにアクセスできなくなるケースは大きく2種類あります。「VMは起動しているがSSHが通らない」場合と「VMそのものが起動しない」場合です。前者はAzure VM Run Commandで対処できますが、後者はVMエージェント(WALinuxAgent)自体が動いていないためRun Commandも使えません。この状況で頼りになるのがブート診断とシリアルコンソールです。
ブート診断(Boot Diagnostics)
VMの起動中にシリアルコンソールへ出力されるテキストログと、画面のスクリーンショットを記録します。「カーネルパニック」「fstabの読み込み失敗」「GRUBで止まっている」といった起動障害の原因を後から確認するのに使います。
シリアルコンソール(Serial Console)
VMの電源が入っており、OS内部でシリアルターミナル(ttyS0)が応答していれば、Azureポータルからブラウザ経由でVMのターミナルへ直接接続できます。SSHポートの状態に関係なく使えるため、ネットワーク設定のミス・fstab障害・emergencyモード起動の場面で特に力を発揮します。
| 機能 | 用途 | 主な使用条件 |
|---|---|---|
| ブート診断 | 起動ログ・スクリーンショットの記録と確認 | ブート診断が有効化されていること |
| シリアルコンソール | SSH不要のインタラクティブなターミナルアクセス | VMが起動済み・ttyS0が応答していること |
ブート診断を有効化する方法
ブート診断はVMの作成後でも後から有効化できます。本番VMを作成したら最初に有効化しておく習慣をつけておくことをお勧めします。1. マネージドストレージで有効化する(推奨)
2022年以降、ストレージアカウントを別途用意しなくてもAzureが管理するマネージドストレージにログを保存できます。追加コストがかからず設定もシンプルなため、こちらを推奨します。# ブート診断を有効化(マネージドストレージ) az vm boot-diagnostics enable \ --resource-group myRG \ --name myVM # 有効化を確認 az vm show \ --resource-group myRG \ --name myVM \ --query diagnosticsProfile.bootDiagnostics
{ "enabled": true, "storageUri": null }
storageUriがnullの場合はマネージドストレージを使用しています。2. 独自ストレージアカウントを指定する場合
コンプライアンス要件でログの保存場所を指定する必要がある場合は、ストレージアカウントのURIを指定します。# ストレージアカウントを作成(VMと同じリージョンに) az storage account create \ --resource-group myRG \ --name mystoragebootdiag \ --sku Standard_LRS \ --location japaneast # ストレージアカウントのURIを取得 STORAGE_URI=$(az storage account show \ --resource-group myRG \ --name mystoragebootdiag \ --query primaryEndpoints.blob -o tsv) # ブート診断を有効化 az vm boot-diagnostics enable \ --resource-group myRG \ --name myVM \ --storage "$STORAGE_URI"
起動ログとスクリーンショットを取得する
ブート診断が有効な状態でVMを再起動すると、シリアルログとスクリーンショットが保存されます。1. シリアルログ(起動ログ)を取得する
# シリアルログを標準出力へ表示 az vm boot-diagnostics get-boot-log \ --resource-group myRG \ --name myVM
[ OK ] Started Accounts Service. [FAILED] Failed to mount /data. See 'systemctl status data.mount' for details. [DEPEND] Dependency failed for /data. [DEPEND] Dependency failed for Local File Systems. ... You are in emergency mode. After logging in, type "journalctl -xe" for system journal, "systemctl reboot" to reboot, or "exit" to boot into default mode. Give root password for maintenance (or press Control-D to continue):
/dataのマウントに失敗してemergencyモードで止まっていることが分かります。起動障害の原因特定に非常に役立ちます。2. スクリーンショットのURIを取得してダウンロードする
# スクリーンショットのURIを取得 SCREENSHOT_URI=$(az vm boot-diagnostics get-boot-log-uris \ --resource-group myRG \ --name myVM \ --query screenshotBlobUri -o tsv) # curlでスクリーンショット(PNG)をダウンロード curl -s "$SCREENSHOT_URI" -o boot-screenshot.png
Azure シリアルコンソールで直接ログインする手順
シリアルコンソールはAzureポータルからのみ利用できます(Azure CLIにはシリアルコンソールの接続コマンドはありません)。前提条件:
・VMの電源がオンであること(割り当て解除状態では使えない)
・ブート診断が有効化されていること
・VMの管理者ユーザーにパスワードが設定されていること(SSH公開鍵のみの設定では使えないため、あらかじめパスワードを設定しておく)
・実行者に「仮想マシン共同作成者」以上のAzure RBACロールが付与されていること
1. Azure Portalからシリアルコンソールへアクセスする
Azureポータルで対象VMのリソース画面を開き、左メニューの「ヘルプ」セクション内にある「シリアルコンソール」をクリックします。ブラウザ内にターミナルウィンドウが開き、VMのシリアル出力(ttyS0)が表示されます。Enterキーを1回押すとログインプロンプトが表示されます。
# シリアルコンソールに接続後、Enterを押すとプロンプトが現れる myvm-prod-01 login: azureuser Password: # ログイン後、通常のbashセッションが利用可能 [azureuser@myvm-prod-01 ~]$ whoami azureuser [azureuser@myvm-prod-01 ~]$ sudo -i [root@myvm-prod-01 ~]#
2. パスワードが設定されていない場合の対処
デプロイ時にSSH公開鍵のみで認証設定した場合、シリアルコンソールへのログインにパスワードが必要です。VMが起動している状態であればaz vm run-commandでパスワードを設定できます。# az run-commandでパスワードを設定(VMが起動中であることが前提) az vm run-command invoke \ --resource-group myRG \ --name myVM \ --command-id RunShellScript \ --scripts "echo 'azureuser:TempPass!2024' | sudo chpasswd"
Azure対応セミナーの詳細を見る >>
実践:fstabミスからVMを回復させる手順
最もよくある起動障害パターン「/etc/fstabの誤記入によるemergencyモード起動」をシリアルコンソールで解決する手順を示します。1. 起動ログで状況を確認する
まずget-boot-logコマンドで起動ログを確認し、emergencyモードで止まっていることを確かめます。az vm boot-diagnostics get-boot-log \ --resource-group myRG \ --name myVM 2>&1 | grep -A 3 "FAILED\|emergency"
2. シリアルコンソールへ接続してrootでログインする
Azureポータルのシリアルコンソールへ接続し、rootでログインします。emergencyモードではrootパスワードを入力するよう求められます。3. fstabを修正して再起動する
# emergencyモードのシェルから実行 # まず現在のfstabを確認 cat /etc/fstab # 誤ったエントリを修正(viで編集) vi /etc/fstab # 修正後にマウントテスト(エラーがなければOK) mount -a # 問題なければ再起動 systemctl reboot
mount -aでエラーが出なければfstabの修正は成功です。よくある修正パターン:
・存在しないデバイス名(/dev/sdc1など)→
blkidで調べたUUIDに変更・削除済みのNFSマウント → エントリを削除またはコメントアウト
・誤ったマウントオプション →
nofailオプションを追加して障害時に起動を継続させるAWS EC2シリアルコンソールとの比較
AWSにも「EC2シリアルコンソール」(2021年提供開始)という類似機能があります。両者の設計の違いを理解しておくと、AWS経験者がAzureへ移行する際の混乱を防げます。| 比較項目 | Azure Serial Console | AWS EC2 Serial Console |
|---|---|---|
| 有効化の単位 | サブスクリプション単位でデフォルト有効 | AWSアカウント単位で明示的な有効化が必要 |
| アクセス方法 | Azureポータル(ブラウザ)のみ | マネジメントコンソール・EC2 API・AWS CLI |
| 認証方式 | OSのユーザー名/パスワード | OSのユーザー名/パスワードまたはEC2 Instance Connect |
| インスタンス要件 | Azure Marketplaceイメージであれば基本対応 | Nitroベースのインスタンスタイプのみ対応 |
| 同時接続数 | 制限なし | インスタンスあたり1接続のみ |
| 起動ログの記録 | ブート診断で別途シリアルログを保存 | CloudTrail経由のAPI記録のみ、コンソール出力は記録しない |
Azureのシリアルコンソールはサブスクリプションレベルでデフォルト有効になっているため、意識せずに使えるのが特長です。一方AWS EC2シリアルコンソールは事前にアカウント単位での有効化が必要な上、Nitroベースのインスタンスタイプのみ対応という制約があります。また起動ログについては、Azureの方がブート診断によるシリアルログ保存という形で体系化されています。
本記事のまとめ
| やりたいこと | コマンド・操作 |
|---|---|
| ブート診断を有効化する | az vm boot-diagnostics enable --resource-group myRG --name myVM |
| 起動ログ(シリアルログ)を取得する | az vm boot-diagnostics get-boot-log --resource-group myRG --name myVM |
| スクリーンショットのURIを取得する | az vm boot-diagnostics get-boot-log-uris --resource-group myRG --name myVM --query screenshotBlobUri -o tsv |
| シリアルコンソールへ接続する | Azureポータル → 対象VM → ヘルプ → シリアルコンソール |
| パスワードを設定する(シリアルコンソール利用前) | az vm run-commandでchpasswdを実行、またはポータルのパスワードリセット |
| fstabミスからVMを回復する | シリアルコンソールからrootでログインしてfstabを修正後に再起動 |
ブート診断とシリアルコンソールは「いざというとき」のための機能ですが、事前にブート診断を有効化しておかなければ起動障害の瞬間を記録できません。新しいVMを作成したらブート診断を有効化する習慣をつけておくと、いざ障害が起きたときに迷わず対応できます。
Azure環境でのLinuxサーバー運用を体系的に学びたい方は、以下もあわせてご覧ください。
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AzureのLinux VMにNginxをインストールしてHTTPS公開する方法|VNet・NSG設定からcertbot証明書取得まで実践ハンズオン
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます