virt-manager无法连接到libvirt


38

在此处输入图片说明

我正在运行32位Ubuntu 12.04.2。

如果我开始,错误不会出现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设置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

如果我开始,该错误不会显示gksudo virt-manager
巴西人Guy

/etc/libvirt/libvirtd.conf文件内容是什么?
布鲁诺·佩雷拉2013年

不完美的地方,但如果你对拱门像我和安装qemu,并virt-manager尝试运行sudo systemctl start libvirtd和可选sudo systemctl enable libvirtd,如果你想让它在启动时启动。
大街

Answers:


50

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


16
不是典型的Linux解决方案!
Woeitg '17

1
如果您想知道的话,在16.04上它的libvirt-bin .service不是libvirtd .service。守护进程就在那里。
Bulat M.

1
通常,在这种情况下,仅注销/登录就足以使组成员身份更改传播到当前会话中,但是对我个人而言,重新登录和重新启动之间并没有太大区别(造成非常类似的中断,重新启动只需要大约7s的时间),因此我宁愿“以防万一”重启。
Ped7g

“您尝试将其关闭然后再打开吗?”
tisaconundrum

33

安装KVM后,运行此命令,该错误将不再发生。

sudo virt-manager

哇!这是什么,这是怎么工作的?
Kishor Pawar

它之所以起作用是因为sudo。在另一复读解释ask.fedoraproject.org/en/question/45805/...
基肖尔·帕瓦尔

应该是公认的答案。
Magno C

1
它可以工作,但需要root才能使用。我想从普通用户那里使用它。我该怎么办?
Puneet Dixit

4
如@ andrew-grasso所述,您需要注销/登录才能应用组成员身份更改。使用sudo不推荐使用。
Alex Willison

6

对我而言,造成此错误是因为,如果没有注销登录(或重新启动),则组成员身份更改将不适用。我刚刚安装了KVM和libvirt-bin。安装程序会自动将我的用户添加到libvirtd组,我已经重新启动了libvirt-bin服务,但是仍然出现错误。

通过应用新的组成员身份,简单地注销并重新登录即可解决问题。

假设您刚刚安装了libvirt-bin,并且已经按照错误消息的提示确认您当前的用户是libvirtd组的成员,则需要注销并重新登录以应用新的组成员身份。

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

我希望这可以帮助别人。


5

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

ps faux | grep libvirt-bin

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

sudo service libvirt-bin start


5

在Ubuntu 16.04.3 LTS上

systemctl start virtlogd.socket

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


1

安装op声明的所有软件包后,您可以注销然后重新登录。将您添加到用户组的所有操作都需要注销然后重新登录以添加到新组中。这是一个很小的麻烦,少于重新启动。

这被标记为未完成,但这是将用户添加到组的一般规则。需要重新记录,这是我在此处未看到的缺失部分。


1
欢迎来到Ask Ubuntu!按照目前的形式,您的答案并不尽如人意。您能否复习一下《如何写一个好的答案》以及有关问题和答案的样式指南。您可以弄清需要安装哪些软件包。
J. Starnes '18年

1

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

newgrp libvirt
virt-manager

对于在之后的同一shell中启动的进程,该newgrp命令允许用户libvirt无需注销即可加入组newgrp。当然,这仅在libvirt安装程序将您置于libvirt组中时才有效,您可以使用以下方法进行检查:

getent group libvirt

0

Launchpad上讨论了该问题,可以通过安装xen-utils软件包(xen-utils-4.4在Ubuntu 14.04上)解决此问题的原因。我以前是virt-manager通过sudo在命令行中解决此问题的。


xenkvm wiki.archlinux.org/index.php/KVM相似,如果您已经kvm安装了请不要安装xen。它会覆盖我的kvm安装,并且我的vms停止运行。当我删除xen后,vms开始运行。
帕瓦尔

0

对我来说,情况是,使用service libvirt-bin status它时,尽管我无法像以下那样连接,但一切都运行良好:

    ● libvirt-bin.service - Virtualization daemon
       Loaded: loaded (/lib/systemd/system/libvirt-bin.service; enabled; vendor preset: enabled)
       Active: active (running) since Do 2016-09-22 13:22:16 CEST; 6min ago
[...]

/var/run/libvirt/应该有这两个文件:

srwxrwxrwx  1 root libvirtd    0 Sep 22 13:22 libvirt-sock=
srwxrwxrwx  1 root libvirtd    0 Sep 22 13:22 libvirt-sock-ro=

如果未显示套接字,请使用service libvirt-bin stop; service libvirt-bin start来完全重新启动该过程。使用service libvirt-bin restart是不够的,并且不会重新创建套接字。

libvirt-bin服务可以安全地停止,并且不会关闭访客电源


0

从Ubuntu 17.10开始,我还必须将自己添加到libvirt组中。我已经将自己添加到libvirtd中,并且没有将自己从该组中删除。我不知道是否都需要。

我这样做是因为我注意到/ var / run / libvirt的内容是libvirt而不是libvirtd所拥有。


要获得完整答案,您需要说一下如何将自己添加到额外的组中。
pbhj


-1

使用Ubuntu软件卸载虚拟管理器,注销,重新登录,安装虚拟管理器,然后正常运行它,而无需使用sudo甚至不使用命令行。


1
您可以通过扩展为什么需要这些步骤而不是简单地重新安装来改善您的答案。或遵循其他答案之一。评论来自
J. Starnes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.