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-ceph
OSDが回復しない場合は、同じ手順でOSDを取り外し、ディスクを取り外すかパーティションを削除してから再起動
rook-ceph-operator
します。
-
関連項目
ルークポッドとCephポッドに関する問題のデバッグ
問題
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-*
- マネージャーポッド 1 台 -
rook-ceph-osd-*
- 3 つ以上の OSD ポッド -
rook-ceph-mds-cephfs-*
—メタデータサーバー -
rook-ceph-rgw-object-store-*
- オブジェクトストア・ゲートウェイ -
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
pgステータスとパフォーマンスを表示します。