重要
Azure 磁盘加密计划于 2028 年 9 月 15 日停用。 在该日期之前,可以继续使用 Azure 磁盘加密,而不会中断。 2028 年 9 月 15 日,已启用 ADE 的工作负荷将继续运行,但 VM 重启后加密磁盘将无法解锁,从而导致服务中断。
使用 主机端加密 用于新 VM。 所有已启用 ADE 的 VM(包括备份)必须在停用日期之前迁移到主机上的加密,以避免服务中断。 有关详细信息,请参阅 从 Azure 磁盘加密迁移到主机加密 。
适用于:✔️ Linux VM ✔️ 灵活规模集
本指南面向使用 Azure 磁盘加密的组织中的 IT 专业人员、信息安全分析人员和云管理员。 使用本文排查与磁盘加密相关的问题。
在执行上述任一步骤之前,请先确保尝试加密的 VM 属于受支持的 VM 大小和操作系统,并且满足所有先决条件:
Linux OS 磁盘加密故障排除
在通过全盘加密过程运行 Linux 操作系统 (OS) 磁盘加密之前,Linux 操作系统 (OS) 磁盘加密必须卸载 OS 驱动器。 如果无法卸载驱动器,则可能会出现错误消息“在发生以下情况后,卸载失败...”。
当你尝试对运行环境已偏离受支持的库映像的 VM 进行 OS 磁盘加密时,可能会出现此错误。 与支持的映像不一致可能会影响扩展程序卸载操作系统驱动器的能力。 偏差的示例包括以下项:
- 自定义映像不再与受支持文件系统或分区方案匹配。
- 加密之前在 OS 中安装并运行 SAP、MongoDB、Apache Cassandra 和 Docker 等大型应用程序时,将不支持这些应用程序。 Azure 磁盘加密 无法按要求安全地关闭这些进程,以便为对操作系统驱动器进行磁盘加密做准备。 如果仍有活动进程将打开的文件句柄保存到 OS 驱动器,Azure 磁盘加密无法卸载 OS 驱动器,从而导致 OS 驱动器加密失败。
- 在启用加密的几乎同一时间内运行自定义脚本,或者在加密过程中在 VM 上进行其他任何更改。 如果 Azure 资源管理器模板定义了多个同时执行的扩展,或者在执行磁盘加密的同时运行自定义脚本扩展或其他操作,则可能会发生此冲突。 序列化和隔离此类步骤可能会解决问题。
- 启用加密之前,不会禁用安全性增强型 Linux(SELinux),因此卸载步骤会失败。 加密完成后,可以重新启用 SELinux。
- OS 磁盘使用逻辑卷管理器 (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。 此内核版本存在一个已知问题,即内存不足(OOM)杀手在 OS 加密过程中错误地终止 dd 命令。 最新Azure优化的 Linux 内核中修复了此 bug。 若要避免此错误,在映像上启用加密之前,请使用以下命令更新到Azure优化内核 4.15 或更高版本:
sudo apt-get update
sudo apt-get install linux-azure
sudo reboot
VM 重启到新内核后,通过运行检查新的内核版本:
uname -a
更新 Azure 虚拟机代理和扩展版本
Azure 磁盘加密操作可能会在使用不受支持的Azure虚拟机代理版本的虚拟机映像上失败。 在启用加密之前,使用低于 2.2.38 的代理版本更新 Linux 映像。 有关详细信息,请参阅如何在 VM 上更新 Azure Linux 代理和对 Azure 中虚拟机代理的最低版本支持。
还需要 Microsoft.Azure.Security.AzureDiskEncryption 或 Microsoft.Azure.Security.AzureDiskEncryptionForLinux 来宾代理扩展的正确版本。 当满足 Azure 虚拟机代理先决条件并使用受支持的虚拟机代理版本时,平台将自动维护和更新扩展版本。
Microsoft。OSTCExtensions.AzureDiskEncryptionForLinux 扩展已弃用,不再受支持。
无法加密 Linux 磁盘
在某些情况下,Linux 磁盘加密似乎停滞在 OS 磁盘加密启动 ,SSH 处于禁用状态。 对图库中的标准映像进行加密可能需要 3 到 16 小时才能完成。 如果添加多字节大小的数据磁盘,此过程可能需要几天时间。
Linux OS 磁盘加密序列暂时卸载 OS 驱动器。 然后,它将对整个 OS 磁盘进行逐块加密,然后再将其重新安装为加密状态。 Linux 磁盘加密不允许在加密的同时并发使用 VM。 VM 的性能特点会在完成加密所需的时间上产生显著差异。 这些特点包括磁盘大小以及存储帐户为标准还是高级 (SSD) 存储。
加密 OS 驱动器时,VM 会进入维护状态,同时会禁用 SSH,以防止对进行中的进程造成任何干扰。 若要检查加密状态,请使用 Azure PowerShell Get-AzVmDiskEncryptionStatus 命令,然后检查 ProgressMessage 字段。 数据和 OS 磁盘进行加密时,ProgressMessage 将报告一系列状态:
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
此消息可用后,加密的 OS 驱动器可供使用,可以再次使用该 VM。
如果启动信息、进度消息或错误报告 OS 加密在此过程中失败,请立即将 VM 还原到加密之前拍摄的快照或备份。 消息示例之一是本指南中所述的“无法卸载”错误。
在再次尝试加密之前,请重新评估 VM 的特征,并确保满足所有先决条件。
防火墙保护下的 Azure 磁盘加密故障排除
请参阅隔离网络上的磁盘加密
加密状态故障排除
即使在 VM 中取消加密磁盘后,门户也可能显示已加密的磁盘。 使用低级别命令直接从 VM 内部取消加密磁盘,而不是使用更高级别的Azure 磁盘加密管理命令时,可能会出现此问题。 更高级别的命令会在虚拟机内部对磁盘进行解密。 在 VM 外部,它们还会更新与 VM 关联的重要平台级加密设置和扩展设置。 如果这些设置未保持一致,则平台无法报告加密状态或正确预配 VM。
若要使用 PowerShell 禁用 Azure 磁盘加密,请使用 Disable-AzVMDiskEncryption,然后使用 Remove-AzVMDiskEncryptionExtension。 禁用加密之前,运行 Remove-AzVMDiskEncryptionExtension 会失败。
若要使用 CLI 禁用 Azure 磁盘加密,请使用 az vm encryption disable。
后续步骤
本文档已详细描述有关 Azure 磁盘加密的一些常见问题和解决这些问题的方法。 有关此服务及其功能的详细信息,请参阅以下文章: