从正在运行的实例或卷快照创buildEC2 AMI映像

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

我发现有两种方法可以做到这一点,但我很困惑他们之间的结果有什么不同。

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

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

选项2:从快照手动创buildAMI:

  1. 从连接到正在运行的原始实例的卷获取快照
  2. 从快照创buildAMI,手动input架构和内核ID等详细信息
  3. 从手动创build的图像启动一个新的实例

现在令人困惑的是,当从实例创buildAMI时,EC2会默认重启实例。 有一个checkbox“不重新启动”与以下工具提示:

启用后,Amazon EC2在创build映像之前不会closures该实例。 使用此选项时,不能保证所创build映像上的文件系统完整性

这两种方法的结果真的有区别吗? 对我来说,感觉就像手动执行自动向导会做的一样。 它生成快照,select内核ID和体系结构。

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

    如果您在直接从EC2创buildAMI时selectno reboot选项,则它们完全相同。 这基本上创build了一个可能处于不一致状态的快照。 例如,如果在创build快照时进行大量磁盘写入,则会冒更多的不一致状态的风险。

    如果要以“一致”状态创build快照,则必须先closures实例,然后拍摄快照,然后重新启动实例。 这就是为什么来自EC2的AMI创build选项非常有用,因为您不必停止和重新启动。 亚马逊照顾它,并且IP地址也不会改变您的实例。 (如果你停止/重启你的实例,你的IP地址实际上会改变)

    我不确定为什么Amazon没有警告,如果直接从卷中获取快照,但是从卷的angular度来看,卷是否正在被正在运行或未运行的实例使用真的没有关系它只关心它是否附加或不影响创build快照)