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 Pod 的状态。

    # kubectl get po -n rook-ceph

  2. rook-ceph-osd-*如果 Pod 处于ErrorCrashLoopBackoff 状态,则必须修复磁盘。

    按照以下步骤修复磁盘:

    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 Pod。

      # kubectl get po -n rook-ceph

      如果 OSD 无法恢复,请使用相同的过程删除 OSD,然后删除磁盘或删除分区,然后再重新启动 rook-ceph-operator

Rook 和 Ceph Pod 的调试问题

问题

当 Rook 和 Ceph Pod 处于该 error 状态时,安装可能会失败

溶液

硬件功率不足可能会导致 Rook 和 Ceph Pod 错误。Rook 和 Ceph pod 错误也可能导致安装失败。要解决 Rook 和 Ceph Pod 的大多数问题,请确保已安装的 Pod 处于该 running 状态。要确认这一点,您必须:

  1. 执行以下命令,查看命名空间中安装 rook-ceph 的 Rook 和 Ceph Pod 的状态。

    # kubectl get po -n rook-ceph

  2. 确保以下 Pod 处于该 running 状态:

    • rook-ceph-mon-*—通常为三个监视器容器
    • rook-ceph-mgr-*—一个管理器 Pod

    • rook-ceph-osd-*—三个或更多 OSD Pod

    • 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 查看 pg 状态和性能。