【问题标题】:Is it possible to copy to/from EBS storage to Local Instance Storage on instance up/down?是否可以在实例启动/关闭时向/从 EBS 存储复制到本地实例存储?
【发布时间】:2021-12-07 15:14:12
【问题描述】:

我们的工作负载可以从极快的 IO 和现有缓存中受益匪浅。 IO 工作负载的大小可能高达 100GB。我目前正在测试 EBS gp3 10k IOPS,这是可以接受的,但可能会更好。

Amazon 是否支持某种实例配置,我可以通过首先将操作系统和数据从 EBS 卷复制到临时本地实例存储中来请求启动我的实例,并在我请求关闭时再次退出?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-ebs


    【解决方案1】:

    EC2 提供了user data 之类的功能——当一个实例在第一次启动时创建,我们可以执行一些脚本,这些脚本是用户数据的一部分。这些脚本仅在首次启动时运行,如果实例停止并重新启动,它们将不会运行。

    创建实例时可以添加使用数据的脚本:

    现在,实例被停止和被终止是有区别的。如果您停止实例,临时实例存储的内容不会丢失(更多信息:instance lifetime)。如果你终止一个实例,显然一切都消失了。 我在澄清这一点。因为根据 AWS,不能保证在实例终止的情况下安全地复制数据 (source]:

    如果您在实例终止时运行脚本,您的实例可能会异常终止,因为我们无法确保关闭脚本运行。 Amazon EC2 尝试彻底关闭实例并运行任何系统关闭脚本;但是,某些事件(例如硬件故障)可能会阻止这些系统关闭脚本运行。

    为了从实例存储中保存数据,一个解决方案是定期备份数据:https://aws.amazon.com/premiumsupport/knowledge-center/accidental-termination/

    【讨论】:

    • 感谢您提供的信息。我不清楚在哪里可以找到有关如何编写用户数据脚本以从 EBS 卷复制到本地存储的信息?
    • 用户数据脚本在创建时添加到 EC2 实例中。我在我的答案中放了一个截图。为了复制到实例存储,我们必须确保它已挂载:docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 您可以将其挂载到您想要的任何位置,然后只需将cp 从一个位置安装到另一个位置。
    【解决方案2】:

    我认为你可能从一个比你需要的更复杂的角度来处理这个问题。

    我认为您应该将操作系统留在 EBS 卷中,并为您的工作数据使用适当大小的 Instance Store Volume。

    也许 c5d.xlarge 会是一个不错的选择。

    此外,您仍然需要考虑一种解决方案,以便在关机时可靠地将数据复制回持久性 (EBS) 存储...也许您可以创建一个在关机时运行的 systemD 服务,它只执行 rsync; 也许这会让你朝着正确的方向前进:https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

    此外,如果您想要一个每次启动都运行的启动脚本,这里有更多信息: https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/

    最后,为了解决您的第一个问题“亚马逊是否支持某种实例配置,我可以通过首先将操作系统和数据从 EBS 卷复制到临时本地实例存储中来请求启动我的实例,以及返回当我要求关机时又出去了?” 简短的回答:没有。

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2013-03-16
      • 1970-01-01
      相关资源
      最近更新 更多