Existe uma maneira de descobrir se o SO (linux) está sendo executado dentro do convidado do KVM.
Existe uma maneira de descobrir se o SO (linux) está sendo executado dentro do convidado do KVM.
Respostas:
Grep dmesg, deve haver pelo menos uma linha contendo kvm. Nas minhas máquinas:
[ 0.000000] kvm-clock: cpu 0, msr 0:5dd801, boot clock
[ 0.000000] kvm-clock: cpu 0, msr 0:1023801, primary cpu clock
Como alternativa /proc/cpuinfo, ele contém uma linha:
model name : QEMU Virtual CPU version 0.9.1
Mas, o problema é: Você não pode ter certeza de que é um convidado KVM (em cima do QEMU) ou apenas um convidado QEMU.
dmidecodeà lista de maneiras que podem ser exibidas se você estiver executando virtualizado; ele funciona bem com o VMWare.
As versões atuais lscputambém mostram se um hypervisor é detectado:
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 23
Model name: Intel Core 2 Duo P9xxx (Penryn Class Core 2)
Stepping: 3
CPU MHz: 2659.936
BogoMIPS: 5319.87
Hypervisor vendor: KVM
Virtualization type: full
...
systemd-detect-virt
retorna nesta configuração do Ubuntu 18.04 KVM :
kvm
e no meu host:
none
Consulte também: /unix/89714/easy-way-to-determine-virtualization-technology
Testado em um host Ubuntu 18.04.
Outra possibilidade é dmidecode -s 'system-product-name'
[samveen@vm1 ~]$ sudo dmidecode -s 'system-product-name'
KVM
Standard PC (i440FX + PIIX , 1996).
system-product-nameidentificador fornece a resposta esperada, mesmo em casos como VirtualBoxe VMWare.