amazon-web-services - 在 'n' 区域/桶中复制的 S3 对象有多少个 9 是持久的

标签 amazon-web-services amazon-s3 cloud-storage

S3 文档指出 S3 对象的耐用性为 99.999999999(11 个九)一年。如果一个对象在“n”个区域/桶上被复制/复制,那么它有多少个 9 是持久的。

最佳答案

这个问题让我开始疑惑……如何将这样的数字放在耐久性上? S3 如何提供 11 个 9 的耐用性以及为什么旧的减少冗余存储 (RRS) 类的耐用性明显低得多,只有 99.99%(4 个 9),即使它仍然存储在 2 个可用区中,而不是 3 个.

答案似乎在于每个单独存储实体(可能是硬盘驱动器,但考虑到商品硬盘驱动器的故障率在统计上更高——也许高达 4% AFR——“存储设备”可能是 RAID 阵列,或其他集群技术,其中每个独立存储实体的 AFR 为 1%。为简单起见,我将此实体称为“存储设备”。我的意图是不是声称 S3 使用 n 个硬盘驱动器来存储对象;这几乎可以肯定是过于简单化了,而且我对 S3 的内部工作原理一无所知。

为了便于说明,我们简要假设维护良好的车队中存储设备的 AFR 为 1%。显然,这是假设物理驱动器在达到超龄之前就已停止使用,否则它们最终当然会全部失效。

根据丢失存储设备的可能性为 1/100 的断言,在给定年份发生故障的几率为 99%。然后我们可以称设备的内容每年 99% 耐用。

如果我们在两个这样的设备上存储了相同的数据,并且系统的设计使得两个设备的故障不太可能有任何相关的原因(例如,它们不仅不在同一个机柜中或在同一个电源,它们甚至不在同一栋楼里),我们可以说并发故障在统计上是独立的,我们可以通过将概率相乘来确定同时丢失两个设备(导致内容丢失)的可能性:0.01 × 0.01 = 0.0001 或 0.01%。因此,如果两个驱动器上的内容相同,则丢失它们的几率提高到 99.99%。

我们可以将其推断出许多存储设备:

1 0.010000000000 99%
2 0.000100000000 99.99%
3 0.000001000000 99.9999%
4 0.000000010000 99.999999%
5 0.000000000100 99.99999999%
6 0.000000000001 99.9999999999%

奇怪的是,我们得出的数字与已发布的 S3 规范非常相似,我们知道 S3 在 3 个可用区中冗余存储对象。如果我们假设“冗余”意味着每个区域中都有两个存储设备,那么我们的耐用性非常接近 11 个 9(实际上略高)。

减少冗余存储存储对象的复制次数更少并且仅在 2 个可用区中,我们发现 2 个设备的统计故障率确实预测了 99.99% 的耐用性。

所有这一切都是为了尝试确定“持久性”对于存储对象的真正含义,它显然指的是对象的每个副本丢失的几率。

通过扩展,将对象复制到第二个 AWS 区域意味着我们需要将无限小的几率相乘,这将统计耐久性增加 额外 ~11 个 9(22 个 9),因为跨 2 个不同区域的 6 个可用区中的 12 个独立存储设备发生故障应该是绝对不相关的,而且可能性很小,以至于永远不可能。

当然,问题在于,在这些小数字下,发生与纯粹持久性无关的其他事情的可能性——例如管理错误、恶意事件,甚至是 S3 中的缺陷——似乎相比之下变得更有可能……但跨区域复制也可能有助于防止这些事情发生。对象版本控制也是一项有助于防止数据丢失的出色功能,因为某些类型的意外错误不太可能发生。

关于amazon-web-services - 在 'n' 区域/桶中复制的 S3 对象有多少个 9 是持久的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47233699/

相关文章:

amazon-web-services - 如何使用 AWS CLI 更新弹性 beantalk 代码?

python - 无法在 AWS Lambda (Python) 中导入模块

django - python 3中的S3BotoStorage

ruby-on-rails - 使用 aws-sdk 流式上传大文件

javascript - 直接访问 Amazon S3 被拒绝

java - 尝试使用 kinvey 将图像从 Android 应用程序上传到云

amazon-web-services - CloudFormation 模板 -> ALB 目标组不支持 http/TCP 协议(protocol)

amazon-web-services - 如何使用 AWS 服务(而非 EC2)运行延迟或计划的作业?

amazon-s3 - 用于流数据的云存储 API

ibm-cloud - IBM Cloud Object Storage - 它是否支持对象版本控制以及如何获取 UUID?