我对亚马逊网络服务还很陌生。我有几个 ubuntu 10.04 实例正在运行,但今天当我尝试登录我的实例时,我收到一条错误消息,提示“根目录中的磁盘空间不足”。几分钟后我成功登录并删除了所有不需要的文件。在实例描述中,提到大型实例有 850 GB 的存储空间,但对于根目录,只有 8 GB。我偶然发现了这篇文章,以增加根部大小但我猜这些命令是从 Linux Shell 运行的,并且我在 Windows 机器上设置了 ec2 工具。
有人能告诉我如何在 Windows Shell 上运行文章中提到的这些命令吗?我对 EC2 有几个问题:
- 大型实例可用的 850 GB 存储空间与分配的 8 GB 存储空间有什么区别?
- 我读到我可以从出现故障的实例中分离卷并将其附加到新实例,我该怎么做?保存的数据是否可以在此卷中使用?
答案1
处理 AWS 上的存储时存在多种可能性。
首先,有实例存储(您说的 850 GB)。此存储与您的 EC2 实例挂钩。实例消失后,它无法移动或恢复到另一个实例。这对于存储不太重要的东西很有用。(操作系统文件、要处理的文件等)。实例消失后,您的数据也会消失。
然后是 EBS 块。它们就像硬盘一样,您可以将其连接到任何 EC2 实例,无论您的 EC2 实例是否关闭,它们都可以持久保存您的数据。当您需要另一个实例的驱动器时,只需将其拆下并重新连接即可。EBS 块的大小是预定义的。当空间不足时,请添加另一个。调整大小实际上是不可能的(除非您使用您提供的链接中描述的黑客方法)。
最后,您可以使用 S3-Bucket。您可以在这些存储桶中存储任意数量的数据。它的工作原理有点像 EBS,但没有真正的文件系统实现。一些网站使用它来托管他们的图像等。
因此,对于您的问题:
您应该能够使用 ec2-tools 运行它们。我认为我上面已经解决了问题 1 和问题 2。与 AWS 一样。不要依赖 EC2 实例。当它们出现问题时,删除它们并使用预制图像设置一个新的实例并附加您的 EBS 块。
答案2
您可以在这里找到非常详细的解释: http://alestic.com/2009/12/ec2-ebs-boot-resize
大型实例具有 850 GB 的存储大小,并且该实例被划分为两个 420 GB 的卷,外加 10 GB 或根分区。这两个大卷在启动时不会“激活”。当您启动 EBS 支持的 AMI 时会发生这种情况。
答案3
850 GB 存储是临时的 - 一旦实例停止/终止,它就不会继续存在;您无需为此支付任何费用(无论是 I/O 还是预配置存储)。对于 m1.large,这两个卷通常显示为/dev/xvdb
和。对于具有 EBS 根的实例,只有在 AMI()或启动命令( )中/dev/xvdc
明确包含(即 )时才会添加临时存储。如果实例没有添加的存储,则无法将其添加到其中(不启动新实例)。--block-device-mapping
ec2-register
ec2-run-instances
在文章中提到的命令中,所有以 ec2-* 开头的命令(即 api 工具)都可以从任何地方运行(例如您的 Windows 计算机、另一个实例或相关实例)。而其他命令则需要在实例本身上运行(通过 SSH)。
除了使用 API 工具之外,您还可以使用 AWS 控制台执行相同的任务(停止、分离、快照、创建 EBS 卷、附加) - 但您需要直接在实例本身上执行 resize2fs。
值得注意的是,默认情况下,大多数根 EBS 卷未设置为在实例终止后保留(而您手动附加的任何 EBS 卷默认都会保留)。您可以使用以下方式更改此行为:( “false”指定在终止时不删除)。您可以使用(或使用 AWS 控制台)ec2-modify-instance-attribute INSTANCE_ID -b "MOUNT_POINT=VOLUME_ID:false"
确定在终止时是否删除 EBS 卷。ec2-describe-instance-attribute INSTANCE_ID -v -b
只要您的 EBS 卷存在,其上的所有数据都会保留。如果某个实例“出现问题”(假设这不是您的设置问题),并且 EBS 卷仍然存在,您可以将其附加到另一个实例,作为根卷或附加卷,它应该可以正常运行。但是,建议您拥有一些 EBS 卷的快照(它们不会出现故障),并将数据与软件分开(即使用多个 EBS 卷)。
要将重要数据放在 EBS 卷上(假设您已经在根卷上拥有它),您可以附加第二个 EBS 卷,然后 mount -o bind 将根卷中的位置绑定到附加卷。尽管实例存储根卷可用,但从可移植性和恢复能力来看,使用 EBS 根卷是更好的选择。