第7章 Ceph 配置グループのトラブルシューティング
このセクションには、Ceph Placement Group (PG) に関連する最も一般的なエラーを修正するための情報が含まれています。
前提条件
- ネットワーク接続を確認します。
- Monitor がクォーラムを形成できることを確認します。
-
すべての正常な OSD が
up
してin
であり、バックフィルおよびリカバリープロセスが完了したことを確認します。
7.1. 最も一般的な Ceph 配置グループエラー
以下の表では、ceph health detail
コマンドで返される最も一般的なエラーメッセージを一覧表示しています。この表には、エラーを説明し、問題を修正するための特定の手順を示す、対応セクションへのリンクがあります。
さらに、最適でない状態に陥っている配置グループをリストできます。詳しくは、「配置グループのリスト表示 (stale
、inactive
、または unclean
状態)」 を参照してください。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- 実行中の Ceph Object Gateway。
7.1.1. 配置グループのエラーメッセージ
一般的な配置グループエラーメッセージの表およびその修正方法。
エラーメッセージ | 参照 |
---|---|
| |
| |
| |
| |
| |
| |
|
7.1.2. 古い配置グループ
ceph health
コマンドは、一部の配置グループ (PG) を stale
リストで表示します。
HEALTH_WARN 24 pgs stale; 3/300 in osds are down
エラー内容:
モニターは、配置グループが動作しているセットのプライマリー OSD からステータスの更新を受け取らない場合や、プライマリー OSD が down
していると他の OSD が報告されない場合に、配置グループを stale
とマークします。
通常、PG はストレージクラスターを起動し、ピアリングプロセスが完了するまで、stale
状態になります。ただし、PG が想定よりも stale
である (古くなっている) 場合は、PG のプライマリー OSD が ダウン
しているか、PG 統計をモニターに報告していないことを示す可能性があります。古い
PG を保存するプライマリー OSD が up
に戻ると、Ceph は PG の復元を開始します。
mon_osd_report_timeout
の設定は、OSD が PG の統計をモニターに報告する頻度を決定します。デフォルトでは、このパラメーターは 0.5
に設定されています。これは、OSD が 0.5 秒ごとに統計を報告することを意味します。
この問題を解決するには、以下を行います。
古い
PG とそれらが保存される OSD を特定します。エラーメッセージには、次の例のような情報が含まれています。例
[ceph: root@host01 /]# ceph health detail HEALTH_WARN 24 pgs stale; 3/300 in osds are down ... pg 2.5 is stuck stale+active+remapped, last acting [2,0] ... osd.10 is down since epoch 23, last address 192.168.106.220:6800/11080 osd.11 is down since epoch 13, last address 192.168.106.220:6803/11539 osd.12 is down since epoch 24, last address 192.168.106.220:6806/11861
-
down
とマークされている OSD の問題のトラブルシューティング。詳細は、Down OSDs を参照してください。
関連情報
- Red Hat Ceph Storage 7 の管理ガイド の 配置グループ設定の監視 セクション
7.1.3. 一貫性のない配置グループ
一部の配置グループは active + clean + inconsistent
とマークされ、ceph health detail
は以下のようなエラーメッセージを返します。
HEALTH_ERR 1 pgs inconsistent; 2 scrub errors pg 0.6 is active+clean+inconsistent, acting [0,1,2] 2 scrub errors
エラー内容:
Ceph は、配置グループ内のオブジェクトの 1 つ以上のレプリカで不整合を検出すると、配置グループに inconsistent
のマークを付けます。最も一般的な不整合は以下のとおりです。
- オブジェクトのサイズが正しくない。
- リカバリーが終了後、あるレプリカのオブジェクトが失われた。
ほとんどの場合、スクラビング中のエラーが原因で、配置グループ内の不整合が発生します。
この問題を解決するには、以下を行います。
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
どの配置グループが
一貫性のない
状態かを決定します。[ceph: root@host01 /]# ceph health detail HEALTH_ERR 1 pgs inconsistent; 2 scrub errors pg 0.6 is active+clean+inconsistent, acting [0,1,2] 2 scrub errors
配置グループに
inconsistent
な理由を決定します。配置グループでディープスクラビングプロセスを開始します。
構文
ceph pg deep-scrub ID
ID
を、以下のようにinconsistent
配置グループの ID に置き換えます。[ceph: root@host01 /]# ceph pg deep-scrub 0.6 instructing pg 0.6 on osd.0 to deep-scrub
ceph -w
の出力で、その配置グループに関連するメッセージを探します。構文
ceph -w | grep ID
ID
を、以下のようにinconsistent
配置グループの ID に置き換えます。[ceph: root@host01 /]# ceph -w | grep 0.6 2022-05-26 01:35:36.778215 osd.106 [ERR] 0.6 deep-scrub stat mismatch, got 636/635 objects, 0/0 clones, 0/0 dirty, 0/0 omap, 0/0 hit_set_archive, 0/0 whiteouts, 1855455/1854371 bytes. 2022-05-26 01:35:36.788334 osd.106 [ERR] 0.6 deep-scrub 1 errors
出力に以下のようなエラーメッセージが含まれる場合は、
inconsistent
配置グループを修復できます。詳細は、一貫性のない配置グループの修正 を参照してください。構文
PG.ID shard OSD: soid OBJECT missing attr , missing attr _ATTRIBUTE_TYPE PG.ID shard OSD: soid OBJECT digest 0 != known digest DIGEST, size 0 != known size SIZE PG.ID shard OSD: soid OBJECT size 0 != known size SIZE PG.ID deep-scrub stat mismatch, got MISMATCH PG.ID shard OSD: soid OBJECT candidate had a read error, digest 0 != known digest DIGEST
出力に以下のようなエラーメッセージが含まれる場合は、データが失われる可能性があるため、
inconsistent
のない配置グループを修正しても安全ではありません。この場合、サポートチケットを作成します。詳細は、Red Hat サポートへの問い合わせ を参照してください。PG.ID shard OSD: soid OBJECT digest DIGEST != known digest DIGEST PG.ID shard OSD: soid OBJECT omap_digest DIGEST != known omap_digest DIGEST
関連情報
- Red Hat Ceph Storage トラブルシューティングガイド の 配置グループの不整合の知覧表示 を参照してください。
- Red Hat Ceph Storage アーキテクチャーガイド の Ceph データ整合性 セクションを参照してください。
- Red Hat Ceph Storage 設定ガイド の OSD のスクラブ セクションを参照してください。
7.1.4. 不適切な配置グループ
ceph health
コマンドは、以下のようなエラーメッセージを返します。
HEALTH_WARN 197 pgs stuck unclean
エラー内容:
Ceph 設定ファイルの mon_pg_stuck_threshold
パラメーターで指定された秒数について、active+clean
の状態を満たさない場合には、Ceph 配置グループは unclean
とマーク付けされます。mon_pg_stuck_threshold
のデフォルト値は 300
秒です。
配置グループが unclean
である場合は、osd_pool_default_size
パラメーターで指定された回数複製されないオブジェクトが含まれます。osd_pool_default_size
のデフォルト値は 3
で、Ceph はレプリカを 3 つ作成します。
通常、unclean
配置グループは、一部の OSD が down
している可能性があることを意味します。
この問題を解決するには、以下を行います。
down
になっている OSD を特定します。[ceph: root@host01 /]# ceph osd tree
- OSD の問題をトラブルシューティングし、修正します。詳細は、Down OSD を参照してください。
7.1.5. 非アクティブな配置グループ
ceph health
コマンドは、以下のようなエラーメッセージを返します。
HEALTH_WARN 197 pgs stuck inactive
エラー内容:
Ceph 設定ファイルの mon_pg_stuck_threshold
パラメーターで指定された秒数について、配置グループが非表示になっていない場合、Ceph はその配置グループを inactive
とマークします。mon_pg_stuck_threshold
のデフォルト値は 300
秒です。
通常、inactive
な配置グループは一部の OSD が down
となっている可能性があることを示します。
この問題を解決するには、以下を行います。
down
になっている OSD を特定します。# ceph osd tree
- OSD の問題をトラブルシューティングし、修正します。
関連情報
- 配置グループの一覧表示が、古い非アクティブな状態または不完全な状態
- 詳細は、Down OSD を参照してください。
7.1.6. down している配置グループ
ceph health detail
コマンドは、一部の配置グループが down
していると報告します。
HEALTH_ERR 7 pgs degraded; 12 pgs down; 12 pgs peering; 1 pgs recovering; 6 pgs stuck unclean; 114/3300 degraded (3.455%); 1/3 in osds are down ... pg 0.5 is down+peering pg 1.4 is down+peering ... osd.1 is down since epoch 69, last address 192.168.106.220:6801/8651
エラー内容:
場合によっては、ピアリングプロセスがブロックされ、配置グループがアクティブになって使用できなくなることがあります。通常、OSD の障害が原因でピアリングの障害が発生します。
この問題を解決するには、以下を行います。
ピアリング処理をブロックしている原因を判断します。
構文
ceph pg ID query
ID
を down
している配置グループの ID に置き換えます。
例
[ceph: root@host01 /]# ceph pg 0.5 query { "state": "down+peering", ... "recovery_state": [ { "name": "Started\/Primary\/Peering\/GetInfo", "enter_time": "2021-08-06 14:40:16.169679", "requested_info_from": []}, { "name": "Started\/Primary\/Peering", "enter_time": "2021-08-06 14:40:16.169659", "probing_osds": [ 0, 1], "blocked": "peering is blocked due to down osds", "down_osds_we_would_probe": [ 1], "peering_blocked_by": [ { "osd": 1, "current_lost_at": 0, "comment": "starting or marking this osd lost may let us proceed"}]}, { "name": "Started", "enter_time": "2021-08-06 14:40:16.169513"} ] }
recovery_state
セクションには、ピアリングプロセスがブロックされた理由が含まれます。
-
出力には
peering is blocked due to down osds
エラーメッセージが含まれているため Down OSD を参照してください。 - 他のエラーメッセージが表示された場合は、サポートチケットを作成します。詳細は、Red Hat サポートサービスへの問い合わせ を参照してください。
関連情報
- Red Hat Ceph Storage 管理ガイド の Ceph OSD ピアリング セクション
7.1.7. 不明なオブジェクト
ceph health
コマンドは、unfound
キーワードを含む以下のようなエラーメッセージを返します。
HEALTH_WARN 1 pgs degraded; 78/3778 unfound (2.065%)
エラー内容:
これらのオブジェクトまたは新しいコピーが分かっている場合には、Ceph のマークは unfound
とマークしますが、オブジェクトが見つからないと判断できません。そのため、Ceph はそのようなオブジェクトを回復できず、リカバリープロセスを続行できません。
状況例
配置グループは、osd.1
および osd.2
にデータを格納します。
-
osd.1
はdown
します。 -
osd.2
は一部の書き込み操作を処理します。 -
osd.1
がup
とないります。 -
osd.1
とosd.2
の間のピアリングプロセスは開始し、osd.1
にないオブジェクトはリカバリーのためにキューに置かれます。 -
Ceph が新規オブジェクトをコピーする前に、
osd.2
がdown
となります。
その結果、osd.1
はこれらのオブジェクトが存在することを認識しますが、オブジェクトのコピーを持つ OSD はありません。
このシナリオでは、Ceph は障害が発生したノードが再びアクセス可能になるのを待機しており、未使用の unfound
によりリカバリープロセスがブロックされます。
この問題を解決するには、以下を行います。
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
unfound
オブジェクトが含まれる配置グループを決定します。[ceph: root@host01 /]# ceph health detail HEALTH_WARN 1 pgs recovering; 1 pgs stuck unclean; recovery 5/937611 objects degraded (0.001%); 1/312537 unfound (0.000%) pg 3.8a5 is stuck unclean for 803946.712780, current state active+recovering, last acting [320,248,0] pg 3.8a5 is active+recovering, acting [320,248,0], 1 unfound recovery 5/937611 objects degraded (0.001%); **1/312537 unfound (0.000%)**
配置グループに関する詳細情報を表示します。
構文
ceph pg ID query
ID
を、unfound
オブジェクトを含む配置グループの ID に置き換えます。例
[ceph: root@host01 /]# ceph pg 3.8a5 query { "state": "active+recovering", "epoch": 10741, "up": [ 320, 248, 0], "acting": [ 320, 248, 0], <snip> "recovery_state": [ { "name": "Started\/Primary\/Active", "enter_time": "2021-08-28 19:30:12.058136", "might_have_unfound": [ { "osd": "0", "status": "already probed"}, { "osd": "248", "status": "already probed"}, { "osd": "301", "status": "already probed"}, { "osd": "362", "status": "already probed"}, { "osd": "395", "status": "already probed"}, { "osd": "429", "status": "osd is down"}], "recovery_progress": { "backfill_targets": [], "waiting_on_backfill": [], "last_backfill_started": "0\/\/0\/\/-1", "backfill_info": { "begin": "0\/\/0\/\/-1", "end": "0\/\/0\/\/-1", "objects": []}, "peer_backfill_info": [], "backfills_in_flight": [], "recovering": [], "pg_backend": { "pull_from_peer": [], "pushing": []}}, "scrub": { "scrubber.epoch_start": "0", "scrubber.active": 0, "scrubber.block_writes": 0, "scrubber.finalizing": 0, "scrubber.waiting_on": 0, "scrubber.waiting_on_whom": []}}, { "name": "Started", "enter_time": "2021-08-28 19:30:11.044020"}],
might_have_unfound
セクションには、Ceph がunfound
オブジェクトの検索を試行する OSD が含まれます。-
already probed
ステータスは、Ceph が OSD 内でunfound
オブジェクトを検出できないことを示します。 -
osd is down
状態は、Ceph が OSD と通信できないことを示します。
-
-
down
とマークされている OSD のトラブルシューティング詳細は、Down OSD を参照してください。 -
OSD が
down
となる問題を修正できない場合は、サポートチケットを作成してください。詳細は、サービスについて Red Hat サポートへの問い合わせ を参照してください。