3.10. 虚拟网络接口卡
虚拟网络接口卡(vNIC)是基于主机物理 NIC 的虚拟网络接口。每个主机可以有多个 NIC,每个 NIC 可以是多个 vNIC 的基础。
将 vNIC 附加到虚拟机时,Red Hat Virtualization Manager 会在虚拟机之间创建多个关联的 vNIC( vNIC 本身)以及 vNIC 所基于的物理主机 NIC。特别是,当 vNIC 附加到虚拟机时,会在 vNIC 所基于的物理主机 NIC 上创建新的 vNIC 和 MAC 地址。然后,在虚拟机附加了 vNIC 后第一次启动虚拟机时,libvirt
为 vNIC 分配 PCI 地址。然后,MAC 地址和 PCI 地址用于获取虚拟机中的 vNIC 的名称(如 eth0
)。
根据模板或快照创建虚拟机时,分配 MAC 地址并将 MAC 地址与 PCI 地址关联的过程略有不同:
- 如果已经为模板或快照创建了 PCI 地址,则基于该模板或快照创建的虚拟机的 vNIC 会根据这些 PCI 地址排序。然后,MAC 地址会按照该顺序分配给 vNIC。
- 如果还没有为模板创建 PCI 地址,则基于该模板创建的虚拟机上的 vNIC 将按字母顺序排序。然后,MAC 地址会按照该顺序分配给 vNIC。
- 如果还没有为快照创建 PCI 地址,Red Hat Virtualization Manager 会根据该快照为虚拟机分配新的 MAC 地址。
创建之后,vNIC 便会添加到网桥设备。网桥设备将虚拟机连接至虚拟逻辑网络。
在虚拟化主机上运行 ip addr show
命令显示与该主机上的虚拟机关联的所有 vNIC。另外,也可以看到,为支持逻辑网络而创建的任何网桥以及主机使用的任何 NIC。
[root@rhev-host-01 ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff inet6 fe80::221:86ff:fea2:85cd/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000 link/ether 00:21:6b:cc:14:6c brd ff:ff:ff:ff:ff:ff 5: ;vdsmdummy;: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN link/ether 4a:d5:52:c2:7f:4b brd ff:ff:ff:ff:ff:ff 6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 7: bond4: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 8: bond1: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 9: bond2: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 10: bond3: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 11: ovirtmgmt: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:21:86:a2:85:cd brd ff:ff:ff:ff:ff:ff inet 10.64.32.134/23 brd 10.64.33.255 scope global ovirtmgmt inet6 fe80::221:86ff:fea2:85cd/64 scope link valid_lft forever preferred_lft forever
命令的控制台输出显示一些设备:一个循环设备(lo)、一个以太网设备(eth0)、一个无线设备(wlan0)、一个 VDSM dummy 设备(;vdsmdummy;)、五个绑定设备(bond0、bond 4、bond1、bond1、bond2、bond3、bond3)。
vNIC 是网桥设备和逻辑网络的所有成员。可以使用 brctl show
命令显示网桥成员资格:
[root@rhev-host-01 ~]# brctl show bridge name bridge id STP enabled interfaces ovirtmgmt 8000.e41f13b7fdd4 no vnet002 vnet001 vnet000 eth0
brctl show
命令的控制台输出显示 virtio vNICs 是 ovirtmgmt 网桥的成员。vNIC 相关联的所有虚拟机都连接到 ovirtmgmt 逻辑网络。eth0 NIC 也是 ovirtmgmt 网桥的成员。eth0 设备电缆到交换机,可提供除主机外的连接。