我的主机操作系统是 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 中就足够了。
答案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
。
这不是一个很可能在现实生活中出现的用例,但尽管如此它还是出现了这个错误,这让我很抓狂,直到我意识到这是否与覆盖链有关,而不是文件系统访问权限。