无法在 Windows 中扩展加密的 OS 卷

本文介绍了一个问题,该问题阻止你在某些已使用 Azure 磁盘加密 (ADE) 加密的 Azure VM 上轻松扩展 OS 卷。 它还介绍了一种解决方法,允许根据需要扩展 OS 卷。

症状

Azure VM 中 Windows (C:) 分区的“扩展卷...”选项灰显。 系统保留分区也会立即显示在 Windows 分区的右侧。 系统保留分区的位置似乎阻止 C 驱动器扩展到磁盘上任何未分配的空间。

屏幕截图显示了 Windows 卷的快捷菜单上的“扩展卷”选项灰显的磁盘管理。

原因

在默认 Windows 安装期间,系统会在磁盘 0 上创建系统保留分区。 此分区包含启动管理器代码和启动配置数据库,并为 BitLocker 所需的启动文件保留空间。 通常,系统保留分区分配给分区 1,Windows 卷分配给分区 2。 这种默认排列方式(如下所示)允许根据需要将 C: 驱动器扩展到相邻的未分配空间。

磁盘管理中的磁盘 0 的屏幕截图,其中 Windows 分区位于中间,右侧是未分配的空间旁边。

但是,客户可能会基于自定义映像创建 VM,这些映像将 Windows (C:) 卷分配给分区 1,并且未定义系统保留分区。 如果 Azure 磁盘加密稍后应用于 OS 磁盘,则必须将新的系统保留分区添加到磁盘以支持 BitLocker。 在这种情况下,新创建的“系统保留”分区分配给分区 2,该分区的位置似乎会阻止分区 1(OS 卷)扩展到未分配的磁盘空间。

解决方案

若要解决此问题,需要执行以下步骤:

  1. 在 Azure 门户中将更大的磁盘 SKU 分配给 OS 磁盘
  2. 将系统保留卷扩展到未分配的空间
  3. 在剩余未分配的空间中创建新的启动卷
  4. 删除系统保留卷并扩展 Windows 卷

在 Azure 门户中将更大的磁盘 SKU 分配给 OS 磁盘

  1. 在Azure 门户中,停止要扩展其 OS 磁盘的 VM。
  2. 导航到 OS 磁盘的属性页。 采取快照来备份磁盘。
  3. 在 OS 磁盘的属性页上,单击左侧菜单上的“ 大小 + 性能 ”。
  4. “大小 + 性能 ”窗口中,选择提供足够存储空间的较大磁盘 SKU,然后单击“ 调整大小”。
  5. 再次启动 VM。

将系统保留卷扩展到未分配的空间

  1. 登录到 VM。 在“磁盘管理”中,将驱动器号分配给“系统保留”分区。 例如,可以为其分配驱动器号 E。

    磁盘管理中“系统保留卷”快捷菜单的屏幕截图,其中选择了“更改驱动器号和路径”。

    “添加驱动器号或路径”对话框的屏幕截图,其中将字母 E 分配给系统保留卷。

  2. 右键单击“ 系统保留 ”分区,然后选择“ 扩展卷...”。 选择要扩展的空间量时, 请指定至少比允许的最大空间少 200 MB 的值 , (为稍后) 创建的启动卷留出空间。

    正在为系统保留卷扩展的“扩展卷”选项的屏幕截图。

    扩展卷向导中“选择磁盘”页的屏幕截图。

    在最后一个步骤之后,磁盘分区布局将类似于以下示例:

    磁盘管理中磁盘 0 的屏幕截图,其中只有 201 MB 未分配。

在剩余未分配的空间中创建新的启动卷

  1. 在剩余未分配的空间中创建一个新卷,并为其分配驱动器号。 请记下此驱动器号,因为在下一步中将使用它。

    从未分配的空间中选择的新简单卷选项的屏幕截图。

  2. 打开提升的命令提示符并运行以下命令,在刚刚创建的最后一个卷中创建一组新的启动文件。

    bcdboot C:\Windows /s [drive letter of newest volume]:
    

    例如,如果创建的最后一个卷 (磁盘管理中最右边的卷,从剩余的未分配空间) 创建的卷分配了 F: 驱动器,则可以在命令提示符处键入以下内容:

    bcdboot C:\Windows /s F:
    
  3. 打开“Regedit”,选择“HKEY_LOCAL_MACHINE\BCD00000000”,然后从“文件”菜单中选择“卸载 Hive”。

    在注册表编辑器中选择的文件夹和从“文件”菜单中选择的“卸载 Hive”选项的屏幕截图。

  4. 使用以下命令替换位于 (创建的最后一个卷中的 \boot\bcd 文件,即磁盘管理中最右侧的驱动器,该驱动器从上次未分配的空间) 与系统保留卷的 \boot 文件夹中的当前 BCD 文件一起创建。

    Copy [Drive letter of System Reserved volume]:\boot\bcd [Drive letter of newest volume]:\boot\bcd
    

    例如,如果系统预留卷的驱动器号为 E,而创建的最新 (最右边的) 卷为 F,则键入以下命令:

    Copy E:\boot\bcd F:\boot\bcd
    

    需要执行此步骤,因为在步骤 2 中创建的 BCD 文件不包含特定于 Azure 的配置设置。 (请注意,作为执行此复制操作的替代方法,可以按照此处找到的“设置启动配置数据 [BCD] 设置”说明进行操作: 验证 VM)

  5. 运行以下命令,开始将 Windows 启动管理器从系统保留分区更改为最新 (最右侧) 分区的过程:

    bcdedit /store [Newest drive letter]:\boot\bcd /enum /v
    

    例如,如果分区驱动器号) 最新 (最右侧为 F,则键入以下命令:

    bcdedit /store F:\boot\bcd /enum /v
    

    你将看到类似于以下示例的输出:

    Windows Boot Manager
    --------------------
    identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}  <<<<<
    device                  partition=E:
    description             Windows Boot Manager
    locale                  en-us
    inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
    displayorder            {05d0826e-19a2-4380-968f-4b45f971812d}
    toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
    timeout                 30
    …………..
    
  6. 使用最后一个输出中的“标识符”值运行以下命令,并完成将 Windows 启动管理器移动到最新分区的过程:

    bcdedit /store [Newest drive letter]:\boot\bcd /set [Identifier] device partition=[Newest drive letter]:
    

    例如,如果最新的驱动器号为 F,并且标识符与上述输出中相同,则键入以下内容:

    bcdedit /store F:\boot\bcd /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=F:
    
  7. 在“磁盘管理”中,右键单击最右侧的卷 () 创建的最后一个卷,然后选择“ 将分区标记为活动”。 单击"是"以确认。

  8. 重新启动 VM。

删除系统保留卷并扩展 Windows 卷

  1. 再次登录到 VM。 在“磁盘管理”中,删除旧的“系统保留”分区,并单击“是”进行确认。

    正在为磁盘管理中的旧系统保留分区选择“删除卷”选项的屏幕截图。

  2. 最后,根据需要使用现在相邻的未分配空间扩展 C 驱动器。

    磁盘管理中 Windows 卷的快捷菜单上的“扩展卷”的屏幕截图。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。