一种数据传输方法、系统、装置及存储介质转让专利

申请号 : CN202210759837.9

文献号 : CN114817093B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李幸远王江孙华锦李树青

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明公开了一种数据传输方法、系统、装置及存储介质,涉及数据传输领域,用于对数据进行传输,存储阵列卡中设置了地址映射逻辑,主机将自身的存储地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,在通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令后,NVMeSSD可直接数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输,也即NVMeSSD可直接与主机内部的存储地址空间进行数据传输。可见,本申请中无需存储阵列卡进行中间的数据传输指令处理过程,也无需存储阵列卡对数据的中间搬移过程,数据可直接在主机和NVMeSSD之间传输,提高了数据传输的效率,降低了存储阵列卡的性能要求。

权利要求 :

1.一种数据传输方法,其特征在于,应用于数据传输装置中的主机,所述数据传输装置包括依次连接的所述主机、存储阵列卡以及NVMeSSD,所述主机与所述存储阵列卡之间以及所述存储阵列卡与所述NVMeSSD之间通过PCIe总线连接;所述存储阵列卡包括地址映射逻辑,所述NVMeSSD将自身的控制地址空间通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡,映射后的所述控制地址空间为硬盘控制映射地址;所述方法包括:将所述主机的存储地址空间通过所述存储阵列卡的地址映射逻辑映射至所述存储阵列卡,映射后的所述存储地址空间为主机存储映射地址;

通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输。

2.如权利要求1所述的数据传输方法,其特征在于,所述存储阵列卡还包括中断映射逻辑;

通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:将自身的中断信号地址空间通过所述存储阵列卡的中断映射逻辑映射至所述存储阵列卡,映射后的所述中断信号地址空间为主机中断信号映射地址;

通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之后,还包括:在所述NVMeSSD通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号后处理所述中断信号。

3.如权利要求2所述的数据传输方法,其特征在于,通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:建立I/O队列,并将所述I/O队列的基地址通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡;

通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;

在所述NVMeSSD通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号后处理所述中断信号,包括:在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。

4.如权利要求3所述的数据传输方法,其特征在于,所述I/O队列包括命令完成队列和命令提交队列;

通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据,包括:通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;

在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号,包括:在所述NVMeSSD使能所述命令完成队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。

5.如权利要求4所述的数据传输方法,其特征在于,通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据之前,还包括:将各个所述数据传输命令写入所述命令提交队列中。

6.如权利要求3所述的数据传输方法,其特征在于,所述存储阵列卡还包括硬盘控制逻辑,用于基于所述I/O队列为所述NVMeSSD建立管理命令队列;

通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据,包括:在所述存储阵列卡为所述NVMeSSD建立所述管理命令队列后,通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD基于所述管理命令队列从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;

在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号,包括:在所述存储阵列卡为所述NVMeSSD建立所述管理命令队列后,在所述NVMeSSD通过所述管理命令队列使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。

7.如权利要求1所述的数据传输方法,其特征在于,通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:当所述数据传输指令为写数据指令时,判断与所述写数据指令对应的数据是否为待校验数据;

若是,则将所述写数据指令发送至所述存储阵列卡,以使所述存储阵列卡接收并校验所述主机中与所述写数据指令对应的数据,将校验后的与所述写数据指令对应的数据写入至所述NVMeSSD中;

若否,则进入通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输的步骤。

8.如权利要求1‑7任一项所述的数据传输方法,其特征在于,所述数据传输装置包括多个NVMeSSD与所述存储阵列卡连接;

通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:当所述数据传输指令为读数据指令时,判断与所述读数据指令对应的数据是否为待校验数据;

若为所述待校验数据,则判断与所述存储阵列卡连接的各个所述NVMeSSD是否均处于正常状态;

若不为所述待校验数据,或各个所述NVMeSSD均处于正常状态,则通过所述存储阵列卡中的硬盘控制映射地址向目标NVMeSSD发送所述读数据指令,以使所述目标NVMeSSD将与所述读数据指令对应的数据写入所述存储阵列卡中的主机存储映射地址;

若各个所述NVMeSSD并非均处于所述正常状态,则判断所述目标NVMeSSD是否处于正常状态;

若所述目标NVMeSSD处于正常状态,则通过所述存储阵列卡中的所述硬盘控制映射地址向所述目标NVMeSSD发送所述读数据指令,以使所述目标NVMeSSD将与所述读数据指令对应的数据写入所述存储阵列卡中的主机存储映射地址;

若所述目标NVMeSSD未处于所述正常状态,则将所述读数据指令发送至所述存储阵列卡,以使所述存储阵列卡接收并校验所述目标NVMeSSD中与所述读数据指令对应的数据,将校验后的与所述读数据指令对应的数据发送至所述主机中。

9.一种数据传输系统,其特征在于,应用于数据传输装置中的主机,所述数据传输装置包括依次连接的所述主机、存储阵列卡以及NVMeSSD,所述主机与所述存储阵列卡之间以及所述存储阵列卡与所述NVMeSSD之间通过PCIe总线连接;所述存储阵列卡包括地址映射逻辑,所述NVMeSSD将自身的控制地址空间通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡,映射后的所述控制地址空间为硬盘控制映射地址;所述系统包括:地址转换单元,用于将所述主机的存储地址空间通过所述存储阵列卡的地址映射逻辑映射至所述存储阵列卡,映射后的所述存储地址空间为主机存储映射地址;

指令发送单元,用于通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输。

10.一种数据传输装置,其特征在于,包括:

存储器,用于存储计算机程序;

主机,用于执行所述计算机程序时实现如权利要求1至8任一项所述数据传输方法的步骤。

11.如权利要求10所述的数据传输装置,其特征在于,还包括:

与所述主机通过PCIe总线连接的存储阵列卡,用于接收所述主机的主机存储映射地址和NVMeSSD的硬盘控制映射地址;

与所述存储阵列卡通过PCIe总线连接的所述NVMeSSD,用于存储数据,并基于所述存储阵列卡中的主机存储映射地址与所述主机进行数据传输。

12.如权利要求11所述的数据传输装置,其特征在于,所述存储阵列卡包括地址映射逻辑,具体用于通过所述地址映射逻辑接收所述主机映射的存储地址空间,并通过所述地址映射逻辑接收所述NVMeSSD映射的控制地址空间。

13.如权利要求12所述的数据传输装置,其特征在于,所述存储阵列卡还包括中断映射逻辑,还用于通过所述中断映射逻辑接收所述主机的中断信号地址空间。

14.如权利要求11所述的数据传输装置,其特征在于,所述存储阵列卡中还包括硬盘控制逻辑,用于在接收到所述主机建立的I/O队列后,为所述NVMeSSD建立管理命令队列,以使所述NVMeSSD基于所述管理命令队列从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述I/O队列进行使能。

15.如权利要求14所述的数据传输装置,其特征在于,所述I/O队列包括命令完成队列和命令提交队列;

所述NVMeSSD具体用于存储数据,并基于所述管理命令队列从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述命令完成队列进行使能,以与所述主机进行数据传输。

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的数据传输方法的步骤。

说明书 :

一种数据传输方法、系统、装置及存储介质

技术领域

[0001] 本发明涉及数据传输领域,特别是涉及一种数据传输方法、系统、装置及存储介质。

背景技术

[0002] 现有技术中主机在和SAS(Serial Attached SCSI,串行连接SCSI接口)/SATA(Serial Advanced Technology Attachment,串行高级技术附件)硬盘之间进行数据传输时,需要在主机和SAS/SATA硬盘之间设置RAID(Redundant Arrays of Independent Disks,磁盘阵列)存储阵列卡,而RAID控制器中包括控制模块和数据传输模块,控制模块在接收到主机发送的控制信号后,若待传输的数据无需进行RAID校验计算,可使主机和硬盘之间直接通过数据传输通道进行数据传输。
[0003] 但是,若硬盘的IOPS(Input/Output Operations Per Second,每秒钟输入输出操作次数)较大时,例如NVMe(Non‑Volatile Memory express,非易失性内存主机存储阵列卡接口规范)硬盘,硬盘和RAID控制器之间需通过PCIe(Peripheral  component interconnect express,高速串行计算机扩展总线标准)总线进行连接,而RAID控制器中的控制模块无法控制NVMe硬盘和主机之间数据的直接传输,需要先通过自身的RAID DRAM(Dynamic Random Access Memory,动态随机存取存储器)进行缓冲,但是由于缓冲时造成的时间延迟,以及RAID DRAM自身的带宽限制,现有技术中的RAID无法实现主机和NVMe硬盘之间的直接数据传输,无法满足NVMe硬盘性能需求。
[0004] 因此,提供一种能够保证主机和硬盘之间直接进行数据传输的技术是本领域人员亟待解决的问题。

发明内容

[0005] 本发明的目的是提供一种数据传输方法、系统、装置及存储介质,无需存储阵列卡进行中间的数据传输指令处理过程,也无需存储阵列卡对数据的中间搬移过程,数据可直接在主机和NVMeSSD之间传输,提高了数据传输的效率,降低了存储阵列卡的性能要求。
[0006] 为解决上述技术问题,本发明提供了一种数据传输方法,应用于数据传输装置中的主机,所述数据传输装置包括依次连接的所述主机、存储阵列卡以及NVMeSSD,所述主机与所述存储阵列卡之间以及所述存储阵列卡与所述NVMeSSD之间通过PCIe总线连接;所述存储阵列卡包括地址映射逻辑,所述NVMeSSD将自身的控制地址空间通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡,映射后的所述控制地址空间为硬盘控制映射地址;所述方法包括:
[0007] 将自身的存储地址空间通过所述存储阵列卡的地址映射逻辑映射至所述存储阵列卡,映射后的所述存储地址空间为主机存储映射地址;
[0008] 通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输。
[0009] 优选地,所述存储阵列卡还包括中断映射逻辑;
[0010] 通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0011] 将自身的中断信号地址空间通过所述存储阵列卡的中断映射逻辑映射至所述存储阵列卡,映射后的所述中断信号地址空间为主机中断信号映射地址;
[0012] 通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之后,还包括:
[0013] 在所述NVMeSSD通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号后处理所述中断信号。
[0014] 优选地,通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0015] 建立I/O队列,并将所述I/O队列的基地址通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡;
[0016] 通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;
[0017] 在所述NVMeSSD通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号后处理所述中断信号,包括:
[0018] 在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。
[0019] 优选地,所述I/O队列包括命令完成队列和命令提交队列;
[0020] 通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据,包括:
[0021] 通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;
[0022] 在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号,包括:
[0023] 在所述NVMeSSD使能所述命令完成队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。
[0024] 优选地,通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据之前,还包括:
[0025] 将各个所述数据传输命令写入所述命令提交队列中。
[0026] 优选地,所述存储阵列卡还包括硬盘控制逻辑,用于基于所述I/O队列为所述NVMeSSD建立管理命令队列;
[0027] 通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据,包括:
[0028] 在所述存储阵列卡为所述NVMeSSD建立所述管理命令队列后,通过所述硬盘控制映射地址向所述NVMeSSD发送所述数据传输指令,以使所述NVMeSSD基于所述管理命令队列从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,并和所述数据传输命令对应的所述主机存储映射地址传输与所述数据传输命令对应的数据;
[0029] 在所述NVMeSSD使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号,包括:
[0030] 在所述存储阵列卡为所述NVMeSSD建立所述管理命令队列后,在所述NVMeSSD通过所述管理命令队列使能所述I/O队列,并通过所述中断映射逻辑向所述主机中断信号映射地址中写入中断信号时处理所述中断信号。
[0031] 优选地,通过所述存储阵列卡中的所述硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0032] 当所述数据传输指令为写数据指令时,判断与所述写数据指令对应的数据是否为待校验数据;
[0033] 若是,则将所述写数据指令发送至所述存储阵列卡,以使所述存储阵列卡接收并校验所述主机中与所述写数据指令对应的数据,将校验后的与所述写数据指令对应的数据写入至所述NVMeSSD中;
[0034] 若否,则进入通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输的步骤。
[0035] 优选地,所述数据传输装置包括多个NVMeSSD与所述存储阵列卡连接;
[0036] 通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0037] 当所述数据传输指令为读数据指令时,判断与所述读数据指令对应的数据是否为待校验数据;
[0038] 若为所述待校验数据,则判断与所述存储阵列卡连接的各个所述NVMeSSD是否均处于正常状态;
[0039] 若不为所述待校验数据,或各个所述NVMeSSD均处于正常状态,则通过所述存储阵列卡中的硬盘控制映射地址向目标NVMeSSD发送所述读数据指令,以使所述目标NVMeSSD将与所述读数据指令对应的数据写入所述存储阵列卡中的主机存储映射地址;
[0040] 若各个所述NVMeSSD并非均处于所述正常状态,则判断所述目标NVMeSSD是否处于正常状态;
[0041] 若所述目标NVMeSSD处于正常状态,则通过所述存储阵列卡中的所述硬盘控制映射地址向所述目标NVMeSSD发送所述读数据指令,以使所述目标NVMeSSD将与所述读数据指令对应的数据写入所述存储阵列卡中的主机存储映射地址;
[0042] 若所述目标NVMeSSD未处于所述正常状态,则将所述读数据指令发送至所述存储阵列卡,以使所述存储阵列卡接收并校验所述目标NVMeSSD中与所述读数据指令对应的数据,将校验后的与所述读数据指令对应的数据发送至所述主机中。
[0043] 为解决上述技术问题,本发明提供了一种数据传输系统,应用于数据传输装置中的主机,所述数据传输装置包括依次连接的所述主机、存储阵列卡以及NVMeSSD,所述主机与所述存储阵列卡之间以及所述存储阵列卡与所述NVMeSSD之间通过PCIe总线连接;所述存储阵列卡包括地址映射逻辑,所述NVMeSSD将自身的控制地址空间通过所述存储阵列卡的所述地址映射逻辑映射至所述存储阵列卡,映射后的所述控制地址空间为硬盘控制映射地址;所述系统包括:
[0044] 地址转换单元,用于将自身的存储地址空间通过所述存储阵列卡的地址映射逻辑映射至所述存储阵列卡,映射后的所述存储地址空间为主机存储映射地址;
[0045] 指令发送单元,用于通过所述存储阵列卡中的硬盘控制映射地址向所述NVMeSSD发送数据传输指令,以使所述NVMeSSD基于所述数据传输指令和所述存储阵列卡中的主机存储映射地址进行数据传输。
[0046] 为解决上述技术问题,本发明提供了一种数据传输装置,包括:
[0047] 存储器,用于存储计算机程序;
[0048] 主机,用于执行所述计算机程序时实现如上述所述数据传输方法的步骤。
[0049] 优选地,还包括:
[0050] 与所述主机通过PCIe总线连接的存储阵列卡,用于接收所述主机的主机存储映射地址和NVMeSSD的硬盘控制映射地址;
[0051] 与所述存储阵列卡通过PCIe总线连接的所述NVMeSSD,用于存储数据,并基于所述存储阵列卡中的主机存储映射地址与所述主机进行数据传输。
[0052] 优选地,所述存储阵列卡包括地址映射逻辑,具体用于通过所述地址映射逻辑接收所述主机映射的存储地址空间,并通过所述地址映射逻辑接收所述NVMeSSD映射的控制地址空间。
[0053] 优选地,所述存储阵列卡还包括中断映射逻辑,还用于通过所述中断映射逻辑接收所述主机的中断信号地址空间。
[0054] 优选地,所述存储阵列卡中还包括硬盘控制逻辑,用于在接收到所述主机建立的I/O队列后,为所述NVMeSSD建立管理命令队列,以使所述NVMeSSD基于所述管理命令队列从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述I/O队列进行使能。
[0055] 优选地,所述I/O队列包括命令完成队列和命令提交队列;
[0056] 所述NVMeSSD具体用于存储数据,并基于所述管理命令队列从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述命令完成队列进行使能,以与所述主机进行数据传输。
[0057] 为解决上述技术问题,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的数据传输方法的步骤。
[0058] 本申请提供了一种数据传输方法、系统、装置及存储介质,涉及数据传输领域,用于对数据进行传输,存储阵列卡中设置了地址映射逻辑,主机将自身的存储地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,在通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令后,NVMeSSD可直接数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输,也即NVMeSSD可直接与主机内部的存储地址空间进行数据传输。可见,本申请中无需存储阵列卡进行中间的数据传输指令处理过程,也无需存储阵列卡对数据的中间搬移过程,数据可直接在主机和NVMeSSD之间传输,提高了数据传输的效率,降低了存储阵列卡的性能要求。

附图说明

[0059] 为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0060] 图1为本发明提供的一种数据传输方法的流程示意图;
[0061] 图2为现有技术中的一种RAID控制器连接结构示意图;
[0062] 图3为本发明提供的一种存储阵列卡连接结构示意图;
[0063] 图4为本发明提供的一种地址映射的示意图;
[0064] 图5为本发明提供的一种队列示意图;
[0065] 图6为本发明提供的一种数据传输指令为写数据指令的数据传输流程图;
[0066] 图7为本发明提供的一种数据传输指令为读数据指令的数据传输流程图;
[0067] 图8为本发明提供的一种数据传输系统的结构示意图;
[0068] 图9为本发明提供的一种数据传输装置的结构示意图。

具体实施方式

[0069] 本发明的核心是提供一种数据传输方法、系统、装置及存储介质,无需存储阵列卡进行中间的数据传输指令处理过程,也无需存储阵列卡对数据的中间搬移过程,数据可直接在主机92和NVMeSSD之间传输,提高了数据传输的效率,降低了存储阵列卡的性能要求。
[0070] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0071] 请参照图1,图1为本发明提供的一种数据传输方法的流程示意图,应用于数据传输装置中的主机92,数据传输装置包括依次连接的主机92、存储阵列卡以及NVMeSSD,主机92与存储阵列卡之间以及存储阵列卡与NVMeSSD之间通过PCIe总线连接;存储阵列卡包括地址映射逻辑,NVMeSSD将自身的控制地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,映射后的控制地址空间为硬盘控制映射地址;方法包括:
[0072] S11:将自身的存储地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,映射后的存储地址空间为主机存储映射地址;
[0073] 本实施例中,考虑到现有技术中的RAID磁盘冗余阵列技术是将多个磁盘设备组合起来,成为一个或多个存储阵列组,以提高存储性能、增加冗余以对数据进行保护,传统的RAID系统的核心为RAID控制器芯片,由硬件实现的RAID控制器在性能、可靠性和数据的安全性上都得到了保证。传统的RAID控制器通常连接SAS或SATA机械硬盘或SSD(Solid State Disk,固态硬盘),具体地,RAID控制器的上游通过PCIe总线与主机92连接,下游通过SAS/SATA控制器与多个SAS/SATA硬盘连接。请参照图2,图2为现有技术中的一种RAID控制器连接结构示意图。其中,Host为主机92,HostDRAM为主机92的存储地址空间,RAID Controller ASIC为RAID控制器芯片,DMA Engine为DMA控制器,用于存储RAID控制器的缓存数据,SAS/SATA controller为SAS/SATA控制器,SAS/SATA控制器包括多个Port,以与多个SAS/SATA硬盘连接。若待传输的数据不需要进行RAID校验计算,例如RAID0/1读写或RAID5/6的非降级读,RAID控制器内部的DMA控制器可直接实现硬盘和主机52存储地址空间之间的直接数据搬移,无需进入RAIDDRAM缓存,降低了I/O延迟,提高了数据传输的性能,且降低了对RAIDDRAM的性能要求。
[0074] 但是,随着技术的更新,目前的硬盘可以采用NVMe接口,也即NVMeSSD,NVMe接口极大释放了NANDFlash存储介质的性能优势。传统的SAS/SATA硬盘的IOPS通常只有几十到两百多,即便是SAS/SATA接口的SSD,其IOPS也只有几千到几万,最多不超过十几万,但是NVMeSSD的IOPS均为几十万起步,PCIe4.0接口的NVMeSSD的IOPS可达一百万以上,而未来的PCIe5.0接口的NVMeSSD的IOPS可达三百万以上。且由于NVMeSSD直接采用PCIe作为其I/O接口,导致传统的RAID控制器无法直接对NVMeSSD的数据进行搬运,除非采用高速I/O接口或高速处理器,这无疑导致RAID控制器的实现成本的巨大增加,或者RAID控制器作为中间设备,在NVMeSSD和主机92之间进行数据传输时,先将主机92的数据或NVMeSSD的数据存储至RAIDDRAM,再发送至NVMeSSD或主机92,这无疑导致了数据传输时的高延时,以及需要RAIDDRAM的极高访问带宽,实际上由于RAIDDRAM的带宽限制,现有技术中的RAID控制器无法满足NVMeSSD的性能需求。
[0075] 为了解决上述技术问题,本实施例中的存储阵列卡和主机92之间通过PCIe总线连接,且存储阵列卡和NVMeSSD之间同样通过PCIe总线连接,且在存储阵列卡中设置了地址映射逻辑,主机92可将自身的存储地址空间通过地址映射逻辑映射至存储阵列卡,而主机92可先将自身的存储地址空间转换为主机存储映射地址,再发送至存储阵列卡,或直接将自身的存储地址空间映射至存储阵列卡,再由存储阵列卡将主机92的存储地址空间转换为主机存储映射地址,本申请对此不作限定。
[0076] S12:通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输。
[0077] NVMeSSD还可将自身的控制地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,当主机92需要将数据写入NVMeSSD或读取NVMeSSD内的数据时,可向存储阵列卡中的硬盘控制映射地址写入数据传输指令,实际上主机92是直接将数据传输指令写入NVMeSSD的控制地址空间,例如写入NVMeSSD的Doorbell寄存器中。此时NVMeSSD内部的NVMeSSD控制器可直接从自身的控制地址空间读取该数据传输指令,该数据传输指令的地址指针指向主机92通过地址映射逻辑进行映射后的主机存储映射地址,也保证和NVMeSSD之间传输数据的位置的准确性,主机92将数据传输命令写入NVMeSSD中的地址同样为NVMeSSD经地址映射逻辑映射后的硬盘控制映射地址。NVMeSSD内部控制器根据数据传输指令将自身存储地址空间的数据写入主机存储映射地址中,实际上为NVMeSSD直接将自身存储地址空间的数据写入主机92的存储地址空间中,实现了主机92直接读取NVMeSSD中的数据至自身的存储地址空间,或NVMeSSD根据数据传输指令从主机存储映射地址中读取数据,并写入自身的存储地址空间内,实际上为NVMeSSD直接将主机92的存储地址空间中的数据搬移至自身的存储地址空间中,便实现了主机92将自身的存储地址空间的数据直接写入NVMeSSD中。
[0078] 需要说明的是,每个存储阵列卡可以挂载多个NVMeSSD,在NVMeSSD将其控制地址空间通过地址映射逻辑映射至存储阵列卡之前,存储阵列卡需先初始化配置与NVMeSSD连接的PCIe总线,扫描自身挂载的各个NVMeSSD,再为各个NVMeSSD进行BAR(Base Address Register,基地址寄存器)空间映射,也即将各个NVMeSSD的控制地址空间通过自身的地址映射逻辑映射至自身,也即生成各个NVMeSSD的硬盘控制映射地址,主机92可根据存储阵列卡中各个NVMeSSD的硬盘控制映射地址向目标NVMeSSD的硬盘控制映射地址写入数据传输指令。
[0079] 进一步需要说明的是,本申请中的存储阵列卡为RAID控制器。RAID控制器通过PCIe总线,也即PCIeRC(PCIe Root Complex,PCIe根复合体)控制器与各个NVMeSSD连接,且PCIeRC控制器包括多个PCIePort,可以扩展多个NVMeSSD。请参照图3,图3为本发明提供的一种存储阵列卡连接结构示意图。其中,主机92的PCIeRc与存储阵列卡的PCIeEP(PCIe Endpoint device)连接。
[0080] 请参照图4,图4为本发明提供的一种地址映射的示意图,其中,主机92的地址空间中包括自身的存储地址空间,也即HostDRAM地址空间,映射至RAID控制器中后为主机存储映射地址,也即HostDRAM映射空间,NVMeSSD在和主机92进行数据传输时,访问主机存储映射地址,也即访问HostDRAM映射空间,实际上为直接访问主机92中的HostDRAM地址空间。而RAID控制器地址空间中的NVMeSSD 1BAR地址空间、NVMeSSD 2BAR地址空间以及NVMeSSD xBAR地址空间为NVMeSSD的实际控制信号地址空间,经过映射,主机92在访问NVMeSSD的硬盘控制映射地址,也即,NVMeSSD 1BAR映射空间、NVMeSSD 2BAR映射空间以及NVMeSSD xBAR映射空间时,实际上为访问NVMeSSD的实际控制信号地址空间,也即直接访问NVMeSSD 的NVMeSSD 1BAR地址空间、NVMeSSD 2BAR地址空间以及NVMeSSD xBAR地址空间,也即不同NVMeSSD的不同地址空间。
[0081] 需要说明的是,本申请中的NVMeSSD中具备其自身的控制器,例如DMA控制器。
[0082] 综上,本申请中无需存储阵列卡进行中间的数据传输指令处理过程,也无需存储阵列卡对数据的中间搬移过程,数据可直接在主机92和NVMeSSD之间传输,提高了数据传输的效率,降低了存储阵列卡的性能要求。
[0083] 在上述实施例的基础上:
[0084] 作为一种优选的实施例,存储阵列卡还包括中断映射逻辑;
[0085] 通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0086] 将自身的中断信号地址空间通过存储阵列卡的中断映射逻辑映射至存储阵列卡,映射后的中断信号地址空间为主机中断信号映射地址;
[0087] 通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输之后,还包括:
[0088] 在NVMeSSD通过中断映射逻辑向主机中断信号映射地址中写入中断信号后处理中断信号。
[0089] 本实施例中,存储阵列卡中还包括中断映射逻辑,主机92可将自身的中断信号地址空间通过中断逻辑映射至存储阵列卡,NVMeSSD在需要向主机92发送中断信号时,直接将中断信号写入存储阵列卡中的主机中断信号映射地址,便可以实现直接将中断信号写入主机92的中断信号地址空间。主机92在自身的中断信号地址空间被NVMeSSD写入中断信号后对中断信号进行处理,实现NVMeSSD和主机92之间中断信号的直接传输,无需通过存储阵列卡简介传输,提高了信号传输效率以及中断信号处理效率。
[0090] 需要说明的是,本申请中的中断信号可以但不限定包括MSI/MSIX中断写操作或Pin中断,具体地,通过中断映射逻辑可以实现将NVMeSSD输出的MSI/MSIX中断写操作或Pin中断映射为对主机92的中断存储阵列卡中的中断信号地址空间的MSI/MSIX(MSI:Message Signaled Interrupts,基于消息的中断)写操作。
[0091] 作为一种优选的实施例,通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0092] 建立I/O队列,并将I/O队列的基地址通过存储阵列卡的地址映射逻辑映射至存储阵列卡;
[0093] 通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD从I/O队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据;
[0094] 在NVMeSSD通过中断映射逻辑向主机中断信号映射地址中写入中断信号后处理中断信号,包括:
[0095] 在NVMeSSD使能I/O队列,并通过中断映射逻辑向主机中断信号映射地址中写入中断信号时处理中断信号。
[0096] 本实施例中,主机92在和NVMeSSD之间进行数据传输之前,先建立I/O队列,以使主机92通过I/O队列向NVMeSSD发送具体待传输的数据对应的数据传输命令,或者基于I/O队列接收NVMeSSD向主机92发送的中断信号,具体地,使主机92可以直接向NVMeSSD发送I/O(Input/Output,输入/输出)命令,也即数据传输命令,具体地,主机92在自身的存储地址空间中,也即HostDRAM中建立I/O队列的数据结构,主机92向存储阵列卡发送请求建立NVMeSSD的I/O队列的命令,首先,主机92将I/O队列在HostDRAM中的基地址通过存储阵列卡的地址映射逻辑映射至存储阵列卡,存储阵列卡接收到建立NVMeSSD的I/O队列的命令后,若主机92发送的I/O队列的基地址没有转换为地址映射逻辑映射后的地址,则将该基地址转换为地址映射逻辑映射后的地址。具体地,通过NVMeSetFeature为NVMeSSD建立I/O队列,当然,主机92可为同一NVMeSSD建立多个I/O队列,每个NVMeSSD的I/O队列的总个数不大于存储阵列卡本地I/O队列和为主机92预留的I/O队列个数,其中,存储阵列卡本地I/O队列为当数据需要进行校验计算时的I/O队列;为主机92预留的I/O队列为无需进行校验计算,而是NVMeSSD和主机92之间可直接进行数据传输的I/O队列。
[0097] 基于此,通过设置I/O队列,NVMeSSD可直接获取主机92生成的数据传输指命令,可以提高NVMeSSD和主机92之间进行数据传输时数据传输命令传递的高效率以及准确性,以提高数据传输效率。
[0098] 作为一种优选的实施例,I/O队列包括命令完成队列和命令提交队列;
[0099] 通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD从I/O队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据,包括:
[0100] 通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD从命令提交队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据;
[0101] 在NVMeSSD使能I/O队列,并通过中断映射逻辑向主机中断信号映射地址中写入中断信号时处理中断信号,包括:
[0102] 在NVMeSSD使能命令完成队列,并通过中断映射逻辑向主机中断信号映射地址中写入中断信号时处理中断信号。
[0103] 本实施例中,主机92所建立的I/O队列包括命令完成队列和命令提交队列,其中,命令提交队列中包括了多个数据传输命令,其中可指向主机92中的存储地址空间、NVMeSSD中的存储地址空间以及各存储地址空间中待传输的数据,主机92在将数据传输指令写入NVMeSSD的控制地址空间后,NVMeSSD根据数据传输指令从命令提交队列中获取与数据传输指令对应的数据传输命令,以确定当前需要进行数据搬移的主机92中的存储地址空间以及自身中需要进行数据搬移的存储地址空间。
[0104] 而NVMeSSD在完成数据传输命令对应的数据搬移时,可使能命令完成队列,并将中断信号写入主机92的中断信号地址空间中,主机92在识别到命令完成队列使能后,对自身中断信号地址空间中的中断信号进行处理。
[0105] 其中,SQ队列为命令提交队列,CQ队列为命令完成队列,也即接收NVMeSSD的中断信号的队列,NVMeSSD在将命令完成队列进行使能时,具体是将CQ队列使能。
[0106] 作为一种优选的实施例,通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD从命令提交队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据之前,还包括:
[0107] 将各个数据传输命令写入命令提交队列中。
[0108] 本实施例中,主机92通过将各个数据传输命令写入命令提交队列中,NVMeSSD在检测数据传输指令的输入后,从预先建立的命令提交队列中,也即SQ队列中获取与数据传输指令对应的数据传输命令,该数据传输命令中包括了待传输的数据,该数据应被读取或被写入,以及主机92和NVMeSSD中待进行数据传输的地址,以便NVMeSSD控制器执行相应的数据传输操作。
[0109] 作为一种优选的实施例,存储阵列卡还包括硬盘控制逻辑,用于基于I/O队列为NVMeSSD建立管理命令队列;
[0110] 通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD从I/O队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据,包括:
[0111] 在存储阵列卡为NVMeSSD建立管理命令队列后,通过硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于管理命令队列从I/O队列中获取与数据传输指令对应的数据传输命令,并和数据传输命令对应的主机存储映射地址传输与数据传输命令对应的数据;
[0112] 在NVMeSSD使能I/O队列,并通过中断映射逻辑向主机中断信号映射地址中写入中断信号时处理中断信号,包括:
[0113] 在存储阵列卡为NVMeSSD建立管理命令队列后,在NVMeSSD通过管理命令队列使能I/O队列,并通过中断映射逻辑向主机中断信号映射地址中写入中断信号时处理中断信号。
[0114] 本实施例中,在主机92为NVMeSSD建立I/O队列后,为了保证NVMeSSD可以直接获取I/O队列中的数据传输命令或对I/O队列进行使能,存储阵列卡还通过自身的硬盘控制逻辑基于I/O队列为NVMeSSD建立管理命令队列,基于此,使NVMeSSD通过管理命令队列和主机92所建立的I/O队列间接进行“连接”,使NVMeSSD可根据管理命令队列获取I/O队列中的数据传输命令,并在想主机92发送中断信号时通过管理命令队列对I/O队列进行使能,提高数据传输的效率。
[0115] 需要说明的是,主机92中可为每个NVMeSSD设置一个或多个I/O队列,而存储阵列卡中每个NVMeSSD的管理队列仅有一个。
[0116] 请参照图5,图5为本发明提供的一种队列示意图,其中,主机92为各个NVMeSSD所建立的I/O队列的基地址位于主机92中,通过地址映射逻辑映射至存储阵列卡中,而存储阵列卡为各个NVMeSSD建立的管理命令队列的地址位于存储阵列卡中。图5中的I/O队列1为主机92为NVMeSSD1建立的I/O队列,I/O队列2为主机92为NVMeSSD2建立的I/O队列,管理命令队列1为存储阵列卡为NVMeSSD1建立的管理命令队列,管理命令队列2为存储阵列卡为NVMeSSD2建立的管理命令队列,当然,图5以此为例,主机92可为每个NVMeSSD建立多个I/O队列。
[0117] 作为一种优选的实施例,通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0118] 当数据传输指令为写数据指令时,判断与写数据指令对应的数据是否为待校验数据;
[0119] 若是,则将写数据指令发送至存储阵列卡,以使存储阵列卡接收并校验主机92中与写数据指令对应的数据,将校验后的与写数据指令对应的数据写入至NVMeSSD中;
[0120] 若否,则进入通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输的步骤。
[0121] 请参照图6,图6为本发明提供的一种数据传输指令为写数据指令的数据传输流程图。
[0122] 本实施例中,考虑到主机92和NVMeSSD之间进行数据传输时,有些数据无需进行校验便可直接在主机92和NVMeSSD之间传输,例如RAID 0/RAID 1/RAID 10,而有些数据需要进行校验之后才可以被传输至主机92或NVMeSSD,例如RAID 5/RAID 6/RAID 50/ RAID 60。而主机92发送的数据传输指令也包括写数据指令和读数据指令,其中,读数据指令为主机
92从NVMeSSD中读取数据,而写输入指令为数据被从主机92中写入NVMeSSD中进行存储。
[0123] 当本申请中的数据传输指令为写数据指令,且与写数据指令对应的数据为待校验数据时,需主机92需将写数据指令发送至存储阵列卡,由存储阵列卡对写数据指令进行分析,以从主机92中获取与写数据指令对应的数据,并对其进行校验,校验结束后将该数据写入NVMeSSD中,也即需要存储阵列卡的中间参与。而若与写数据指令对应的数据并非待校验数据,也即主机92和NVMeSSD之间可直接进行该数据的传输时,主机92可直接将该写数据指令写入NVMeSSD的硬盘控制映射地址,以便NVMeSSD中的NVMeSSD控制器直接从主机存储映射地址中获取与写数据指令对应的数据,写入自身的存储空间中,实现主机92中的数据向NVMeSSD中的直接搬移,提高数据传输效率。
[0124] 作为一种优选的实施例,数据传输装置包括多个NVMeSSD与存储阵列卡连接;
[0125] 通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输之前,还包括:
[0126] 当数据传输指令为读数据指令时,判断与读数据指令对应的数据是否为待校验数据;
[0127] 若为待校验数据,则判断与存储阵列卡连接的各个NVMeSSD是否均处于正常状态;
[0128] 若不为待校验数据,或各个NVMeSSD均处于正常状态,则通过存储阵列卡中的硬盘控制映射地址向目标NVMeSSD发送读数据指令,以使目标NVMeSSD将与读数据指令对应的数据写入存储阵列卡中的主机存储映射地址;
[0129] 若各个NVMeSSD并非均处于正常状态,则判断目标NVMeSSD是否处于正常状态;
[0130] 若目标NVMeSSD处于正常状态,则通过存储阵列卡中的硬盘控制映射地址向目标NVMeSSD发送读数据指令,以使目标NVMeSSD将与读数据指令对应的数据写入存储阵列卡中的主机存储映射地址;
[0131] 若目标NVMeSSD未处于正常状态,则将读数据指令发送至存储阵列卡,以使存储阵列卡接收并校验目标NVMeSSD中与读数据指令对应的数据,将校验后的与读数据指令对应的数据发送至主机92中。
[0132] 请参照图7,图7为本发明提供的一种数据传输指令为读数据指令的数据传输流程图。
[0133] 而当数据传输指令为读数据指令时,主机92需读取NVMeSSD中的数据,同样地,若与读数据指令对应的数据不需要进行校验,主机92可直接将读数据指令写入硬盘控制映射地址,实现主机92和NVMeSSD之间直接的数据传输。若与读数据指令对应的数据需要进行校验,则将该读数据指令发送至存储阵列卡中,又由于每个存储阵列卡可连接多个NVMeSSD,NVMeSSD需先判断与自身连接的各个NVMeSSD是否均正常,若各个NVMeSSD均正常,主机92可直接将读数据指令写入硬盘控制映射地址,实现主机92和NVMeSSD之间直接的数据传输。而各个NVMeSSD并非均处于正常状态时,先判断与读数据指令对应的目标NVMeSSD是否处于正常状态,若是,则主机92同样可直接将读数据指令写入硬盘控制映射地址,实现主机92和NVMeSSD之间直接的数据传输,而若目标NVMeSSD故障,则主机92需将该读数据指令发送至存储阵列卡,以便存储阵列卡接收并校验目标NVMeSSD中与读数据指令对应的数据,将校验后的与读数据指令对应的数据发送至主机92中,保证传输的数据的完整性。
[0134] 需要说明的是,当主机92的读数据指令和写数据指令在写入硬盘控制映射地址或发送至存储阵列卡时,均需拆分为对目标NVMeSSD的读数据指令或写数据指令。
[0135] 请参照图8,图8为本发明提供的一种数据传输系统的结构示意图,该系统应用于数据传输装置中的主机92,数据传输装置包括依次连接的主机92、存储阵列卡31以及NVMeSSD,主机92与存储阵列卡31之间以及存储阵列卡31与NVMeSSD之间通过PCIe总线连接;存储阵列卡31包括地址映射逻辑,NVMeSSD将自身的控制地址空间通过存储阵列卡31的地址映射逻辑映射至存储阵列卡31,映射后的控制地址空间为硬盘控制映射地址;该系统包括:
[0136] 地址转换单元81,用于将自身的存储地址空间通过存储阵列卡的地址映射逻辑映射至存储阵列卡,映射后的存储地址空间为主机存储映射地址;
[0137] 指令发送单元82,用于通过存储阵列卡中的硬盘控制映射地址向NVMeSSD发送数据传输指令,以使NVMeSSD基于数据传输指令和存储阵列卡中的主机存储映射地址进行数据传输。
[0138] 对于本发明提供的一种数据传输系统的介绍请参照上述方法实施例,本发明在此不再赘述。
[0139] 请参照图9,图9为本发明提供的一种数据传输装置的结构示意图,该装置包括:
[0140] 存储器91,用于存储计算机程序;
[0141] 主机92,用于执行计算机程序时实现如上述数据传输方法的步骤。
[0142] 作为一种优选的实施例,还包括:与所述主机92通过PCIe总线连接的存储阵列卡31,用于接收所述主机92的主机存储映射地址和NVMeSSD的硬盘控制映射地址;
[0143] 与所述存储阵列卡31通过PCIe总线连接的所述NVMeSSD,用于存储数据,并基于所述存储阵列卡31中的主机存储映射地址与所述主机92进行数据传输。
[0144] 作为一种优选的实施例,所述存储阵列卡31包括地址映射逻辑,具体用于通过所述地址映射逻辑接收所述主机92映射的存储地址空间,并通过所述地址映射逻辑接收所述NVMeSSD映射的控制地址空间。
[0145] 作为一种优选的实施例,所述存储阵列卡31还包括中断映射逻辑,还用于通过所述中断映射逻辑接收所述主机92的中断信号地址空间。
[0146] 作为一种优选的实施例,所述存储阵列卡31中还包括硬盘控制逻辑,用于在接收到所述主机92建立的I/O队列后,为所述NVMeSSD建立管理命令队列,以使所述NVMeSSD基于所述管理命令队列从所述I/O队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述I/O队列进行使能。
[0147] 作为一种优选的实施例,所述I/O队列包括命令完成队列和命令提交队列;
[0148] 所述NVMeSSD具体用于存储数据,并基于所述管理命令队列从所述命令提交队列中获取与所述数据传输指令对应的数据传输命令,或基于所述管理命令队列对所述命令完成队列进行使能,以与所述主机92进行数据传输。
[0149] 可见,本实施例中的存储阵列卡31中包括地址映射逻辑、中断映射逻辑和硬盘控制逻辑,不仅能够实现主机92和NVMeSSD的存储地址空间之间的直接数据交互,还可使主机92和NVMeSSD之间直接进行数据传输指令、数据传输命令以及中断信号的传输,提高了数据传输的效率。
[0150] 对于本发明提供的一种数据传输装置的具体介绍请参照上述方法实施例,本发明在此不再赘述。
[0151] 本发明中的计算机可读存储介质上存储有计算机程序,计算机程序被主机52执行时实现如上述的数据传输方法的步骤。
[0152] 对于本发明提供的计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不再赘述。
[0153] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0154] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。