Vnc
如何讓 Qemu 為 Spice 自動選擇監聽埠?
我正在將一些虛擬機從 VNC 顯示類型切換到 SPICE。
VNC 顯示類型提供了一個非常方便的
to=
參數,允許 QEMU 自動使用定義範圍內的第一個空閒埠:-display vnc=127.0.0.1:0,to=100
這裡 QEMU 將為每個新的 VNC 顯示伺服器使用 5900 到 6000 之間的埠。
使用 SPICE 顯示實現此類功能的最簡潔方法是什麼(順便說一句,我沒有使用 libvirt)?
目前,我正在編寫一個測試 greping
netstat
輸出的腳本,以找到一個尚未使用的埠並將其傳遞給:-spice addr=127.0.0.1,port=${unused_port}
不提競爭條件,我只是覺得這種方法與 VNC 方法相比非常難看。而且由於QEMU 手冊頁似乎不是很詳盡(
to=
例如,似乎沒有提到 VNC 參數),所以我想知道是否有任何機會為 SPICE 提供等效參數?
(目前)不可能讓 QEMU 為 SPICE 選擇下一個空閒埠。這是因為一個實現細節:QEMU使用spice_server_set_port ,它只接受一個數字參數。
您現在可以做的最好的事情是在 QEMU 之外選擇一個埠號並像現在一樣分配它。
如果您覺得這太笨拙,請考慮使用 DNS 綁定到第一個可用的 IP 地址 + 可用埠。SPICE 伺服器程式碼會嘗試每個地址,直到成功,因此如果您映射
local.test
到 127.0.0.1、127.0.0.2、127.0.0.3 等,那麼它將嘗試綁定到這些介面中的每一個,直到其中一個成功。聽起來很糟糕,但它可能很有用。請注意,僅當您沒有其他服務在萬用字元地址上的同一埠上偵聽時,此方法才可行。