適用対象: ✔️ Linux VM
Azure Linux 仮想マシン (VM) に Azure Disk Encryption (ADE) をデプロイすると、ブート プロセスとシステム コンポーネントに関連するさまざまな重要な設定が、ファイルを編集することによって変更されます。 ADE のデプロイが失敗した場合、または中断された場合、特にオペレーティング システム (OS) ディスクが暗号化されている場合は、VM が緊急モードで停止するか、使用できなくなる可能性があります。
この記事では、ADE デプロイ後に Linux VM の起動に失敗する一般的なシナリオと、問題のトラブルシューティング手順を示します。
[前提条件]
すべてのシナリオで、ディスクを暗号化 する前にスナップショットを作成 するか、バックアップを作成する必要があります。 バックアップがあると、暗号化中に予期しないエラーが発生した場合に、回復オプションを使用できるようになります。 暗号化された VM のバックアップと復元方法の詳細については、Azure Backup に関する記事を参照してください。
拡張機能ログ
Linux VM の起動に関する問題をトラブルシューティングするには、Azure シリアル コンソールまたは拡張機能ログ ファイルの /var/log/azure/Microsoft.Azure.Security.AzureDiskEncryptionForLinux/extension.log
で拡張機能ログを確認します。
シナリオ 1: initramfs イメージに ADE モジュールが見つからない
OS ディスクが論理ボリューム マネージャー (LVM) を使用していて、次のテキストのような警告メッセージが表示される場合、必要なモジュールは初期 RAM ディスク イメージに含まれません。
Warning: /dev/mapper/rootvg-rootlv does not exist
...
Entering emergency mode. Exit the shell to continue.
dracut:/#
この問題を解決するには、次の手順に従ってください。
バックアップから VM を復元 し、もう一度暗号化を試みます。
復元できない場合は、Azure CLI 拡張機能 az vm repair を使用して修復 VM を作成するか、 手動の方法 を使用して復旧 VM を作成します。 次に、障害のある VM の OS ディスクをその修復/復旧 VM にアタッチしてロック解除します。
chroot に入ったら、次のコマンドを実行します。
注
次のコマンドで、カーネルと拡張機能のバージョンを適宜置き換えます。
拡張機能の構成ディレクトリから initramfs scripts ディレクトリに次のファイルをコピーします。
sudo cp /var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-X.X.X.X/main/oscrypto/91adeOnline /usr/lib/dracut/modules.d/
initramfs イメージを再生成します。
sudo dracut -f -v /boot/initramfs-X.XX.X-XXX.XX.X.x86_64.img <kernel version>
VM を起動して、変更されたカーネルをテストします。 動作する場合は、残りの initramfs ファイルを再生成します。
失敗した OS ディスクを、修正プログラムが含まれているディスクと交換します。
拡張機能ログとシリアル コンソール ログを確認して、暗号化プロセスが正常に完了したことを確認します。
[AzureDiskEncryption] 3670: [Info] ======= MACHINE STATE: completed ======= [AzureDiskEncryption] 3670: [Info] Encryption succeeded for all volumes [AzureDiskEncryption] 3670: [Info] Executing: lvs --noheadings --nameprefixes --unquoted -o lv_name,vg_name,lv_kernel_major,lv_kernel_minor [AzureDiskEncryption] 3670: [Info] OS PV is encrypted [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sda [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sdb [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sdc [AzureDiskEncryption] 3670: [Info] Executing: pvs [AzureDiskEncryption] 3670: [Info] Found OS block device: /dev/mapper/osencrypt
initramfs ファイルを確認して、ADE モジュールが適切に追加されていることを確認します。
注
次のコマンドで、initramfs ファイル名を適宜置き換えます。
sudo lsinitrd /boot/initramfs-4.18.0-553.45.1.el8_10.x86_64.img | egrep -w "ade|adeOnline"
次のような出力が必要です。
-rwxr--r-- 1 root root 1126 Jan 15 2024 usr/lib/dracut/hooks/cmdline/30-parse-crypt-ade.sh -rwxr--r-- 1 root root 681 Jan 15 2024 usr/sbin/crypt-run-generator-ade
シナリオ 2: 暗号化が中断される
中断された暗号化をトラブルシューティングする手順は、プロセスが中断される場所によって異なります。 一部のシナリオでは、 バックアップからの復元 が唯一のオプションである場合があります。
シリアル コンソールのログでエラー メッセージがないか確認します。
拡張機能のデプロイの問題は、通常、Python エラーによって示されます。 例えば次が挙げられます。
[AzureDiskEncryption] 7293: [Info] Command /sbin/e2fsck -f -y /dev/korn-fromme failed with return code 8 stdout: Possibly non-existent device? stderr: e2fsck 1.46.5 (30-Dec-2021) /sbin/e2fsck: No such file or directory while trying to open /dev/korn-fromme [AzureDiskEncryption] 7293: [Error] check shrink fs failed with code 8 for /dev/korn-fromme [AzureDiskEncryption] 7293: [Info] Your file system may not have enough space to do the encryption or file System may not support resizing [AzureDiskEncryption] 7293: [Error] Failed to encrypt data volumes with error: Encryption failed for name:korn-fromme type:lvm fstype:ext4 mountpoint:/someone label: model: size:6442450944 majmin:None device_id:, stack trace: Traceback (most recent call last): File '/var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-1.4.0.7/main/handle.py', line 2172, in daemon_encrypt while not daemon_encrypt_data_volumes(encryption_marker=encryption_marker, File '/var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-1.4.0.7/main/handle.py', line 2438, in daemon_encrypt_data_volumes raise Exception(message) Exception: Encryption failed for name:korn-fromme type:lvm fstype:ext4 mountpoint:/someone label: model: size:6442450944 majmin:None device_id:
すべての拡張機能の 前提条件 が満たされていることを確認します。
必要に応じて、復旧 VM で作業し、障害が発生したディスクを分析します。 OS ディスクの場合は、次のことを確認します。
- 必要なパーティションが配置され、データは正常です。
-
OS LUKS ヘッダー ファイル (
osluksheader
) は、ブート パーティションの下に個別に格納されます。 ディスクが暗号化されていて、このファイルが見つからないか破損している場合は、作業用バックアップなしで VM を回復することはできません。 - initramfs には、必要な ADE モジュールが含まれています。 必要なモジュールがない場合は、 initram イメージ セクションに ADE モジュールが見つからない手順に 従います。
- BEK ボリュームには ADE キー ファイルが含まれています。
ADE キー ファイルがない場合は、テスト VM を作成し、障害のある VM を暗号化する元の暗号化設定を使用してそれを暗号化します (ボリュームの種類のデータ)。 暗号化が完了したら、次の手順に従います。
- テスト VM 上の BEK ボリューム内の ADE キー ファイルをコピーします。
- 障害のある VM を起動します。
- 緊急モードでは、 ADE キー ファイル と ヘッダー ファイルを識別します。
- ディスク レイアウト (LVM または未加工) に基づいて、 暗号化からディスクを手動で開きます。
- VM を起動します。
- ADE キー ファイルがまだ見つからない場合、BEK ボリュームがマウントされている場合は、ADE キー ファイルの内容を含む
/mnt/azure_bek_disk/LinuxPassPhraseFileName
という名前のファイルを手動で作成します。 - VM を再起動してください。
- VM を再デプロイします。
シナリオ 3: ブート パーティションに十分な領域がない (Ubuntu)
注
Ubuntu 24 以降では、イメージには少なくとも 1 GB の個別のブート パーティションが付属しています。
ADE には別のブート パーティションが必要です。 拡張機能のデプロイ中に、 /boot
を個別のパーティションとして作成し、元のファイルを復元します。 このプロセスの最後に、新しい初期 RAM ディスク ファイルが作成されます。 十分な領域がない場合、この手順は失敗します。 多くのバリエーションがあるため、このシナリオは複雑です。 OS ディスクで ADE が使用されている場合、 OS ディスクのサイズ変更 はサポートされていません。 現時点では、Ubuntu イメージのみがこのブート分割プロセスに該当する可能性があります。
この問題を回避するには、次のアクションを実行します。
- 未使用の古いカーネルを削除します。
- 必要なファイルのみが
/boot
下にあることを確認します。
シナリオ 4: VFAT カーネル モジュールが無効になっている
BEK ボリュームをマウントするには、VFAT カーネル モジュールを有効にする必要があります。 そうでない場合は、ADE キー ファイルを使用できないため、ディスクのロックが解除されません。 暗号化を続行するには、 VFAT モジュールを有効にします。
シナリオ 5: 必要なパッケージのインストールに失敗する
ADE 拡張機能は、必要なパッケージが既定でインストールされていない場合にインストールします。 このパッケージのインストールが失敗した場合、暗号化は失敗します。
パッケージのインストールエラーの原因を特定するには、次の手順に従います。
Azure シリアル コンソールから拡張機能ログを確認し、次のようなメッセージを見つけます。
[Info] Installing pre-requisites
すべてのパッケージが正常にインストールされていることを確認します。
Linux ディストリビューションに基づく必要なパッケージの完全な一覧については、「 パッケージ管理」を参照してください。
パッケージのインストールに問題がある場合は、失敗したパッケージとその理由を判断します。
障害のある VM がパッケージ リポジトリにアクセスできることを確認します。
障害のある VM に特定のネットワーク要件がある場合は、 分離されたネットワーク上の Azure Disk Encryption に移動します。
リポジトリの問題のトラブルシューティングの詳細については、「 Linux 用 yum および dnf パッケージ管理ツールの一般的な問題のトラブルシューティング 」および 「Ubuntu 上の APT に関する一般的な問題のトラブルシューティング」を参照してください。
シナリオ 6: GRUB 構成にパラメーターがない
暗号化プロセス中に、拡張機能は、 /etc/default/grub
ファイル内のカーネル オプションにいくつかのパラメーターを追加します。 これらのパラメーターは、ブート パーティションとルート パーティションの UUID ( rd.luks.ade.partuuid
と rd.luks.ade.bootuuid
) に関連しています。
パラメーターは UUID に正しく設定されている必要があります。 そうでない場合は、 オフラインのトラブルシューティング方法を 使用して、パラメーターを手動で追加します。
blkid
コマンドを使用して、chroot
環境で UUID を取得できます。
GRUB ファイルの再生成の詳細については、「 GRUB を再インストールし、GRUB 構成ファイルを手動で再生成する」を参照してください。
シナリオ 7: osluksheader ファイルが見つからないか破損している
LUKS は、暗号化されたパーティションの先頭にある LUKS ヘッダーに暗号化メタデータを格納します。 このヘッダーには、暗号、モード、ハッシュ関数、キー スロットなどの重要な情報が含まれています。 パーティションはマスター キーを使用して暗号化されます。
OS ディスクで ADE を使用すると、ヘッダーはブート パーティションにある osluksheader
という名前のファイルに格納されます。 このファイルが破損しているか見つからない場合は、バックアップからのみ復元できます。
オフラインのトラブルシューティング方法を使用して、影響を受けるディスクのブート パーティションをマウントし、バックアップから osluksheader
ファイルを配置します。
リソース
- Linux VM に対する Azure Disk Encryption
- Linux VM の Azure Disk Encryption のトラブルシューティング ガイド
- Linux 仮想マシンの Azure Disk Encryption に関する FAQ
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、 サポートリクエストを作成するか、 Azure コミュニティ サポートに問い合わせてください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。