次の方法で共有


Azure Disk Encryption を有効にした後の Linux VM の起動エラーのトラブルシューティング

適用対象: ✔️ 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:/# 

この問題を解決するには、次の手順に従ってください。

  1. バックアップから VM を復元 し、もう一度暗号化を試みます。

  2. 復元できない場合は、Azure CLI 拡張機能 az vm repair を使用して修復 VM を作成するか、 手動の方法 を使用して復旧 VM を作成します。 次に、障害のある VM の OS ディスクをその修復/復旧 VM にアタッチしてロック解除します。

  3. chroot に入ったら、次のコマンドを実行します。

    次のコマンドで、カーネルと拡張機能のバージョンを適宜置き換えます。

    1. 拡張機能の構成ディレクトリから initramfs scripts ディレクトリに次のファイルをコピーします。

      sudo cp /var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-X.X.X.X/main/oscrypto/91adeOnline /usr/lib/dracut/modules.d/
      
    2. initramfs イメージを再生成します。

      sudo dracut -f -v /boot/initramfs-X.XX.X-XXX.XX.X.x86_64.img <kernel version>
      
    3. VM を起動して、変更されたカーネルをテストします。 動作する場合は、残りの initramfs ファイルを再生成します。

  4. 失敗した OS ディスクを、修正プログラムが含まれているディスクと交換します。

  5. 拡張機能ログとシリアル コンソール ログを確認して、暗号化プロセスが正常に完了したことを確認します。

    [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
    
  6. 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: 暗号化が中断される

中断された暗号化をトラブルシューティングする手順は、プロセスが中断される場所によって異なります。 一部のシナリオでは、 バックアップからの復元 が唯一のオプションである場合があります。

  1. シリアル コンソールのログでエラー メッセージがないか確認します。

    拡張機能のデプロイの問題は、通常、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:
    
  2. すべての拡張機能の 前提条件 が満たされていることを確認します。

  3. 必要に応じて、復旧 VM で作業し、障害が発生したディスクを分析します。 OS ディスクの場合は、次のことを確認します。

  4. ADE キー ファイルがない場合は、テスト VM を作成し、障害のある VM を暗号化する元の暗号化設定を使用してそれを暗号化します (ボリュームの種類のデータ)。 暗号化が完了したら、次の手順に従います。

    1. テスト VM 上の BEK ボリューム内の ADE キー ファイルをコピーします。
    2. 障害のある VM を起動します。
    3. 緊急モードでは、 ADE キー ファイルヘッダー ファイルを識別します
    4. ディスク レイアウト (LVM または未加工) に基づいて、 暗号化からディスクを手動で開きます
    5. VM を起動します。
    6. ADE キー ファイルがまだ見つからない場合、BEK ボリュームがマウントされている場合は、ADE キー ファイルの内容を含む /mnt/azure_bek_disk/LinuxPassPhraseFileName という名前のファイルを手動で作成します。
    7. VM を再起動してください。
    8. VM を再デプロイします。

シナリオ 3: ブート パーティションに十分な領域がない (Ubuntu)

Ubuntu 24 以降では、イメージには少なくとも 1 GB の個別のブート パーティションが付属しています。

ADE には別のブート パーティションが必要です。 拡張機能のデプロイ中に、 /boot を個別のパーティションとして作成し、元のファイルを復元します。 このプロセスの最後に、新しい初期 RAM ディスク ファイルが作成されます。 十分な領域がない場合、この手順は失敗します。 多くのバリエーションがあるため、このシナリオは複雑です。 OS ディスクで ADE が使用されている場合、 OS ディスクのサイズ変更 はサポートされていません。 現時点では、Ubuntu イメージのみがこのブート分割プロセスに該当する可能性があります。

この問題を回避するには、次のアクションを実行します。

  1. 未使用の古いカーネルを削除します。
  2. 必要なファイルのみが /boot下にあることを確認します。

シナリオ 4: VFAT カーネル モジュールが無効になっている

BEK ボリュームをマウントするには、VFAT カーネル モジュールを有効にする必要があります。 そうでない場合は、ADE キー ファイルを使用できないため、ディスクのロックが解除されません。 暗号化を続行するには、 VFAT モジュールを有効にします

シナリオ 5: 必要なパッケージのインストールに失敗する

ADE 拡張機能は、必要なパッケージが既定でインストールされていない場合にインストールします。 このパッケージのインストールが失敗した場合、暗号化は失敗します。

パッケージのインストールエラーの原因を特定するには、次の手順に従います。

  1. Azure シリアル コンソールから拡張機能ログを確認し、次のようなメッセージを見つけます。

    [Info] Installing pre-requisites
    
  2. すべてのパッケージが正常にインストールされていることを確認します。

    Linux ディストリビューションに基づく必要なパッケージの完全な一覧については、「 パッケージ管理」を参照してください。

  3. パッケージのインストールに問題がある場合は、失敗したパッケージとその理由を判断します。

  4. 障害のある VM がパッケージ リポジトリにアクセスできることを確認します。

    障害のある VM に特定のネットワーク要件がある場合は、 分離されたネットワーク上の Azure Disk Encryption に移動します。

    リポジトリの問題のトラブルシューティングの詳細については、「 Linux 用 yum および dnf パッケージ管理ツールの一般的な問題のトラブルシューティング 」および 「Ubuntu 上の APT に関する一般的な問題のトラブルシューティング」を参照してください。

シナリオ 6: GRUB 構成にパラメーターがない

暗号化プロセス中に、拡張機能は、 /etc/default/grub ファイル内のカーネル オプションにいくつかのパラメーターを追加します。 これらのパラメーターは、ブート パーティションとルート パーティションの UUID ( rd.luks.ade.partuuidrd.luks.ade.bootuuid) に関連しています。

パラメーターは UUID に正しく設定されている必要があります。 そうでない場合は、 オフラインのトラブルシューティング方法を 使用して、パラメーターを手動で追加します。 blkid コマンドを使用して、chroot環境で UUID を取得できます。

GRUB ファイルの再生成の詳細については、「 GRUB を再インストールし、GRUB 構成ファイルを手動で再生成する」を参照してください。

シナリオ 7: osluksheader ファイルが見つからないか破損している

LUKS は、暗号化されたパーティションの先頭にある LUKS ヘッダーに暗号化メタデータを格納します。 このヘッダーには、暗号、モード、ハッシュ関数、キー スロットなどの重要な情報が含まれています。 パーティションはマスター キーを使用して暗号化されます。

OS ディスクで ADE を使用すると、ヘッダーはブート パーティションにある osluksheader という名前のファイルに格納されます。 このファイルが破損しているか見つからない場合は、バックアップからのみ復元できます。 オフラインのトラブルシューティング方法を使用して、影響を受けるディスクのブート パーティションをマウントし、バックアップから osluksheader ファイルを配置します。

リソース

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、 サポートリクエストを作成するか、 Azure コミュニティ サポートに問い合わせてください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。