共享的虚拟化本地存储装置的制作方法

文档序号:11530720阅读:362来源:国知局
共享的虚拟化本地存储装置的制造方法

本公开涉及向计算设备提供虚拟化本地存储装置。



背景技术:

服务器(例如,机架安装的刀片式服务器)通常具有处理器、存储器、本地存储装置、以及板上网络接口。本地存储磁盘可以是服务器的物理足迹的重要部分,特别是在独立磁盘冗余阵列(raid)设备需要多个磁盘的情况下。网络连接存储装置很昂贵,这增大了每个服务器的成本并且复杂化了服务器管理员进行的配置。

附图说明

图1是根据示例实施例的被配置为向多个主机提供对于数据存储装置的虚拟化本地访问的系统的框图。

图2是根据示例实施例的被配置为向多个服务器提供对于数据存储装置的本地访问的适配器的框图。

图3是根据示例实施例的共享的虚拟化本地存储系统的简化框图。

图4是根据示例实施例的共享的虚拟化本地存储系统中的各种数据队列的简化框图。

图5是根据示例实施例的输入/输出(i/o)请求通过适配器从主机传递至存储装置控制器的框图。

图6是根据示例实施例的描绘适配器向主机提供虚拟化本地存储装置的操作的流程图。

具体实施方式

综述

本文提出了用于嵌入式处理器的使用虚拟存储装置控制器处理来自主机的i/o请求的装置和方法。嵌入式处理器将第一虚拟存储装置控制器与第一主机相关联。第一虚拟存储装置控制器使用第一传输协议。嵌入式处理器使用第一网络传输协议从第一虚拟存储装置控制器接收去往存储设备的第一i/o请求。嵌入式处理器确定存储设备所使用的第二传输协议,并且将第一i/o请求从根据第一传输协议的格式转换成根据第二传输协议的格式。嵌入式处理器使用第二传输协议将第一i/o请求传送至存储设备。

示例实施例

本文提出的示例提出在服务器和共享的虚拟化存储系统之间设置接口。在具体示例中,虚拟接口卡(vic)被用于在pcie总线上将虚拟的外围组件快速互连(pcie)小型计算机系统接口(scsi)存储装置控制器提供给服务器。vic固件使用针对scsi设备的标准输入/输出(i/o)机制与服务器操作系统进行交互。发布至虚拟scsi控制器的i/o请求被引导至共享驱动的为服务器保留的部分。

虚拟pcie存储装置控制器可以同时存在于多个服务器的pcie总线上。每个服务器将一个或多个共享驱动的为该服务器保留的部分视作它自己的专用本地驱动,并且相应地发布i/o请求。i/o请求由vic固件管理,并且当物理i/o完成时i/o完成被递送至发布服务器。在下文中,术语“服务器”和“主机”可以被可交换地用于描述匿名计算节点,该匿名计算节点具有可能不维持持续状态的处理器和存储器。缺乏持续状态允许针对故障进行简单替换或者随着处理器技术的改进进行升级。

参考图1,系统100被示出为包括通过vic110与多个存储设备通信的多个主机。vic110包括一个或多个嵌入式中央处理单元(ecpu),以通过发送和接收来自主机120、130、140、和150的i/o请求来处理ecpu固件112。一个ecpu可以被指定作为管理cpu(mcpu)来处理mcpu固件114,mcpu固件114包括使得vic110能够与一个或多个不同类型的存储设备通信的一个或多个存储装置驱动器116。主机120上的操作系统包括文件系统122、scsi层124、和scsi虚拟网络接口卡(vnic)126。主机120与具有逻辑单元号(lun)的存储设备128通信,该存储设备128作为通过scsivnic126访问的本地存储装置。类似地,主机130、140、和150包括文件系统132、142、和152、scsi层134、144、和154、以及scsivnic136、146、和156,以分别与存储设备138、148、和158通信。在下文中,术语scsivnic和snic被可交换地用于指代主机用来将i/o请求定向到一个或多个存储设备的接口。

存储装置控制器160控制存储装置驱动162和164,并且通过存储装置驱动器116来向vic110提供对于存储装置的访问。类似地,存储装置控制器170控制驱动172和174。在一个示例中,驱动162、164、172、和/或174中的一个或多个可以是由存储装置控制器160和/或存储装置控制器170定义的虚拟驱动。在另一示例中,存储装置驱动可以包括独立磁盘冗余阵列(raid)设备。在又一示例中,存储装置控制器160以及驱动162和164可以形成以下系统中的一个系统:网络连接存储(nas)系统、直接连接存储(das)系统、光纤通道(fc)存储区域网(san)、互联网scsi(iscsi)san、或串行连接scsi(sas)系统。

图1示出了具有一定数量的组件(例如,4个主机、2个存储装置控制器等)的系统100,但其他示例可以包括更多或更少的主机、存储装置控制器、存储装置驱动或逻辑驱动。此外,ecpu固件112可以在多个ecpu单元上同时运行。在一个示例中,每个主机被分配给运行ecpu固件112的特定ecpu单元,以使得该主机能够访问其相应的存储装置驱动。

现在参考图2,简化框图示出了根据一个示例实施例的用于实现系统100的组件。主机120、130、140、和150被耦合至vic110,vic110除了其他可能的组件以外包括用于处理与使得服务器能够访问共享的虚拟化本地存储装置相关的指令的一个或多个处理器220、以及用于存储各种数据和软件指令(例如,ecpu固件112、mcpu固件114等)的存储器230。pcie根端口桥(rootportbridge)240将流量从处理器总线桥接至pcie总线。在一个示例中,pcie根端口桥240包括使得vic110能够与存储装置控制器160通信以访问一个或多个磁盘驱动250的根复合体(rc)240。vic110还包括网络接口单元260,以使能针对所有主机120、130、140、和150的网络通信。

存储器230可以包括只读存储器(rom)、随机访问存储器(ram)、磁盘存储介质设备、光存储介质设备、闪速存储设备、电的、光的、或其他物理的或有形的(例如,非暂态)存储器存储设备。处理器220例如是执行用于实现本文所描述的处理的指令的微处理器或微控制器。因此,存储器230通常可以包括利用软件编码的一个或多个有形(非暂态)计算机可读存储介质(例如,存储器设备),该软件包括计算机可执行指令并且当软件(由处理器220)执行时,可操作来执行本文所描述的操作。

现在参考图3,示出了通过特定的ecpu单元连接主机和存储装置控制器的简化框图。vic110包括mcpu310、和ecpu312、314、316、和318,这些ecpu分别被配置为处理来自主机320、330、340、和350的i/o请求。在一个示例中,主机和ecpu单元之间存在一对一的对应关系,但在其他示例中,可以将不止一个主机分配给ecpu单元。每个主机通过snic与vic通信,snic允许主机使用共同的scsi驱动器来发布i/o请求。每个ecpu和mcpu可以将消息帧地址提交至存储装置控制器160的请求队列,以向前传递来自主机的i/o请求。

在一个示例中,所有snic被绑定至运行存储装置驱动器的mcpu。这种选择可以被用于改善(bringup)snic主机驱动器和/或了解性能问题。在这个示例中,主机通过请求来自mcpu的解析来请求i/o操作,mcpu准备针对内核异步i/o的scsi请求。mcpu设置直接存储器访问(dma)至主机i/o缓冲器(例如,分散收集元件(scattergatherelement)(sge))的映射,并且执行异步i/o接口。i/o操作完成路径包括完成解析、解析主机响应、对主机dma缓冲器进行去映射(unmapping)、以及将该完成提交至主机。

在另一示例中,snic跨所有ecpu分布,并且每个ecpu可以将请求提交至存储装置控制器队列。在这个示例中,针对存储装置控制器队列的消息帧空间可以在提交i/o请求的ecpu之间等分。存储装置控制器160可以支持多个响应队列,并且响应队列可以基于逐个i/o被指定。针对每个ecpu的i/o请求路径包括接收来自请求解析的主机snic的请求、准备存储装置控制器消息帧、以及将消息帧地址提交至存储装置控制器请求队列。在另一示例中,ecpu可能不能直接向存储装置控制器队列提交,并且要求mcpu将消息帧地址提交至针对ecpu的存储装置控制器队列。存储装置控制器在完成i/o请求时向mcpu发送中断,该中断根据消息信号中断(msi)矢量被转发至适当的ecpu。这可以避免mcpu被迫调用中断服务例程(isr)来处理针对i/o完成的所有中断。针对每个ecpu的i/o完成路径包括处理针对i/o完成的中断、完成解析、准备主机响应、以及将i/o完成提交至主机。

现在参考图4,示出了i/o请求中所涉及的队列的框图。16个主机(h0-h15)中的每个主机具有写队列(wq)410-425中的一个写队列,用在来自该主机/snic的i/o请求中。存在与每个snic相关联的一个wq,并且针对每个主机有一个snic。来自wq410、414、418、和422的i/o请求被发送至ecpu312,在ecpu312处这些i/o请求被分别存储在请求队列(rq)430、431、432、和433中。来自wq411、415、419、和423的i/o请求被发送至ecpu314,在ecpu314处这些i/o请求被分别存储在请求队列(rq)434、435、436、和437中。来自wq412、416、420、和424的i/o请求被发送至ecpu316,在ecpu316处这些i/o请求被分别存储在请求队列(rq)438、439、440、和441中。来自wq413、417、421、和425的i/o请求被发送至ecpu318,在ecpu318处这些i/o请求被分别存储在请求队列(rq)442、443、444、和445中。在另一示例中,每个ecpu只维护用于处理来自多个snic的i/o请求的单个rq。在这种情况下,ecpu将使用针对每个snic的唯一标识符,从而使得在i/o操作完成时,ecpu能够识别i/o完成应该被提交至的主机cq。

每个ecpu能够将i/o请求提交至组合存储装置控制器rq450。在一个示例中,存储装置rq450的地址空间在四个ecpu312、314、316、和318之间等分。在存储装置控制器完成了i/o请求后,它将已完成的i/o结果输入到属于输入i/o请求的ecpu的完成队列(cq)460、462、464、或466中。然后,ecpu将已完成的i/o请求返回至主机cq(未示出)中的适当的主机。

在一个示例中,存储装置控制器支持最多1024个请求消息帧(mf)。1024个mf将在4个ecpu之间等分。mf可以被无序提交,然而存储装置控制器可以要求针对所有1024个mf的存储器在物理上是连续的。当初始化ecpu时,mcpu可以分配连续的存储器块,并且将区块(chunk)分发至所有四个ecpu。这使得ecpu能够在没有mcpu介入的情况下提交i/o请求。存储装置控制器完成i/o请求之后的完成中断还被分发给提交i/o请求的相应ecpu。ecpu可以使用原子多字写入事务(atomicmulti-wordwritetransaction)直接将i/o请求提交至存储装置rq450。因为这些操作是原子操作,所以ecpu之间不需要同步。

现在参考图5,示出了单个i/o请求的框图。wq410中的i/o请求510包括头部512、任何需要的标记514、指令描述块(cdb)516、以及分散收集列表(sgl)518。在进入ecpurq430时,i/o请求510由分类器/重写引擎/网络块520进行处理,以变成i/o请求530。i/o请求530包括头部532、任何需要的标记534、cdb536、和具有嵌入在分散收集元素(sge)中的主机标识符的sgl538。在将i/o请求提交至存储装置rq450时,ecpu按照针对适当snic/主机的lun掩码信息来添加lun标识符540。当i/o请求完成时,存储装置控制器160将结果返回至ecpu中的cq460,并且ecpu将i/o完成引导向适当的主机。

在一个示例中,由重写引擎520执行的i/o请求转换步骤修改sgl中的主机地址的最后四位以具有主机标识符。这允许去往/来自主机存储器的直接存储器访问(dma)。此外,i/o请求转换步骤还可以缓冲针对感测数据的地址,从而使得存储装置控制器可以在没有ecpu介入的情况下针对感测数据对主机存储器执行dma操作。另外,i/o请求转换步骤可以按照针对给定snic的lun掩码信息来修改lun标识符。在一个示例中,i/o请求转换步骤由ecpu上的软件模块执行。在另一示例中,定制硬件块可以被用于执行i/o请求转换步骤。

在另一示例中,ecpu可以包括嵌入在sgl538中的预定数目的sge,并且任何另外的sge进入与存储装置rq450分离的扩展sgl缓冲阵列。

现在参考图6,示出了ecpu在处理i/o请求时所执行的操作的示例过程600。在步骤610中,ecpu将snic与主机相关联,该主机将使用第一传输协议。在步骤620中,ecpu使用snic从主机接收去往存储设备的i/o请求。在步骤630中,ecpu确定存储设备所使用的第二传输协议。ecpu在步骤640中将i/o请求转换至第二传输协议,并且在步骤650中使用第二传输协议将i/o请求传送至存储设备。

概括来说,本文提出的技术提供了通过虚拟scsi控制器将共享的本地存储装置提供给多个服务器中的每个服务器。共享存储装置的部分对于每个服务器来说可以看作直接连接至该服务器的专用本地驱动。服务器使用已知的scsi直接连接存储方法来管理存储装置。各服务器的成本与传统的本地存储装置控制器选择相比大幅降低,同时还保留了本地存储装置驱动的许多优点。此外,这允许服务器使用复杂和/或昂贵的存储系统(例如,固态驱动、raid设备),从而减少了各服务器的存储需求。服务器管理员使用常用模型来管理虚拟化本地存储装置并且不要求配置或管理网络存储装置。这允许在不牵涉服务器的情况下在虚拟化本地存储装置上插入通常与高端网络存储装置(例如,raid、只读、写时拷贝、重复删除、快照、备份等等)相关联的存储设备。

在一个示例中,本文提出的技术提供了用于ecpu的使用虚拟存储装置控制器处理来自主机的i/o请求的方法。ecpu将第一虚拟存储装置控制器与第一主机相关联。第一虚拟存储装置控制器使用第一传输协议。ecpu使用第一网络传输协议从第一虚拟存储装置控制器接收去往存储设备的第一i/o请求。ecpu确定存储设备所使用的第二传输协议,并且将第一i/o请求从根据第一传输协议的格式转换成根据第二传输协议的格式。ecpu使用第二传输协议将第一i/o请求传送至存储设备。

在另一示例中,提供了一种装置,该装置包括与一个或多个主机相关联的一个或多个虚拟存储装置控制器。虚拟存储装置控制器使用第一传输协议。该装置还包括与一个或多个存储设备通信的一个或多个存储装置驱动器以及一个或多个处理器。处理器从第一虚拟存储装置控制器接收去往第一存储设备的第一i/o请求。处理器确定存储装置驱动器用来与第一存储设备通信的第二传输协议。处理器将第一i/o请求从根据第一传输协议的格式转换成根据第二传输协议的格式,并且经由存储装置驱动器使用第二传输协议将第一i/o请求传送至第一存储设备。

在又一示例中,提供了一种系统,该系统包括一个或多个主机设备、一个或多个存储设备、以及虚拟接口卡。虚拟接口卡将第一虚拟存储装置控制器与第一主机相关联。第一虚拟存储装置控制器使用第一传输协议。虚拟接口卡使用第一传输协议从第一虚拟存储装置控制器接收去往第一存储设备的第一i/o请求。虚拟接口卡确定第一存储设备所使用的第二传输协议,并且将第一i/o请求从根据第一传输协议的格式转换成根据第二传输协议的格式。虚拟接口卡使用第二传输协议将第一i/o请求传送至第一存储设备。

上文的描述只用作举例的目的。在不背离本文提出的概念的范围和权利要求的等同物的范围的情况下,可以对其进行各种修改和结构改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1