A recent operators mailing list thread asked this question regarding the OpenStack user survey results of April 2016 (See page 39).
As I verified my own local multi-node devstack dedicated H/W environment with varying commands, I initially came across the following error (which later was found to be misleading).
$ virt-host-validate QEMU: Checking for hardware virtualization : PASS QEMU: Checking for device /dev/kvm : FAIL (Check that the 'kvm-intel' or 'kvm-amd' modules are loaded & the BIOS has enabled virtualization) QEMU: Checking for device /dev/vhost-net : WARN (Load the 'vhost_net' module to improve performance of virtio networking) QEMU: Checking for device /dev/net/tun : PASS LXC: Checking for Linux >= 2.6.26 : PASS
This is an attempt to collate a list of varying commands collected from various sources, and the output of these in my Ubuntu 14.04 LTS environment.
# Are you running 64-bit architecture (0=bad; >0 is good) $ egrep -c ' lm ' /proc/cpuinfo 8 # Does your processor support hardware virtualization (0=bad; >0 is good) $ egrep -c '^flags.*(vmx|svm)' /proc/cpuinfo 8 # Are you running a 64-bit OS $ uname -m x86_64 # Have I installed the right Ubuntu packages $ dpkg -l | egrep '(libvirt-bin|kvm|ubuntu-vm-builder|bridge-utils)' ii bridge-utils 1.5-6ubuntu2 amd64 Utilities for configuring the Linux Ethernet bridge ii libvirt-bin 1.2.2-0ubuntu13.1.17 amd64 programs for the libvirt library ii qemu-kvm 2.0.0+dfsg-2ubuntu1.24 amd64 QEMU Full virtualization # Have packages configured user privileges $ grep libvirt /etc/passwd /etc/group /etc/passwd:libvirt-qemu:x:108:115:Libvirt Qemu,,,:/var/lib/libvirt:/bin/false /etc/passwd:libvirt-dnsmasq:x:109:116:Libvirt Dnsmasq,,,:/var/lib/libvirt/dnsmasq:/bin/false /etc/group:libvirtd:x:116:rbradfor,stack # Have I configured QEMU to use KVM $ cat /etc/modprobe.d/qemu-system-x86.conf options kvm_intel nested=1 # Have I loaded the KVM kernel modules $ lsmod | grep kvm kvm_intel 143630 3 kvm 456274 1 kvm_intel # Are there any KVM related system messages $ dmesg | grep kvm [ 2030.719215] kvm: zapping shadow pages for mmio generation wraparound [ 2032.454780] kvm [6817]: vcpu0 disabled perfctr wrmsr: 0xc1 data 0xabcd # Can I use KVM? $ kvm-ok INFO: /dev/kvm exists KVM acceleration can be used # Can I find a KVM device $ ls -l /dev/kvm crw-rw---- 1 root kvm 10, 232 May 11 14:15 /dev/kvm # Have I configured nested KVM $ cat /sys/module/kvm_intel/parameters/nested Y
All of the above is the default output of a stock Ubuntu 14.04 install on my H/W, and with the correctly configured Bios (which requires a hard reboot to verify, and a camera to record the proof).
Some more analysis when changing the Bios.
$ sudo kvm-ok INFO: /dev/kvm does not exist HINT: sudo modprobe kvm_intel INFO: Your CPU supports KVM extensions INFO: KVM (vmx) is disabled by your BIOS HINT: Enter your BIOS setup and enable Virtualization Technology (VT), and then hard poweroff/poweron your system KVM acceleration can NOT be used
When running a VirtualBox VM, the following is found.
$ sudo kvm-ok INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used
Now checking my OpenStack installation for related KVM needs.
# Have I configured Nova to use KVM virtualization $ grep virt_type /etc/nova/nova.conf virt_type = kvm # Checking hypervisor type via API's $ curl -s -H "X-Auth-Token: ${OS_TOKEN}" ${COMPUTE_API}/os-hypervisors/detail | $FORMAT_JSON | grep hypervisor_type "hypervisor_type": "QEMU", "hypervisor_type": "QEMU", # Checking hypervisor type via OpenStack Client $ openstack hypervisor show -f json 1 | grep hypervisor_type "hypervisor_type": "QEMU"
Devstack by default has configured libvirt to use kvm.
Spinning up an instance I ran the following additional checks.
# List running instances $ virsh -c qemu:///system list Id Name State ---------------------------------------------------- 2 instance-00000001 running # Check processlist for KVM usage $ ps -ef | grep -i qemu | grep accel=kvm libvirt+ 19093 1 21 16:24 ? 00:00:03 qemu-system-x86_64 -enable-kvm -name instance-00000001 -S -machine pc-i440fx-trusty,accel=kvm,usb=off...
Information from the running VM in my environment.
$ ssh cirros@10.0.0.2 $ egrep -c ' lm ' /proc/cpuinfo 1 $ egrep -c '^flags.*(vmx|svm)' /proc/cpuinfo 1 $ uname -m x86_64 $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 6 model name : QEMU Virtual CPU version 2.0.0 ...
So, while the topic of the ML thread does indeed cover the confusion over OpenStack reporting the hypervisor type as QEMU when infact it does seem so but is enabling KVM via my analysis. I find the original question as a valid problem to operators.
And finally, this exercise while a lesson in understanding a little more about hypervisor and commands available, the original data was simply an operator error where sudo
was needed (and not for other commands).
$ sudo virt-host-validate QEMU: Checking for hardware virtualization : PASS QEMU: Checking for device /dev/kvm : PASS QEMU: Checking for device /dev/vhost-net : PASS QEMU: Checking for device /dev/net/tun : PASS LXC: Checking for Linux >= 2.6.26 : PASS
References
-
Configure DevStack with KVM-based Nested Virtualization
- modprobe kvm-intel