Ceph の rados 設計原則と実装 第 4 章: ストレージの基礎となる OSD

OSD は本質的にオペレーティング システムをオーバーライドするプロセスです。OSD には CPU、メモリ、ネットワーク帯域幅などのリソースがあり、オブジェクト ストレージの実装に使用され、さまざまなタイプのファイル システムと互換性があります。

OSD はクラスター ネットワークを使用して相互に監視し、障害を適時にモニターに報告します。モニターが OSDMap を変更した後、OSD は最新の OSDMap をポイントツーポイントで相互に伝播します。

1. クラスター管理

OSD は定期的にモニターと通信し、自身の状況を報告し、最新の OSDMap を更新し、自身の容量使用状況やキーなどをモニターに報告する必要があるため、OSD プロセスはモニター クライアント コンポーネントを内部的にカプセル化し、次の目的で使用されます。モニターと通信します。

2. ネットワーク通信

ネットワーク通信コンポーネントであるメッセンジャーには、パブリック ネットワークとクラスター ネットワークが含まれます。

3.OSD電源オン

Objectstore のブート データはディスクに保存されます。最初に読み取られて認証され、次に Objectstore のスーパー ブロックがメモリに読み出されます。つまり、Objectstore がマウントされます。すべてが正常です (OSD に十分な権限があり、クラスター UUID を満たしており、正しいバージョン番号などを持っています) に合格した後、OSDMap をモニターと同期する必要があります。OSD の電源がオフになっても OSDMap はまだ更新されているため、OSDMap のバージョンは、 OSD の電源がオンになっている状態は、モニターの最新バージョンと一定の数値が異なる場合があります。そのため、OSD に加えて、モニターは OSDMap で自身のステータスを通知する必要があります。UP に変更します (OSD の電源がオンになっているため)。同時に、モニターは、OSD のローカル OSDMap を更新するために、OSD の電源オフ中に欠落していた OSDMap のいくつかのバージョンの増分 (最大 40) を OSD に送信する必要もあります。

4.OSD障害検出

4 つの状態: Up、Down、In、Out
3 つの検出方法: 自律レポート、ハートビート検出、ウォッチドッグ (維持するためにモニターに定期的にメッセージを送信)
OSD がダウンであることを検出した後、600 秒後にアウトに設定されます影響を受けた PG は移行を開始しました。

5.OSD空間統計

4 つのレベル: NearFull、BackFull (OSD への書き込みから PG の移行を防止)、Full (OSD への書き込みを防止)、Failsafefull (フル マーク遅延による OSD フルネスの最終障壁を回避するための書き込みを防止)

ストレージ プールの合計スペース = ストレージ プールの使用済みスペース + ストレージ プールの最大利用可能スペース

ストレージ プールの最大利用可能スペースの計算式は次のとおりです。 min{ [OSD 容量 - 予約スペース (5 パーセント)] / ストレージ プールの総容量に占める OSD の割合 / ストレージ プールのコピー数} ここで
、 OSD 容量 / OSD の割合 = ストレージ プール内のすべての OSD の容量の合計

ストレージ プールの使用領域を計算する式は、ストレージ プール内のすべての OSD の使用領域の合計 / コピー数です。

実際、上記のストレージプールの最大空き容量の計算式はデータのバランス分散を前提としたものであり、最小値であるため、同じ容量のディスクを2台のOSDとして使用した場合、書き込まれたデータは均等ではありません。最大使用可能スペースを計算するために、min は常に最大の占有スペースの値を取得するため、計算された最大使用可能スペースが小さすぎる原因となります。

おすすめ

転載: blog.csdn.net/mxy990811/article/details/135368901