你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Microsoft Dev Box 中配置休眠

本文介绍如何在 Microsoft Dev Box 中启用和禁用休眠。 可在开发箱映像和开发箱定义级别控制休眠。

在工作日结束时休眠开发箱有助于节省大量虚拟机 (VM) 成本。 它消除了开发人员关闭其开发箱的需求,避免了打开的窗口和应用程序的丢失。

随着 Dev Box 休眠(预览版)的引入,你可以在新的开发箱中启用此功能并休眠和恢复这些功能。 此功能提供了一种在维护工作环境的同时管理开发箱的便捷方法。

启用休眠有两个步骤:

  1. 在开发箱映像上启用休眠
  2. 在开发框定义上启用休眠

重要

开发箱休眠目前为预览版。 有关预览版状态的详细信息,请参阅 Microsoft Azure 预览版的补充使用条款。 该文档定义了适用于测试版、预览版或尚未正式发布的 Azure 功能的法律术语。

已启用休眠的映像的注意事项

在开发箱中启用休眠之前,请查看以下有关已启用休眠的映像的注意事项。

  • 目前,有两个 SKU 支持休眠:8 和 16 vCPU SKU。 目前,32 vCPU SKU 不支持休眠。

  • 只能在使用启用休眠的开发箱定义创建的新开发箱中启用休眠。 无法在现有开发箱上启用休眠。

  • 只能使用 Microsoft 开发人员门户、Azure CLI、PowerShell、SDK 和 REST API 来休眠开发箱。 不支持从 Windows 中的开发箱中休眠。

  • 如果使用 Azure 市场映像,建议使用 Visual Studio 进行开发箱映像。

  • Windows 11 Enterprise CloudPC + 操作系统优化映像包含优化的电源设置,并且它们不能在休眠状态下使用。

  • 启用休眠后,无法禁用该开发箱中的功能。 但是,可以在开发箱定义上禁用休眠支持,以便将来创建的开发箱没有休眠。

  • 若要启用休眠,需要在 Windows OS 中启用嵌套虚拟化。 如果未在 DevBox 映像中启用“虚拟机平台”功能,则如果选择启用休眠,DevBox 会自动为你启用嵌套虚拟化。

  • 休眠不支持受虚拟机监控程序保护的代码完整性 (HVCI)/内存完整性功能。 开发箱会自动禁用此功能。

  • 自动停止计划将使在关联的 Dev Box 定义上启用休眠后创建的 Dev Box 休眠。 在 Dev Box 定义上启用休眠之前创建的 Dev Box 将继续关闭。

    注意

    自动将开发箱计划为休眠的功能以公共预览版的形式提供。 可以在 Microsoft Dev Box - 自动休眠安排预览版中阅读有关公告的详细信息。

与休眠不兼容的设置

已知以下设置与休眠不兼容,在休眠方案中不受支持:

  • 内存完整性/虚拟机监控程序代码完整性

    要禁用内存完整性/虚拟机监控程序代码完整性:

    1. 在 Windows“开始”菜单中,找到并打开“Windows 安全性”
    2. 转到“设备安全性”
    3. 在“核心隔离”下,选择“核心隔离”详细信息
    4. 在“内存完整性”下,将开关设置为“关闭”

    更改此设置后,需要重新启动计算机。

  • 不启用嵌套虚拟化的基于来宾虚拟安全模式的功能

    要启用嵌套虚拟化:

    1. 在“开始”菜单中,搜索“打开或关闭 Windows 功能”
    2. 在对话框中,选中“虚拟机平台”复选框。
    3. 选择“确定”保存设置变更。

在开发箱映像上启用休眠

如果计划从 Azure 计算库使用自定义映像,则需要在创建新映像时启用休眠功能。 无法为现有映像启用休眠。

注意

Microsoft Dev Box 在 Azure 市场中提供的 Visual Studio 和 Microsoft 365 映像已配置为支持休眠。 无需在这些映像上启用休眠,即可使用这些映像。

若要启用休眠功能,请在创建映像时将 IsHibernateSupported 标志 true 设置为:

az sig image-definition create 
--resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> --location <location> 
--publisher <publisherName> --offer <offerName> --sku <skuName> --os-type windows --os-state Generalized 
--features "IsHibernateSupported=true SecurityType=TrustedLaunch" --hyper-v-generation V2 

如果使用 sysprep 和通用 VM 创建自定义映像,请使用 Azure CLI 捕获映像:

az sig image-version create 
--resource-group <resourceGroupName> --gallery-name <galleryName> --gallery-image-definition <imageName> 
--gallery-image-version <versionNumber> --virtual-machine <VMResourceId>

有关创建自定义映像的详细信息,请参阅使用 Azure VM 映像生成器配置开发箱

在开发箱定义上启用休眠

在 Microsoft Dev Box 中,当定义使用已启用休眠的自定义或 Azure 市场映像时,可以为新的开发箱定义启用休眠。 还可以更新使用已启用休眠的自定义或 Azure 市场映像的现有开发箱定义。

在开发箱池中创建的所有新开发箱(使用已启用休眠的开发箱定义)都可以休眠和关闭。 如果池具有在启用休眠之前创建的开发箱,则这些开发箱将继续支持关闭。

Microsoft Dev Box 会验证映像是否支持休眠。 如果无法使用映像成功启用休眠,开发箱定义可能会验证失败。

可以使用 Azure 门户或 Azure CLI 在开发箱定义上启用休眠。

在 Azure 门户中启用休眠

  1. 登录 Azure 门户

  2. 在搜索框中,输入“开发人员中心”。 在结果列表中,选择“开发人员中心”。

  3. 打开包含你要更新的开发箱定义的开发人员中心,然后选择“开发箱定义”

    显示开发人员中心概述页和开发箱定义的菜单选项的屏幕截图。

  4. 选择要更新的开发箱定义,然后选择编辑(铅笔)按钮。

    现有开发箱定义列表和编辑(铅笔)按钮的屏幕截图。

  5. 在“编辑开发箱定义”页上,选中“启用休眠”复选框。

    用于编辑开发箱定义的页面屏幕截图,其中已选中“启用休眠”。

  6. 选择“保存”。

使用 Azure CLI 启用休眠

若要从 Azure CLI 为开发箱定义启用休眠,请在创建映像时将 hibernateSupport 标志设置为 Enabled

az devcenter admin devbox-definition update 
--dev-box-definition-name <devBoxDefinitionName> -–dev-center-name <devCenterName> --resource-group <resourceGroupName> –-hibernateSupport Enabled

故障排除

如果你在 Dev Box 定义上启用了休眠功能,但定义报告无法启用休眠功能:

  • 建议直接使用 Visual Studio for Dev Box 市场映像,或将其用作基本映像以生成自定义映像。
  • Windows + 操作系统优化映像包含优化的电源设置,并且它们不能在休眠状态下使用。
  • 如果使用自定义 Azure Compute Gallery 映像,请先在 Azure Compute Gallery 映像上启用休眠,然后再在 Dev Box 定义上启用休眠。
  • 如果在图库图像上启用休眠功能后仍无法在定义上启用休眠功能,那么你的自定义图像可能具有阻止休眠的 Windows 配置。

有关详细信息,请参阅设置与休眠不兼容

在开发箱定义上禁用休眠

如果在池上启用休眠后预配新 VM 时遇到问题,可以在开发箱定义上禁用休眠。 如果要将设置还原为仅关闭开发箱,还可以禁用休眠。

可以使用 Azure 门户或 CLI 在开发箱定义上禁用休眠。

在 Azure 门户中禁用休眠

  1. 登录 Azure 门户

  2. 在搜索框中,输入“开发人员中心”。 在结果列表中,选择“开发人员中心”。

  3. 打开包含你要更新的开发箱定义的开发人员中心,然后选择“开发箱定义”

  4. 选择要更新的开发箱定义,然后选择编辑(铅笔)按钮。

  5. 在“编辑开发箱定义”页上,清除“启用休眠”复选框。

  6. 选择“保存”。

使用 Azure CLI 禁用休眠

若要从 Azure CLI 为开发箱定义禁用休眠,请在创建映像时将 hibernateSupport 标志设置为 Disabled

az devcenter admin devbox-definition update 
--dev-box-definition-name <devBoxDefinitionName> -–dev-center-name <devCenterName> --resource-group <resourceGroupName> –-hibernateSupport Disabled