掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法、装置、系统和存储装置

文献发布时间:2023-06-19 19:32:07


数据处理方法、装置、系统和存储装置

技术领域

本申请涉及数据安全技术领域,尤指一种数据处理方法、装置、系统和存储装置。

背景技术

在一些对系统的可靠性以及实时性要求都非常高的场景下(例如银行金融系统、在线交易处理(OnLine Transaction Processing,OLTP)、在线分析处理(OnLineAnalytical Processing,OLAP)、高性能计算(High Performance Computing,HPC)、大数据等),会使用双端口双控制器双主机系统架构中的固态硬盘。在双端口双控制器双主机系统中,两个独立的主机是通过各自独享的数据通道(即端口)来对固态硬盘中的闪存空间进行数据访问的,假如其中一个数据通道发生了故障,那么另外一个主机可以无缝低延时的接管其任务,继续进行数据访问,这种双接口冗余容错机制,可以很好的提升系统可靠性。

但是,如果在某一时刻,两个主机都要对闪存空间中共享的同一区域做读写访问,就会出现数据访问冲突的现象。

发明内容

为了解决上述技术问题,本申请提供了一种数据处理方法、装置、系统和存储装置,其能够避免同时对同一命名空间执行两个访问操作而造成数据访问冲突的现象。

为了达到本申请目的,本发明实施例提供了一种数据处理方法,应用于具有第一端口和第二端口的固态硬盘,第一端口和第二端口分别连接第一根复合体和第二根复合体,该数据处理方法包括:

当固态硬盘的处理器中的第一子控制器和第二子控制器分别通过第一端口和第二端口接收到第一根复合体的第一访问请求和第二根复合体的第二访问请求,以对固态硬盘的闪存之中的同一命名空间进行访问操作的时候,根

据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作5执行;其中,访问操作为读取操作或者写入操作。

在一个可选的实施例中,当第一访问请求和第二访问请求均为读取操作的请求或者均为写入操作的请求的时候,根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,包括:

比较第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的0数值与第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值:

如果第一PCIe TLP包之中的Traffic Class域字段的数值等于第二PCIeTLP包之中的Traffic Class域字段的数值,则通过加权轮询的方式来确定优先

执行的访问操作;其中,加权轮询的方式包括对第一PCIe TLP包之中的Traffic5Class域字段和第二PCIe TLP包之中的Traffic Class域字段进行加权轮询。

在一个可选的实施例中,当第一访问请求和第二访问请求之中有一个读取操作的请求以及一个写入操作的请求的时候,根据固态硬盘预定的数据调度管理机制,确定一个访问操作优先于另一访问操作执行,包括:

如果第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的0数值等于第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值,则根据预先设置的优先原则,确定优先执行的访问操作。

在一个可选的实施例中,通过加权轮询的方式来确定优先执行的访问操作,包括:

对第一PCIe TLP包之中的Traffic Class域字段和第二PCIe TLP包之中的5Traffic Class域字段、以及在以下各项之中的一项或更多项进行加权轮询:第

一子控制器和第二子控制器的处理能力、第一子控制器和第二子控制器的负载、第一端口和第二端口的流量、为第一子控制器和第二子控制器分别分配的内存空间的大小、第一子控制器和第二子控制器各自的任务队列配置的权值、以及第一子控制器和第二子控制器各自的任务队列中的所有业务流的权值总和。

在一个可选的实施例中,在根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行之前,数据处理方法还包括:

当固态硬盘的处理器中的第一子控制器和第二子控制器分别通过第一端口和第二端口接收到第一访问请求和第二访问请求,第一子控制器和第二子控制器互相获取对方的运行状态;其中,运行状态包括正常运行状态和故障状态;

根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,包括:

如果在第一子控制器和第二子控制器中的一个子控制器确定自身处于正常运行状态并且另一个子控制器处于故障状态,则处于正常运行状态的子控制器执行所接收的访问请求所对应的读取操作或写入操作。

在一个可选的实施例中,当第一访问请求和第二访问请求均为读取操作的请求或者均为写入操作的请求的时候,根据固态硬盘预定的数据调度管理机制,确定一个访问操作优先于另一访问操作执行,还包括:

比较第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的数值与第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值:

如果第一PCIe TLP包之中的Traffic Class域字段的数值大于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第一端口接收的请求所对应的访问操作;

如果第一PCIe TLP包之中的Traffic Class域字段的数值小于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第二端口接收的请求所对应的访问操作。

在一个可选的实施例中,当第一访问请求和第二访问请求之中有一个读取操作的请求以及一个写入操作的请求的时候,根据固态硬盘预定的数据调度管理机制,确定一个访问操作优先于另一访问操作执行,还包括:

如果第一PCIe TLP包之中的Traffic Class域字段的数值大于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第一端口接收的请求所对应的访问操作;

如果第一PCIe TLP包之中的Traffic Class域字段的数值小于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第二端口接收的请求所对应的访问操作。

为了达到上述目的,本发明实施例提供了一种数据处理装置,包括:处理器和存储器;其中,

存储器用于保存用于进行数据处理的程序;

处理器用于读取执行用于进行数据处理的程序,进行如上述任一实施例中所描述的数据处理方法。

为了达到上述目的,本发明实施例提供了一种存储介质,存储有计算机可执行指令;计算机可执行指令用于在被读取执行时,进行如上述任一实施例中所描述的数据处理方法。

为了达到上述目的,本发明实施例提供了一种数据处理系统,包括具有第一端口和第二端口的固态硬盘,以及第一根复合体和第二根复合体,第一根复合体和第二根复合体分别通过对应的第一端口和第二端口连接固态硬盘;

固态硬盘的处理器用于进行如上述任一实施例中所描述的数据处理方法。

通过上述方式,当固态硬盘接收到两个根复合体发出的访问请求,以对同一命名空间进行访问操作的时候,可以确定其中一个访问操作优先于另一个访问操作执行,从而避免同时对同一命名空间执行两个访问操作而造成的数据访问冲突现象。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例提供的数据处理方法的流程图;

图2示出本发明实施例提供的数据处理装置的框图;

图3为本发明实施例提供的数据处理系统的框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

为了解决上述技术问题,本发明实施例提供了一种数据处理方法。该数据处理方法应用于如图3所示的数据处理系统。如图3所示,该数据处理系统包括具有第一端口120和第二端口130的固态硬盘100,以及第一根复合体200和第二根复合体300。第一根复合体200和第二根复合体300分别通过对应的第一端口120和第二端口130连接固态硬盘100。如图1所示,该方法包括步骤S101。

步骤S101,当固态硬盘100的处理器110中的第一子控制器112和第二子控制器114分别通过第一端口120和第二端口130接收到第一根复合体200的第一访问请求和第二根复合体300的第二访问请求,以对固态硬盘100的闪存140之中的同一命名空间进行访问操作的时候,根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行。

在这里,访问操作指的是读取操作或者写入操作。双端口双控制器双主机系统架构中的主机为根复合体。根复合体指的是将处理器和内存子系统连接到由一个或多个交换设备组成的PCI Express交换结构。其中,处理器生成事务请求,通过本地总线相互连接。根复合体功能可以以分立设备实现,也可以在处理器中集成。一个根复合体可能包含多个PCIExpress端口,且可将多个交换设备连接到根根复合体或级联的端口。命名空间是许多编程语言使用的一种代码组织的形式,通过命名空间来分类和区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,可扩展标记语言XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。因此,“同一命名空间”即为固态硬盘的闪存空间中共享的同一区域。

通过上述方式,当固态硬盘100接收到两个根复合体发出的访问请求,以对同一命名空间进行访问操作的时候,可以确定其中一个访问请求对应的访问操作优先于另一个访问请求对应的访问操作执行,从而避免同时对同一命名空间执行两个访问操作而造成的数据访问冲突现象。

在一个可选的实施例中,当第一访问请求和第二访问请求均为读取操作的请求或者均为写入操作的请求的时候,步骤S101中的根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,包括:

比较第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的数值与第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值:

如果第一PCIe TLP包之中的Traffic Class域字段的数值等于第二PCIe TLP包之中的Traffic Class域字段的数值,则通过加权轮询的方式来确定优先执行的访问操作;其中,加权轮询的方式包括对第一PCIe TLP包之中的Traffic Class域字段和第二PCIe TLP包之中的Traffic Class域字段进行加权轮询。

在这里,TLP包即Transaction Layer Packet(事务层数据包)是由PCI Express体系中的端点或者根复合体发送的数据包,在PCIe体系中的事务层生成。根复合体通过向固态硬盘发送PCIe TLP包来发出访问请求,其中PCIe TLP包之中包括了根复合体的访问请求。固态硬盘可以通过解析出PCIe TLP包之中的Traffic Class域字段,可以确定访问操作的执行优先权以及多个访问操作的执行顺序。当固态硬盘接收到第一PCIe TLP包和第二PCIe TLP包的时候(即接收到对于固态硬盘的闪存之中的同一命名空间进行访问操作的时候),通过对第一PCIe TLP包和第二PCIe TLP包之中的Traffic Class域字段的数值进行轮询来确定对同一命名空间进行访问操作的顺序。在此对第一PCIe TLP包和第二PCIe TLP包之中的Traffic Class域字段的数值进行轮询的意义在于通过比较简单的逻辑能够比较快速地得出第一PCIe TLP包对应的访问操作以及第二PCIe TLP包对应的访问操作之中的哪个访问操作优先执行。

在一个可选的实施例中,当第一访问请求和第二访问请求之中有一个读取操作的请求以及一个写入操作的请求的时候,步骤S101之中的根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,包括:

如果第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的数值等于第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值,则根据预先设置的优先原则,确定优先执行的访问操作。

在一个可选的实施例中,上述通过加权轮询的方式来确定优先执行的访问操作,包括:

对第一PCIe TLP包之中的Traffic Class域字段和第二PCIe TLP包之中的Traffic Class域字段、以及在以下各项之中的一项或更多项进行加权轮询:第一子控制器和第二子控制器的处理能力、第一子控制器和第二子控制器的负载、第一端口和第二端口的流量、为第一子控制器和第二子控制器分别分配的内存空间的大小、第一子控制器和第二子控制器各自的任务队列配置的权值、以及第一子控制器和第二子控制器各自的任务队列中的所有业务流的权值总和。

在一个可选的实施例中,在上述根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行之前,该数据处理方法还包括:

当固态硬盘的处理器中的第一子控制器和第二子控制器分别通过第一端口和第二端口接收到第一访问请求和第二访问请求,第一子控制器和第二子控制器互相获取对方的运行状态;其中,运行状态包括正常运行状态和故障状态;

上述根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,包括:

如果在第一子控制器和第二子控制器中的一个子控制器确定自身处于正常运行状态并且另一个子控制器处于故障状态,则处于正常运行状态的子控制器执行所接收的访问请求所对应的读取操作或写入操作。

也就是说,在传输数据的某一时刻,如果在第一子控制器和第二子控制器之中有一个子控制器处于故障状态,那么首先该故障状态信息会通过两个子控制器之间的信号线告知到另一方。其次,根复合体将通过处于正常运行状态的子控制器链路继续进行读取操作或写入操作。通过这种架构,使得整个系统拥有了更高的可靠性和稳定性。

在一个可选的实施例中,当第一访问请求和第二访问请求均为读取操作的请求或者均为写入操作的请求的时候,步骤S101之中的根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,还包括:

比较第一访问请求所在的第一PCIe TLP包之中的Traffic Class域字段的数值与第二访问请求所在的第二PCIe TLP包之中的Traffic Class域字段的数值:

如果第一PCIe TLP包之中的Traffic Class域字段的数值大于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第一端口接收的请求所对应的访问操作;

如果第一PCIe TLP包之中的Traffic Class域字段的数值小于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第二端口接收的请求所对应的访问操作。

在一个可选的实施例中,当第一访问请求和第二访问请求之中有一个读取操作的请求以及一个写入操作的请求的时候,步骤S101之中的根据固态硬盘预定的数据调度管理机制确定一个访问操作优先于另一访问操作执行,还包括:

如果第一PCIe TLP包之中的Traffic Class域字段的数值大于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第一端口接收的请求所对应的访问操作;

如果第一PCIe TLP包之中的Traffic Class域字段的数值小于第二PCIe TLP包之中的Traffic Class域字段的数值,则确定优先执行通过第二端口接收的请求所对应的访问操作。

为了解决上述技术问题,本发明实施例提供了一种数据处理装置,如图2所示,该数据处理装置包括:处理器20和存储器10;其中,

存储器10用于保存用于进行数据处理的程序;

处理器20用于读取执行用于进行数据处理的程序,进行如上述任一实施例中描述的数据处理方法。

为了解决上述技术问题,本发明实施例提供了一种存储介质,存储有计算机可执行指令;计算机可执行指令用于在被读取执行时,进行如上述任一实施例中描述的数据处理方法。

为了解决上述技术问题,本发明实施例提供了一种数据处理系统,如图3所示,该数据处理系统包括具有第一端口120和第二端口130的固态硬盘100,以及第一根复合体200和第二根复合体300。第一根复合体200和第二根复合体300分别通过对应的第一端口120和第二端口130连接固态硬盘100。

固态硬盘100的处理器110用于进行如上述任一实施例中描述的数据处理方法。

虽然本发明所揭露的实施方式如上,但上述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

技术分类

06120115940606