链路选择方法及装置与流程

文档序号:12063293阅读:299来源:国知局
链路选择方法及装置与流程
本申请涉及通信领域,尤其涉及一种链路选择方法及装置。
背景技术
:存储服务器是一种能提供很大存储空间的服务器,它必须具有快速的处理芯片,较大的RAM(RandomAccessMemory,随机存取存储器),以及非常大的内部磁盘空间,以便应对终端用户随时可能出现的应用调配需求。在存储服务器中,主板通常是一台存储服务器设计的核心。存储服务器主板的架构中,CPU可以通过SAS(SerialAttachedSCSI,串行连接SCSI技术)控制器、FPGA(Field-ProgrammableGateArray,现场可编程门阵列),以及SAS扩展器与RAID阵列建立连接,并且FPGA与SAS扩展器之间可以具有多条链路。在进行数据读写时,CPU将从I/O业务口接收到读/写IO请求通过SAS控制器下发到FPGA,之后,FPGA根据目标硬盘的设备识别码模除FPGA与SAS扩展器之间链路的数量,将计算结果作为链路标识,以确定目标链路,之后,FPGA通过该目标链路将接收到的读/写IO请求发送至SAS扩展器,再由SAS扩展器下发到RAID阵列,来完成对应的读写操作。在上述目标链路选择过程中,由于所得到的链路标识是唯一的,即所得到的目标链路是唯一的,从而当目标链路出现故障时,将无法完成读写操作,容错率较低;另外,通过上述模除算法确定目标链路,很可能出现对每个硬盘进行读写操作时,均通过同一条目标链路下发读/写IO请求的情况,从而导致链路的使用率较低,并且,在该种情况下,由于所有的读/写IO请求都通过同一条目标链路进行传输,从而影响链路传输速率。技术实现要素:有鉴于此,本申请提供一种链路选择方法及装置,以实现提高容错率,并且提高链路的利用率以及传输速率,从而有效提升存储服务器的整体读写性能。具体地,本申请是通过如下技术方案实现的:根据本申请实施例的第一方面,提供一种链路选择方法,所述方法包括:确定链路的链路状态以及确定所述链路的当前使用频次;将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路;通过所述目标链路将待传输数据发送至目标硬盘。可选的,所述方法还包括:若所述链路的链路状态均表示可正常工作,并且所述链路的当前使用频次相同,则根据目标硬盘的设备识别码确定链路标识;将所述链路标识所对应的链路确定为目标链路。可选的,所述方法还包括:在预设的统计周期内,确定目标链路之后,获取在所述统计周期内占用所述目标链路的硬盘的设备识别码;在所述占用所述目标链路的硬盘的设备识别码中查找所述目标硬盘的设备识别码;若在所述占用所述目标链路的硬盘的设备识别码中未查找到所述目标硬盘的设备识别码,则将所述目标链路在所述统计周期内对应的使用频次加1,并将所述目标硬盘的设备识别码记录在所述占用所述目标链路的硬盘的设备识别码中,其中,每条所述链路在所述统计周期内对应的使用频次为预设的默认值。可选的,所述确定所述链路的当前使用频次包括:若当前为首个统计周期,则所述链路的当前使用频次为所述默认值;若当前不为首个统计周期,则将所述链路在上一个统计周期内对应的使用频次确定为所述链路的当前使用频次。可选的,所述方法还包括:在监测到所述链路发生故障后,将所述链路的链路状态修改为不可正常工作,并对所述链路进行修复;在对所述链路修复成功后,将所述链路的链路状态修改为可正常工作。根据本申请实施例的第二方面,提供一种链路选择装置,其特征在于,所述装置包括:状态确定模块,用于确定链路的链路状态以及确定所述链路的当前使用频次;目标确定模块,用于将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路;处理模块,用于通过所述目标链路将待传输数据发送至目标硬盘。可选的,所述装置还包括:标识确定模块,用于若所述链路的链路状态均表示可正常工作,并且所述链路的当前使用频次相同,则根据目标硬盘的设备识别码确定链路标识;所述目标确定模块还用于:将所述链路标识所对应的链路确定为目标链路。可选的,所述装置还包括:获取模块,用于在预设的统计周期内,确定目标链路之后,获取在所述统计周期内占用所述目标链路的硬盘的设备识别码;查找模块,用于在所述占用所述目标链路的硬盘的设备识别码中查找所述目标硬盘的设备识别码;统计模块,用于若在所述占用所述目标链路的硬盘的设备识别码中未查找到所述目标硬盘的设备识别码,则将所述目标链路在所述统计周期内对应的使用频次加1,并将所述目标硬盘的设备识别码记录在所述占用所述目标链路的硬盘的设备识别码中,其中,每条所述链路在所述统计周期内对应的使用频次为预设的默认值。可选的,所述状态确定模块包括:第一确定子模块,用于若当前为首个统计周期,则所述链路的当前使用频次为所述默认值;第二确定子模块,用于若当前不为首个统计周期,则将所述链路在上一个统计周期内对应的使用频次确定为所述链路的当前使用频次。可选的,所述装置还包括:修复模块,用于在监测到所述链路发生故障后,将所述链路的链路状态修改为不可正常工作,并对所述链路进行修复;状态修改模块,用于在对所述链路修复成功后,将所述链路的链路状态修改为可正常工作。由上述实施例可见,通过确定链路的链路状态以及确定链路的当前使用频次,将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路,通过目标链路将待传输数据发送至目标硬盘;由于SAS控制器根据链路实际的使用状态选择目标链路,可以有效地避免选择故障链路作为目标链路,提高容错率;并且可以有效地避免频繁地选择同一条目标链路,从而可以提高链路的利用率以及传输速率,从而有效提升存储服务器的整体读写性能。附图说明图1为存储服务器的主板架构示意图;图2为本申请链路选择方法的一个实施例流程图;图3为本申请链路选择装置的一个实施例框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。请参见图1,为存储服务器的主板架构示意图。如图1所示,在存储服务器的主板架构中,通常包括业务IO口、CPU、SAS控制器、FPGA、SAS扩展器以及RAID阵列。其中,CPU负责操作系统、RAID算法以及所有业务处理计算相关的工作。业务IO口为支撑CPU的芯片组,负责提供一些低速接口;例如,管理网口、按键以及串口等。SAS控制器,负责提供SAS协议转换,以及相关存储指令的处理,并且SAS控制器可以通过SMP帧获取RAID阵列中硬盘的信息,并为每个硬盘分配设备识别码,继而将每个硬盘的设备识别码和硬盘地址之间的对应关系发送至FPGA。FPGA,负责存储SAS控制器为RAID阵列中的硬盘所分配的设备识别码与硬盘地址之间的对应关系,并提供相关存储指令的转发处理。SAS扩展器,负责扩充SAS控制器的端口数,相当于一个交换机。RAID阵列,为由独立磁盘构成的具有冗余能力的阵列,RAID阵列可以是由很多价格较低廉的磁盘,组合成的一个容量巨大的磁盘组,从而来提升整个磁盘系统的效率;例如,RAID阵列可以是由兼容SAS协议的SATA(SerialAdvancedTechnologyAttachment,串行高级技术附件)硬盘或SAS硬盘。在上述主板架构中,数据的读写操作主要由CPU负责处理。在现有技术中,CPU在进行数据的读写操作时,读/写IO请求从业务IO口进入CPU,CPU在接收到该读/写IO请求后,将该读/写IO请求下发至SAS控制器,SAS控制器将读/写IO请求封装为一个SAS帧,并且在该SAS帧中携带SAS控制器为目标硬盘分配的设备识别码,之后,SAS控制器将该SAS帧下发至FPGA,FPGA解析SAS帧,获取读/写IO请求和设备识别码,之后,使用设备识别码模除FPGA与SAS扩展器之间链路的数量,将计算得出的结果作为链路标识,继而将该链路标识所对应的链路确定为目标链路,之后,通过该目标链路将读/写IO请求下发至SAS扩展器,再经过SAS扩展器下发给RAID阵列中的目标硬盘,以完成对应的读写操作。由上述描述可见,在选择目标链路的过程中,FPGA使用设备识别码所确定的目标链路是唯一的,从而当所确定的目标链路出现故障时,将无法完成读写操作;并且,FPGA使用设备识别码确定目标链路,很可能出现在每一次选择目标链路的过程中,所确定的目标链路相同,例如,假设FPGA与SAS扩展器之间布设有4条链路,该4条链路的链路标识分别为0、1、2、3,磁盘阵列RAID阵列中有4个硬盘,SAS控制器为该4个硬盘分配的设备识别码分别为0、4、8、12,那么,使用该4个设备识别码模除链路数量,所得到的链路标识均为0,从而所确定的目标链路均相同,从而将导致链路的使用率较低;同时,由于所有的读/写IO请求均通过同一条目标链路进行传输,从而影响链路的传输速率。有鉴于此,本申请提出一种链路选择方法及装置,该方法的执行以图1所示例的主板架构为基础,在该方法中,SAS控制器可以记录FPGA与SAS扩展器之间的链路的当前使用状态,根据链路的当前使用状态为待下发的读/写IO请求选择目标链路。由于SAS控制器根据链路实际的使用状态选择目标链路,可以有效地避免选择故障链路作为目标链路,提高容错率;并且可以有效地避免频繁地选择同一条目标链路,从而可以提高链路的利用率以及传输速率,从而有效提升存储服务器的整体读写性能。下面通过具体实施例并结合具体的应用场景对本申请进行描述。请参见图2,为本申请链路选择方法的一个实施例流程图,该方法可以包括以下步骤:步骤S201:确定链路的链路状态以及确定链路的当前使用频次。步骤S202:将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路。步骤S203:通过目标链路将待传输数据发送至目标硬盘。首先说明,在上述步骤S201至步骤S203中所描述的链路,以及下述描述中的链路为FPGA与SAS扩展器之间的链路。例如,如图1中所示,FPGA与SAS扩展器之间具有四条链路,该四条链路的链路标识分别为0、1、2、3,并且RAID阵列中包括4个硬盘,假设SAS控制器为该4个硬盘分配的设备识别码分别为0、4、8、12。在本申请中,SAS控制器可以记录每条链路的使用状态,这里所说的“使用状态”可以包括链路状态以及当前使用频次,其中,链路状态可以用于表示链路是否可正常工作,例如,链路状态可以为“不可正常工作”,或“可正常工作”;当前使用频次可以表示当前占用该链路进行读写操作的硬盘个数,据此,SAS控制器上还可以记录当前占用链路进行读写操作的硬盘的设备识别码,例如,如下表1所示,为SAS控制器所记录的每条链路的使用状态:表1链路链路标识链路状态使用频次设备识别码10可正常工作021可正常工作1032可正常工作1443可正常工作112需要说明的是,在本申请中,可以预设统计周期,例如5分钟,则SAS控制器可以在每个统计周期内,统计得出每条链路的使用状态,具体的,在一个统计周期内,SAS控制器确定目标链路之后,可以根据表1所示例的每条链路的使用状态,获取在该统计周期内,占用该目标链路的硬盘的设备识别码;之后,在该占用目标链路的硬盘的设备识别码中查找目标硬盘的设备识别码;若在该占用目标链路的硬盘的设备识别码中查找到目标硬盘的设备识别码,则将目标链路在该统计周期内对应的使用频次加1,并将目标硬盘的设备识别码记录在该占用目标链路的硬盘的设备识别码中,其中,在一个统计周期内,每条链路的使用频次的初始值为预设的默认值,例如0。本领域技术人员可以理解的是,由于较大的数据文件可能需要较长时间才可以传送完成,因此在本申请中,上述所描述的统计周期可以设置的较大,例如5分钟,10分钟,以避免SAS控制器频繁地更新每条链路的使用状态,导致链路的使用状态并不十分准确。在上述描述的基础上,还需要说明的是,若当前为首个统计周期,则每条链路的当前使用频次为预设的默认值,例如为0,并且,在该首个统计周期内,占用每条链路的硬盘的设备识别码为空;若当前不为首个统计周期,则链路的当前使用频次为该链路在上一个统计周期内对应的使用频次。基于此,SAS控制器每隔一个统计周期,则可以根据统计周期内的统计结果,更新上述表1所示例的链路的使用状态。基于上述描述,SAS控制器在向RAID阵列中的硬盘下发待传输数据,例如读/写IO请求时,首先可以查看当前所记录的链路使用状态,例如当前的表1,根据表1获取链路状态表示可正常工作的链路,包括链路1、链路2、链路3、链路4,之后,继续在该4条可正常工作的链路中,选择出当前使用频次最低的链路,如表1所示,链路1的使用频次为0,则可以将链路1确定为目标链路。此外,需要说明的是,若当前使用频次最低的链路的数量多于1条,并且少于链路总数量,例如,假设在表1中,链路1对应的使用频次为2,则当前使用频次最低的链路为链路2、链路3和链路4,此时,可以从该3条链路中随机选择一条链路作为目标链路。此外,还需要说明的是,若4条链路的链路状态均表示可正常工作,并且该4条链路的当前使用频次相同,此时,则可以根据目标硬盘的设备识别码确定链路标识。例如,可以使用目标硬盘的设备识别码模除链路数量,将得出的结果作为链路标识,将该链路标识所对应的链路确定为目标链路。确定目标链路之后,SAS控制器可以将待传输数据,例如读/写IO请求封装为SAS帧,并且在该SAS帧中携带所确定的目标链路的链路标识,之后,SAS控制器将该SAS帧发送至FPGA。FPGA解析该SAS帧,获取待传输数据、目标链路的链路标识,以及目标硬盘的设备识别码,之后,FPGA根据该设备识别码,从预先保存的设备识别码与硬盘地址之间的对应关系中获取到该设备识别码对应的硬盘地址,之后,FPGA将待传输数据以及硬盘地址封装为Open帧,根据目标链路的链路标识,将该Open帧从目标链路发送至SAS扩展器。SAS扩展器解析该Open帧,获取待传输数据以及硬盘地址,根据该硬盘地址将待传输数据发送至RAID阵列中的目标硬盘。此外,还需要说明的是,若SAS控制器将待传输数据通过目标链路下发至FPGA之后,在预设时长内,未接收到目标硬盘所响应的数据,则SAS控制器可以认为目标链路发生故障,此时,SAS控制器可以修改上述表1所示例的链路的使用状态,将目标链路所对应的链路状态修改为“不可正常工作”,同时,SAS控制器还可以对发生故障的目标链路进行修复。例如,SAS控制器首先可以封装一个TASK帧,在该TASK帧携带目标链路的链路标识,以修复目标链路;若修复不成功,SAS控制器还可以继续封装一个SMP帧,在该SMP帧中携带目标硬盘的硬盘地址,以修复SAS扩展器与RAID阵列之间的链路;若修复仍不成功,SAS控制器还可以通过smbus复位整个FPGA层。此外,在修复成功后,SAS控制器还可以目标链路的链路状态修改为“可正常工作”。由上述实施例可见,通过确定链路的链路状态以及确定链路的当前使用频次,将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路,通过目标链路将待传输数据发送至目标硬盘;由于SAS控制器根据链路实际的使用状态选择目标链路,可以有效地避免选择故障链路作为目标链路,提高容错率;并且可以有效地避免频繁地选择同一条目标链路,从而可以提高链路的利用率以及传输速率,从而有效提升存储服务器的整体读写性能。与前述链路选择方法的实施例相对应,本申请还提供了链路选择装置的实施例。请参考图3,为本申请链路选择装置的一个实施例框图,该装置可以包括:状态确定模块31、目标确定模块32、处理模块33。其中,该状态确定模块31,可以用于确定链路的链路状态以及确定所述链路的当前使用频次;该目标确定模块32,可以用于将链路状态表示可正常工作并且当前使用频次最低的链路确定为目标链路;该处理模块33,可以用于通过所述目标链路将待传输数据发送至目标硬盘。在一实施例中,所述装置还可以包括(图3中并未示出):标识确定模块,可以用于若所述链路的链路状态均表示可正常工作,并且所述链路的当前使用频次相同,则根据目标硬盘的设备识别码确定链路标识;所述目标确定模块32还可以用于:将所述链路标识所对应的链路确定为目标链路。在一实施例中,所述装置还可以包括(图3中并未示出):获取模块,可以用于在预设的统计周期内,确定目标链路之后,获取在所述统计周期内占用所述目标链路的硬盘的设备识别码;查找模块,可以用于在所述占用所述目标链路的硬盘的设备识别码中查找所述目标硬盘的设备识别码;统计模块,可以用于若在所述占用所述目标链路的硬盘的设备识别码中未查找到所述目标硬盘的设备识别码,则将所述目标链路在所述统计周期内对应的使用频次加1,并将所述目标硬盘的设备识别码记录在所述占用所述目标链路的硬盘的设备识别码中,其中,每条所述链路在所述统计周期内对应的使用频次为预设的默认值。在一实施例中,所述状态确定模块31可以包括(图3中并未示出):第一确定子模块,可以用于若当前为首个统计周期,则所述链路的当前使用频次为所述默认值;第二确定子模块,可以用于若当前不为首个统计周期,则将所述链路在上一个统计周期内对应的使用频次确定为所述链路的当前使用频次。在一实施例中,所述装置还可以包括(图3中并未示出):修复模块,可以用于在监测到所述链路发生故障后,将所述链路的链路状态修改为不可正常工作,并对所述链路进行修复;状态修改模块,可以用于在对所述链路修复成功后,将所述链路的链路状态修改为可正常工作。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1