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 ノードへのルートレベルのアクセス。
手順
残りの Ceph Monitor がクォーラムを形成できる場合には、
ceph mon getmapコマンドを使用して Ceph Monitor マップを取得します。[root@mon ~]# ceph mon getmap -o /tmp/monmap残りの Ceph Monitor がクォーラムを形成できず、正しい Ceph Monitor マップを持つ Ceph Monitor が少なくとも 1 つある場合は、その Ceph Monitor からコピーします。
Ceph Monitor マップのコピー元の Ceph Monitor マップを停止します。
[root@mon ~]# systemctl stop ceph-mon@<host-name>たとえば、ホスト名
host1でホストで実行している Ceph Monitor を停止するには、以下のコマンドを実行します。[root@mon ~]# systemctl stop ceph-mon@host1Ceph Monitor マップをコピーします。
[root@mon ~]# ceph-mon -i ID --extract-monmap /tmp/monmapIDを、Ceph Monitor マップをコピーする Ceph Monitor の ID に置き換えます。[root@mon ~]# ceph-mon -i mon.a --extract-monmap /tmp/monmap
破損したまたは古くなった Ceph Monitor マップを持つ Ceph Monitor を停止します。
[root@mon ~]# systemctl stop ceph-mon@HOST_NAMEたとえば、ホスト名が
host2のホストで実行されている Ceph Monitor を停止するには、以下のコマンドを実行します。[root@mon ~]# systemctl stop ceph-mon@host2Ceph モニターマップを
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を実行して権限を変更します。root ユーザーとしてコマンドを実行します。
Syntax
ceph-mon -i ID --inject-monmap /tmp/monmapIDを、破損した Ceph Monitor マップまたは古くなった Ceph Monitor マップに置き換えます。例
[root@mon ~]# ceph-mon -i mon.c --inject-monmap /tmp/monmapファイルのアクセス権限を変更します。
例
[root@mon ~]# chown -R ceph:ceph /var/lib/ceph/mon/ceph-c/
Ceph Monitor を起動します。
[root@mon ~]# systemctl start ceph-mon@host2別の Ceph Monitor から Ceph Monitor マップをコピーした場合は、その Ceph Monitor も起動します。
[root@mon ~]# systemctl start ceph-mon@host1