我记得曾经可以这样做,也许是通过ElasticFox,但该扩展似乎无法在 Firefox 7.0 上加载。
AWS 控制台似乎不支持热映像创建 - 当我创建映像时,机器会重新启动。
还有其他简单的方法可以做到这一点吗,或者我必须最终熟悉 EC2 命令行工具?
答案1
在创建 AMI 时停止实例(默认行为)的原因是,这样根文件系统的快照才能完全一致。否则,在并非所有应用程序或系统文件系统更改都从内存写入磁盘时,您可能会冒着复制块设备的风险。
服务器的磁盘写入越活跃,这种风险就越大。
如果您有一个相当安静的服务器,您可以按照以下步骤创建无需停止/启动(重新启动)的 EBS 启动 AMI:
警告!这些步骤不是从正在运行的实例创建 AMI(图像)的推荐方法
如果可能,请登录到您的服务器并运行以下命令以将待处理的写入刷新到磁盘。此命令之后进行的写入可能无法写入磁盘,并且应用程序可能会在内存中保存自己的更改以准备写入磁盘,因此存在不一致的风险。
sudo sync
创建根 EBS 卷的快照并等待其完成。
将快照注册为 AMI(映像)。
第 2 步和第 3 步可以通过命令行或 EC2 控制台完成。
棘手的部分是,当您将快照注册为 AMI 时,您需要选择正确的 AKI(内核)和 ARI(ramdisk)。找到正在运行的实例使用的内核和 ramdisk 并使用相同的内核和 ramdisk。对于现代 Ubuntu AMI,不需要 ramdisk,因此请将其保留为未指定。
仔细测试新的 AMI,确保您没有因文件系统不一致而产生问题。请注意,问题可能需要一段时间才会显现,因为它们可能出现在快照时附近打开的任何文件/目录中。
我非常关心创建一致的快照,因此我整合了社区的最佳实践并发布了一个命令行工具来在正在运行的系统上执行此操作:
不过,这可能不是 EBS 根卷的最佳选择,因为可能会有打开的日志文件和其他冲突。此外,大多数人不会在根磁盘中运行 XFS。
答案2
通过他们的 Web 界面或命令行执行此操作,但在这两种情况下,实例都需要重新启动。这对于执行根文件系统的干净快照并将其转换为 AMI 是必要的。