欢迎诸位阅读本篇,Vmware(英文名威睿)是全球桌面到数据中心虚拟化解决方案的领导厂商,它提供云估算和硬件虚拟化的软件和服务。本文主要为你们简略介绍VMware、Redhat、Citrix、Microsoft主要虚拟化厂商使用的4种主要的虚拟化IO模型(emulation、para-virtualization、pass-through、SR-IOV)。课课家教育平台提醒诸位:本篇文章纯干货~因而你们一定要认真阅读本篇文章哦!
本文主要为你们穿针引线,信息量比较大,组织排版有限,看官们凑合点看着。
网路I/O不可是化学服务器最容易出现的困局,也是现今虚拟化技术最大的败笔。随着硬件虚拟化对网路I/O的支持,虚拟化的网路I/O模型也不断的进化,虚拟化的I/O性能也不断提高。
明天给你们分享VMware、Redhat、Citrix、Microsoft主流虚拟化解决方案采用的4种主流网路I/O模型redhat虚拟机,主要包括模型原理、模型优点、模型缺点、模型对虚拟化迁移的支持。
这4个主流网路I/O模型分别是:
1、Emulation
原理:仿真(emulation)是一个完全通过软件程序来模拟硬件的技术。初期虚拟化都才采用这些方案来虚拟网路设备。常见仿真软件有QEMU、VMwareWorkStation、VirtualBox。Emulation网路模型图如下:
不同虚拟化厂商的虚拟网卡产品都不尽相同。
VMwareEmulation类型网卡有:E1000(仿真intel82545M百兆网卡)、Flexible、Vlance(仿真AMC79C970PCnet32LANCE10M网卡)、VMXNET(VMXNET一共有3个版本,分别是VMXNET、VMXNET2、VMXNET3;暂时没有找到VMware的明晰资料对这三个版本进行分类。个人暂把VMXNET定为emulation、VMXNET2和VMXNET3定义为para-virtualization类型。VMXNET3也支持部份SR-IOV功能)。
Redhat的KVM和Citrix的XEN这类型网卡都是采用QEMU实现,在KVM和XEN里面可用的emulation网卡有:RTL8139(仿真RealTekLink8139100M网卡)、E1000(仿真intel82545M百兆网卡)。
MicrosoftHyper-VEmulation类型网卡有:Intel/DEC21140100M网卡
优点:软件模拟不须要硬件支持,通过CPU估算来模拟,跟宿主机化学网卡隔离,没有平台要求。
虚拟机操作系统不须要更改,模拟的都是常见网卡(例如:IntelE1000、RTL8139等)linux内核,主流操作系统都早已自带这种驱动,因而默认情况下虚拟机不须要再安装驱动。
缺点:CPU资源消耗大,尤其当虚拟机数目多的时侯。网卡性能通常,因为是软件模拟,只能模拟常见的、功能比较简单的网卡。
虚拟机迁移支持:
剥离了硬件要求,使用这类型可迁移性强。因为XEN和KVM都是使用qemu仿真linux系统官网,所以这类型虚拟机在XEN和KVM之间混和迁移实现难度也不大。
2、para-virtualization
原理:Para-virtualization又称半虚拟化,最早由Citrix的Xen提出使用。在半虚拟化模型中redhat虚拟机,数学硬件资源统一由Hypervisor管理,由Hypervisor提供资源调用插口。虚拟子机通过特定的调用插口与Hypervisor通讯,之后完整I/O资源控制操作。Para-virtualization模型图如下:
Para-virtualization又称半虚拟化,最开始由XEN提出的,XEN本身就是从虚拟化起家的。Para-virtualization模型下,虚拟子机的网卡驱动只能有Hypervisor厂商来开发,Redhat、VMware、Citrix、Microsoft这几大虚拟厂商都有各自的para-virtualization驱动。例如Redhat的KVM就叫virtio,VMware的有VMXNET2、VMXNET3,Citrix的XEN叫xen-pv,Mircrosoft暂时没有找到(欢迎同学们补充)。
优点:个人觉得是一种改进版的emulation模型,并且因为子机和Hypervisor之间通讯,性能比emulation要好多。
缺点:须要更改虚拟子机操作系统内核,添加不同Hypervisor厂商的网路驱动。例如Linux(Redhat和Novell)就在发行版上面添加了Mircosoft的para-virtualizaiton网路驱动,同样Microsoft也在自己发行版上面添加对KVM的virtio和xen-pv驱动支持。
虚拟机迁移支持:尽管不同虚拟化厂商的para-virtualization方案都不相同,因为主流操作系统都同时提供对这种方案的支持;所以这类型虚拟子机可迁移性也比较容易实现。
3、pass-through
原理:Hypervisor将一个PCI设备(可以是网卡、USB、光驱)直接分配给指定虚拟子机单独访问。为了安全和稳定性考虑,pass-through使用一般结合intelVT-D(AMD也有类似技术)来使用,通过iommu保证虚拟子机之间显存访问不冲突。此类技术在VMware上叫VMDirectPathI/O,其他方案中没有找到相关专门名词。
优点:性能好。单独PCI设备分配给虚拟子机,虚拟子机直接跟化学设备通讯。
缺点:设备只能被一个虚拟子机使用,配置也比较复杂,首先须要在hypervisor将指定设备通过PCIid方法分配给指定虚拟子机,之后虚拟子机辨识到设备再安装驱动来使用。
迁移性:迁移性方面待研究,有兴趣的同学可以补充构建。
4、SR-IOV
背景:pass-through模型让虚拟子机直接使用化学设备,这样促使虚拟子机的网路性能达到最优。SR-IOV主要拿来解决pass-through只能被一台虚拟子机访问的问题。SR-IOV标准由PCI-SIG,这个标准实现须要CPU、芯片组和PCI设备(主要是网卡等I/O资源)协同在硬件层面实现,SR-IOV被好多人觉得是解决了虚拟化最后一公里的问题。模型图如下:
原理:SR-IOV须要网卡硬件支持,支持SR-IOV功能的网卡可以在Hypervior上面注册成多个网卡(每位网卡都独立的中断ID、收发队列、QOS管理机制)。每位设备可以通过pass-through方法分配给虚拟子机。
产品:常见就是基于intel82599和82598芯片组的10Gb网卡。VMware、Redhat、Citrix和Microsoft都早已或则正在Hypervisor上面添加这个功能的支持。
优点:优点不用说,X86虚拟化最新的IO虚拟化模型;虚拟机不但性能好,并且结合硬件功能,为虚拟机IO管理提出了一个新方案。
缺点:待定
迁移性:SR-IOV同时须要硬件和软件两个层面支持,虚拟子机在相同网卡主机之间迁移时理论上不会有问题。具体还要看虚拟化厂商实现。