R2 は、年間 99.999999999%(イレブンナイン)の耐久性を提供するように設計されています。つまり、R2 に 10,000,000 個のオブジェクトを保存した場合、平均して 10,000 年に 1 回、オブジェクトを失う計算になります。
R2 の耐久性は、複数層の冗長性とデータ保護で成り立っています。
-
レプリケーション: オブジェクトをアップロードすると、R2 は完全なレプリケーション、イレイジャーコーディング、またはその両方で、そのオブジェクトの複数の「コピー」を保存します。これにより、個々のディスクが全部または一部故障しても、データ損失にはつながりません。イレイジャーコーディングはオブジェクトの断片を複数のディスクに分散します。一部のディスクが故障しても、残っている断片の一部からオブジェクトを再構成できます。ハードウェア障害や、火災・洪水などのデータセンターへの物理的影響によるデータ損失を防ぎます。
-
ハードウェア冗長性: ストレージクラスターは、地理的なリージョン内の複数のデータセンターに分散したハードウェアで構成されます。この物理的な分散により、単一施設での停電、ネットワーク障害、ハードウェア故障といった局所的な障害が、データ損失につながらないようにします。
-
同期書き込み: R2 は、API 経由の書き込みで
HTTP 200 (OK)を返す、または成功を示すのは、データがディスクに永続化されたあとだけです。耐久性の保証を、非同期レプリケーションに依存していません。これは R2 の一貫性保証にとって重要です。基盤のメタデータとストレージ基盤が変更を永続化する前に、クライアントが成功の API レスポンスを受け取る可能性を下げます。
- 耐久性は、データの可用性を保証するものではありません。データ損失の起こりにくさを測る指標です。
- R2 の可用性は 99.9% の SLA ↗ です。
- 耐久性は、意図的または誤ったデータの削除を防ぎません。データへのアクセスを制限するには、バケットロック や、バケットスコープの API トークン を使います。
- 耐久性は 一貫性 とも異なります。一貫性は、読み取りと書き込みがシステムの状態にどう反映されるか(例: 結果整合と強整合)を表します。