6.7. Ceph Object Gateway
Ceph Object Gateway が AWS 要求署名を適切に適用
以前のバージョンでは、Ceph Object Gateway はヘッダーの署名に AWS リクエストを適切に適用せず、以下のエラーメッセージを生成していました。
SignatureDoesNotMatch
今回のリリースで、Ceph Object Gateway コードはヘッダーを正しく署名するように修正されました。これにより、要求時に正常に行われる署名リクエストが生成されます。
radosgw-admin bucket check
コマンドが、不完全なマルチパートアップロードを表示しないようになりました。
以前のリリースでは、radosgw-admin bucket check
コマンドを実行すると、不完全なマルチパートアップロードが表示されていました。これにより、出力がバケットインデックスが破損したかのように出力が表示される可能性があるため、サイト管理者に混乱する可能性があります。今回の更新により、コマンドにエラーと孤立したオブジェクトのみが表示され、不完全なアップロードが除外されるようになりました。
バケットシャードオブジェクトを使用した omap キーの不均等分散
バージョン管理されたバケットでは、オブジェクト操作が完全に完了できないことがありました。この状態では、これらのオブジェクトのバケットインデックスエントリーには、名前およびインスタンス文字列が完全に取り除かれています。後続のリシャードがある場合は、空の名前とインスタンスの文字列によりエントリーがシャード 0 に変更になりました。シャード 0 に属していないエントリーは、そこで終了しました。これにより、シャード 0 には不釣り合いな数のエントリーが置かれ、他のシャードよりも大きくなりました。今回のリリースにより、削除操作のこの部分で名前およびインスタンス文字列が消去されなくなりました。リシャードが行われと、完全には削除されなかったエントリーは正しいシャードに置かれ、シャード 0 に強制されることはありません。
Object Gateway のライフサイクル処理パフォーマンスの全体的なスループットの向上
以前のバージョンでは、Object Gateway のライフサイクル処理のパフォーマンスは、特定の環境内の多くのバケットまたはコンテナーが含まれるオブジェクトまたはバケットのワークロードが並列化されていないために制限されました。今回の更新により、並列処理は 2 次元となり、単一のオブジェクトゲートウェイインスタンスに複数のライフサイクル処理スレッドを含めることができ、各スレッドにはライフサイクルが機能する複数のワークプールスレッドを持つようになりました。また今回の更新では、シャード
のワーカーへの割り当てが改善され、スループット全体が増加しました。
rgw_parse_bucket_key
が呼び出されるとバケットのテナントの状態が正しく解釈される
以前のバージョンでは、ループでキーを処理する radosgw-admin bucket stats
のような rgw_parse_bucket_key
の呼び出し元は、テナントバケットの一部がリスト表示されている場合に、テナント化されていないバケットをテナントと誤って解釈する可能性がありました。rgw_parse_bucket_key
が空でない rgw バケット引数で呼び出された場合は、キーにテナントがない場合に bucket::tenant の空の値を正しく割り当てませんでした。Red Hat Ceph Storage 4.1z1 では、テナントが適用されず、バケットのテナント状態が正しく解釈されていない場合は、バケットのテナントメンバーがクリアされるようになりました。
Ceph Object Gateway は匿名のユーザー情報をキャッシュしてアクセスしようとします。
以前のリリースでは、Ceph Object Gateway は認証されていないリクエストごとに匿名のユーザー情報の取得を試みていました。この認証されていないアクセスにより、ストレージクラスター内の単一の Ceph OSD に高負荷がかかる可能性がありました。今回のリリースにより、Ceph Object Gateway は匿名のユーザー情報の取得を試みないため、レイテンシーが減少し、1 つの Ceph OSD への負荷が低下するようになりました。
オブジェクトのライフサイクルの有効期限が正しく報告される
以前のバージョンでは、接頭辞ルールが存在することにより、一部のオブジェクトについて誤ったライフサイクルの有効期限が報告されることがありました。これは、S3 HEAD および GET リクエストで使用される有効期限ヘッダーを生成する際に、ライフサイクル有効期限ルールの任意の接頭辞の制限が無視されるために生じました。Red Hat Ceph Storage 4.1z1 では、ルールの接頭辞が有効期限ヘッダールールのマッチングの一部となり、オブジェクトのライフサイクル有効期限が正しく報告されるようになりました。
rgw.none
バケット統計の多数のオブジェクト
統計情報を計算するコードが、バケットインデックスエントリーがすでに存在するオブジェクトを参照しているかどうかのチェックに失敗する場合がありました。そのため、バケット統計が正しく行われませんでした。今回のリリースにより、存在を確認するためにコードが追加され、バケット統計が修正されました。
順序付けされたバケットリストへの呼び出しがスタックする
バケットが順序付けされたリスト操作のコードバグにより、特定の状況ではこの操作がループで停止し、完了しない可能性があります。今回のリリースにより、このコードのバグが修正され、順序付けされたバケットリストへの呼び出しが予想通りに完了するようになりました。
ライフサイクル処理が NoncurrentVersionExpiration
の NoncurrentDays
を無視
並列ライフサイクル処理中にオブジェクトの修正時間を格納する変数が間違って初期化されていました。このため、バケット内のオブジェクトの最新バージョン以外の期限切れルールを持つオブジェクトが、意図した期限切れ時間よりも前に期限切れになってしまうという問題がありました。今回のリリースにより、変更時間 (mtime
) が正しく初期化され、ライフサイクルの処理キューに伝播されるようになりました。これにより、最新バージョン以外の有効期限は、正しい期間で切れます。
いくつかのオブジェクトの一部が誤ってガベージコレクションに追加される
Ceph Object Gateway を使用してオブジェクトを読み取る際、オブジェクトの一部を読み取るのに rgw_gc_obj_min_wait
オプションで定義された値の半分を超える時間がかかった場合、その tail オブジェクトはガベージコレクションリストに追加されていました。ガベージコレクションリスト内のこれらの tail オブジェクトは削除され、データが失われていました。このリリースでは、削除されたオブジェクトのガベージコレクションを遅らせることを目的としたガベージコレクション機能が無効になりました。その結果、Ceph Object Gateway を使用した読み取りに時間がかかるオブジェクトが、ガベージコレクションリストに追加されなくなりました。