本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使按需或预留 Windows 实例休眠
当您使实例休眠时,Amazon EC2 会向操作系统发出信号来执行休眠 (suspend-to-disk)。休眠状态会将实例内存 (RAM) 中的内容保存到 Amazon Elastic Block Store (Amazon EBS) 根卷中。Amazon EC2 会保留实例的 EBS 根卷和任何附加的 EBS 数据卷。在启动实例时:
-
EBS 根卷会恢复为之前的状态
-
会重新加载 RAM 内容
-
并恢复实例上之前运行的进程
-
之前附加的数据卷会重新附加,实例也会保留其实例 ID
只有当实例已启用休眠并且满足休眠先决条件,您才可以使该实例休眠。
如果实例或应用程序在引导和进行内存占用以开始发挥全部生产功能时所需的时间较长,您可以使用休眠来预热实例。要预热实例,您需要执行以下操作:
-
启动实例时启用休眠。
-
将其设置为所需的状态。
-
使实例休眠,并根据需要随时恢复到休眠前的状态。
在休眠实例处于 stopped
状态时,您不需要为其实例使用付费。当实例处于 stopping
状态时,此时 RAM 的内容会转移到 EBS 根卷,会向您收取实例使用费用。(这不同于您停止一个实例而不使其休眠。) 您不需要支付数据传输费用。但会向您收取任何 EBS 卷的存储费用,包括存储 RAM 内容的费用。
如果您不再需要某个实例,可以随时终止它,包括当实例处于 stopped
(已休眠)状态时。有关更多信息,请参阅终止实例。
有关在 Linux 实例上使用休眠的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的使 Linux 实例休眠。
有关将 Spot 实例 休眠的信息,请参阅 休眠中断的 Spot 实例。
休眠概述
下图显示了休眠过程的基本概述。

当您使正在运行的实例休眠时,将出现以下情况:
-
当您启动休眠时,实例将移入
stopping
状态。Amazon EC2 指示操作系统执行休眠 (suspend-to-disk)。休眠会冻结所有进程、将 RAM 中的内容保存到 EBS 根卷,然后执行常规关闭。 -
关闭完成后,实例将进入
stopped
状态。 -
所有 EBS 卷保持附加到实例,而且其数据将保留下来,包括已保存的 RAM 内容。
-
所有 Amazon EC2 实例存储卷都会继续保持连接到实例,但实例存储卷上的数据将会丢失。
-
大多数情况下,实例会在启动时迁移到新的底层主机。当您停止并启动实例时,也会发生此类情况。
-
当您启动实例时,实例将启动,操作系统从 EBS 根卷读取 RAM 内容,然后再对进程解除冻结以恢复其状态。
-
实例会保留其私有 IPv4 地址和任何 IPv6 地址。启动实例时,实例将继续保留其私有 IPv4 地址和任何 IPv6 地址。
-
Amazon EC2 释放公有 IPv4 地址。启动实例时,Amazon EC2 会为实例分配一个新的公有 IPv4 地址。
-
实例会保留其关联的弹性 IP 地址。您需要为与已休眠实例关联的所有弹性 IP 地址付费。借助 EC2-Classic,弹性 IP 地址会在您将实例休眠时取消与它的关联。有关更多信息,请参阅 EC2-Classic。
-
当您使 ClassicLink 实例休眠时,它会与所链接的 VPC 取消链接。您必须在启动之后将实例再次链接到 VPC。有关更多信息,请参阅 ClassicLink。
有关休眠与重启、停止和终止之间的区别,请参阅重启、停止、休眠和终止之间的区别。
休眠先决条件
要使 个按需实例 或 Reserved Instance 休眠,必须满足以下先决条件:
-
支持的实例系列
-
C3、C4、C5
-
I3
-
M3、M4、M5、M5a、M5ad
-
R3、R4、R5、R5a、R5ad
-
T2、T3、T3a*
* 对于休眠状态,我们建议您使用内存至少为 1 GB 的 T3 或 T3a 实例。
-
-
实例 RAM 大小 - 必须最大 16 GB。
-
实例大小 - 裸机实例不支持。
-
支持的 AMI(必须是支持休眠的 HVM AMI):
-
Windows Server 2012 AMI 发布了 2019.09.11 版或更高版本。
-
Windows Server 2012 R2 AMI 发布了 2019.09.11 版或更高版本。
-
Windows Server 2016 AMI 发布了 2019.09.11 版或更高版本。
-
Windows Server 2019 AMI 发布了 2019.09.11 版或更高版本。
有关 Linux 支持的 AMI 的信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的休眠先决条件。
-
-
根卷类型 - 必须是 EBS 卷,而不能是实例存储卷。
-
支持的 EBS 卷类型 - 通用型 SSD (
gp2
和gp3
) 或 预配置 IOPS SSD (io1
和io2
)。如果选择 预配置 IOPS SSD 卷类型,为了实现休眠状态的最佳性能,您必须为 EBS 卷预置合适的 IOPS。有关更多信息,请参阅 Amazon EBS 卷类型。 -
EBS 根卷大小 - 必须足够大,以存储 RAM 内容并满足您的预期使用量,例如,操作系统或应用程序。如果您启用休眠,则启动时在根卷上分配空间以存储 RAM。
-
EBS 根卷加密 - 要使用休眠,必须加密根卷以确保在休眠时保护内存中的敏感内容。将 RAM 数据移动到 EBS 根卷时,它始终加密。根卷的加密在实例启动时实施。可以使用以下三个选项之一,以确保根卷是加密的 EBS 卷:
-
EBS“单步”加密:您可以从未加密的 AMI 中启动 EBS 支持的加密 EC2 实例,并且还可以同时启用休眠。有关更多信息,请参阅 将加密与 EBS 支持的 AMI 结合使用。
-
EBS 默认加密:您可以启用 EBS 默认加密,以确保对在您的 AWS 账户中创建的所有新 EBS 卷进行加密。这样,您就可以为实例启用休眠,而无需在实例启动时指定加密意图。有关更多信息,请参阅默认加密。
-
加密的 AMI:您可以使用加密的 AMI 启动实例以启用 EBS 加密。如果 AMI 没有加密的根快照,则可以将其复制到新的 AMI 并请求加密。有关更多信息,请参阅 在复制过程中将未加密映像加密 和 复制 AMI。
-
-
在启动时启用休眠 - 您不能在现有实例(正在运行或已停止)上启用休眠。有关更多信息,请参阅为实例启用休眠。
-
购买选项 - 此功能仅面向按需实例和预留实例提供。它不适用于Spot 实例。有关更多信息,请参阅休眠中断的 Spot 实例。
限制
-
当您休眠某个实例时,任何实例存储卷上的数据都会丢失。
-
您不能将具有超过 16 GB 的 RAM 的实例休眠。
-
如果您从已休眠或已启用休眠的实例创建快照或 AMI,则可能无法连接到该实例。
-
您不能更改已启用休眠的实例的实例类型或大小。
-
您不能使位于 Auto Scaling 组中或者由 Amazon ECS 使用的实例休眠。如果实例位于 Auto Scaling 组中并且您尝试使该实例休眠,则 Amazon EC2 Auto Scaling 服务会将已停止的实例标记为运行状况不佳,可能会终止它并启动替换实例。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南 中的 Auto Scaling 实例的运行状况检查。
-
您不能使配置为在 UEFI 模式下启动的实例休眠。
-
如果您休眠启动到 容量预留 的实例,容量预留 不能确保休眠的实例在尝试启动后可以恢复。
-
我们支持的实例持续休眠时间不超过 60 天。要保留实例超过 60 天,您必须启动已休眠的实例,停止该实例,然后启动它。
-
我们不断通过升级和安全补丁更新平台,这可能会与现有已休眠的实例冲突。我们会通知您有关需要启动已休眠实例的关键更新,这样我们才会执行关闭或重启操作以应用必需的升级和安全补丁。
为实例启用休眠
要使实例休眠,必须先为其启用休眠。要启用休眠,您必须在启动实例时启用它。
启动实例后,无法为实例启用或禁用休眠。
休眠实例
当实例已启用休眠并且满足休眠先决条件时,您才可以使该实例休眠。如果无法成功使实例休眠,则会进行正常关闭。
启动已休眠的实例
按照启动已停止实例的相同方式,启动已休眠的实例。
休眠故障排除
使用此信息帮助您诊断和修复在使实例休眠时可能遇到的问题。
在启动后无法立即休眠
如果您在实例启动之后过快地尝试使实例休眠,则会收到错误。
在启动之后,您必须等待大约五分钟,然后才能休眠。
从 stopping
转变为 stopped
用时太长,内存状态在启动后无法恢复
如果正在进入休眠的实例从 stopping
状态转变为 stopped
状态用时过长,并且在启动之后内存状态未恢复,则这可能表明未正确配置休眠。
Windows Server 2016 及更高版本
检查 EC2 Launch 日志,查找与休眠相关的消息。要访问 EC2 Launch 日志,请连接到实例并在文本编辑器中打开 C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
文件。
默认情况下,Windows 会隐藏 C:\ProgramData
下的文件和文件夹。要查看 EC2 Launch 目录和文件,必须在 Windows 资源管理器中输入路径,或者更改文件夹属性以显示隐藏的文件和文件夹。
查找休眠的日志行。如果日志行指示出现故障或者缺少日志行,则很有可能在启动时配置休眠失败。
例如,以下消息指示休眠配置失败:Message: Failed to enable
hibernation.
如果日志行包含 HibernationEnabled: true
,则已成功配置休眠。
Windows Server 2012 R2 和早期版本
检查 EC2 配置日志,查找与休眠相关的消息。要访问 EC2 配置日志,请连接到实例并在文本编辑器中打开 C:\Program
Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
文件。从 SetHibernateOnSleep
中查找日志行。如果日志行指示出现故障或者缺少日志行,则很有可能在启动时配置休眠失败。
例如,以下消息指示实例根卷不够大:SetHibernateOnSleep: Failed to
enable hibernation: Hibernation failed with the following error: There is
not enough space on the disk.
如果日志行为 SetHibernateOnSleep: HibernationEnabled:
true
,则已成功配置休眠。
如果您未看到来自这些进程的任何日志,您的 AMI 可能不支持休眠。有关支持的 AMI 的信息,请参阅休眠先决条件。
实例大小
如果您使用的是内存小于 1 GB 的 T3 或 T3a 实例,请尝试将实例的大小增加到至少有 1 GB 内存的实例。
实例“停滞在”停止状态
如果您已使实例休眠并且实例卡在 stopping
状态,则可以强制停止它。有关更多信息,请参阅 排查实例的停止问题。