我在这里发现了类似的问题,但答案要么已经过时,要么来自命令行。
情况是这样的。我有一个使用实例存储的 EC2 实例(这是爱尔兰唯一可用于 Debian 6 的 AMI)。现在通过 AWS GUI,我可以制作实例卷的快照和/或什至创建一个卷。但是从快照制作的映像无法启动。
克隆使用实例存储的 EC2 实例或从实例存储的创建快照从 gui aws 管理控制台而不是命令行启动新的 EBS 实例(相同克隆)的最佳解决方案是什么?在拒绝之前,请考虑没有关于如何通过 aws 管理控制台执行此操作的类似问题。
提示不能完成不是一个合适的答案。因为您可以创建实例存储支持的实例和/或卷的快照,并从该快照创建 AMI。
您无法从 AWS 控制台对实例存储卷上的数据执行任何操作。这有一个很好的理由,我将在后面介绍。
首先让我从你的问题中澄清几点:
情况是这样的。我有一个使用实例存储的 EC2 实例(这是爱尔兰唯一可用于 Debian 6 的 AMI)。
EU-West-1(32 位和 64 位)中有多个 EBS-root Debian 6 AMI 可用。其中一些可以在Debian Wiki上找到。
现在通过 AWS GUI,我可以制作实例卷的快照和/或什至创建一个卷。但是从快照制作的映像无法启动。
AWS 所说的“快照”只能由 EBS 卷制作(见图)。就其本质而言,实例存储卷是短暂的 - 临时的。捕获实例存储卷状态的唯一方法是将文件捆绑在其上(几乎就像制作存档一样)——这些不是块级的。AWS 控制台中提到的快照适用于 EBS 卷 - 这些是块级别的。您创建的快照很可能是附加到实例的 EBS 卷的快照,并且由于这不是根卷,因此尝试从中运行实例一直失败。
此外,您无法将实例存储卷添加到正在运行的实例。实例存储是实例类型的一个特征——它有固定的卷大小(例如,您不能添加 15GB 的实例存储卷)并且只能在实例启动时添加(作为ec2-run-instances
命令的一部分,或者如果它内置于 AMI 中。
一般来说,应该避免使用实例存储实例,除非您有充分的理由使用它们(通常是高 io、瞬态任务)
现在,尝试回答您提出的一些问题:
克隆使用实例存储的 EC2 实例或从实例存储的创建快照从 gui aws 管理控制台而不是命令行启动新的 EBS 实例(相同克隆)的最佳解决方案是什么?在拒绝之前,请考虑没有关于如何通过 aws 管理控制台执行此操作的类似问题。
使用命令行。在你认为我在驳回你的要求之前,请允许我解释一下。AWS 不会访问您的文件 - 您可以远程执行的任何操作都不需要了解您实例上的实际内容。因此,创建 EBS 快照发生在块级别 - 它不需要了解文件系统或读取卷上包含的文件的权限(想象一下,如果 AWS 需要能够读取每个可以想象的文件系统linux 操作系统,这将是一项不可能完成的任务)。另一方面,从实例存储卷创建“捆绑包”的过程需要对系统上的文件进行读取访问。您会注意到ec2-bundle-vol
必须从有问题的实例运行(与 ec2-create-snapshot 命令不同,它可以在没有访问实例的情况下运行)。
命令行和 API 的存在有几个原因。首先,它们对于自动化至关重要 - 您无法编写“AWS 控制台”的脚本。同样重要的是,它们提供了更广泛的选择。尽管 AWS 控制台一直在不断添加新功能,但出于某种原因,仍有许多事情只能通过命令行完成。选择最适合您的方式,但不要忽略命令行或 GUI 界面,因为两者都有其用途。
所以,既然已经排除了控制台,就必须使用命令行来继续。
选项1:
从现有实例创建一个新的实例存储 AMI。您将需要运行:
ec2-bundle-vol
创建 AMI
ec2-bundle-vol -d /mnt -k $EC2_PRIVATE_KEY -c $EC2_CERT -u 用户 ID -s 大小
ec2-upload-bundle
将其保存到 S3
ec2-upload-bundle -b BUCKETNAME -m MANIFESTFILE -a ACCESSKEY -s SECRETKEY
ec2-register
注册 AMI(最后一个可以从 AWS 控制台完成)。
这绝对是最简单的方法,但就个人而言,我不会采用它。如果你要付出努力,你不妨全力以赴转换为EBS。
选项 2:
将您拥有的文件复制到 EBS 卷并基于该卷创建新映像。
您需要先创建一个新的 EBS 卷(在与现有实例相同的可用区中),然后将该卷附加到该实例。
注意:如果您计划在不同的实例类型上使用 AMI,最好从 /etc/fstab 中删除对临时存储的任何引用,因为每个实例类型上可用的临时存储各不相同(通常安装在 /mnt 上)。
有两种方法可以解决此问题,具体取决于您目前拥有的内容。
如果您有捆绑的卷(例如来自“选项 1”),您可以取消捆绑该卷,然后使用dd
将其复制到您的 EBS 卷(您可能需要先使用 下载捆绑包ec2-download-bundle
):
ec2-unbundle -m /local/path/to/manifest.xml -s SOURCE_DIRECTORY -d DESTINATION_DIRECTORY dd if=/path/to/image of=/dev/NAME
否则,您可以使用rsync
将根卷上的文件复制到新的 EBS 卷。
mkfs.ext3 /dev/sdf
)mkdir /mnt/ebs && mount /dev/sdf /mnt/ebs
)sync
)rsync -aHAXxSP --exclude /mnt/ebs / /mnt/ebs
)。您可以改为使用dd
,但对于已挂载的源文件系统, rsync 更好。sync
)umount /mnt/ebs
)fsck /dev/sdf
)从这里开始,您可以在 AWS 控制台中执行其余操作:创建 EBS 卷的快照并从该快照创建 AMI。启动您的新 AMI 以确保一切正常。
归档时间: |
|
查看次数: |
2565 次 |
最近记录: |