学习 KVM 的系列文章: html
|
过程:
|
注意:当客户机经过DMA (Direct Memory Access)访问大块I/O时,QEMU 模拟程序将不会把结果放进共享页中,而是经过内存映射的方式将结果直接写到客户机的内存中共,而后通知KVM模块告诉客户机DMA操做已经完成。前端
Qemu 纯软件的方式来模拟I/O设备,其中包括常用的网卡设备。Guest OS启动命令中没有传入的网络配置时,QEMU默认分配 rtl8139 类型的虚拟网卡类型,使用的是默认用户配置模式,这时候因为没有具体的网络模式的配置,Guest的网络功能是有限的。 全虚拟化状况下,KVM虚机能够选择的网络模式包括:linux
分别使用的 qemu-kvm 参数为:web
网桥模式是目前比较简单,也是用的比较多的模式,下图是网桥模式下的 VM的收发包的流程。编程
如图中所示,红色箭头表示数据报文的入方向,步骤:后端
(引用自 http://luoye.me/2014/07/17/netdev-virtual-1/)centos
注意:RedHat Linux KVM 不支持 SCSI 模拟。服务器
类型 | 选项 |
磁盘设备(软盘、硬盘、CDROM等) | -drive option[,option[,option[,...]]]:定义一个硬盘设备;可用子选项有不少。 file=/path/to/somefile:硬件映像文件路径; if=interface:指定硬盘设备所链接的接口类型,即控制器类型,如ide、scsi、sd、mtd、floppy、pflash及virtio等; index=index:设定同一种控制器类型中不一样设备的索引号,即标识号; media=media:定义介质类型为硬盘(disk)仍是光盘(cdrom); format=format:指定映像文件的格式,具体格式可参见qemu-img命令; -boot [order=drives][,once=drives][,menu=on|off]:定义启动设备的引导次序,每种设备使用一个字符表示; |
网络 |
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:建立一个新的网卡设备并链接至vlan n中;
PC架构上默认的NIC为e1000,macaddr用于为其指定MAC地址,name用于指定一个在监控时显示的网上设备名称;emu能够模拟多个类型的网卡设备;
可使用“qemu-kvm -net nic,model=?”来获取当前平台支持的类型;
-net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]:
经过物理机的TAP网络接口链接至vlan n中,使用script=file指定的脚本(默认为/etc/qemu-ifup)来配置当前网络接口,
并使用downscript=file指定的脚本(默认为/etc/qemu-ifdown)来撤消接口配置;使用script=no和downscript=no可分别用来禁止执行脚本;
-net user[,option][,option][,...]:在用户模式配置网络栈,其不依赖于管理权限;有效选项有:
vlan=n:链接至vlan n,默认n=0;
name=name:指定接口的显示名称,经常使用于监控模式中;
net=addr[/mask]:设定GuestOS可见的IP网络,掩码可选,默认为10.0.2.0/8;
host=addr:指定GuestOS中看到的物理机的IP地址,默认为指定网络中的第二个,即x.x.x.2;
dhcpstart=addr:指定DHCP服务地址池中16个地址的起始IP,默认为第16个至第31个,即x.x.x.16-x.x.x.31;
dns=addr:指定GuestOS可见的dns服务器地址;默认为GuestOS网络中的第三个地址,即x.x.x.3;
tftp=dir:激活内置的tftp服务器,并使用指定的dir做为tftp服务器的默认根目录;
bootfile=file:BOOTP文件名称,用于实现网络引导GuestOS;
如:qemu -hda linux.img -boot n -net user,tftp=/tftpserver/pub,bootfile=/pxelinux.0
|
(1)virtio-net 的原理:网络
vhost-net 的要求:架构
qemu-kvm 命令的 -net tap 有几个选项和 vhost-net 相关的: -net tap,[,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
另外一个比较特殊的 virtio 设备是 virtio-balloon。一般来讲,要改变客户机所占用的宿主机内存,要先关闭客户机,修改启动时的内存配置,而后重启客户机才能够实现。而 内存的 ballooning (气球)技术能够在客户机运行时动态地调整它所占用的宿主机内存资源,而不须要关闭客户机。该技术可以:
优点 | 不足 |
|
|
在QEMU monitor中,提供了两个命令查看和设置客户机内存的大小。