4.3. monmap の注入

Ceph Monitor に古いまたは破損した Ceph Monitor マップ (mtte) がある場合は、誤った IP アドレスで他の Ceph Monitor に到達しようとしているため、クォーラムに参加できません。

この問題の最も安全な方法は、他の Ceph Monitor から実際の Ceph Monitor マップを取得して注入することです。

注記

このアクションにより、Ceph Monitor によって保持される既存の Ceph Monitor マップが上書きされます。

この手順では、他の Ceph Monitor がクォーラムを形成できている場合、または少なくとも 1 つの Ceph Monitor が正しい Ceph Monitor マップを持っている場合に、Ceph Monitor マップを注入する方法を示します。すべての Ceph Monitor でストアが破損しているため、Ceph Monitor マップも破損している場合は、Ceph Monitor ストアの回復 を参照してください。

前提条件

  • Ceph Monitor マップへのアクセス。
  • Ceph Monitor ノードへのルートレベルのアクセス。

手順

  1. 残りの Ceph Monitor がクォーラムを形成できる場合には、ceph mon getmap コマンドを使用して Ceph Monitor マップを取得します。

    [root@mon ~]# ceph mon getmap -o /tmp/monmap
  2. 残りの Ceph Monitor がクォーラムを形成できず、正しい Ceph Monitor マップを持つ Ceph Monitor が少なくとも 1 つある場合は、その Ceph Monitor からコピーします。

    1. Ceph Monitor マップのコピー元の Ceph Monitor マップを停止します。

      [root@mon ~]# systemctl stop ceph-mon@<host-name>

      たとえば、ホスト名 host1 でホストで実行している Ceph Monitor を停止するには、以下のコマンドを実行します。

      [root@mon ~]# systemctl stop ceph-mon@host1
    2. Ceph Monitor マップをコピーします。

      [root@mon ~]# ceph-mon -i ID --extract-monmap /tmp/monmap

      ID を、Ceph Monitor マップをコピーする Ceph Monitor の ID に置き換えます。

      [root@mon ~]# ceph-mon -i mon.a  --extract-monmap /tmp/monmap
  3. 破損したまたは古くなった Ceph Monitor マップを持つ Ceph Monitor を停止します。

    [root@mon ~]# systemctl stop ceph-mon@HOST_NAME

    たとえば、ホスト名が host2 のホストで実行されている Ceph Monitor を停止するには、以下のコマンドを実行します。

    [root@mon ~]# systemctl stop ceph-mon@host2
  4. Ceph モニターマップを ceph ユーザーとして 2 つの異なる方法で挿入できます。

    • ceph ユーザーとしてコマンドを実行します。

      Syntax

      su - ceph -c 'ceph-mon -i ID --inject-monmap /tmp/monmap'

      ID を、破損した Ceph Monitor マップまたは古くなった Ceph Monitor マップに置き換えます。

      [root@mon ~]# su - ceph -c 'ceph-mon -i mon.c --inject-monmap /tmp/monmap'

    • root ユーザーとしてコマンドを実行してから、chown を実行して権限を変更します。

      1. root ユーザーとしてコマンドを実行します。

        Syntax

        ceph-mon -i ID --inject-monmap /tmp/monmap

        ID を、破損した Ceph Monitor マップまたは古くなった Ceph Monitor マップに置き換えます。

        [root@mon ~]# ceph-mon -i mon.c --inject-monmap /tmp/monmap

      2. ファイルのアクセス権限を変更します。

        [root@mon ~]# chown -R ceph:ceph /var/lib/ceph/mon/ceph-c/

  5. Ceph Monitor を起動します。

    [root@mon ~]# systemctl start ceph-mon@host2

    別の Ceph Monitor から Ceph Monitor マップをコピーした場合は、その Ceph Monitor も起動します。

    [root@mon ~]# systemctl start ceph-mon@host1