在创建虚拟机时,使用默认配置添加网卡将是一件相当容易的事情。但是如果需要针对特定环境来调整KVM的网络配置,就有一点困难了。在这篇文章中,你可以了解KVM的网络架构以及如何手动搭建虚拟网桥。 为了将虚拟机(VM)连接到主机层的物理网络,你需要通过某种方式来共享物理机上的物理网卡访问权限。
默认的方式是使用名称为br0的桥接设备。运行在同一台物理上的每个实例都可以使用这种桥接设备来访问网络,就和hypervisor主机操作系统一样。 物理网桥或者交换机的不同端口,也就是vnet端口,都位于桥接设备上。每个vnet接口都连接到网桥上,而网桥连接在KVM主机或者虚拟操作系统的真实网卡上。
图1是一张概述……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在创建虚拟机时,使用默认配置添加网卡将是一件相当容易的事情。但是如果需要针对特定环境来调整KVM的网络配置,就有一点困难了。在这篇文章中,你可以了解KVM的网络架构以及如何手动搭建虚拟网桥。
为了将虚拟机(VM)连接到主机层的物理网络,你需要通过某种方式来共享物理机上的物理网卡访问权限。默认的方式是使用名称为br0的桥接设备。运行在同一台物理上的每个实例都可以使用这种桥接设备来访问网络,就和hypervisor主机操作系统一样。
物理网桥或者交换机的不同端口,也就是vnet端口,都位于桥接设备上。每个vnet接口都连接到网桥上,而网桥连接在KVM主机或者虚拟操作系统的真实网卡上。图1是一张概述图,你可以看到主机上的物理网卡eth0连接到了vnet0,vm1中的eth0连接到了vnet1,vm2的eth0连接到了vnet2。Vnet接口的编号没有实际意义,和虚拟机以及虚拟机使用的设备没有任何关系:只是按照安装顺序进行编号。
图1.
KVM网络架构
如果需要进一步了解KVM网络配置,可以使用brctl show命令。这个命令可以列出网桥设备的名称和ID;还可以显示生成树协议(STP)是否被禁用,以及连接到网桥的所有接口。
lin:~ # brctl show
bridge name bridge id STP enabled interfaces
br0 8000.5c260a1a70aa no em1
vnet0
vnet1
vnet2
vnet3
vnet4
配置桥接设备
为了在SUSE或Red Hat Linux系统中配置KVM主机的桥接设备,通常你需要创建一个ifcfg-br0文件,其中包含以下配置:
lin:~ # cat /etc/sysconfig/network/ifcfg-br0
BOOTPROTO='dhcp'
BRIDGE='yes'
BRIDGE_FORWARDDELAY='0'
BRIDGE_PORTS='em1'
BRIDGE_STP='off'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.122.1/24'
MTU=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='onboot'
USERCONTROL='no'
在上面的桥接设备定义中,最重要的参数是BRIDGE_PORTS='em1',这表明物理接口已经连接到网桥。不需要对连接到网桥的物理网卡进行太多的配置。
lin:~ # cat /etc/sysconfig/network/ifcfg-em1
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='0.0.0.0/32'
MTU=''
NAME='82577LM Gigabit Network Connection'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
将虚拟机连接到网桥
在完成主机部分的配置之后,可以使用virsh命令来配置虚拟机网络。在KVM主机中,使用virsh list --all 命令查看主机中所有可用虚拟机的情况。
lin:~ # virsh list --all
setlocale: No such file or directory
Id Name State
----------------------------------
1 SAN running
4 node2 running
6 windowsvista running
7 node1 running
之后,在编辑器中使用virsh edit hostname命令打开一个针对特定主机的XML配置文件。从上到下查看每个设备,直至找到第一个网络接口:
<interface type='bridge'>
<mac address='52:54:00:11:f4:2f'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
如果想要添加额外的网卡,只需要增加一个网卡配置。需要定义接口类型(应该是网桥类型)、源网桥和型号。
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
在第一次主机启动时libvirt将会添加一些初始化配置,所有没有必要为硬件定义MAC地址。完成这些操作之后,就可以重启虚拟机了,在重启的过程中可以看到新的接口已经被自动添加了。
KVM环境中的网络管理涉及了多种不同部分。首先,需要在主机上创建一个桥接设备,之后需要将虚拟机接口连接到桥接设备上。完成这些步骤之后,你就可以像使用物理网络一样、使用虚拟机网络了。
相关推荐
-
回顾年度9大虚拟化技术
虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]
-
16口液晶KVM用什么牌子比较好?
16口液晶KVM用什么牌子比较好?
-
深圳那家KVM延长器买的比较好呢?
深圳那家KVM延长器买的比较好呢?
-
kvm选择什么牌子好
kvm选择什么牌子好