文件 v0.1.7

多節點調度

本頁說明 go-pve-qemu 如何判斷 VM 所在節點,並決定在本機或經 SSH 執行 qm。

找出 VM 所在節點

服務掃描 /etc/pve/nodes/*/qemu-server/*.conf(Proxmox 叢集檔案系統,所有節點同步),由路徑取得 節點 → VMID 對應:

/etc/pve/nodes/pve2/qemu-server/120.conf  →  VMID 120 在 pve2

執行位置

條件 執行方式
VM 所在節點 = MAIN_NODE 本機執行 qm <args>
其他節點,且有對應 NODE_<node> ssh root@<NODE_node> qm <args>
MAIN_NODE 未設定,或找不到 NODE_<node> 以空主機執行 SSH,指令失敗

SSH 固定帶下列選項,避免互動提示阻塞 API:

-o ConnectTimeout=10
-o StrictHostKeyChecking=no
-o UserKnownHostsFile=/dev/null
-o BatchMode=yes

使用此機制的操作

操作 qm 子指令
start qm start
stop qm stop
shutdown qm shutdown
reboot qm reboot
destroy qm destroy
set/cpu qm set --cores
set/memory qm set --memory [--numa --balloon]
set/disk qm disk resize scsi0 +<size>
set/node qm migrate <vmid> <node> --with-local-disks

例外

遷移

POST /api/vm/:id/set/node 要求 VM 為停止狀態,以 --with-local-disks 一併搬移本地磁碟,qm migrate 的輸出逐行以 SSE 回傳。

EN