Como obter informações do host de virtualização a partir de uma máquina virtual

Ter acesso a Máquina Virtual é trivial para qualquer sysadmin, mas ter acesso ao Host de Virtualização, não, e isso muitas vezes é uma pedra no sapato quando de qualquer um quando é necessário fazer troubleshooting ou até um inventário.
Sem acesso ao Host de Virtualização eu não posso obter informações de onde a máquina virtual está hospedada, então não dá para fazer nada.
Bom, se você usa o Microsoft Hyper-V como hypervisor, você tem uma saída.
Integration Services
Os Integration Services são serviços que permitem a máquina virtual se comunicar com o host de virtualização [1].
É fato que uma máquina virtual é isolada, ela não sabe quem é o seu host e ela só pode se comunicar com o host através do hypervisor. Então é ai que entra o Integration Services, através dele podemos ter acesso a informações do host de virtualização.
Neste ponto acredito que você já entendeu que precisamos do Integration Services funcionando na VM, então, para finalizar, precisamos garantir que o serviço Guest Services também esteja ativo nas configurações da VM para seja possível consultar as informações sobre o host.
Obtendo informações do host a partir de uma máquina virtual Windows
O ponto de partida é sabermos onde estão as informações que o Integration Services disponibiliza sobre o host em uma VM Windows.
A chave de tudo que precisamos
HKLM:\\SOFTWARE\\Microsoft\\Virtual Machine\\Guest\\Parameters
Agora que já sabemos a chave de registro, vamos fazer algumas consultas sobre o Host de Virtualização usando PowerShell.
Host Name
Vamos consultar o nome do host de virtualização.
(Get-Item "HKLM:\\SOFTWARE\\Microsoft\\Virtual Machine\\Guest\\Parameters").GetValue("HostName")
Virtual Machine Name
Vamos consultar nome da máquina virtual criada no host de virtualização (não é o host name da VM).
(Get-Item "HKLM:\\SOFTWARE\\Microsoft\\Virtual Machine\\Guest\\Parameters").GetValue("VirtualMachineName")
Aqui podemos ver que o hostname da VM é diferente do nome dado a máquina virtual no host de virtualização.
Consulta via Prompt de Comandos
Caso preferir as consultas também podem ser feitas usando o Prompt de Comandos, neste caso use:
reg query "HKLM\\SOFTWARE\\Microsoft\\Virtual Machine\\Guest\\Parameters" /v VirtualMachineName
Obtendo informações do host a partir de uma máquina virtual Linux
Assim como no Windows, para o Linux também precisamos saber onde o Integration Services disponibiliza as informações do Host de Virtualização na VM.
O caminho das pedras
/var/lib/hyperv/.kvp_pool_3
Agora que temos o caminhos das pedras vamos na busca.
Virtual Machine Na
strings /var/lib/hyperv/.kvp_pool_3 | grep -A1 -w VirtualMachineName
Host Name
strings /var/lib/hyperv/.kvp_pool_3 | grep -A1 -w HostName
Se preferir você também pode consultar usando o sed
para extrair a informação:
strings /var/lib/hyperv/.kvp_pool_3 | sed -n '/VirtualMachineName/ {n;p}'
O que o Integration Services sabe sobre o Host?
Já vimos como podemos consultar informações do Host de Virtualização a partir de Máquinas Virtuais Windows e Linux, mas o Integration Services sabe mais sobre o Host do que apenas o nome da máquina virtual.
Veja a lista a seguir com os parâmetros que você pode consultar:
HostName
HostingSystemEditionId
HostingSystemNestedLevel
HostingSystemOsMajor
HostingSystemOsMinor
HostingSystemProcessorArchitecture
HostingSystemProcessorIdleStateMax
HostingSystemProcessorThrottleMax
HostingSystemProcessorThrottleMin
HostingSystemSpMajor
HostingSystemSpMinor
PhysicalHostName
PhysicalHostNameFullyQualified
VirtualMachineDynamicMemoryBalancingEnabled
VirtualMachineId
VirtualMachineName
Conclusão
Vimos que é muito fácil consultar informações do host de virtualização através da máquina virtual com o Integration Services.
O Integration Services pode ser instalado em máquinas virtuais com S.O Windows, Linux e BSD. Para Linux, também chamado de Linux Integration Services ou LIS é suportado em CentOS, Debian, SUSE, FreeBSD e outros [2].
Referências:
[1] https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/integration-services
[2] https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/supported-linux-and-freebsd-virtual-machines-for-hyper-v-on-windows
Comentários
Postar um comentário