第3章 新機能および機能拡張
本セクションでは、Red Hat Ceph Storage の今回のリリースで導入された主要な更新、機能拡張、新機能のリストを紹介します。
本リリースで追加された主な機能は以下のとおりです。
msgr2 プロトコルを使用した有線圧縮が利用可能になりました
今回のリリースでは、ストレージクラスター内のネットワーク操作を保護するために、ネットワーク上の暗号化に加えて、ネットワーク上の圧縮もサポートされています。
詳細は Red Hat Ceph Storage データセキュリティーおよび強化ガイド の 暗号化とキー管理 セクションを参照してください。
Python 通知が効率化されました
以前のリリースでは、現時点ではモジュールを必要としない未使用の通知がいくつかありました。これにより非効率が生じていました。
今回のリリースでは、NotifyType
パラメーターが導入されました。これには、現時点でどのイベントモジュールが消費しているかがアノテーションとして付けられます (例: NotifyType.mon_map
、NotifyType.osd_map
)。結果として、モジュールが要求するイベントのみがキューに入れられます。どのモジュールも消費しないイベントが発行されます。上記の変更により、Python 通知がより効率的になりました。
pg_num
への変更が制限されました。
以前のリリースでは、pgp_num
を超える大規模な変更が pg_num
に加えられた場合に、OSD 別の配置グループの制限に達し、エラーが発生する可能性がありました。
このリリースでは、OSD ごとの配置グループ制限の問題を回避するために、pg_num
への変更が制限されています。
新しい pg_progress
項目が作成されて進行状況の更新に関する配置グループの統計すべてがダンプされなくなります。
以前のリリースでは、pg_dump
項目には不要なフィールドが含まれており、python-land
にコピーすると CPU を浪費していました。これが原因で、ClusterState::lock
の保持時間が長くなっていまし、ms_dispatch
遅延が伸びて一般的にプロセスが遅くなる傾向がありました。
今回のリリースでは、新しい pg_progress
の項目が作成され、mgr tasks
または progress
が必要とするフィールドだけがダンプされるようになります。
mgr_ip
は再フェッチされなくなりました
以前のリリースでは、アクティブな Ceph Manager モジュールの有効な間に mgr_ip
を再フェッチする必要がありました。
今回のリリースでは、アクティブな Ceph Manager モジュールの有効な間に、mgr_ip
は変更されないため、Ceph Manager にコールバックして再フェッチする必要はありません。
Ceph OSD の QoS はデフォルトで mClock アルゴリズムに基づいています。
以前は、スケジューラーはデフォルトで Weighted Priority Queue (WPQ) に設定されていました。mClock アルゴリズムに基づくサービス品質 (QoS) は実験段階にあり、実稼働環境にはまだ推奨されていませんでした。
今回のリリースでは、mClock ベースの操作キューにより、クライアントの入出力 (I/O) やリカバリーまたはバックフィルなどの Ceph OSD 固有の操作や、pg scrub
、snap trim
、および pg deletion
の他のバックグラウンド操作に QoS 制御を適用できるようになります。各サービスへのリソースの割り当ては、各 Ceph OSD の 1 秒あたりの入出力操作 (IOPS) 容量に基づいており、組み込みの mClock プロファイルを使用して実現されます。
本リリースには、以下の拡張機能が含まれます。
- OSD の自動化ベースラインパフォーマンス測定を使用することで、Ceph OSD IOPS 容量が決定されます。これには、現実的ではない計測が検出された場合にデフォルトの容量にフォールバックする予防策が備えられています。
- バックグラウンドタスクのスリープスロットルを設定する必要がなくなりました。
- リカバリーおよび最大バックフィルオプションのデフォルト値が高く、オーバーライドフラグを使用してそれらをオーバーライドできるようになりました。
- mClock プロファイルを使用した設定セットでは、mClock および Ceph パラメーターの調整に関する複雑さを抑えることができます。
詳細は、Red Hat Ceph Storage 管理ガイド の mClock OSD スケジューラー を参照してください。
WORM コンプライアンス認証がサポートされるようになりました
Red Hat は、WORM コンプライアンス認証をサポートするようになりました。
詳細は、S3 のオブジェクトロックの有効化 を参照してください。
ユーザーとバケットにレート制限を設定する
このリリースでは、Red Hat Ceph Storage クラスターでの操作に基づいて、ユーザーとバケットにレート制限を設定できます。詳細は、データ取り込みのレート制限 を参照してください。
persistent write log cache という名前の librbd
プラグインでレイテンシーを軽減する
このリリースでは、Persistent Write Log Cache (PWL) という名前の新しい librbd
プラグインが、SSD デバイスを対象とした永続的でフォールトトレラントなライトバックキャッシュを提供します。レイテンシーが大幅に短縮され、低い io_depths
でのパフォーマンスも向上します。このキャッシュは、チェックポイントを内部で維持するログ順のライトバック設計を使用しているため、クラスターにフラッシュバックされる書き込みは、常にクラッシュ整合性が保たれます。クライアントキャッシュが完全になくなった場合でも、ディスクイメージには整合性がありますが、データは古くなったように見えます。
Ceph File System (CephFS) が、スナップショットの高可用性非同期レプリケーションをサポートするようになりました
以前は、ストレージクラスターごとに 1 つの cephfs-mirror
デーモンのみがデプロイされていたため、CephFS はスナップショットディレクトリーの非同期レプリケーションのみをサポートしていました。
このリリースでは、複数の cephfs-mirror
デーモンを 2 つ以上のノードにデプロイしてスナップショット同期の同時実行を実現できるため、高可用性が提供されます。
詳細は、Red Hat Ceph Storage File System Guide の Ceph File System ミラーリング セクションを参照してください。
BlueStore は V3 にアップグレードされました
このリリースでは、BlueStore オブジェクトストアが V3 にアップグレードされました。次の 2 つの機能があります。
- 割り当てメタデータは RocksDB から削除され、OSD 割り当てを使用してアロケーターオブジェクトの完全なデステージとして実行されるようになりました。
- キャッシュエイジビニングを使用すると、古いオノードには、ホットなワークロードデータよりも低い優先度が割り当てられる場合があります。詳細は、Ceph BlueStore を参照してください。
cephadm
を使用してオペレーティングシステムのチューニングプロファイルを管理する
このリリースでは、cephadm
を使用して、Red Hat Ceph Storage クラスターのパフォーマンスを向上させるためのオペレーティング susyem チューニングプロファイルを作成および管理できます。詳細は、`cephadm` を使用したオペレーティングシステムのチューニングプロファイルの管理 を参照してください。
Red Hat Ceph Storage 5 から Red Hat Ceph Storage 7 への直接のアップグレードが利用可能になります
アップグレード計画を認識するために、Red Hat Ceph Storage 5 から Red Hat Ceph Storage 7 への直接アップグレード (N=2) が利用可能になります。
ファイルシステムを名前でマウントするための新しい cephfs-shell
オプションが導入されました。
以前のリリースでは、cephfs-shell はデフォルトのファイルシステムのみをマウントできました。
今回のリリースでは、CLI オプションが cephfs-shell に追加され、kclient
および ceph-fuse
の mds_namespace=
または fs= オプション
のように、別のファイルシステムを名前を指定してマウントできるようになります。
Day 2 タスクは Ceph Dashboard から実行できるようになりました。
このリリースでは、Ceph ダッシュボードで、ユーザーは毎日または毎週のアクションの頻度を必要とするタスクを毎日 2 回実行できるようになりました。今回の機能強化により、ダッシュボードの評価機能と顧客エクスペリエンスが向上し、その使いやすさと成熟度が強化されます。これに加えて、ユーザーがタスクを完了するための追加情報を取得する際に役立つ新しい画面上の要素も含まれています。
3.1. Cephadm ユーティリティー
Ceph デーモンの認証キーをローテーションできるようになりました。
セキュリティー上の理由から、ユーザーによっては、ストレージクラスター内のデーモンに使用される認証キーを時々ローテーションすることを希望する場合があります。
今回のリリースにより、ceph orch daemon rotate-key DAEMON_NAME
コマンドを使用して ceph デーモンの認証キーをローテーションする機能が導入されました。MDS、OSD、および MGR デーモンの場合、デーモンを再起動する必要はありません。ただし、Ceph Object Gateway デーモンなどの他のデーモンの場合は、デーモンを再起動して新しいキーに切り替える必要がある場合があります。
ブートストラップログが STDOUT
に記録されるようになりました。
今回のリリースにより、潜在的なエラーを減らすために、ブートストラップのシナリオが成功した場合に、ブートストラップログが STDERR
ではなく、STDOUT
に記録されるようになりました。
オーケストレーターが使用する仕様で Ceph Object Gateway ゾーングループを指定できるようになりました。
以前のリリースでは、オーケストレーターは、Ceph Object Gateway のレルムおよびゾーンの設定を処理することができました。ただし、ゾーングループの設定はサポートされていませんでした。
今回のリリースにより、オーケストレーターが使用する仕様で rgw_zonegroup
パラメーターを指定できるようになりました。Cephadm は、仕様からデプロイされた Ceph Object Gateway デーモンのゾーングループを設定します。
ceph orch デーモン add osd は、
OSD のデプロイメントに指定されたホスト名が不明であるかどうかを報告するようになりました
以前のリリースでは、ceph orch daemon add osd
コマンドでは出力がなかったため、ホスト名が間違っていてもユーザーは気づきませんでした。そのため、Cephadm は コマンドを破棄していました。
このリリースでは、OSD のデプロイメントに指定されたホスト名が不明な場合に、ceph orch daemon add osd
コマンドでユーザーに報告されるようになりました。
cephadm シェル
コマンドは、起動時にシェルに使用されているイメージを報告するようになりました。
以前のバージョンでは、ユーザーは、シェルに使用されているイメージを常に認識しているわけではありませんでした。これは、シェル内で実行されるコマンドに使用されるパッケージに影響します。
今回のリリースでは、cephadm shell
コマンドが、起動時にシェルに使用されるイメージを報告するようになりました。ユーザーは、使用されているコンテナーイメージと、シェルの起動時にそのイメージがいつ作成されたかを確認できるため、シェル内で使用されているパッケージを確認できるようになりました。
` /var/log/ceph` の下のクラスターログが削除されるようになりました。
このリリースでは、ノードから Ceph クラスターを削除する一環としてノードをより適切にクリーンアップするために、cephadm rm-cluster
コマンドの実行時に /var/log/ceph
の下のクラスターログが削除されます。--keep-logs
が rm-cluster
コマンドに指定されていない限り、クラスターログは削除されます。
cephadm rm-cluster
コマンドがまだ存在するクラスターに含まれるホストで実行され、そのホストの管理が Cephadm により行われ、Cephadm mgr モジュールがまだ有効で実行されている場合に、Cephadm は新しいデーモンのデプロイをすぐに開始し、ログが表示される可能性があります。
Bugzilla:2036063
デーモン名が ceph orch restart
コマンドに渡されるときのエラー処理が改善されました。
以前のリリースでは、ceph orch restart
コマンドに渡されるデーモンが haproxy または keepalived デーモンである場合に、トレースバックを返していました。そのため、ユーザーは自分の間違いなのか、Cephadm が別の方法で失敗したのかがわかりにくくなっていました。
このリリースでは、ユーザーが予期されるサービス名ではなくデーモン名を ceph orch restart
コマンドに渡したことを識別するための、より適切なエラー処理が導入されました。デーモン名を検出すると、Cephadm はレポートを報告し、通過する有効なサービスについて ceph orch ls
をチェックするようにユーザーに要求します。
ceph rgw realm bootstrap -i rgw_spec.yaml
コマンドを使用して、Ceph Object Gateway レルム、ゾーン、およびゾーングループを作成できるようになりました。
今回のリリースでは、Red Hat Ceph Storage クラスター上で Ceph Object Gateway をセットアップするプロセスを効率化するために、ユーザーは ceph rgw realm bootstrap -i rgw_spec.yaml
コマンドを使用して Ceph Object Gateway レルム、ゾーン、およびゾーングループを作成できます。仕様ファイルは、オーケストレーターで Ceph Object Gateway デーモンをデプロイするために使用されるものと同じモデルである必要があります。次に、コマンドはレルム、ゾーン、およびゾーングループを作成し、その仕様をオーケストレーターに渡し、オーケストレーターは、Ceph Object Gateway デーモンをデプロイします。
例
rgw_realm: myrealm rgw_zonegroup: myzonegroup rgw_zone: myzone placement: hosts: - rgw-host1 - rgw-host2 spec: rgw_frontend_port: 5500
crush_device_class
および location
フィールドはそれぞれ OSD 仕様およびホスト仕様に追加されました。
このリリースでは、crush_device_class
フィールドが OSD 仕様に追加され、ホストの初期クラッシュ位置を参照する location
フィールドがホスト仕様に追加されます。ユーザーがホスト仕様に location
フィールドを設定すると、cephadm はホスト名と指定された場所を使用して ceph osd crash add-bucket
を実行し、クラッシュマップにバケットとして追加します。OSD の場合は、作成時にクラッシュマップ内で、特定の crash_device_class
を使用して設定されます。
これは、フィールドが設定された仕様に基づいて作成された OSD のみが対象です。すでにデプロイされている OSD には影響しません。
ユーザーは Ceph Object Gateway Manager モジュールを有効にできます。
今回のリリースでは、Ceph Object Gateway Manager モジュールが利用可能になり、ceph mgr module enable rgw
コマンドを使用して有効にすると、ceph rgw realm bootstrap
などの Ceph Object Gateway Manager モジュールおよび ceph rgw レルムトークン
コマンドの機能にアクセスできるようになります。
ユーザーは node-exporter デーモンの別のメトリックを有効にできます。
今回のリリースでは、ユーザーが個々のオプションの明示的なサポートを必要とせずに node-exporter デプロイメントをさらにカスタマイズできるようにするために、extra_entrypoint_args
フィールドを使用して、Cephadm によってデプロイされた node-exporter
デーモンに対して有効にできる追加のメトリックが導入されました。
service_type: node-exporter service_name: node-exporter placement: label: "node-exporter" extra_entrypoint_args: - "--collector.textfile.directory=/var/lib/node_exporter/textfile_collector2" ---
Bugzilla:2142431
Ceph モニターのクラッシュ位置を設定して、タイブレーカーモニターを置き換えできます。
今回のリリースでは、ユーザーはホストにデプロイメントされたモニターのクラッシュの場所を設定できます。mon 仕様ファイルで割り当てる必要があります。
例
service_type: mon service_name: mon placement: hosts: - host1 - host2 - host3 spec: crush_locations: host1: - datacenter=a host2: - datacenter=b - rack=2 host3: - datacenter=a
これは主に、Cephadm によってデプロイされたストレッチクラスター内のタイブレーカーモニターデーモンを置き換えることができるように追加されました。この変更がなければ、タイブレーカーモニターはクラッシュの場所を宣言しないと参加できないため、Cephadm によって書き込まれたファイルを手動で編集してタイブレーカーモニターをデプロイメントする必要があります。
crash_device_class を
OSD 仕様のパスごとに指定できるようになりました。
今回のリリースでは、ユーザーが Cephadm を通じて OSD をデプロイメントする際 に
crash_device_class
設定をより柔軟に行えるように、OSD 仕様内のパスごとに指定できるようになりました。OSD サービス全体の crash_device_class
とともに、これらのパスごとの crash_device_class
を提供することもサポートされています。サービス全体の crush_device_class
の場合に、設定はデフォルトと見なされ、パス指定の設定が優先されます。
例
service_type: osd service_id: osd_using_paths placement: hosts: - Node01 - Node02 crush_device_class: hdd spec: data_devices: paths: - path: /dev/sdb crush_device_class: ssd - path: /dev/sdc crush_device_class: nvme - /dev/sdd db_devices: paths: - /dev/sde wal_devices: paths: - /dev/sdf
Cephadm は、アップグレード中にホストがオフラインになった場合に、特定の正常性の警告 UPGRADE_OFFLINE_HOST
を生成するようになりました。
以前は、ホストがオフラインになると、一般的な UPGRADE_EXCEPTION
の正常性の警告が表示されましたが、内容が曖昧すぎて理解しづらいものでした。
このリリースでは、ホストがオフラインであるためにアップグレードが失敗した場合、Cephadm は特定の正常性に関する警告 UPGRADE_OFFLINE_HOST
を生成し、問題がユーザーに透過的に表示されるようになりました。
--verbose
が指定されていない場合は、Cephadm のログすべてが cephadm.log
に記録されなくなりました。
以前は、Gather-facts
などの一部の Cephadm コマンドは、実行されるたびに大量のコマンド出力をログにスパム送信していました。場合によっては、1 分に 1 回でした。
今回のリリースでは、--verbose
が指定されていない場合に、Cephadm ではすべてのログが cephadm.log
に記録されなくなりました。以前に書き込まれたスパムのほとんどが存在しなくなったため、cephadm.log
が読みやすくなりました。