← AWSサービスの内部原理 コース
30. イレブンナインの耐久性 — ディスクは壊れる前提で設計する
「S3は壊れないから11ナイン」ではなく「壊れる前提で、コピーの分散・確率の掛け算・速い修復・チェックサム検証を積み重ねるから11ナイン」——その仕組みを6つの図で追います。
① イレブンナインの正体は「壊れる前提」の冗長化
1つのオブジェクトアップロードされたデータ
冗長に保存(redundantly)
AZ-1複数デバイスにコピー
AZ-2複数デバイスにコピー
AZ-3複数デバイスにコピー
誤解との対比
✕ 壊れないSSDが1台こういう設計ではない
- 公式: S3 Standardなど主要クラスは『最低3つのAZにまたがる複数デバイスへ冗長に保存』と明記
- AZ同士は数km以上離れた(互いに100km以内の)別々のデータセンター群
S3は壊れないディスクを使っているのではなく、『ディスクは必ず壊れる』前提で、コピーを最低3つのAZに分散配置します。11ナインは単体デバイスの信頼性で稼いだ数字ではありません。
② 9の数は「独立故障の確率の掛け算」で増える
コピー1が失われる確率 p
コピー2が失われる確率 p
コピー3が失われる確率 p
独立なら掛け算できる
3つ同時に失う確率 ≈ p³掛けるたびに9が増える
その結果
99.999999999%イレブンナインの耐久性
- RAID(複数台への分散・複製)やECC・チェックサム(ビット化けの検出・訂正)と同じ基礎原理のスケールアップ
- 1つの筐体の中ではなく、AZをまたいで超大規模に適用したもの
各コピーが独立に失われる確率を掛け合わせることで耐久性の桁数が作られます。掛け算のたびに9が増え、11個の9に到達します。
③ 確率を守る鍵は「修復の速さ」
デバイス故障コピー1つが失われる
迅速に検出(quickly detecting)
冗長性の喪失を検出
健全なコピーから作り直す
別の健全なデバイスへ再複製
常に引き戻す
規定の冗長度へ回復同時多発故障にも耐える
- 公式: 『失われた冗長性を迅速に検出・修復することで、同時多発的なデバイス故障を処理できるよう設計』
- 壊れないことではなく、壊れてから正常に戻るまでの時間の極小化が確率を守る
コピーが1つ壊れたまま放置されると有効な冗長度が下がり、次の故障に一気に近づきます。だからS3は喪失を素早く検出し、常に規定の冗長度へ引き戻し続けます。
④ チェックサムが「壊れたコピー」を見分ける
アップロード時クライアントがチェックサムを計算して送信
S3がサーバー側で独立に再計算
一致を確認してから保存データ+チェックサム値
保存中(データ・アット・レスト)も
定期的に読み直して照合regularly verify
ビット腐敗(bit rot)を検出静かに進む破損を捕まえる
- デフォルトのアルゴリズムは CRC-64/NVME(CRC64NVME)
- ECCがメモリのビット化けを見張るのと同じ役割を、保管庫全体に対して行う
修復するには、どのコピーが正しくどれが壊れたかを見分ける仕組みが必要です。S3はデフォルトでCRC-64/NVMEを使い、アップロード時と保存中の2つの局面で整合性を検証します。
⑤ 巨大オブジェクトも「分割+分散+検証」で守る
巨大オブジェクト最大50TB
マルチパートアップロードで分割(1〜10000パート)
パート1チェックサム付き
パート2チェックサム付き
…
パートNチェックサム付き
別々のデバイスへ分散配置
この規模でも冗長化と修復が成立
- 単一のPUTで送れるのは5GBまで、それ以上は分割が必須
1オブジェクトは最大50TB(かつては5TB)。単一PUTは5GBまでで、それ以上はマルチパートアップロードでパートに分割し、別々のデバイスへ分散してそれぞれをチェックサムで守ります。
⑥ 耐久性と可用性は別の指標
耐久性 99.999999999%データが失われない度合い
可用性いつでもアクセスできる度合い
可用性の設計目標はクラスごとに異なる
S3 Standard99.99%
Standard-IA99.9%
One Zone-IA99.5%(単一AZ)
- One Zone-IAはAZ全損に耐えられないため可用性の設計値が低い
- DynamoDB編で見た『複数AZへの分散配置とパーティショニング』と同じ原理が、S3では耐久性という顔で現れている
イレブンナインは『データが失われない度合い(耐久性)』の話で、『いつでもアクセスできる度合い(可用性)』は別指標です。単一AZに閉じるOne Zone-IAは、AZ全損に耐えられない分だけ可用性の設計値が下がります。