第4章 バグ修正
本セクションでは、今回リリースされた Red Hat Ceph Storage で修正されたユーザーに大きな影響を及ぼすバグを説明します。また、セクションでは、以前のバージョンで見つかり修正された既知の問題を説明します。
4.1. Cephadm ユーティリティー リンクのコピーリンクがクリップボードにコピーされました!
PID 制限が削除され、コンテナー内のワークロードがクラッシュしなくなります。
以前の Red Hat Enterprise Linux 9 デプロイメントでは、コンテナー内で実行できるプロセスの数を制限する pid 制限が適用されていました。このため、Ceph Object Gateway 同期などの特定の操作がクラッシュします。
今回の修正により、すべての Ceph コンテナーで pid limit
が unlimited
に設定され、コンテナー内のワークロードがクラッシュするのを防ぎます。
Cephadm
は設定ファイルとキーリングファイルを無作為に一時削除しなくなりました。
以前のリリースでは、クライアント設定とキーリングを計算するタイミングが正しくなかったため、cephadm
はどのホストにも設定とキーリングが配置されるべきではないと計算して、その後はそれらをすべて削除していました。
今回の修正により、計算のタイミングが変更され、計算の最新情報が保証されます。Cephadm
は無作為でなくなり、管理対象の設定ファイルとキーリングファイルを一時的に削除します。
Ceph Object Gateway デーモンがループバックアドレスに正しくバインドされるようになりました
以前は、Ceph Object Gateway デーモンをバインドするためにホスト上で有効な IP アドレスを探すときに、cephadm
がループバックインターフェイスを除外していたため、デーモンがループバックアドレスにバインドされませんでした。
今回の修正により、Ceph Object Gateway デーモンは、明示的なチェックを実行することでループバックアドレスにバインドできるようになりました。ループバックインターフェイスが検出された場合、IPv4 の場合は 127.0.0.1
アドレスが使用され、IPv6 の場合は ::1
がループバックアドレスとして使用されます。
Cephadm
は、Ceph モニターストアのサイズ制限を超えた後、デバイス情報を複数のエントリーに分割するようになりました
以前は、cephadm
はホストを更新できず、デバイス情報がモニターストアのデフォルトの最大サイズ制限である 64K を超えると、ほとんどの操作を完了できませんでした。これにより、エントリーサイズのエラーが発生しました。その結果、ディスクが多数あるホストがある場合には、デフォルトの制限を引き上げる必要がありました。
今回の修正により、cephadm
は、サイズ制限よりも多くの領域を取得する場合に、デバイス情報を複数のエントリーに分割するようになりました。多数のディスクを持つホストがある場合は、モニターストアのエントリーサイズ制限を増やす必要がなくなりました。
クラッシュデーモンがクラッシュイベントを正しく記録し、ストレージクラスターに報告するようになりました
以前は、クラッシュレポートをストレージクラスターに送信するときにクラッシュデーモンが適切に認証されなかったため、クラッシュイベントを正しく記録してクラスターに送信できませんでした。
今回の修正により、クラッシュデーモンはクラッシュレポートの送信時に認証情報を適切に使用するようになりました。クラッシュイベントが正しく記録され、クラスターに報告されるようになりました。
cephadm.log
のログローテーションで問題が発生しなくなりました。
以前は、/var/log/ceph
ディレクトリーが cephadm
以外のもの (ceph-common
や ceph-ansible
など) によって作成された場合、logrotate
コマンドで問題が発生していました。その結果、cephadm.log
をローテーションできませんでした。
今回の修正により、root
ユーザーとしてローテーションするために su root root
が logrotate 設定に追加されました。logrotate
コマンドで var/log/
ceph ディレクトリーの所有権に関する問題が発生しなくなったため、cephadm.log
は期待どおりにローテーションされます。
Cephadm
のログ設定が更新されました。
以前は、cephadm
スクリプトはすべての出力を stderr
に記録していました。その結果、デプロイメントの成功を示す cephadm ブートストラップログも stdout
ではなく stderr
に送信されていました。
今回の修正により、cephadm
スクリプトは特定のコマンドに対して異なるロギング設定を持つようになり、ブートストラップに使用されるものはエラーのみを stderr
に記録するようになりました。
ネットワークチェックにより、ホストが監視ネットワークから除外されなくなりました
以前は、cephadm
がホストネットワークと設定済みのパブリックネットワークの一部との正確な一致を探すため、ネットワークチェックが失敗していました。これにより、有効なネットワーク設定を持つホスト (public_network
に属するインターフェイスを持つホスト) が監視ネットワークから除外されました。
今回の修正により、完全一致を探す代わりに、ホストネットワークが設定済みのパブリックネットワークと重複しているかどうかがチェックされるため、有効なホストが監視ネットワークから除外されなくなりました。
cephadm
は、ホストレベルで osd_memory_target
設定を削除しなくなる
以前は、osd_memory_target_autotune
がグローバルにオフになっていた場合、cephadm
はユーザーがホストレベルで osd_memory_target
に設定した値を削除していました。さらに、FQDN 名を持つホストの場合、クラッシュマップで短い名前が使用されていても、cephadm
は FQDN を使用して設定オプションを設定します。このため、ユーザーは osd_memory_target
をホストレベルで手動で設定できず、osd_memory_target
自動チューニングは FQDN ホストでは機能しませんでした。
今回の修正により、osd_memory_target_autotune
が false
に設定されている場合、osd_memory_target
設定はホストレベルで cephadm
から削除されません。また、ホストレベル osd_memory_target
を設定するときは、常にホストの短い名前を使用します。ホストレベルで osd_memory_target_autotune
が false
に設定されている場合、ユーザーは手動で osd_memory_target
を設定し、オプションが cephadm
によって削除されないようにすることができます。さらに、FQDN 名で cephadm
に追加されたホストで自動調整が機能するようになりました。
cephadm
は Ceph OSD 設定ファイルを書き換えます
以前は、OSD の再デプロイ中に、cephadm
は Ceph OSD に使用される設定を書き込まないため、Ceph モニターデーモンが追加または削除されたときに、OSD はその設定ファイルで更新されたモニター設定を取得しませんでした。
今回の修正では、OSD を再デプロイするときに cephadm
が設定ファイルを自動的に書き換え、ユーザーの介入なしにモニターが追加または削除されると、OSD 設定ファイルが更新されてモニターの新しい場所が表示されます。
(BZ#2061697)
ユーザーは、明示的な配置にリストされているホストをドレインできるようになりました
以前は、明示的配置の一部としてリストされたホストを排出すると、ホストが適切に排出されず、排出が停止されるかホストが明示的配置から削除されるまで、トレースバックがログに記録されていました。
今回の修正により、明示的な配置の処理が内部的に実装され、cephadm
はホストからデーモンを削除する必要があるかどうかを判断できるようになりました。その結果、ユーザーは最初に配置からホストを削除することなく、明示的な配置の一部としてリストされているホストを排出できるようになりました。
ただし、ユーザーは、ホストを完全に削除する前に明示的な配置からホストを削除する必要があります。そうしないと、ホストを明示的にリストする仕様を適用できません。
--apply
-spec
オプションがブートストラップ中に失敗すると、cephadm がゼロ以外のコードを返します
以前は、操作が完了した場合、cephadm
ブートストラップは常にコード 0
を返しました。--apply-spec
オプションを使用したデプロイでエラーが発生した場合、リターンコードにエラーが反映されませんでした。
今回の修正により、ブートストラップ中に仕様の適用が失敗した場合、cephadm
はゼロ以外の値を返します。
(BZ#2061697)
複雑な OSD のデプロイメントや共有 DB デバイスとの交換を一度に行う必要がなくなりました。
以前のリリースでは、cephadm
が OSD を作成するときに、以前の OSD の db
デバイスとしてすでに使用されていたデバイスが、使用できないデバイスとして除外されました。その結果、全 OSD が DB としてデバイスを使用すべきであるにも拘らず、一度にデプロイされなかった複雑な OSD デプロイメントは、機能しなくなります。これは、OSD の仕様には沿っていませんが、後続の OSD を作成するときに DB デバイスがフィルタリングされてしまうためです。
今回の修正により、共有 DB デバイスを使用した複雑な OSD デプロイメントを一度に行う必要がなくなりました。OSD 仕様を更新して、仕様にすでにリストされている db デバイスとペアになる追加のデータデバイスを含める場合に、cephadm
はこれらの新しい OSD を作成できるはずです。
cephadm
によって無効な tuned-profile
仕様が検出された場合、適切なエラーが発生します
以前のリリースでは、cephadm
は tuned-profile
の YAML 仕様を検証しないため、無効な tuned-profile
仕様に無効なデータや欠落データを適用しても、エラーや警告が返されませんでした。
今回の修正により、tuned-profile
仕様を検証するためのいくつかのチェックが追加されました。cephadm
によって無効な tuned-profile
指定が検出された場合、適切なエラーが発生するようになりました:
- YAML 仕様の設定の下に、無効なチューナブルが記載されています。
- YAML 仕様の設定セクションは空です。
- 無効な配置が検出されました。
(BZ#2061697)