Como permitir que o Qemu auto-selecione uma porta de escuta para o Spice?

1

Estou mudando algumas VMs do tipo de exibição VNC para SPICE.

O tipo de exibição VNC oferece um parâmetro to= muito útil, permitindo que o QEMU use automaticamente a primeira porta livre de um intervalo definido:

-display vnc=127.0.0.1:0,to=100

Aqui o QEMU usará portas entre 5900 e 6000 para cada novo servidor de exibição VNC.

Qual é a maneira mais limpa de obter tal funcionalidade com a exibição SPICE (a propósito, eu não estou usando o libvirt)?

Atualmente, estou prestes a fazer um script de teste greping netstat output para encontrar uma porta ainda não usada e passá-la para:

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

Sem mencionar as condições da corrida, eu acho este método bastante feio comparado ao VNC. E como a página do QEMU não parece muito exaustiva (o parâmetro VNC to= não parece mencionado por exemplo), então me pergunto se por acaso existe um parâmetro equivalente para SPICE?

    
por WhiteWinterWolf 08.07.2015 / 10:48

1 resposta

1

Não é (atualmente) possível deixar o QEMU escolher a próxima porta livre para SPICE. Isso acontece devido a um detalhe de implementação: usa o QEMU o spice_server_set_port que aceita apenas um único parâmetro numérico.

O melhor que você pode fazer agora é escolher um número de porta fora do QEMU e atribuí-lo como você faz agora.

Se você achar isso muito desajeitado, considere usar o DNS para vincular-se ao primeiro endereço IP livre + porta disponível. O código do servidor SPICE tenta cada endereço até que seja bem-sucedido, por isso, se você mapear local.test para 127.0.0.1, 127.0.0.2, 127.0.0.3, etc., então ele tentará se ligar a cada uma dessas interfaces até que uma seja bem-sucedida. Soa horrível, mas pode ser útil. Observe que esse método só é possível se você não tiver outro serviço escutando na mesma porta no endereço curinga.

    
por 07.08.2015 / 15:34

Tags