Usamos xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname r
on Dom0
e, em seguida, xenstore-read /tool/hostname
nas VMs. Fácil e leve ...
Na verdade, estou testando o RHEL 5.3 com o Xen entre dois servidores para ter uma solução de recuperação de desastre. Por isso, estou jogando com a mudança da minha domU de um servidor dom0 para o outro servidor.
Infelizmente, quando alguém move o domU, não tenho a menor ideia de onde meu domínio está hospedado. Eu estou querendo saber onde eu não posso encontrar meu nome de dom0 dentro do domU. Eu estou procurando por algo como o comando gzonename em uma zona esparsa solaris. Eu verifico dentro de / proc / xen mas não vejo nada especial exceto o lançamento do kernel dom0.
Alguém sabe uma espera para encontrar isso?
Usamos xenstore-write /tool/hostname $(uname -n); xenstore-chmod /tool/hostname r
on Dom0
e, em seguida, xenstore-read /tool/hostname
nas VMs. Fácil e leve ...
Tenho certeza que não há como encontrar o dom0 "name" (que é um conceito nebuloso na melhor das hipóteses) de dentro do domU. Se você não está rodando pygrub, você poderia adicionar algo à linha de comando de inicialização do kernel (no arquivo de configuração domU armazenado em cada dom0) que você poderia consultar a partir de / proc / cmdline, mas isso é um truque.
O que você realmente deve fazer é ter um script que possa consultar os dom0s para exibir quais VMs estão onde. Até mesmo algo que passasse pelos dom0s e executasse xm list
provavelmente serviria para seus simples propósitos.
O SLES11 tem uma solução "inteligente" fornecida por dois rpms:
O primeiro é executado no Dom0 e cria um pequeno disco RAM (dispositivo de loop em / dev / shm). Esse disco-RAM é anexado em ro / read de muitos modos ao DomU. Em seguida, um processo do daemon no Dom0 atualiza algumas informações no disco RAM em intervalos configuráveis (Dom0-hostname, cpu-load do Dom0, ...).
O segundo é executado no DomU e lê os valores do disco RAM anexado.
Veja a documentação do SLES11 XEN para mais detalhes.
Atualização 2017-01-31: Seção 10.7
Encontrei uma solução inteligente (da qual não posso dar crédito): adicione um parâmetro ao script Xen para dizer ao domU qual dom0 está sendo executado
Eu sei que isso foi postado há alguns anos, mas vejo que esta é uma página muito acessada que ainda não tem como encontrar isso retroativamente, então aqui está o método que usei:
Na VM, use o tcpdump para encontrar o nome do switch e o número da porta:
[myID@vm001 ~] sudo tcpdump –nn –v –i eth0 –s 1500 –c 1 ‘ether[20:2] == 0x2000’
Dê alguns minutos. para correr; quando estiver pronto, procure por essas duas linhas na saída (elas serão separadas por outras linhas de saída):
Device-ID (0x01), length: 26 bytes: ‘Switch001.mydomain.com’
Port-ID (0x03), length: 19 bytes: ‘GigabitEthernet8/17’
Você precisará então examinar sua porta de switch para determinar qual servidor físico está conectado. Espero que você tenha acesso físico ao switch e possa executar um rastreamento de cabo ou envolver alguém que possa, ou você tem boas descrições nas configurações de porta do switch e pode visualizar essas informações ou contratar alguém que possa. Eu li o acesso aos nossos switches e consegui encontrar meu servidor host dessa maneira:
SWITCH001#sho interface description | inc 8/17
Gi8/17 up up HOST0002
Instale o lldpd no Xen Dom0 e DomUs. Então, o lldpctl lhe dirá qual bridge de rede e o hostname da bridge (ou seja, o nome do Dom0). No Dom0 você também verá os switches upstream se eles tiverem LLDP ativado, o que também pode ser útil.
Isso funciona para PV, PVHVM, etc. Na verdade, ele deve funcionar para qualquer plataforma de virtualização que possa executar o LLDP no host, a menos que o host envie os pacotes LLDP diretamente (o que não deveria).
Tags xen