Vnc

如何讓 Qemu 為 Spice 自動選擇監聽埠?

  • August 7, 2015

我正在將一些虛擬機從 VNC 顯示類型切換到 SPICE。

VNC 顯示類型提供了一個非常方便的to=參數,允許 QEMU 自動使用定義範圍內的第一個空閒埠:

-display vnc=127.0.0.1:0,to=100

這裡 QEMU 將為每個新的 VNC 顯示伺服器使用 5900 到 6000 之間的埠。

使用 SPICE 顯示實現此類功能的最簡潔方法是什麼(順便說一句,我沒有使用 libvirt)?

目前,我正在編寫一個測試 grepingnetstat輸出的腳本,以找到一個尚未使用的埠並將其傳遞給:

-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 等,那麼它將嘗試綁定到這些介面中的每一個,直到其中一個成功。聽起來很糟糕,但它可能很有用。請注意,僅當您沒有其他服務在萬用字元地址上的同一埠上偵聽時,此方法才可行。

引用自:https://unix.stackexchange.com/questions/214557