2.8. CRUSH の調整可能パラメーターの概要
Ceph プロジェクトでは、多くの変更と新機能が指数関数的に拡張されました。Ceph の最初の商用サポート対象メジャーリリース v0.48 (Argonaut) から始め、Ceph は CRUSH アルゴリズムの特定パラメーターを調整する機能を提供します。つまり、設定はソースコードでフリーズしません。
考慮すべき重要な点を以下に示します。
- CRUSH の値を調整すると、ストレージノード間で一部の PG の変化が発生することがあります。Ceph クラスターが多数のデータを保存する場合には、移動するデータの一部を準備する必要があります。
-
ceph-osd
デーモンおよびceph-mon
デーモンは、更新されたマップを受け取るとすぐに、新しい接続の機能ビットを要求するようになります。ただし、すでに接続済みのクライアントはすでに取得され、新機能をサポートしない場合は誤作動します。Ceph クライアントも更新する Ceph Storage Cluster デーモンをアップグレードする場合を確認してください。 -
CRUSH の調整可能パラメーターがレガシー以外の値に設定され、後でレガシー値に戻された場合は、その機能をサポートするのに
ceph-osd
デーモンは必要ありません。ただし、OSD ピアリングプロセスでは、古いマップを調べ、理解する必要があります。したがって、クラスターが以前に非レガシー CRUSH 値を使用していた場合は、マップの最新バージョンがレガシーデフォルトの使用に戻されたとしても、古いバージョンのceph-osd
デーモンを実行しないでください。
2.8.1. CRUSH のチューニング
CRUSH を調整する前に、すべての Ceph クライアントおよびすべての Ceph デーモンが同じバージョンを使用するようにする必要があります。最近アップグレードした場合は、デーモンを再起動して、クライアントを再接続していることを確認します。
CRUSH パラメーターを調整する最も簡単な方法は、既知のプロファイルに変更します。以下のとおりです。
-
legacy
: v0.47 (pre-Argonaut) 以前のバージョンのレガシー動作。 -
argonaut
: v0.48 (Argonaut) リリースがサポートするレガシーの値。 -
bobtail
: v0.56 (Bobtail) リリースでサポートされる値。 -
firefly
: 0.80 (Firefly) リリースでサポートされる値。 -
hammer
: v0.94 (Hammer) リリースでサポートされる値。 -
jewel
: v10.0.2 (Jewel) リリースでサポートされる値。 -
optimal
: 現在の最適値 -
default
: 新規クラスターの現在のデフォルト値。
実行中のクラスターでプロファイルを選択するには、以下のコマンドを実行します。
構文
# ceph osd crush tunables PROFILE
これにより、データの移動が生じる場合があります。
通常、アップグレード後に CRUSH パラメーターを設定するか、警告が表示されるようにする必要があります。バージョン v0.74 以降では、CRUSH パラメーターが最適な値に設定されていない場合に、Ceph は健全性についての警告を発行します。最適な値は v0.73 のデフォルトになります。
既存クラスターの調整可能パラメーターを調整すると、警告を削除できます。この結果、データの移動 (10% の可能性) が生じます。これは優先されるルートですが、データの移動がパフォーマンスに影響する可能性があります。以下を使用して、最適なチューニング可能なパラメーターを有効にできます。
ceph osd crush tunables optimal
パフォーマンスの低下が悪い場合 (たとえば、負荷が非常に多い) か、非常に進捗が行われたか、クライアントの互換性の問題 (カーネルの cephfs または rbd クライアント、または pre-bobtail librados クライアント) がある場合には、以前のプロファイルに戻すことができます。
構文
ceph osd crush tunables PROFILE
たとえば、pre-v0.48 (Argonaut) 値を復元するには、以下のコマンドを実行します。
例
[ceph: root@host01 /]# ceph osd crush tunables legacy
2.8.2. CRUSH のチューニング (難しい方法)
すべてのクライアントが最新のコードを実行していることを確認できる場合は、CRUSH マップを抽出して値を変更し、これをクラスターへ再ミラーリングすることで、調整可能パラメーターを調整できます。
最新の CRUSH マップを抽出します。
ceph osd getcrushmap -o /tmp/crush
調整可能パラメーターの調整を行います。これらの値は、テストした大規模なクラスターと小規模なクラスターの両方に最適な動作を提供するように見えます。このコマンドが機能するには、
crushtool
に--enable-unsafe-tunables
引数も指定する必要があります。このオプションは細心の注意:crushtool -i /tmp/crush --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 -o /tmp/crush.new
変更したマップの再インジェクト:
ceph osd setcrushmap -i /tmp/crush.new
2.8.3. CRUSH のレガシー値
詳細は、CRUSH 調整可能パラメーターのレガシー値を設定できます。
crushtool -i /tmp/crush --set-choose-local-tries 2 --set-choose-local-fallback-tries 5 --set-choose-total-tries 19 --set-chooseleaf-descend-once 0 --set-chooseleaf-vary-r 0 -o /tmp/crush.legacy
ここでも、特別な --enable-unsafe-tunables
オプションが必要になります。さらに、上記のように、機能ビットが完全に適用されていないため、レガシー値に戻した後、古いバージョンの ceph-osd
デーモンを実行する場合は注意が必要です。