Ubuntu 14.04 KVM - 错误:内部错误:连接到监视器时进程退出:qemu-system-x86_64:

Ubuntu 14.04 KVM - 错误:内部错误:连接到监视器时进程退出:qemu-system-x86_64:

我正在尝试按照以下步骤将 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,
}

相关内容