高いデータの可用性と耐久性
Cephオブジェクトストレージは、データの可用性をレプリケーションと高度なエラーコーディングによって実現し、データはパリティ情報と組み合わせられ、シャーディングされ、ストレージプール全体に分散されます。
ストレージデバイスが故障した場合、データを再構築する必要があるのは一部のシャードのみであり、再構築には時間がかからず、パフォーマンスも低下しません。故障したストレージデバイスは、都合の良い時に交換することができます。
Cephは広範に分散されたデータとデータスクラビング技術を組み合わせており、メディアに書き込まれたデータを継続的に検証することで、15桁のデータ耐久性を実現することができます。
データのレプリケーション、エラーコーディング、スクラビング
オブジェクトレプリケーション
クライアントがデータを書き込む場合、オブジェクトIDとプール名を使用して、どのOSDに書き込むかを計算します。 クライアントがデータをOSDに書き込むと、OSDはデータを1つまたは複数のOSDにコピーします。 複数のOSDが同時に故障した場合にデータが生き残るように、レプリケーションを任意の数だけ設定することができます。 レプリケーションはディスクアレイのRAID-1に似ていますが、データの複製をより多く許可します。 スケールにおいては、単純なRAID-1のレプリケーションだけではハードウェアの故障リスクを十分にカバーできなくなることがあります。 より多くのレプリカを保存する唯一のデメリットは、ストレージコストです。
Cephクライアントは、CRUSHアルゴリズムに基づいて、データをランダムにOSDに書き込みます。OSDディスクまたはノードが故障した場合、Cephは健全なOSDに保存されている他のレプリケーションからデータを再生成することができます。
Cephがサーバー、ラック、部屋、またはデータセンターの異なる場所に複製データを保存し、障害ドメイン全体の障害による data loss を回避できるよう、障害ドメインを定義することができます。例えば、15台のストレージサーバーが5つのラックにインストールされている場合(各ラックに3台のサーバーがある)、障害ドメインとしてレプリカ3とラックを使用することができます。Cephクラスタへのデータ書き込みは、常に5つのラックのうち3つに3つのコピーが保存されます。データは、最大2つのラックが故障しても、クライアントサービスの劣化なしで生き残ることができます。CRUSHルールは、Ceph storageに単一障害点がないようにするための鍵です。
イレイサーコーディング
レプリケーションは最も総合的なパフォーマンスを提供しますが、ストレージスペースの効率はあまり高くありません。特に、より高度な冗長性が必要な場合は、
RAID-1に代わるものとしてRAID-5またはRAID-6を過去に使用したのは、高いデータ可用性を得るためです。パリティRAIDは、ストレージのパフォーマンス(主に書き込みパフォーマンス)の犠牲に、ストレージのオーバーヘッドを大幅に削減しながら冗長性を確保します。Cephは、類似の結果を得るために、消去符号化を使用しています。ストレージシステムの規模が大きくなると、1つまたは2つのディスクや障害ドメインの同時障害を許容することに自信を持てなくなるかもしれません。エラーコードアルゴリズムを使用すると、より高い冗長性を設定できますが、オーバーヘッドのスペースは少なくなります。
エラーコーディングは、元のデータをK個のデータチャンクに分割し、追加のM個のコーディングチャンクを計算します。Cephは、同時に最大M個の障害ドメインが失敗してもデータを回復できます。異なる障害ドメインにあるOSDには、合計K+Mのチャンクが格納されています。
スクラブ
データの一貫性と整合性を維持するために、Ceph OSDデーモンは配置グループ内のオブジェクトをスクラブすることができます。 つまり、Ceph OSDデーモンは、1つの配置グループ内のオブジェクトメタデータを他のOSDに格納された配置グループのレプリカと比較することができます。 スクラブ(通常は毎日実施)は、バグやファイルシステムのエラーを検出します。 Ceph OSDデーモンは、オブジェクトのデータをビット単位で比較することにより、より深いスクラブを実行します。 ディープスクラブ(通常は週に1回実行される)は、軽いスクラブでは明らかにならなかったドライブの不良セクタを見つけます。
データの回復
Cephのデータ配置設計により、データはすべての健全なOSDによって修復されます。データ再修復には予備ディスクは必要ありません。これにより、ディスクアレイと比較して、再修復にかかる時間が大幅に短縮されることがあります。
- CRUSHマップとルールの設定