Proxmox VEでのCephコンポーネントのゴースト化対応

Proxmox VEを複数台構築して、サーバーHWの冗長構成をとるとき、そのストレージ領域としてCephを利用するのが基本だと思いますが、構築時の不手際などで、このCephのコンポーネントが正しくProxmox VEの管理画面上に表示されない、もしくは表示されてもステータスが正常化しない、機能しないコンポーネントが削除できない(ゴースト化する)などといった事象が発生することがあります。

この記事では、解消方法をまとめておきたいと思います。

0.ゴースト化するとどうなるか

一般的にゴースト化するというのは、構成や表示が見えているのに、それらの操作(追加・変更・削除)が一切受け付けられない状況になることを指しています。(間違っていたらすみません。)

大体筆者の経験的にはこのようなゴースト化した設定や情報は、手動などで強制的な削除を行ってからの再登録で解消することが多いです。Proxmox VEのCephでもこの大枠から外れず、一度ゴーストになった情報を完全削除してから再登録することで回復します。

ゴースト化すると、Proxmox VEの管理画面上でどのようになるかは、以下の画像が参考になります。こちらは拙宅の環境をベースに作った参考画面です。

この状態でおかしくなっているのは、次の2点になります。

  • モニタのステータスが1台正しく取れていない。
  • 3台あるはずがメタデータサーバに2台しか並んでいない。

いずれもこの状態で、Proxmox VEの管理画面から削除や登録をしても、「既に存在しない」であったり、「既に登録されている」などのエラーとなる、起動してもステータスが正常化しないなど、状況としてはよろしくない形です。

1.ゴースト化したコンポーネント情報の完全削除

ということで、残留してしまっている情報を含めて、コンポーネント情報の完全削除を最初に行います。

1.1.コンポーネントの停止

まず、正常に動作していないコンポーネントを停止します。

モニター(ceph-mon)、マネージャー(ceph-mgr)、メタデータサーバー(ceph-mds)と、対象コンポーネントによって、停止コマンドが変わるので注意して下さい。

まずは削除対象コンポーネントが動作するサーバーにログインして、シェルコマンドで停止を実行します。例示では、サーバーを”target-host”、削除対象コンポーネントをモニターとしています。

停止の後、デーモンの再読み込みをしていますが、ここまでがワンセットでの実行になります。

root@target-host:~# service ceph-mon@target-host stop
root@target-host:~# systemctl disable ceph-mon@target-host
root@target-host:~# systemctl daemon-reload

1.2.コンポーネント情報の削除

コンポーネントの情報を完全削除します。

削除するのは、データディレクトリの情報と、設定ファイルに書き込まれた情報になります。

まずはデータディレクトリの情報を削除します。例示では、モニターを記載していますが、マネージャー、メタデータサーバーの場合でも、同じ’/var/lib/ceph’ディレクトリ以下に対応するデータが納められていますのでこれを削除します。

root@target-host:~# rm -r /var/lib/ceph/mon/ceph-target-host

モニター、メタデータサーバーの場合、一度でも登録されるとceph.confにその情報が書き込まれていますのでこれを削除します。

root@target-host:~# vi /etc/ceph/ceph.conf

[grobal]
mon_host = 192.168.xx.1 192.168.xx.2 192.168.xx.3
→target-hostのモニターのIPが併記されているので該当IPを削除。例として192.168.xx.3を削除

[mon.target-host]
public_addr = 192.168.xx.3
→target-hostのモニターが記載されているので、丸っと削除。

[mds.target-host]
host = target-host
mds_standby_for_name = pve
→メタデータサーバーの場合はmdsの該当箇所を丸っと削除。

2.コンポーネントの再作成(再登録)

ということで削除したコンポーネントを再作成します。再作成には、pvecephコマンドを使います。

例示はモニターですが、マネージャー(mgr)、メタデータサーバー(mds)は、’create’の前のワードを変更する事で同様に再作成できます。

root@target-host:~# pveceph mon create

3.おしまい

ここまで変なエラーなどがなければ、Proxmox VEの管理画面でもCephのコンポーネントが正常に取得できるようになっていると思います。

今回の対応ではこの程度で済んでいますが、色々調べていると、根深い場合には一度Cephのパッケージをアンインストールしてからの再導入という対応事例もあるようです。

拙宅の場合、Proxmox VEで正常にステータスが取れていなくても、マイグレーションを含めてこれといった悪影響は出ていなかったのですが、気持ち悪いのと、いつか弊害になるかもと考え、対処したので備忘としてまとめました。

最後に今回の事例を調べていていて行き当たったProxmox VEのフォーラムへのリンクを記載しておきます。


参考

https://forum.proxmox.com/threads/i-managed-to-create-a-ghost-ceph-monitor.58435