停止实例的方法
有四种方法可以执行用户启动的停止:默认停止、通过跳过操作系统关闭而停止、强制停止以及通过跳过操作系统关闭强制停止。下表比较了各种停止方法之间的关键差异:
停止方法 | 关键用途 | 应用场景 | CLI 命令 |
---|---|---|---|
默认停止 | 正常关闭实例,尝试正常关闭操作系统。 | 典型实例停止。 |
|
停止并跳过操作系统关闭 | 停止实例时绕过操作系统正常关闭。 | 需要绕过正常关闭操作系统时。 |
|
强制停止 | 处理卡住的实例。先尝试默认停止;如果实例无法停止,则强制停止实例。 | 当实例卡住在stopping 状态时。 |
|
强制停止并跳过操作系统关闭 | 停止实例时强制停止并绕过操作系统正常关闭。 | 需要强制停止并绕过正常关闭操作系统时。 |
|
有关如何使用每种方法的说明,请参阅以下内容:
以下各节提供了有关四种不同的用户启动的停止方法的更多详细信息。
默认停止
默认的停止方法是停止实例的标准方法。当您发出 StopInstances 命令时,实例会从running
状态转换到stopping
状态,最后转换到stopped
状态,如下图所示:

用途:正常关闭实例,尝试正常关闭操作系统。
数据影响:保留 EBS 根卷和数据卷上的数据。实例存储卷上的数据丢失。
何时使用:典型停止的第一次尝试停止。
注意
如果您已经尝试通过跳过操作系统关闭来停止,则在同一状态转换会话期间的后续默认停止尝试将不执行正常关闭操作系统。对于实例的当前会话,绕过操作系统的正常关闭是不可逆的。
停止并跳过操作系统关闭
当需要绕过操作系统正常关闭时,可以使用停止并跳过操作系统关闭方法来停止实例并绕过操作系统的正常关闭,如下图所示:

警告
绕过操作系统正常关闭可能会导致数据丢失或损坏(例如,内存内容未刷新到磁盘或正在运行的 IO 丢失)或跳过关闭脚本。
用途:停止实例时绕过操作系统正常关闭。
数据影响:可能导致数据丢失或损坏。内存中的内容可能无法刷新到磁盘,正在运行的 IO 可能会丢失。可能会跳过关闭脚本。
何时使用:需要绕过操作系统正常关闭时。如果在执行操作系统正常关闭的默认停止时使用,则将绕过操作系统正常关闭。
注意
对于实例的当前状态转换会话,绕过操作系统的正常关闭是不可逆的。在此会话期间的后续默认停止尝试不会尝试正常关闭操作系统。
强制停止
强制停止方法用于处理在stopping
状态卡住的实例。实例通常会由于底层硬件问题(由系统状态检查失败表示)而被卡住。
强制停止方法首先尝试默认停止。如果实例仍在stopping
状态卡住,则force
参数会强制关闭实例并将实例转换为stopped
状态,如下图所示:

用途:处理在stopping
状态卡住的实例。先尝试默认停止。如果实例无法停止,则强制关闭该实例。
数据影响:先尝试默认停止,但如果继续强制停止,则可能会导致数据丢失或损坏。在极少数情况下,会导致停止后写入 EBS 卷或其他共享资源。
何时使用:当实例在默认停止后仍卡住时进行第二次停止尝试。有关更多信息,请参阅 排查 Amazon EC2 实例的停止问题。
强制停止并跳过操作系统关闭
当需要强制停止并绕过操作系统正常关闭时,可以使用强制停止并跳过操作系统关闭方法使实例进入stopped
状态,如下图所示:

用途:停止实例时强制停止并绕过操作系统正常关闭。
数据影响:跳过操作系统关闭可能导致数据丢失或损坏。内存中的内容可能无法刷新到磁盘,正在运行的 IO 可能会丢失。可能会跳过关闭脚本。如果继续强制停止,则可能会导致更多数据丢失或损坏。在极少数情况下,会导致停止后写入 EBS 卷或其他共享资源。
何时使用:当您想确保您的实例将停止并且想要绕过操作系统正常关闭时。如果在执行操作系统正常关闭的默认停止时使用,则将绕过操作系统正常关闭。