总线设备、计算机设备及实现物理主机云存储的方法与流程

文档序号:17474734发布日期:2019-04-20 06:02阅读:259来源:国知局
总线设备、计算机设备及实现物理主机云存储的方法与流程

本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种总线设备、计算机设备及实现物理主机云存储的方法。



背景技术:

弹性计算云(elasticcomputingcloud)是一种云计算服务,即基于虚拟化技术,将本地的物理机虚拟化成多个虚拟机(virtualmachine,vm)来使用,以此来提高资源的使用率,压缩成本。其中,基于弹性计算云技术虚拟出来的虚拟机的存储服务一般都是基于块设备(blockdevice)的存储服务,业界称之为弹性块存储服务(elasticblockstorage)。块存储服务,是基于块设备驱动(blockdevicedriver)提供的一种块级别的存储服务。当今,虚拟化技术因其弹性网络、弹性存储、快速交付等特点,已成为主流云主机服务的实现基础。

然而,虚拟机通常存在性能损失、特性损失、资源争抢、软硬件较难耦合等方面的弊端,而传统物理机由于先天技术缺陷而不具备虚拟机的弹性(如:弹性存储)。为此,有必要提出一种新的物理机,以将传统物理机的优势和传统虚拟机的优势进行融合。



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种总线设备、计算机设备及实现物理主机云存储的方法。

为实现上述目的,本说明书一个或多个实施例提供的技术方案如下:

在一个方面,提出的一种应用于物理主机的总线设备,该总线设备通过物理主机总线连接到物理机上,所述总线设备包括:

请求接收模块,用于接收由在物理主机的操作系统内安装的块设备驱动程序发送的i/o请求信息;

协议栈实现模块,用于实现存储协议栈并利用该存储协议栈建立所述总线设备与云存储系统之间的通信,并将所述请求接收模块获得的所述i/o请求信息按照通信协议向所述云存储系统发送。

在另一个方面,提出的一种计算机设备,包括:

物理主机,安装有操作系统,在所述操作系统内安装有块设备驱动程序;

用于通过物理机总线与所述物理主机连接的总线设备,所述总线设备包括请求接收模块和协议栈实现模块,所述请求接收模块用于接收由在物理主机的操作系统内安装的块设备驱动程序发送的i/o请求信息,所述协议栈实现模块用于实现存储协议栈并利用该存储协议栈建立所述总线设备与云存储系统之间的通信,并将所述请求接收模块获得的所述i/o请求信息按照通信协议向所述云存储系统发送。

在又一个方面,提出的一种实现物理主机云存储的方法,应用于通过物理机总线与所述物理主机连接的总线设备,所述方法包括:

接收由在物理主机的操作系统内安装的块设备驱动程序发送的i/o请求信息;

通过所述总线设备内实现的存储协议栈建立所述总线设备与云存储系统之间的通信;

将所述i/o请求信息按照通信协议向所述云存储系统发送,以使所述云存储系统执行相应的i/o操作。

通过以上技术方案可见,通过可以通过物理机总线连接到物理机上的总线设备,可以实现将物理机的i/o请求传递给后端的云存储系统,从而实现了物理主机的弹性存储,将传统物理机的优势(如:裸金属高性能、硬件高隔离、支持硬件虚拟化)和传统虚拟机的优势(如:弹性存储、快速交付)相互融合。

附图说明

图1示出了示例性实施例提供的一种计算机设备的架构;

图2示出了一示例性实施例提供的一种实现物理主机云存储的方法的流程图。

具体实施方式

当今,虚拟机因其具备诸如弹性网络、弹性存储、快速交付等弹性优势,而被应用到各种云部署场景中。然而,由于物理机本身具备诸如裸机高性能、硬件高隔离、支持硬件虚拟化等优势,在很多场景中依然需要基于物理机进行部署实现。因而出现了将物理机的优势和虚拟机的优势进行相互融合的需求。列举如下几种典型的需求场景:

1、在诸如公有云部署场景下,物理机普遍需要具备虚拟私有云(virtualprivatecloud,vpc)的网络接入、弹性存储、快速交付等弹性特点。另外,在高性能计算(highperformancecomputing,hpc)和异构计算等场景下,普遍需要支持远程直接数据存取(remotedirectmemoryaccess,rdma)网络,而rdma虚拟化技术目前并不成熟,rdma典型场景需要基于物理机进行部署。

2、在混合云场景中,需要公有云厂商提供具备弹性能力的裸机服务。

3、在互联网数据中心(idc)搬站场景下,要求裸机大规模部署docker(开源的应用容器引擎)。

4、诸如arm和power等非x86指令集cpu,其虚拟化适配的工作量巨大,需要快速高效地满足非x86指令集cpu的iaas(infrastructureasaservice,基础设施即服务)云部署。

5、传统虚拟化技术(如:intelvt-x和kvm等)在性能损失、特性损失、资源争抢、软硬件耦合等方面的问题亟待解决。

为了将虚拟机的弹性和物理机的裸机高性能、硬件高隔离、支持硬件虚拟化等优势相互融合,本申请实施例提出了一种具备虚拟机的弹性的物理机,该物理机可以保留传统物理机的优势。

如图1所示,为本申请实施例提出的一种计算机设备的架构,该计算机设备包括:物理主机、与物理主机通过总线(bus)相连接的总线设备(“总线设备”是一种通过接口电路连接到物理机的总线上的硬件,该硬件通常可即插即用)、云存储系统以及用于实现总线设备和云存储系统间的通信的网卡(networkinterfacecard,nic)。其中,物理主机的系统盘和数据盘都可以存在于该云存储系统上,由该云存储系统根据需求来分配,云存储是相对于本地存储,在数据健壮性上提供了更高的可用性和容错性。所述物理主机可包括处理器(cpu)、主板、内存、总线等硬件。该物理主机上可以安装有操作系统(operatingsystem,os),并且在该操作系统内安装块设备驱动程序(blockdevicedriver)。块设备(blockdevice)是i/o设备中的一类,其用于将信息存储在固定大小的块中,每个块都有自己的地址,还可以在设备的任意位置读取一定长度的数据。在虚拟机中,为了提高虚拟机内外的i/o性能,通常需要通过半虚拟化技术来虚拟出一个虚拟磁盘(通常被虚拟为一个pci设备),该虚拟出的pci设备通过安装在虚拟机内部的块设备驱动程序进行驱动。本申请实施例中,为了能够实现物理机的弹性存储,上述块设备驱动程序(blockdevicedriver)可以选用在虚拟机中使用的用于驱动虚拟块设备的虚拟块设备驱动程序,也就是说,将传统在虚拟机中使用的虚拟块设备驱动程序复用到物理机中。

作为一种示例,所述虚拟块设备驱动程序可以为virtio-blk驱动,通常,virtio可视为半虚拟化hypervisor中位于设备之上的抽象层。在相关技术中,virtio-blk作为一种半虚拟化驱动,可应用于在xen或kvm等虚拟化平台。以qemu-kvm架构的虚拟化平台为例,在虚拟机中安装的virtio-blk驱动也被称为前端(virtio-blkfrontend),而用于虚拟pci设备的qemu程序被称为后端(virtio-blkbackend),需要前后端配合来完成虚拟机内外的数据传输。在本申请实施例中,可以将前端程序复用到物理主机中,但是并不需要通过虚拟化技术虚拟出来一个pci设备,而是通过硬件方式实现一个后端来与前端程序配合。本实施例通过将在虚拟机中的virtio-blk驱动程序复用到物理主机上,从而可以降低开发新驱动程序所带来的成本,同时,通过硬件方式来实现一个后端,也可以保留物理机本身所具备的特点。关于所述块设备驱动程序,并不局限于传统应用于虚拟机中的虚拟块设备驱动,也可以是开发者根据自身需求自主开发出的驱动程序。

上述总线设备通过所述物理主机的总线与所述物理主机相连接。在本申请一实施例中,所述总线可为pcie(peripheralcomponentinterconnectexpress)总线,所述总线设备可为通过pcie总线连接到物理主机的主板上的pcie设备。通常,pcie总线上可存在若干pcie设备插槽,每个pcie设备插槽可以插入一个pcie设备。本申请实施例中,该pcie设备可以通过诸如:现场可编程门阵列(field-programmablegatearray,fpga)、特定用途集成电路(asic)、系统级芯片(systemonchip,soc)等硬件来实现。当然,其中提及的系统级芯片包括多核或单核soc。

在本申请实施例中,上述总线设备(如:pcie设备)可包括一个请求接收模块和一个用于实现存储协议栈(storagestack)的协议栈实现模块。其中,请求接收模块用于接收由在物理主机的操作系统内安装的块设备驱动程序发送的i/o请求信息。协议栈实现模块用于实现存储协议栈并利用该存储协议栈建立所述总线设备与云存储系统之间的通信,并将所述请求接收模块获得的所述i/o请求信息按照通信协议向所述云存储系统发送。在网络中,为了完成通信,通常需要使用多种协议(protocol),这些协议按照层次顺序组合在一起,就构成了存储协议栈(protocolstack)。存储协议栈形象的反映了一个网络中数据传输的过程:由上层协议到底层协议,再由底层协议到上层协议。上述存储协议栈可以由所述总线设备中的一个指定的处理单元(如:cpu、asic、fpga等)来实现。上述存储协议栈将来自于物理机上的块设备驱动程序的i/o请求按照一定的通信协议进行处理并发送给后端云存储系统。其中,假设物理机需要向云盘中写入特定的数据,则可以通过块设备驱动程序发送一个存储请求,一般地,存储请求可携带如下信息:待写入数据的内容、长度,用于存放该待写入数据的地址(如:扇区id等)等,存储协议栈可以根据物理机端传来的各种信息,按照一定的协议要求对这些信息进行处理,并将处理后得到的信息通过网络发送给后端的云存储系统,以使得云存储系统执行相应的处理动作。当然,文中提及的“i/o请求”包括将物理主机的数据存放到云存储空间的存储请求或从云存储空间读取物理主机所需数据的读取请求。

在一实施例中,为了能够在物理机中复用原本在虚拟机上使用的virtio-blk驱动,需要所述总线设备符合virtio的规范。其中,不同的virtio版本(如:virtiov0.95、virtiov1.0)对应于不同的virtio规范。

以pcie设备为例,可通过对pcie设备进行相应的配置以使pcie设备符合virtio规范。本申请一实施例中,通常,具体需要如下几个条件被满足:

1)pcie设备的pci配置空间(configspace)满足virtio-blk驱动的要求。

一般地,pcie设备有三个相互独立的物理地址空间:设备存储器地址空间、i/o地址空间和配置空间。其中,配置空间是pcie设备所特有的一个物理空间。由于pcie设备支持即插即用,所以pcie设备不占用固定的内存地址空间或i/o地址空间,而是由操作系统决定其映射的基址。通常,配置空间可以包括但不限于:

vendorid(即厂商id):可用于判断pcie设备是否存在。

deviceid(即设备id):某厂商生产的设备的id。

classcode:类代码。

irqline:irq编号。

irqpin:中断引脚。

其中,因为物理主机的操作系统可以根据vendorid和deviceid来找到与该pcie设备对应的驱动程序,为此,需要按照virtio-blk驱动的要求对上述vendorid和deviceid进行配置。例如:vendorid为0x1af4,deviceid的范围为0x1000~0x103f。

2)pcie设备的bar(baseaddressregister)实现所述虚拟块设备驱动程序要求的寄存器定义以及中断机制所需的msi(messagesignaledinterrupt)或msix配置表项。

pcie设备因其地址空间的可动态分配的特性,而具备较佳的可配置型和易操作性。而动态分配地址空间就是依赖于bar(baseaddressregister)实现的。在一个pcie设备中,其pci配置空间中从0x10到0x24包括6个bar(bar0~bar5)寄存器,用来定义pcie设备需要的配置空间大小以及配置pcie设备占用的地址空间。以virtio-0.95版本为例,需要在pcie设备的bar0中实现virtio规范要求的寄存器定义,以及在bar1~bar5中实现virtio中断机制所需的intx、或msi或msix配置表项。

3)pcie设备通过pcie总线具备访问所述物理主机的物理内存的能力。关于这一点,一般的pcie设备都具备访问上述物理内存的能力。

4)pcie设备具备根据物理主机配置的msix或msi或intx信息对物理主机发起指定中断的能力。

当上述4个条件被满足后,原本应用于虚拟机上的virtio-blk驱动便可以无需修改,便可以复用到物理主机上,从而,pcie设备便可以与该virtio-blk驱动进行配合,来实现物理主机的云盘存储。

本文中,总线设备与云存储系统进行通信的网络接口包括但不限于:以太网(ethernet),光纤信道(fibrechannel,fc),infiniband(ib)等。

通过以上技术方案可见,通过可以通过物理机总线连接到物理机上的总线设备(如通过cpu、asic、fpga等硬件实现的pcie设备),可以实现将物理机的i/o请求传递给后端的云存储系统,从而实现了物理主机的弹性存储,将传统物理机的优势(如:裸金属高性能、硬件高隔离、支持硬件虚拟化)和传统虚拟机的优势(如:弹性存储、快速交付)相互融合。另外,传统的物理机由于数据都是本地化存储,一旦物理机出现故障或宕机,则通常需要较长时间才能恢复使用。而本申请提出的弹性物理机,如果物理主机出现故障,则由于物理主机的数据(包括系统盘和数据盘)并没有存放到本地,而是云端存储,因此便可以在较短时间内切换到另一个可用的物理主机,并将原本存放到云盘的数据交给该可用的物理主机进行使用,从而提升用户体验。另外,弹性物理机相较于传统物理机,可以实现快速交付。

在相关技术中,传统的物理机还存在无法支持云盘启动的弊端。所谓云盘启动,指的是物理机在开机时通过从云盘读取启动所需要的数据(如系统盘)。为此,传统的物理机需要将数据存放到本地,以利用本地数据进行启动。本申请实施例为了实现弹性物理机(文中提及的弹性物理机是指包括上述总线设备的物理机)的云盘启动,可以通过如下方式来实现:

在pcie设备的扩展只读存储器(expansionrom)或所述物理主机的基本输入输出系统(bios)中存放有云盘启动驱动程序,其中,所述云盘启动驱动程序用于从云存储系统(即云盘)读取所述物理主机开机所需的数据。

在相关技术中,某些物理机可以通过用户在物理机中显式地运行iscsiinitator命令行来实现数据云盘,但是,这一方式需要用户输入一定的命令,操作繁琐。本申请实施例通过pcie设备实现数据云盘和/或系统云盘,可以确保物理机始终可以访问云盘,提升了用户体验。

图2示出了一示例性实施例提供的一种实现物理主机云存储的方法的流程,应用于通过物理机总线与所述物理主机连接的总线设备,所述方法可包括如下步骤101~103,其中:

在步骤101中,总线设备接收由在物理主机的操作系统内安装的块设备驱动程序发送的i/o请求信息。

在步骤102中,总线设备通过所述总线设备内实现的存储协议栈建立所述总线设备与云存储系统之间的通信。

在步骤103中,总线设备将所述i/o请求信息按照通信协议向所述云存储系统发送,以使所述云存储系统执行相应的i/o操作。

其中,存储协议栈的本质目的是实现物理主机的计算和存储的分离,通过将计算和存储分离,可以使得云端存储的高可用性等优势得以发挥。

在一实施例中,当所述所述总线设备为通过pcie总线连接到物理主机的pcie设备,所述块设备驱动程序为在虚拟机中使用的用于驱动虚拟块设备的虚拟块设备驱动程序时,所述方法还包括:

基于所述虚拟块设备驱动程序的要求,对所述pcie设备的配置空间内的配置信息进行配置;及,

基于所述虚拟块设备驱动程序的要求,在所述pcie设备的bar寄存器实现所述虚拟块设备驱动程序要求的寄存器定义以及中断机制所需的intx、或msi或msix配置表项。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书一个或多个实施例的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书一个或多个实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的权利要求范围之内。

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