我在使用 libvirt 时遇到了很多麻烦。我删除了默认的 NAT 网络,并尝试为虚拟机添加网桥。根据 libvirt 的 wiki 和网络 XML 格式 | 使用现有主机桥,我有以下内容:
<network>
<name>host-bridge</name>
<forward mode="bridge"/>
<bridge name="br0"/>
</network>
我将文件保存为host-bridge.xml
。我将其复制到/etc/libvirt/
和/usr/share/libvirt/schemas
。但是,无论我怎么尝试,我总是得到:
$ sudo virsh net-create host-bridge
error: Failed to open file 'host-bridge': No such file or directory
$ sudo virsh net-create host-bridge.xml
error: Failed to open file 'host-bridge.xml': No such file or directory
该机器运行的是 Ubuntu Server 14.03 LTS。根据brctl
,桥梁br0
确实存在,并且它使用eth1
。
libvirt 的网络配置文件应该保存在哪里?
答案1
在我的(CentOS)系统上,它们位于/var/lib/libvirt/network
(对于libvirt.org维基百科答案)但Ubuntu 维基建议/etc/libvirt/qemu
(在 libvirt 客户机配置部分)
答案2
补充@davidgo 的回答...我执行了:
sudo mv /opt/libvirt/host-bridge.xml /etc/libvirt/qemu/networks
一旦网络文件位于您想要的位置:
$ sudo cat /etc/libvirt/qemu/networks/host-bridge.xml
<network>
<name>host-bridge</name>
<uuid>88c0529e-4813-43fa-af27-01af164249ed</uuid>
<forward mode='bridge'/>
<bridge name='br0'/>
</network>
你仍然需要(1)定义它或(2)创建它来实际上在虚拟机中使用它。如果您希望它是持久的,那么您需要定义它,因为它是永久的(创建是暂时的):
virsh net-define /etc/libvirt/qemu/networks/host-bridge.xml
一旦定义了网络,就会添加 UUID,然后您可以在 VM 的 XML 文件中引用它:
sudo grep -R "host-bridge" /etc/libvirt/
/etc/libvirt/qemu/Debian_7_x86.xml: <source network='host-bridge'/>
/etc/libvirt/qemu/Debian_7_x64.xml: <source network='host-bridge'/>
/etc/libvirt/qemu/Debian_8_x86.xml: <source network='host-bridge'/>
/etc/libvirt/qemu/Debian_8_x32.xml: <source network='host-bridge'/>
/etc/libvirt/qemu/Debian_8_x64.xml: <source network='host-bridge'/>
...
它还将出现在networks/autostart
文件夹:
sudo grep -R "host-bridge" /etc/libvirt/
...
/etc/libvirt/qemu/networks/autostart/host-bridge.xml: <name>host-bridge</name>
最后,您应该看到类似以下内容:
$ virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
host-bridge inactive yes yes
答案3
对我有用的就是把它放在我正在运行sudo virsh net-create host-bridge
的同一目录中。