Red Hat Training

A Red Hat training course is available for Red Hat Ceph Storage

4.2. 注入 monitor map

如果 monitor 有一个过时的或损坏的 monitor map(monmap),它就无法加入仲裁,因为它试图访问不正确的 IP 地址上的其他 monitor。

解决这个问题的最安全方法是从其他 monitor 获取并注入实际的 monitor map。请注意,此操作将覆盖 monitor 保存的现有 monitor map。

此流程演示了如何在其他 monitor 组成仲裁或至少有一个 monitor 具有正确的 monitor map 时注入 monitor map。如果所有 monitor 都有损坏的存储,因此也包含 monitor 映射,请参阅 第 4.3 节 “恢复 monitor 存储”

步骤:注入 monitor map

  1. 如果剩余的 monitor 可以形成仲裁,请使用 ceph mon getmap 命令获取 monitor map:

    # ceph mon getmap -o /tmp/monmap
  2. 如果剩余的 monitor 无法形成仲裁,并且至少有一个带有正确的 monitor 映射的 monitor,请从该 monitor 中复制它:

    1. 停止您要复制 monitor map 的 monitor:

      systemctl stop ceph-mon@<host-name>

      例如,停止在带有 host1 短主机名的主机上运行的 monitor:

      # systemctl stop ceph-mon@host1
    2. 复制 monitor map:

      ceph-mon -i <id> --extract-monmap /tmp/monmap

      使用您要从中复制 monitor 映射的 monitor ID 替换 <id>,例如:

      # ceph-mon -i mon.a  --extract-monmap /tmp/monmap
  3. 使用损坏或过时的 monitor map 停止 monitor:

    systemctl stop ceph-mon@<host-name>

    例如,停止在带有 host2 短主机名的主机上运行的 monitor:

    # systemctl stop ceph-mon@host2
  4. 注入 monitor map:

    ceph-mon -i <id> --inject-monmap /tmp/monmap

    使用损坏的或过时的 monitor map 将 <id> 替换为 monitor 的 ID,例如:

    # ceph-mon -i mon.c --inject-monmap /tmp/monmap
  5. 启动 monitor,例如:

    # systemctl start ceph-mon@host2

    如果您从另一个 monitor 复制了 monitor map,请也启动该 monitor,例如:

    # systemctl start ceph-mon@host1

另请参阅