4.8. RADOS
Ceph は、プールにオブジェクトが 1 つも保存されていない場合、POOL_APP_NOT_ENABLED
警告を報告します。
以前は、プールが空の場合、Ceph ステータスはプールアプリケーションの警告を報告できず、RGW プールに対してアプリケーションタグが有効になっていると RGW バケットの作成に失敗しました。
この修正により、プールにオブジェクトが 1 つも保存されていない場合でも、Ceph は POOL_APP_NOT_ENABLED
警告を報告します。
ストレッチクラスター内の 2 つのサイト間で OSD の重みが不均等であるかどうかのチェックが追加されました。
以前は、ストレッチクラスターのデプロイメント後に OSD の重みが等しいかどうかのチェックは行われていませんでした。これが原因で OSD の重みを不均等にすることができていました。
この修正により、ストレッチクラスター内の 2 つのサイト間の OSD 重みの不均一性をチェックする機能が追加されました。クラスターは、2 つのサイト間の OSD の重みが不均一であるという警告を発するようになりました。
norecover
フラグが設定されている間は、Autoscaler は実行されなくなりました。
以前は、norecover
フラグが設定されている間に autoscaler が実行され、新しい PG が作成され、これらの PG をバックフィルする必要がありました。オブジェクトが不足している場合や、機能が低下している場合にクライアント I/O が無期限に停止しないように、I/O がブロックされているときには、norecover
フラグを設定した状態で autoscaler を実行できていました。
この修正により、norecover
フラグが設定されている間は autoscaler は実行されなくなります。
ceph config dump
のコマンド出力の一貫性が保たれるようになりました。
以前は、pretty print 形式の出力のない ceph config dump
コマンドは、ローカライズされたオプション名とその値を表示していました。正規化されたオプションとローカライズされたオプションの例を以下に示します。
Normalized: mgr/dashboard/ssl_server_port Localized: mgr/dashboard/x/ssl_server_port
ただし、pretty-printed 形式のコマンド (たとえば、JSON) では、上記の例に示すように、正規化されたオプション名のみが表示されました。ceph config dump
コマンドの結果が、pretty-print オプションの有無で矛盾していました。
この修正により、出力は一貫しており、ceph config dump --format TYPE
コマンド (TYPE
は pretty print タイプ) を使用するときに、常にローカライズされたオプション名が表示されます。
MGR モジュールは常に 1 つの CPU コアを占有しなくなり、CPU 使用率は正常になりました。
以前は、配置グループ autoscaler モジュールから負荷の高い呼び出しで、Monitor から OSDMap を取得すると、MGR モジュールが常に CPU コアを 1 つ専有するようになりました。これが原因で、MGR デーモンの CPU 使用率が高くなりました。
この修正により、配置グループの autoscaler モジュールから実行される OSD マップ呼び出しの数が削減され、CPU 使用率が正常になりました。
OSD の親 (ホスト) の正しい CRUSH の場所が決定されました。
以前は、osd_memory_target_autotune
オプションが有効になっている場合、メモリーターゲットはホストレベルで適用されていました。これは、メモリーを自動調整するときにホストマスクを使用することによって実行されました。しかし、メモリーターゲットに適用されたコードでは、変更がホストの OSD に伝播されるために、親ホストの正しい CRUSH の場所を決定できません。その結果、マシンによってホストされている OSD のいずれも設定オブザーバーから通知されず、それらの OSD セットの osd_memory_target
は変更されませんでした。
この修正により、OSD の親 (ホスト) の正しい CRUSH の場所がホストマスクに基づいて決定されます。これにより、変更がホスト上の OSD に伝播されます。自動チューナーが新しい osd_memory_target
を適用し、変更が反映されるたびに、マシンによってホストされているすべての OSD に通知されます。
クラッシュ/シャットダウンテスト中にモニターが選挙で停止しなくなりました。
以前は、MonitorMap の disallowed_leaders
属性が stretch_mode
に入る場合にのみ条件付きで入力されていました。ただし、復活したモニターが probing
状態にあるため、すぐには Stretch_Mode
にならないインスタンスがありました。これが原因で、クラスター全体のモニター間で disallowed_leaders
の設定が一致しなくなりました。このため、モニターはリーダーを選出できず、選出が停止し、Ceph が応答しなくなります。
この修正により、disallowed_leaders
属性に対応するためにモニターを Stretch_mode
にする必要がなくなりました。クラッシュ/シャットダウンテスト中にモニターが選挙で停止しなくなりました。
'Error getting attr on' メッセージが表示されなくなりました。
以前は、ceph-objectstore-tool
は --op list
を使用すると pgmeta オブジェクトをリストし、"Error getting attr on" というメッセージを表示していました。
この修正により、pgmeta オブジェクトはスキップされ、エラーメッセージが表示されなくなります。
アロケーター内の LBA アラインメントは使用されなくなり、OSD デーモンは割り当ての失敗が原因でアサートしなくなります。
以前は、OSD デーモンがアサートして再起動に失敗し、データが使用できなくなったり、データが失われたりすることがありました。これは、アロケーターの要求が 4000 に達し、アロケーターが別の割り当て単位で設定されている場合に OSD デーモンがアサートしないことが原因で発生していました。
この修正により、アロケーター内の LBA アライメントは使用されず、OSD デーモンが割り当て失敗によりアサートされなくなりました。
"libcephsqlite" ライブラリーを使用する sqlite データベースは、短い読み取りでメモリーページを正しくゼロにできないことが原因で破損することがなくなりました。
以前は、"libcephsqlite" は短い読み取りを正しく処理せず、sqlite データベースの破損を引き起こす可能性がありました。
この修正により、"libcephsqlite" は、破損の可能性を回避するために、短い読み取りに対してページを正しくゼロにします。