Linux VM 的 Azure 磁碟加密疑難排解指南

這很重要

Azure 磁碟加密預定於 2028 年 9 月 15 日退休。 在此之前,您可以繼續使用 Azure 磁碟加密,不會中斷。 2028 年 9 月 15 日,啟用 ADE 的工作負載仍可繼續運行,但加密磁碟在虛擬機重啟後將無法解鎖,導致服務中斷。

對於新虛擬機,可以在主機上使用 加密 ,或考慮 機密虛擬機大小搭配作業系統磁碟加密 來處理機密運算工作負載。 所有啟用 ADE 的虛擬機(包括備份)必須在退休日前遷移至主機加密,以避免服務中斷。 詳情請參見「 從 Azure 磁碟加密遷移到主機加密 」。

適用於:✔️ Linux VM ✔️ 彈性規模集

本指南適用於組織採用 Azure 磁碟加密的 IT 專業人員、資訊安全性分析師和雲端系統管理員。 請使用本文來排查磁碟加密相關問題。

在採取上述步驟之前,先確保你嘗試加密的虛擬機屬於 支援的虛擬機大小與作業系統,並且符合所有先決條件:

針對 Linux OS 磁碟加密進行疑難排解

Linux 作業系統 (OS) 磁碟加密必須先將 OS 磁碟機取消掛接後,才能透過完整磁碟加密流程加以執行。 如果無法卸載磁碟機,很可能會出現「failed to unmount after …」的錯誤訊息。

此錯誤可能發生在你嘗試在環境與支援的庫存映像檔不同的虛擬機上進行作業系統磁碟加密時發生。 偏離受支援映像的情況,可能會干擾擴充功能卸載 OS 磁碟機的能力。 偏差的例子包括以下項目:

  • 自訂映像不再符合受支援的檔案系統或磁碟分割配置。
  • 在加密之前已於 OS 中安裝且執行諸如 SAP、MongoDB 或 Apache Cassandra 與 Docker 等大型應用程式時,則不支援這些應用程式。 Azure 磁碟加密 無法如預期安全關閉這些程序,以準備作業系統磁碟進行磁碟加密。 如果作業系統硬碟仍有活動程序持有未開啟的檔案位址,Azure 磁碟加密 無法卸載作業系統磁碟,導致作業系統磁碟無法加密。
  • 在啟用加密的前後短時間內執行的自訂指令碼,或在加密程序期間對 VM 進行的任何其他變更。 當 Azure Resource Manager 範本定義要同時執行的多個擴充功能,或當自訂指令碼擴充功能或其他動作同時對磁碟加密執行時,會發生此衝突。 序列化並隔離這些步驟或許能解決問題。
  • 安全增強型 Linux(SELinux)在啟用加密前並未被停用,因此卸載步驟會失敗。 SELinux 加密完成後可以重新啟用。
  • OS 磁碟會使用邏輯磁碟區管理員(Logical Volume Manager, LVM)配置。 雖然可提供有限的 LVM 資料磁碟支援,但不支援 LVM OS 磁碟。
  • 未符合最小記憶體需求 (OS 磁碟加密建議為 7 GB)。
  • 資料磁碟機會以遞迴方式掛接在 /mnt/ 目錄底下,或彼此之下掛接,例如 /mnt/data1、/mnt/data2、/data3 + /data3/data4。

更新 Ubuntu 14.04 LTS 的預設核心

Ubuntu 14.04 LTS 映像檔預設核心版本為 4.4。 此核心版本有一個已知問題:在作業系統加密過程中,Out of Memory (OOM) Killer 會錯誤地終止 dd 命令。 這個錯誤在最新的 Azure 調校 Linux 核心中已經修正。 為避免此錯誤,啟用映像加密前,請使用以下指令更新至 Azure 調校的 kernel 4.15 或更新版本:

sudo apt-get update
sudo apt-get install linux-azure
sudo reboot

虛擬機重新啟動進入新核心後,透過執行以下操作檢查新核心版本:

uname -a

更新 Azure 虛擬機器代理程式和延伸模組版本

Azure 磁碟加密 操作可能會在使用不受支援版本的 Azure 虛擬機器代理的虛擬機器映像上失敗。 在啟用加密之前,請先更新 Linux 映像檔,使用早於 2.2.38 的代理程式版本。 如需詳細資訊,請參閱如何在 VM 上更新 Azure Linux 代理程式,以及Azure 中虛擬機器代理程式的最低版本支援。

也需要正確的 Microsoft.Azure.Security.AzureDiskEncryption 或 Microsoft.Azure.Security.AzureDiskEncryptionForLinux 客體代理程式延伸模組版本。 當滿足 Azure 虛擬機器代理程式必要條件,且使用支援的虛擬機器代理程式版本時,平台會自動維護及更新延伸模組版本。

Microsoft.OSTCExtensions.AzureDiskEncryptionForLinux 擴充功能已淘汰,且不再受支援。

無法將 Linux 磁碟加密

在某些情況下,Linux 磁碟加密似乎卡在 作業系統磁碟加密開始 時,且 SSH 被停用。 在庫存圖庫圖片上,加密過程可能需要3到16小時完成。 如果你加入多太字節大小的資料磁碟,這個過程可能需要好幾天。

Linux OS 磁碟加密順序會暫時卸載 OS 磁碟機。 然後會對整個 OS 磁碟執行逐區塊加密,再於它處於已加密狀態時重新掛接。 Linux 磁碟加密不允許在加密過程中同時使用 VM。 VM 的效能特性在完成加密所需的時間上有顯著差異。 這些特性包括磁碟的大小以及儲存體帳戶是標準或進階 (SSD) 儲存體。

加密 OS 磁碟機時,VM 會進入服務狀態並停用 SSH,以避免中斷任何進行中的流程。 若要檢查加密狀態,請使用 Azure PowerShell Get-AzVmDiskEncryptionStatus 命令,並按一下 [ProgressMessage] 欄位。 ProgressMessage 會在資料和 OS 磁碟加密過程中回報一系列狀態:

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings :
ProgressMessage            : Transitioning

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Encryption succeeded for data volumes

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Provisioning succeeded

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : EncryptionInProgress
DataVolumesEncrypted       : EncryptionInProgress
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : OS disk encryption started

在大部分加密程序期間,ProgressMessage 會一直保持為已開始 OS 磁碟加密。 成功完成加密時,[ProgressMessage] 會傳回:

PS > Get-AzVMDiskEncryptionStatus -ResourceGroupName "MyResourceGroup" -VMName "myVM"

OsVolumeEncrypted          : Encrypted
DataVolumesEncrypted       : NotMounted
OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
ProgressMessage            : Encryption succeeded for all volumes

當這個訊息出現後,加密好的作業系統硬碟就可以使用,你可以再次使用虛擬機。

如果開機資訊、進度訊息或錯誤報告作業系統加密在此過程中失敗,請將虛擬機還原到加密前立即取得的快照或備份。 訊息的例子是本指南中描述的「無法卸載」錯誤。

在重新嘗試加密之前,請重新評估 VM 的特性,並確定已滿足所有必要條件。

針對防火牆後方的 Azure 磁碟加密進行疑難排解

請參閱隔離式網路上的磁碟加密

針對加密狀態進行疑難排解

即使你在虛擬機內解密,入口網站仍可能顯示某片磁碟已加密。 這個問題可能發生在你使用低階指令直接從虛擬機內部解密磁碟,而非使用較高層級的 Azure 磁碟加密 管理指令時。 較高階的指令則是從虛擬機內部解密磁碟。 在虛擬機之外,它們也會更新與虛擬機相關的重要平台層級加密設定與擴充功能設定。 如果這些設定沒有保持一致,平台就無法回報加密狀態或正確配置虛擬機。

若要停用 PowerShell 的 Azure 磁碟加密,請於 Remove-AzVMDiskEncryptionExtension 後接著使用 Disable-AzVMDiskEncryption。 若在停用加密之前執行 Remove-AzVMDiskEncryptionExtension 將會導致失敗。

若要停用 CLI 的 Azure 磁碟加密,請使用 az vm encryption disable。

下一步

在本文件中,您已深入了解 Azure 磁碟加密中的一些常見問題,以及如何進行疑難排解。 如需此服務和其功能的相關資訊,請參閱下列文章: