Xen:完全虚拟化与准虚拟化的硬件驱动管理

日期: 2008-09-25 作者:Sander van Vugt翻译:涂凡才 来源:TechTarget中国 英文

虚拟机管理员面对的最困难的任务之一就是硬件管理。硬件管理是一个令人迷惑的话题,因为有时指的是真正的硬件,有时指的是虚拟硬件。有些情况下,使用的是完全虚拟化,有时使用的又是其它虚拟化。因此,根据虚拟化技术的不同,所表示的硬件也不同。

在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将解释完全虚拟化与准虚拟化环境下硬件驱动的不同之处。本文将以Xen环境为例。   在Xen架构中,驱动域(driver domain)通常为Domain0。这就意味着只有这个Domain0被允许使用“真正的”驱动与硬件设备直接对话。

通常,Domain0被用作驱动域,不过这并不是唯一的一种可……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

虚拟机管理员面对的最困难的任务之一就是硬件管理。硬件管理是一个令人迷惑的话题,因为有时指的是真正的硬件,有时指的是虚拟硬件。有些情况下,使用的是完全虚拟化,有时使用的又是其它虚拟化。因此,根据虚拟化技术的不同,所表示的硬件也不同。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将解释完全虚拟化与准虚拟化环境下硬件驱动的不同之处。本文将以Xen环境为例。

  在Xen架构中,驱动域(driver domain)通常为Domain0。这就意味着只有这个Domain0被允许使用“真正的”驱动与硬件设备直接对话。通常,Domain0被用作驱动域,不过这并不是唯一的一种可能性。在后面你将了解到,如果需要的话,你可以将某个驱动的管理交给某个Domain。所有不是驱动域的Domain都使用虚拟设备驱动,这些虚拟设备驱动会使用驱动域中的驱动。

  在Xen驱动模块中,有一个后端(back-end)驱动运行于驱动域(通常为Domain0),然后驱动域直接与硬件设备对话。在DomainU中,则有一个前端(front-end)驱动与驱动域中的后端驱动对话。为了与后端驱动通信,Xen建立了Xen总线(bus)。这是一个虚拟总线,所有前端驱动都可以通过它与后端驱动通信。后端驱动的任务就是处理与硬件设备之间的通信。

  前端驱动与后端驱动的通信有两种方式:准虚拟化(paravirtualization)和模拟(emulation)。首先,可以采用准虚拟化,当准虚拟化不可用时,可以采用模拟。

  如果使用的是准虚拟化的操作系统,也就会自动使用准虚拟化驱动。在这种情况下,驱动软件能识别虚拟化环境。因此,驱动可以发出最优的指令与硬件直接对话。

  准虚拟化驱动并不只是在准虚拟化环境才可用,在完全虚拟化中也可以使用。比如说,Novell Virtual Machine Driver Pack对有些操作系统可用,所以有可能使用该驱动包中的准虚拟化驱动去驱动块设备和网络设备。由于这些设备都会导致超高负载,使用这些驱动会大大地提高性能。

  完全虚拟化环境中的驱动可以替代准虚拟化驱动。因为,在这些环境中,驱动自身无法意识到自己是虚拟的,它发出的所有指令都必须被截留和模拟。要完成这个工作,可以使用Qemu解决方案。Qemu是一个处理器模拟器,提供了多种解决方案与设备通信,如模拟磁盘设备。

  为了协助完全虚拟化中的驱动,通信必须经过驱动域中的驱动,而这会给性能带来负面的影响。不幸的是,驱动域并没有多余的内存资源来处理这些模拟驱动引起的负载,这是由于驱动域中使用了一种叫做“影子页表(shadow pages)”的特殊技术。

  驱动属性
  
  在Xen虚拟化环境下,驱动的属性取决于你所使用的虚拟化技术。因此,有些操作可能在完全虚拟化中可以进行,而在准虚拟化环境下不能。有些问题可能在某种环境中存在,而在另一种环境中没有。在下面的分段中,你将了解到在特定虚拟化环境下设备类型及其属性的相关重要信息。

  块设备:通过准虚拟化处理块设备时,你会在DomainU中以xvd(Xen虚拟磁盘)设备的形式看见它们。第一个准虚拟化块设备是xvda,第二个是xvdb,依此类推。

  通常,虚拟机中的操作系统会把这些设备看作SCSI磁盘设备。在虚拟机中,你最多可以有16个这样的设备。虚拟机中的这些xvd设备会与Domain0中的xenblk模块进行对话,虚拟机本身使用了blkbk与blktap内核模块。

  如果你使用的完全虚拟化DomainU没有使用准虚拟化驱动,那么在这些虚拟机中会看到“正常的”块设备。也就是说,如果是虚拟的Linux,你会看见hda和hdb,与非虚拟机上一样。你应该意识到,你的选择要么是这个要么是那个。如果你的某些块设备是完全虚拟的,那么所有的块设备就都必须采用完全虚拟化。

  LAN设备:完全虚拟与准虚拟LAN设备的不同之处不如块设备那么明显。两种情况下你都最多只能有三个虚拟网络插件板(network board)。在准虚拟化环境下,netbk和netloop内核模块用于与Domain0中的xennet模块对话。网卡本身作为xennet网卡使用。使用完全虚拟化时,你可以在Realtek 8139、AMD PCnet32和NE2000 网络插件板之间进行选择。

  视频设备:至于视频板(video board),准虚拟与完全虚拟也是有区别的。一般来说,你是不会在意这个区别的,因为视频板对服务器性能没什么重要影响。使用准虚拟视频板时,它是作为帧缓冲设备使用的。在DomainU中,帧缓冲设备用于提供服务,在前端,该驱动与xenfb模块通信。模拟视频驱动在完全虚拟化环境中被看作Cirrus Logic或一般VESA显卡。

  准虚拟化设备驱动的好处

  在本文中,我们了解到了Xen环境下虚拟驱动使用的两种方法。即便是在完全虚拟化环境,某些设备的准虚拟化驱动使用也是有可能的。这通常会大大地提高设备性能,因为准虚拟设备驱动能识别自己被使用的虚拟化环境。

相关推荐