虚拟化存储分配方法

xiaoxiao2020-7-22  6

专利名称:虚拟化存储分配方法
技术领域
目前所公开的主题涉及计算领域,尤其涉及计算机虚拟化,虽然虚拟化只是示例性且非限制性领域。背景虚拟机系统可遭受关于输入/输出(I/O)功能的差性能,因为在完全虚拟化系统中,每个I/O操作通常是由系统管理程序(hypervisor)、主操作系统或由机器上执行的不同的虚拟机间接处理的,从而增加了执行I/O功能的代价。缓解这些性能问题的一种方式是通过允许虚拟机直接控制系统中的某些物理硬件资源。然而,提供这种直接控制可具有致使虚拟机不完全被虚拟化的效果,而且与虚拟化相关联的许多特征(保存、迁移、快照等)可变得难以完成。解决这些I/O性能问题的另一种方式是创建到I/O设备的多条路径,其中一条路径可直接行进到硬件,另一条路径可经另一虚拟机间接地行进到硬件。当希望完全封装虚拟机的状态使得它能够被保存或迁移时,直接路径可被拆毁且可使用间接路径。与创建多条路径有关的一个问题是通常难以设置第二路径而不将设备的控制给于第二路径作为设置过程的一部分。如果I/O设备用于分页代码或数据且对分页设备的控制在分页设备完全可操作之前被传递到第二路径,则分页可停止并使得系统崩溃。因此,需要其他技术来解决上文所描述的问题。概述本文揭示了用于在虚拟机分区中构建设备驱动器栈的各种方法和系统,该虚拟机分区物理上不控制由所述栈所表示的设备。在一实施例中,可实例化用于I/O设备的辅助接口和相关联的驱动器。可请求来自I/O虚拟化层的信息,该信息描述相关联的驱动器可控制的设备。多路径重定向层可提供到包括用于该I/O设备的驱动器的现有栈的句柄。该现有栈然后可用于与设备通信并允许创建包括表示该设备和用于该设备的新的驱动器的对象的新栈。多通路重定向层然后可打开到新栈的句柄并通知设备虚拟化层,设备虚拟化层然后可向现有设备接口发送将对设备的控制让于新创建的接口的请求。设备现在可由新接口控制,且I/O可经新的驱动器和接口被重定向到设备。除前述的之外,在构成本发明的一部分的权利要求书、附图,以及文本中描述了其他方面。本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。应该注意,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些代表性的概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述当结合附图阅读时,可以更好地了解前面的摘要,以及下面的详细描述。为了说明本发明,示出了本发明的各个方面。然而,本发明不限于所示出的特定方面。包括了下面的图形图Ia示出了具有包括多个虚拟处理器以及对应的客操作系统的多个虚拟机的虚拟机环境;虚拟机由可包括调度器和其他组件的虚拟化层来维护,其中虚拟化层虚拟化多个虚拟机的硬件;图Ib示出了表示计算机系统中用于虚拟化环境的硬件和软件体系结构的逻辑分层的框图;图Ic描绘了其中可实现本发明的各方面的示例计算机系统;图2示出了示例性虚拟化计算系统;图3示出了替换虚拟化计算系统;图4描绘了示出用于实现本发明的过程的示例性系统框图;图5描绘了示出用于实现本发明的过程的示例性系统框图;图6描绘了示出用于实现本发明的过程的示例性系统框图;图7描绘了示出用于实现本发明的过程的示例性系统框图;图8描绘了示出用于实现本发明的过程的示例性系统框图;图9描绘了示出用于实现本发明的过程的示例性系统框图;

图10描绘了示出用于实现本发明的过程的示例性系统框图;图11示出用于在虚拟机中构造设备驱动器栈的操作过程的示例,该虚拟机不控制与栈相关联的设备;图12示出用于在虚拟机中构造设备驱动器栈的操作过程的示例,该虚拟机不控制与栈相关联的设备;图13示出用于创建到用于在虚拟机环境中分页代码或数据的I/O设备的多条路径的操作过程的示例;图14示出用于创建到用于在虚拟机环境中分页代码或数据的I/O设备的多条路径的操作过程的示例;图15示出了承载参考以上图1-10讨论的计算机可执行指令的计算机可读介质。详细描述虚拟机概述在下面的描述和图形中阐述某些具体细节,以提供对本发明的各实施例的全面的理解。在下面的公开中没有阐述常常与计算和软件技术相关联的某些公知的细节,以避免不必要地使本发明的各实施例模糊。进一步地,那些相关领域普通技术人员将理解,他们可以在没有下面所描述的细节中的一个或多个的情况下实施本发明的其他实施例。最后,尽管在下面的公开中参考步骤和序列描述了各种方法,但是,如此的描述用于提供本发明的各实施例的清楚的实现,且步骤和步骤的序列不应该理解为实施本发明所必需的。应该理解,此处所描述的各种技术可以结合硬件或软件或,在适当的情况下,结合两者的组合来实现。因此,本发明的方法和装置,或其某些方面或部分,也可以以在有形的介质(如软盘、CD-ROM、硬盘驱动器,或任何其他机器可读的存储介质)中实现的程序代码 (即,指令)的形式来实现,其中当程序代码被加载到诸如计算机之类的机器中并由它们执行时,机器变为用于实施该发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地以高级别过程或面向对象编程语言来实现,以与计算机系统进行通信。然而,若有需要,程序也可以以以汇编或机器语言来实现。在任一情况下,语言都可以是编译的或解释的语言,并与硬件实现相结合。利用虚拟机,单个物理机器可支持多个客操作系统,每个客操作系统运行于其自己的、底层物理机器的完整的虚拟实例上。客操作系统(OS)可以是一个OS的单个版本的实例、同一 OS的不同发行版本、或完全不同的OS。称为虚拟机监控程序(VMM)或系统管理程序的瘦软件层可创建并控制虚拟机和其他虚拟子系统。VMM也可完全控制物理机器并为每个客OS提供对CPU、存储器、存储空间和I/O带宽的资源保证。图Ia示出了具有包括多个虚拟处理器110、112、114、116以及对应的客操作系统 130、132的多个虚拟机120、121的虚拟机环境100。虚拟机120、121由虚拟化层140来维护,该虚拟化层140可以包括调度器142及其他组件(未示出),其中虚拟化层140为多个虚拟机120、121虚拟化硬件150。多个虚拟处理器110、112、114、116可以是底层硬件物理处理器160、162的虚拟对应物。图Ib是表示计算机系统中的虚拟化环境的硬件和软件体系结构的逻辑层的示图。在图Ib中,虚拟化程序180直接或间接地在物理硬件体系结构182上运行。虚拟化程序180可以是(a)与主机操作系统并排运行的虚拟机监控程序,(b)具有系统管理程序组件的主操作系统,所述系统管理程序组件执行虚拟化,(c)硬件,或(d)微码。虚拟化程序也可以是与任何操作系统分开地运行的系统管理程序。换言之,系统管理程序虚拟化程序不必作为任何操作系统的一部分来运行,也不必与任何操作系统一起运行。管理程序虚拟化程序相反可在所有操作系统“之下”运行,包括“根分区”。虚拟化程序180虚拟化客硬件体系结构178 (被示为虚线以示出该组件是“分区”或“虚拟机”的事实),即,实际上并不存在而是由虚拟化程序180虚拟化的硬件。客操作系统176在客硬件体系结构178上执行,而软件应用174可以在客操作系统176上运行。在图Ib的虚拟化操作环境中,软件应用174 可以在计算机系统中运行,即使软件应用174被设计成在一般与主操作系统和硬件体系结构182不兼容的操作系统上运行。虚拟机通常包含整个操作系统和一组应用,它们一起构成许多过程,其整体可以在虚拟机的上下文中被称为“工作负载”或“过程”。在本发明中,术语“过程”和“工作负载”在虚拟机上下文中可被互换地使用,并且本领域技术人员可以容易地理解,“过程”可指代包括可在虚拟机中被实例化的所有系统和应用的多个过程。接下来,图2示出了虚拟化计算系统,包括直接地在物理计算机硬件202之上运行的主操作系统(主OS)软件层204,其中主OS 204通过暴露与分区A 208和B 210的接口以分别供操作系统A 212和B 214使用,来提供对物理计算机硬件202的资源的访问。这允许主OS 204不被运行在它上面的操作系统层212和214注意。再次地,为了执行虚拟化,主OS 204可以是专门设计的带有本机虚拟化能力的操作系统,或者,可另选地,它可以是带有用于执行虚拟化的结合的系统管理程序组件(未示出)的标准操作系统。再次参考图2,在主OS 204的上面有两个分区,分区A 208 (其可以是例如,虚拟化的htel 386处理器),以及分区B 210(其可以是例如,Motorola 680X0系列处理器中的一种处理器的虚拟化版本)。在每一分区208和210内分别有客操作系统(客OS) A 212和 B 214。在客OS A 212上运行的是两个应用,应用Al 216和应用A2 218,而在客OS B 214 的上运行的是应用Bl 220。对于图2,值得注意的是,分区A 208和分区B 214(以虚线示出)是可以仅仅作为软件构造而存在的虚拟化计算机硬件表示。由于专门虚拟化软件的执行,使得它们可能被实现,专门虚拟化软件不仅分别向客OS A 212和客OS B 214呈现分区A 208和分区B 210,而且还执行客OS A 212和客OS B 214与真实物理计算机硬件202间接地进行交互所需的所有软件步骤。图3示出了其中虚拟化由与主操作系统204—起运行的虚拟机监控程序(VMM) 204 执行的替换虚拟化计算系统。在某些情况下,VMM 204可以是在主操作系统204上运行并仅通过主操作系统204来与计算机硬件202交互的应用。在其他情况下,诸如图3所示,VMM 204可替代地包括部分独立的软件系统,其在某些层上经由主操作系统204来间接地与计算机硬件202交互,但在其他层上VMM 204直接与计算机硬件202交互(类似于主操作系统直接与计算机硬件交互的方式)。并且在又一些情况下,VMM 204可包括完全独立的软件系统,其在所有层上直接与计算机硬件202交互(类似于主操作系统直接与计算机硬件交互的方式)而不利用主操作系统204(但仍旧与主操作系统204交互以协调对计算机硬件 202的使用并避免冲突等)。用于实现上文所提及的分区的所有这些方案只是示例性实现,且此处没有任何东西应该解释为将本公开限制为任何特定虚拟化方面。虚拟化存储分配I/O虚拟化(IOV)指的是单个物理I/O设备要由一个以上虚拟机或在系统管理程序(或VMM等)和虚拟机之间共享的能力。虚拟机系统可遭受关于I/O虚拟化的差性能。 这是因为使虚拟化有用的虚拟化的特征(例如与物理硬件隔离)可在虚拟机中运行工作负载时具有负面效应。在完全虚拟化系统中,每个I/O操作通常间接地由系统管理程序、或者主操作系统、或者由运行在机器上的不同的虚拟机来处理。缓解差I/O性能的一种方式可以是允许虚拟机直接控制系统中的某些物理硬件。然而,允许直接控制可具有致使虚拟机不被完全虚拟化的效果,在这种情况下与虚拟化相关联的许多特征(例如保存、迁移、快照等)可变得难以完成。共同转让的美国专利申请号[代理人档案号MSFT_5556/316010. 01]描述了用于解决上述问题的技术。例如,可创建到I/O设备的多条路径。一条路径可直接行进到硬件, 另一条路径可经另一虚拟机间接地行进到硬件。当希望完全封装虚拟机的状态使得它能够被保存或迁移时,直接路径可被拆毁且可使用间接路径。间接路径固有地是可虚拟化的。然而,在构建这两条路径时可产生问题,特别是如果I/O设备被用于分页代码或数据的情况。通常难以设置第二路径而不将设备的控制给于第二路径作为设置过程的一部分。如果在分页设备完全可操作之前将分页设备的控制给于第二路径,则可发生差错且分页可停止。在许多情况下,如果分页停止,则系统可崩溃。参考图4,示出的是纯“合成”存储子系统的框图。合成栈是由通常为在虚拟机中使用而设计的驱动器组成的I/O栈。根据具体系统,可使用其他术语来指代合成栈。例如, 在替换系统中用于类似的I/O栈的术语是“类虚拟化”。参考图4,图示出两个分区。一个分区是具有对盘460的直接物理访问的特权分区410。另一个分区是可请求对盘460的访问的非特权分区470。例如,文件系统475可请求对文件的访问,要求合成SCSI总线驱动器480与盘驱动器485通信,盘驱动器随后在VM总线(虚拟机总线)465上通信。存储虚拟化服务提供者420可提供虚拟化的存储服务。存储虚拟化服务提供者420可与盘驱动器 430通信以访问物理SCSI总线设备驱动器440。SCSI总线设备驱动器440可提供对SCSI 控制器450并最终对驻留在盘460上的文件的访问(通常发生在块设备层)。于是,指示为特权分区410的一个虚拟机具有对是SCSI控制器450的物理存储设备的控制。指示为非特权分区470的另一虚拟机可寻求对SCSI控制器450的访问。现在参考图5,示出的是构建了到盘460的第二路径之后的示例性结束状态。非特权分区470经辅助SCSI控制器520具有对盘460的物理控制。该访问是由包括物理SCSI 总线设备驱动器510和盘驱动器505的辅助栈提供的。提供第一路径的合成栈包括盘驱动器485和合成SCSI总线驱动器480,合成SCSI总线驱动器随后在VM总线465上通信。存储虚拟化服务提供者420可提供虚拟化的存储服务。存储虚拟化服务提供者420可与盘驱动器430通信以访问物理SCSI总线设备驱动器440。SCSI总线设备驱动器440可提供对 SCSI控制器450的访问,SCSI控制器提供对盘460的主接口。多路径重定向层500提供在非特权分区470中,并管理和控制对两个栈的访问。可引起的一个问题是为了在非特权分区中在操作系统实例内的任一条路径中构建盘驱动器层,可要求对存储盘460的控制。构建两个设备驱动器栈所需的过程将通常要求从作为引导设备的盘进行读取,并通过分页代码和数据使盘活动生效。尽管这可是可能的,但是在大多数配置中,SCSI控制器不能从其主和辅助接口两者同时控制盘。本领域的技术人员将认识到将当前公开的技术应用于SCSI设备是示例性的,且所公开的方法和系统可应用于诸如但不限于,串行附加SCSI (SAS)、互联网SCSI (iSCSI)以及光纤通道等其他 I/O设备。在各实施例中,此处公开的是用于构造第二 I/O路径或栈的过程。尽管下文将描述以合成I/O栈为开始并构建物理栈的过程,但本领域的技术人员将认识到可使用类似的过程来以合成I/O栈为开始并构建物理栈。在某些实施例中,可要求SCSI控制器创建对其自己的辅助接口。某些设备能够执行此类操作,特别是与外围组件互联(PCI)专门兴趣组(SIG)的单根(SR) I/O虚拟化(IOV) 规范兼容的那些设备。参考图6,提供了可管理对虚拟机的资源分配以及隔离分配给虚拟机的资源不被其他虚拟机访问的虚拟存储管理器600。虚拟存储管理器600可经其物理SCSI 总线设备驱动器440向SCSI控制器450发送消息。SCSI控制器450然后可创建辅助SCSI 控制器接口 520。如上所述,本发明考虑了将所公开的方法应用于除了 SCSI控制器之外的各种存储控制器。某些控制器可以多种方式连接到存储介质,例如以存储区域网络(SAN) 的方式,使得多个控制器而不是单个SR-IOV兼容的控制器可被使用。参考图7,示出的是用于设置第二 I/O栈的进一步的示例性过程。存储设备驱动器 700可被设置用于辅助控制器接口 520。使用合成存储栈710,可对引导设备搜索与设备驱动器有关的文件。非特权分区470中的SCSI总线设备驱动器700现在可创建表示盘的子设备。然而,非特权分区470当前不拥有特权分区410的控制下的盘460。结果,用于创建这一部分栈的常规的方法可能无效,因为设备不能将I/O发送到盘以找到其特性。参考图8,SCSI总线设备驱动器700可向多路径重定向层500发送对关于SCSI总线设备驱动器700可最终拥有的盘的信息的请求。多路径重定向层500然后可用到现有盘驱动器485的句柄来响应。操作系统I/O管理器可管理应用和设备驱动器提供的接口之间的通信。I/O管理器还可包括即插即用管理器,用于管理I/O功能和识别设备何时被添加到系统。参考图9, 非特权分区470中的SCSI总线驱动器700可创建表示盘460的对象并将该对象报告给即插即用管理器,即插即用管理器可随后设置用于盘460的驱动器900。通常,在没有SCSI控制器接口 520发送I/O到盘460的情况下,驱动器900不能被设置。在该情况下,驱动器900 可被设置,因为使用到盘驱动器485的句柄将必要的I/O向下重定向到合成存储栈910,该句柄是由多路径重定向层500提供给SCSI控制器接口 520的。多路径重定向层500可然后打开到新的盘对象900及其相关联的驱动器的句柄。参考图10,多路径重定向层500可向虚拟存储管理器600发送消息。虚拟存储管理器600可向SCSI总线设备驱动器440发送对SCSI控制器的主接口 450的消息。SCSI控制器的主接口 450然后可将对盘460的控制让于SCSI控制器的辅助接口 520,如所示。此时,多路径重定向层500可引导I/O从文件系统475向下通过非特权分区470中的物理栈 1000。目前所公开的各方面可被实现为系统、方法,驻留在计算机可读介质中的计算机可执行指令等等。如此,对任何特定系统、方法或计算机可读介质的任何公开不限于此,而是可延及实现所公开的主题的其他方式。图11和12描绘了用于在虚拟机中构造设备驱动器栈的操作过程的示例,该虚拟机不控制与栈相关联的设备。过程可包括操作1100、1110、1120、1130、1140、1150、1160、 1170和1180。参考图11,操作1100开始操作过程,在操作1110中,可发送实例化用于设备的辅助接口的请求。可配置1120用于辅助接口的物理驱动器。操作1130示出通过创建所述设备的表示来构造所述设备驱动器栈。操作1140示出为所述设备配置新驱动器,操作 1150示出将第二指示提供给所述设备驱动器栈。操作1160示出通过经所述替代栈与所述设备通信来获得用于构造所述设备驱动器栈的信息。操作1170示出经所述设备驱动器栈和辅助接口将I/O引导到所述设备。操作1180示出向用于所述设备的主接口发送消息以将对所述设备的控制让于所述辅助接口。结合图12继续,操作1200示出设备可任选地包括多个控制接口。操作1205示出该多个控制接口可任选地符合PCI SR-IOV规范。在一实施例中,设备驱动器栈可用于分页 I/O 1210,在操作1215,分页I/O可对于创建设备驱动器栈是必要的。操作1220示出在一个实施例中该设备是盘设备。在另一实施例中1225,该设备是网络接口适配器。在各实施例中,通过将I/O请求重定向到替代栈来发现1230设备的描述和特性。在操作1235,可经合成存储栈对引导设备搜索与用于设备的驱动器有关的文件。 在操作1240中,示出将对关于物理驱动器可拥有的设备的信息的请求发送到多路径重定向层。在一个实施例中,指示可以是句柄1245。在另一个实施例中,可发送1250到虚拟存储管理器的消息,该消息描述该指示。
图13和14描绘了用于创建到用于在虚拟机环境中分页代码或数据的I/O设备的多条路径的示例性操作过程。过程可包括操作1300、1302、1304、1306、1308、1310、1312和 1314。参考图13,操作1300开始操作过程,操作1302请求辅助接口的实例化以及配置用于 I/O设备的物理驱动器,其中I/O设备能够支持多个控制接口。操作1304示出从I/O虚拟化层接收到现有栈的指针,现有栈包括对所述I/O设备的现有驱动器,在操作1306中,可实例化表示所述设备的对象。操作1308示出经所述现有栈与所述I/O设备通信,以及配置用于该I/O设备的新驱动器。可提供1310到该对象和新驱动器的指针。操作1312示出向用于所述I/O设备的主接口发送消息以将对所述I/O设备的控制让于所述辅助接口。操作1314示出使用所述指针经新驱动器和辅助接口将I/O重定向到所述I/O设备。结合图14继续,在操作1402中,示出接收I/O设备的属性以及分页代码和数据。 操作1404示出在一个实施例中现有栈是物理栈。在另一实施例中,现有栈可以是合成栈 1406。上文所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。例如,按照图15,计算机可读介质可在其上存储用于在虚拟化I/O 环境中创建用于存储设备的替代I/O栈的计算机可执行指令,其中所述存储设备用于分页代码和数据,在利用存储设备的分页通过现有栈继续进行的同时,所述替代I/O栈被创建。 这种媒体可包括用于请求辅助接口的实例化以及配置用于存储设备的辅助物理驱动器的第一指令子集1510 ;用于接收到现有栈的句柄的第二指令子集1512 ;用于使用所述句柄标识所述现有栈并经所述现有栈与所述存储设备通信的第三指令子集1514 ;用于实例化用于所述存储设备的替代I/O栈的第四指令子集1516,该替代I/O栈包括表示所述存储设备的对象和用于所述存储设备的驱动器;用于报告到所述替代I/O栈的句柄的第五指令子集 1518 ;以及用于向所述存储设备的主接口发送消息以将对所述存储设备的控制让于所述辅助接口的第六指令子集1520。本领域技术人员可以理解,可以使用附加指令集来捕捉此处所公开的各其他方面,且根据本发明,三个目前所公开的指令子集可以在细节方面不同。例如,指令还可包括用于经替代I/O栈将I/O重定向到存储设备的指令15沈。指令还可包括支持存储设备是PCI SR-IOV兼容的实施例的指令1528,以及用于经现有栈对引导设备搜索与用于存储设备的驱动器有关的文件的指令。如上所述,本发明的各方面可以在经编程的计算机上执行。图Ic和下面讨论旨在提供其中实现本发明各方面的合适计算环境的简要描述。本领域技术人员可以理解,在某些实施例中,图Ic的计算机系统可以实现图Ia和Ib的各个方面。在这些示例实施例中, 服务器和客户机可包括图Ic中所描述的某些或全部组件,且在某些实施例中,服务器和客户机可以各自包括被配置成实例化本发明的特定方面的电路。在本公开中通篇使用的术语“电路”可包括专门硬件组件。在相同实施例或其他实施例中,电路可包括被配置成通过固件或开关执行功能的微处理器。在相同或其他示例实施例中,电路可包括一个或多个通用处理单元和/或多核处理单元等等,当体现可操作以执行功能的逻辑的软件指令被加载到存储器,例如,RAM和/或虚拟存储器中时,这些处理单元可以被配置。在其中电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。
参考图lc,计算系统可以包括计算机20或类似物,计算机20包括处理单元21、系统存储器22和将包括系统存储器在内的各种系统组件耦合至处理单元21的系统总线23。 系统总线23可以是若干类型的总线结构中的任何一种,包括使用各种总线体系结构中的任何一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器包括只读存储器(ROM) M和随机存取存储器(RAM) 25。基本输入/输出系统沈¢10 被存储在ROM 24 中,包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20 还可以包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移动磁盘四的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。 在某些示例实施例中,体现本发明的各方面的计算机可执行指令可以存储在ROM 24、硬盘 (未示出)、RAM 25、可移动磁盘四、光盘31,和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光驱动器30分别通过硬盘驱动器接口 32、磁盘驱动器接口 33, 以及光驱动器接口 34连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。虽然此处所描述的环境使用了硬盘、可移动磁盘四、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(RAM)、只读存储器(ROM)等等之类的可以存储可由计算机进行访问的数据的其他类型的计算机可读介质。可以有若干个程序模块存储在硬盘、磁盘四、光盘31、ROM 24,和/或RAM 25上, 包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。用户可以通过诸如键盘40和定点设备42之类的输入设备向计算机20中输入命令和信息。其他输入设备(未示出)可以包括麦克风、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口 46连接到处理单元21,但是,也可以通过其他接口,如并行端口、游戏端口、通用串行总线(USB)端口、来进行连接。显示器 47或其他类型的显示设备也可以通过诸如视频适配器48之类的接口,连接到系统总线23。 除了显示器47之外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。 图1的系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI 总线56的外部存储装置62。计算机20可使用至一个或多个远程计算机,诸如远程计算机49的逻辑连接在网络化环境中操作。远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常可包括上文参考计算机20所描述的许多或全部元件,虽然在图Ic中只示出了存储设备50。图1中所描绘的逻辑连接可包括局域网(LAN) 51和广域网 (WAN) 52。这样的联网环境在办公室、企业范围的计算机网络、内部网和因特网中是普遍现象。当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN 51。 当用于WAN网络环境中时,计算机20通常包括调制解调器M,或用于通过广域网52(如通过因特网)建立通信的其他装置。调制解调器M其可以是内置的或外置的,可通过串行端口接口 46连接到系统总线23。在网络化环境中,相对于计算机20所描述的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他装置。此外,尽管可以预想本发明的很多实施例特别适合于计算机系统,但是,本文中没有任何表述旨在将本公开限制于这样的实施例。前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施例。在这样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、 软件、固件或几乎其任何组合来实现。最后,尽管已经结合较佳方面按各附图所示描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。例如,在本文的各方面中,揭示了用于在虚拟机分区中构建设备驱动器栈的各种机制,该虚拟机分区物理上不控制由栈所表示的设备。然而,通过此处的示教还设想与这些所描述的方面等效的其他机制。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。
权利要求
1.一种用于在虚拟机(470)中构造设备驱动器栈(1000)的方法,该虚拟机不控制与该栈相关联的设备,所述方法包括请求对所述设备的辅助接口(520)的实例化,以及配置用于所述辅助接口的物理驱动器(700);接收用于所述设备的替代栈(910)的第一指示;通过创建所述设备的表示、配置用于所述设备的新栈(900)以及向所述设备驱动器栈提供第二指示,构造所述设备驱动器栈,其中用于构造所述设备驱动器栈的信息是通过经所述替代栈与所述设备通信而获得的;以及经所述设备驱动器栈和辅助接口将I/O引导到所述设备。
2.如权利要求1所述的方法,其特征在于,还包括向用于所述设备的主接口发送消息以将对所述设备的控制让于所述辅助接口。
3.如权利要求1所述的方法,其特征在于,所述设备包括多个控制接口。
4.如权利要求1所述的方法,其特征在于,所述设备驱动器栈用于分页I/O。
5.如权利要求1所述的设备,其特征在于,所述设备是存储设备。
6.如权利要求1所述的设备,其特征在于,所述设备是网络接口适配器。
7.如权利要求1所述的方法,其特征在于,所述设备的描述和特性是通过将I/O请求重定向到所述替代栈而获得的。
8.如权利要求1所述的方法,其特征在于,所述配置物理驱动器还包括经合成存储栈对引导设备搜索与所述物理驱动器有关的文件。
9.如权利要求1所述的方法,其特征在于,还包括向多路径重定向层发送对关于所述物理驱动器可拥有的设备的信息的请求。
10.如权利要求1所述的方法,其特征在于,所述第一和第二指示是句柄。
11.如权利要求1所述的方法,还包括向虚拟存储管理器发送描述所述第二指示的消肩、O
12.一种适用于在虚拟机环境中创建到用于分页代码或数据的I/O设备的多条路径的系统,包括至少一个处理器;以及通信地耦合到所述至少一个处理器的至少一个存储器,所述存储器存储了能够执行以下操作的计算机可执行指令请求辅助接口(520)的实例化,以及配置用于所述I/O的物理驱动器(700),其中所述 I/O设备能够支持多个控制接口 ;从I/O虚拟化层接收到现有栈(910)的指针,现有栈包括对所述I/O设备的现有驱动器;实例化表示所述设备的对象;经所述现有栈与所述I/O设备通信,以及配置用于所述I/O设备的新驱动器; 提供到所述对象和新驱动器的指针;向用于所述I/O设备的主接口(450)发送消息以将对所述I/O设备的控制让于所述辅助接口 ;使用所述指针经所述新驱动器和辅助接口将I/O重定向到所述I/O设备。
13.如权利要求13所述的系统,其特征在于,所述与所述I/O设备通信还包括接收所述 I/O设备的特性以及分页代码和数据。
14.一种计算机可读介质,所述计算机可读介质上存储了用于在虚拟化I/O环境中创建用于存储设备的替代I/O栈的计算机可执行指令,其中所述存储设备用于分页代码和数据,所述替代栈是在利用存储设备的分页通过现有栈继续进行的同时被创建的,所述计算机可执行指令包括用于以下的指令请求(1510)辅助接口的实例化以及配置用于存储设备的辅助物理驱动器;接收(1512)到现有栈的句柄;使用所述句柄标识所述现有栈,并经所述现有栈与所述存储设备通信(1514);实例化(1516)用于所述存储设备的替代I/O栈,所述替代I/O栈包括表示所述存储设备的对象和用于所述存储设备的驱动器;报告(1518)到所述替代I/O栈的句柄;向用于所述存储设备的主接口发送(1520)消息以将对所述存储设备的控制让于所述辅助接口。
15.如权利要求17所述的计算机可读存储介质,其特征在于,还包括经所述替代I/O栈将I/O重定向到所述存储设备。
全文摘要
揭示了用于在虚拟机分区中构建设备驱动器栈的各种方面,该虚拟机分区物理上不控制由所述栈所表示的设备。在一实施例中,可实例化用于I/O设备的辅助接口和驱动器。可请求来自I/O虚拟化层的信息,该信息描述相关联的驱动器可控制的设备。多路径重定向层可提供到包括用于该I/O设备的驱动器的现有栈的句柄。该现有栈然后可用于与设备通信并允许创建包括表示该设备和用于该设备的新的驱动器的新的栈。多通路重定向层然后可打开到新的栈的句柄并通知设备虚拟化层,设备虚拟化层然后可要求现有设备接口将对设备的控制让于新创建的接口。
文档编号G06F13/14GK102177509SQ200980140539
公开日2011年9月7日 申请日期2009年9月30日 优先权日2008年10月9日
发明者J·奥辛斯 申请人:微软公司

最新回复(0)