Proxmox VE 的 Ceph 管理介面裡,有時會出現一個怎麼樣都刪不掉的 Monitor(MON):狀態顯示未知、按銷毀會失敗,想在同一個節點重新建立 MON 又說已經存在。這通常發生在節點重灌、MON 沒有正常移除、或是移除到一半出錯之後,留下了「殘留」的 MON 設定。
這篇整理清掉殘留 MON、再重新建立的步驟,以 pve2 這個節點為例,請換成你自己的節點名稱。
先確認狀況
ceph -s
ceph mon dump
ceph quorum_status --format json-pretty | grep -A5 quorum_names
grep -A3 'mon' /etc/pve/ceph.conf
要確認三件事:
- 叢集目前有沒有 quorum:
ceph -s能正常回應,就代表其他 MON 還能形成 quorum,可以用本文的做法 - monmap 裡還有沒有
pve2:ceph mon dump看得到的話,要從 monmap 移除 ceph.conf裡還有沒有pve2的設定:[mon.pve2]區段或mon_host裡的 IP
注意:如果 ceph -s 一直卡住沒有回應,代表剩下的 MON 無法形成 quorum,本文的方法不適用,要改用 Ceph 官方「從不健康的叢集移除 Monitor」的程序(擷取 monmap、用 monmaptool 移除、再注入回去)。這個操作風險較高,請先備份並詳讀官方文件。
先試 PVE 的正規方式
在 pve2 上執行:
pveceph mon destroy pve2
能成功的話就不用往下做了,直接跳到第五步重新建立。失敗的話(例如顯示找不到 MON、服務不存在),再用下面的手動方式清理。
從 monmap 移除
在任一台正常的節點上執行:
ceph mon remove pve2
ceph mon dump
已經不在 monmap 裡的話,這個指令會回報不存在,不影響後續步驟,執行一次沒有關係。
清除 pve2 上的 MON 服務與資料
在 pve2 上執行:
systemctl stop ceph-mon@pve2
systemctl disable ceph-mon@pve2
MON 的資料目錄先搬走備份,確認一切正常後再刪除:
mv /var/lib/ceph/mon/ceph-pve2 /root/ceph-mon-pve2.bak
Ceph 官方文件對被移除 MON 的資料目錄也是建議「封存到安全的地方,或刪除」,先搬走保留,萬一弄錯還有回頭的機會。
修改 ceph.conf
PVE 的 Ceph 設定檔是 /etc/pve/ceph.conf,放在叢集共用的檔案系統裡,在任一台節點修改,所有節點都會同步。
cp /etc/pve/ceph.conf /root/ceph.conf.bak
nano /etc/pve/ceph.conf
要改兩個地方。
刪除 pve2 的 MON 區段(如果還在):
[mon.pve2]
public_addr = 10.10.10.2
從 mon_host 移除 pve2 的 IP:
# 修改前
mon_host = 10.10.10.1 10.10.10.3 10.10.10.2
# 修改後
mon_host = 10.10.10.1 10.10.10.3
mon_host 是用戶端與服務啟動時用來找 MON 的清單,真正的 MON 成員以 monmap 為準。殘留的 IP 不一定會造成問題,但會讓用戶端每次都嘗試連一個不存在的 MON,也會讓之後重新建立時判斷錯誤,建議清乾淨。
改完之後,可以讓其他 MON 重新讀取設定(可以從網頁介面操作,也可以用指令,一台一台來,等前一台恢復再重新啟動下一台):
systemctl restart ceph-mon@pve1
ceph -s
systemctl restart ceph-mon@pve3
ceph -s
注意:只剩兩個 MON 時,任何一個停下來,叢集就會失去 quorum。重新啟動時一定要確認前一個已經回到 quorum,不要兩台同時重新啟動。
重新建立 MON
回到 PVE 網頁介面,「pve2 → Ceph → 監視器 → 建立」,選擇 pve2 建立。或在 pve2 上執行:
pveceph mon create
建立完成後確認:
ceph mon dump
ceph -s
三個 MON 都在 quorum 裡、ceph -s 回到 HEALTH_OK,就完成了。/etc/pve/ceph.conf 的 mon_host 也會自動把 pve2 加回去。
確認穩定之後,再刪除第三步搬走的舊資料:
rm -rf /root/ceph-mon-pve2.bak
步驟整理
| 步驟 | 在哪裡 | 指令 |
|---|---|---|
| 1 | 任一節點 | ceph -s、ceph mon dump 確認有 quorum 與殘留狀況 |
| 2 | pve2 | 先試 pveceph mon destroy pve2 |
| 3 | 正常的節點 | ceph mon remove pve2 |
| 4 | pve2 | 停用 ceph-mon@pve2,搬走 /var/lib/ceph/mon/ceph-pve2 |
| 5 | 任一節點 | 修改 /etc/pve/ceph.conf,一台一台重新啟動其他 MON |
| 6 | pve2 | pveceph mon create 重新建立 |
結論
殘留 MON 的清理順序是:monmap 移除 → 停止服務、搬走資料 → 清 ceph.conf → 重新建立。整個過程最重要的是隨時確認 quorum:只剩兩個 MON 的時候,任何一個停下來叢集就會卡住,重新啟動一定要一台一台來。
參考資料
- Proxmox VE 文件:Deploy Hyper-Converged Ceph Cluster(Ceph Monitor)
https://pve.proxmox.com/pve-docs/chapter-pveceph.html - Ceph 文件:Adding/Removing Monitors
https://docs.ceph.com/en/latest/rados/operations/add-or-rm-mons/ - PVE Ceph 叢集退出節點流程
https://blog.jason.tools/2026/02/pve-ceph-remove-node.html



