4.16 リリースノート
Red Hat Ceph Storage 6.1 のリリースノート
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat Ceph Storage ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。これを行うには、Bugzilla のチケットを作成します。
Bugzilla の Web サイトに移動します。Component ドロップダウンメニューで、Documentation を選択します。Sub-Component ドロップダウンで、適切なサブコンポーネントを選択します。ドキュメントの適切なバージョンを選択します。Summary および Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記載してください。オプション: 添付ファイルを追加します (ある場合)。Submit Bug をクリックします。
第1章 概要
Red Hat Ceph Storage は、非常にスケーラブルでオープンなソフトウェア定義のストレージプラットフォームであり、最も安定したバージョンの Ceph ストレージシステムと Ceph 管理プラットフォーム、デプロイメントユーティリティー、およびサポートサービスを組み合わせたものです。
Red Hat Ceph Storage ドキュメントは、https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/6 から入手できます。
第2章 謝辞
Red Hat Ceph Storage バージョン 6.1 には、Red Hat Ceph Storage チームの数多くの貢献が反映されています。さらに Ceph プロジェクトでは、Ceph コミュニティーの個人や組織からの貢献の度合いが質と量の両面で大幅に拡大しています。Red Hat Ceph Storage チームの全メンバー、Ceph コミュニティーの個々の貢献者、および以下の組織を含むすべての方々の貢献に謝意を表します。
- Intel®
- Fujitsu ®
- UnitedStack
- Yahoo ™
- Ubuntu Kylin
- Mellanox ®
- CERN ™
- Deutsche Telekom
- Mirantis ®
- SanDisk ™
- SUSE ®
第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
が読みやすくなりました。
3.2. Ceph Dashboard
OSD のブロックリスト数に新しいメトリクスが追加されます。
今回のリリースでは、対応するアラートを設定するために、新しいメトリクス ceph_cluster_osd_blocklist_count
が Ceph Dashboard に追加されました。
ceph-exporter
デーモンの導入
今回のリリースでは、すべての Ceph デーモンのパフォーマンスカウンターを収集し、Prometheus メトリックとして公開する ceph-exporter
デーモンが導入されました。これは、大規模なクラスターでパフォーマンスを保つためにクラスターの各ノードにデプロイされます。
Dashboard を使用した RBD ミラーリングの強制プロモートのサポート
以前のリリースでは、RBD ミラーのプロモート/デモートは Ceph Dashboard に実装されていましたが、強制的にプロモートするオプションはありませんでした。
今回のリリースでは、Ceph ダッシュボードを通じて RBD ミラーリングを強制的にプロモートするためのサポートが追加されました。Ceph ダッシュボードでプロモーションが失敗した場合、ユーザーはプロモーションを強制するオプションを選択できます。
ラベル付きパフォーマンスカウンターの収集および公開のサポート
今回のリリースでは、Ceph デーモンのラベル付きパフォーマンスカウンターをラベル付きの Prometheus メトリックとして収集および公開するためのサポートが導入されました。
3.3. Ceph ファイルシステム
クライアントの読み込みを増やすために cephfs-top の上限を引き上げました。
以前のリリースでは、cephfs-top
ユーティリティーの制限により、一度にロードできるクライアントの数は 100 未満のみで、それ以上のクライアントがロードされるとスクロールできず、ハングすることもありました。
今回のリリースでは、cephfs-top
ユーザーは垂直および水平方向にスクロールできるようになりました。これにより、cephfs-top
は約 10,000 のクライアントを読み込むことができます。ユーザーはロードされたクライアントをスクロールして、画面上に表示できます。
cephfs-top
で選択したフィールドに基づいてクライアントを並べ替えることができるようになりました。
今回のリリースでは、cephfs-top
で選択したフィールドに基づいてクライアントをソートするオプションが追加され、表示するクライアントの数を制限できるようになりました。これにより、ユーザーは要件に応じてフィールドの順序をもとにメトリックを分析できるようになります。
ヘッド以外の omap
エントリーが omap
エントリーに含まれるようになりました。
以前のリリースは、フラグメントのマージまたは分割を決定するときにヘッドスナップショット以外のエントリーが考慮されなかった場合に、ディレクトリーフラグメントは分割されませんでした。このため、ディレクトリーオブジェクト内の omap
エントリーの数が特定の制限を超え、クラスター警告が発生します。
今回のリリースでは、制限を超えないようにディレクトリーフラグメントのマージまたは分割を決定する時に、ヘッド以外の omap
エントリーが omap
エントリーの数に含まれるようになりました。
3.4. Ceph Object Gateway
別のゾーンから複製されたオブジェクトがヘッダーを返すようになりました。
今回のリリースでは、マルチサイト設定で、別のゾーンから複製されたオブジェクトは、x-amz-replication-status=REPLICA
ヘッダーを返し、オブジェクトがローカルに複製されたかどうかを、マルチサイトのユーザーが識別できるようになりました。
Bugzilla:1467648
AWS PublicAccessBlock のサポート
今回のリリースでは、Ceph Object Storage は PutPublicAccessBlock
などの AWS パブリックアクセスブロック S3 API をサポートするようになりました。
Swift オブジェクトストレージ方言に SHA-256
および SHA-512
ダイジェストアルゴリズムのサポートが含まれるようになりました
以前は、ダイジェストアルゴリズムのサポートが 2022 年に OpenStack Swift によって追加されましたが、Ceph Object Gateway はそれらを実装していませんでした。
今回のリリースでは、Ceph Object Gateway の Swift オブジェクトストレージ方言に、tempurl
操作での SHA-256
および SHA-512
ダイジェストメソッドのサポートが含まれるようになり、Ceph Object Gateway は、最近の OpenStack Swift クライアントによる tempurl
操作を正しく処理できるようになりました。
3.5. マルチサイトの Ceph Object Gateway
オブジェクトがゾーンに同期されるとバケット通知が送信されます。
今回のリリースでは、オブジェクトがゾーンに同期されるときにバケット通知が送信され、外部システムがオブジェクトレベルでゾーン同期ステータスの情報を受信できるようになります。s3:ObjectSynced:*
および s3:ObjectSynced:Created
のバケット通知イベントタイプが追加されました。バケット通知メカニズムが設定されている場合、オブジェクトの同期が成功すると、同期された Ceph Object Gateway から通知イベントが送信されます。
トピックと通知設定はどちらも、通知イベントの送信元を確認するゾーンごとに個別に実行する必要があります。
ゾーンがデフォルトで複製される場合は、バケットごとの複製を無効にします。
今回のリリースでは、デフォルトでゾーンが複製されるときに、マルチサイト同期ポリシーを使用してバケットごとの複製を無効にする機能が導入され、選択したバケットをオプトアウトできるようになりました。
第4章 バグ修正
本セクションでは、今回リリースされた Red Hat Ceph Storage で修正されたユーザーに大きな影響を及ぼすバグを説明します。また、セクションでは、以前のバージョンで見つかり修正された既知の問題を説明します。
4.1. Cephadm ユーティリティー
Ceph の初期設定で引用符で囲まれた IP のコンマ区切りリストがパブリックネットワークとして渡された場合に、ブートストラップが失敗しなくなりました。
以前のリリースでは、リストが引用されている場合に、cephadm
ブートストラップは IP アドレスのコンマ区切りリストを誤って解析していました。このため、引用符で囲まれた IP アドレスのコンマ区切りのリスト (例: '172.120.3.0/24,172.117.3.0/24,172.118.3.0/24,172.119.3.0/24') が、--config
パラメーターを使用してブートストラップに渡される Ceph 初期設定で public_network
として指定された場合、ブートストラップは失敗します。
この修正により、public_network
または cluster_network
のブートストラップに渡される初期 Ceph 設定に、引用符で囲まれた IP のコンマ区切りのリストを入力できるようになり、想定どおりに機能するようになりました。
cephadm
は、指定の yaml ファイルの解析を必要以上に試行しなくなりました。
以前のリリースでは、cephadm
ブートストラップは、指定された yaml ファイルを必要以上に手動で解析しようとしていました。このため、ユーザーが有効な yaml ファイルを cephadm
ブートストラップに指定したとしても、個々の仕様によっては手動解析が失敗し、仕様全体が破棄されることがありました。
今回の修正により、cephadm
は必要以上の yaml の解析を試行しなくなりました。ホストの仕様は、SSH キーを分散する目的でのみ検索されます。それ以外の場合、仕様は単にマネージャーモジュールに渡されます。cephadm bootstrap --apply-spec
コマンドは、有効な仕様であれば期待どおりに動作するようになりました。
host.containers.internal
エントリーが、デプロイされたコンテナーの /etc/hosts
ファイルに追加されなくなりました。
以前のリリースでは、特定の podman バージョンでデプロイされたコンテナーの /etc/hosts
ファイルに host.containers.internal
エントリーがデフォルトで追加されていました。このため、一部のサービスにおいて、このエントリーが実ノードの FQDN であると誤解される問題が発生しました。
今回の修正により、Cephadm はコンテナーのデプロイ時にホストの /etc/hosts
ファイルをマウントするようになりました。コンテナー内の /etc/hosts
ファイルに host.containers.internal
エントリーは存在しなくなり、このエントリーに関連するすべてのバグが回避されますが、ユーザーはコンテナー内の名前解決のためにホストの /etc/hosts
を引き続き参照できます。
cephadm
は、実際の変更が発生した場合にのみデバイス情報をログに記録するようになりました。
以前のリリースでは、cephadm` は、OSD に関して報告されたすべてのフィールドを比較して、新しいデバイスまたは変更されたデバイスがないかを確認します。しかし、これらのフィールドの 1 つに、毎回異なるタイムスタンプが含まれていました。そのため、`cephadm
は、実際に変更されたかどうかに関係なく、ホストのデバイスを更新するたびに 'Detected new or changed devices' とログに記録していました。
今回の修正により、デバイス情報と以前の情報を比較する場合に、常に変更される可能性のあるタイムスタンプのフィールドは考慮されなくなりました。Cephadm
は、デバイスに実際の変更がある場合にのみログを記録するようになりました。
生成された Prometheus URL にアクセスできるようになりました。
以前のリリースでは、ホストに FQDN がない場合に、生成される Prometheus URL は http://_host-shortname :9095_ となり、アクセスできませんでした。
今回の修正により、使用可能な FQDN がない場合、短縮形でホスト IP が使用されます。Prometheus 用に生成された URL は、利用できる FQDN がないサービスにホスト Prometheus がデプロイされている場合でも、アクセス可能な形式になりました。
ホストへのファイル書き込み中に cephadm のパーミッションの問題が発生しなくなりました。
以前は、cephadm は最初に /tmp
ディレクトリー内にファイルを作成してから、最終的な場所に移動していました。このため、特定の設定では、ファイルの書き込み時に権限の問題が発生し、権限が変更されるまで cephadm が事実上動作できなくなっていました。
この修正により、cephadm は/tmp 内のサブディレクトリーを使用して、同じ権限の問題がないホストにファイルを書き込みます。
4.2. Ceph Dashboard
Expand Cluster ウィザード の OSD 作成手順のデフォルトオプションが期待どおりに機能します。
以前のリリースは、Expand Cluster ウィザード の OSD 作成手順のデフォルトオプションがダッシュボードで機能せず、オプションが選択済みとして表示されてユーザーが誤解する原因となっていました。
今回の修正により、デフォルトのオプションが期待どおりに機能するようになりました。さらに、手順を飛ばすことができるように、「省略」ボタンが追加されました。
ユーザーは通常のスナップショットまたはミラースナップショットを作成できます。
以前のバージョンでは、ユーザーが通常のイメージスナップショットを作成してイメージスナップショットをミラーリングできる場合でも、通常のイメージスナップショットを作成できませんでした。
この修正により、ユーザーは 2 つのオプションから通常またはミラーイメージのスナップショットモードを選択できるようになります。
flicker がホストページで発生しなくなりました。
以前のリリースでは、複数のホストが存在する場合、ホストページが 5 秒後にちらつき、ユーザーエクスペリエンスが低下していました。
今回の修正により、API が通常どおりページを読み込むように最適化され、ちらつきは発生しなくなりました。
4.3. Ceph Metrics
Ceph エクスポータと prometheus マネージャーモジュールによって生成されるメトリック名は同じです。
以前は、Ceph デーモン (パフォーマンスカウンター) からのメトリックは、Prometheus マネージャーモジュールによって生成されていました。新しい Ceph エクスポーターは Prometheus マネージャーモジュールを置き換え、生成されたメトリクス名が準拠するルールは Prometheus マネージャーモジュールで適用されるルールと同じではありませんでした。このため、同じパフォーマンスカウンターのメトリックの名前は、メトリックのプロバイダー (Prometheus マネージャーモジュールまたは Ceph エクスポーター) に応じて異なりました。
この修正により、Ceph エクスポーターは Prometheus マネージャーモジュールのルールと同じルールを使用して、Ceph パフォーマンスカウンターからメトリック名を生成します。Ceph エクスポーターと Prometheus マネージャーモジュールによって生成されるメトリックはまったく同じです。
4.4. Ceph ファイルシステム
スナップショットの作成時に、スナップショットディレクトリーの mtime と change_attr が 更新されるようになりました。
以前のリリースでは、libcephfs
クライアントは mtime を更新せず、スナップが作成または削除されたときに属性を変更していました。このため、NFS クライアントは CephFS NFS-Ganesha エクスポート内の CephFS スナップショットを正しくリストできませんでした。
この修正により、スナップショットが作成、削除、名前変更されるときに、スナップショットディレクトリー .snap
の mtime と change_attr が更新されます。mtime および change_attr を修正して、スナップショットの一覧表示で古いスナップショットエントリーを返さないようにします。
cephfs-top -d --lay
オプションは、1 ~ 25 の範囲の整数値のみを受け入れます。
以前のリリースでは、いくつかの新しい Curses メソッドが追加されたため cephfs-top -d --lay
オプションは正しく動作しませんでした。新しい Curses メソッドは整数値のみを受け入れるため、ヘルパー関数から浮動小数点値を取得する際に例外が出力されました。
今回の修正により、cephfs-top -d [--delay]
オプションは 1 から 25 までの整数値のみを受け入れ、cephfs-top
ユーティリティーが期待どおりに機能するようになりました。
リンク解除の完了後に同じ dentry を作成しても、MDS デーモンはクラッシュしません。
以前は、リンク解除と作成操作の間で競合状態が発生しました。このため、前回のリンク解除要求が何らかの理由で遅れ、その間に同じ dentry を作成しようとすると、MDS デーモンがクラッシュして失敗するか、新規作成は成功しても書き込まれた内容が失われます。
この修正により、ユーザーは同じ dentry を作成する場合の競合を避けるために、リンク解除が完了するまで待つ必要があります。
ceph nfs cluster info CLUSTER_ID
のコマンドを実行すると、存在しないクラスターが表示されなくなりました。
以前のリリースでは、ceph nfs cluster info CLUSTER_ID
コマンドの実行時にクラスターの存在がチェックされないため、virtual_ip
と backend
、それぞれ null と empty など、存在しないクラスターの情報が表示されていました。
今回の修正により、'ceph nfs cluster info CLUSTER_ID' コマンドはクラスターの存在をチェックし、存在しないクラスターがクエリーされると Error ENOENT: cluster does not exist が出力されます。
スナップスケジュールモジュールが誤ってボリュームモジュールを参照することがなくなりました。
以前のリリースでは、スナップスケジュールモジュールは、サブボリュームパスをフェッチしようとすると、誤ってボリュームモジュールを参照していました。間違ったボリュームモジュール名とリモートメソッド名を使用したため、ImportError
トレースバックが表示されます。
今回の修正により、テストされていない間違ったコードが修正され、メソッドが実装されて、スナップスケジュール CLI インターフェイスメソッドから正しく呼び出されるようになりました。スナップスケジュールモジュールは、サブボリュームレベルのスケジュールを追加しようとするときに、サブボリュームパスを正しく解決するようになりました。
整数オーバーフローと ops_in_flight
値オーバーフローは発生しなくなりました
以前のリリースでは、_calculate_ops
は設定オプション filer_max_purge_ops
に依存していましたが、これは実行中に変更することもできました。このため、ops_in_flight
の値が uint64
の機能を超える値に設定されている場合は、整数オーバーフローが発生し、ops_in_flight が
max_purge_ops
よりもはるかに大きくなり、適切な値に戻すことができなくなります。
今回の修正により、Filer::_do_purge_range()
ですでに使用されているため、ops_in_flight
での filer_max_purge_ops
の使用は、無視されます。整数オーバーフローおよび ops_in_flight
値オーバーフローが発生しなくなりました。
無効な OSD リクエストは RADOS に送信されなくなりました。
以前は、最初の dentry に十分なメタデータがあり、サイズが max_write_size
より大きい場合に、無効な OSD リクエストが RADOS に送信されていました。このため、RADOS は無効なリクエストを失敗させ、CephFS が読み取り専用になります。
この修正により、すべての OSD リクエストには、RADOS に送信される前に検証済みの情報が入力され、無効な OSD リクエストによって CephFS が読み取り専用になることはありません。
MDS は、孤立したディレクトリーエントリーを処理するようになりました。
以前のリリースでは、MDS 孤立したディレクトリー処理ロジックのバグが原因で、MDS が孤立したディレクトリーエントリーの一部の処理をスキップしていました。このため、MDS は孤立したディレクトリーエントリーを処理できず、削除されたファイルが領域を解放しません。
今回の修正により、孤立したインデックスポインターが修正され、MDS が孤立したディレクトリーをすべて処理するようになりました。
Ceph ファイルシステムに接続されたプールのプールレベルのスナップは無効になります。
以前のリリースでは、プールレベルのスナップと mon 管理のスナップには独自のスナップ ID の名前空間があり、これが原因で、ID 間で競合が発生し、Ceph Monitor がプールレベルのスナップであるか、mon が管理するスナップであるかを、一意に特定できませんでした。このため、プールレベルのスナップと mon 管理のスナップのセットに存在する ID を参照するときに、間違ったスナップが削除される可能性がありました。
この修正により、Ceph ファイルシステムに接続されたプールのプールレベルのスナップが無効になり、プール ID の競合が発生しなくなります。したがって、CephFS スナップが削除されたときに、意図しないデータ損失が発生することはありません。
クライアント要求が MDS とクライアント間で無制限にバウンスすることがなくなりました。
以前のリリースでは、CephFS クライアントと MDS との間で、クライアント要求の Ceph プロトコルが一致しませんでした。このため、CephFS クライアントと MDS の間で通信するときに、対応する情報が切り捨てられるか失われ、クライアント要求が MDS とクライアントの間で無制限にバウンスすることになります。
今回の修正により、クライアント要求のプロトコル内の対応するメンバーの型が同じ型になるように修正され、新しいコードは古い Ceph と互換性が確保されるようになります。クライアント要求は MDS とクライアントの間で無制限にバウンスすることはなく、十分に再試行された後に停止します。
メタデータの破損を検出するためにコードアサートが Ceph Manager デーモンサービスに追加されました
以前は、Postgres などを実行するワークロードの Manager デーモンサービスによって、スナップショット関連の一種のメタデータ破損が発生していました。
この修正により、新しい破損が検出された場合にトリガーされるコードアサートが Manager デーモンサービスに追加されます。これにより、破損の拡大が軽減され、ログを収集して原因を特定できるようになります。
クラスターを Red Hat Ceph Storage 6.1 にアップグレードした後にデーモンがクラッシュした場合の分析と修正措置については、Red Hat サポート に問い合わせてください。
セッションマップのバージョンの不一致の問題が原因で MDS デーモンがクラッシュしなくなりました。
以前のリリースでは、MDS フェイルオーバーが発生すると、MDS セッションマップジャーナルログが正しく保持されませんでした。このため、新しい MDS がジャーナルログを再生しようとすると、セッションマップジャーナルログが MDCache 内の情報または他のジャーナルログからの情報と一致せず、MDS デーモンがアサートをトリガーして自身をクラッシュさせます。
今回の修正により、MDS デーモンをクラッシュさせずに、セッションマップバージョンを強制的に再生しようとしても、セッションマップバージョンの不一致が原因の MDS デーモンのクラッシュは発生しません。
MDS はキャップ取り消しの確認を待っている間に無期限に停止することがなくなりました。
以前は、__setattrx()
が失敗した場合、_write()
は、CEPH_CAP_FILE_WR
キャップ参照を保持し、MDS はキャップ失効確認を待機して無期限に停止していました。さらに、他のクライアントの要求も無期限に停止してしまう原因にもなっていました。
今回の修正により、__setattrx ()
が失敗し、MDS のキャップ取り消し要求がスタックしない場合に、CEPH_CAP_FILE_WR
キャップ参照が解放されます。
4.5. Ceph Volume ユーティリティー
ceph-volume
内のデータベースデバイスごとにサイズが正しく計算されます。
以前の RHCS 4.3 では、各データベースデバイスが独自の VG を持っていたため、ceph-volume
は内部のすべてのデータベースデバイスを含む単一の VG を作成しませんでした。このため、データベースのサイズは LV ごとに異なる方法で計算されます。
今回のリリースでは、LVM レイアウトを備えた新しいデータベースデバイスを考慮するためにロジックが更新されました。データベースデバイスごとにサイズが正しく計算されます。
4.6. Ceph Object Gateway
末尾にスラッシュを付けても付けなくてもトピックの作成が可能になりました。
以前のリリースでは、プッシュエンドポイント URL の末尾にスラッシュが 1 つある http エンドポイントはトピックの作成に失敗していました。
この修正により、トピックの作成は末尾のスラッシュの有無にかかわらず許可され、正常に作成されます。
ブロックサイズが 4K に変更されます。
以前のリリースでは、GC キューを消費する 1K ブロックサイズの使用により、Ceph Object Gateway の GC 処理に過度の時間がかかりました。これにより、大規模な GC キューの処理が遅くなります。
今回の修正により、ブロックサイズが 4K に変更され、大規模な GC キューの処理が高速化されました。
タイムスタンプはマルチパートアップロードバケット通知イベントで受信者に送信されます。
以前のリリースでは、マルチパートアップロードバケット通知イベントでタイムスタンプが送信されませんでした。このため、イベントの受信者は、マルチパートアップロードがいつ終了したかを分かりませんでした。
今回の修正により、マルチパートアップロードが終了したときのタイムスタンプが通知イベントで受信者に送信されます。
オブジェクトのサイズと etag
値が 0
/empty
として送信されなくなりました。
以前のリリースでは、オブジェクトメタデータによっては、ライフサイクルからバケット通知をディスパッチする前にデコードされませんでした。このため、ライフサイクルイベントからの通知では、オブジェクトサイズと etag
値が 0
/empty
として送信されていました。
この修正により、オブジェクトのメタデータがフェッチされ、値が通知とともに正しく送信されるようになりました。
Ceph Object Gateway が Kafka ブローカーの切断から回復するようになりました。
以前のリリースでは、Kafka ブローカーが 30 秒以上停止した場合、ブローカーが再び起動した後は再接続されませんでした。このため、バケット通知は送信されず、最終的にキューがいっぱいになると、通知を必要とする S3 操作が拒否されます。
今回の修正では、ブローカーがダウンしている時間に関係なくブローカーの再接続が行われ、Ceph Object Gateway が Kafka ブローカーの切断から回復できるようになりました。
チャンク化された Transfer-Encoding を使用した S3 PUT リクエストに content-length
は必要なくなりました。
以前のリリースでは、x-amz-decoded-content-length
フィールドを指定せずに Transfer-Encoding:chunked
を使用してオブジェクトの PUT 操作を行う S3 クライアントは失敗していました。その結果、S3 PUT リクエストは 411 Length Required
http ステータスコードで失敗します。
この修正により、チャンク化された Transfer-Encoding を使用した S3 PUT リクエストで content-length
を指定する必要がなくなり、S3 クライアントは期待どおりに S3 PUT リクエストを実行できるようになりました。
適切な認証情報を使用してリモート S3 サービスを設定できるようになりました。
以前のリリースでは、リモートクラウド S3 オブジェクトストアサービスを設定してオブジェクトを移行する際に、数字で始まるアクセスキーが誤って解析されていました。このため、オブジェクトの遷移が失敗する可能性がありました。
今回の修正により、キーが正しく解析されるようになりました。移行用の正しい認証情報を使用してリモート S3 サービスを設定することはできません。
4.7. マルチサイトの Ceph Object Gateway
バケット属性がアーカイブ同期モジュールで上書きされなくなりました。
以前のリリースでは、バケット属性はアーカイブ同期モジュールで上書きされていました。このため、archive zone sync_object()
が実行されると、バケットポリシーまたはその他の属性がリセットされます。
今回の修正により、バケット属性がリセットされないようになりました。ソースに設定されたバケット属性はリセットされずにアーカイブゾーンに複製されます。
Bugzilla:1937618
ゾーングループは通知イベントのバケット ARN に追加されます。
以前のバージョンでは、通知イベントのバケット ARN にゾーングループがありませんでした。このため、通知イベントハンドラーが複数のゾーングループからイベントを受信すると、イベントのソースバケットの識別に混乱が生じていました。
今回の修正により、ゾーングループがバケット ARN に追加され、複数のゾーングループからイベントを受信する通知イベントハンドラーに必要な情報がすべて含まれるようになりました。
bucket read_sync_status()
コマンドは負の ret 値を返さなくなりました。
以前のリリースでは、バケット read_sync_status()
は、常に負の ret 値を返していました。このため、bucket sync marker コマンドは、: ERROR: sync.read_sync_status() returned error=0
のエラーで失敗します。
今回の修正により、bucket read_sync_status()
操作からの実際の ret 値が返され、bucket sync marker コマンドが正常に実行されるようになりました。
新しいバケットインスタンス情報は、新しく作成されたバケットに保存されます。
以前のリリースは、アーカイブゾーンではオブジェクトのアーカイブされたバージョンを保存するために、ソースバケットが削除されると新しいバケットが作成されていました。新しいバケットインスタンスの情報は古いインスタンスに保存され、アーカイブされたゾーン上の新しいバケットにアクセスできるようになります。
今回の修正では、バケットインスタンス情報は新しく作成されたバケットに保存されます。ソース上で削除されたバケットは、アーカイブゾーンで引き続きアクセスできます。
バケットに num_shards
の値が 0
の場合、セグメンテーション違反が発生しなくなりました。
以前のリリースでは、バケットの num_shards
値が 0
の場合に、マルチサイト同期によりセグメンテーションの問題が発生していました。これが原因で、一貫性のない同期動作とセグメンテーション違反が発生しました。
今回の修正では、num_shards=0
がデータ同期で適切に表現され、シャード値 0
のバケットでも同期に関して問題が発生しなくなりました。
4.8. RADOS
OSD の IOPS 容量をクエリーすると、基礎となるデバイスタイプに一致する設定オプションのみが測定値/デフォルト値を表示します。
以前のリリースでは、osd_mclock_max_capacity_iops_[ssd|hdd]
の値は OSD の基礎となるデバイスタイプに応じて設定されていました。設定オプションには、デフォルト値があり、クエリー時に表示されていました。たとえば、OSD の基礎となるデバイスタイプが SSD の場合に、HDD オプション (osd_mclock_max_capacity_iops_hdd
) のデフォルト値もゼロ以外の値で表示されました。これが原因で、クエリー時に OSD の HDD オプションと SSD オプションの両方の値を表示すると、正しいオプションの解釈に混乱が生じていました。
今回の修正により、基礎となるデバイスタイプに一致する OSD の IOPS 容量関連の設定オプションが設定され、代替/非アクティブな設定オプションが 0
に設定されます。OSD の IOPS 容量をクエリーすると、基礎となるデバイスタイプに一致する設定オプションのみが測定値/デフォルト値を表示します。代替/非アクティブオプションは、無効であることを明確に示すために 0 に設定されます。
4.9. RBD ミラーリング
ネームスペース内でイメージミラーリングを有効にするときのエラーメッセージでさらなる見解が提供されるようになりました。
以前のバージョンでは、namespace 内でイメージミラーリングを有効にしようとすると、cannot enable mirroring in current pool mirroring mode エラーで失敗していました。このエラーでは、問題に関する見解や解決策が分かりませんでした。
今回の修正により、詳細にわたる情報を提供できるように、エラー処理が改善され、エラーが "cannot enable mirroring: mirroring is not enabled on a namespace" と表示するようになりました。
スナップショットミラーリングが永続的に停止しなくなります。
以前は、スナップショットを完了としてマークする前に、実用的な理由で rbd-mirror デーモンが停止されたときに、プライマリースナップショット作成リクエストが rbd-mirror デーモンに転送された場合に、プライマリースナップショットは永続的に不完全な状態になりました。プライマリースナップショットの作成要求を再試行すると、librbd
がそのようなスナップショットがすでに存在していることを認識するために、これが発生していました。この既存のスナップショットが完了しているかどうかは確認されませんでした。このため、スナップショットのミラーリングは永続的に停止しました。
今回の修正により、スケジューラーによるトリガーを含む次回のミラースナップショット作成の一環として、不完全なスナップショットを削除して、ミラーリングが再開されるように、チェックが行われるようになりました。
第5章 既知の問題
本セクションでは、Red Hat Ceph Storage の今回リリースで見つかった既知の問題を説明します。
5.1. Ceph Object Gateway
本セクションでは、Red Hat Ceph Storage の今回リリースで見つかった既知の問題を説明します。
5.1.1. Ceph Object Gateway
Ceph Object Gateway インスタンスがクラッシュまたは強制終了により強制終了された場合、バケットのライフサイクル処理が遅延することがあります。
現在、1 つ以上のバケットのライフサイクル処理の実行中にクラッシュまたは kill -9 が原因で Ceph Object Gateway インスタンスが強制終了 (不正なシャットダウン) した場合に、2 つのスケジュール期間が経過するまで (例: 2 日)、それらのバケットでの処理が続行されない可能性があります。この時点で、バケットは古いものとしてマークされ、再初期化されます。この問題に対する回避策はありません。
第6章 非同期エラータの更新
このセクションでは、z-stream リリースのバグ修正、既知の問題、機能拡張について説明します。
6.1. Red Hat Ceph Storage 6.1z7
Red Hat Ceph Storage リリース 6.1z7 が利用可能になりました。この更新に含まれるバグ修正のリストは、[advisory links] アドバイザリーにリスト表示されます。
6.1.1. 機能拡張
6.1.1.1. Ceph ファイルシステム
並行クローンの制限により、新しいクローンの作成の速度が低下しなくなりました
以前は、並列クローンの制限に到達すると、クローンの残りの部分がキューに置かれ、クローン作成が遅くなりました。
今回の機能拡張により、一度に並列クローンの制限に達すると、新しいクローン作成要求が拒否されます。この機能はデフォルトで有効になっていますが、無効にすることができます。
Python librados は、オブジェクト omap キー/値の反復をサポートします。
以前は、バイナリー/ Unicode キーが発生するたびに反復が中断されていました。
このリリースでは、Python librados は unicode またはバイナリーキーを使用したオブジェクト omap キー/値の反復をサポートし、反復は予想通りに続行されます。
6.1.1.2. Ceph Object Gateway
'/usr/bin/rgw-restore-bucket-index' ツールを使用した一時ファイルの配置およびエラーメッセージを改善しました。
以前は、/usr/bin/rgw-restore-bucket-index ツールは一時ファイルを /tmp ディレクトリーにだけ配置していました。これにより、ディレクトリーの容量が不足する場合に問題が発生する可能性があります。その結果、"ln: failed to access '/tmp/rgwrbi-object-list.XXX': No such file or directory" エラーが発生することがありました。
今回の機能拡張により、ユーザーは '-t' コマンドラインオプションを使用して、一時ファイルを配置する特定のディレクトリーを指定できるようになりました。また、指定したディレクトリーが満杯になると、"ERROR: the temporary directory's partition is full, prevent continuation" という問題が発生したエラーメッセージが表示されるようになりました。
S3 リクエストはシャットダウン中に送信中にカットされなくなりました
以前は、いくつかのクライアントが、待機せずにシャットダウン中に S3 要求の途中で問題に直面していました。
今回の機能拡張により、Ceph Object Gateway プロセスを無条件に終了する前に、すべての未処理のリクエストが完了するまで rgw_exit_timeout_secs
パラメーターで定義された期間を待機するように S3 リクエストを設定できるようになりました。Ceph Object Gateway は、実行中の S3 要求がすべて完了するまで最大 120 秒(設定可能)待機してから、無条件に終了します。この間、新しい S3 リクエストは受け入れられません。この設定は、デフォルトでは off です。
コンテナー化されたデプロイメントでは、追加の extra_container_args
パラメーターの設定を、--stop-timeout=120
(またはデフォルトでない場合は rgw_exit_timeout_secs
パラメーターの値)も必要とされます(設定されていない場合、rgw_exit_timeout_secs
パラメーターの値も必要になります)。
6.1.1.3. RADOS
外部エンティティーのクラスターログレベルの詳細を制御する新しい 'mon_cluster_log_level' コマンドオプション。
以前は、デバッグの詳細度ログは、レベル設定に関係なく、すべての外部ロギングシステムに送信されていました。その結果、'/var/' ファイルシステムが急速にいっぱいになります。
今回の機能拡張により、mon_cluster_log_file_level および 'mon_cluster_log_to_syslog_level' コマンドオプションが削除されました。このリリースから、新しい汎用の 'mon_cluster_log_level' コマンドオプションのみを使用して、クラスターログファイルとすべての外部エンティティーのクラスターログレベルの詳細を制御します。
6.2. Red Hat Ceph Storage 6.1z1
Red Hat Ceph Storage リリース 6.1z1 が利用可能になりました。この更新に含まれるバグ修正は、RHBA-2024:2743 および RHBA-2024:2744 アドバイザリーに記載されています。
6.3. Red Hat Ceph Storage 6.1z1
Red Hat Ceph Storage リリース 6.1z1 が利用可能になりました。この更新に含まれるバグ修正のリストは、RHBA-2024:1580 および RHBA-2024:1581 アドバイザリーにまとめられています。
6.3.1. 機能拡張
6.3.1.1. Ceph Ansible ユーティリティー
すべてのブートストラップ CLI パラメーターが cephadm-ansible
モジュールで使用できるようになりました。
以前は、ブートストラップ CLI パラメーターのサブセットのみが使用可能であり、モジュールの使用が制限されていました。
この機能拡張により、すべてのブートストラップ CLI パラメーターが cephadm-ansible
モジュールで使用できるようになります。
6.3.1.2. RBD ミラーリング
排他ロックが利用可能な場合に rbd diff-iterate がローカルで実行されるようになりました
以前は、fast-diff
モード(fast-diff イメージ機能が有効で有効なwhole_object == true
)の時間(fromsnapname == NULL
)と比較して、RBD diff-iterate はローカルでの実行が保証されていませんでした。
今回の機能拡張により、rbd_diff_iterate2 ()
API パフォーマンスの向上が実装され、排他的ロックが利用可能な場合に RBD の差分がローカルで実行されるようになりました。これにより、高速差分
イメージ機能が有効化されていることを前提と、QEMU ライブディスクの同期とバックアップのユースケースにパフォーマンスが大幅に向上します。
6.3.1.3. Ceph ファイルシステム
サブボリュームに対してスナップショットスケジューリングのサポートが提供されるようになりました
この機能拡張により、サブボリュームのスナップショットスケジューリングサポートが提供されます。すべてのスナップショットスケジューリングコマンドは、適切なサブボリュームとサブボリュームグループを参照するための --subvol
および --group
引数を受け入れます。サブボリュームグループ引数なしでサブボリュームが指定された場合は、デフォルトのサブボリュームグループが考慮されます。また、サブボリュームを参照するときには有効なパスを指定する必要はなく、使用される引数解析の性質上、プレースホルダー文字列だけで十分となります。
例
# ceph fs snap-schedule add - 15m --subvol sv1 --group g1 # ceph fs snap-schedule status - --subvol sv1 --group g1
6.4. Red Hat Ceph Storage 6.1z1
Red Hat Ceph Storage リリース 6.1z1 が利用可能になりました。更新に含まれるバグ修正は、RHBA-2024:4525 アドバイザリーに記載されています。
6.4.1. 機能拡張
6.4.1.1. Ceph ファイルシステム
MDS 動的メタデータバランサーはデフォルトでオフになっています。
今回の機能拡張により、MDS 動的メタデータバランサーはデフォルトで オフ
になり、max_mds
ファイルシステム設定を増やすだけで、望ましくない、または意図しない方法でツリーを断片化するパフォーマンスの低下動作が改善されます。
Operator はバランサーを使用するために明示的にオンにする必要があります。
MDS の常駐セグメントサイズ perf カウンター
は、優先度の高いで追跡されます。
今回の機能拡張により、MDS の常駐セグメントサイズ(または RSS) perf カウンター
が高い優先順位で追跡され、呼び出し元がその値を消費して、MDS RSS サイズを確認し、それに応じて動作させる有用な警告を生成できるようになりました。
MDS の権限が正しくない場合、Ceph 認証コマンドはメッセージを表示します
今回の機能拡張により、MDS 機能のパーミッションが r
、rw、'*
または all
で始まるようになりました。これにより、
、ceph auth
addceph auth caps
、ceph auth get-or-create、ceph auth get-or-
コマンドが生成され、MDS キャップのパーミッションが正しくない場合に明確なメッセージが生成されます。
create
-key などの ceph auth
6.4.1.2. Ceph Object Gateway
radosgw-admin bucket stats
コマンドはバケットのバージョン管理を出力する
この機能強化により、` radosgw-admin bucket stats ` コマンドが、バケットのバージョン管理ステータスを enabled
または off
として出力するようになりました。バージョン管理は、作成後に有効または無効にできるためです。
6.5. Red Hat Ceph Storage 6.1z1
Red Hat Ceph Storage リリース 6.1z1 が利用可能になりました。この更新に含まれるバグ修正は RHSA-2023:5693 アドバイザリーに記載されています。
6.5.1. 機能拡張
6.5.1.1. Ceph ファイルシステム
snap schedule モジュールが新しい保持仕様をサポートするようになりました。
今回の機能拡張により、ユーザーは新しい保持仕様を定義してスナップショットの数を保持できるようになりました。
たとえば、スナップショットの作成頻度に関係なく、ユーザーが 50 個のスナップショットを保持するように定義した場合、スナップショットは新規スナップショットの作成後にプルーニングが行われるため、指定された最大値より 1 未満になります。この場合、49 スナップショットは保持されるため、次の反復時にファイルシステム上に 1 つのスナップショットを作成し、システムの設定制限 mds_max_snaps_per_dir
に違反しないようにします。
Configure the `mds_max_snaps_per_dir` and snapshot scheduling carefully to avoid unintentional deactivation of snapshot schedules due to file system returning a "Too many links" error if the `mds_max_snaps_per_dir limit` is breached.
遅延したクライアントは、遅延した OSD がない場合にのみエビクトされるようになりました
以前は、MDS からのパフォーマンスダンプを監視すると、OSD が遅れていること (objecter.op_laggy
および objecter.osd_laggy
) が示されることがあり、クライアントの遅延の原因となっていました (キャップ取り消しのためにダーティーデータをフラッシュできませんでした)。
この機能拡張により、defer_client_eviction_on_laggy_osds
オプションが true に設定され、OSD の遅延が原因でクライアントの遅延が発生した場合、OSD の遅延がなくなるまでクライアントエビクションは行われません。
6.5.1.2. Ceph Object Gateway
rgw-restore-bucket-index
ツールで、バージョン管理されたバケットのバケットインデックスを復元できるようになりました
この機能拡張により、rgw-restore-bucket-index
ツールは可能な限り広範囲で動作し、バージョン管理されていないバケットとバージョン管理されたバケットのバケットインデックスを復元できるようになりました。
6.5.1.3. NFS Ganesha
NFS Ganesha バージョンの V5.6 に更新されました。
NFS Ganesha の更新バージョンで機能強化により、以下の問題が修正されました。* FSAL の state_free
関数は、実際には 無料
ではありませんでした。* CEPH: Fixed cmount_path
。* CEPH: 現在、client_oc
true が破損しているため、強制的に false になりました。
6.5.1.4. RADOS
遅延操作のサブイベントに関する新しいレポートが利用可能になりました
以前は、時間を要している操作は遅延としてマークされていましたが、詳細な説明はありませんでした。
この機能強化により、操作の遅延したサブイベントの詳細な説明を表示できるようになりました。
noautoscale
フラグをオン/オフに設定すると、各プールの元の自動スケールモード設定が保持される
以前は、noautoscale
フラグが設定されている場合、pg_autoscaler
は各プールの autoscale mode
設定に保持されませんでした。このため、noautoscale
フラグのオン/オフをオンにした後、ユーザーは各プールに対して再度自動スケールモードを設定しなければなりません。
この機能拡張により、pg_autoscaler
モジュールは、noautoscale flag
が設定された後も、autoscaler モードの個別のプール設定を保持します。
BlueStore インスタンスを 2 回開くことはできません
以前は、コンテナーの使用時に、同じブロックデバイス mknod
を対象とする関連性のない inode を作成できました。これにより、複数のコンテナーが排他的アクセスであると考えることができました。
今回の機能拡張により、ブロックデバイス専用の O_EXCL
open フラグを使用して強制されたアドバイザリーロックが実装され、1 つのブロックデバイスで同時に OSD の実行に対する保護が強化されました。
6.6. Red Hat Ceph Storage 6.1z2
Red Hat Ceph Storage リリース 6.1z2 が利用可能になりました。この更新に含まれるバグ修正は RHSA-2023:5693 アドバイザリーに記載されています。
6.6.1. 機能拡張
6.6.1.1. Ceph Object Gateway
追加の機能と機能拡張が rgw-gap-list
および rgw-orphan-list
スクリプトに追加され、エンドユーザーのエクスペリエンスが向上します。
この機能拡張により、rgw-gap-list および rgw-orphan-list スクリプトでのエンドユーザーのエクスペリエンスを向上させるために、内部チェック、より多くのコマンドラインオプション、強化された出力など、多数の機能と機能拡張が追加されました。
rgw-restore-bucket-index
コマンドの実行時にレルム、ゾーングループ、ゾーンを指定できます。
以前は、このツールはデフォルトのレルム、ゾーングループ、およびゾーンでしか動作しませんでした。
この機能拡張により、rgw-restore-bucket-index
コマンドの実行時にレルム、ゾーングループ、ゾーンを指定できるようになりました。3 つのコマンドラインオプションが追加されています。
- "-r <realm>"
- "-g <zone group>"
- "-z <zone>"
6.6.1.2. マルチサイトの Ceph Object Gateway
元のマルチパートアップロードをマルチサイト設定で識別できるようになりました。
6.1z1 リリースでデータ破損のバグが修正されました。このバグは、マルチサイト設定でのサーバー側暗号化を使用したマルチパートアップロードに影響を与えていたものです。
この機能拡張により、新しいツール radosgw-admin bucket resync encrypted multipart
を使用して、これらの元のマルチパートアップロードを識別できるようになりました。識別されたオブジェクトの LastModified タイムスタンプが 1ns ずつ増分され、ピアゾーンがそのオブジェクトを再度レプリケートします。サーバー側の暗号化を使用するマルチサイトデプロイメントの場合、すべてのゾーンがアップグレードされた後、すべてのゾーンのすべてのバケットに対してこのコマンドを実行することを推奨します。
6.6.1.3. Ceph Dashboard
ダッシュボードホストのローディングスピードが向上し、ページのロードが速くなりました。
以前は、5 つ以上のホストからなる大規模なクラスターでは、ホストページとメインページのロード時間が直線的に増加していました。
この機能拡張により、ダッシュボードホストのローディングスピードが向上し、ページのロードがはるかに速くなりました。
6.7. Red Hat Ceph Storage 6.1z1
Red Hat Ceph Storage リリース 6.1z1 が利用可能になりました。この更新に含まれるバグ修正は、RHBA-2023:4473 アドバイザリーにリストされています。
6.7.1. 機能拡張
6.7.1.1. Ceph ファイルシステム
アンフェア (unfair) な Mutex ロックをフェア (fair) な Mutex に切り替える
以前は、Mutex の実装 (たとえば、C++ の std::mutex
) はフェアネスを保証せず、lock()
と呼ばれる順序でスレッドによってロックが取得されることを保証していませんでした。ほとんどの場合、これはうまく機能しましたが、過負荷の場合、クライアント要求処理スレッドと submit スレッドが長時間にわたって常に submit_mutex を正常に取得し、MDLog::trim()
がスタックする原因となります。つまり、MDS デーモンはジャーナルログをメタデータプールに書き込みますが、期限切れのセグメントを時間内にトリミングできませんでした。
この機能強化により、アンフェアな Mutex ロックがフェアな Mutex に切り替えられ、すべての submit_mutex ウェイターが FIFO モードで 1 つずつウェイクアップされます。
6.7.1.2. Ceph Object Gateway
バケットリスト機能を使用すると、rgw-restore-bucket-index ツールでインデックスの再作成を完了できます。
以前は、rgw-restore-bucket-index ツールは、次のユーザーがバケットをリストするまで、バケットのインデックスを部分的に復元していました。このため、インデックスの再作成が完了するまで、バケットの統計が正しく報告されませんでした。
この機能強化により、バケットリスト機能が追加され、ツールによるインデックス再作成が完了し、バケット統計が正しくレポートされるようになりました。さらに、エンドユーザーに影響を与えない小さな変更がビルドプロセスに追加されます。
メタデータが変更されたオブジェクトのライフサイクル移行が失敗しなくなりました
以前は、既存のオブジェクトに ACL を設定すると、そのようなオブジェクトのライフサイクル遷移が失敗したため、その mtime
が変更されました。
この修正により、コピー操作でない限り、ACL やその他の属性の設定など、オブジェクトのメタデータのみを変更する間、オブジェクトの mtime
は変更されません。
ブロックサイズが 4K に変更されます。
以前のリリースでは、GC キューを消費する 1K ブロックサイズの使用により、Ceph Object Gateway の GC 処理に過度の時間がかかりました。これにより、大規模な GC キューの処理が遅くなります。
今回の修正により、ブロックサイズが 4K に変更され、大規模な GC キューの処理が高速化されました。
スナップショットのオブジェクトマップはスナップショットの内容を正確に反映します
以前は、実装上の欠陥により、書き込みのような操作を処理するときに古いスナップショットコンテキストが使用されていました。このため、ワークロードを静止せずにスナップショットが取得された場合、スナップショットのオブジェクトマップがスナップショットの内容を正確に反映することが保証されませんでした。差分バックアップおよびスナップショットベースのミラーリングでは、オブジェクトマップ機能や高速差分機能が有効になっているユースケースでは、宛先イメージが破損する可能性があります。
この修正により、実装上の欠陥が修正され、すべてが期待どおりに動作します。
6.7.1.3. Cephadm ユーティリティー
public_network
パラメーターに global
や mon
などの設定オプションを含めることができるようになりました
以前の cephadm
では、public_network
パラメーターは、この動作を変更する設定オプションを提供せずに、クラスターのブートストラップ中に常に mon
設定セクションの一部として設定されていました。
この機能強化により、Ceph 設定ファイルを利用して、クラスターのブートストラップ中に public_network
パラメーターに global
や mon
などの設定オプションを指定できるようになりました。
cephadm Manager モジュールからホスト上で実行される Cephadm コマンドにタイムアウトが発生するようになりました。
以前は、Cephadm コマンドの 1 つが無期限に停止することがあり、問題の認識および解決が困難でした。
今回のリリースでは、Cephadm mgr モジュールからホストで実行される Cephadm コマンドにタイムアウトが導入されました。コマンドの 1 つがハングした場合に、最終的に失敗するという正常性に関する警告が表示されるようになりました。タイムアウトは mgr/cephadm/default_cephadm_command_timeout
設定で設定でき、デフォルトは 900 秒です。
CA 署名キーの cephadm
サポートが実装されました
以前は、CA 署名キーは Red Hat Ceph Storage 5 のデプロイメント設定として機能していましたが、その機能は偶発的でテストされておらず、Red Hat Ceph Storage 5 から Red Hat Ceph Storage 6 への変更時に壊れていました。
この機能拡張により、CA 署名キーの cephadm
サポートが実装されます。ユーザーは、SSH 認証スキームに通常の pubkeys ではなく、CA 署名付き鍵を使用できるようになりました。
6.7.2. 既知の問題
6.7.2.1. マルチサイトの Ceph Object Gateway
バージョン管理されたバケット内のオブジェクトを削除すると、統計の不一致が発生する
バージョン管理されたバケットには最新のオブジェクトと最新でないオブジェクトが混在しているため、オブジェクトを削除すると、ローカルサイトとリモートサイトでバケットとユーザーの統計に不一致が生じる可能性があります。これにより、どちらのサイトでもオブジェクトリークが発生することはなく、統計の不一致が発生するだけです。
マルチサイトのレプリケーションがアップグレード中に停止する場合がある
アップグレードのプロセス中にクラスターが異なるバージョンにある場合に、マルチサイトのレプリケーションが停止することがあります。両方のクラスターが同じバージョンにアップグレードされるまで、同期を一時停止する必要があります。
第7章 ソース
更新された Red Hat Ceph Storage ソースコードパッケージは、以下の場所から入手できます。
- Red Hat Enterprise Linux 8 の場合: http://ftp.redhat.com/redhat/linux/enterprise/8Base/en/RHCEPH/SRPMS/
- Red Hat Enterprise Linux 9 の場合: https://ftp.redhat.com/redhat/linux/enterprise/9Base/en/RHCEPH/SRPMS/