从正在运行的实例与从卷快照创建 EC2 AMI 映像

Vil*_*epi 23 amazon-ami amazon-ec2 amazon-ebs

我想备份一个基于 Linux 的 EC2 实例,同时它没有停机运行,然后再启动一个新实例。(该实例正在运行 Web 服务器和 Postgres 数据库。)

我发现有两种方法可以做到这一点,但我对它们之间的结果有何不同感到困惑。

选项#1:直接从正在运行的实例创建一个 AMI:

  1. 直接从正在运行的原始实例创建一个新的 AMI。
  2. 从 AMI 启动新实例

选项#2:从快照手动创建 AMI:

  1. 从附加到正在运行的原始实例的卷中获取快照
  2. 从快照创建 AMI,手动输入架构和内核 ID 等详细信息
  3. 从手动创建的镜像启动一个新实例

现在令人困惑的是,当直接从实例创建 AMI 时,EC2 会默认重启实例。有一个带有以下工具提示的“不重启”复选框:

启用后,Amazon EC2 在创建映像之前不会关闭实例。使用此选项时,无法保证创建的映像上的文件系统完整性

这两种方式选项的结果真的有区别吗?对我来说,感觉就像我手动做自动向导会做的事情一样。它生成快照,选择内核 ID 和架构。

为什么一个有警告文本而另一个没有?对正在运行的实例进行快照被认为是相对安全的,如果 AMI 创建在后台进行快照,是否比手动完成更危险?

小智 14

如果您no reboot在直接从 EC2 创建 AMI 时选择该选项,它们的作用完全相同。这基本上会创建一个可能处于不一致状态的快照。例如,如果您在创建快照时进行大量磁盘写入,则可能会出现更多状态不一致的情况。

如果您想在“一致”状态下创建快照,您必须先关闭您的实例,然后拍摄快照,然后重新启动您的实例。这就是 EC2 的 AMI 创建选项非常有用的原因,因为您不必停止和重新启动。亚马逊会处理它,并且您的实例上的 IP 地址也不会更改。(如果您停止/重新启动您的实例,您的 IP 地址实际上会发生变化)

如果您直接从卷中获取快照,我不确定为什么亚马逊没有警告,但从卷的角度来看,正在运行或未运行的实例是否正在使用该卷并不重要(它只关心它是附加还是分离对创建快照没有影响)