OpenStack Swift。 3つのコピーすべてが同じように役立つわけではありません。

3〜10 Pバイト(3000〜10000台のハードドライブを含む)のストレージを設計しようとすると、OpenStack Swiftの設計に欠陥があります。 判明したように、OpenStack Swift(他の同様のシステムである可能性もあります)は、機器の無限かつ無駄な使用に拡張しません。 多数のディスク(3000を超える)を使用する場合、データの損失はほぼ避けられません。



Openstackの担当者は、3つのコピーを作成することを提案しています(デフォルト)。 この数字はどこから来たのですか? なぜ2、4または5ではないのか:信頼性を計算する方法論を提供していません。



3つのコピーのアイデアはどこから来たのですか


一般的なケース(3-2-1ルール)では、次の状況を考慮して3つのコピーが使用されます。

1.最初のコピー(作業)は、高性能の鉄に基づいています。 これがメインのリポジトリです。 ほとんどの操作は作業コピーにあります。

2. 2番目のコピーは、最初のコピーから地理的に分離されています。 鉄はそれほど生産的ではありません。 データは非同期に複製されます。 主記憶装置に障害が発生した場合、2番目のコピーが負荷を引き継ぎます。

3. 3番目のコピーは、愚かなエラーから保護します(他の管理者が行う必要があります。最初の2つのコピーから優れたソフトウェアとハ​​ードウェアを使用してください)。

つまり、「すべての卵を1つのバスケットに入れない」という原則が満たされています。



Swiftの場合-すべてのデータが1つの場所にあり、同じソフトウェアが使用されます。 それでも、3つのコピーに正確に重点が置かれています(異なる量のバリアントをテストしていません)。



パラドックスをコピーする


ストレージに3つのコピー(冗長性200%)がある場合、これは、データの保存が保証されている間に2つのディスクを失う可能性があることを意味します。 少数のディスクの場合、これが唯一の可能な構成スキームです。 しかし、それを多数のドライブに配布すると、リソースが無駄に無駄になります。 単純なコピーよりも高度な方法(エラー修正)を使用する必要があります。



ダブルパリティスキーム(RAID6)は、2台のドライブを死から保護しますが、冗長性は20〜40%の範囲にあります。 他のストレージ冗長性アルゴリズムもありますが、何らかの理由でOpenStackはそれらを使用しません。



ストレージに3,000個のディスクがあるとしましょう。 Googleの統計によると、ドライブの1〜5%が運用中に故障します。 同時に3台のドライブに障害が発生するイベントは一般的になり、年に数回発生するはずです(3〜6回、計算は省略します)。 Swiftで行われているように、すべてのコピーが偶発的にディスクに散らばっている場合、確実にファイルの1つが3つのデッドディスクになります。



コピー数を増やすことはばかげているようです。 300%? 400%?



CleverSafe


この会社はストレージの構築にもっと思慮深くアプローチし、信頼できるストレージのためにリードソロモンコードを使用して10EBものプロジェクトを提供します。 冗長性は35%で、これは4,500,000台のドライブに対応しています!



乾燥残留物中


-OpenStackは、「クラウド」という大きな言葉と「ラックスペースとNASA」のサポートを解きほぐしています。 他の有名な企業がこのプロジェクトに参加しています。 それはそれほどバラ色ではないかもしれませんが。 現時点では無限のスケーラビリティはありません。

-3つ以上のコピーを使用して、ストレージのパフォーマンスを向上させることができます。 そのため、FacebookはHDFSと30 pbストレージを使用しています。 ただし、失われたデータに関する情報は誰が発表しますか?!

-CleverSafeは、彼らのGPLコードは(4年前)と言います。 たぶん誰かがソースコードを持っていますか?



英語の私の記事のより詳細な計算。



All Articles