云盘实现方法、装置、智能网卡、服务器及存储介质与流程

未命名 07-22 阅读:109 评论:0


1.本发明涉及云计算和智能网卡技术领域,具体而言,涉及一种云盘实现方法、装置、智能网卡、服务器及存储介质。


背景技术:

2.在云数据中心环境下,裸金属服务器是作为产品提供给客户的,每个客户对服务器的操作系统要求不尽相同,而传统的本地盘作为系统盘的方式难以满足对裸金属服务器的弹性需求。
3.通过智能网卡和集中式存储服务为裸金属服务器提供云盘,将云盘作为裸金属服务器的系统盘。这样一来,裸金属服务器和云盘相互分离,能够有效地提高裸金属服务器的弹性配置需求。具体的实现方式为:智能网卡向服务器提供virtio-blk设备作为系统盘,集中式存储提供实际的virtio-blk设备的物理存储服务,通过智能网卡将服务器可见的云盘远程挂载到集中式存储的某个物理盘上,由此满足云数据中心弹性裸金属的要求,这种场景下,服务器和作为系统盘的云盘是一种分离的状态,服务器部署系统盘就演变成智能网卡挂载具体的远程系统盘(即云盘),但是由于服务器使用云盘的前提是远程系统盘已经挂载成功,云盘的挂载是由云管中心和智能网卡来完成的,服务器使用系统盘由自身启动过程来决定,这样由于各种服务器的启动快慢不同,可能导致服务器在启动过程中,远端云盘还没有准备就绪的情况,服务器启动失败。
4.因此,以云盘作为裸金属服务器的系统盘的场景下,裸金属服务器启动失败的概率较高,极大地影响了裸金属服务器的可靠性。


技术实现要素:

5.本发明的目的在于提供了一种云盘实现方法、装置、智能网卡、服务器及存储介质,其能够降低以云盘作为系统盘的服务器启动失败的概率,提高其可靠性。
6.本发明的实施例可以这样实现:
7.第一方面,本发明提供一种云盘实现方法,应用于服务器,所述服务器通过总线与智能网卡通信连接,所述方法包括:
8.所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过所述虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述virtio-blk设备和所述云盘之间存在一一对应的逻辑关系;
9.根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态;
10.若所述云盘处于就绪状态,则继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。
11.在可选的实施方式中,所述智能网卡包括存储所述virtio-blk设备的状态的状态
寄存器,所述状态寄存器初始化为预设值,所述根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态的步骤,包括:
12.若所述状态寄存器中的值为所述预设值,则判定所述云盘处于未就绪状态,否则,判定所述云盘处于就绪状态。
13.在可选的实施方式中,所述状态寄存器为所述virtio-blk设备的特征寄存器或者自定义寄存器。
14.在可选的实施方式中,所述服务器上电时,从所述智能网卡读取expansion rom文件,具体包括:
15.所述服务器上电时,从所述智能网卡的网卡芯片读取expansion rom文件,所述expansion rom文件是所述智能网卡启动时从自身cpu系统加载到网卡芯片中的。
16.在可选的实施方式中,所述方法还包括:
17.若所述云盘处于未就绪状态,则继续检测所述virtio-blk设备的状态直至判断所述云盘处于就绪状态时,继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。
18.第二方面,本发明提供一种云盘实现方法,应用于智能网卡,所述智能网卡通过总线与服务器通信连接,所述方法包括:
19.所述智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况;
20.根据所述云盘的挂载情况设置所述virtio-blk设备的状态,以使所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,且根据所述virtio-blk设备的状态判断云盘是否处于就绪状态、并在所述云盘处于就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动所述云盘,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述云盘和所述virtio-blk设备之间存在一一对应的逻辑关系。
21.在可选的实施方式中,所述智能网卡包括存储所述virtio-blk设备的状态的状态寄存器,所述状态寄存器初始化为预设值,所述根据所述云盘的挂载情况设置所述virtio-blk设备的状态的步骤,包括:
22.若所述云盘挂载成功,则将所述状态寄存器的预设值修改为与所述预设值不同的指定值,所述状态寄存器为所述virtio-blk设备的特征寄存器或者自定义寄存器。
23.在可选的实施方式中,在所述检测virtio-blk设备对应的云盘的挂载情况之前,所述方法还包括:
24.所述智能网卡启动时,从cpu系统中读取expansion rom文件并将所述expansion rom文件写入所述智能网卡的网卡芯片中,以使所述服务器上电时,从所述智能网卡的网卡芯片中读取所述expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序。
25.第三方面,本发明提供一种云盘实现装置,应用于服务器,所述服务器通过总线与智能网卡通信连接,所述装置包括:
26.读取模块,用于所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过所述虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,所述virtio-blk设备的状态是所述智能网卡根据
检测对应的云盘的挂载情况设置的,所述virtio-blk设备和所述云盘之间存在一一对应的逻辑关系;
27.判断模块,用于根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态;
28.启动模块,用于若所述云盘处于就绪状态,则继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。
29.第四方面,本发明提供一种云盘实现装置,应用于智能网卡,所述智能网卡通过总线与服务器通信连接,所述装置包括:
30.检测模块,用于所述智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况;
31.设置模块,用于根据云盘的挂载情况设置virtio-blk设备的状态,以使所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过所述虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,且根据所述virtio-blk设备的状态判断云盘是否处于就绪状态、并在所述云盘处于就绪状态时继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘挂载情况设置的,所述云盘和所述virtio-blk设备之间存在一一对应的逻辑关系。
32.第五方面,本发明提供一种智能网卡,包括处理器和存储器,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现前述实施方式中任一项所述的云盘实现方法。
33.第六方面,本发明提供一种服务器,所述服务器包括处理器、存储器和总线,所述服务器通过所述总线与如前述实施方式所述的智能网卡建立连接,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现前述实施方式中任一项所述的云盘实现方法。
34.第七方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述实施方式中任一项所述的云盘实现方法,或者实现前述实施方式中任一项所述的云盘实现方法。
35.与现有技术相比,智能网卡启动时根据检测对应的云盘的挂载情况设置virtio-blk设备的状态,virtio-blk设备和云盘之间存在一一对应的逻辑关系,服务器启动时,读取智能网卡中的virtio-blk设备的状态,根据virtio-blk设备的状态判断云盘是否处于就绪状态,在云盘处理就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动云盘,最终使服务器正常启动,由于服务器是在云盘处于就绪状态的情况下启动的,因此,能够避免服务器启动时云盘未处于就绪状态导致服务器启动失败,由此提高了服务器的可靠性。
附图说明
36.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
37.图1为本实施例提供的应用场景的示例图。
38.图2为本实施例提供的服务器的方框示意图。
39.图3为本实施例提供的智能网卡的方框示意图。
40.图4为本实施例提供的应用于服务器的云盘实现方法的流程示例图一。
41.图5为本实施例提供的应用于服务器的云盘实现方法的流程示例图二。
42.图6为本实施例提供的应用于智能网卡的云盘实现方法的流程示例图。
43.图7为本实施例提供的云盘实现方法的逻辑架构的示例图。
44.图8为本实施例提供的第一云盘实现装置的方框示意图。
45.图9为本实施例提供的第二云盘实现装置的方框示意图。
46.图标:10-服务器;11-第一处理器;12-第一存储器;13-总线;20-智能网卡;21-第二处理器;22-第二存储器;23-网卡芯片;30-集中式存储设备;100-第一云盘实现装置;110-读取模块;120-判断模块;130-启动模块;200-第二云盘实现装置;210-检测模块;220-设置模块;230-写入模块。
具体实施方式
47.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
48.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
49.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
50.在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
51.此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
52.需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
53.通常情况下,对服务器提供系统盘的方式有安装本地系统盘、pxe(preboot execution environment,预启动执行环境)部署系统盘,分布式文件系统等,这些技术因为部署、运维、安全等方面的原因都无法满足云数据中心弹性裸金属的要求。
54.本实施例提供一种云盘实现方法、装置、智能网卡、服务器及存储介质,其核心改进点在于通过智能网卡中virtio-blk设备的状态,通过该状态使得服务器启动在云盘启动正常的情况下正常启动,避免云盘未准备好导致的服务器启动失败,下面将对其进行详细描述。
55.请参考图1,图1为本实施例提供的应用场景的示例图,图1中,智能网卡20可以直
接插接在服务器10上、通过总线(如pcie)与服务器10通信连接,智能网卡20通过网络和远端的集中式存储设备30通信。智能网卡20向服务器10提供virtio-blk设备,virtio-blk设备和云盘(集中式存储设备提供virtio-blk设备的物理存储空间)之间存在一一对应的逻辑关系,智能网卡20将virtio-blk设备通过网络存储协议挂载到集中式存储设备30上,从而对服务器提供云盘的后端存储访问服务。
56.服务器10通常是一台既具有传统物理服务器特点的硬件设备,又具备云计算技术的虚拟化服务功能,是硬件和软件优势结合的产物,也称为bms(bare metal server,裸金属服务器),服务器10可以为企业提供专属的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算性能以及数据安全。使得云服务用户可灵活申请,按需使用。
57.智能网卡20是具有独立的计算单元,能完成特定的基础设施功能操作的网卡,智能网卡20通过pcie(peripheral component interconnect express,高速串行计算机扩展总线标准)总线模拟存储virtio-blk设备,并通过软件进行通信协议和存储协议的转换,与远端的集中式存储设备30通信,给服务器10提供云盘的存储访问功能。
58.集中式存储设备30是为云盘提供存储空间的存储设备。
59.在图1的基础上,本实施例还提供了图1中的服务器10的方框示意图,请参照图2,图2为本实施例提供的服务器10的方框示意图,服务器10包括第一处理器11、第一存储器12及总线13,第一处理器11通过总线13与第一存储器12电连接。
60.第一处理器11可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,应用于服务器10的云盘实现方法的各步骤可以通过第一处理器11中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第一处理器11可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
61.第一存储器12用于存储程序,例如下述实施例中的第一云盘实现装置。第一云盘实现装置100包括至少一个可以软件或固件(firmware)的形式存储于第一存储器12中或固化在服务器10中的软件功能模块。第一处理器11在接收到执行指令后,执行程序以实现上述实施例揭示的应用于服务器10的云盘实现方法。
62.服务器10在uefi环境(unified extensible firmware interface,统一可扩展固件接口)中启动,uefi负责服务器10的加电自检(power on self test,post),提供连接操作系统与硬件的接口。
63.在图1的基础上,本实施例还提供了图1中的智能网卡20的方框示意图,请参照图3,图3为本实施例提供的智能网卡20的方框示意图,智能网卡20包括第二处理器21、第二存储器22、网卡芯片23,第二处理器21与第二存储器22和网卡芯片23均电连接。
64.第二处理器21可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,应用于智能网卡20的云盘实现方法的各步骤可以通过第二处理器21中的硬件的集成逻辑电路或者软件形式的指令完成。上述的第二处理器21可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可
以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
65.第二存储器22用于存储程序,例如下述实施例中的第二云盘实现装置200。第二云盘实现装置200包括至少一个可以软件或固件(firmware)的形式存储于第二存储器22中或固化在智能网卡20中的软件功能模块。第二处理器21在接收到执行指令后,执行程序以实现上述实施例揭示的应用于智能网卡的云盘实现方法。
66.网卡芯片23是智能网卡20自带的芯片,用于存储与云盘对应的virtio-blk设备的状态。此外,由于智能网卡20是通过pcie总线模拟virtio-blk设备的,对于使用pcie总线的pci/pcie设备,通常有一个外接的只读存储器件(rom),用来存储该pci/pcie设备的初始化代码或者系统启动代码,在智能网卡20加电自检阶段,第二处理器21将rom中的扩展只读存储器(expansion rom)文件拷贝到智能网卡20的网卡芯片23中,再由服务器10从网卡芯片23中读取并执行。
67.在图1和图2的基础上,本实施例提供了应用于图1和图2中服务器10的云盘实现方法,请参照图4,图4为本实施例提供的应用于服务器的云盘实现方法的流程示例图一,该方法包括以下步骤:
68.步骤s101,服务器启动时,从智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,virtio-blk设备的状态是智能网卡根据检测对应的云盘的挂载情况设置的,virtio-blk设备和云盘之间存在一一对应的逻辑关系。
69.在本实施例中,云盘是以virtio-blk设备的方式访问的,virtio-blk设备是将信息存储在固定大小的块中,每个块都有自己的地址,还可以在virtio-blk设备的任意位置读取一定长度的数据,而智能网卡20则提供了将集中式存储设备30提供的存储空间虚拟化为virtio-blk设备,即,对于集中式存储设备30上的预先设定的存储空间,从智能网卡端看此存储空间是一个virtio-blk设备,而服务器10将该virtio-blk设备看做云盘,因此,云盘和virtio-blk设备之间存在一一对应的逻辑关系,当云盘挂载成功,意味着智能网卡20和集中式存储设备30之间的访问连接正常,服务器10能够通过智能网卡20提供virtio-blk设备的访问方式访问云盘,否则不能访问。
70.在本实施例中,为了使服务器启动时能够及时获知云盘的状态,从而在云盘正常后进行服务器的启动流程,保证服务器10启动和云盘正常之间的时序性,智能网卡20启动时实时检测云盘的挂载情况,根据云盘的挂载情况设置virtio-blk设备的状态,virtio-blk设备的状态表征云盘是否处于准备好的就绪状态。
71.步骤s102,根据virtio-blk设备的状态判断云盘是否处于就绪状态。
72.在本实施例中,云盘处于就绪状态,意味着云盘可以正常提供存储访问的服务,在此状态下,以云盘为系统盘的服务器10能够正常启动,否则,服务器10启动失败。
73.步骤s103,若云盘处于就绪状态,则继续执行虚拟设备驱动程序并在执行完成后启动云盘。
74.本实施例提供的上述方法,根据virtio-blk设备的状态判断云盘是否处于就绪状态,在云盘处理就绪状态时才会继续执行虚拟设备驱动程序并在执行完成后启动云盘,最
终使服务器正常启动,由于服务器是在云盘处于就绪状态的情况下启动的,因此,能够避免服务器启动时云盘未处于就绪状态导致服务器启动失败,由此提高了服务器的可靠性。
75.在可选的实施方式中,智能网卡包括存储virtio-blk设备的状态的状态寄存器,状态寄存器初始化为预设值,一种判断云盘是否处于就绪状态的实现方式为:
76.若状态寄存器中的值为预设值,则判定云盘处于未就绪状态,否则,判定云盘处于就绪状态。
77.在本实施例中,智能网卡检测到云盘挂载成功时会将该状态寄存器中的值设置为指定值,预设值可以是与指定值不同的任意值,例如,预设值设置为0x5a5a5a5a,当然也可以设置为其他的特殊值,只要与指定值不同即可。
78.在本实施例中,状态寄存器的一种实现方式为,专门增加一个寄存器作为状态寄存器,这种方式需要从硬件上对芯片做适应性修改,使其能够对状态寄存器提供额外支持,为了不对现有的硬件架构做过多的改变,降低硬件成本,本实施例还提供另一种实现方式,由于智能网卡20的virtio-blk设备驱动本来就定义有特征寄存器,本实施例复用该特征寄存器作为状态寄存器,即:状态寄存器为virtio-blk设备驱动定义的特征寄存器,由此不需要进行硬件适配修改,只需要软件适配即可满足状态寄存器的需求,状态寄存器也可以是自定义寄存器。
79.在可选的实施方式中,为了在服务器上电时及时检测到智能网卡中的virtio-blk设备的状态,服务器上电时,从智能网卡读取expansion rom文件,本实施例还提供一种读取expansion rom文件的实现方式:
80.服务器上电时,从智能网卡的网卡芯片读取expansion rom文件,expansion rom文件是智能网卡启动时从自身cpu系统加载到网卡芯片中的。
81.在本实施例中,expansion rom文件是存储在expansion rom中的pci/pcie设备的初始化代码或者系统启动代码,智能网卡20启动时,在加电自检阶段会从expansion rom中读取expansion rom文件,并将读取到的expansion rom文件存储至网卡芯片23中,服务器10从网卡芯片23中读取并运行该expansion rom文件,以实现检测智能网卡20中存储的virtio-blk设备的状态。
82.基于图4,本实施例还提供了云盘未处于就绪状态时的处理方式,请参照图5,图5为本实施例提供的应用于服务器的云盘实现方法的流程示例图二,该方法还包括步骤s104:
83.步骤s104,若云盘处于未就绪状态,则继续检测virtio-blk设备的状态直至判断云盘处于就绪状态时,继续执行虚拟设备驱动程序并在执行完成后启动云盘。
84.在本实施例中,若云盘处于未就绪状态,意味着服务器的系统盘异常,则服务器就阻塞等待,继续实时或者周期性检测virtio-blk设备的状态。
85.为了配合服务器10,智能网卡20启动时需要检测云盘的挂载情况,并根据云盘的挂载情况设置virtio-blk设备的状态,本实施例还提供了一种应用于智能网卡的云盘实现方法,请参照图6,图6为本实施例提供的应用于智能网卡的云盘实现方法的流程示例图,该方法包括以下步骤:
86.步骤s201,智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况。
87.在本实施例中,智能网卡20启动时,会实时检测云盘的连接情况,即是否与集中式
存储设备正常通信,是否能够正常访问集中式存储设备提供的存储空间,若连接正常,则认为云盘挂载成功,否则云盘挂载失败。
88.步骤s202,根据云盘的挂载情况设置virtio-blk设备的状态,以使服务器启动时,从智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,且根据virtio-blk设备的状态判断云盘是否处于就绪状态、并在云盘处于就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动云盘,virtio-blk设备的状态是智能网卡根据检测对应的云盘的挂载情况设置的,云盘和virtio-blk设备之间存在一一对应的逻辑关系。
89.在可选的实施方式中,智能网卡包括存储virtio-blk设备的状态的状态寄存器,状态寄存器初始化为预设值,根据云盘的挂载情况设置virtio-blk设备的状态的方式可以是:
90.若云盘挂载成功,则将状态寄存器的预设值修改为与预设值不同的指定值,状态寄存器为virtio-blk设备的特征寄存器或者自定义寄存器。
91.若云盘挂载失败,则不对预设值进行任何修改,由此,在云盘挂载成功之前,服务器10检测到状态寄存器就一直是预设值,服务器10就一直处于阻塞等待,直至云盘挂载成功后,该预设值被修改为指定值,此时服务器10判定云盘挂载成功,启动云盘,服务器10正常启动。
92.在可选的实施方式中,为了使服务器10及时读取并运行expansion rom文件,在检测virtio-blk设备对应的云盘的挂载情况之前,智能网卡20还提供了一种写入实现expansion rom文件的方式:
93.智能网卡启动时,从cpu系统中读取expansion rom文件并将expansion rom文件写入智能网卡的网卡芯片中,以使服务器上电时,从智能网卡的网卡芯片中读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序。
94.在本实施例中,网卡芯片可以是图3中的网卡芯片23,一种将支持云盘功能的expansion rom文件写入网卡芯片中的方式为:
95.在智能网卡启动的引导阶段或者在操作系统启动阶段,将支持云盘功能的expansion rom文件写入网卡芯片中。
96.在本实施例中,可以将expansion rom文件写入网卡芯片放入引导阶段执行,也可以放入操作系统启动阶段执行,只要能够保证服务器上电时,能够从智能网卡的网卡芯片中读取expansion rom文件即可。
97.为了从逻辑架构上更清楚地说明本方案,请参照图7,图7为本实施例提供的云盘实现方法的逻辑架构的示例图,图7中,服务器10处于uefi环境。云盘实现方法涉及服务器10、智能网卡20的网卡芯片和网卡cpu三者的交互,服务器10运行有expansion rom运行模块、网卡芯片运行有expansion rom文件存储模块和virtio-blk设备模块,网卡cpu运行有expansion rom文件加载模块和云盘状态检查模块,网卡芯片具体交互过程如下:
98.s1:服务器10上电后,网卡cpu开始运行,网卡cpu的expansion rom文件加载模块负责将支持云盘功能的expansion rom文件写入到网卡芯片中,以便供服务器10在uefi环境中读取并运行;expansion rom文件加载模块可以在引导环境(也称为boot环境)中实现,也可以在操作系统环境(也称为os环境)中实现;
99.s2:服务器10上电后,服务器10在uefi环境中读取expansion rom文件并执行,实际执行的为virtio-blk驱动,virtio-blk驱动是基于virtio实现的虚拟化virtio-blk设备的驱动,virtio是一种通用的虚拟化设备模拟标准,virtio分为driver和device,driver和device是生产者和消费者模式动作,driver生产内存,device消费内存。virtio-blk驱动检查网卡芯片中的virtio-blk设备是否准备就绪,若没有准备就是则阻塞等待;否则正常加载virtio-blk设备驱动并在加载完成后启动云盘;
100.s3:网卡cpu进入os环境后,云盘状态检查模块启动,该模块会一直检查云盘的连接情况,若云盘已经连接成功(表示可以访问),则向virtio-blk设备模块传递控制信息,允许服务器10的uefi中的云盘继续加载;
101.s4:uefi环境中运行的expansion rom运行模块一直检查virtio-blk设备的控制状态,若就绪,则正常加载驱动,若未就绪,则一直等待。
102.为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种第一云盘实现装置100的实现方式。请参照图8,图8为本实施例提供的第一云盘实现装置100的方框示意图。需要说明的是,本实施例所提供的第一云盘实现装置100,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
103.第一云盘实现装置100包括读取模块110、判断模块120及启动模块130。
104.读取模块110,用于服务器启动时,从智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,virtio-blk设备的状态是智能网卡根据检测对应的云盘的挂载情况设置的,virtio-blk设备和云盘之间存在一一对应的逻辑关系;
105.在可选的实施方式中,读取模块110还用于:服务器上电时,从智能网卡中读取expansion rom文件,具体用于:服务器上电时,从智能网卡的网卡芯片读取expansion rom文件,expansion rom文件是智能网卡启动时从自身cpu系统加载到网卡芯片中的。
106.判断模块120,用于根据virtio-blk设备的状态判断云盘是否处于就绪状态;
107.在可选的实施方式中,智能网卡包括存储virtio-blk设备的状态的状态寄存器,状态寄存器初始化为预设值,判断模块120具体用于:若状态寄存器中的值为预设值,则判定云盘处于未就绪状态,否则,判定云盘处于就绪状态。
108.在可选的实施方式中,状态寄存器为virtio-blk设备的特征寄存器或者自定义寄存器。
109.启动模块130,用于若云盘处于就绪状态,则继续执行虚拟设备驱动程序并在执行完成后启动云盘。
110.在可选的实施方式中,启动模块130还用于:若云盘处于未就绪状态,则继续检测virtio-blk设备的状态直至判断云盘处于就绪状态时,继续执行虚拟设备驱动程序并在执行完成后启动云盘。
111.为了执行上述实施例及各个可能的实施方式中的相应步骤,下面给出一种第二云盘实现装置200的实现方式。请参照图9,图9为本实施例提供的第二云盘实现装置200的方框示意图。需要说明的是,本实施例所提供的第二云盘实现装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及指出。
112.第二云盘实现装置200包括检测模块210、设置模块220及写入模块230。
113.检测模块210,用于智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况;
114.设置模块220,用于根据云盘的挂载情况设置virtio-blk设备的状态,以使服务器启动时,从智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,且根据virtio-blk设备的状态判断云盘是否处于就绪状态、并在云盘处于就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动云盘,云盘和virtio-blk设备之间存在一一对应的逻辑关系。
115.在可选的实施方式中,智能网卡包括存储virtio-blk设备的状态的状态寄存器,状态寄存器初始化为预设值,设置模块220具体用于:若云盘挂载成功,则将状态寄存器的预设值修改为与预设值不同的指定值,状态寄存器为virtio-blk设备的特征寄存器或者自定义寄存器。
116.在可选的实施方式中,在检测virtio-blk设备对应的云盘的挂载情况之前,写入模块230用于:智能网卡启动时,从cpu系统读取expansion rom文件并将expansion rom文件写入智能网卡的网卡芯片中,以使服务器上电时,从智能网卡的网卡芯片中读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序。
117.在可选的实施方式中,写入模块230具体用于:在智能网卡启动的引导阶段或者在操作系统启动阶段,将支持云盘功能的expansion rom写入网卡芯片中。
118.本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述实施方式中应用于服务器的云盘实现方法,或者实现前述实施方式中应用于智能网卡的云盘实现方法。
119.综上所述,本发明实施例提供了一种云盘实现方法、装置、智能网卡、服务器及存储介质,应用于服务器,服务器通过总线与智能网卡通信连接,方法包括:服务器启动时,从智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,virtio-blk设备的状态是智能网卡根据检测对应的云盘的挂载情况设置的,virtio-blk设备和云盘之间存在一一对应的逻辑关系;根据virtio-blk设备的状态判断云盘是否处于就绪状态;若云盘处于就绪状态,则继续执行虚拟设备驱动程序并在执行完成后启动云盘。与现有技术相比,本发明实施例至少具有以下优势:(1)解决了云盘功能由于服务器加载速度较快,以至于快于智能网卡连接远端云盘并准备好的时间,导致智能网卡云盘功能失败,服务器无法正常启动的问题,提高了服务器的可靠性;(2)通过解决服务器的启动速率与云盘挂载之间的时序控制不当导致服务器无法正常启动的问题,让基于智能网卡的云盘方案变得更加完善,扩充了其应用前景;(3)无需要改变芯片固件的情况下支持rom定制化或者升级版本,使云盘功能具备较好的扩展性和适应性;(4)能够很好的适应各类不同启动速度的服务器,也能够让智能网卡与云管平台的连接速率不影响服务器的云盘业务,可实施性简单易行。
120.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种云盘实现方法,其特征在于,应用于服务器,所述服务器通过总线与智能网卡通信连接,所述方法包括:所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过所述虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述virtio-blk设备和所述云盘之间存在一一对应的逻辑关系;根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态;若所述云盘处于就绪状态,则继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。2.如权利要求1所述的云盘实现方法,其特征在于,所述智能网卡包括存储所述virtio-blk设备的状态的状态寄存器,所述状态寄存器初始化为预设值,所述根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态的步骤,包括:若所述状态寄存器中的值为所述预设值,则判定所述云盘处于未就绪状态,否则,判定所述云盘处于就绪状态。3.如权利要求2所述的云盘实现方法,其特征在于,所述状态寄存器为所述virtio-blk设备的特征寄存器或者自定义寄存器。4.如权利要求1所述的云盘实现方法,其特征在于,所述服务器上电时,从所述智能网卡读取expansion rom文件,具体包括:所述服务器上电时,从所述智能网卡的网卡芯片读取expansion rom文件,所述expansion rom文件是所述智能网卡启动时从自身cpu系统加载到网卡芯片中的。5.如权利要求1-4任一项所述的云盘实现方法,其特征在于,所述方法还包括:若所述云盘处于未就绪状态,则继续检测所述virtio-blk设备的状态直至判断所述云盘处于就绪状态时,继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。6.一种云盘实现方法,其特征在于,应用于智能网卡,所述智能网卡通过总线与服务器通信连接,所述方法包括:所述智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况;根据所述云盘的挂载情况设置所述virtio-blk设备的状态,以使所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,且根据所述virtio-blk设备的状态判断云盘是否处于就绪状态、并在所述云盘处于就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动所述云盘,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述云盘和所述virtio-blk设备之间存在一一对应的逻辑关系。7.如权利要求6所述的云盘实现方法,其特征在于,所述智能网卡包括存储所述virtio-blk设备的状态的状态寄存器,所述状态寄存器初始化为预设值,所述根据所述云盘的挂载情况设置所述virtio-blk设备的状态的步骤,包括:若所述云盘挂载成功,则将所述状态寄存器的预设值修改为与所述预设值不同的指定值,所述状态寄存器为所述virtio-blk设备的特征寄存器或者自定义寄存器。8.如权利要求6所述的云盘实现方法,其特征在于,在所述检测virtio-blk设备对应的
云盘的挂载情况之前,所述方法还包括:所述智能网卡启动时,从cpu系统读取expansion rom文件并将所述expansion rom文件写入所述智能网卡的网卡芯片中,以使所述服务器上电时,从所述智能网卡的网卡芯片中读取所述expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序。9.一种云盘实现装置,其特征在于,应用于服务器,所述服务器通过总线与智能网卡通信连接,所述装置包括:读取模块,用于所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载所述expansion rom文件中的虚拟设备驱动程序,通过所述虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述virtio-blk设备和所述云盘之间存在一一对应的逻辑关系;判断模块,用于根据所述virtio-blk设备的状态判断所述云盘是否处于就绪状态;启动模块,用于若所述云盘处于就绪状态,则继续执行所述虚拟设备驱动程序并在执行完成后启动所述云盘。10.一种云盘实现装置,其特征在于,应用于智能网卡,所述智能网卡通过总线与服务器通信连接,所述装置包括:检测模块,用于所述智能网卡启动时,检测virtio-blk设备对应的云盘的挂载情况;设置模块,用于根据所述云盘的挂载情况设置所述virtio-blk设备的状态,以使所述服务器启动时,从所述智能网卡读取expansion rom文件,并加载expansion rom文件中的虚拟设备驱动程序,通过虚拟设备驱动程序读取所述智能网卡中的virtio-blk设备的状态,且根据所述virtio-blk设备的状态判断云盘是否处于就绪状态、并在所述云盘处于就绪状态时继续执行虚拟设备驱动程序并在执行完成后启动所述云盘,所述virtio-blk设备的状态是所述智能网卡根据检测对应的云盘的挂载情况设置的,所述云盘和所述virtio-blk设备之间存在一一对应的逻辑关系。11.一种智能网卡,其特征在于,包括处理器和存储器,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现权利要求6-8中任一项所述的云盘实现方法。12.一种服务器,其特征在于,所述服务器包括处理器、存储器和总线,所述服务器通过所述总线与如权利要求11所述的智能网卡建立连接,所述存储器用于存储程序,所述处理器用于在执行所述程序时,实现权利要求1-5中任一项所述的云盘实现方法。13.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1-5中任一项所述的云盘实现方法,或者实现权利要求6-8中任一项所述的云盘实现方法。

技术总结
本发明涉及云计算和智能网卡技术领域,提供一种云盘实现方法、装置、智能网卡、服务器及存储介质,方法包括:服务器启动时,从智能网卡读取Expansion Rom文件,并加载其中的虚拟设备驱动程序,通过虚拟设备驱动程序读取智能网卡中的virtio-blk设备的状态,该状态是智能网卡根据检测到的云盘的挂载情况设置的,virtio-blk设备和对应的云盘之间存在一一对应的逻辑关系;根据virtio-blk设备的状态判断云盘是否处于就绪状态;若云盘处于就绪状态,则继续执行虚拟设备驱动程序并在执行完成后启动云盘。本发明能够降低以云盘作为系统盘的服务器启动失败的概率,提高其可靠性。提高其可靠性。提高其可靠性。


技术研发人员:卢祖友 罗向征
受保护的技术使用者:迈普通信技术股份有限公司
技术研发日:2023.04.20
技术公布日:2023/7/21
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐