发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种服务器系统启动的方法、装置、电子设备及存储介质。
第一方面,本公开提供一种服务器系统启动的方法,所述服务器包括:主机和网卡,所述主机和所述网卡基于网络上的非易失性存储器标准NVMf通信连接,所述网卡和存储集群通信连接,所述方法包括:
所述主机基于所述NVMf通信连接向所述网卡发送第一块设备访问请求,其中,所述第一块设备访问请求中至少包括:所述NVMf对应的非易失性存储器标准限定名称NQN,所述第一块设备访问请求用于获取根文件系统对应的镜像数据;
所述网卡基于所述第一块设备访问请求获取第二块设备访问请求,所述第二块设备访问请求中包括:所述NQN对应的第二块设备标识;
所述网卡向所述第二块设备标识对应的块设备所在的目标存储节点发送所述第二块设备访问请求,并接收所述目标存储节点发送的第二块设备访问响应,所述第二块设备访问响应中至少包括:所述根文件系统对应的镜像数据;
所述网卡基于所述第二块设备访问响应获取第一块设备访问响应,所述第一块设备访问响应中至少包括:所述根文件系统对应的镜像数据;
所述网卡基于所述NVMf通信连接向所述主机发送所述第一块设备访问响应;
所述主机接收所述第一块设备访问响应,并基于所述根文件系统对应的镜像数据挂载所述根文件系统,以完成系统启动。
可选的,所述主机包括:块设备层、NVMf主机层和远程直接数据存取RDMA层,所述网卡包括:RDMA层、NVMf目标层、通用块层和存储客户端层;
所述主机基于所述NVMf通信连接向所述网卡发送第一块设备访问请求,包括:
所述主机的块设备层根据第一块设备标识生成NVMe块设备访问请求,将所述NVMe块设备的访问请求提交到所述主机的NVMf主机层,所述NVMe块设备访问请求包括:第一块设备标识;
所述主机的NVMf主机层将所述NVMe块设备访问请求封装成符合NVMf协议的第一块设备访问请求,通过所述主机的RDMA层发送给所述网卡的RDMA层,所述第一块设备访问请求中至少包括所述NQN;
所述网卡基于所述第一块设备访问请求获取第二块设备访问请求,包括:
所述网卡的RDMA层接收所述第一块设备访问请求,将所述第一块设备访问请求提交到所述网卡的NVMf目标层;
所述网卡的NVMf目标层将所述第一块设备访问请求提交到所述网卡的通用块层;
所述网卡的通用块层基于所述NQN,确定所述NQN对应的第二块设备标识,生成第二块设备访问请求;
所述网卡的通用块层将所述第二块设备访问请求提交到所述存储客户端层。
可选的,所述网卡的NVMf目标层将所述第一块设备访问请求提交到所述网卡的通用块层,包括:
所述网卡的NVMf目标层将所述第一块设备访问请求进行协议转换,将所述第一块设备访问请求转换成内部通信协议;
所述网卡的NVMf目标层基于所述内部通信协议将所述第一块设备访问请求提交到所述网卡的通用块层。
可选的,所述网卡向所述第二块设备标识对应的块设备所在的目标存储节点发送所述第二块设备访问请求,包括:
所述网卡的存储客户端层对所述第二块设备访问请求进行协议转换,将所述第二块设备访问请求转换成符合与存储集群的存储节点通信的协议;
所述网卡的存储客户端层基于所述与存储集群的存储节点通信的协议向所述第二块设备标识对应的块设备所在的目标存储节点发送所述第二块设备访问请求。
可选的,所述主机基于所述NVMf通信连接向所述网卡发送第一块设备访问请求之前,还包括:
所述主机和所述网卡基于网络上的非易失性存储器标准NVMf建立通信连接。
可选的,所述主机和所述网卡基于网络上的非易失性存储器标准NVMf建立通信连接,包括:
所述主机获取NVMf的驱动程序和NVMf目标的配置信息,其中,所述NVMf目标的配置信息包括:NVMf目标的因特网协议IP地址、端口、所述NQN和传输层协议;
所述主机基于所述NVMf目标的配置信息向所述网卡发送建立通信连接请求,所述通信连接建立请求用于请求与所述网卡基于NVMf进行通信;
所述主机接收所述网卡发送的建立通信连接响应,所述建立通信连接响应用于指示建立连接成功;
所述主机生成所述第一块设备标识。
第二方面,本公开提供一种服务器系统启动的装置,包括:主机和网卡,所述主机和所述网卡基于网络上的非易失性存储器标准NVMf通信连接,所述网卡和存储集群通信连接,
所述主机,用于基于所述NVMf通信连接向所述网卡发送第一块设备访问请求,其中,所述第一块设备访问请求中至少包括:所述NVMf对应的非易失性存储器标准限定名称NQN,所述第一块设备访问请求用于获取根文件系统对应的镜像数据;
所述网卡,用于基于所述第一块设备访问请求获取第二块设备访问请求,所述第二块设备访问请求中包括:所述NQN对应的第二块设备标识;
所述网卡,还用于向所述第二块设备标识对应的块设备所在的目标存储节点发送所述第二块设备访问请求;并接收所述目标存储节点发送的第二块设备访问响应,所述第二块设备访问响应中至少包括:所述根文件系统对应的镜像数据;
所述网卡,还用于基于所述第二块设备访问响应获取第一块设备访问响应,所述第一块设备访问响应中至少包括:所述根文件系统对应的镜像数据;
所述网卡,还用于基于所述NVMf通信连接向所述主机发送所述第一块设备访问响应;
所述主机,还用于接收所述第一块设备访问响应,并基于所述根文件系统对应的镜像数据挂载所述根文件系统,以完成系统启动。
可选的,所述主机包括:块设备层、NVMf主机层和远程直接数据存取RDMA层,所述网卡包括:RDMA层、NVMf目标层、通用块层和存储客户端层;
所述主机的块设备层,用于根据第一块设备标识生成NVMe块设备访问请求,将所述NVMe块设备的访问请求提交到所述主机的NVMf主机层,所述NVMe块设备访问请求包括:所述第一块设备标识;
所述主机的NVMf主机层,用于将所述NVMe块设备访问请求封装成符合NVMf协议的第一块设备访问请求,通过所述主机的RDMA层发送给所述网卡的RDMA层,所述第一块设备访问请求中至少包括所述NQN;
所述网卡的RDMA层,用于接收所述第一块设备访问请求,将所述第一块设备访问请求提交到所述网卡的NVMf目标层;
所述网卡的NVMf目标层,用于将所述第一块设备访问请求提交到所述网卡的通用块层;
所述网卡的通用块层,用于基于所述NQN,确定所述NQN对应的第二块设备标识,生成第二块设备访问请求;
所述网卡的通用块层,还用于将所述第二块设备访问请求提交到所述存储客户端层。
可选的,所述网卡的NVMf目标层,具体用于将所述第一块设备访问请求进行协议转换,将所述第一块设备访问请求转换成内部通信协议;
所述网卡的NVMf目标层,具体用于基于所述内部通信协议将所述第一块设备访问请求提交到所述网卡的通用块层。
可选的,所述网卡的存储客户端层,用于对所述第二块设备访问请求进行协议转换,将所述第二块设备访问请求转换成符合与存储集群的存储节点通信的协议;
所述网卡的存储客户端层,还用于基于所述与存储集群的存储节点通信的协议向所述第二块设备标识对应的块设备所在的目标存储节点发送所述第二块设备访问请求。
可选的,所述主机,还用于和所述网卡基于网络上的非易失性存储器标准NVMf建立通信连接。
可选的,所述主机,具体用于获取NVMf的驱动程序和NVMf目标的配置信息,其中,所述NVMf目标的配置信息包括:NVMf目标的因特网协议IP地址、端口、所述NQN和传输层协议;
所述主机,具体用于基于所述NVMf目标的配置信息向所述网卡发送建立通信连接请求,所述通信连接建立请求用于请求与所述网卡基于NVMf进行通信;
所述主机,具体用于接收所述网卡发送的建立通信连接响应,所述建立通信连接响应用于指示建立连接成功;
所述主机,具体用于生成所述第一块设备标识。
第三方面,本公开提供一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法的步骤。
第四方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法的步骤。
第五方面,本公开提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面任一项所述的服务器系统启动方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的服务器系统启动的方法,主机基于NVMf通信连接向网卡发送第一块设备访问请求,第一块设备访问请求用于获取根文件系统对应的镜像数据;网卡基于第一块设备访问请求获取第二块设备访问请求,第二块设备访问请求中包括:NQN对应的第二块设备标识;网卡向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求;网卡接收目标存储节点发送的第二块设备访问响应,第二块设备访问响应中包括:目标数据和第二块设备标识,目标数据包括根文件系统对应的镜像数据;网卡基于第二块设备访问响应获取第一块设备访问响应,第一块设备访问响应中包括:目标数据和第一块设备标识;网卡基于NVMf通信连接向主机发送第一块设备访问响应;主机基于根文件系统对应的镜像数据挂载根文件系统,以完成系统启动。由于NVMf协议与现有的iSCSI协议相比,能够提供更快的数据读取速度和更低的访问时延,主机基于NVMf通信连接从网卡获取根文件系统对应的镜像数据,降低了主机的存储访问时延,从而,提高了服务器系统启动的效率。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
在云计算系统中,服务器本地通常没有硬盘,系统启动时运行BIOS,以通过iSCSI协议从存储集群获取内核镜像文件、根文件系统镜像等。然而,iSCSI协议的读写速度慢、存储访问时延大,导致服务器的系统启动的效率不高。并且,在系统启动完成后,服务器只能通过iSCSI协议对存储集群的块设备进行输入/输出(Input/Output,I/O)操作,影响了服务器的存储性能。
非易失性存储器标准(Non-Volatile Memory express,NVMe)是一种针对外围部件互连标准(Peripheral Component Interconnect express,PCIe)固态硬盘的接口规范。NVMe利用了PCIe通道的低时延和并行性,极大地提升了存储设备的读写性能。网络上的非易失性存储器标准(Non-Volatile Memory express over Fabric,NVMf)把NVMe协议提供的高性能进一步发挥到了NVMe存储系统的网络互连结构中。NVMf协议中定义了使用各种通用的传输层协议(例如:远程直接数据存取(Remote Direct Memory Access,RDMA)协议、光纤通道(Fiber Channel,FC)等)来实现NVMe功能的方式。
本公开提供一种服务器系统启动的方法,应用于服务器,服务器包括:主机和网卡,主机和网卡基于NVMf通信连接,网卡和存储集群的块设备通信连接,方法包括:主机基于NVMf通信连接向网卡发送第一块设备访问请求,其中,第一块设备访问请求中包括:所述NVMf对应的NVMe限定名称,第一块设备访问请求用于获取根文件系统对应的镜像数据;网卡对第一块设备访问请求进行处理,得到第二块设备访问请求,第二块设备访问请求中包括:NQN对应的第二块设备标识;网卡向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求;网卡接收目标存储节点发送的第二块设备访问响应,第二块设备访问响应中包括:根文件系统对应的镜像数据;网卡对第二块设备访问响应进行处理,得到第一块设备访问响应,第一块设备访问响应中包括:根文件系统对应的镜像数据;网卡基于NVMf通信连接向主机发送第一块设备访问响应;主机接收第一块设备访问响应并基于根文件系统对应的镜像数据挂载根文件系统,完成系统启动。由于NVMf协议与现有的iSCSI协议相比,能够提供更快的数据读取速度和更低的访问时延,主机基于NVMf通信连接从网卡获取根文件系统对应的镜像数据,降低了主机的存储访问时延,从而,提高了服务器系统启动的效率。
下面以几个具体的实施例对本公开的技术方案进行描述,对于相同或者类似的概念,可以相互参考,不再每处一一赘述。
图1为本公开实施例提供的一种服务器启动的网络架构图,如图1所示,本实施例提供的服务器启动的网络架构包括:服务器和存储集群。其中,服务器包括:主机和网卡,存储集群包括:至少一个存储节点,一个存储节点包括:至少一个块设备。主机和网卡基于NVMf通信连接,网卡和存储集群通信连接。
可选的,网卡可以是具备片上系统(System on Chip,SoC)的智能网卡,SoC内置微处理器和内存,能够运行独立的操作系统。存储集群可以是一种分布式文件系统,例如:Ceph、Hadoop分布式文件系统等。
图2为本公开实施例提供的一种服务器系统启动的方法的流程示意图,本公开实施例中的服务器系统启动的方法,应用于图1示出的服务器,如图2所示,本实施例的方法包括:
S201:主机基于NVMf通信连接向网卡发送第一块设备访问请求。
其中,第一块设备访问请求中至少包括:所述NVMf对应的非易失性存储器标准限定名(NVMe Qualifited Name,NQN),第一块设备访问请求用于获取根文件系统对应的镜像数据。可选的,第一块设备访问请求中还可以包括第一块设备标识。
根文件系统(root file system,rootfs)是指服务器的Linux系统运行时必须的文件数据以及相应的目录结构。
可选的,主机包括块设备层、NVMf主机(host)层和RDMA层,网卡包括:RDMA层、NVMf目标(target)层、通用块层和存储客户端层,如图3所示。网卡的通用块层可以适配多个存储客户层,网卡通过存储客户端层与存储集群通信连接。网卡的RDMA层、NVMf目标层、通用块层和存储客户端层可以通过软件的方式实现,例如:通过存储性能开发套件(StoragePerformace Development Kit,SPDK)实现,SPDK是一组用来编写高性能,高扩展性的用户态存储应用的工具集。
基于图3所示的服务器,一种可能的实现方式为:
S2011:主机的块设备层根据第一块设备标识生成NVMe块设备访问请求,将NVMe块设备的访问请求提交到主机的NVMf主机层。
其中,NVMe块设备访问请求包括:第一块设备标识。第一块设备标识表示主机的虚拟NVMe块设备,NVMe块设备访问请求用于获取第一块设备标识对应的虚拟NVMe块设备的块数据。
可选的,NVMe块设备访问请求还包括:数据块的起始编号和数据块的数量,其中,数据块的起始编号表示NVMe块设备访问请求获取的块数据在虚拟NVMe块设备存储的起始编号,数据块的数量表示NVMe块设备访问请求获取的块数据的大小。
S2012:主机的NVMf主机层将NVMe块设备访问请求封装成符合NVMf协议的第一块设备访问请求,通过主机的RDMA层发送给网卡的RDMA层。
可选的,主机的NVMf主机层根据NVMf目标的配置信息将NVMe块设备访问请求封装成符合NVMf协议的第一块设备访问请求,第一块设备请求可以包括:NVMf目标的配置信息中的NQN和NVMe块设备访问请求,通过主机的RDMA层发送给网卡的RDMA层。
S202:网卡基于第一块设备访问请求获取第二块设备访问请求。
其中,第二块设备访问请求中包括:NQN对应的第二块设备标识。
基于图3所示的服务器,一种可能的实现方式为:
S2021:网卡的RDMA层接收第一块设备访问请求,将第一块设备访问请求提交到网卡的NVMf目标层。
S2022:网卡的NVMf目标层将第一块设备访问请求提交到网卡的通用块层。
可选的,网卡的NVMf目标层将第一块设备访问请求,进行协议转换,将第一块设备访问请求转换成内部通信协议。
其中,内部通信协议可以为支持SPDK内部通信协议的格式。
网卡的NVMf目标层基于内部通信协议将第一块设备访问请求提交到网卡的通用块层。
S2023:网卡的通用块层基于NQN,确定NQN对应的第二块设备标识,生成第二块设备访问请求。
其中,第二块设备访问请求包括:NQN对应的第二块设备标识,第二块设备访问请求用于获取第二块设备标识对应的存储集群中的块设备上存储的数据,第二块设备标识对应的存储集群中的块设备上存储的数据包括:根文件系统对应的镜像数据。
S2024:网卡的通用块层将第二块设备访问请求提交到存储客户端层。
S203:网卡向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求。
基于图3所示的服务器,一种可能的实现方式为:
S2031:网卡的存储客户端层对第二块设备访问请求进行协议转换,将第二块设备访问请求转换成符合与存储集群的存储节点通信的协议。
可选的,网卡的存储客户端层将第二块设备访问请求从支持SPDK内部通信协议的格式转换为支持与存储集群的存储节点通信的协议格式。
S2032:网卡的存储客户端层基于与存储集群的存储节点通信的协议向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求。
可选的,网卡通过存储客户端层与存储集群通信连接,存储客户端层基于已建立的通信连接,将符合与存储集群的存储节点通信的协议第二块设备访问请求发送到第二块设备标识对应的块设备所在的存储集群中的目标存储节点。
S204:网卡接收目标存储节点发送的第二块设备访问响应。
其中,第二块设备访问响应中至少包括:根文件系统对应的镜像数据。
可选的,第二块设备访问响应中还可以包括:第二块设备标识。
可选的,网卡的存储客户端层接收存储集群中目标存储节点发送的第二块设备访问响应,其中,第二块设备访问响应的格式符合与存储集群的存储节点通信的协议。
S205:网卡基于第二块设备访问响应获取第一块设备访问响应。
其中,第一块设备访问响应中至少包括:根文件系统对应的镜像数据。可选的,第一块设备访问响应中还可以包括:第一块设备标识。
一种可能的实现方式为:
S2051:网卡的存储客户端将第二块设备访问响应进行协议转换,将第二块设备访问响应从支持与存储集群的存储节点通信的协议格式转换成支持SPDK内部通信协议的格式。
S2052:网卡的通用块层基于SPDK内部通信协议将第二块设备访问响应提交到网卡的通用块层。
S2053:网卡的通用块层基于SPDK内部通信协议将第二块设备访问响应提交到网卡的NVMf目标层。
S2054:网卡的NVMf目标层基于第二块设备访问响应进行处理,得到目标数据,根据目标数据和第一块设备访问请求中的第一块设备标识生成第一块设备访问响应。
其中,第一块设备访问响应的格式符合NVMf协议。
S206:网卡基于NVMf通信连接向主机发送第一块设备访问响应。
网卡的NVMf目标层将第一块设备访问响应通过网卡的RDMA层发送给主机的RDMA层。
主机的RDMA层将第一块设备访问响应提交到主机的NVMf主机层。
NVMf主机层对第一块设备访问响应进行处理,生成NVMe块设备访问响应,将NVMe块设备访问响应提交到主机的块设备层,NVMe块设备访问响应包括:目标数据和第一块设备标识。
S207:主机接收所述第一块设备访问响应,并基于所述根文件系统对应的镜像数据挂载根文件系统,完成系统启动。
主机的块设备层根据首次接收的目标数据获取根文件系统的类型和根目录的存储位置,若目标数据未包括根文件系统对应的镜像数据的所有块数据,则返回执行S201-S206,直到接收到根文件系统对应的镜像数据的所有块数据。主机根据根文件系统对应的镜像数据挂载根文件系统,完成系统启动。
本实施例,通过主机基于NVMf通信连接向网卡发送第一块设备访问请求,其中,第一块设备访问请求中包括:NQN,第一块设备访问请求用于获取根文件系统对应的镜像数据;网卡基于第一块设备访问请求获取第二块设备访问请求,第二块设备访问请求中包括:NQN对应的第二块设备标识;网卡向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求;网卡接收目标存储节点发送的第二块设备访问响应,第二块设备访问响应中包括:根文件系统对应的镜像数据;网卡基于第二块设备访问响应获取第一块设备访问响应;网卡基于NVMf通信连接向主机发送第一块设备访问响应;主机根据根文件系统对应的镜像数据挂载根文件系统,完成系统启动。由于NVMf协议与现有的iSCSI协议相比,能够提供更快的数据读取速度和更低的访问时延,主机基于NVMf通信连接从网卡获取根文件系统对应的镜像数据,降低了主机的存储访问时延,从而,提高了服务器系统启动的效率。
可选的,在系统启动完成后,主机通过NVMf协议向网卡发起I/O请求,网卡对I/O请求进行处理并发送到存储集群的块设备。由于NVMf协议能够提供更快的读写速度、更低的存储访问时延和更高的吞吐量,主机通过NVMf协议向网卡发起I/O请求,减少了主机的存储访问时延,提升了服务器的存储性能。
图4为本公开实施例提供的另一种服务器系统启动的方法实施例的流程示意图,图4是在图2所示实施例的基础上,S201之前还包括如下步骤,如图4所示,
S301:主机和网卡基于NVMf建立通信连接。
一种可能的实现方式为:
S3011:主机获取NVMf的驱动程序和NVMf目标的配置信息。
其中,NVMf目标的配置信息包括:NVMf目标的因特网协议IP地址、端口、NQN和传输层协议。
一种可能的实现方式为:
图5为本公开实施例提供的另一种服务器的结构示意图,图5是在图3所示服务器的基础上,主机还包括iSCSI发起(initiator)层和传输控制协议(Transmission ControlProtocol,TCP)层,网卡还包括:iSCSI目标(target)层和TCP层。网卡的iSCSI目标层和TCP层可以通过软件的方式实现,例如:通过SPDK实现。
基于图5所示的服务器,
S30111:主机和网卡基于iSCSI建立通信连接。
服务器上电以后,主机运行BIOS,启动iSCSI发起层。
主机的iSCSI发起层根据预先设置的iSCSI目标端的网际协议(InternetProtocol,IP)地址查找iSCSI目标端的名称,根据iSCSI目标端的名称向网卡的iSCSI目标层发送建立通信连接请求(例如:登录指令),通信连接建立请求用于请求与网卡基于iSCSI进行通信。
主机的iSCSI发起层接收网卡的iSCSI目标层发送的建立通信连接响应,建立通信连接响应用于指示建立连接成功。
主机生成第三块设备标识,第三块设备标识表示主机的虚拟SCSI块设备,例如:sda1。
S30112:主机基于iSCSI通信连接向网卡发送第三块设备访问请求。
主机的块设备层根据第三块设备标识发起SCSI块设备访问请求,将SCSI块设备访问请求提交到主机的iSCSI发起层,其中,SCSI块设备访问请求包括:第三块设备标识、数据块的起始编号和数据块的数量,其中,数据块的起始编号表示SCSI块设备访问请求获取的块数据在虚拟SCSI块设备存储的起始编号,数据块的数量表示SCSI块设备访问请求获取的块数据的大小。
主机的iSCSI发起层生成第三块设备访问请求,将第三块设备访问请求通过主机的TCP层发送给网卡的TCP层。其中,第三块设备访问请求中包括:第三块设备标识和互联网小型计算机系统接口限定名称(iSCSI Qualifited Name,IQN),第三块设备访问请求用于获取启动镜像文件对应的数据,启动镜像文件对应的数据包括:引导加载程序、内核镜像文件、内核启动参数和初始内存磁盘(initial RAM Disk,initrd)文件等。initrd文件包括:NVMe、NVMf和RDMA等驱动程序,内核启动参数包括:NVMf目标的配置信息。
S30113:网卡对第三块设备访问请求进行处理,得到第四块设备访问请求。
网卡的TCP层接收第三块设备访问请求,将第三块设备访问请求提交到网卡的iSCSI目标层。
网卡的iSCSI目标层将第三块设备访问请求进行协议转换,将第三块设备访问请求转换成SPDK的内部通信协议。
网卡的iSCSI目标层基于SPDK的内部通信协议将第三块设备访问请求提交到网卡的通用块层。
网卡的通用块层基于IQN,确定IQN对应的第四块设备标识,生成第四块设备访问请求。其中,第四块设备访问请求包括:IQN对应的第四块设备标识,第四块设备访问请求用于获取第四块设备标识对应的存储集群中的块设备上存储的数据,第四块设备标识对应的存储集群中的块设备上存储的数据包括:启动镜像文件对应的数据,启动镜像文件对应的数据包括:引导加载程序、内核镜像文件、内核启动参数和initrd文件等。
网卡的通用块层将第四块设备访问请求提交到存储客户端层。
S30114:网卡向第四块设备标识对应的块设备所在的目标存储节点发送第四块设备访问请求。
网卡的存储客户端层对第四块设备访问请求进行协议转换,将第四块设备访问请求转换成符合与存储集群的存储节点通信的协议。
网卡的存储客户端层基于与存储集群的存储节点通信的协议向第四块设备标识对应的块设备所在的目标存储节点发送第四块设备访问请求。
S30115:网卡接收第四块设备标识对应的块设备所在的目标存储节点发送的第四块设备访问响应。
其中,第四块设备访问响应中包括:第四块设备标识和启动镜像文件对应的数据,启动镜像文件对应的数据包括:引导加载程序、内核镜像文件、内核启动参数和initrd文件等。initrd文件包括:NVMe、NVMf和RDMA等驱动程序,内核启动参数包括:NVMf目标的配置信息。
S30116:网卡对第四块设备访问响应进行处理,得到第三块设备访问响应。
网卡的存储客户端将第四块设备访问响应进行协议转换,将第四块设备访问响应从支持与存储集群的存储节点通信的协议格式转换成支持SPDK内部通信协议的格式。
网卡的通用块层基于SPDK内部通信协议将第四块设备访问响应提交到网卡的通用块层。
网卡的通用块层基于SPDK内部通信协议将第四块设备访问响应提交到网卡的iSCSI目标层。
网卡的iSCSI目标层对第四块设备访问响应进行处理,得到第三块设备访问响应。其中,第三块设备访问响应包括:第三块设备标识和启动镜像文件对应的数据,启动镜像文件对应的数据包括:、引导加载程序、内核镜像文件、内核启动参数和initrd文件等。
S30117:网卡基于iSCSI通信连接向主机发送第三块设备访问响应。
网卡的iSCSI目标层将第三块设备访问响应通过网卡的TCP层发送给主机的TCP层。
主机的TCP层将第三块设备访问响应提交到主机的iSCSI发起层。
iSCSI发起层对第三块设备访问响应进行处理,生成SCSI块设备访问响应,将SCSI块设备访问响应提交到主机的块设备层,SCSI块设备访问响应包括:第三块设备标识和启动镜像文件对应的数据,启动镜像文件对应的数据包括:、引导加载程序、内核镜像文件、内核启动参数和initrd文件等。
S30118:主机根据启动镜像文件对应的数据获取NVMf的驱动程序和NVMf目标的配置信息。
主机的块设备层根据SCSI块设备访问响应,确定未获取到启动镜像文件对应的数据的所有块数据,则返回执行S30111-S30117,直到接收到根文件系统对应的镜像数据的所有块数据。
主机将引导加载程序(例如:多重操作系统启动管理器GRand UnifiedBootloader)、内核启动参数、内核镜像文件和initrd文件加载到内存,执行引导加载程序。主机利用引导加载程序执行内核镜像文件以启动内核,把initrd文件在内存中的存储地址和内核启动参数传递给内核。内核启动完成后,启动initrd文件中的初始化进程。初始化进程加载initrd文件中的NVMe、NVMf和RDMA等驱动程序,解析内核启动参数获取NVMf目标的配置信息,NVMf目标的配置信息包括:NVMf目标的IP地址、端口号、NQN和传输协议(例如:RDMA)。
S3012:主机基于NVMf目标的配置信息向网卡发送建立通信连接请求。
其中,通信连接建立请求用于请求与网卡基于NVMf进行通信。
可选的,建立通信连接请求可以是NVMf协议中的连接(connect)命令。例如:NVMf目标端的配置信息包括:NVMf目标端对应的IP地址192.168.1.1,端口号4420,NQN为nqn.2016-06.io.spdk:cnode0,传输协议RDMA,主机向NVMf目标端发送的建立通信连接请求:nvme connect-t rdma-n"nqn.2016-06.io.spdk:cnode0"-a 192.168.1.1-s 4420。
S3013:主机接收网卡发送的建立通信连接响应。
其中,建立通信连接响应用于指示建立连接成功。
S3014:主机生成第一块设备标识。
其中,第一块设备标识表示主机的虚拟NVMe块设备。主机可以根据预设的规则生成第一块设备标识,例如:第一块设备标识为字串nvmeXnYpZ,其中,X、Y和Z为从1开始排列的数字。
本实施例,在主机基于NVMf通信连接向网卡发送第一块设备访问请求之前,主机和网卡基于NVMf建立通信连接,使得主机能够基于NVMf连接通过网卡获取到根文件系统对应的镜像数据,降低了主机的存储访问时延,从而,提高了服务器系统启动的效率。
可选的,在S301之前,还包括:
在网卡上加载SPDK,然后启动SPDK。
启动SPDK的NVMf目标层,配置NVMf目标的信息(例如:NQN、NQN对应的存储集群的块设备标识等),并建立NVMf目标层、通用块层、存储客户端层与存储集群之间的通信连接。
启动SPDK的iSCSI目标层,配置iSCSI目标的信心(例如:IQN、IQN对应的存储集群的块设备标识),并建立iSCSI目标层、通用块层、存储客户端层与存储集群之间的通信连接。
图6为本公开实施例提供的一种服务器系统启动的装置的结构示意图。本公开实施例中的服务器系统启动的装置,应用于图1示出的服务器,如图6所示,本实施例的装置包括:主机601和网卡602。
其中,主机601,用于基于NVMf通信连接向网卡发送第一块设备访问请求,其中,第一块设备访问请求中包括:所述NVMf对应的非易失性存储器标准限定名称NQN,第一块设备访问请求用于获取根文件系统对应的镜像数据;
网卡602,用于对第一块设备访问请求进行处理,得到第二块设备访问请求,第二块设备访问请求中包括:NQN对应的第二块设备标识;
网卡602,还用于向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求;
网卡602,还用于接收目标存储节点发送的第二块设备访问响应,第二块设备访问响应中包括:目标数据和第二块设备标识,目标数据包括根文件系统对应的镜像数据;
网卡602,还用于对第二块设备访问响应进行处理,得到第一块设备访问响应,第一块设备访问响应中包括:目标数据和第一块设备标识;
网卡602,还用于基于NVMf通信连接向主机发送第一块设备访问响应;
主机601,还用于挂载根文件系统,以完成系统启动。
可选的,主机601包括:块设备层、NVMf主机层和远程直接数据存取RDMA层,网卡602包括:RDMA层、NVMf目标层、通用块层和存储客户端层;
主机的块设备层,用于根据第一块设备标识生成NVMe块设备访问请求,将NVMe块设备的访问请求提交到主机的NVMf主机层,NVMe块设备访问请求包括:第一块设备标识;
主机的NVMf主机层,用于将NVMe块设备访问请求封装成符合NVMf协议的第一块设备访问请求,通过主机的RDMA层发送给网卡的RDMA层。
网卡的RDMA层,用于接收第一块设备访问请求,将第一块设备访问请求提交到网卡的NVMf目标层;
网卡的NVMf目标层,用于将第一块设备访问请求提交到网卡的通用块层;
网卡的通用块层,用于基于NQN,确定NQN对应的第二块设备标识,生成第二块设备访问请求;
网卡的通用块层,还用于将第二块设备访问请求提交到存储客户端层。
可选的,网卡的NVMf目标层,具体用于将第一块设备访问请求进行协议转换,将第一块设备访问请求转换成内部通信协议;
网卡的NVMf目标层,具体用于基于内部通信协议将第一块设备访问请求提交到网卡的通用块层。
可选的,网卡的存储客户端层,用于对第二块设备访问请求进行协议转换,将第二块设备访问请求转换成符合与存储集群的存储节点通信的协议;
网卡的存储客户端层,还用于基于与存储集群的存储节点通信的协议向第二块设备标识对应的块设备所在的目标存储节点发送第二块设备访问请求。
可选的,主机601,还用于和网卡基于网络上的非易失性存储器标准NVMf建立通信连接。
可选的,主机601,具体用于获取NVMf的驱动程序和NVMf目标的配置信息,其中,NVMf目标的配置信息包括:NVMf目标的因特网协议IP地址、端口、NQN和传输层协议;
主机601,具体用于基于NVMf目标的配置信息向网卡发送建立通信连接请求,通信连接建立请求用于请求与网卡基于NVMf进行通信;
主机601,具体用于接收网卡发送的建立通信连接响应,建立通信连接响应用于指示建立连接成功;
主机601,具体用于生成第一块设备标识。
本实施例的装置,对应的可用于执行上述图1到图5任一所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本公开实施例提供了一种电子设备,包括:处理器,所述处理器用于执行存储于存储器的计算机程序,所述计算机程序被处理器执行时实现图1到图5任一所示方法的技术方案,其实现原理和技术效果类似,此处不再赘述。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现图1到图5任一所示方法实施例的技术方案。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本公开提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如图1到图5任一项所述的服务器系统启动方法。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。