libvirt
libvirt 是一个开源虚拟化管理工具,提供统一的 API 接口来管理不同的虚拟化技术。它能够与多种虚拟化平台(如 KVM、QEMU、Xen 等)兼容,并且提供了图形和命令行工具来简化虚拟机的管理。
主要特点:
-
虚拟化管理:提供对虚拟机、虚拟网络、虚拟存储等的管理功能。
-
支持多种虚拟化技术:支持 KVM、Xen、QEMU、LXC 等虚拟化平台。
-
网络和存储管理:提供对虚拟网络(如虚拟网络接口、虚拟网络桥接)和虚拟存储池的管理。
OVS 和 libvirt 的集成
libvirt
和 OVS
可以一起工作来增强虚拟化环境中的网络功能。以下是它们集成的关键方面:
-
虚拟网络管理:
-
libvirt
可以创建和管理虚拟网络(如桥接、NAT 网络),并可以与OVS
集成来提供更复杂的网络配置。 -
在
libvirt
中创建的虚拟网络可以配置为使用OVS
作为其后端虚拟交换机。
-
-
配置 OVS 作为 libvirt 网络后端:
-
在
libvirt
中,可以通过编辑虚拟网络的 XML 配置文件来使用OVS
。你可以定义网络桥接、VLAN、VXLAN 等,并将其与 OVS 进行集成。
-
-
管理虚拟网络接口:
-
在虚拟机网络接口配置中,可以指定使用 OVS 创建的虚拟网络接口,从而利用 OVS 的网络功能,如流表、QoS 等。
-
示例配置
以下是一个简单的示例,演示如何在 libvirt
中配置一个使用 OVS 的虚拟网络:
1. 创建一个 OVS 网络桥接:
$ ovs-vsctl add-br ovsbr
2. 创建vm,编辑虚机域xml:
$ virsh edit <vm>
3. vm xml中接口添加:
<interface type='network'> <mac address='52:54:00:71:b1:b6'/> <source network='default'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
4. 配置 libvirt 使用 OVS 网络桥接:编辑虚拟网络的 XML 配置文件,指定桥接网络接口为 ovsbr,接口类型必须设置成bridge类型, <virtualport>元素表示<source>元素中的桥是一个Open vSwitch桥。
<interface type='bridge'> <mac address='52:54:00:71:b1:b6'/> <source bridge='ovsbr'/> <virtualport type='openvswitch'/> <address type=='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
5. 然后启动vm,验证虚机的vnet接口被挂载到ovsbr网桥上
$ virsh start <vm> $ ovs-vsctl show
通过这种方式,libvirt
和 OVS
的结合可以为虚拟化环境提供灵活且强大的网络管理能力。
如果虚拟机不想启动,那么尝试从终端运行libvirtd进程,这样所有的错误都将被删除或检查Libvirt/Open vSwitch日志文件以查找可能的根本原因。
实验:
虚机添加bridge和port:
host上看network加到了virbr0网桥上
虚机中查看port