KVM 映像无法通过 virsh 启动,权限被拒绝

KVM 映像无法通过 virsh 启动,权限被拒绝

我的主机操作系统是 Ubuntu Server 11.04 (natty)

按照 Ubuntu 的详细说明进行操作后帮助,我使用创建了一个 KVM 映像

sudo ubuntu-vm-builder kvm hardy --libvirt qemu:///system

图像文件创建为

-rw-r--r-- 1 root root 438M 2011-06-17 14:39 ubuntu-kvm/tmpK9hbU5.qcow2

我可以通过 sudo virsh -c qemu:///system "list --all" 使用 virsh 列出它

Id   Name                 State
----------------------------------
  - ubuntu               shut off  

但当我打电话时

sudo virsh -c qemu:///system "start ubuntu"

出现了错误:

error: Failed to start domain ubuntu
error: internal error process exited while connecting to monitor: kvm: -drive file=/home/myuser/vmopt/ubuntu-kvm/tmpK9hbU5.qcow2,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /home/myuser/vmopt/ubuntu-kvm/tmpK9hbU5.qcow2: Permission denied

用户“myuser”已添加到组 libvirt。

我甚至将图像文件及其目录的 chmod 设置为 777,但错误仍然存​​在。

答案1

KVM 镜像受 selinux 限制。将它们放在 /var/lib/libvirt/images 中就足够了。

http://libvirt.org/drvqemu.html#securityselinux更加详细地阐述。

答案2

一个简单的解决方案是编辑 /etc/libvirt/qemu.conf 文件并取消注释以下几行:

User = "root"
group = "root"

不要忘记重启 libvirtd

答案3

在 Arch Linux 中:

sudo usermod -a -G kvm username

设置 QEMU 进程的权限/etc/libvirt/qemu.conf

user = "username"
group = "kvm"

在同一终端中刷新组成员身份:

su - username

为您的~/.bashrc

alias virsh='EDITOR=nano sudo virsh && cd /etc/libvirt/qemu'

最后

source ~/.bashrc
virsh
list --all
start mydomain

答案4

看来这个权限错误也与损坏的 qcow2 覆盖/快照有关!

有这样的设置:

Baseimage> Overlay1>Overlay2

覆盖是使用 cmd 创建的virsh snapshot-create ...,并且Overlay1在创建之前(为测试而创建)较新使用(未启动 VM)Overlay2

这不是一个很可能在现实生活中出现的用例,但尽管如此它还是出现了这个错误,这让我很抓狂,直到我意识到这是否与覆盖链有关,而不是文件系统访问权限。

相关内容