12

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

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

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

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

4

2 回答 2

23

我通常认为 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(多因素身份验证)。这可以防止任何人永久删除对象,除非他们拥有凭据和您拥有的物理设备。

于 2013-03-05T21:52:16.807 回答
1

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

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

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

希望能帮助别人。

于 2013-12-29T16:46:29.773 回答