【问题标题】:AWS: Ways of keeping cost down while backing up S3 files to Glacier? [closed]AWS:在将 S3 文件备份到 Glacier 时降低成本的方法? [关闭]
【发布时间】:2013-12-30 00:46:29
【问题描述】:

作为我们项目的一部分,我们在 S3 上创建了一个相当茂密的文件夹/文件树,所有文件占用了大约 6TB 的数据。我们目前没有这些数据的备份,这是不好的。我们想做定期备份。似乎冰川是要走的路。

问题是:有哪些方法可以降低备份的总成本?

我们的大部分文件都是文本,因此我们可以压缩它们并上传整个 ZIP 档案。这将需要处理(在 EC2 上),所以我很好奇是否有任何经验法则可以比较运行 EC2 实例进行压缩与仅上传未压缩文件的额外成本。

另外,我们必须为数据传输付费,所以我想知道除了 (i) 从 S3 下载文件到实例之外,是否还有其他备份方式; (ii) 以原始格式上传文件或压缩到 Glacier。

【问题讨论】:

  • 我们终于厌倦了处理从 Glacier 恢复的长延迟(通常为 3-5 小时)以及隐藏的成本因素。我们最终创建了一个程序来同步和创建我的存储桶的快照,其中包括使用 S3 减少冗余存储来更好地接近 Glacier 的成本节约优势。在过去的几年里,它对我们来说效果很好,所以我们最终把它变成了商业产品。您可以在BucketBacker 上免费试用全功能的 2 周试用版

标签: amazon-s3 amazon-ec2 amazon-glacier


【解决方案1】:

我通常认为 Glacier 是 S3 的替代存储,而不是附加存储。即,数据通常存储在 S3 或 Glacier 中,但很少同时存储。

如果您相信 S3 宣传的 11 个 9 的持久性,那么您就不会备份,因为 S3 本身很可能会丢失数据。

您可能希望备份数据,因为(就像我一样)您将您的 Amazon 帐户视为单点故障(例如,凭证被盗或 Amazon 阻止您的帐户,因为他们认为您在做一些滥用行为)。但是,在这种情况下,Glacier 还不够备份,因为它仍然属于亚马逊的保护伞。

如果您担心由于用户错误、凭据泄露等原因而导致 S3 中的数据丢失,我建议您在 Amazon 之外备份 S3 数据。

我建议您使用 Glacier 作为长期、廉价存储数据存档的地方,前提是您知道自己不需要太多访问(如果有的话)。当事物转移到 Glacier 时,您可以将它们从 S3 中删除。

亚马逊提供从 S3 到 Glacier 的自动存档,效果很好,但如果您的文件的平均大小很小,请注意额外费用。这是我写的一篇关于这种危险的文章:

将 S3 对象转换为 Glacier 的成本
http://alestic.com/2012/12/s3-glacier-costs

如果您仍想从 S3 复制到 Glacier,这里有一些与您的问题相关的要点:

  • 您可能会将数据留在 Glacier 中很长时间,因此压缩它可能值得短期 CPU 使用。确切的权衡取决于数据的可压缩性、压缩需要多长时间以及需要执行压缩的频率等因素。

  • 将数据从 S3 下载到 EC2 实例是免费的。将数据上传到 Glacier 不收取数据传输费用。

  • 如果您将许多小文件上传到 Glacier,则每个项目的上传费用可能会累加。您可以通过将许多小文件合并到一个存档中并上传来节省成本。

另一个可以帮助防止因用户错误或攻击而导致意外丢失的 S3 功能是打开 S3 版本控制并启用 MFA(多因素身份验证)。这可以防止任何人永久删除对象,除非他们拥有凭据和物理设备。

【讨论】:

  • 埃里克,感谢您的详细回答。我想要进行备份的主要原因是,现在我们团队的任何成员——包括研究生、教授、专业软件开发人员和其他人——都可能会因为一个错误的动作而意外删除 S3 上的整个数据子树(“删除文件夹”)。但也许对此的答案是做一些你在回复底部描述的事情。
  • 就像 IZ 一样,我认为到目前为止,造成灾难性数据丢失的最可能原因是我的错误。意外删除存储桶,或运行执行相同操作的脚本。在这种情况下,将副本保存在冰川中可以提供安全网。
  • 我对同样的事情很感兴趣,目前正在与亚马逊讨论选项。有一种简单的方法可以将数据(存档)从 S3 移动到 Glacier,但不能复制数据(备份)。如果您正在处理数百 TB 的数据,将其全部下载到一个 ec2 实例然后将其上传到 Glacier 可能需要很长时间并且成本很高,以至于不值得这样做。 S3 确实需要一条备份大量数据的路径。在客户付费的生产系统中不使用它太危险了。
  • 从冰川中提取大量数据也可能非常昂贵。他们使用的公式相当复杂,但在 4 小时内提取 100 TB 数据将花费您 190,000 美元! (你没看错,19 万美元)。见这里aws.amazon.com/glacier/faqs/… 和这里liangzan.net/aws-glacier-calculator 和这里calculator.s3.amazonaws.com/calc5.html
  • S3 版本控制...很好!正是我想要的。
【解决方案2】:

我最初通过执行以下操作在我想要备份的 S3 存储桶中解决了相同的问题:

  1. 为我要备份到 Glacier 的每个 S3 存储桶创建第二个“镜像”存储桶
  2. 启动微型 Ubuntu 服务器实例以运行 cron 作业
  3. 在服务器上安装 s3cmd
  4. 编写一个shell脚本,将每个桶中的所有对象同步到镜像桶中
  5. 在镜像存储桶上启用生命周期规则,将每个对象的状态更改为“Glacier”

这很好用,但出于我的目的,我决定在我的存储桶上启用版本控制更容易。这确保了如果一个对象被意外删除或更新,它可以被恢复。这种方法的缺点是恢复整个分支或子树的过程可能很耗时。但它更容易、更具成本效益,并且足以保护桶中的物品免受永久性破坏。

希望对以后的人有所帮助。

【讨论】:

  • 版本控制是否可以防止使用 AWS 管理控制台 UI 意外删除整个“文件夹”?我尝试删除版本化存储桶中的文件夹,但没有看到任何恢复它的方法。
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2020-12-02
  • 2020-06-16
相关资源
最近更新 更多