一、问题
基于kolla安装OpenStack Queens版本。其中一个控制节点、两个计算节点,均为物理X86服务器。在计算节点启动KVM虚拟机。
需求是:在KVM虚拟机里面再启动KVM虚拟机,进行其他实验验证。
首先,在计算节点的物理服务器上面改配置,实现支持KVM虚拟机嵌套。具体请参考《openstack开启kvm虚拟机嵌套》
然后,重启相关容器:
docker restart nova_libvirt
docker restart nova_compute
然后,启动虚拟机(修改物理服务器配置时,上面运行的虚拟机必须先关闭)
报如下错误:
Exception during message handling: libvirtError: internal error: process exited while connecting to monitor: Could not access KVM kernel module: Permission denied
2018-07-28T15:19:33.415996Z qemu-kvm: failed to initialize KVM: Permission denied
可以看到是权限问题。
二、解决
查看计算节点qume配置
cat /etc/kolla/nova-libvirt/qemu.conf
stdio_handler = "file"
user = "nova"
group = "nova"
用户和组都是nova
再看 /dev/kvm 的权限,其他用户和组没有rw权限
ls -al /dev/kvm
crw-rw---- 1 root 42427 10, 232 Jul 28 11:31 /dev/kvm
设置权限,实现其他用户和组也有rw权限
chmod a+rw /dev/kvm
ls -al /dev/kvm
crw-rw-rw- 1 root 42427 10, 232 Jul 28 11:31 /dev/kvm
启动虚拟机,没有再报错
进入虚拟机,查看已经支持kvm
egrep -c '(vmx|svm)' /proc/cpuinfo
4
显示为 4 ,说明CPU为4核,支持kvm
问题解决。