标签: libvirt

libvirt:“无法初始化有效的防火墙后端”

我正在尝试在 Arch Linux 主机上为 libvirt 设置一个没有 DHCP 的虚拟 NAT 网络设备。

我尝试过的:

# virsh net-define network.xml 
Network default defined from network.xml
Run Code Online (Sandbox Code Playgroud)

[ network.xml]:

<network>
  <name>default</name>
  <bridge name="maas0" />
  <forward mode="nat" />
  <ip address="10.137.0.1" netmask="255.255.255.0" />
</network>
Run Code Online (Sandbox Code Playgroud)

我的笔记本电脑在启动时输出以下内容:

# virsh net-start default
error: Failed to start network default
error: internal error: Failed to initialize a valid firewall backend
Run Code Online (Sandbox Code Playgroud)

与此主题相关的所有其他线程都在谈论升级软件——我使用的是最新版本:

$ pacman -Q ebtables dnsmasq libvirt iptables
ebtables 2.0.10_4-5
dnsmasq 2.75-1
libvirt 1.3.3-1
iptables 1.4.21-3
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因,internal error我可以做什么?

networking qemu virtual-machine linux-kvm libvirt

30
推荐指数
2
解决办法
6万
查看次数

没有使用 SPICE 和 virt-manager 自动调整大小

我已经设置了一个很好用的虚拟机,除了似乎不一致的自动调整大小功能。我让它随机工作了几次,但它也随机停止工作。它目前无法正常工作,我不确定我需要做什么才能让它可靠地工作(例如 VirtualBox 自动调整大小)。请参阅下面的我的配置。

设置

Host: Ubuntu 16.10
Guest: Ubuntu 16.04.2, et. al (I've tried with other Linux distros with similar results)
Guest: created using virt-manager
Guest: installed spice-vdagent
Guest: virt-manager > View > Scale Display > Auto resize VM with window (checked)
Run Code Online (Sandbox Code Playgroud)

香料

user@ubuntu:~$ ps aux | grep spice
root       805  0.0  0.0  30568   260 ?        Ss   08:59   0:00 /usr/sbin/spice-vdagentd
user      1365  0.0  0.0  35124  2360 ?        Ss   08:59   0:00 /usr/bin/spice-vdagent
user      1933  0.0  0.0  21292  1020 pts/17   S+   09:00 …
Run Code Online (Sandbox Code Playgroud)

qemu linux-kvm libvirt virt-manager

14
推荐指数
2
解决办法
1万
查看次数

kvm、virt-manager、qemu和libvirt有什么区别和关系?

我调查了这个话题,这是我的结论(但我仍然有问题,如果我的结论有任何错误,请纠正我):

虚拟机:

VMWare 于 1999 年开发了其 VM Hypervisor SW,但它是专有的。

动车组:

在 VMWare 之后 4 年后,法国开发商 Fabrice Bellard 于 2003 年开发了 QEMU(快速仿真器)Hyporvisor 并使其免费和开源。经过多年的社区发展,QEMU 然后成为“完全虚拟化”的 2 类管理程序。

  • QEMU 能够模拟各种硬件,包括 CPU 和 I/O 设备。
  • QEMU 能够将发送到 VM 的 vCPU 的指令解释为真正的指令,并将它们发送到物理 CPU。
  • 一些 QEMU 仿真设备被 VirtualBox 等虚拟化软件广泛使用。
  • QEMU 有自己的 GUI 和 CLI。

QEMU 无需任何其他 VM SW 即可独立运行。

硬件虚拟化:

英特尔和 AMD 都在 2006 年推出了他们的硬件虚拟化技术(VT-x 和 AMD-V)。

KVM:

2006 年,一家小公司(两年后于 2008 年被 Red Hat 收购)为 Linux 开发了一个名为“KVM”的可加载内核模块,它能够使用前面提到的硬件虚拟化技术创建 VM。然后在 2007 年正式合并到 Linux 内核中。

  • KVM 不模拟 vCPU,而是使用物理 CPU …

qemu virtual-machine linux-kvm libvirt virt-manager

9
推荐指数
1
解决办法
6207
查看次数

无法使用 KVM/QEMU 在 Windows 10 虚拟机中连接到互联网

我一直在尝试在当前的 Arch Linux (5.13.12-arch1-1) 主机系统中设置 Windows 10 VM。我使用 libvirt 设置虚拟机,并使用 virt-manager 作为 GUI 设置 KVM/QEMU。

NIC 卡已设置为“虚拟网络‘默认’NAT”并使用“virtio”设置。然而,即使在 Windows 上更新驱动程序后,它也无法连接到互联网并显示“无法识别的网络 - 无法访问互联网”。

ipconfig /allWindows 10 中 的输出输出

ip linkArch的输出

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
    altname wlp0s20f3
10: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode …
Run Code Online (Sandbox Code Playgroud)

networking arch-linux virtual-machine libvirt

9
推荐指数
1
解决办法
2万
查看次数

使用 QEMU 创建“链接克隆”或分层共享磁盘

QEMU 是否支持像VMware 的“链接克隆”这样的功能?

我想要完成的工作:我正在使用一些几乎相同的虚拟机设置一个测试环境。但是,全新的 Windows 安装需要超过 20 GiB,每个 VM 都会重复。

在 VMware 中,人们会创建一个“链接克隆”,它很可能是原始磁盘映像之上的写时复制层。

我们可以用 QEMU 做到这一点吗?我专门尝试使用virt-manager(libvirt)来完成此操作。

有关的:

qemu virtual-machine libvirt virt-manager

7
推荐指数
1
解决办法
5421
查看次数

如何配置 macvtap 让它正确传递多播数据包?

我正在尝试创建可以看到彼此和主机的虚拟机。它们由 qemu/kvm 托管并通过 libvirt 进行管理。VM 的网络适配器使用 macvtap(VEPA 模式)创建以提高性能。

启用hairpinover switch后,无论是在VM之间还是在VM与Host之间,单播流都可以。

但是,当谈到多播时,我遇到了问题。我发现主机无法 ping6 每个虚拟机。使用 tcpdump,我观察到ff02::1:ff00:212从主机发送到多播地址的 Neighbor Solicitation 数据包没有被我的 VM 收到,其 ipv6 地址是2001:da8:a0:600::212/64. 显然,这个多播数据包应该已经通过 macvtap 传递给 VM。

由于组播问题,所有 ipv6 数据包丢失,邻居发现无法正常工作。

我确定交换机没有任何问题,因为当我通过物理网络适配器运行 tcpdump 时,我可以每秒看到两次 Neighbor Solicitation,一次出,一次进。

在我将主机上的 macvtap 接口设置为混杂模式后,VM 获得 Neighbor Solicitation 数据包以及其他一些应由 macvtap 过滤的多播数据包,但没有到其他 VM 的单播数据包,即使我 ping6 其他 VM 上的同时主持。

所以我认为在所有 macvtap 接口上启用混杂模式是一种可以接受的解决方法,但并不优雅。

我所有的主机和 VM 都是 CentOS 7.0。我已经尝试在我的主机上从 elrepo 安装 kernel-ml(linux 4.1.3) 但它没有区别。

所以:

  1. 每次由 libvirt 启动时,如何将所有 macvtap 接口设置为混杂模式?
  2. 我对网络驱动程序不熟悉。但是根据http://www.makelinux.net/ldd3/chp-17-sect-14,我怀疑macvlan的驱动程序中存在一些错误,导致内核无法正确设置接口的多播列表. 但是,在 linux/driver/net/{macvlan.c,macvtap.c} 中没有 set_multicast_list。寻求帮助的正确位置在哪里? …

linux linux-kvm libvirt centos-7

5
推荐指数
2
解决办法
1万
查看次数

在 KVM 虚拟机中安装 Windows 虚拟化功能会导致早期引导来宾崩溃

请参阅下面的更新,了解我发现的有关此问题的更一般性质的内容。

我有一个运行 OVMF 固件的 Windows VM,带有 VFIO 直通功能,用于在 Arch Linux 主机上运行的显卡。我正在尝试在所述 VM 中启用 Windows Sandbox。Microsoft 文档表明在 L1 VM 中运行 Sandbox 应该是可能的,尽管他们的文档是为 Hyper-V 管理程序编写的。

当我在我的 VM 中启用 Windows Sandbox 并作为其安装过程的一部分重新启动时,VM 在启动过程中大约半秒失败。它会这样做两次,然后尝试启动修复。这是一个显示发生了什么的视频(对质量表示歉意)。该视频结束后,自动修复告诉我我的电脑无法正常启动。

如果我从那个环境进入恢复命令行并运行dism /image:D:\ /disable-feature /featurename:containers-disposableclientvm(即禁用 Windows Sandbox),我就可以很好地启动到我的系统中。在我的系统上,此问题始终可重现。

文档表明,如果计算机配置不支持 Windows 沙盒,则它不会成为 Windows 功能对话框中的启用选项,并且如果我设置了主机内核参数,kvm_intel.nested=0它确实会变灰。

此问题最初出现在 Windows 10 Pro 版本 1909 上,但更新到版本 2004(内部版本 19041.388)后问题仍然存在。

那么,我的问题是:我怎样才能得到错误消息而不是无消息崩溃,和/或我怎样才能让它不崩溃?我发现在没有错误消息或有用的日志条目的情况下很难在这种情况下进行谷歌搜索,而且我不知道从哪里开始。

我尝试过的事情:

  • 如上所述,从 1909 年到 2004 年的客户操作系统更新无济于事。
  • 移除 GPU 和 USB 直通并使用 QXL + Spice 图形运行。这没有帮助。
  • 将虚拟磁盘复制到硬盘驱动器并直接在硬件上从它启动(即从等式中删除 Linux …

virtualization hyper-v virtual-machine linux-kvm libvirt

5
推荐指数
0
解决办法
557
查看次数

Libvirt:AppArmor 配置文件访问错误

我已经安装libvirt-daemon在完全更新的Ubuntu Server 18.04.1 LTS. 当尝试执行时libvirtd --listen,出现以下错误:

2018-08-24 21:03:18.641+0000: 2855: error : virFileReadAll:1420 : Failed to open file '/sys/kernel/security/apparmor/profiles': Permission denied
2018-08-24 21:03:18.641+0000: 2855: error : profile_status:100 : Failed to read AppArmor profiles list '/sys/kernel/security/apparmor/profiles': Permission denied
Run Code Online (Sandbox Code Playgroud)

的输出sudo ls -l /sys/kernel/security/apparmor/profiles是:

-r--r--r-- 1 root root 0 Aug 24 13:21 /sys/kernel/security/apparmor/profiles
Run Code Online (Sandbox Code Playgroud)

我的怀疑是 的权限/sys/kernel/security/apparmor/profiles应该是555. 这些错误似乎完全是由于权限配置错误造成的,因为sudo libvirtd --listen运行时没有错误。但是,我不想libvirtd在我的系统上以 root 权限运行。禁用apparmor也可能会消除该错误,但我也不想这样做。

那么我的问题是,这是配置错误吗?如果是,是配置错误libvirt还是配置错误apparmor?如果不是,这些错误的原因是什么?

permissions ubuntu-server libvirt app-armor ubuntu-18.04

5
推荐指数
0
解决办法
2532
查看次数

使我的 KVM 虚拟机可通过网络访问

我正在设置一个新的家庭服务器,以边缘偏执的安全为目标。

因此,所有可以进入虚拟机的开放端口都拥有自己的虚拟机。我使用 Ubuntu Server 作为主机,因为我喜欢免费的无需重新启动的内核修补。

我已经设置了四个 Debian VM,连接到默认的虚拟桥接口。我现在可以看到并访问应该从主机打开的端口,但是当我尝试从网络访问它们时,我失败了。当使用 nmap 查看它们时,它们显示为“已过滤”。

如何使这些端口可以从更广泛的网络访问?我可以将端口从物理接口转发到网桥上的子网吗?还是让访客使用我的实际路由器(而不是 KVM 内置的路由器)作为网关会更好?

networking iptables ubuntu linux-kvm libvirt

5
推荐指数
1
解决办法
1万
查看次数

libvirt / KVM/QEMU - 网络:“开放网络”有什么作用?

使用 libvirt & 设置网络时virt-manager,在将流量转发到物理网络时,可以选择“开放网络”作为“网络模式”。

“开放网络”是什么意思/做什么?我认为它可能与隔离网络相同,但显然这没有多大意义,因为有一个单独的选项。

请参阅下面的示例屏幕截图...

libvirt virt-manager 开放网络

virtualization qemu linux-kvm libvirt virt-manager

5
推荐指数
1
解决办法
9906
查看次数

重新启动主机后无法恢复 KVM 来宾

我在 Linux Mint 17.1、内核 3.16.0-31-generic 上运行 KVM。唯一的访客是 Windows 8.1 虚拟机。我注意到,如果我在来宾运行时重新启动主机,则在主机重新启动后我无法恢复来宾。Virt-manager 仅将虚拟机显示为“已暂停”,没有可用的电源或恢复选项。virsh当我尝试恢复它时也会出现错误:

zach@koln ~ $ virsh list
Id    Name                           State
----------------------------------------------------
2     windows8                       pmsuspended

~ $ virsh resume 2
error: Failed to resume domain 2
error: Requested operation is not valid: domain is pmsuspended
Run Code Online (Sandbox Code Playgroud)

我找到的唯一解决方案是终止 qemu 进程,这不太理想。我不在乎重新启动主机时虚拟机状态是否被丢弃,我只是希望它自动启动备份。

有什么建议么?

linux qemu virtual-machine linux-kvm libvirt

4
推荐指数
1
解决办法
6869
查看次数

kvm 错误启动域:不支持的配置:无法找到模型 selinux 的安全驱动程序

尝试启动我们的 kvm 虚拟机并在重新启动物理主机后出现此错误。

Error starting domain: unsupported configuration: Unable to find security driver for model selinux

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 124, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 83, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/domain.py", line 1479, in startup
    self._backend.create()
  File "/usr/lib/python2.7/site-packages/libvirt.py", line 1062, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: unsupported configuration: Unable to find security driver for …
Run Code Online (Sandbox Code Playgroud)

linux virtual-host virtual-machine libvirt virsh

2
推荐指数
1
解决办法
1万
查看次数

如何(Libvirt)将软盘映像设备附加到来宾虚拟机?

假设我有 floppy.vfd 映像。

我应该如何填写 xml 文件才能附加软盘映像?我有类似的模板

<disk type='*' device='*'>
    <device name='*' type='*'/>
    <target dev='*' bus='*'/>
</disk>
Run Code Online (Sandbox Code Playgroud)

是的,我在网上搜索了有关附加软盘的信息,但没有找到,甚至在 libvirt.org 上也是如此

qemu floppy virtual-machine linux-kvm libvirt

2
推荐指数
1
解决办法
3086
查看次数