使用Hyper-V的综合驱动程序的优点是什么?

我们正在将我们的虚拟化平台从Windows Server 2008 R2上的Citrix XenServer迁移到Hyper-V。 作为这个项目的一部分,我需要以某种forms将一些Debian Linux服务器迁移到Hyper-V。 我已经在我们新的Hyper-V平台上成功构build了一个基于Debian的服务器,我正在开始testing它。

Debian 6(Squeeze)使用包含Hyper-V合成驱动程序的2.6.32内核,但它不被认为是Microsoft支持的操作系统。 我有点犹豫,试图使用它们,除非有一个令人信服的理由,因为其他人有麻烦( 在这里 , 这里 )。

  • Hyper-V合成驱动程序与模拟驱动程序有什么优势?
  • 对于那些在Xenpipe理程序方面有经验的人来说,是否正在使用合成驱动程序对客户操作系统进行半虚拟化呢?
  • 那么是不是使用合成驱动程序的任何值得注意的危险或缺点?

我为什么要麻烦要么a)处理目前在内核中所报告的Hyper-V驱动程序的不稳定性; b)尝试构build一个更新的内核;或者c)尝试使虚拟机添加工作在分配状态,当一切似乎“只是工作”的devise?

编辑:添加一点答案…时钟漂移似乎是重要的问题(因为如此糟糕,NTP无法保持时钟),除非你正在使用Linux集成服务。 请参阅KB918461 。 显然使用Linux集成服务中包含的vmbus组件解决了这个问题。 我的testing将此问题视为一个问题。

合成驱动程序更直接地与实际的硬件“交谈”,绕过大多数pipe理程序(用于常见的数据操作)。 这大大降低了与大多数networking活动相关的pipe理程序开销。

如果你的服务器在networking上没有太多的通讯,或者你的硬件没有足够的资源,你应该可以使用模拟驱动程序。 然而,这样做肯定会有性能损失。

当你的虚拟机pipe理程序模拟硬件时,有很多寄存器和时间问题,以及客户端的驱动程序正在做的事情,比如把数据包放入网卡的缓冲区或者把数据放入磁盘驱动器。

当你使用合成的驱动程序时,你跳过所有“这个寄存器的小提琴(无论如何由pipe理程序模拟)”,直接跳到“这里是数据 – 用它做正确的事情”阶段。

所以整个过程要高效得多。

我没有一个完整的答案,但有一些经验可能会帮助完成讨论。 我们最初在我们的Red Hat机器上使用了仿真驱动程序,但是Linuxpipe理员抱怨networking性能糟糕透顶。 最终我们得到了合成驱动程序通过虚拟机加法工作,这是非常重要的(我没有证据或细节,所以拿一点盐)。

另外,我们有时通过networking映像虚拟机,当我们这样做时,我们必须在Windows机器上使用仿真网卡,因为合成网卡不支持PXE引导。 一旦成像完成,我们用仿真的NICreplace仿真的NIC。 再次,我在这里谈论Windows(不是Linux),但这是另一个区别。

一般来说,我的理解是,仿真设备模拟更老,更成熟或更通用的设备,几乎每个操作系统或发行版都将内置支持。 在这方面他们更普遍。 合成设备不模拟任何其他设备,您的操作系统或发行版可以识别,因此,您需要微软提供的驱动程序,他们喜欢你通过安装虚拟机添加。