本申请涉及计算机技术领域,特别是涉及一种数据读取方法、装置、电子设备及存储介质。
背景技术:
双控存储设备包含两个控制器,可以分别对不同的存储空间进行管理。现有技术中,当需要一个控制器读取另一个控制器管理的存储空间中的数据时,可以通过ntb(non-transparentbridge,非透明传输桥)进行数据读取。
应用现有技术虽然可以实现一个控制器读取另一个控制器管理的存储空间中的数据,但是由于ntb的数据读取能力较弱,导致一个控制器读取另一个控制器管理的存储空间中的数据时的数据读取效率较低。
技术实现要素:
本申请实施例的目的在于提供一种数据读取方法、装置、电子设备及存储介质,以提高数据读取效率。具体技术方案如下:
第一方面,本申请实施例提供了一种数据读取方法,应用于双控存储设备中的第一控制器,所述双控存储设备还包括第二控制器,所述方法包括:
通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,所述第一存储空间为:由所述第一控制器管理的存储空间,所述第二存储空间为:由所述第二控制器管理的存储空间;
利用心跳信号通知所述第二控制器从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述利用心跳信号通知所述第二控制器从所述第二存储空间中读取所述待读取数据,包括:
获得用于指示所述第二控制器从所述第二存储空间中读取所述待读取数据的心跳信号;
利用心跳链路向所述第二控制器发送所述心跳信号,其中,所述心跳链路为:预先建立的多种类型的物理链路中用于传输所述心跳信号的链路。
本申请的一个实施例中,所述心跳链路为:所述多种类型的物理链路中可用的、数据传输特征与所述心跳信号的信号特征相匹配的链路。
本申请的一个实施例中,通过以下方式选择心跳链路:
在所述心跳信号的信号特征反映该信号需要快速响应的情况下,从所述多种类型的物理链路中选择可用的、高带宽的链路,作为心跳链路;或
在所述心跳信号的信号特征反映该信号所携带的数据量大于预设的数据量阈值的情况下,从所述多种类型的物理链路中选择可用的、支持大数据传输的链路,作为心跳链路。
本申请的一个实施例中,所述通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,包括:
通过所述ntb将源空间中的待读取数据写入所述源空间对应的目的空间;
其中,在所述源空间为第一子空间或第二子空间的情况下,所述源空间对应的目的空间为第二存储空间,所述第一子空间为:所述第一存储空间中用于存储所述第一控制器写入的数据的空间,所述第二子空间为:所述第一存储空间中用于存储所述第二控制器通过所述ntb写入的数据的空间;或
在所述源空间为第一存储空间的情况下,所述源空间对应的目的空间为第三子空间,所述第三子空间为:所述第二存储空间中用于存储所述第一控制器通过所述ntb写入的数据的空间;或
在所述源空间为所述第一子空间的情况下,所述源空间对应的目的空间为所述第三子空间,在所述源空间为所述第二子空间的情况下,所述源空间对应的目的空间为第四子空间,所述第四子空间为:所述第二存储空间中用于存储所述第二控制器写入的数据的第四子空间。
本申请的一个实施例中,所述方法还包括:
通过所述ntb将所述第一控制器写入所述第一存储空间中的数据写入所述第二存储空间,实现所述第一存储空间和第二存储空间中数据同步;
所述通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,包括:
在需要所述第二控制器对所述第一存储空间中的待读取数据进行读取、且未成功将所述待读取数据同步至第二存储空间的情况下,通过所述ntb将所述待读取数据写入所述第二存储空间。
本申请的一个实施例中,所述通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,包括:
在以下情况中的任一情况下,通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间:
所述第一控制器处于超载状态;
所述第二控制器由离线状态切换至上线状态、且在所述离线状态之前已将所述待读取数据同步至所述第一存储空间。
第二方面,本申请实施例提供了另一种数据读取方法,应用于双控存储设备中的第二控制器,所述双控存储设备还包括第一控制器,所述方法包括:
接收所述第一控制器发送的、用于指示所述第二控制器从第二存储空间中读取待读取数据的心跳信号,其中,所述第二存储空间为:由所述第二控制器管理的存储空间,所述待读取数据为:所述第一控制器通过非透明传输桥ntb从第一存储空间写入所述第二存储空间的数据,所述第一存储空间为:由所述第一控制器管理的存储空间;
从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述方法还包括:
在确定来自所述第一控制器的心跳信号丢失、且所述第二存储空间中存在从所述第一存储空间同步的待读取数据的情况下,从所述第二存储空间中读取所述待读取数据。
第三方面,本申请实施例提供了一种数据读取装置,所述装置设置于双控存储设备中的第一控制器,所述双控存储设备还包括第二控制器,所述装置包括:
数据写入模块,用于通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,所述第一存储空间为:由所述第一控制器管理的存储空间,所述第二存储空间为:由所述第二控制器管理的存储空间;
信号通知模块,用于利用心跳信号通知所述第二控制器从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述信号通知模块,具体用于:
获得用于指示所述第二控制器从所述第二存储空间中读取所述待读取数据的心跳信号;
利用心跳链路向所述第二控制器发送所述心跳信号,其中,所述心跳链路为:预先建立的多种类型的物理链路中用于传输所述心跳信号的链路。
本申请的一个实施例中,所述心跳链路为:所述多种类型的物理链路中可用的、数据传输特征与所述心跳信号的信号特征相匹配的链路。
本申请的一个实施例中,所述装置还包括链路选择模块,用于通过以下方式选择心跳链路:
在所述心跳信号的信号特征反映该信号需要快速响应的情况下,从所述多种类型的物理链路中选择可用的、高带宽的链路,作为心跳链路;或
在所述心跳信号的信号特征反映该信号所携带的数据量大于预设的数据量阈值的情况下,从所述多种类型的物理链路中选择可用的、支持大数据传输的链路,作为心跳链路。
本申请的一个实施例中,所述数据写入模块,具体用于:
通过所述ntb将源空间中的待读取数据写入所述源空间对应的目的空间;
其中,在所述源空间为第一子空间或第二子空间的情况下,所述源空间对应的目的空间为第二存储空间,所述第一子空间为:所述第一存储空间中用于存储所述第一控制器写入的数据的空间,所述第二子空间为:所述第一存储空间中用于存储所述第二控制器通过所述ntb写入的数据的空间;或
在所述源空间为第一存储空间的情况下,所述源空间对应的目的空间为第三子空间,所述第三子空间为:所述第二存储空间中用于存储所述第一控制器通过所述ntb写入的数据的空间;或
在所述源空间为所述第一子空间的情况下,所述源空间对应的目的空间为所述第三子空间,在所述源空间为所述第二子空间的情况下,所述源空间对应的目的空间为第四子空间,所述第四子空间为:所述第二存储空间中用于存储所述第二控制器写入的数据的第四子空间。
本申请的一个实施例中,所述装置还包括数据同步模块,用于通过所述ntb将所述第一控制器写入所述第一存储空间中的数据写入所述第二存储空间,实现所述第一存储空间和第二存储空间中数据同步;
所述数据写入模块,具体用于:
在需要所述第二控制器对所述第一存储空间中的待读取数据进行读取、且未成功将所述待读取数据同步至第二存储空间的情况下,通过所述ntb将所述待读取数据写入所述第二存储空间。
本申请的一个实施例中,所述数据写入模块,具体用于:
在以下情况中的任一情况下,通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间:
所述第一控制器处于超载状态;
所述第二控制器由离线状态切换至上线状态、且在所述离线状态之前已将所述待读取数据同步至所述第一存储空间。
第四方面,本申请实施例提供了另一种数据读取装置,所述装置设置于双控存储设备中的第二控制器,所述双控存储设备还包括第一控制器,所述装置包括:
信号接收模块,用于接收所述第一控制器发送的、用于指示所述第二控制器从第二存储空间中读取待读取数据的心跳信号,其中,所述第二存储空间为:由所述第二控制器管理的存储空间,所述待读取数据为:所述第一控制器通过非透明传输桥ntb从第一存储空间写入所述第二存储空间的数据,所述第一存储空间为:由所述第一控制器管理的存储空间;
第一读取模块,用于从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述装置还包括第二读取模块,用于:
在确定来自所述第一控制器的心跳信号丢失、且所述第二存储空间中存在从所述第一存储空间同步的待读取数据的情况下,从所述第二存储空间中读取所述待读取数据。
第五方面,本申请实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面和/或第二方面任一所述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面和/或第二方面任一所述的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据读取方法。
本申请实施例有益效果:
本申请实施例提供了一种数据读取方案,应用于双控存储设备中,双控存储设备包括第一控制器和第二控制器,第一控制器可以通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间;利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。也就是,若需要第二控制器读取第一控制器管理的存储空间中的数据,则可以由第一控制器通过ntb将该数据写入第二控制器管理的存储空间中,然后由第二控制器直接从自身所管理的存储空间中读取数据。这样可以充分利用ntb能够高速写数据的能力,而避免由于ntb读数据能力弱导致的数据读取效率低的问题。由此可见,应用本申请实施例提供的方案,可以提高数据读取效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本申请实施例提供的第一种双控存储设备的结构示意图;
图2为本申请实施例提供的第一种数据读取方法的流程示意图;
图3为本申请实施例提供的第二种双控存储设备的结构示意图;
图4为本申请实施例提供的第三种双控存储设备的结构示意图;
图5为本申请实施例提供的第四种双控存储设备的结构示意图;
图6为本申请实施例提供的一种数据读写过程的示意图;
图7为本申请实施例提供的第二种数据读取方法的流程示意图;
图8为本申请实施例提供的一种数据读取装置的结构示意图;
图9为本申请实施例提供的另一种数据读取装置的结构示意图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了提高数据读取效率,本申请实施例提供了一种数据读取方法、装置、电子设备及存储介质,下面分别进行详细描述。
上述数据读取方法可以应用于双控存储设备。参见图1,图1为本申请实施例提供的第一种双控存储设备的结构示意图,如图1所示,双控存储设备包括第一控制器、第二控制器,其中,第一控制器可以对第一存储空间进行管理,第二控制器可以对第二存储空间进行管理。上述第一存储空间和第二存储空间可以是ram(randomaccessmemory,随机存取)空间。
上述第一存储空间的大小与第二存储空间的大小可以相等,例如,第一存储空间与第二存储空间的大小可以均为4gb、8gb、16gb等;第一存储空间的大小与第二存储空间的大小也可以不相等,例如,第一存储空间的大小可以为12gb,第二存储空间的大小可以为20gb。
本申请的一个实施例中,上述双控存储设备中第一控制器和第二控制器分别与硬盘相连接,可以在硬盘中申请一段存储空间,作为第一存储空间,由第一控制器进行管理。并在硬盘中申请另一段存储空间,作为第二存储空间,由第二控制器进行管理。
本申请的一个实施例中,上述双控存储设备中第一控制器和第二控制器可以是双活关系,即第一控制器和第二控制器可以同步处于工作状态;二者也可以是主备关系,即其中一个控制器为主控制器,另一控制器为备用控制器,当主控制器处于工作状态时,备用控制器可以处于非工作状态,当主控制器故障或离线时,切换备用控制器处于工作状态。
参见图2,图2为本申请实施例提供的第一种数据读取方法的流程示意图,该方法可以应用于双控存储设备中的第一控制器,如图2所示,上述方法包括如下步骤s201-s202。
s201,通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间。
其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间。
上述ntb为:在第一控制器与第二控制器之间建立的、用于传输数据的传输通道。
上述待读取数据可以是图像数据、音频数据、文本数据等,本申请实施例并不对此进行限定。
具体的,待读取数据存储于第一存储空间中,第一控制器可以直接对上述待读取数据进行读取,并且还可以将待读取数据通过上述ntb写入第二存储空间,从而便于后续第二控制器直接从第二存储空间中读取待读取数据。
本申请的一个实施例中,在将待读取数据写入第二存储空间时,第一控制器可以将待读取数据写入ntb上预设的映射空间中,再由ntb将上述映射空间中的待读取数据通过dma(directmemoryaccess,直接内存存取)的方式将待读取数据写入第二存储空间。
其中,上述映射空间为:预先在ntb中创建的、空间大小大于等于第一存储空间的空间。
具体的,可以利用cma(contiguousmemoryallocator,连续内存分配函数)从ntb中申请一段连续的存储空间,作为映射空间,该映射空间可以理解为数据传输窗口,用于对待传输的数据进行传输。该映射空间可以是bar(baseaddressregister,基地址空间)空间。该映射空间的空间大小小于等于ntb中允许配置的最大空间,大于等于第一存储空间。
例如,假设ntb中允许配置的最大空间为64gb,第一存储空间为4gb,则该映射空间的空间大小可以为4gb、16gb、32gb等。
在将待读取数据写入第二存储空间时,可以首先将待读取数据写入上述映射空间,再由ntb将映射空间中的数据直接写入第二存储空间。
由于上述映射空间的空间大小大于等于第一存储空间,而待读取数据存储于第一存储空间中,也就是待读取数据的大小小于等于上述映射空间的空间大小,这样通过上述映射空间可以对第一映射空间中的任意大小的数据进行同步,并且能够提高数据同步效率。
本申请的一个实施例中,可以是在需要第二控制器对第一存储空间中的待读取数据进行读取的情况下,第一控制器通过ntb将第一存储空间中的待读取数据写入第二存储空间。例如,可以是第一控制器在接收到应用该双控存储设备的电子设备发送的转存指令的情况下,将上述待读取数据通过ntb写入第二存储空间。
本申请的一个实施例中,在以下情况中的任一情况下,通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间:
情况一:第一控制器处于超载状态;
具体的,在第一控制器处于超载状态的情况下,如温度过高、数据接口离线、业务拥堵等,说明第一控制器待处理的数据较多或性能下降,从而导致第一控制器超载,认为需要第二控制器分担部分待处理的数据。这种情况下,可以将第一存储空间中的待读取数据通过ntb写入第二存储空间,从而便于第二控制器读取第二存储空间中的待读取数据并对该数据进行处理,实现分担第一控制器的任务。
情况二:第二控制器由离线状态切换至上线状态、且在离线状态之前已将待读取数据同步至第一存储空间。
具体的,第二控制器可以预先将第二存储空间中的数据同步至第一存储空间,作为备份数据。当第二控制器离线后,第二存储空间中的数据丢失,而第一存储空间中可以保留有第二存储空间中的备份数据,当第二控制器重新上线后,需要第二控制器继续对离线之前的数据进行处理,因此可以将第一存储空间中的备份数据作为需要第二控制器读取的待读取数据,认为需要第二控制器读取第一存储空间中的。
本申请的一个实施例中,上述待读取数据可以是第一控制器从第一存储空间所存储的所有数据中选择的数据;也可以是应用该双控存储设备的电子设备,如电脑、nvr(networkvideorecorder,网络视频录像机)等,从第一存储空间所存储的所有数据中选择的数据,例如,上述电子设备可以从第一存储空间所存储的数据中选择数据,作为待读取数据,然后向第一控制器发送数据指令,该数据指令中可以携带上述待读取数据的标识、存储地址等信息,第一控制器接收到上述数据指令后,可以基于该指令从第一存储空间中确定待读取数据。
上述待读取数据可以是第一存储空间中所存储的部分数据。例如,在第一控制器处于超载状态的情况下,可以由第一控制器或电子设备从第一存储空间中选择一部分数据,作为待读取数据,再由第一控制器将该待读取数据通过ntb写入第二存储空间,这样便于后续第二控制器对该部分数据进行处理,从而减轻第一控制器的压力。
上述待读取数据也可以是第一存储空间中所存储的所有数据。例如,在需要对第一控制器离线升级、维护的情况下,由于离线状态下第一控制器难以读取第一存储空间中存储的数据,因此可以将第一存储空间中的所有数据作为待读取数据,然后通过ntb将上述待读取数据写入第二存储空间,这样便于后续第二控制器对第一存储空间中的所有数据进行处理,保证在第一控制器离线过程中双控存储设备能够正常工作。
s202,利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。
具体的,第一控制器可以获得用于指示第二控制器从第二存储空间中读取待读取数据的心跳信号,并将该心跳信号发送至第二控制器,这样第二控制器在接收到上述心跳信号后,可以从第二存储空间中读取待读取数据。
本申请的一个实施例中,上述心跳信号可以是第一控制器生成的,也可以是应用双控存储设备的电子设备所生成的、用于指示第二控制器从第二存储空间中读取待读取数据的信号,上述电子设备可以将所生成的信号发送至第一控制器的信号,第一控制器接收上述信号,从而获得上述心跳信号。
本申请的一个实施例中,上述心跳信号中可以携带待读取数据的数据标识、在第二存储空间中的存储地址等信号,第二控制器接收到上述心跳信号后可以获得数据标识或存储地址等,从而便于第二控制器根据上述数据标识、存储地址等从第二存储空间中查找并读取该待读取数据。
本申请的一个实施例中,上述心跳信号中可以直接携带指令信息,该指令信息用于指示第二控制器从第二存储空间中读取待读取数据;
除此之外,上述心跳信号中还可以携带第一控制器的状态信息,如温度信息、风扇信息、数据接口信息、业务状态信息、数据读写状态信息等,第二控制信息接收到上述心跳信号后,可以从心跳信号中获得第一控制器的状态信息,从而判断第一控制器是否超载,若为是,则认为需要分担部分第一存储空间中待处理的数据,即可从第二存储空间中读取待读取数据。
申请人在实验中发现,虽然第一控制器和第二控制器之间连接有非透明传输桥ntb,第二控制器利用ntb可以实现直接从第一存储空间中读取上述待读取数据,但是ntb的数据读取能力较弱,这样第二控制器通过ntb从第一存储空间中读取数据时效率较低。
上述实施例提供的一种数据读取方案,双控存储设备中第一控制器可以通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间;利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。也就是,若需要第二控制器读取第一控制器管理的存储空间中的数据,则可以由第一控制器通过ntb将该数据写入第二控制器管理的存储空间中,然后由第二控制器直接从自身所管理的存储空间中读取数据。这样可以充分利用ntb能够高速写数据的能力,而避免由于ntb读数据能力弱导致的数据读取效率低的问题。由此可见,应用上述实施例提供的方案,可以提高数据读取效率。
本申请的一个实施例中,对于上述步骤s202,在利用心跳信号通知第二控制器从第二存储空间中读取待读取数据时,可以获得用于指示第二控制器从第二存储空间中读取待读取数据的心跳信号,利用心跳链路向第二控制器发送心跳信号。
其中,心跳链路为:预先建立的多种类型的物理链路中用于传输心跳信号的链路。
上述多种类型的物理链路可以包括:i2c(inter-integratedcircuit,集成电路总线)链路、ip(internetprotocol,互联网协议)链路、sas(serialattachedscsi,串行连接接口)链路、共享空间链路等。
上述共享空间链路为:以第一存储空间、第二存储空间及用于连接第一控制器和第二控制器的ntb组成的传输链路。
具体的,第一控制器和第二控制器中可以创建有心跳统一接口,预先创建的物理链路的分别用于连接上述第一控制器和第二控制器中的心跳统一接口,从而便于第一控制器和第二控制器之间通过上述物理链路传输心跳信号。
参见图3,图3为本申请实施例提供的第二种双控存储设备的结构示意图。第一控制器和第二控制器连接于背板上,并通过背板与硬盘相连接。第一控制器和第二控制器中分别包含心跳统一接口,上述心跳统一接口通过物理链路连接于背板上,从而第一控制器和第二控制器可以基于上述背板和物理链路传输心跳信号。
这样第一控制器在获得心跳信号后,可以从上述多种类型的物理链路中选择一链路作为心跳链路,然后通过该心跳链路将所获得的心跳信号发送至第二控制器。
本申请的一个实施例中,每一类型的物理链路中,可以包含多条物理链路,例如,可以创建多条i2c链路,这样可以避免在需要i2c链路传输心跳信号时i2c链路拥堵。
本申请的一个实施例中,在选择心跳链路时,可以从多种类型的物理链路中随机选择一链路,作为心跳链路;也可以从上述多个物理链路中选择一空闲的链路,作为心跳链路;还可以按照预设的轮循顺序,从上述多个物理链路中选择一链路作为心跳链路。例如,假设存在物理链路a、b、c、d,预设的轮循顺序为a→b→c→d,用于传输上一心跳信号的链路为b,则按照轮循顺序,可以选择c作为用于传输该心跳信号的心跳链路。
本申请的一个实施例中,上述心跳链路可以为:多种类型的物理链路中可用的、数据传输特征与心跳信号的信号特征相匹配的链路。
其中,上述信号特征包括以下特征中的至少一种:信号大小、信号紧急程度。上述信号大小指心跳信号中所携带的数据量的大小,信号紧急程度指:需要第二控制器快速响应的程度。
数据传输特征表征物理链路传输数据的能力。例如,i2c链路带宽较低,数据传输能力较弱,sas链路带宽较高,数据传输能力较强。
具体的,在获得心跳信号后,可以获得上述心跳信号的信号特征,然后从上述多种类型的物理链路中,选择可用的、数据传输特征与该信号特征相匹配的链路,作为用于传输该心跳信号的心跳链路。
本申请的一个实施例中,在心跳信号的信号特征反映该信号需要快速响应的情况下,可以从多种类型的物理链路中选择可用的、高带宽的链路,作为心跳链路。
其中,带宽指的是链路单位时间内可传输的数据量,高带宽的链路指的是单位时间内可传输的数据量大的链路,例如,可以将带宽超过预设带宽阈值的链路作为高带宽的链路,上述预设阈值可以是1000bps、1500bps等。
具体的,高带宽的链路的数据传输能力较强,可以快速传输数据,因此,对于需要快速响应的心跳信号,可以选择可用的、高带宽的心跳链路进行传输。例如,假设心跳信号中携带的信息为第一控制器的接口状态信息,该信息需要第二控制器快速响应,这种情况下可以选择高带宽的sas链路作为心跳链路传输该心跳信号,以便及时将该心跳信号传输至第二控制器。
除此之外,在心跳信号的信号特征反映该信号所携带的数据量大于预设的数据量阈值的情况下,可以从多种类型的物理链路中选择可用的、支持大数据传输的链路,作为心跳链路。
其中,支持大数据传输的链路指的是:单次所能够传输的数据量大的链路。可以将单次所能够传输的数据量超过预设阈值的链路作为支持大数据传输的链路,上述预设阈值可以是50kb、100kb、500kb等。
上述数据量阈值可以是20kb、30kb、60kb等。
具体的,在心跳信号所携带的数据量较大时,可以选择支持大数据传输的链路,作为心跳链路。例如,假设心跳信号中携带的数据量为40kb,数据量阈值为30kb,这种情况下,可以选择支持大数据传输的共享空间链路作为用于传输该心跳信号的心跳链路。这样在传输时无需对信号所携带的信息进行分割,可以防止传输过程中数据丢失,提高数据传输的可靠性。
本申请的一个实施例中,可以预先设定不同类型的物理链路的数据传输特征表,这样在获得心跳信号后,可以从上述数据传输特征表中查找可用的、与心跳信号的信号特征相匹配的物理链路,将查找到的物理链路作为心跳链路。
本申请的一个实施例中,在所选择的心跳链路传输上述心跳信号失败后,可以从剩下的物理链路中重新选择心跳链路,直至成功传输该心跳信号。
上述实施例中,通过创建多种类型的、冗余的物理链路传输心跳信号,可以提高心跳信号传输的可靠性。并且,上述多种类型的物理链路具有不同的数据传输特征,在选择心跳链路时,可以选择数据传输特征与心跳信号的信号特征匹配的链路,从而可以提高信号传输效率。
本申请的一个实施例中,第一控制器还可以通过ntb将第一控制器写入第一存储空间中的数据写入第二存储空间,实现第一存储空间和第二存储空间中数据同步。
具体的,第一控制器在将数据写入第一存储空间的情况下,还可以通过ntb将该数据写入第二存储空间中,作为该数据的备份数据,从而实现数据同步。
这样在需要第二控制器对第一存储空间中的待读取数据进行读取、且未成功将待读取数据同步至第二存储空间的情况下,可以通过ntb将待读取数据写入第二存储空间。
具体的,在需要第二控制器对第一存储空间中的待读取数据进行读取时,可以判断是否已通过ntb成功将上述待读取数据写入了第二存储空间,即判断是否已预先对该待读取数据进行了同步,若为是,则可以执行通过ntb将待读取数据写入第二存储空间的步骤,从而实现将待读取数据写入第二存储空间,便于第二控制器从第二存储空间中读取上述待读取数据;
若判断得到第一控制器已预先通过ntb成功将上述待读取数据写入了第二存储空间,则说明当前第二存储空间中已经存在了该待读取数据,则无需再次进行写入的步骤,从而可以直接向第二控制器发送心跳信号,指示第二控制器直接从第二存储空间中读取上述待读取数据。
本申请的一个实施例中,可以通过ntb将源空间中的待读取数据写入源空间对应的目的空间中。
其中,基于不同的源空间,本实施例包含至少以下三种情况:
第一种情况:
在源空间为第一子空间或第二子空间的情况下,源空间对应的目的空间为第二存储空间。第一子空间为:第一存储空间中用于存储第一控制器写入的数据的空间。第二子空间为:第一存储空间中用于存储第二控制器通过ntb写入的数据的空间。
具体的,第一控制器所管理的第一存储空间中包含第一子空间和第二子空间,第一子空间可以用于存储第一控制器直接写入的数据,第二子空间可以用于存储第二控制器通过ntb写入的数据,即第二子空间可以理解为第一控制器所管理的、第二存储空间的备份空间。
针对第一子空间或第二子空间中的待读取数据,第一控制器均可以直接从上述第一子空间或第二子空间中获取该待读取数据并通过ntb写入第二存储空间,便于第二控制器对该数据进行读取。
第二种情况:
在源空间为第一存储空间的情况下,源空间对应的目的空间为第三子空间,第三子空间为:第二存储空间中用于存储第一控制器通过ntb写入的数据的空间。
具体的,第二控制器所管理的第二存储空间中包含第三子空间,该第三子空间可以用于存储第一控制器通过ntb写入的数据,即第三子空间可以理解为第二控制器所管理的、第一存储空间的备份空间。
针对第一存储空间中的待读取数据,第一控制器可以直接从上述第一存储空间中获取该待读取数据并通过ntb写入第三存储空间,便于第二控制器对该数据进行读取。
第三种情况:
在源空间为第一子空间的情况下,源空间对应的目的空间为第三子空间,在源空间为第二子空间的情况下,源空间对应的目的空间为第四子空间,第四子空间为:第二存储空间中用于存储第二控制器写入的数据的第四子空间。
具体的,参见图4,图4为本申请实施例提供的第三种双控存储设备的结构示意图。如图4所示,第一控制器可以对第一子空间和第二子空间进行管理,其中,第一子空间可以用于存储第一控制器直接写入的数据,第二子空间可以用于存储第二控制器通过ntb写入的数据;
第二控制器可以对第三子空间和第四子空间进行管理,其中,第三子空间可以用于存储第一控制器通过ntb写入的数据,第四子空间可以用于存储第二控制器直接写入的数据。
本申请的一个实施例中,第一子空间和第三子空间的空间大小可以相同,第二子空间和第四子空间的空间大小也可以相同。
本申请的一个实施例中,第一控制器在将数据写入第一子空间时,可以将数据通过ntb写入第三子空间,同样的,第二控制器在将数据写入第四子空间时,可以将数据通过ntb写入第二子空间。可以理解为,第三子空间为第一子空间的备份空间,第二子空间为第四子空间的备份空间,保证第一子空间与第三子空间中数据同步,且第二子空间与第四子空间中数据同步。
本申请的一个实施例中,可以在需要第二控制器对源空间中的待读取数据进行读取的情况下,通过ntb将待读取数据写入源空间对应的目的空间。
其中,源空间为:第一子空间或第二子空间,在源空间为第一子空间的情况下,源空间对应的目的空间为第三子空间,在源空间为第二子空间的情况下,源空间对应的目的空间为第四子空间。
具体的,在需要第二控制器对第一子空间中的待读取数据进行读取的情况下,第一控制器可以通过ntb将待读取数据写入第三子空间中;
在需要第二控制器对第二子空间中的待读取数据进行读取的情况下,第一控制器可以通过ntb将待读取数据写入第四子空间中。
这样可以保证第一子空间与第三子空间中数据同步,且第二子空间与第四子空间中数据同步。
本申请的一个实施例中,可以利用心跳信号通知第二控制器从源空间对应的目的空间中读取待读取数据。
具体的,在第一控制器可以通过ntb将第二存储空间中的待读取数据写入第四子空间的情况下,上述心跳信号可以指示第二控制器从第四空间中读取上述待读取数据;
在第一控制器可以通过ntb将第一存储空间中的待读取数据写入第三子空间的情况下,上述心跳信号可以指示第二控制器从第三空间中读取上述待读取数据。
参见图5,图5为本申请实施例提供的第四种双控存储设备的结构示意图。第一控制器和第二控制器的组成硬件分别连接于背板上,上述组成硬件包括ntb芯片、心跳统一接口、物理链路等,其中ntb芯片可以驱动dma以直接内存存取的方式进行数据读写管理。
参见图6,图6为本申请实施例提供的一种数据读写过程的示意图。如图6所示:
第一控制器可以将数据写入上述第一子空间,并且,第一控制器还可以将上述数据写入映射空间,并通过ntb以dma的方式将该数据写入第三子空间;
同样的,第二控制器可以将数据写入上述第四子空间,并且,第二控制器还可以将上述数据写入映射空间,并通过ntb以dma的方式将该数据写入第二子空间;
这样可以将第三子空间作为第一子空间的备份空间,将第二子空间作为第四子空间的备份空间,在将数据写入第一子空间或第四子空间时,也将该数据写入第一子空间或第四子空间的备份空间,实现对数据的备份,从而可以提高数据的可靠性;
其中,第一控制器和第二控制器之间可以基于心跳信号进行通信,这样在某一控制器故障或离线时,另一控制器可以通过心跳信号获得上述某一控制器的状态;
在第二控制器确定第一控制器离线之后又重新上线的情况下,可以将第三子空间中的数据写入映射空间,并通过ntb以dma的方式将该数据写入第一子空间,从而实现异常恢复后数据的拷贝;
在第一控制器确定第二控制器离线之后又重新上线的情况下,可以将第二子空间中的数据写入映射空间,并通过ntb以dma的方式将该数据写入第四子空间,从而实现异常恢复后数据的拷贝。
参见图7,图7为本申请实施例提供的第二种数据读取方法的流程示意图,应用于双控存储设备中的第二控制器,双控存储设备还包括第一控制器,方法包括如下步骤s701-s702。
s701,接收第一控制器发送的、用于指示第二控制器从第二存储空间中读取待读取数据的心跳信号。
其中,第二存储空间为:由第二控制器管理的存储空间,待读取数据为:第一控制器通过非透明传输桥ntb从第一存储空间写入第二存储空间的数据,第一存储空间为:由第一控制器管理的存储空间。
具体的,当需要第二控制器读取第一存储空间中的待读取数据时,第一控制器可以将待读取数据通过ntb写入第二存储空间,从而便于后续第二控制器直接从第二存储空间中读取待读取数据。第一控制器在将待读取数据写入上述第二存储空间后,可以获得用于指示第二控制器从第二存储空间中读取待读取数据的心跳信号,并将该心跳信号发送至第二控制器,从而第二控制器可以接收到上述心跳信号。
s702,从第二存储空间中读取待读取数据。
具体的,第二控制器在接收到上述心跳信号后,说明第二存储空间中存在第一控制器写入的、需要第二控制器读取的数据,因此第二控制器可以从第二存储空间中读取该待读取数据。
本申请的一个实施例中,第二控制器在确定来自第一控制器的心跳信号丢失、且第二存储空间中存在从第一存储空间同步的待读取数据的情况下,从第二存储空间中读取待读取数据。
具体的,第二控制器在确定第一控制器心跳信号丢失的情况下,说明第一控制器故障或离线,这种情况下,可以判断第二存储空间中是否存在第一控制器预先从第一存储空间中通过ntb写入的待读取数据,若存在,则说明需要第二控制器继续对该待读取数据进行处理,因此第二控制器可以从第二存储空间中读取上述待读取数据。
本申请的一个实施例中,第一控制器和第二控制器之间可以存在多种类型的物理链路,这种情况下,第二控制器可以在判断上述多种类型的物理链路均未传输第一控制器的心跳信号的情况下,判断第一控制器心跳信号丢失。
除此之外,第二控制器还可以是在持续预设时长内均未接收到第一控制器的心跳信号的情况下,判断第一控制器心跳信号丢失。其中,上述预设时长可以是5秒、10秒、20秒等。
上述实施例提供的一种数据读取方案,双控存储设备中第一控制器可以通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间;利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。也就是,若需要第二控制器读取第一控制器管理的存储空间中的数据,则可以由第一控制器通过ntb将该数据写入第二控制器管理的存储空间中,然后由第二控制器直接从自身所管理的存储空间中读取数据。这样可以充分利用ntb能够高速写数据的能力,而避免由于ntb读数据能力弱导致的数据读取效率低的问题。由此可见,应用上述实施例提供的方案,可以提高数据读取效率。
参见图8,图8为本申请实施例提供的一种数据读取装置的结构示意图,所述装置设置于双控存储设备中的第一控制器,所述双控存储设备还包括第二控制器,所述装置包括:
数据写入模块801,用于通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,所述第一存储空间为:由所述第一控制器管理的存储空间,所述第二存储空间为:由所述第二控制器管理的存储空间;
信号通知模块802,用于利用心跳信号通知所述第二控制器从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述信号通知模块802,具体用于:
获得用于指示所述第二控制器从所述第二存储空间中读取所述待读取数据的心跳信号;
利用心跳链路向所述第二控制器发送所述心跳信号,其中,所述心跳链路为:预先建立的多种类型的物理链路中用于传输所述心跳信号的链路。
本申请的一个实施例中,所述心跳链路为:所述多种类型的物理链路中可用的、数据传输特征与所述心跳信号的信号特征相匹配的链路。
本申请的一个实施例中,所述装置还包括链路选择模块,用于通过以下方式选择心跳链路:
在所述心跳信号的信号特征反映该信号需要快速响应的情况下,从所述多种类型的物理链路中选择可用的、高带宽的链路,作为心跳链路;或
在所述心跳信号的信号特征反映该信号所携带的数据量大于预设的数据量阈值的情况下,从所述多种类型的物理链路中选择可用的、支持大数据传输的链路,作为心跳链路。
本申请的一个实施例中,所述数据写入模块801,具体用于:
通过所述ntb将源空间中的待读取数据写入所述源空间对应的目的空间;
其中,在所述源空间为第一子空间或第二子空间的情况下,所述源空间对应的目的空间为第二存储空间,所述第一子空间为:所述第一存储空间中用于存储所述第一控制器写入的数据的空间,所述第二子空间为:所述第一存储空间中用于存储所述第二控制器通过所述ntb写入的数据的空间;或
在所述源空间为第一存储空间的情况下,所述源空间对应的目的空间为第三子空间,所述第三子空间为:所述第二存储空间中用于存储所述第一控制器通过所述ntb写入的数据的空间;或
在所述源空间为所述第一子空间的情况下,所述源空间对应的目的空间为所述第三子空间,在所述源空间为所述第二子空间的情况下,所述源空间对应的目的空间为第四子空间,所述第四子空间为:所述第二存储空间中用于存储所述第二控制器写入的数据的第四子空间。
本申请的一个实施例中,所述装置还包括数据同步模块,用于通过所述ntb将所述第一控制器写入所述第一存储空间中的数据写入所述第二存储空间,实现所述第一存储空间和第二存储空间中数据同步;
所述数据写入模块801,具体用于:
在需要所述第二控制器对所述第一存储空间中的待读取数据进行读取、且未成功将所述待读取数据同步至第二存储空间的情况下,通过所述ntb将所述待读取数据写入所述第二存储空间。
本申请的一个实施例中,所述数据写入模块801,具体用于:
在以下情况中的任一情况下,通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间:
所述第一控制器处于超载状态;
所述第二控制器由离线状态切换至上线状态、且在所述离线状态之前已将所述待读取数据同步至所述第一存储空间。
参见图9,图9为本申请实施例提供的另一种数据读取装置的结构示意图,所述装置设置于双控存储设备中的第二控制器,所述双控存储设备还包括第一控制器,所述装置包括:
信号接收模块901,用于接收所述第一控制器发送的、用于指示所述第二控制器从第二存储空间中读取待读取数据的心跳信号,其中,所述第二存储空间为:由所述第二控制器管理的存储空间,所述待读取数据为:所述第一控制器通过非透明传输桥ntb从第一存储空间写入所述第二存储空间的数据,所述第一存储空间为:由所述第一控制器管理的存储空间;
第一读取模块902,用于从所述第二存储空间中读取所述待读取数据。
本申请的一个实施例中,所述装置还包括第二读取模块,用于:
在确定来自所述第一控制器的心跳信号丢失、且所述第二存储空间中存在从所述第一存储空间同步的待读取数据的情况下,从所述第二存储空间中读取所述待读取数据。
上述实施例提供的一种数据读取方案,双控存储设备中第一控制器可以通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间;利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。也就是,若需要第二控制器读取第一控制器管理的存储空间中的数据,则可以由第一控制器通过ntb将该数据写入第二控制器管理的存储空间中,然后由第二控制器直接从自身所管理的存储空间中读取数据。这样可以充分利用ntb能够高速写数据的能力,而避免由于ntb读数据能力弱导致的数据读取效率低的问题。由此可见,应用上述实施例提供的方案,可以提高数据读取效率。
本申请实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,
存储器1003,用于存放计算机程序;
处理器1001,用于执行存储器1003上所存放的程序时,实现数据读取方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据读取方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据读取方法。
上述实施例提供的一种数据读取方案,双控存储设备中第一控制器可以通过非透明传输桥ntb将第一存储空间中的待读取数据写入第二存储空间,其中,第一存储空间为:由第一控制器管理的存储空间,第二存储空间为:由第二控制器管理的存储空间;利用心跳信号通知第二控制器从第二存储空间中读取待读取数据。也就是,若需要第二控制器读取第一控制器管理的存储空间中的数据,则可以由第一控制器通过ntb将该数据写入第二控制器管理的存储空间中,然后由第二控制器直接从自身所管理的存储空间中读取数据。这样可以充分利用ntb能够高速写数据的能力,而避免由于ntb读数据能力弱导致的数据读取效率低的问题。由此可见,应用上述实施例提供的方案,可以提高数据读取效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。