第5章 イレイジャーコードプールの概要


Ceph はデフォルトで複製されたプールを使用します。これにより、Ceph はすべてのオブジェクトをプライマリー OSD ノードから 1 つ以上のセカンダリー OSD にコピーします。イレイジャーコーディングされたプールは、データの持続性を確保するのに必要なディスク容量を減らしますが、レプリケーションよりもコストが高くなります。

Ceph ストレージストラテジーには、データの持続性要件を定義します。データの持続性とは、データが失われることなく、1 つまたは複数の OSD の損失を持続させることができることを意味します。

Ceph は、データをプールに保存します。プールには 2 種類のプールがあります。

  • replicated
  • erasure-coded

イレイジャーコーディングは、Ceph ストレージクラスターにオブジェクトを大幅に格納する方法であり、イレイジャーコードアルゴリズムによりオブジェクトがデータチャンク (k)、およびコーディングチャンク (m) に分割され、これらのチャンクを異なる OSD に保存します。

OSD に障害が発生すると、Ceph は他の OSD から残りのデータ (k) およびコーディング (m) チャンクを取得し、イレイジャーコードアルゴリズムはこれらのチャンクからオブジェクトを復元します。

注記

Red Hat は、書き込みやデータの損失を防ぐために、イレイジャーコーディングされたプールの min_sizeK+1 以上にすることを推奨します。

イレイジャーコーディングは、レプリケーションよりもストレージ容量をより効率的に使用します。n 個のレプリケーションアプローチは、オブジェクトの n 個のコピーを維持するのに対し (Ceph のデフォルトは 3x)、イレイジャーコーディングは k + m チャンクのみを保持します。たとえば、3 データと 2 つのブロックのチャンクは、元のオブジェクトの 1.5x のストレージ領域を使用します。

イレイジャーコーディングはレプリケーションと比べてストレージのオーバーヘッドが少なく、イレイジャーコードアルゴリズムは、オブジェクトへのアクセスや復旧時に、レプリケーションよりも多くの RAM および CPU を使用します。イレイジャーコーディングは、データストレージが永続的であり、耐障害性になければならないものの、高速な読み取り (たとえば、コールドマイグレーションストレージ、履歴レコードなど) を必要としない場合に役立ちます。

Ceph でイレイジャーコードがどのように機能するかの詳細は、Red Hat Ceph Storage 8 の アーキテクチャーガイドCeph イレイジャーコーディング セクションを参照してください。

k=2 および m=2 を使用してクラスターを初期化する際に、Ceph は デフォルト のイレイジャーコードプロファイルを作成します。つまり、Ceph は 3 つの OSD (k+m == 4) にオブジェクトデータを分散し、Ceph がこれらの OSD のいずれかを、データを失うことなく失う可能性があることを意味します。イレイジャーコードのプロファイリングの詳細は、イレイジャーコードプロファイル セクションを参照してください。

重要

.rgw.buckets プールのみをイレイジャーコーディング済みとして設定し、その他のすべての Ceph Object Gateway プールをレプリケート済みとして設定すると、新しいバケットを作成しようとすると以下のエラーで失敗します。

set_req_state_err err_no=95 resorting to 500

このため、イレイジャーコーディングされたプールは omap 操作をサポートしません。特定の Ceph Object Gateway メタデータプールには omap サポートが必要です。

5.1. イレイジャーコーディングされたプールのサンプルの作成

イレイジャーコーディングプールを作成し、配置グループを指定します。ceph osd pool create コマンドは、別のプロファイルが指定されていない限り、デフォルトのプロファイルを使用して消去コード化プールを作成します。プロファイルは、km の 2 つのパラメーターを設定してデータの冗長性を定義します。これらのパラメーターは、データが分割されるチャンクの数と作成されるコーディングチャンクの数を定義します。

最も簡単なイレイジャーコードプールは RAID5 と同等で、少なくとも 4 台のホストが必要です。2+2 プロファイルを使用してイレイジャーコーディングされたプールを作成できます。

手順

  1. 2+2 設定の 4 つのノード上のイレイジャーコーディングされたプールに対して次の設定を設定します。

    構文

    ceph config set mon mon_osd_down_out_subtree_limit host
    ceph config set osd osd_async_recovery_min_cost 1099511627776

    重要

    一般に、イレイジャーコーディングプールではこれは必要ありません。

    重要

    非同期復元のコストは、レプリカ上で遅れている PG ログエントリーの数と、失われたオブジェクトの数です。osd_target_pg_log_entries_per_osd30000 です。したがって、単一の PG を持つ OSD には 30000 のエントリーが存在する可能性があります。osd_async_recovery_min_cost は 64 ビットの整数であるため、2+2 設定の EC プールの場合は、osd_async_recovery_min_cost の値を 1099511627776 に設定します。

    注記

    4 つのノードを持つ EC クラスターの場合、K+M の値は 2+2 です。ノードに完全な障害が発生すると、ノードは 4 つのチャンクとして回復されず、使用できるノードは 3 つだけになります。mon_osd_down_out_subtree_limit の値を host に設定すると、ホストのダウンシナリオ中に OSD がマークアウトされなくなり、データの再バランスが取られることがなくなり、ノードが再び起動するまで待機する必要がなくなります。

  2. 2+2 設定のイレイジャーコーディングされたプールの場合は、プロファイルを設定します。

    構文

    ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host

    [ceph: root@host01 /]# ceph osd erasure-code-profile set ec22 k=2 m=2 crush-failure-domain=host
    
    Pool : ceph osd pool create test-ec-22 erasure ec22

  3. イレイジャーコーディングされたプールを作成します。

    [ceph: root@host01 /]# ceph osd pool create ecpool 32 32 erasure
    
    pool 'ecpool' created
    $ echo ABCDEFGHI | rados --pool ecpool put NYAN -
    $ rados --pool ecpool get NYAN -
    ABCDEFGHI

    32 は配置グループの数です。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.