当前位置: 首页>>技术教程>>正文


virtualization – virt-manager 无法连接到 libvirt

, ,

问题描述

我正在运行 Ubuntu 12.04.2 32 位。

如果我启动 gksudo virt-manager ,错误不会出现。

  • libvirt-bin 已安装。

  • 我不知道如何检查守护进程。

  • 我是 libvirtd 的成员。

ps ax | grep libvirt 的输出:

9225 ? Sl 0:04 /usr/sbin/libvirtd -d
9302 ? S 0:00 /usr/sbin/dnsmasq -u libvirt-dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override`

ls -l /var/run/libvirt/libvirt-sock 的输出:

srwxrwx— 1 root libvirtd 0 Set 13 15:04 /var/run/libvirt/libvirt-sock

getent group libvirtd 的输出:

 libvirtd:x:130:OTHERUSER,MYUSER

详细的错误信息

Unable to connect to libvirt.   
Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

Verify that:
 - The 'libvirt-bin' package is installed
 - The 'libvirtd' daemon has been started
 - You are member of the 'libvirtd' group

Libvirt URI is: qemu:///system

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/connection.py", line 1185, in _open_thread
    self.vmm = self._try_open()
  File "/usr/share/virt-manager/virtManager/connection.py", line 1167, in _try_open
    flags)
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 102, in openAuth
    if ret is None:raise libvirtError('virConnectOpenAuth() failed')
libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied

最佳方案

重新启动安装了 virt-manager 的系统解决了该问题。

次佳方案

安装 KVM 后,运行此命令将不会再次出现该错误。

sudo virt-manager

第三种方案

重新启动/注销的替代方法是从终端运行以下命令:

newgrp libvirt
virt-manager

对于在 newgrp 之后在同一 shell 中启动的进程,newgrp 命令允许用户在不注销的情况下加入 libvirt 组。当然,这仅在 libvirt 安装程序将您放入 libvirt 组时才有效,您可以检查:

getent group libvirt

第四种方案

对我来说,错误是因为没有 logout-login (或重新启动),组成员身份更改不适用。我刚刚安装了 KVM 和 libvirt-bin。安装程序自动将我的用户添加到 libvirtd 组,我已经重新启动了 libvirt-bin 服务,但我仍然收到错误消息。

不要将文件权限更改为 777。不要只是以 root 或 sudo 身份运行所有内容,以避免了解问题所在。

只需注销并通过应用我的新组成员身份重新登录即可解决问题。

假设您刚刚安装了 libvirt-bin 并且已经确认您的当前用户是 libvirtd 组的成员,如错误消息所示,您将需要注销并重新登录以申请新的组成员资格。

我希望这可以帮助别人。

第五种方案

我在我的 Ubuntu 14.02 机器上同时管理 Qemu 和 Virtualbox,安装 Virtualbox libvirt-bin 后无法自动启动。所以检查 libvirt-bin 是否正在运行:

ps faux | grep libvirt-bin

如果您在 ps 输出中看不到它 – 手动启动,然后运行 ​​virt-manager:

sudo service libvirt-bin start

第六种方案

在 Ubuntu 16.04.3 LTS 上

systemctl start virtlogd.socket

是唯一的答案。套接字有自己的守护进程。这很不寻常。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12740.html,未经允许,请勿转载。