Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ceph と Rook に関する問題のトラブルシューティング

これらのトピックでは、Ceph と Rook に関する問題のトラブルシューティング手順について説明します。

OSD作成の失敗のトラブルシューティング

問題

オブジェクト・ストレージ・デーモン (OSD) が作成されないため、インストールが失敗します。

解決

インストール失敗の一般的な原因は、オブジェクトストレージデーモン(OSD)が作成されないことです。OSDは、クラスタノード上のストレージを設定します。OSDは、リソースが不足しているか、ディスク容量が正しくパーティション化されていないという形で、ディスクリソースが使用できないために作成されない場合があります。ディスク容量の不足によるインストールの失敗を防ぐには、ノードにフォーマットされていないディスク容量が十分にあることを確認してください。

ディスクのフォーマットに関する問題のデバッグ

問題

ディスクをフォーマットする必要がある場合、インストールが失敗します。

解決

フォーマットされていないディスク容量を十分に確保します。

rook-ceph-osd-prepare-hostname-* ジョブのログを調べて、ディスクまたはパーティションを再フォーマットする必要があるかどうかを判断する必要があります。ディスクまたはパーティションを再フォーマットし、Rook を再起動するには、次のようにします。

  1. 次のいずれかの方法を使用して、既存のディスクまたはパーティションを再フォーマットします。

    注意:

    これらのコマンドは、使用しているディスクまたはパーティションを完全に再フォーマットし、それらのすべてのデータを失います。

    • Cephに使用するはずだったが、使用できない状態だったために使用されなかったブロックストレージデバイスがある場合は、ディスクを完全に再フォーマットできます。
    • Cephに使用するべきディスクパーティションがある場合は、パーティション上のデータを完全にクリアできます。
  2. Rookを再起動して変更を保存し、OSD作成プロセスを再試行します。

Ceph OSD障害のトラブルシューティング

問題

Ceph OSDに障害が発生する。

解決

障害が発生したOSDを特定し、取り外す必要があります。その後、ディスクの一部または全部を再フォーマットまたは交換できます。

ディスク障害のトラブルシューティングを行うには、次の手順を実行します。

  1. 次のコマンドを実行して、 rook-ceph 名前空間にインストールされているRookポッドとCephポッドのステータスを確認します。

    # kubectl get po -n rook-ceph

  2. rook-ceph-osd-*ポッドがErrorまたはCrashLoopBackoff状態の場合は、ディスクを修復する必要があります。

    次の手順に従って、ディスクを修復します。

    1. rook-ceph-operatorを停止します。

      # kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=0

    2. 障害が発生しているOSDプロセスを削除します。

      # kubectl delete deploy -n rook-ceph rook-ceph-osd-number

    3. ツールボックスに接続します。

      $ kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools -o jsonpath={..metadata.name}) -- bash

    4. 障害のあるOSDを特定します。

      # ceph osd status

    5. 障害が発生したOSDにマークを付けます。

    6. 障害が発生したOSDを取り外します。

      # ceph osd purge number --yes-i-really-mean-it

    7. 障害が発生したOSDをホストしたノードに接続し、次のいずれかの操作を行います。
      • ハードウェア障害が発生した場合は、ハードディスクを交換してください。
      • ディスクを完全に再フォーマットします。
      • パーティションを完全に再フォーマットします。
    8. rook-ceph-operatorを再起動します。

      # kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=1

    9. OSDポッドを監視します。

      # kubectl get po -n rook-ceph

      OSDが回復しない場合は、同じ手順でOSDを取り外し、ディスクを削除するか、パーティションを削除してから rook-ceph-operatorを再起動します。

Rook Pod と Ceph Pod に関する問題のデバッグ

問題

RookおよびCephポッドが error 状態の場合、インストールが失敗する可能性があります。

解決

ハードウェアのパワーが不足していると、Rook ポッドと Ceph ポッドのエラーが発生する可能性があります。Rook ポッドと Ceph ポッドのエラーも、インストールが失敗する原因となる可能性があります。Rook ポッドと Ceph ポッドのほとんどの問題を解決するには、インストールされているポッドが running 状態であることを確認します。これを確認するには、次のことを行う必要があります。

  1. 次のコマンドを実行して、 rook-ceph 名前空間にインストールされているRookポッドとCephポッドのステータスを確認します。

    # kubectl get po -n rook-ceph

  2. 次のポッドが running 状態であることを確認します。

    • rook-ceph-mon-*—通常は 3 つのモニター ポッド
    • rook-ceph-mgr-*—マネージャー ポッド x 1

    • rook-ceph-osd-*—3つ以上のOSDポッド

    • rook-ceph-mds-cephfs-*—メタデータサーバー

    • rook-ceph-rgw-object-store-*—ObjectStore ゲートウェイ

    • rook-ceph-tools*—追加のデバッグ オプション

      ツールボックスに接続するには、次のコマンドを使用します。

      $ kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools \ -o jsonpath={..metadata.name}) -- bash

      ツールボックスのその他の一般的なコマンドの詳細については、 表 1 を参照してください。

      表 1:追加コマンド
      コマンド の説明
      # ceph status クラスターの状態を表示します。
      # ceph osd status OSDマップの概要を表示します。
      # ceph osd df ディスク使用量の詳細を表示します (グローバルおよびプールごと)。
      # ceph osd utilization OSD使用率を表示します。
      # ceph osd pool stats ディスク・プールの使用状況を表示します。
      # ceph osd tree OSDツリーを表示します。
      # ceph pg stat ページのステータスとパフォーマンスを表示します。