cephクラスタ内の2つのサーバーが正しく複製されていることを確認する方法

cephクラスタ内の2つのサーバーが正しく複製されていることを確認する方法

最近、私は2つのサーバー構成でcephを構築しました。

最も不安なのは、cephクラスターに2つのサーバーが正しく複製されているかどうかを確認する方法がわからないことです。

cephを使用している人がデータが複製されたことを確認した人はいますか?

答え1

場合に備えて:通常、2ノード構成は本番環境ではなくテスト環境用です。 2ノードクラスタはこれらのエラーに対してより脆弱であるため、冗長性または稼働時間のどちらを失うかを選択できます。プール構成によっては、追加のデータ損失が発生する可能性があります。

2ノードクラスタがあり、ここにデータを保存するプールを作成する必要があるとします。 cephには事前設定されたいくつかのデフォルト値があり、そのうちの1つがデータの複製サイズを反映するデフォルトのプールサイズです。プールサイズ 3 (デフォルト) は、クラスターにアップロードするすべてのオブジェクトのコピーが 3 つ (1 つのコピーと 2 つのコピー) であることを意味します。次の方法でプールサイズを取得できます。

host1:~ # ceph osd pool get <POOL> size
size: 3
host1:~ # ceph osd pool get <POOL> min_size
min_size: 2

min_sizeパラメーターは、プールでまだ機能しているレプリカの最小数を決定します。たとえば、min_sizeとサイズの両方が3の場合、オブジェクトがエラー状態にあると、クラスタはプールへのI / Oを停止します。上記の構成(min_size 2、size 3)がある場合、レプリカの1つが異常であってもデータは処理されます。あなたの場合、プールサイズは2で、min_sizeは1が必要です。ただし、通常の場合にのみプールへの書き込みを許可することにした場合を除き、2と2が推奨されます。

これで、両方のレプリカがアクティブであることを確認する(HEALTH_OK状態のクラスタを除く)、次のことを確認できます。

# Get PGs per pool
host1:~ # ceph pg ls-by-pool <POOL>
PG_STAT OBJECTS MISSING_ON_PRIMARY DEGRADED MISPLACED UNFOUND BYTES     LOG DISK_LOG STATE        STATE_STAMP                VERSION REPORTED  UP      UP_PRIMARY ACTING  ACTING_PRIMARY LAST_SCRUB SCRUB_STAMP                LAST_DEEP_SCRUB DEEP_SCRUB_STAMP           
3.0          24                  0        0         0       0 100663296  84       84 active+clean 2018-09-24 10:00:31.274193   86'84   182:119 [5,7,0]          5 [5,7,0]              5      86'84 2018-09-23 10:39:06.518211             0'0 2018-09-18 14:41:06.260403 
[...]

# Get mapping of a PG
host1:~ # ceph pg map 3.0
osdmap e182 pg 3.0 (3.0) -> up [5,7,0] acting [5,7,0]

ご覧のとおり、この特定のPGにはOSD 5、7、0に3つのレプリカ(サイズ= 3)があり、OSD.5はクライアントにデータを提供するデフォルトのOSDです。

クラスターは Filestore または Bluestore に構築されていますか?ファイルストレージクラスタがある場合は、サーバー上のファイルシステム内のオブジェクトのファイルの場所を確認できます。これこの情報を取得する方法の例については、「クラスター内のオブジェクトの検索」を参照してください。現在、ファイルストアクラスタはありません。しかし、ブルーストアクラスタではこれは機能しません。ファイルを参照できなくなりました。

関連情報