Ceph と Rook に関する問題のトラブルシューティング
これらのトピックでは、Ceph と Rook に関する問題のトラブルシューティング手順について説明します。
OSD作成の失敗のトラブルシューティング
問題
オブジェクト・ストレージ・デーモン (OSD) が作成されないため、インストールが失敗します。
解決
インストール失敗の一般的な原因は、オブジェクトストレージデーモン(OSD)が作成されないことです。OSDは、クラスタノード上のストレージを設定します。OSDは、リソースが不足しているか、ディスク容量が正しくパーティション化されていないという形で、ディスクリソースが使用できないために作成されない場合があります。ディスク容量の不足によるインストールの失敗を防ぐには、ノードにフォーマットされていないディスク容量が十分にあることを確認してください。
ディスクのフォーマットに関する問題のデバッグ
問題
ディスクをフォーマットする必要がある場合、インストールが失敗します。
解決
フォーマットされていないディスク容量を十分に確保します。
rook-ceph-osd-prepare-hostname-* ジョブのログを調べて、ディスクまたはパーティションを再フォーマットする必要があるかどうかを判断する必要があります。ディスクまたはパーティションを再フォーマットし、Rook を再起動するには、次のようにします。
-
次のいずれかの方法を使用して、既存のディスクまたはパーティションを再フォーマットします。
注意:これらのコマンドは、使用しているディスクまたはパーティションを完全に再フォーマットし、それらのすべてのデータを失います。
- Cephに使用するはずだったが、使用できない状態だったために使用されなかったブロックストレージデバイスがある場合は、ディスクを完全に再フォーマットできます。
$ sgdisk -zap /dev/disk $ dd if=/dev/zero of=/dev/disk bs=1M count=100
- Cephに使用するべきディスクパーティションがある場合は、パーティション上のデータを完全にクリアできます。
$ wipefs -a -f /dev/partition $ dd if=/dev/zero of=/dev/partition bs=1M count=100
- Cephに使用するはずだったが、使用できない状態だったために使用されなかったブロックストレージデバイスがある場合は、ディスクを完全に再フォーマットできます。
-
Rookを再起動して変更を保存し、OSD作成プロセスを再試行します。
$ kubectl rollout restart deploy -n rook-ceph rook-ceph-operator
Ceph OSD障害のトラブルシューティング
問題
Ceph OSDに障害が発生する。
解決
障害が発生したOSDを特定し、取り外す必要があります。その後、ディスクの一部または全部を再フォーマットまたは交換できます。
ディスク障害のトラブルシューティングを行うには、次の手順を実行します。
-
次のコマンドを実行して、
rook-ceph名前空間にインストールされているRookポッドとCephポッドのステータスを確認します。# kubectl get po -n rook-ceph -
rook-ceph-osd-*ポッドがErrorまたはCrashLoopBackoff状態の場合は、ディスクを修復する必要があります。次の手順に従って、ディスクを修復します。
-
rook-ceph-operatorを停止します。# kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=0 -
障害が発生しているOSDプロセスを削除します。
# kubectl delete deploy -n rook-ceph rook-ceph-osd-number -
ツールボックスに接続します。
$ kubectl exec -ti -n rook-ceph $(kubectl get po -n rook-ceph -l app=rook-ceph-tools -o jsonpath={..metadata.name}) -- bash -
障害のあるOSDを特定します。
# ceph osd status -
障害が発生したOSDにマークを付けます。
[root@rook-ceph-tools-/]# ceph osd out 5 marked out osd.5. [root@rook-ceph-tools-/]# ceph osd status ID HOST USED AVAIL WR OPS WR DATA RD OPS RD DATA STATE 0 10.xx.xx.210 4856M 75.2G 0 0 0 0 exists,up 1 10.xx.xx.215 2986M 77.0G 0 0 1 89 exists,up 2 10.xx.xx.98 3243M 76.8G 0 0 1 15 exists,up 3 10.xx.xx.195 4945M 75.1G 0 0 0 0 exists,up 4 10.xx.xx.170 5053M 75.0G 0 0 0 0 exists,up 5 10.xx.xx.197 0 0 0 0 0 0 exists
-
障害が発生したOSDを取り外します。
# ceph osd purge number --yes-i-really-mean-it - 障害が発生したOSDをホストしたノードに接続し、次のいずれかの操作を行います。
- ハードウェア障害が発生した場合は、ハードディスクを交換してください。
- ディスクを完全に再フォーマットします。
$ sgdisk -zap /dev/disk $ dd if=/dev/zero of=/dev/disk bs=1M count=100
- パーティションを完全に再フォーマットします。
$ wipefs -a -f /dev/partition $ dd if=/dev/zero of=/dev/partition bs=1M count=100
-
rook-ceph-operatorを再起動します。# kubectl scale deploy -n rook-ceph rook-ceph-operator --replicas=1 -
OSDポッドを監視します。
# kubectl get po -n rook-cephOSDが回復しない場合は、同じ手順でOSDを取り外し、ディスクを削除するか、パーティションを削除してから
rook-ceph-operatorを再起動します。
-
参照
Rook Pod と Ceph Pod に関する問題のデバッグ
問題
RookおよびCephポッドが error 状態の場合、インストールが失敗する可能性があります。
解決
ハードウェアのパワーが不足していると、Rook ポッドと Ceph ポッドのエラーが発生する可能性があります。Rook ポッドと Ceph ポッドのエラーも、インストールが失敗する原因となる可能性があります。Rook ポッドと Ceph ポッドのほとんどの問題を解決するには、インストールされているポッドが running 状態であることを確認します。これを確認するには、次のことを行う必要があります。
-
次のコマンドを実行して、
rook-ceph名前空間にインストールされているRookポッドとCephポッドのステータスを確認します。# kubectl get po -n rook-ceph -
次のポッドが
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 statusOSDマップの概要を表示します。 # ceph osd dfディスク使用量の詳細を表示します (グローバルおよびプールごと)。 # ceph osd utilizationOSD使用率を表示します。 # ceph osd pool statsディスク・プールの使用状況を表示します。 # ceph osd treeOSDツリーを表示します。 # ceph pg statページのステータスとパフォーマンスを表示します。