我想在 Linux EC2 实例运行时对其进行备份,并且不停机,然后启动一个新实例。(该实例正在运行 Web 服务器和 Postgres 数据库。)
我发现有两种方法可以做到这一点,但我不清楚它们的结果有什么区别。
选项 1:直接从正在运行的实例创建 AMI:
- 直接从正在运行的原始实例创建一个新的 AMI。
- 从 AMI 启动新实例
选项 2:从快照手动创建 AMI:
- 从正在运行的原始实例所附加的卷中获取快照
- 从快照创建 AMI,手动输入架构和内核 ID 等详细信息
- 从手动创建的镜像启动新实例
现在令人困惑的是,当直接从实例创建 AMI 时,EC2 会默认重启实例。有一个复选框“无需重启”使用以下工具提示:
启用后,Amazon EC2 不会在创建映像之前关闭实例。使用此选项时,文件系统完整性无法保证所创建的图像。
这两种方式的结果真的有区别吗?对我来说,感觉就像我在手动做自动向导会做的事情一样。它会生成快照、选择内核 ID 和体系结构。
为什么一个有警告文本而另一个没有? 对正在运行的实例进行快照被认为是相对安全的,如果 AMI 创建在后台进行快照,是否比手动执行所有操作更危险?
答案1
如果您在直接从 EC2 创建 AMI 时选择该选项,它们的作用完全相同no reboot
。这基本上会创建一个可能处于不一致状态的快照。例如,如果您在创建快照时进行大量磁盘写入,则您面临更大的不一致状态的风险。
如果您想在“一致”状态下创建快照,则必须先关闭实例,然后拍摄快照,然后重新启动实例。这就是为什么 EC2 中的 AMI 创建选项非常有用,因为您不必停止并重新启动。亚马逊会处理它,而且您的实例上的 IP 地址也不会改变。(如果您停止/重新启动实例,您的 IP 地址实际上会发生变化)
我不太明白为什么亚马逊没有在你直接从卷中拍摄快照时发出警告,但从卷的角度来看,卷是否被正在运行或未运行的实例使用并不重要(它只关心它是附加还是分离,对创建快照没有影响)