我遇到了一个问题,我需要克隆一个 EC2 实例,但无法创建正在运行的实例的映像。问题出在哪里?我希望你们中有人了解 AWS 并能帮助我。
http://screencast.com/t/9l1wSb0Fjas
你好,弗雷德里克
答案1
您会注意到,图片中的灰色选项适用于 EBS 支持的实例,而您的实例具有实例存储(即 S3 支持的)根卷。
为了克隆此实例,您有两个选择。
选项1:如果您希望您的(新)实例也成为实例存储,您可以创建现有实例的 AMI 并从中启动新实例。它将与您当前的实例相同(但只有根卷 - 如果您在其他临时磁盘上有数据,则需要单独处理)。对于这种方法:
ec2-bundle-vol -d /mnt -k $EC2_PRIVATE_KEY -c $EC2_CERT -u USERID -s SIZE
ec2-upload-bundle -b BUCKETNAME -m MANIFESTFILE -a ACCESSKEY -s SECRETKEY
(如果您正在运行诸如 bind 之类的程序,则需要在捆绑之前停止它 - 事实上,最好停止所有可以停止的服务以获得一致的图像 - 根据服务器的利用率,您可能还会考虑冻结文件系统)
选项 2:将根文件系统复制到 EBS 卷,然后从中创建 AMI。
附加一个将保存根卷数据的 EBS 卷,挂载您的 EBS 卷,然后使用以下命令复制数据:
rsync -aHAXxSP /source /target
根据新的 EBS 卷启动一个实例(您需要在启动时或创建 AMI 时明确指定您希望实例包含的任何临时存储(即块映射)。
答案2
我写了一篇文章,介绍如何从正在运行的实例存储实例创建 AMI:
通过重新捆绑正在运行的实例为 EC2 创建新映像
http://alestic.com/2009/06/ec2-ami-bundle
这是 2009 年的事情,当时 EBS 启动实例还未出现。
您确实会面临文件系统不一致的风险,但这种情况很少见。
我建议您切换到 EBS 启动实例,因为这样可以更轻松地创建 AMI,同时还具有许多其他巨大好处。
答案3
您无法制作它的图像,因为您无法对实时文件系统进行完整的磁盘克隆 - 否则您将尝试复制正在操作的文件,从而导致损坏。
如果实例停止,该选项将可用。
答案4
这是一个很老的,但非常好且深入的答案,可以告诉你如何准确地做你想做的事情。
http://robrohan.com/2009/01/30/saving-a-customised-linux-amazon-instance-ec2-and-s3/