web-dev-qa-db-ja.com

QemuにSpiceのリスニングポートを自動選択させるにはどうすればよいですか?

一部のVMをVNC表示タイプからSPICEに切り替えています。

VNCディスプレイタイプは非常に便利なto=パラメータにより、QEMUは定義された範囲の最初の空きポートを自動的に使用できます。

-display vnc=127.0.0.1:0,to=100

ここで、QEMUは新しいVNCディスプレイサーバーごとに5900〜6000のポートを使用します。

SPICEディスプレイでそのような機能を実現するための最もクリーンな方法は何ですか(私はlibvirtを使用していません)?

現在、netstat出力をgrepするテストのスクリプトを作成して、まだ使用されていないポートを見つけて、次の場所に渡します。

-spice addr=127.0.0.1,port=${unused_port}

競合状態については触れませんが、この方法はVNCの方法に比べてかなり醜いです。そして QEMUのマンページ はあまり網羅的ではないようです(VNC to=パラメータは、たとえば言及されていないようです)、それでは、万が一SPICEに相当するパラメータがあるのだろうか?

1
WhiteWinterWolf

(現在)QEMUにSPICEの次の空きポートを選択させることはできません。これは、実装の詳細が原因で発生します。QEMU sesspice_server_set_port これは単一の数値パラメーターのみを受け入れます。

今できる最善のことは、QEMUの外部のポート番号を選び、今と同じように割り当てることです。

これが扱いにくい場合は、DNSを使用して最初の空きIPアドレス+使用可能なポートにバインドすることを検討してください。 SPICEサーバーコード 成功するまですべてのアドレスを試行するため、マップするとlocal.testから127.0.0.1、127.0.0.2、127.0.0.3などの場合、成功するまでこれらの各インターフェイスへのバインドを試みます。ひどいように聞こえますが、それは役に立つかもしれません。この方法は、ワイルドカードアドレスの同じポートでリッスンしている他のサービスがない場合にのみ可能であることに注意してください。

1
Lekensteyn