基于virtio的网卡使用
- 格式:doc
- 大小:124.50 KB
- 文档页数:24
基于virtio的网卡使用0.1版Contents《改版履歴》 (2)1.概要 (3)2. 使用virtio的前提 (3)2.1 前端驱动 (3)2.2 后端驱动 (4)2.3 使用QEMU创建virtio网卡 (4)3 virtio网卡的使用场景 (5)3.1 Guest虚拟机与Host机通讯 (5)3.2 Guest虚拟机通过Host与外部网络通讯 (6)3.3 Guest虚拟机与Guest虚拟机通讯 (9)4.4 使用virtio的效果分析 (10)1. 概要在QEMU中,默认使用的网卡配置为virtio网卡。
virtio本身是一个framework,使用QEMU加上KVM来进行虚拟I/O,概而言之,virtio 是半虚拟化hypervisor 中位于设备之上的抽象层。
而virtio网卡则是挂载在virtio模拟的pci总线上的一个虚拟网卡。
在虚拟机开发中一般推荐使用virtio网卡,因为virtio网卡是在虚拟化中速度最快、功能最全面的虚拟网卡。
2. 使用virtio的前提使用virtio需要Guest虚拟机的kernel和Host机的kernel包含相应的驱动,virtio驱动包含前段和后端,也就是说需要在Host的Kernel中添加Back-end的驱动,并在Guest的kernel中添加Front-end的驱动。
2.1 前端驱动Guest机使用的kernel在编译时(make menuconfig)需要添加如下选项:[*] Virtualization ---><*> PCI driver for virtio devicesDevice Drivers --->[*] Network device support ---><*> Virtio network driverDevice Drivers --->[*] Block devices ---><*> Virtio block driver第一个选项是在内核中添加virtio PCI驱动,第二个选项时再内核中添加virtio网卡驱动,第三个选项时为了支持virtio的块设备驱动,如virtio硬盘等。
kvm安装windows使⽤virtio驱动Windows安装VirtIO驱动的两种⽅法已经使⽤IDE⽅式来安装好系统(1)安装完Windows后,创建⼀块临时的硬盘和⽹卡,将其驱动都设置为virtio模式添加到Windows中(2) 添加⼀个光驱硬件,挂载最新的ISO⽂件(virtio-win-0.1-208.iso)(2)开机后将提⽰检查到新硬件,然后安装驱动程序后关机(采⽤⾃动⽅式)(3)删除新添加的临时硬盘和⽹卡,将原来的硬盘和⽹卡设置为virtio模式,开机即可识别到硬盘与⽹卡都为virtio模式在安装时直接加载virtio驱动因为已经有做好的windows镜像⽂件,所以这⾥采⽤第⼀种⽅法下载最新的ISO⽂件(virtio-win-0.1-208.iso),最新的该⽂件不⼀定有xp系统使⽤的驱动(下载⽼版本来解决)在该ISO⽂件中,包括好⼏个⽂件夹,具体对应关系如下:wxp: winxp 磁盘驱动wnet: win2003磁盘驱动win7:win7磁盘驱动wlh: win2008磁盘驱动xp: win xp/2003 ⽹卡驱动vista: win vista/7/2008 ⽹卡驱动是⼀个iso格式⽂件,winxp虚拟机添加光驱,挂载这个磁盘,然后开机还有更简单的办法,iso安装包中有exe程序,直接运⾏这个安装所有的virtio驱动如果是win7请去设备管理器⾥右键⽹卡选择虚拟光驱安装驱动,win10或以上直接运⾏盘⾥⾯的exe就⾏了,提⽰签名问题就换个iso包安装步骤1.创建⼀个IDE的磁盘,⽤来安装系统2.创建两个IDE的光驱,⼀个挂载⼤⽩菜PE镜像,⼀个挂载windows系统镜像3.⽹卡驱动可以先直接设置virtio驱动4.调整引导选项,把挂载⼤⽩菜PE镜像的光驱放在第⼀个位置上5.开机,进⼊pe系统6.使⽤分区⼯具,先给IDE磁盘分区7.使⽤⼤⽩菜⼀键装机软件,选择第⼆个光驱挂载的windows系统⽂件,选择安装的c分区,然后重启8.重启过程中⾃动安装驱动,进⾏优化等9.进⼊系统后,查看设备管理器,会发现驱动有问题10.关机,修改IDE磁盘为第⼀个引导项,第⼀个光驱挂载virtio驱动⽂件,添加⼀个临时磁盘,使⽤virtio驱动,⽹卡驱动还是设置成virtio驱动,然后开机11.进⼊到设备管理器,安装驱动,位置选择光驱挂载virtio驱动⽂件12.关机,删除临时磁盘,修改IDE磁盘驱动类型为virtio驱动,卸载光驱,删除光驱硬件,然后开机13.查看硬件驱动使⽤情况,卸载安装系统附带的软件。
1.BOND模式概述1.如下bond模式支持虚拟机网络(使用网桥)和非虚拟机网络(无网桥)●Bond1(主备策略):只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备,不需要交换机做配置。
●Bond2(平衡策略):基于指定的传输HASH策略传输数据包。
此模式提供负载平衡和容错能力,需要交换机配置链路聚合。
●Bond4(IEEE802.3ad 动态链接聚合):创建一个聚合组,它们共享同样的速率和双工设定。
根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
需要交换机配置动态链路聚合。
●Bond5(适配器传输负载均衡): 在每个slave上根据当前的负载(根据速度计算)分配外出流量。
如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
不需要交换机做配置。
2.如下bond模式只支持非虚拟机网络(无网桥)●Bond0(平衡抡循环策略):传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力●Bond3(广播策略):在每个slave接口上传输每个数据包,此模式提供了容错能力●Bond6(适配器适应性负载均衡):该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receiveload balance, rlb),而且不需要任何switch(交换机)的支持2.BOND配置2.1Bond0配置1.在设置主机网络中绑定两个网卡并配置bond模式为自定义,自定义模式为“mode=0 miimon=100”2.把逻辑网络附加到bond,并配置IP地址3.在交换机进行配置,如下为华为交换机的配置,主要为创建链路聚合组并把两个接口加入到聚合组。
#interface Eth-Trunk1port hybrid pvid vlan 14port hybrid untagged vlan 14#interface GigabitEthernet0/0/30undo negotiation autoeth-trunk 1#interface GigabitEthernet0/0/31undo negotiation autoeth-trunk 1#2.2Bond1配置1.在设置主机网络中绑定两个网卡并选择bonding模式为mode12.把逻辑网络附加到bond,并配置逻辑网络的IP3.交换机不需要做配置,不过需要让em2和em3对应的交换机网口属于相同的vlan2.3Bond2配置1.在设置主机网络中绑定两个网卡并选择bonding模式为mode22.把逻辑网络附加到bond,并配置逻辑网络的IP3.然后需要在交换机配置静态端口聚合,如下为华为交换机配置interface Eth-Trunk1port hybrid pvid vlan 14port hybrid untagged vlan 14#interface GigabitEthernet0/0/30undo negotiation autoeth-trunk 1#interface GigabitEthernet0/0/31undo negotiation autoeth-trunk 1#2.4Bond3配置1.在设置主机网络中绑定两个网卡并配置bond模式为自定义,自定义模式为“mode=3 miimon=100”2.把逻辑网络附加到bond,并配置IP地址3.交换机不需要做配置,不过需要让em2和em3对应的交换机网口属于相同的vlan。
VirtIO与PCI直通可提升KVM虚拟机网络性能ZDNet至顶网服务器频道09月25日:VirtIO驱动器或者PCI 直通磁盘可以为KVM虚拟机提供更好的网络性能。
方法的选择取决于你所需要的网络性能,以及使用的Red Hat Enterprise Linux版本。
虽然KVM虚拟机通常提供了比较好的网络性能,但是每个管理员都知道这不足以解决所有问题。
让我们来一起看看VirtIO驱动器或者PCI 直通磁盘是怎样提升KVM虚拟机网络性能的:使用VirtIO驱动器优化网络性能网络性能始于虚拟网卡,但是VirtIO驱动器对网络性能影响巨大。
VirtIO驱动器在不同的层面包括网络层提供了半虚拟化。
如果你安装了一个Linux虚拟机,那么默认就使用了VirtIO驱动器。
如果虚拟机使用的是其他操作系统,那么需要手动安装VirtIO驱动器。
为验证虚拟机是否在使用VirtIO驱动器,可以在虚拟机内运行lspci -v命令。
然后在输出结果中查找以太网控制器。
结果应该如列表1所示,显示正在使用的virtio -pci内核模块以及内核驱动器。
列表1:Good KVM network performance starts by using the VirtIO driver00:03.0Ethernet controller: Red Hat, Inc VirtIO network deviceSubsystem: Red Hat, Inc Device 0001Physical Slot: 3Flags: fast devsel, IRQ 10I/O ports at c040 [size=32]Memory at f2020000 (32-bit, non-prefetchable) [size=4K]Expansion ROM at f2030000 [disabled] [size=64K]Capabilities: [40] MSI-X: Enable+ Count=3 Masked-Kernel driver in use: virtio-pciKernel modules: virtio_pci在KVM之前的版本中,即使使用了VirtIO驱动器,网络流量也是通过QEMU处理的,QEMU是位于主机和虚拟机之间的模拟层。
VirtualBox配置虚拟⽹卡(桥接),实现主机-虚拟机⽹络互通(图⽂教程)⽹上搜出来的⽐较乱,讲的不明不⽩,因此根据⾃⼰弄过⼀次,确认可⾏的⽅式,做个备份,⽅便⽇后查阅。
环境:在Oracle VM VirtualBox中安装的Ubuntu,具体版本名是:ubuntu-14.10-server-amd64Step1:VirtualBox在虚拟机关机状态下,如图进⾏设置:Step 2:虚拟机开机,输⼊命令:sudo ifconfig或者sudo ifconfig -a查看当前⽹卡配置查看当前ip地址Step3:输⼊命令:vim /etc/network/interfaces打开⽹卡配置⽂件,添加eth1,保存修改。
修改后的⽂件内容,如下:# This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5).# The loopback network interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet dhcpauto eth1iface eth1 inet static#本机当前ip地址,通过Step2中ifconfig查询出来的即可address 192.168.56.11netmask 255.255.255.0Step4:重启虚拟机(必要时重启主机电脑),命令ifconfig查看当前⽹卡设置。
能看到eth1,并且有值,即可。
Step5:1) Windows的cmd中,命令:ipconfig查看当前ip2) ubuntu中,输⼊命令:ping 192.168.56.1,Enter,显⽰如下:虚拟机访问主机ip,通过了。
VirtualBox最新版2.1.0使用USB无线网卡设置网络教程最近用到虚拟机,VMWare、VirtualPC、VirtualBox挨个都试了N遍。
VMWare 软件包太大,E文,配置项太多,不适用我等这样的懒人。
不过使用默认配置安装好后即可使用,这点倒是不错。
VirtualPC也是E文,配置也复杂,不喜欢。
VirtualBox才39M,支持中文,配置简单明了,不过在配置网络上走了许多弯路。
主要是因为网上关于它的网络配置教程基本上都是同一篇文章转来转去的,内容云山雾罩,不知所云。
还都是在linux下的命令行,好容易在一个叫“阿明的博客”里找到了正常人能看得懂的图文并茂的教程,可惜是上一个版本的,新版本已经有很大差别。
经过本人不懈摸索,终于找到了正确的配置方法,累死了,不过弄好以后真好用,真正的轻量级软件,易用,稳定,配置简单。
1.环境主机(Host):XP SP3,Dlink无线网卡(USB接口),DHCP虚拟机:XP SP3网络环境:ADSL拨号猫带无线路由功能。
主机通过无线网卡连接无线路由器上网。
无线路由器地址为192.168.1.12.安装VirtualBox,新建XP虚拟机,不废话了。
3.启动虚拟机,进入虚拟系统后安装增强包。
增强包必须要虚拟系统启动后才能安装,偶开始N次都是在没有启动虚拟系统的情况下点击安装,结果没有任何反应,以为软件安装不完全或其它什么错误造成的,还反复安装了几次虚拟系统,汗。
丢人。
这点也要批评一下Sun,不能使用的时候你把菜单置灰不行吗,害人啊。
之所以要先安装增强包是为了鼠标和键盘的方便切换,没安装增强包前鼠标被虚拟系统捕获后只能通过热键(默认的为右ctrl)来切换,安装增强包后鼠标会在虚拟系统和真实系统图形界面间自动切换。
偶用的是aigo的无线键盘,没有右ctrl键,结果鼠标被虚拟系统捕获后无法切换到真实系统,在这上又折腾好久,后来才知道在主窗口即Sun xVM VirtualBox窗口(不是虚拟机窗口)的【管理】--【全局设定】里可以更改热键,撞墙去了。
基于virtio的网卡使用0.1版Contents《改版履歴》 .............................................................................................. 错误!未定义书签。
1.概要 (3)2. 使用virtio的前提 (3)2.1 前端驱动 (3)2.2 后端驱动 (3)2.3 使用QEMU创建virtio网卡 (4)3 virtio网卡的使用场景 (4)3.1 Guest虚拟机与Host机通讯 (5)3.2 Guest虚拟机通过Host与外部网络通讯 (6)3.3 Guest虚拟机与Guest虚拟机通讯 (8)4.4 使用virtio的效果分析 (9)1. 概要在QEMU中,默认使用的网卡配置为virtio网卡。
virtio本身是一个framework,使用QEMU加上KVM来进行虚拟I/O,概而言之,virtio 是半虚拟化hypervisor 中位于设备之上的抽象层。
而virtio网卡则是挂载在virtio模拟的pci总线上的一个虚拟网卡。
在虚拟机开发中一般推荐使用virtio网卡,因为virtio网卡是在虚拟化中速度最快、功能最全面的虚拟网卡。
2. 使用virtio的前提使用virtio需要Guest虚拟机的kernel和Host机的kernel包含相应的驱动,virtio驱动包含前段和后端,也就是说需要在Host的Kernel中添加Back-end的驱动,并在Guest 的kernel中添加Front-end的驱动。
2.1 前端驱动Guest机使用的kernel在编译时(make menuconfig)需要添加如下选项:[*] Virtualization ---><*> PCI driver for virtio devicesDevice Drivers --->[*] Network device support ---><*> Virtio network driverDevice Drivers --->[*] Block devices ---><*> Virtio block driver第一个选项是在内核中添加virtio PCI驱动,第二个选项时再内核中添加virtio网卡驱动,第三个选项时为了支持virtio的块设备驱动,如virtio硬盘等。
拿云Windows安装NETKVM-20081229
丢包需要开启virtio驱动模式以缓解丢包现象,以请按此操作:进入拿云客户平台,选择云主机。
查看已关闭的机器。
点击详情(必须先关闭机器)
高级页面选择VIRTIO保存即可,开机,VIRTIO永远一直勾选。
开机以后双击桌面下面的这个图标(不会有反应)
然后会出现以太网控制器的安装,此时ip是不通的。
安装完成后网卡会自动获得IP,到此安装结束。
如果没有出现自动安装界面,或始终ping不通。
请选择我的电脑→管理→以太网控制器
右键更新驱动程序,继续默认安装。
安装完成后检查网卡驱动是否是Qumranet ParaVirtualized Ethernet Adapter,如果是恭喜您,更新成功了。
拿云linux系统不需安装NETKVM-20081229 Linxu只需选择VIRTIO即可。
⽹络虚拟化Virtio-net⽹络虚拟化有和存储虚拟化类似的地⽅,例如它们都是基于virtio 的,因⽽在看⽹络虚拟化的过程中,会看到和存储虚拟化很像的数据结构和原理。
但是⽹络虚拟化也有⾃⼰的特殊性。
例如,存储虚拟化是将宿主机上的⽂件作为客户机上的硬盘,⽽⽹络虚拟化需要依赖于内核协议栈进⾏⽹络包的封装与解封装。
那怎么实现客户机和宿主机之间的互通呢?就来看⼀看解析初始化的过程。
还是从Virtio Network Device 这个设备的初始化讲起,如下所⽰:static const TypeInfo device_type_info = {.name = TYPE_DEVICE,.parent = TYPE_OBJECT,.instance_size = sizeof(DeviceState),.instance_init = device_initfn,.instance_post_init = device_post_init,.instance_finalize = device_finalize,.class_base_init = device_class_base_init,.class_init = device_class_init,.abstract = true,.class_size = sizeof(DeviceClass),};static const TypeInfo virtio_device_info = {.name = TYPE_VIRTIO_DEVICE,.parent = TYPE_DEVICE,.instance_size = sizeof(VirtIODevice),.class_init = virtio_device_class_init,.instance_finalize = virtio_device_instance_finalize,.abstract = true,.class_size = sizeof(VirtioDeviceClass),};static const TypeInfo virtio_net_info = {.name = TYPE_VIRTIO_NET,.parent = TYPE_VIRTIO_DEVICE,.instance_size = sizeof(VirtIONet),.instance_init = virtio_net_instance_init,.class_init = virtio_net_class_init,};static void virtio_register_types(void){type_register_static(&virtio_net_info);}type_init(virtio_register_types)Virtio Network Device这种类的定义是有多层继承关系的,TYPE_VIRTIO_NET的⽗类是TYPE_VIRTIO_DEVICE,TYPE_VIRTIO_DEVICE的⽗类是TYPE_DEVICE,TYPE_DEVICE的⽗类是TYPE_OBJECT,继承关系就到头了。
VFCon使用补充说明1单机使用(Standalone)仿真系统可以在单台计算机上使用,甚至不需要硬件网卡。
本章讨论通过建立虚拟网卡的方式使用仿真系统软件。
建立虚拟网卡只需耗费几分钟时间,使用Windows的自带功能完成。
以下操作描述基于Windows XP,Windows 2000上的设置类似,不再赘述。
1.1 给Windows添加虚拟网卡(1)打开计算机的“控制面板”,选择“添加硬件”,出现如图错误!未找到引用源。
-1所示的向导对话框。
图错误!未找到引用源。
-1 添加虚拟网卡(1)(2)点击“下一步”,向导开始搜索硬件,如图错误!未找到引用源。
-2所示。
图错误!未找到引用源。
-2 添加虚拟网卡(2)(3)等待一段时间后,提示是否已经连接了硬件,如图错误!未找到引用源。
-3所示。
图错误!未找到引用源。
-3 添加虚拟网卡(3)(4)选择“是,我已经连接了此硬件”(因为我们配置的是虚拟网卡,所以无需真的需要硬件),点击“下一步”。
接下来如图错误!未找到引用源。
-4所示的向导弹出硬件列表。
图错误!未找到引用源。
-4 添加虚拟网卡(4)(5)从“已安装的硬件”列表中选择“添加新的硬件设备”,点击“下一步”。
接下来向导弹出如图错误!未找到引用源。
-5所示的安装提示对话框。
图错误!未找到引用源。
-5 添加虚拟网卡(5)(6)选择“安装我手动从列表选择的硬件(高级)”,点击“下一步”。
接下来向导弹出如图错误!未找到引用源。
-6所示的硬件类型列表。
图错误!未找到引用源。
-6 添加虚拟网卡(6)(7)在“常见硬件类型”列表中,选择“网络适配器”,然后点击“下一步”。
接下来向导会弹出网卡选择对话框如图错误!未找到引用源。
-7所示。
图错误!未找到引用源。
-7 添加虚拟网卡(7)(8)在网卡选择对话框中,“厂商”选择“Microsoft”,“网卡”选择“Microsoft Loopback Adapter”,然后点击“下一步”,弹出如图错误!未找到引用源。
基于virtio的网卡使用基于virtio的网卡使用0.1版Contents《改版履歴》....................... 错误!未定义书签。
1.概要 (5)2. 使用virtio的前提 (6)2.1 前端驱动 (6)2.2 后端驱动 (8)2.3 使用QEMU创建virtio网卡 (9)3 virtio网卡的使用场景 (10)3.1 Guest虚拟机与Host机通讯 (11)3.2 Guest虚拟机通过Host与外部网络通讯 (14)3.3 Guest虚拟机与Guest虚拟机通讯 (20)4.4 使用virtio的效果分析 (23)1. 概要在QEMU中,默认使用的网卡配置为virtio 网卡。
virtio本身是一个framework,使用QEMU加上KVM来进行虚拟I/O,概而言之,virtio 是半虚拟化hypervisor 中位于设备之上的抽象层。
而virtio网卡则是挂载在virtio模拟的pci 总线上的一个虚拟网卡。
在虚拟机开发中一般推荐使用virtio网卡,因为virtio网卡是在虚拟化中速度最快、功能最全面的虚拟网卡。
2. 使用virtio的前提使用virtio需要Guest虚拟机的kernel和Host机的kernel包含相应的驱动,virtio驱动包含前段和后端,也就是说需要在Host的Kernel 中添加Back-end的驱动,并在Guest的kernel 中添加Front-end的驱动。
2.1 前端驱动Guest机使用的kernel在编译时(make menuconfig)需要添加如下选项:[*] Virtualization ---><*> PCI driver for virtiodevicesDevice Drivers --->[*] Network device support ---><*> Virtio network driverDevice Drivers --->[*] Block devices ---><*> Virtio block driver第一个选项是在内核中添加virtio PCI驱动,第二个选项时再内核中添加virtio网卡驱动,第三个选项时为了支持virtio的块设备驱动,如virtio硬盘等。
上面是使用virtio所需要选择的最小选项集,另外还可以选择的有:[*] Virtualization --->< *> Virtio balloon driver (EXPERIMENTAL)[*] KVM support for PowerPC E500 processors2.2 后端驱动由于Guest使用virtio网卡与外部通讯,所以通讯方式一般选用桥接方式,而为了支持桥接模式,Host机使用的kernel必须支持一下选项:Networking support --->Networking options ---><*> 802.1d Ethernet BridgingDevice Drivers --->[*] Network device support ---><*> Universal TUN/TAP device driver support第一个选项是为了支持桥接模式,第二个选项时为了使用TUN和TAP的功能,其中TUN主要用于NAT穿越,TAP主要用于Host机与Guest虚拟机之间的网络。
2.3 使用QEMU创建virtio网卡qemu-system-ppc -net nic,model=virtio,macaddr=00:0B:5D:99:82: 2B其中-net nic为QEMU中创建网卡的选项,model指定为使用virtio网卡,macaddr是指定网卡的MAC地址,以防止创建多个虚拟机时产生MAC地址冲突。
在成功使用virtio网卡之后,Guest虚拟机中会生成指定的网卡数量,使用ifconfig -a查看创建的网卡3 virtio网卡的使用场景网卡的使用范围一般分为Host机与Guest 虚拟机通讯、Guest虚拟机与Guest虚拟机通讯、Guest虚拟机通过Host与外部网络通讯。
目前QEMU支持三种方式的网络连接,分别是NAT、TAP、Bridge。
NAT方式是QEMU默认的网络连接方式,使用这种方式创建的Guest虚拟机只能与外部网络通讯,而无法与Host机以及Host机所在局域网中的其他机器通讯。
使用TAP方式连接相当于vmware中的Host-only,使用这种方法创建的Guest虚拟机只能与Host机通讯,处在一个封闭的环境中,多用于调试使用。
使用Bridge方式连接首先要通过TAP方式创建网卡,然后通过另一个桥接网卡使Guest虚拟机与外部通讯。
3.1 Guest虚拟机与Host机通讯主要使用TAP方式来使Guest虚拟机与Host 机通讯,步骤如下:1.创建两个用于TAP启动/关闭的脚本,用于在Host机上创建一个虚拟网卡,例如qemu-ifup中使用ifconfig命令创建网卡,$1为传入的参数,默认为tap0,也可以在QEMU 命令行-net tap,ifname=tap0指定。
#!/bin/sh/sbin/ifconfig $1 192.168.1.1 netmask 255.255.255.0 upsleep 2qemu-ifdown中使用ifconfig命令来关闭虚拟网卡#!/bin/sh/sbin/ifconfig $1 downsleep 22.使用QEMU启动Guest虚拟机由于ifconfig创建网卡需要管理员权限,所以用户在使用TAP方式启动网卡时需要使用sudo命令或者本身是管理员root。
sudo/home/shir/install/qemu/bin/qemu-system-p pc -M mpc8544ds -nographic -kernel uImage -append "root=/dev/ram rw rdinit=/linuxrc" -initrd initrd-small -net nic,model=virtio,macaddr=00:0B:5D:99:82: 2A -net tap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/ qemu-ifdown -m 512这里主要关注两个选项-net nic用于创建网卡,model指定为使用virtio网卡, macaddr是指定网卡的MAC地址,以防止创建多个虚拟机时产生MAC地址冲突。
-net tap指定使用TAP方式启动,script指向tap网卡的启动脚本,downscript指向tap网卡的关闭脚本,在运行时尽量指定downscript,否则在虚拟机关闭后任然有tap 网卡存在。
Guest虚拟机启动后,使用ifconfig -a发现会有网卡eth0存在。
3.设置网卡IP地址eth0的IP地址网段必须和tap网卡的IP处于同一网段,如启动时tap网卡IP为192.168.1.1,则可以配置eth0为192.168.1.10。
然后使用ping命令可以看到,Guest虚拟机已经可以和Host机通过网卡通讯了。
3.2 Guest虚拟机通过Host与外部网络通讯为了使Guest虚拟机能通过Host与外部网络通讯,需要使用Bridge模式,原理即是使用桥接网卡在虚拟机之间建立一个通道,步骤如下:1.使用QEMU启动Guest虚拟机sudo qemu-system-ppc -M mpc8544ds -nographic -kernel uImage -initrd initrd-small -net nic,model=virtio,macaddr=00:0B:5D:99:82: 2A -net tap,script=/home/shir/install/qemu-if/qemu-ifup,downscript=/home/shir/install/qemu-if/ qemu-ifdown -m 512和3.1 Guest虚拟机与Host机通讯中描述的一样,使用TAP方式创建网卡。
2.配置文件方式创建桥接网卡由于桥接网卡是一个虚拟网卡,所以可以使用配置,也可以使用命令行来配置。
如果使用配置文件,则首先编译Host机中真实网卡eth0的配置文件:编译/etc/sysconfig/network-scripts/ifcfg-eth0,主要修改就是注释掉UUID,IPADDR,GATEWAY,修改BOOTPROTO为none(表示不使用网络服务,static为使用静态IP,dpch 为使用dhcp分配的IP),添加BRIDGE(指定在eth0和桥接网卡br0之间建立一个桥接)。
DEVICE="eth0"HWADDR="00:21:86:13:A6:9A"NM_CONTROLLED="no"TYPE="Ethernet"#UUID="00c3a007-4b84-4abe-8cdb-814213 3a8c19"BOOTPROTO=none#IPADDR="10.167.141.218"#GATEWAY="10.167.141.1"BRIDGE=br0添加一个新的桥接网卡的配置文件:编辑/etc/sysconfig/network-scripts/ifcfg-br0,添加如下配置DEVICE=br0ONBOOT=yesTYPE=BridgeBOOTPROTO=staticIPADDR=10.167.141.218GATEWAY=10.167.141.1DEVICE为设备名字,ONBOOT指定是否在网络重启时自动启动该网卡,TYPE为网络类型,这里是桥接模式,BOOTPROTO表示IP 的分配形式,这里为静态IP,IPADDR指定IP地址,GATEWAY指定网关。
一般配置桥接网卡br0的IP地址为原来网卡eth0的IP地址,这样可以保证外部任然可以使用原来的IP 地址访问Host。
添加完配置文件之后需要重启网络服务service network restart网络服务重启后会生成一个br0的桥接网卡,这样可以使用br0与外部通讯了。
3.手动创建桥接网卡#先使原来的网卡失效;sudo ifdown eth0#添加桥接网卡br0并使它生效;sudo brctl addbr br0sudo ifconfig br0 up#配置桥接网卡的IP地址,使用桥来代替原来的网卡,这样xshell等telnet工具可以使用原来的IP地址登陆Host机sudo ifconfig br0 10.168.141.218使用手动创建的桥接网卡和用脚本创建的桥接网卡效果是一样的,不同的是使用手动创建的桥接网卡不需要重启网络服务就可以使用,但是在Host机器重启后配置的网卡会失效,所以需要保存到启动文件中,使Host机器在重启时能自动配置。