4.4. Ceph ファイルシステム


スナップショットの作成時に、スナップショットディレクトリーの mtimechange_attr が 更新されるようになりました。

以前のリリースでは、libcephfs クライアントは mtime を更新せず、スナップが作成または削除されたときに属性を変更していました。このため、NFS クライアントは CephFS NFS-Ganesha エクスポート内の CephFS スナップショットを正しくリストできませんでした。

この修正により、スナップショットが作成、削除、名前変更されるときに、スナップショットディレクトリー .snapmtimechange_attr が更新されます。mtime および change_attr を修正して、スナップショットの一覧表示で古いスナップショットエントリーを返さないようにします。

Bugzilla:1975689

cephfs-top -d --lay オプションは、1 ~ 25 の範囲の整数値のみを受け入れます。

以前のリリースでは、いくつかの新しい Curses メソッドが追加されたため cephfs-top -d --lay オプションは正しく動作しませんでした。新しい Curses メソッドは整数値のみを受け入れるため、ヘルパー関数から浮動小数点値を取得する際に例外が出力されました。

今回の修正により、cephfs-top -d [--delay] オプションは 1 から 25 までの整数値のみを受け入れ、cephfs-top ユーティリティーが期待どおりに機能するようになりました。

Bugzilla:2136031

リンク解除の完了後に同じ dentry を作成しても、MDS デーモンはクラッシュしません。

以前は、リンク解除と作成操作の間で競合状態が発生しました。このため、前回のリンク解除要求が何らかの理由で遅れ、その間に同じ dentry を作成しようとすると、MDS デーモンがクラッシュして失敗するか、新規作成は成功しても書き込まれた内容が失われます。

この修正により、ユーザーは同じ dentry を作成する場合の競合を避けるために、リンク解除が完了するまで待つ必要があります。

Bugzilla:2140784

ceph nfs cluster info CLUSTER_ID のコマンドを実行すると、存在しないクラスターが表示されなくなりました。

以前のリリースでは、ceph nfs cluster info CLUSTER_ID コマンドの実行時にクラスターの存在がチェックされないため、virtual_ipbackend、それぞれ null と empty など、存在しないクラスターの情報が表示されていました。

今回の修正により、'ceph nfs cluster info CLUSTER_ID' コマンドはクラスターの存在をチェックし、存在しないクラスターがクエリーされると Error ENOENT: cluster does not exist が出力されます。

Bugzilla:2149415

スナップスケジュールモジュールが誤ってボリュームモジュールを参照することがなくなりました。

以前のリリースでは、スナップスケジュールモジュールは、サブボリュームパスをフェッチしようとすると、誤ってボリュームモジュールを参照していました。間違ったボリュームモジュール名とリモートメソッド名を使用したため、ImportError トレースバックが表示されます。

今回の修正により、テストされていない間違ったコードが修正され、メソッドが実装されて、スナップスケジュール CLI インターフェイスメソッドから正しく呼び出されるようになりました。スナップスケジュールモジュールは、サブボリュームレベルのスケジュールを追加しようとするときに、サブボリュームパスを正しく解決するようになりました。

Bugzilla:2153196

整数オーバーフローと 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 値オーバーフローが発生しなくなりました。

Bugzilla:2159307

無効な OSD リクエストは RADOS に送信されなくなりました。

以前は、最初の dentry に十分なメタデータがあり、サイズが max_write_size より大きい場合に、無効な OSD リクエストが RADOS に送信されていました。このため、RADOS は無効なリクエストを失敗させ、CephFS が読み取り専用になります。

この修正により、すべての OSD リクエストには、RADOS に送信される前に検証済みの情報が入力され、無効な OSD リクエストによって CephFS が読み取り専用になることはありません。

Bugzilla:2160598

MDS は、孤立したディレクトリーエントリーを処理するようになりました。

以前のリリースでは、MDS 孤立したディレクトリー処理ロジックのバグが原因で、MDS が孤立したディレクトリーエントリーの一部の処理をスキップしていました。このため、MDS は孤立したディレクトリーエントリーを処理できず、削除されたファイルが領域を解放しません。

今回の修正により、孤立したインデックスポインターが修正され、MDS が孤立したディレクトリーをすべて処理するようになりました。

Bugzilla:2161479

Ceph ファイルシステムに接続されたプールのプールレベルのスナップは無効になります。

以前のリリースでは、プールレベルのスナップと mon 管理のスナップには独自のスナップ ID の名前空間があり、これが原因で、ID 間で競合が発生し、Ceph Monitor がプールレベルのスナップであるか、mon が管理するスナップであるかを、一意に特定できませんでした。このため、プールレベルのスナップと mon 管理のスナップのセットに存在する ID を参照するときに、間違ったスナップが削除される可能性がありました。

この修正により、Ceph ファイルシステムに接続されたプールのプールレベルのスナップが無効になり、プール ID の競合が発生しなくなります。したがって、CephFS スナップが削除されたときに、意図しないデータ損失が発生することはありません。

Bugzilla:2168541

クライアント要求が MDS とクライアント間で無制限にバウンスすることがなくなりました。

以前のリリースでは、CephFS クライアントと MDS との間で、クライアント要求の Ceph プロトコルが一致しませんでした。このため、CephFS クライアントと MDS の間で通信するときに、対応する情報が切り捨てられるか失われ、クライアント要求が MDS とクライアントの間で無制限にバウンスすることになります。

今回の修正により、クライアント要求のプロトコル内の対応するメンバーの型が同じ型になるように修正され、新しいコードは古い Ceph と互換性が確保されるようになります。クライアント要求は MDS とクライアントの間で無制限にバウンスすることはなく、十分に再試行された後に停止します。

Bugzilla:2172791

メタデータの破損を検出するためにコードアサートが Ceph Manager デーモンサービスに追加されました

以前は、Postgres などを実行するワークロードの Manager デーモンサービスによって、スナップショット関連の一種のメタデータ破損が発生していました。

この修正により、新しい破損が検出された場合にトリガーされるコードアサートが Manager デーモンサービスに追加されます。これにより、破損の拡大が軽減され、ログを収集して原因を特定できるようになります。

注記

クラスターを Red Hat Ceph Storage 6.1 にアップグレードした後にデーモンがクラッシュした場合の分析と修正措置については、Red Hat サポート に問い合わせてください。

Bugzilla:2175307

セッションマップのバージョンの不一致の問題が原因で MDS デーモンがクラッシュしなくなりました。

以前のリリースでは、MDS フェイルオーバーが発生すると、MDS セッションマップジャーナルログが正しく保持されませんでした。このため、新しい MDS がジャーナルログを再生しようとすると、セッションマップジャーナルログが MDCache 内の情報または他のジャーナルログからの情報と一致せず、MDS デーモンがアサートをトリガーして自身をクラッシュさせます。

今回の修正により、MDS デーモンをクラッシュさせずに、セッションマップバージョンを強制的に再生しようとしても、セッションマップバージョンの不一致が原因の MDS デーモンのクラッシュは発生しません。

Bugzilla:2182564

MDS はキャップ取り消しの確認を待っている間に無期限に停止することがなくなりました。

以前は、__setattrx() が失敗した場合、_write() は、CEPH_CAP_FILE_WR キャップ参照を保持し、MDS はキャップ失効確認を待機して無期限に停止していました。さらに、他のクライアントの要求も無期限に停止してしまう原因にもなっていました。

今回の修正により、__setattrx () が失敗し、MDS のキャップ取り消し要求がスタックしない場合に、CEPH_CAP_FILE_WR キャップ参照が解放されます。

Bugzilla:2182613

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.