Proxmox Cluster 同期エラー (Cannot initialize CMAP service) 復旧手順
1. 現象
Proxmox VEクラスタにおいて、特定のノードでクラスタ同期が取れなくなる。
pvecm status を実行すると以下のエラーが表示される。
Plaintext
Cannot initialize CMAP service
2. 原因調査
時刻同期の確認
chronyc sources -v で確認したが、時刻同期は正常(Reach 377, Offsetも微小)。
サービス状態の確認
systemctl status corosync を確認すると、プロセスがエラー終了ではなく code=exited, status=0/SUCCESS で正常終了している。
ログ (journalctl -b -u corosync) に以下の決定的エラーを確認。
Plaintext
[CMAP ] Received config version (6) is different than my config version (5)! Exiting
原因:
当該ノードの corosync.conf の config_version(5)が、稼働中のクラスタのバージョン(6)より古いため、Corosyncが安全装置として自ら停止していた。
3. 対処手順
通常の /etc/pve はクラスタ同期がないと書き込めない(Read-only)ため、ローカルモードで強制的に修正を行う。
① サービスの完全停止
プロセスやマウントが残っているとローカルモードに入れないため、確実に停止・アンマウントする。
Bash
systemctl stop pve-cluster corosync killall pmxcfs umount /etc/pve # “not mounted” と出ればOK
② ローカルモードでの起動
pmxcfs をローカルモード(-l)で起動し、強制的に書き込み権限を得る。
Bash
pmxcfs -l
③ 設定ファイルの修正
corosync.conf を開き、バージョン番号をクラスタの現行バージョンに合わせる。
Bash
nano /etc/pve/corosync.conf
変更箇所:
Plaintext
totem { … config_version: 6 <— ここを正しい数値(今回は5→6)に変更 … }
④ サービスの復帰
ローカルモードのプロセスを終了し、通常モードで再起動する。
Bash
killall pmxcfs systemctl start pve-cluster corosync
⑤ 確認
正常にQuorum(定足数)が満たされているか確認。
Bash
pvecm status
Quorum: Yes となり、ノード情報が表示されれば復旧完了。