我正在尝试按照以下步骤将 KVM 客户机从一台 Ubuntu 14.04 主机迁移到另一台主机此处概述。
我现在在新主机上的单个文件夹中拥有“状态”文件、xml 配置和 qcow2 img 文件,并确保更新 xml 配置以指向 qcow2 图像文件的新位置。
当我尝试运行时virsh create [guest-id].xml
收到以下错误消息:
error: internal error: process exited while connecting to monitor:
qemu-system-x86_64: -drive file=/media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img,if=none,id=drive-virtio-disk0,format=raw:
could not open disk image /media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img:
Could not open '/media/stuart/storage2/kvm/dns.technostu.com/dns.technostu.com.img': Permission denied
调试和尝试的解决方法
我已经将自己添加到libvirtd组并重新登录。
我确保文件路径正确
我将 .img 文件的所有权更改为我自己,但在使用和不使用 sudo 运行命令后,文件的所有权不断更改为
root:root
具有权限-rwxr-xr-x
我尝试跑步
sudo apt-get install apparmor-profiles apparmor-utils sudo aa-complain /usr/lib/libvirt/virt-aa-helper
从这个帖子,但这并没有起作用。
我尝试按照 xml 文件中的规定更改模拟器这里。
为了在 Ubuntu 14.04 的新主机上“导入”客户机,我需要做什么?
答案1
我遇到了类似的问题。
将我的用户添加到 kvm 组
sudo usermod -a -G kvm username
然后我确保它/dev/kvm
由 root 和 kvm 组拥有
之后,我将现有虚拟机(从 VirtualBox 转换而来)的所有权更改为用户名:kvm
最后我group=kvm user=username
在 qemu.conf 中设置了这个问题
答案2
关闭计算机并再次打开(自安装以来我没有重新启动过kvm
)将错误消息更改为:
error: internal error: process exited while connecting to monitor: qemu-system-x86_64
当我在谷歌上搜索这个错误时,我发现这个帖子建议将以下内容添加到
user = "root"
group = "root"
添加到/etc/libvirt/qemu.conf
文件中。请确保包含引号。
再次重新启动后,我就能virsh create [guest-id].xml
成功运行了。
答案3
不建议以 root 权限运行 QEMU,因为从 6.0.0 版本开始它不会剥夺 Linux 功能。
在我的情况下是 AppArmor。我想为虚拟机添加一个 SSDT 文件作为电池。有些文件夹 AppArmor 允许访问,而其他文件夹(如/home/something
)则不允许。/var/lib/libvirt/images/
是允许的文件夹之一。虽然我将文件放在那里,但 AppArmor 策略仍然不允许(如所示sudo cat /var/log/kern.log | grep -C 10 apparmor | grep -C 10 qemu
)。有效的方法是像这样/var/lib/libvirt/images/SSDT1.dat rk
添加:/etc/apparmor.d/libvirt/TEMPLATE.qemu
#
# This profile is for the domain whose UUID matches this file.
#
#include <tunables/global>
profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
#include <abstractions/libvirt-qemu>
/var/lib/libvirt/images/SSDT1.dat rk,
}