我在其中一台Dell poweredge1000m刀片上设置了kvm
,libvirt
。我使用以下语法从现有映像安装虚拟机(以root身份执行)。
virt-install --name=vm_test --ram=1024 --arch=i686 --vcpus=1 --os-type=linux --import --disk path=/root/shared.qcow2,bus=virtio,format=qcow2 --graphics vnc,port=5901,listen=0.0.0.0,password=newone --noautoconsole --description --autostart
我收到以下错误。
Starting install...
ERROR internal error process exited while connecting to monitor: char device redirected to /dev/pts/1
open /dev/kvm: Permission denied
failed to initialize KVM: Operation not permitted
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start vm_test
otherwise, please restart your installation.
我使用了与其他桌面主机完全相同的命令,它在那里工作。我可以使用virt-manager
的ISO映像从virt-manager
安装VM,将磁盘映像存储在默认位置。
这对我来说似乎是一个文件权限错误,因为它不能与/vms
目录一起使用,但正在使用其他/home/vm
目录。
提前感谢您的帮助
答案 0 :(得分:5)
我在服务器上收到了相同的错误消息,该服务器已有libvirt
周数。
将libvirt
设置为以root身份运行(如链接中所述)对我不起作用。
但是,授予阅读权限执行/var/lib/libvirt/images
访问权限解决了我的问题。
chmod go+rx /var/lib/libvirt/images
chmod o-rwx /var/lib/libvirt/images/*
答案 1 :(得分:4)
如果您遵循使用libvirt创建vm的所有说明,您仍可能会遇到上面的错误消息。根本原因是 AppArmor ,它可以在最近的Ubuntu发行版中找到。如果安全性不是问题,最简单的方法是删除AppArmor。
Ubuntu的官方文档提供了有关禁用AppArmor的许多建议:
答案 2 :(得分:2)
如果模块加载太快,可能会发生这种情况(实际问题我不知道,所以如果你知道的话请加强这个答案)。
尝试卸载模块并重新加载它们。这对我来说很有把握:
rmmod kvm_intel # use kvm-amd if you use an amd processor.
rmmod kvm
modprobe kvm
modprobe kvm_intel # use kvm-amd if you use an amd processor.
答案 3 :(得分:1)
我在Arch上获得了此权限被拒绝错误。问题原来是访问控制列表。即使Unix权限显示组rw
,getfacl
也显示group::---
。这为我解决了这个问题:
setfacl -m g::rw /dev/kvm
答案 4 :(得分:1)
我找到了问题的解决方案,就在这里。
真正的原因是/vms
是一个NFS挂载,其配置(no_root_squash + rw
)使得它需要通过root访问。
默认情况下,libvirt运行具有libvirt-qemu:kvm
用户和组权限的虚拟机,即使您使用sudo权限运行它也会造成麻烦。所以我们需要设置qemu进程的用户&要在/etc/libvirt/qemu.conf 。
正如其他人所指出的那样,这个错误可能还有其他多种原因,而且libvirt会抛出这样的一般性错误让人感到遗憾。
最令人沮丧的解决方案是提供所有权限,禁用selinux并确保它运行。现在逐个撤销它在每一步都有效的权限测试,最终理解为什么要求你提供最终的权限集。
答案 5 :(得分:-1)
我遇到了同样的问题。在调查之后,我发现这是一个许可问题。您可以运行以下命令来处理它:
chown root:kvm /dev/kvm
,您无需重启。