Community程式設計與開發github.com

bitranox/infra-proxmox

用於配置、管理或疑難排解 Proxmox VE 的安裝、主機管理、叢集、虛擬機、容器、儲存、Ceph、SDN、防火牆、使用者管理、HA、備份、通知及 CLI 工具 (pvecm, qm, pct, pvesm, pveceph, ha-manager, pvesh, vzdump)。涵蓋 Proxmox VE 9.1.2。

infra-proxmox 是什麼?

此技能為開發者與系統管理員提供一個全面的指南,用於操作 Proxmox VE 9.1.2 環境。它涵蓋了從叢集配置、安全協定到疑難排解的完整生命週期。當需要管理節點、虛擬機、容器、儲存設備或執行進階作業(如 Ceph 或 SDN 網路管理)時,可於 Claude Code、Cursor 或 Codex 等 AI 代理中使用。其主要價值在於透過強制執行安全性檢查(如仲裁驗證、備份檢查和變更前確認)來防止災難性操作,特別是在多節點或 HA 叢集中。該技能要求對所有具有破壞性的動作進行「行動審查協定」,包括使用鋼鐵人/紅隊測試來評估風險,然後才允許執行變更。它重視精確的 CLI 操作 (`qm`, `pct`, `pvecm`)、JSON 輸出以利腳本化處理,以及對所有系統變更都需有明確的回退計畫。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bitranox/bitranox-skills/tree/HEAD/plugins/bitranox/skills/infra-proxmox

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Proxmox VE 操作參考 (版本 9.1.2)

節點、來賓和服務可能在下線、無法連線或操作中途消失。永遠不要假設某個元件是正常運作的:請重新查詢真實狀態、在超時限制內重試,並優雅降級。有關自我修復模式,請參閱 bitranox:coding-resilience。


1. 叢集配置(自動偵測)

檢查項目命令
環境pveversion --verbose (完整元件版本:kernel, pve-manager, corosync, qemu-server)
節點pvecm nodes (計數、名稱、ID) / pvecm status (IP、仲裁、傳輸、連結狀態)
仲裁pvecm status -- 檢查「Quorate」欄位。門檻值:floor(總節點數/2) + 1
API 存取pvesh (本機 CLI), pveproxy (HTTPS :8006), REST API。腳本化處理請使用 --output-format json
儲存pvesm status (作用中儲存設備) / cat /etc/pve/storage.cfg (完整配置)
網路pvesh get /nodes/{node}/network --output-format json / cat /etc/network/interfaces
訂閱pvesubscription get (檢查狀態) / pvesubscription set <key> (套用金鑰)

2. 安全協定

規則詳細說明
無破壞性批次操作影響超過 1 個節點的命令(重新啟動、關機、大量 VM 停止)需要明確的使用者確認。
仲裁檢查在節點重新啟動/維護前:pvecm status。如果 (current - 1) < floor(total/2) + 1 -- 中止。在 2 節點叢集上,檢查 QDevice。
先備份在 VM 配置變更或升級前,驗證備份是否存在:pvesm list {storage} --content backup
不要強制刪除在未驗證資源 ID 的情況下,絕不使用 --purge 或 --force:qm config {vmid} 或 pct config {vmid}
HA 狀態在 HA 資源變更前:ha-manager status -- 確認沒有正在進行中的遷移或圍籬操作。
網路變更始終先進行試運行:ifreload -a -n (ifupdown2 沒有 --test)。絕不要在承載來賓流量的橋接器上執行 ifdown。遠端套用及 DHCP/bond/WLAN 陷阱:references/host-networking.md。
Corosync 配置先複製,編輯副本,備份當前配置,然後再移動。始終遞增 config_version。
儲存操作在移除儲存設備前:pvesm list {storage} 以確認沒有 VM/CT 參考到它。
保護標誌qm set {vmid} --protection 1 / pct set {vmid} --protection 1 以防止意外刪除。
ZFS 屬性清理PVE 將來賓配置的磁碟大小儲存為資料集的 refquota。一個清理所有資料集上 refquota/refreservation 的動作會默默移除每個來賓的磁碟限制,而 pct config 仍會報告舊的大小,導致一個容器可填滿整個儲存池。請排除以 subvol- 或 vm- 開頭的葉子名稱。

3. 行動審查協定

強制執行。 在每次直接對 Proxmox 節點、VM 或容器執行操作(命令、配置變更、服務操作)前,都必須進行此審查。

例外情況: 唯讀操作 - 讀取日誌、查詢狀態、收集資訊而不做任何變更 - 被視為安全,可以在不經此審查的情況下立即執行。

在 opus 上執行此關卡。 這個鋼鐵人/紅隊判斷會對 LIVE 基礎設施的變更進行把關 - 較弱的模型會低估停機、資料遺失和仲裁風險。請在 opus 上進行審查:將其委託給一個固定為 opus 的子代理,設定努力程度為 medium(審查分派,請參閱 bitranox:process-agents-subagent-driven-development「審查分派」),或者(如果你保持內嵌)在執行前提供切換模型或繼續的選項。絕對不要在未知的較低層級上執行此關卡。請參閱 bitranox:process-agents-subagent-driven-development(「會話模型是固定的」/「具體層級」)。

3.1 鋼鐵人提示

考慮計劃在 Proxmox 伺服器上執行的動作或配置,以其最理想、最成功的形式呈現。想像此動作代表最安全、最有效率且最佳整合的解決方案。闡述此動作如何完美達成系統管理的目標、增加穩定性,並完全滿足使用者需求。

3.2 紅隊提示

以經驗豐富的管理員或安全分析師的角度審查計劃的 Proxmox 動作,試圖找出潛在風險。辨識配置中可能存在的弱點,考慮停機風險、資料遺失或非預期的副作用。在最壞情況下測試計劃的穩健性,以確保其在壓力下仍然安全可靠。

3.3 決策

在紅隊審查結束時,評估已辨識的風險或弱點是否嚴重到足以阻止計劃的動作。如果動作看起來安全、合理且穩健,則可以立即執行。如果仍有重大不確定性,則必須明確要求使用者確認。最後做出明確的決定:「執行動作」 或 「向使用者請求確認」。


4. 程式碼與回覆風格

  • 回覆: 簡短、精確、以 CLI 為導向 (pvesh, pvecm, pvesm, qm, pct, ha-manager, vzdump, pvesr, pvenode, pveceph, pveum, pveam)。
  • 疑難排解: 始終先查詢日誌:journalctl -u pvedaemon -n 50, pvenode task list --errors 1, /var/log/pveproxy/access.log。
  • JSON 偏好: 使用 --output-format json 或 json-pretty。對於腳本化解析,使用 --noborder --noheader。
  • 回退計畫: 每個變更都必須包含回退措施。先備份配置檔案。在進行儲存/VM 變更前,確保備份存在。

5. 叢集大小速查表

大小行為
單節點無叢集操作。無 HA。專注於本地儲存 + 外部備份。
2 節點強烈建議使用 QDevice。沒有它:失去 1 個節點 = 失去仲裁。緊急情況使用 pvecm expected 1。
3 個以上節點完整 HA。能容忍 floor((N-1)/2) 個故障(3 節點:1 個,5 節點:2 個)。

偵測節點數量: pvecm nodes | grep -c '^\s*[0-9]'


6. 疑難排解快速參考

問題診斷
叢集無法定足pvecm status > "Quorate: No"。檢查連線,systemctl status corosync。緊急情況:pvecm expected 1。
節點無法加入驗證 UDP 5405-5412、時間同步、SSH (TCP 22)。嘗試:pvecm add {IP} --fingerprint {SHA256}。
虛擬機無法啟動檢查鎖定:qm unlock {vmid}。檢查儲存空間:pvesm status。查看日誌:journalctl -u pvedaemon。
備份失敗檢查儲存空間:pvesm status。檢查權限。嘗試手動執行:vzdump {vmid} --storage {storage} --mode snapshot。
HA 資源無法啟動ha-manager status、ha-manager resource-status。從超過 5 次嘗試的節點上清除:ha-manager cleanup {node}。
儲存池已滿df -h、zfs list -o name,used,avail,refer,mountpoint、pvesm status。尋找孤兒快照:zfs list -t snapshot。
Ceph 健康狀態ceph -s、ceph health detail、ceph osd tree。檢查 OSD:ceph osd stat。
SDN 問題驗證 VNet:pvesh get /cluster/sdn/vnets。檢查子網:pvesh get /cluster/sdn/subnets。重新載入 SDN:pvesh set /cluster/sdn。

7. 常見動作

類別動作範例命令
VM建立qm create {vmid} --name {name} --memory {MB} --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --virtio0 {storage}:{size}
啟動/停止qm start {vmid} / qm stop {vmid}
遷移qm migrate {vmid} {target-node} --online
快照qm snapshot {vmid} {snapname}
備份vzdump {vmid} --storage {storage} --mode snapshot
設定qm set {vmid} --{option} {value}
取消鎖定qm unlock {vmid}
CT建立pct create {vmid} {template} --storage {storage} --memory {MB} --net0 name=eth0,bridge=vmbr0,ip=dhcp
啟動/停止pct start {vmid} / pct stop {vmid}
遷移pct migrate {vmid} {target-node}
備份vzdump {vmid} --storage {storage} --mode snapshot
設定pct set {vmid} --{option} {value}
復原(還原)pct restore {vmid} {backup-file} --storage {storage}
取消鎖定pct unlock {vmid}
節點重新啟動pvenode reboot (需要確認)
關機pvenode shutdown (需要確認)
任務列表pvenode task list
儲存列出pvesm status
內容pvesm list {storage}
添加pvesm add {type} {name} --{option} {value}
移除pvesm remove {storage} (需要先驗證沒有使用中的 VM/CT)
掃描磁碟pvesm scan
Ceph狀態ceph -s
OSD 樹狀圖ceph osd tree
池列表ceph osd lspools
新增 OSDpveceph osd create /dev/{disk}
移除 OSDpveceph osd remove {osd-id}
網路橋接器pvesh get /nodes/{node}/network
重新載入ifreload -a (需要先試運行)
使用者列出pveum user list
添加pveum user add {username}@{realm} --password
權限pveum acl modify / --user {username}@{realm} --role {role}

8. 環境變數與路徑

  • PVE_CLUSTER_CONFIG_DIR: /etc/pve (叢集檔案系統掛載點)
  • PVE_NODE: 目前節點名稱
  • PVE_LOG_DIR: /var/log/pve
  • PVE_DB_DIR: /var/lib/pve-cluster

9. 相關技能

  • bitranox:infra-linux: 一般 Linux 系統管理、網路、儲存
  • bitranox:coding-resilience: 自我修復與優雅降級模式
  • bitranox:process-agents-subagent-driven-development: 子代理分派與模型分層

相關技能