CN115857821A - 数据传输方法、装置、主机及计算系统 - Google Patents
数据传输方法、装置、主机及计算系统 Download PDFInfo
- Publication number
- CN115857821A CN115857821A CN202211638320.0A CN202211638320A CN115857821A CN 115857821 A CN115857821 A CN 115857821A CN 202211638320 A CN202211638320 A CN 202211638320A CN 115857821 A CN115857821 A CN 115857821A
- Authority
- CN
- China
- Prior art keywords
- data
- read
- storage
- computing
- condition
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本申请实施例公开一种数据传输方法、装置、主机及计算系统,所述方法包括:接收到用户态下发的用于指示远程传输数据的设定指令;基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。本申请实施例提供的技术方案可适用于高性能计算与存储融合场景下的数据存取场景,能够提高读写效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及数据传输方法、装置、主机及计算系统。
背景技术
高性能计算(High performance computing,HPC),能够进行并行数值计算和数据处理的大规模运算,处理标准工作站无法完成的密集型计算任务,目前已成为社会进步的重要驱动力。近几年来,在新技术和新业务的推动下,高性能计算逐步从计算密集型走向数据密集型,由此也带来了性能、成本和管理上的多重挑战,需要更高效的存储技术给予支撑。
图1是现有技术中的一种高性能计算与存储融合的网络拓扑,其中包括:负责数据计算的HPC集群,以及,负责数据存储的IP-SAN(IP Storage Area Network,基于IP协议传输的存储局域网)集群。两个集群之间通过以太网进行通信。然而,当前HPC集群中与HPC主机配合的计算设备上的计算软件栈和HPC主机的存储输入输出IO栈相互独立,HPC主机从IP-SAN集群读取到的数据需要在主机内存中多次拷贝才能到达计算设备内存,由此影响了高性能计算与存储融合场景下的数据存取效率。
发明内容
有鉴于此,本申请实施例提供一种数据传输方法、装置、主机及计算系统,以提高数据的存取效率。
第一方面,本申请实施例提供一种数据传输方法,所述方法包括:
接收到用户态下发的用于指示远程传输数据的设定指令;
基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述方法还包括:根据所述设定指令,识别是否满足数据直通条件。
进一步的,所述方法还包括:获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;将获取结果作为所述数据直通条件。
进一步的,获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;
在接收到对所述存储文件索引节点的所述设定指令后,得到所述存储文件索引节点对应的远程存储地址。
进一步的,获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,包括:
接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;
获取所述文件描述符对应的存储文件索引节点。
进一步的,所述读写类型为读操作类型,设定指令为数据读取指令;
根据所述设定指令,识别是否满足数据直通条件,包括:
将所述数据读取指令发送至远程存储设备;
接收到所述远程存储设备的数据读取指令应答后,将所述数据缓存队列中从远程存储设备读取的数据与所述数据直通条件中的远程存储地址进行匹配;
如果匹配成功,则确定满足数据直通条件。
进一步的,所述读写类型为写操作类型,设定指令为数据写入指令;
根据所述设定指令,识别是否满足数据直通条件,包括:
识别所述设定指令中的远程存储地址是否为所述所述数据直通条件中的远程存储地址;
如果是,则确定满足数据直通条件。
第二方面,本申请实施例提供另一种数据传输方法,所述方法包括:
生成用于指示远程传输数据的设定指令;
向内核态下发所述设定指令,以使所述内核态执行以下操作:基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述方法还包括:向内核态下发数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,以使内核态根据该命令确定数据直通条件。
进一步的,所述方法还包括:控制内核态对数据直通方式的启闭。
进一步的,在向内核态下发所述设定指令之前,所述方法还包括:以直接操作文件流的方式,打开需要数据直通的存储文件。
第三方面,本申请实施例提供一种数据传输装置,所述装置包括:
指令接收单元,用于接收到用户态下发的用于指示远程传输数据的设定指令;
数据传输单元,用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述装置还包括数据直通识别单元,用于:根据所述设定指令,识别是否满足数据直通条件。
进一步的,所述装置还包括数据直通条件确定单元,用于:获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;将获取结果作为所述数据直通条件。
进一步的,所述数据直通条件确定单元用于获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;
在接收到对所述存储文件索引节点的所述设定指令后,得到所述存储文件索引节点对应的远程存储地址。
进一步的,所述数据直通条件确定单元具体用于获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,包括:
接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;
获取所述文件描述符对应的存储文件索引节点。
进一步的,所述读写类型为读操作类型,设定指令为数据读取指令;
数据直通识别单元用于根据所述设定指令,识别是否满足数据直通条件,包括:
将所述数据读取指令发送至远程存储设备;
接收到所述远程存储设备的数据读取指令应答后,将所述数据缓存队列中从远程存储设备读取的数据与所述数据直通条件中的远程存储地址进行匹配;
如果匹配成功,则确定满足数据直通条件。
进一步的,所述读写类型为写操作类型,设定指令为数据写入指令;
数据直通识别单元用于根据所述设定指令,识别是否满足数据直通条件,包括:
识别所述设定指令中的远程存储地址是否为所述所述数据直通条件中的远程存储地址;
如果是,则确定满足数据直通条件。
第四方面,本申请实施例提供另一种数据传输装置,所述装置包括:
设定指令生成单元,用于生成用于指示远程传输数据的设定指令;
设定指令下发单元,用于向内核态下发所述设定指令,以使所述内核态执行以下操作:基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述装置还包括第一控制单元,用于:向内核态下发数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,以使内核态根据该命令确定数据直通条件。
进一步的,所述装置还包括第二控制单元,用于:控制内核态对数据直通方式的启闭。
进一步的,所述装置还包括文件打开单元,用于在设定指令下发单元向内核态下发所述设定指令之前:以直接操作文件流的方式,打开需要数据直通的存储文件。
第五方面,本申请实施例提供一种高性能计算主机,包括用户态和内核态,其中:用户态包括前述第三方面所述的数据传输装置;内核态包括前述第四方面所述的数据传输装置。
第六方面,本申请实施例提供一种计算系统,包括:计算设备,以及,前述第五方面所述的高性能计算主机。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为现有技术中的一种高性能计算与存储融合的网络拓扑示意图;
图2为本申请一些实施方式中的HPC主机上存储IO栈进行数据读写过程示意图;
图3为本申请实施例一提供的一种数据传输方法的流程图;
图4为本申请实施例二提供的一种数据传输方法的流程图;
图5为本申请实施例三提供的一种HPC主机从存储局域网读取数据的方法的流程图;
图6为本申请实施例四提供的一种HPC主机向存储局域网写入数据的方法的流程图;
图7为本申请实施例五提供的一种计算设备内存与TCP/IP协议栈的数据缓存队列间数据直通的功能示意图;
图8为本申请实施例五中示例一提供的一种HPC主机从IP-SAN集群读取数据至计算设备内存的交互示意图;
图9为本申请实施例五中示例二提供的一种HPC主机向IP-SAN集群写入计算设备内存数据的交互示意图;
图10为本申请实施例六提供的一种数据传输装置的结构示意图;
图11为本申请实施例七提供的一种数据传输装置的结构示意图;
图12为本申请实施例提供的一种高性能计算主机的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
通常情况下,在负责数据计算的HPC集群中由多个HPC系统组成,每个HPC系统包括:HPC主机和计算设备。图2为一些实施方式下的HPC主机存储IO栈进行读写数据过程示意图,如图2所示,最上层是用户态的计算进程,底层是内核态,在内核态中从上往下依次为文件系统、块设备(BLOCK)层、SCSI(Small Computer System Interface,小型计算机系统接口)中层、iSCSI(Internet Small Computer System Interface,Internet小型计算机系统接口)启动器、TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)协议栈和网络驱动层。其中,文件系统包括VFS(virtual File System,虚拟文件系统)和具体的FS(File System)。此外,除了HPC主机,HPC系统还包括与HPC主机配合的计算设备,例如GPU(graphics processing unit,图形处理器)。计算设备有自己单独的内存,可以是HBM(High Bandwidth Memory,高带宽存储器)或者GDDR(Graphics DoubleData Rate,双倍数据传输率存储器),包括计算软件栈。虽然GPU具有强大的算力,但GPU不能单独工作,需要与HPC主机上的CPU(central processing unit,中央处理器)一起并作为CPU的协处理器才能工作,并且CPU与GPU分别具有独立的内存系统。CPU端也称为Host(主机)端,CPU内存称为Host内存;GPU端也成为Device(设备)端,其内存称为Device内存。一般情况下,如果要在GPU端进行计算,则需要把待处理的数据拷贝到Device内存中,待数据处理完成之后,还需要把计算结果拷贝到Host端做进一步的处理,比如存储到磁盘中或者打印到显示器上。参见图2,HPC主机向IP-SAN集群存取计算设备内存数据时,HPC主机上存储IO栈的数据读写过程如下:
1)当用户态的计算进程要从IP-SAN集群读取数据到计算设备内存时,在HPC主机内部存储IO栈中:首先,通过网络从IP-SAN集群读取数据到TCP协议栈的数据缓存队列,到iSCSI启动器层,将数据拷贝到SCSI中层,最后上送文件系统;接着,用户态计算进程通过VFS接口read系统调用从文件读取数据,将数据从文件系统拷贝到用户态数据缓存buffer,最后通过计算软件栈提供函数(如hipMemcpy),将数据拷贝到计算设备内存中;
2)当用户态的计算进程要将计算设备内存数据存入IP-SAN集群时,首先,通过计算软件栈提供函数(如hipMemcpy),将计算设备内存中数据拷贝到HPC主机内存HOSTMemory;用户态的计算进程通过VFS系统调用write写入文件,文件系统将数据拷贝到文件系统缓存页面,构建biovector下发到SCSI层组装层SGL(Scatter Gather List,散点集列表),最后下发到iSCSI启动器;iSCSI启动器将数据发往IP-SAN集群,期间又存在将SGL中的数据拷贝到TCP协议栈的数据发送队列中。
以上数据读写过程,存在多次数据拷贝,影响系统性能和存取效率。为此,在另一些实施方式中,本申请提供一种解决方案,可以在从IP-SAN集群读取数据时,直接将数据从TCP协议栈的数据缓存队列拷贝到计算设备内存;向IP-SAN集群写入数据时,直接从计算设备内存拷贝数据到TCP协议栈的数据发送队列。本申请的另一些实施方式能够在不影响IO栈原有功能的前提下减少了两次数据拷贝。以下,通过各实施例详细介绍本申请的另一些实施方式中的技术方案。
首先,介绍下本申请可适用的网络拓扑。具体的,该网络拓扑至少包括:HPC主机、计算设备(例如GPU),以及远程存储设备。其中,HPC主机在计算设备的配合下共同完成数据计算工作,HPC主机与计算设备均有自己单独的内存,HPC主机与计算设备可被集成在一台电子设备,也可分布于不同的电子设备。HPC主机分包括有用户态和内核态。远程存储设备与HPC主机远程连接,能够存储HPC主机和计算设备中的数据,也可以存储其它数据,且存储数据能被HPC主机读取。在实际应用中,通常情况下,HPC主机、计算设备和远程存储设备均不止一个。
作为一种典型应用场景下的网络拓扑,所述网络拓扑包括:负责数据计算的HPC集群;以及,负责数据存储的存储局域网集群。其中,HPC集群包括:多个HPC主机及其内存,以及,多个计算设备及其内存;每个HPC主机包括存储输入输出IO栈,所述存储IO栈从上到下可依次包括:用户态的计算进程;以及,内核态的文件系统、块设备层和设备驱动;不同存储局域网有不同的存储传输层协议,例如:iSCSI、NVMe(Non Volatile Memory Express,非易失性内存主机控制器接口规范)、NVMeOverTCP(使用TCP网络的NVMe)、FC(Fibre Channel,光纤通道)、SAS(Serial Attached SCSI,串行连接SCSI接口)或者SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)协议等。HPC主机上的设备驱动(包括网络协议栈)用于实现存储局域网需要的存储传输层协议以正常驱使该存储局域网中的远程存储设备。例如,存储局域网是IP-SAN时,HPC主机上的设备驱动从上到下可依次包括:SCSI中层、iSCSI启动器、TCP/IP协议栈和网络驱动层。
实施例一
本实施例提供一种数据传输方法,可应用于HPC主机的内核态,参见图3,所述方法具体包括如下步骤301和步骤302。
步骤301、接收到用户态下发的用于指示远程传输数据的设定指令。
本步骤301中,设定指令可以为数据读取指令,表示:从远程存储设备对应的远程存储地址读取数据,存储至计算设备内存地址。当然,设定指令还可以是数据写入指令,表示:将计算设备内存地址存储的数据写入至远程存储设备对应的远程存储地址。已知远程存储地址,能够唯一确定对应的远程存储设备,具体的确定过程为现有技术,在此不再赘述。
步骤302、基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
本步骤302中,数据直通条件可以有多种方式。作为其中方式之一,数据直通条件可以是允许全部数据直通,与具体的设定指令无关。接收到的设定指令无论是任意一条所述数据读取指令,还是任意一条所述数据写入指令,都会采取数据直通的传输方式:使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。作为其中方式之二,数据直通条件还可以是仅允许单个传输方向上的数据直通,例如:仅允许写入数据直通,那么当接收到的设定指令为任意一条所述数据写入指令时,才认为满足数据直通条件,采取所述数据直通的传输方式;再例如,仅允许读取数据直通,那么当接收到的设定指令为任意一条所述数据读取指令时,才认为满足数据直通条件,采取所述数据直通的传输方式。作为其中方式之三,数据直通条件为仅允许指定指定计算设备内存地址与远程存储地址之间的数据直通。在实际应用当中,具体采用何种方式的数据直通条件,可以由HPC主机的内核态自己设定,也可按照HPC主机的用户态指示确定,本实施例对此不作具体限定。
对于上述方式二和方式三,是否满足数据直通条件与具体的设定指令有关。相应的,本实施例中的数据传输方法还包括:根据所述设定指令,识别是否满足数据直通条件。作为一种优选实施方式,获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;将获取结果作为数据直通条件。其中,读写类型可以是读操作类型或者写操作类型。该优选方式仅允许指定计算设备内存地址与指定远程存储地址之间指定读写类型的数据直通。并且,数据直通条件可以包括多组需要数据直通的计算设备内存地址、远程存储地址和读写类型,不同组间的计算设备内存地址、远程存储地址或读写类型不同。只要根据接收到的设定指令,识别出满足其中任意一组,即认为满足数据直通条件。
关于上述优选实施方式,考虑到远程存储地址于内核态而言,通常无法直接获知,而该远程存储地址所对应的存储文件索引节点或者描述符则是容易知悉,因此可以通过指定需要数据直通的存储文件索引节点或者描述符,结合对应关系间接地得到需要数据直通的远程存储地址,而存储文件描述符与存储文件索引节点的第一对应关系,以及存储文件索引节点与远程存储地址的第二对应关系,则均为内核态已知,例如现有的内核态的文件系统就具有第一对应关系的确定能力,内核态的块设备层就具有第二对应关系的确定能力。所以,示例性的,所述获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,可具体包括:获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;在接收到对所述存储文件索引节点的设定指令后,得到所述存储文件索引节点对应的远程存储地址。其中,获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,可具体包括:接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;获取所述文件描述符对应的存储文件索引节点。
进一步的,在本实施例以上方案的基础上,分如下两种情况详细阐述是否满足数据直通条件的识别过程:
(一)所述读写类型为读操作类型,设定指令为数据读取指令
根据设定指令,识别是否满足数据直通条件,包括:将数据读取指令发送至远程存储设备;接收到远程存储设备的数据读取指令应答后,将数据缓存队列中从远程存储设备读取的数据与数据直通条件中的远程存储地址进行匹配;如果匹配成功,则确定满足数据直通条件。
其中,匹配过程可以是:如果数据缓存队列中从远程存储设备读取的数据为来自数据直通条件中的远程存储地址的存储数据,则认为匹配成功,否则认为匹配失败。示例性的,数据缓存队列可进一步分为数据发送队列和数据接收队列,所述匹配过程中数据缓存队列具体为数据接收队列。
(二)所述读写类型为写操作类型,设定指令为数据写入指令
根据设定指令,识别是否满足数据直通条件,包括:识别设定指令是否包含数据直通条件中的远程存储地址;如果是,则确定满足数据直通条件。可选的,如果否,则确定不满足数据直通条件。
基于上述情况(一),使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输,包括:将网络协议栈的数据缓存队列中匹配成功的读取数据,直接拷贝至对应的计算设备内存地址。其中,对应的计算设备内存地址可以根据数据直通条件确定,具体为数据直通条件中与从远程存储设备读取的数据所匹配成功的远程存储地址,或者从对应的数据读取指令中提取。
基于上述情况(二),使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输,包括:将计算设备内存地址中的写入数据,直接拷贝至网络协议栈的数据缓存队列(具体为数据发送队列),发送数据缓存队列中的所述写入数据至远程存储地址对应的远程存储设备以进行存储。其中,计算设备内存地址可以根据数据直通条件确定,具体为数据直通条件中数据写入指令中的远程存储地址所对应的计算设备内存地址,或者从对应的数据写入指令中提取。
综上,本实施例提供的数据传输方法,在计算设备需要远程存储数据时,可以从计算设备内存直通到网络协议栈的数据缓存队列,在计算设备需要从远程存储设备读取数据时,可以从网络协议栈的数据缓存队列将数据直通到计算设备内存,避免了多次数据拷贝,提升了计算设备访问存储的效率。
实施例二
本实施例提供一种数据传输方法,可应用于HPC主机的用户态,参见图4,所述方法具体包括如下步骤401和步骤402。
步骤401、生成用于指示远程传输数据的设定指令。
本步骤401中,设定指令可以为数据读取指令,可根据如下第一请求生成:从远程存储设备对应的远程存储地址读取数据,存储至计算设备内存地址。当然,设定指令还可以是数据写入指令,可根据如下第二请求生成:将计算设备内存地址存储的数据写入至远程存储设备对应的远程存储地址。
步骤402、向内核态下发设定指令,以使内核态执行以下操作:基于设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
其中,内核态所执行的操作具体可参见上述实施例一中相关内容,属于同一技术构思,在此不再详述。设定指令的生成和下发,具体可以由用户态中需要远程读取数据和/或写入数据的进程(例如计算进程)实现。
优选的,还可由用户态发起数据直通控制,指示内核态具体哪些数据存取需要直通计算设备内存。本实施例提供的数据传输方法还包括:向内核态下发数据直通控制命令,以使内核态根据该命令确定数据直通条件。其中,数据直通控制命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型。所述读写类型为读操作类型或者写操作类型。本发明实施例中,所述数据传输中的数据具体指的是存储文件数据,对于用户态而言,其可见的只是存储文件,内核态则会将存储文件数据按照自己制定的策略存储到远程存储设备,故需要数据直通的远程存储地址在数据直通控制命令中由存储文件句柄表示。
当然,本实施例中,用户态还可控制内核态对数据直通方式的启闭。数据直通方式打开时,内核态启用数据直通功能,在确定满足具体的数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。反之,数据直通方式关闭时,内核态停用数据直通功能,依然使用现有技术中存储IO栈传输数据的方式传输。
进一步的,本实施例提供的数据传输方法,在向内核态下发设定指令之前,还包括:以直接操作文件流的方式,打开需要数据直通的存储文件。由此,能够避免发生用户态缓存与文件系统缓存之间的一次数据拷贝。
实施例三
基于前述典型应用场景下的网络拓扑,并以实施例一和实施例二为基础,本实施例提供一种具体的数据传输方法,即HPC主机从存储局域网读取数据的方法,未在本实施例中阐述的技术细节可参见上述对网络拓扑、实施例一和实施例二所描述的相关内容。参见图5,该方法运行于HPC主机的内核态,具体包括如下步骤501-503。
步骤501、计算代理模块控制设备驱动得到数据直通条件。
本步骤501中,计算代理模块可向设备驱动下发数据直通控制通知,指示设备驱动基于该通知生成数据直通条件。其中,所述通知可以仅是一个简单的控制指令,不指定具体是哪些数据需要直通,设备驱动收到该指令后得到如下数据直通条件:允许全部数据直通。
考虑到实际的应用需求以及资源的合理利用,通常是一部分数据需要直通,而另一部分数据仍可继续沿原有路径传送,故计算代理模块下发的数据直通控制通知应明确需要直通的特定数据。相应的,本步骤501具体包括:
子步骤5011、计算代理模块获取需要数据直通的计算设备内存地址、存储局域网磁盘块信息以及读写类型,其中读写类型为读操作类型;
子步骤5012、计算代理模块将获取结果传送至设备驱动,由设备驱动作为数据直通条件进行存储。
上述子步骤中,存储局域网磁盘块信息为一种远程存储地址,该信息对应的磁盘块可分布在一个或多个远程存储设备。计算代理模块发给设备驱动的通知描述了如下两方面信息:①需要数据直通的是下述两个存储位置:计算设备内存地址和存储局域网磁盘块信息对应的磁盘块;②读写类型,具体是将从存储局域网磁盘块信息对应的磁盘块读取的数据存储至计算设备内存地址处。其中,上述两方面信息可以是预先静态配置好供计算代理模块通过读取操作直接或间接得到,也可以是通过上层用户态的计算进程下发获得。考虑到实际应用中,需要数据直通的存储局域网磁盘块信息于计算代理模块而言,往往较难直接取得,而该存储局域网磁盘块信息对应的存储文件信息则是容易获知(例如通过文件系统解析得到)的,故可以先获取需要数据直通的存储文件信息,进而据此借助块设备层得到对应的存储局域网磁盘块信息。相应的,上述子步骤5011具体包括:
子步骤50111、计算代理模块获取需要数据直通的计算设备内存地址、存储文件索引节点和读写类型,其中读写类型为读操作类型;
子步骤50112、计算代理模块将存储文件索引节点下发至块设备层,通知块设备层返回对应的存储局域网磁盘块信息。
其中,作为一种具体实施方式,上述子步骤50111包括:
计算代理模块接收用户态的计算进程下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,其中读写类型为读操作类型;
计算代理模块从计算进程文件句柄表查找数据直通控制命令中存储文件句柄对应的文件描述符;
计算代理模块从文件系统获取所述文件描述符对应的存储文件索引节点。
本实施例中,文件系统实现对存储空间的管理,对上抽象一个存储文件的概念(用户可见的只是文件的概念),将文件数据按照自己制定的策略存储到存储局域网磁盘块,其记录有存储文件的描述符与索引节点之间的对应关系,而块设备层则记录了存储文件索引节点与存储局域网磁盘块信息之间的对应关系,通过这两种对应关系实现了文件的虚拟空间到实际线性设备(存储局域网磁盘块)的映射。上述具体实施方式中,用户态的计算进程下发需要数据直通的存储文件句柄给计算代理模块后,计算代理模块首先查找对应的存储文件描述符,之后通过文件系统解析该存储文件描述符得到对应的存储文件索引节点,进而可以在块设备层获取存储文件索引节点对应的存储局域网磁盘块信息。进一步的,考虑到现有技术中块设备层在接收到数据读取指令后会执行该指令对应的存储局域网磁盘块信息的确定,对此本实施例可复用该步骤,计算代理模块通知块设备层在接收到对所述存储文件索引节点的数据读取指令后返回对应的存储局域网磁盘块信息即可,无需块设备层收到通知后立即上报存储局域网磁盘块信息。
优选的,在用户态的计算进程下发需要数据直通的存储文件句柄给计算代理模块之前,用户态的计算进程以直接操作文件流DirectIO的方式打开需要数据直通的存储文件。该优选方式能够避免用户态数据缓存与文件系统缓存之间的一次数据拷贝。
步骤502、文件系统接收用户态的计算进程下发的数据读取指令,经块设备层下发至设备驱动。
步骤503、设备驱动基于所述数据读取指令,在满足数据直通条件时,将网络协议栈的数据缓存队列中从存储局域网读取的数据,拷贝至计算设备内存。
具体实施时,设备驱动收到上层下发的数据读取指令后,将该指令发送到存储局域网;而后,存储局域网向HPC主机返回该指令对应的数据和指令应答状态;HPC主机的设备驱动会将来自存储局域网的数据存储在网络协议栈的数据缓存队列(具体为数据接收队列),待收到指令应答状态完成后,识别出满足数据直通条件时,将数据缓存队列中该指令对应的数据拷贝至计算设备内存。而后,HPC主机的设备驱动可将数据读取指令的读操作完成指示上报存储IO栈上层,该指示经块设备层到达文件系统,由文件系统告知用户态的计算进程本次数据读取指令的读操作完成。对于不满足数据直通条件的情形,仍会沿原有通道在存储IO栈从下到上依次传输数据。具体的,步骤503包括:设备驱动将数据读取指令发送至存储局域网;
设备驱动接收到存储局域网的读取应答后,将网络协议栈的数据缓存队列中从存储局域网读取的数据,与数据直通条件中的存储局域网磁盘块信息进行匹配;
设备驱动将数据缓存队列中匹配成功的读取数据直接拷贝至对应的计算设备内存地址。
上述步骤503具体实现方式中,设备驱动所要识别的是从存储局域网目标磁盘块读取的这一特定类型数据,其中目标磁盘块根据计算代理模块下发的读操作类型的需要数据直通的存储局域网磁盘块信息确定。如果本次数据读取指令所读取的数据属于此类数据,则设备驱动可启动系统直接内存访问将其直接拷贝至对应的计算设备内存地址,而不再报送存储IO栈上层。
实施例四
基于前述典型应用场景下的网络拓扑,并以实施例一和实施例二为基础,本实施例提供另一种具体的数据传输方法,即HPC主机向存储局域网写入数据的方法,未在本实施例中阐述的技术细节可参见上述对网络拓扑、实施例一和实施例二所描述的相关内容。参见图6,该方法运行于HPC主机的内核态,具体包括如下步骤601-603。
步骤601、计算代理模块控制设备驱动得到数据直通条件。
本步骤601中,计算代理模块可向设备驱动下发数据直通控制通知,指示设备驱动基于该通知生成数据直通条件。其中,所述通知可以仅是一个简单的控制指令,不指定具体是哪些数据需要直通,设备驱动收到该指令后得到如下数据直通条件:允许全部数据直通。
考虑到实际的应用需求以及资源的合理利用,通常是一部分数据需要直通,而另一部分数据仍可继续沿原有路径传送,故计算代理模块下发的数据直通控制通知应明确需要直通的特定数据。相应的,本步骤601具体包括:
子步骤6011、计算代理模块获取需要数据直通的计算设备内存地址、存储局域网磁盘块信息以及读写类型,其中读写类型为写操作类型;
子步骤6012、计算代理模块将获取结果传送至设备驱动,由设备驱动作为数据直通条件进行存储。
上述子步骤中,存储局域网磁盘块信息为一种远程存储地址,该信息对应的磁盘块可分布在一个或多个远程存储设备。计算代理模块发给设备驱动的通知描述了如下两方面信息:①需要数据直通的是下述两个存储位置:计算设备内存地址和存储局域网磁盘块信息对应的磁盘块;②读写类型,具体是将计算设备内存地址处的数据写入至存储局域网磁盘块信息对应的磁盘块。其中,上述两方面信息可以是预先静态配置好供计算代理模块通过读取操作直接或间接得到,也可以是通过上层用户态的计算进程下发获得。考虑到实际应用中,需要数据直通的存储局域网磁盘块信息于计算代理模块而言,往往较难直接取得,而该存储局域网磁盘块信息对应的存储文件信息则是容易获知(例如通过文件系统解析得到)的,故可以先获取需要数据直通的存储文件信息,进而据此借助块设备层得到对应的存储局域网磁盘块信息。相应的,上述子步骤6011具体包括:
子步骤60111、计算代理模块获取需要数据直通的计算设备内存地址、存储文件索引节点和读写类型,其中读写类型为写操作类型;
子步骤60112、计算代理模块将存储文件索引节点下发至块设备层,通知块设备层返回对应的存储局域网磁盘块信息。
其中,作为一种具体实施方式,上述子步骤60111包括:
计算代理模块接收用户态的计算进程下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,其中读写类型为写操作类型;
计算代理模块从计算进程文件句柄表查找数据直通控制命令中存储文件句柄对应的文件描述符;
计算代理模块从文件系统获取所述文件描述符对应的存储文件索引节点。
本实施例中,文件系统实现对存储空间的管理,对上抽象一个存储文件的概念(用户可见的只是文件的概念),将文件数据按照自己制定的策略存储到存储局域网磁盘块,其记录有存储文件的描述符与索引节点之间的对应关系,而块设备层则记录了存储文件索引节点与存储局域网磁盘块信息之间的对应关系,通过这两种对应关系实现了文件的虚拟空间到实际线性设备(存储局域网磁盘块)的映射。上述具体实施方式中,用户态的计算进程下发需要数据直通的存储文件句柄给计算代理模块后,计算代理模块首先查找对应的存储文件描述符,之后通过文件系统解析该存储文件描述符得到对应的存储文件索引节点,进而可以在块设备层获取存储文件索引节点对应的存储局域网磁盘块信息。进一步的,考虑到现有技术中块设备层在接收到数据读取指令后会执行该指令对应的存储局域网磁盘块信息的确定,对此本实施例可复用该步骤,计算代理模块通知块设备层在接收到对所述存储文件索引节点的数据读取指令后返回对应的存储局域网磁盘块信息即可,无需块设备层收到通知后立即上报存储局域网磁盘块信息。
优选的,在用户态的计算进程下发需要数据直通的存储文件句柄给计算代理模块之前,用户态的计算进程以直接操作文件流DirectIO的方式打开需要数据直通的存储文件。该优选方式能够避免用户态数据缓存与文件系统缓存之间的一次数据拷贝。
步骤602、文件系统接收用户态的计算进程下发的数据写入指令,经块设备层下发至设备驱动。
步骤603、设备驱动基于所述数据写入指令,在满足数据直通条件时,将计算设备内存中的写入数据拷贝至网络协议栈的数据缓存队列,发送数据缓存队列中的所述写入数据至存储局域网进行存储。
设备驱动收到上层下发的数据写入指令后,解析该指令得到本次数据写入对应的存储局域网磁盘块信息,识别出满足数据直通条件后,启动系统直接内存访问将计算设备内存中的写入数据直接拷贝至网络协议栈的数据缓存队列(具体为数据发送队列),而后可经网络驱动层将数据缓存队列中的写入数据发送至存储局域网中对应的磁盘块进行存储。另一方面,设备驱动还将数据写入指令发送到存储局域网,等待存储局域网返回数据写入成功的指令应答,而后收到该指令应答后,可将数据写入指令的写操作完成指示通知存储IO栈上层,该指示经块设备层到达文件系统,由文件系统告知用户态的计算进程本次数据写入指令的写操作完成。对于不满足数据直通条件的情形,仍会沿原有通道在存储IO栈从上到下依次传输。
具体的,步骤603包括:
设备驱动识别数据写入指令是否包含数据直通条件中的存储局域网磁盘块信息;
如果是,则确定满足数据直通条件,设备驱动将计算设备内存地址中的写入数据拷贝至网络协议栈的数据缓存队列,以发往局域存储网络。
上述步骤603具体实现方式中,设备驱动所要识别的是要写入存储局域网目标磁盘块的这一特定类型数据,其中目标磁盘块根据计算代理模块下发的写操作类型的需要数据直通的存储局域网磁盘块信息确定。如果本次数据写入指令所写入的数据属于此类数据,则设备驱动可启动系统直接内存访问将其直接从计算设备内存拷贝至网络协议栈的数据发送队列。
需要说明的是,HPC主机还可同时具备执行上述实施例三中从存储局域网读取数据的方法和实施例四中向存储局域网写入数据的方法的功能。
实施例五
本实施例在上述各实施例的基础上,提供一优选实施例。本实施例适用于高性能计算与存储融合的网络拓扑,在该网络拓扑中,负责数据计算的HPC集群中的HPC主机可以向IP-SAN集群写入计算设备内存数据和从IP-SAN集群读取数据至计算设备内存。所述HPC主机分为用户态和内核态,包括:存储输入输出IO栈;以及,运行于内核态的计算代理模块。其中,存储IO栈从上到下依次包括:用户态的计算进程;以及,内核态的文件系统、块设备层和设备驱动。进一步的,设备驱动从上到下依次包括:SCSI中层、iSCSI启动器、TCP/IP协议栈和网络驱动层。
如图7所示,计算设备内存与TCP/IP协议栈的数据缓存队列间数据直通的功能示意图,其中:
一、用户态的计算进程完成以下功能
1)以DirectIO的方式打开需要读写的存储文件,该方式打开的存储文件可以绕过文件系统缓存,避免用户态缓存与文件系统缓存之间的一次数据拷贝;
2)分配并准备计算设备内存资源;
3)下发数据直通控制命令到计算代理模块,通知计算代理模块执行或解除数据直通操作,命令中携带了需要数据直通的存储文件句柄、计算设备内存地址和读写类型等信息;
4)发起对存储文件的读写操作;
二、计算代理模块负责处理以下功能
1)处理用户态的计算进程的命令请求,如请求IP-SAN数据直通计算设备内存,或者解除直通,数据则按照现有技术继续送至存储IO栈,并记录用户态的计算进程下发的需要数据直通的存储文件句柄、计算设备内存地址和读写类型等信息;
2)查询计算进程打开的存储文件句柄对应的inode(索引节点),并通过块设备层获取该inode(索引节点)对应的IP-SAN集群中所有磁盘块信息;
三、iSCSI启动器需要新增以下功能
1)接收计算代理模块命令,从中获取并记录需要数据直通的计算设备内存地址、IP-SAN磁盘块信息和读写类型;
2)识别数据直通条件
在收到SCSI中层下发的IO数据读写指令时,解析该指令,判断所要读写的数据是否是计算代理模块下发的需要直通的IO数据;
3)对于需要直通的读IO数据,启动系统直接内存访问从TCP协议栈的数据接收队列拷贝到计算设备内存;
4)对于需要直通的写IO数据,启动系统直接内存访问从计算设备内存拷贝到TCP协议栈的数据发送队列,发送至IP-SAN集群。
以下就HPC主机从IP-SAN集群读取数据至计算设备内存和向IP-SAN集群写入计算设备内存数据这两个不同的操作,分别通过两个示例详细阐述其具体实现过程。
示例一
参见图8,HPC主机从IP-SAN集群读取数据至计算设备内存的交互过程,具体包括如下步骤801-810:
步骤801、用户态的计算进程以DirectIO的方式,打开需要读取的存储文件句柄。
步骤802、用户态的计算进程通过ioctl(对设备I/O通道进行管理的函数)的方式,下发数据直通控制命令到内核态的计算代理模块,该命令包括如下信息①需要数据直通的是下述两个参数对应的两个存储位置:计算设备内存地址和存储文件句柄;②读写类型为读操作类型,具体是从存储文件句柄对应的存储位置读取数据到计算设备内存地址对应的存储位置。
步骤803、内核态的计算代理模块收到数据直通控制命令后,从计算进程文件句柄表查找到该命令中存储文件句柄对应的文件描述符,通过文件系统解析出该文件描述符对应的存储文件索引节点inode,然后将该存储文件索引节点下发到块设备层,通知块设备层在接收到对该存储文件索引节点的数据读取指令后将该存储文件索引节点对应的IP-SAN集群中的磁盘块信息返回给计算代理模块。
步骤804、用户态的计算进程调用read接口发起读文件的数据读取指令。
步骤805、内核态的文件系统收到读文件操作后,将其转换为读输入输出IO的数据读取指令,下发给块设备层。
步骤806、在读IO下发到块设备层后,块设备层识别到读IO的文件索引节点为计算代理模块下发的存储文件索引节点时,将该存储文件索引节点对应的IP-SAN集群中的磁盘块信息返回给计算代理模块,计算代理模块处理完后,块设备层将读IO下发到SCSI中层。
步骤807、计算代理模块收到块设备层返回的磁盘块信息后,将需要数据直通的计算设备内存地址、磁盘块信息下发到iSCSI启动器,通知iSCSI启动器对相应磁盘块的读IO操作进行处理。其中,下发给iSCSI启动器的磁盘块信息即为需要数据直通的存储文件句柄对应的存储位置。
步骤808、iSCSI启动器模块收到计算代理模块的通知后,记录收到的磁盘块信息和计算设备内存地址;收到SCSI中层下发的读IO时,发送读IO到远程IP-SAN集群iSCSI目标器。
步骤809、iSCSI启动器收到IP-SAN集群iSCSI目标器对读IO的应答,此时读IO的应答数据(即从IP-SAN集群iSCSI目标器读取的数据)存储在TCP/IP协议栈的数据接收队列,iSCSI启动器识别数据接收队列中与计算代理模块通知的磁盘块匹配的数据,启动系统直接内存访问将识别出的数据拷贝至计算代理模块通知的计算设备内存地址。
步骤810、数据拷贝完成且收到IP-SAN集群iSCSI目标器对读IO的应答状态完成后,iSCSI启动器向上层通知读IO完成,读IO完成的通知先后经SCSI中层、块设备层到达文件系统,文件系统向用户态计算进程返回读文件操作完成。至此,文件读取过程完成,数据直通到计算设备内存中。
示例二
参见图9,HPC主机向IP-SAN集群写入计算设备内存数据的交互过程,具体包括如下步骤901-909。
步骤901、用户态的计算进程以DirectIO的方式,打开需要读取的存储文件句柄。
步骤902、用户态的计算进程通过ioctl(对设备I/O通道进行管理的函数)的方式,下发数据直通控制命令到内核态的计算代理模块,该命令包括如下信息①需要数据直通的是下述两个参数对应的两个存储位置:计算设备内存地址和存储文件句柄;②读写类型为写操作类型,具体是将计算设备内存地址对应的存储位置的数据写入存储文件句柄对应的存储位置。
步骤903、内核态的计算代理模块收到数据直通控制命令后,从计算进程文件句柄表查找到该命令中存储文件句柄对应的文件描述符,通过文件系统解析出该文件描述符对应的存储文件索引节点inode,然后将该存储文件索引节点下发到块设备层,通知块设备层在接收到对该存储文件索引节点的数据写入指令后将该存储文件索引节点对应的IP-SAN集群中的磁盘块信息返回给计算代理模块。
步骤904、用户态的计算进程调用write接口发起写文件的数据写入指令。
步骤905、内核态的文件系统收到写文件操作后,将其转换为写输入输出IO的数据写入指令,下发给块设备层。
步骤906、在写IO下发到块设备层后,块设备层识别到写IO的文件索引节点为计算代理模块下发的存储文件索引节点时,将该存储文件索引节点对应的IP-SAN集群中的磁盘块信息返回给计算代理模块,计算代理模块处理完后,块设备层将写IO下发到SCSI中层。
步骤907、计算代理模块收到块设备层返回的磁盘块信息后,将需要数据直通的计算设备内存地址、磁盘块信息下发到iSCSI启动器,通知iSCSI启动器对相应磁盘块的写IO操作进行处理。其中,下发给iSCSI启动器的磁盘块信息即为需要数据直通的存储文件句柄对应的存储位置。
步骤908、iSCSI启动器模块收到计算代理模块的通知后,记录收到的磁盘块信息和计算设备内存地址;收到SCSI中层下发的写IO后,识别出写IO的LUN(逻辑单元号)和LBA(逻辑块地址)为需要数据直通的磁盘块地址时,启动系统直接内存访问将计算设备内存地址中的写入数据拷贝至TCP/IP协议栈的数据发送队列,而后经网络驱动层将数据发送队列中的写入数据发送至IP-SAN集群iSCSI目标器存储在对应的磁盘块。
步骤909、iSCSI启动器调用TCP的发送接口将写IO发送至IP-SAN集群iSCSI目标器;收到iSCSI目标器数据写入成功的指令应答后,iSCSI启动器向上层通知写IO成功。
写IO成功的通知先后经SCSI中层、块设备层到达文件系统,文件系统向用户态的计算进程返回写文件操作成功。至此,文件写入过程完成,数据从计算设备内存直通到网络协议栈的数据发送队列。
与现有技术不同,上述实施例三、实施例四和实施例五提供的方案中,在HPC主机的内核态新增计算代理模块,同时修改HPC主机的设备驱动使其增加识别需要直通的IO数据和拷贝IO数据的功能,由此架起存储IO栈和计算软件栈之间直接沟通的桥梁,实现计算设备内存与网络协议栈数据缓存队列间数据直通的功能。
实施例六
本实施例提供一种数据传输装置,可用于执行以上实施例一的数据传输方法。参见图10,该装置包括:
指令接收单元1001,用于接收到用户态下发的用于指示远程传输数据的设定指令;
数据传输单元1002,用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述装置还包括数据直通识别单元1003,用于:根据所述设定指令,识别是否满足数据直通条件。
进一步的,所述装置还包括数据直通条件确定单元1004,用于:获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;将获取结果作为所述数据直通条件。
进一步的,所述数据直通条件确定单元1004用于获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;
在接收到对所述存储文件索引节点的所述设定指令后,得到所述存储文件索引节点对应的远程存储地址。
进一步的,所述数据直通条件确定单元1004具体用于获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,包括:
接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;
获取所述文件描述符对应的存储文件索引节点。
进一步的,所述读写类型为读操作类型,设定指令为数据读取指令;
数据直通识别单元1003用于根据所述设定指令,识别是否满足数据直通条件,包括:
将所述数据读取指令发送至远程存储设备;
接收到所述远程存储设备的数据读取指令应答后,将所述数据缓存队列中从远程存储设备读取的数据与所述数据直通条件中的远程存储地址进行匹配;
如果匹配成功,则确定满足数据直通条件。
进一步的,所述读写类型为写操作类型,设定指令为数据写入指令;
数据直通识别单元1003用于根据所述设定指令,识别是否满足数据直通条件,包括:
识别所述设定指令中的远程存储地址是否为所述所述数据直通条件中的远程存储地址;
如果是,则确定满足数据直通条件。
本实施例提供的数据传输装置与前述实施例一提供的数据传输方法属于同一发明构思,未在本实施例中描述的技术细节可参见实施例一中的相关描述,在此不再赘述。
实施例七
本实施例提供一种数据传输装置,可用于执行以上实施例二的数据传输方法。参见图11,该装置包括:
设定指令生成单元1101,用于生成用于指示远程传输数据的设定指令;
设定指令下发单元1102,用于向内核态下发所述设定指令,以使所述内核态执行以下操作:基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
进一步的,所述装置还包括第一控制单元1103,用于:向内核态下发数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,以使内核态根据该命令确定数据直通条件。
进一步的,所述装置还包括第二控制单元1104,用于:控制内核态对数据直通方式的启闭。
进一步的,所述装置还包括文件打开单元1100,用于在设定指令下发单元向内核态下发所述设定指令之前:以直接操作文件流的方式,打开需要数据直通的存储文件。
本实施例提供的数据传输装置与前述实施例二提供的数据传输方法属于同一发明构思,未在本实施例中描述的技术细节可参见实施例二中的相关描述,在此不再赘述。
此外,本申请实施例还提供一种高性能计算主机,包括用户态和内核态,其中:用户态包括如实施例六所述的数据传输装置;内核态包括如实施例七的数据传输装置。
当然,还可从其它角度划分高性能计算主机的组成部分。例如,在高性能计算与存储融合的网络拓扑中,参见图12,一种高性能计算主机可包括计算代理模块1200和存储输入输出IO栈;其中,存储IO栈包括:用户态的计算进程1201,以及,内核态的文件系统1202、块设备层1203和设备驱动1204;设备驱动包括网络协议栈;
计算代理模块1200,运行于内核态,用于:控制设备驱动1204得到数据直通条件;
文件系统1202,用于接收用户态的计算进程1201下发的用于指示远程传输数据的设定指令,经块设备层1203下发至设备驱动1204;
设备驱动1204,用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
示例性的,计算代理模块1200用于控制设备驱动1204得到数据直通条件,具体包括:
获取需要数据直通的计算设备内存地址、存储局域网磁盘块信息以及读写类型;
将获取结果传送至设备驱动1204,由设备驱动1204作为数据直通条件进行存储。
其中,计算代理模块1200用于获取需要数据直通的计算设备内存地址、存储局域网磁盘块信息以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点和读写类型;
将存储文件索引节点下发至块设备层1203,通知块设备层1203返回对应的存储局域网磁盘块信息。
进一步的,计算代理模块1200用于获取需要数据直通的计算设备内存地址、存储文件索引节点和读写类型,包括:
接收用户态的计算进程下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找数据直通控制命令中存储文件句柄对应的文件描述符;
从文件系统1202获取所述文件描述符对应的存储文件索引节点。
以下,分别就两种设定指令类型对设备驱动1204具体的功能进行介绍。
一、所述设定指令类型为数据读取指令
设备驱动1204用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输,具体包括:
将数据读取指令发送至存储局域网;
接收到存储局域网的读取应答后,将网络协议栈的数据缓存队列中从存储局域网读取的数据,与数据直通条件中的存储局域网磁盘块信息进行匹配;
将数据缓存队列中匹配成功的读取数据直接拷贝至对应的计算设备内存地址。
二、所述设定指令类型为数据写入指令
设备驱动1204用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输,具体包括:
识别数据写入指令是否包含数据直通条件中的存储局域网磁盘块信息;
如果是,则确定满足数据直通条件,将计算设备内存地址中的写入数据拷贝至网络协议栈的数据缓存队列,以发往局域存储网络。
进一步的,用户态的计算进程1201,还可用于:向内核态下发数据直通控制命令,以使内核态根据该命令确定数据直通条件;控制内核态对数据直通方式的启闭;以直接操作文件流的方式,打开需要数据直通的存储文件。
本申请实施例还提供一种计算系统,该系统包括:所述计算设备,以及,所述高性能计算主机。
综上,本申请实施例提供了一种数据传输方案,HPC主机从存储局域网读取计算设备需要的数据时,可直接将数据从主机上网络协议栈的数据接收队列拷贝到计算设备内存,向存储局域网存储计算设备的数据时,也可直接从计算设备内存拷贝数据到主机上网络协议栈的数据发送队列。相较于现有技术,本申请实施例方案能够减少两次数据拷贝,具体如下:
1)当计算设备从存储局域网读取数据的时候,从网络协议栈的数据接收队列直接拷贝数据到计算设备内存,减少了数据上送存储IO栈SGL数据拷贝、内核态到用户态buffer数据拷贝、用户态buffer到计算设备内存的数据拷贝,提升了从存储局域网读取数据的效率;
2)当计算设备完成计算后的结果数据,需要存入存储局域网时,将计算设备内存的数据直接拷贝到主机上网络协议栈的数据发送队列,减少了计算设备内存到用户态buffer、用户态buffer到内核态buffer,再到网络协议栈的拷贝,提升了向存储局域网写入数据的效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (24)
1.一种数据传输方法,其特征在于,所述方法包括:
接收到用户态下发的用于指示远程传输数据的设定指令;
基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述设定指令,识别是否满足数据直通条件。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;
将获取结果作为所述数据直通条件。
4.根据权利要求3所述的方法,其特征在于,获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;
在接收到对所述存储文件索引节点的所述设定指令后,得到所述存储文件索引节点对应的远程存储地址。
5.根据权利要求4所述的方法,其特征在于,获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,包括:
接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;
获取所述文件描述符对应的存储文件索引节点。
6.根据权利要求3所述的方法,其特征在于,所述读写类型为读操作类型,设定指令为数据读取指令;
根据所述设定指令,识别是否满足数据直通条件,包括:
将所述数据读取指令发送至远程存储设备;
接收到所述远程存储设备的数据读取指令应答后,将所述数据缓存队列中从远程存储设备读取的数据与所述数据直通条件中的远程存储地址进行匹配;
如果匹配成功,则确定满足数据直通条件。
7.根据权利要求3所述的方法,其特征在于,所述读写类型为写操作类型,设定指令为数据写入指令;
根据所述设定指令,识别是否满足数据直通条件,包括:
识别所述设定指令中的远程存储地址是否为所述所述数据直通条件中的远程存储地址;
如果是,则确定满足数据直通条件。
8.一种数据传输方法,其特征在于,所述方法包括:
生成用于指示远程传输数据的设定指令;
向内核态下发所述设定指令,以使所述内核态执行以下操作:基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
向内核态下发数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,以使内核态根据该命令确定数据直通条件。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
控制内核态对数据直通方式的启闭。
11.根据权利要求8所述的方法,其特征在于,在向内核态下发所述设定指令之前,所述方法还包括:
以直接操作文件流的方式,打开需要数据直通的存储文件。
12.一种数据传输装置,其特征在于,所述装置包括:
指令接收单元,用于接收到用户态下发的用于指示远程传输数据的设定指令;
数据传输单元,用于基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括数据直通识别单元,用于:根据所述设定指令,识别是否满足数据直通条件。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括数据直通条件确定单元,用于:
获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型;
将获取结果作为所述数据直通条件。
15.根据权利要求14所述的装置,其特征在于,所述数据直通条件确定单元用于获取需要数据直通的计算设备内存地址、远程存储地址以及读写类型,包括:
获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型;
在接收到对所述存储文件索引节点的所述设定指令后,得到所述存储文件索引节点对应的远程存储地址。
16.根据权利要求15所述的装置,其特征在于,所述数据直通条件确定单元具体用于获取需要数据直通的计算设备内存地址、存储文件索引节点以及读写类型,包括:
接收用户态下发的数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型;
从计算进程文件句柄表查找所述数据直通控制命令中存储文件句柄对应的文件描述符;
获取所述文件描述符对应的存储文件索引节点。
17.根据权利要求14所述的装置,其特征在于,所述读写类型为读操作类型,设定指令为数据读取指令;
数据直通识别单元用于根据所述设定指令,识别是否满足数据直通条件,包括:
将所述数据读取指令发送至远程存储设备;
接收到所述远程存储设备的数据读取指令应答后,将所述数据缓存队列中从远程存储设备读取的数据与所述数据直通条件中的远程存储地址进行匹配;
如果匹配成功,则确定满足数据直通条件。
18.根据权利要求14所述的装置,其特征在于,所述读写类型为写操作类型,设定指令为数据写入指令;
数据直通识别单元用于根据所述设定指令,识别是否满足数据直通条件,包括:
识别所述设定指令中的远程存储地址是否为所述所述数据直通条件中的远程存储地址;
如果是,则确定满足数据直通条件。
19.一种数据传输装置,其特征在于,所述装置包括:
设定指令生成单元,用于生成用于指示远程传输数据的设定指令;
设定指令下发单元,用于向内核态下发所述设定指令,以使所述内核态执行以下操作:基于所述设定指令,在满足数据直通条件时使用与计算设备内存直连的网络协议栈的数据缓存队列,完成计算设备内存与远程存储设备之间的数据传输。
20.根据权利要求19所述的装置,其特征在于,所述装置还包括第一控制单元,用于:
向内核态下发数据直通控制命令,该命令包括需要数据直通的计算设备内存地址、存储文件句柄和读写类型,以使内核态根据该命令确定数据直通条件。
21.根据权利要求19所述的装置,其特征在于,所述装置还包括第二控制单元,用于:
控制内核态对数据直通方式的启闭。
22.根据权利要求19所述的装置,其特征在于,所述装置还包括文件打开单元,用于在设定指令下发单元向内核态下发所述设定指令之前:
以直接操作文件流的方式,打开需要数据直通的存储文件。
23.一种高性能计算主机,其特征在于,包括用户态和内核态,其中:
用户态包括如权利要求19-22所述的数据传输装置;
内核态包括如权利要求12-18所述的数据传输装置。
24.一种计算系统,其特征在于,包括:计算设备,以及,如权利要求23所述的高性能计算主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211638320.0A CN115857821A (zh) | 2022-12-19 | 2022-12-19 | 数据传输方法、装置、主机及计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211638320.0A CN115857821A (zh) | 2022-12-19 | 2022-12-19 | 数据传输方法、装置、主机及计算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115857821A true CN115857821A (zh) | 2023-03-28 |
Family
ID=85674376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211638320.0A Pending CN115857821A (zh) | 2022-12-19 | 2022-12-19 | 数据传输方法、装置、主机及计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115857821A (zh) |
-
2022
- 2022-12-19 CN CN202211638320.0A patent/CN115857821A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8656136B2 (en) | Computer system, computer and method for performing thin provisioning capacity management in coordination with virtual machines | |
US7366808B2 (en) | System, method and apparatus for multiple-protocol-accessible OSD storage subsystem | |
EP1734450B1 (en) | Storage system and replication creation method thereof | |
US7363446B2 (en) | Storage system and storage control device | |
CN107122127B (zh) | 向存储硬件的存储操作卸载 | |
US7660946B2 (en) | Storage control system and storage control method | |
US6912627B2 (en) | Method of creating a storage area & storage device | |
US7467241B2 (en) | Storage control method and storage control system | |
US7596637B2 (en) | Storage apparatus and control method for the same, and computer program product | |
US20110066823A1 (en) | Computer system performing capacity virtualization based on thin provisioning technology in both storage system and server computer | |
US20070174566A1 (en) | Method of replicating data in a computer system containing a virtualized data storage area | |
US20060074957A1 (en) | Method of configuration management of a computer system | |
US20070016749A1 (en) | Disk control system and control method of disk control system | |
JP2008134712A (ja) | ファイル共有システム、ファイル共有装置及びファイル共有用ボリュームの移行方法 | |
US7016982B2 (en) | Virtual controller with SCSI extended copy command | |
US20210232458A1 (en) | Logical backup using a storage system | |
US10789018B2 (en) | Supporting non-disruptive movement of a logical volume of non-volatile data storage between storage appliances | |
US7827269B2 (en) | System and method for managing networked storage devices with a plurality of logical units | |
CN112988468A (zh) | 虚拟化操作系统使用Ceph的方法和计算机可读存储介质 | |
US11226756B2 (en) | Indirect storage data transfer | |
CN115857821A (zh) | 数据传输方法、装置、主机及计算系统 | |
US8117405B2 (en) | Storage control method for managing access environment enabling host to access data | |
US20090138630A1 (en) | Storage system and external volume connection path searching method for storage system | |
US8521954B2 (en) | Management computer and volume configuration management method | |
JP2006011803A (ja) | 情報処理システムおよびその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |