双控磁盘阵列系统及其数据存取方法与流程

文档序号:12462703阅读:631来源:国知局
双控磁盘阵列系统及其数据存取方法与流程

本发明涉及计算机数据存储技术领域,特别是涉及双控磁盘阵列系统及其数据存取方法。



背景技术:

独立冗余磁盘阵列(Redundant Arrays of Inexpensive Disk,RAID)主要包括前端的阵列控制器和后端的若干磁盘。阵列控制器中实现由RAID算法,读写磁盘组时,读写请求按照特定的RAID级别并行地分布到各个磁盘,同时完成校验计算,在性能和数据完整性方面较好地满足了用户的需求。

双控磁盘阵列系统(双控制器磁盘阵列系统)包括两台控制器(分别是第一控制器和第二控制器)和后端由多个物理硬盘形成的磁盘阵列,两个控制器共同管理磁盘阵列,根据应用需求,磁盘阵列将被划分成若干个逻辑卷,每一个逻辑卷相当于一个虚拟磁盘,以逻辑号作为标识,主机可通过任一控制器访问逻辑卷。双控磁盘阵列系统在运行过程中,其中一个控制器中的缓存数据以及相关的数据信息被同步备份到另一个控制器,当一个控制器发生故障时,可以从另一个控制器中恢复数据和控制信息,从而保证数据不丢失。目前主流的双控设计是双活模式(active-active)。

一般双控磁盘阵列系统都是基于SAS硬盘(Serial Attached SCSI,串行连接SCSI)设计的,SAS磁盘具有双端口,因此可以直接连接双控制器,但SAS硬盘成本昂贵,若改用价格低廉的SATA硬盘(Serial ATA,串口硬盘)或NVMe硬盘(Non-Volatile Memory,非易失性硬盘),则由于SATA硬盘或单端口的NVMe硬盘不具有双端口,因此无法实现双控制器同时与SATA硬盘或单端口的NVMe硬盘的连接(SATA硬盘或NVMe硬盘同一时刻只能与其中一个控制器连接),这样在双控磁盘阵列系统运行读写数据时,由于两个控制器中只有一个控制器与SATA硬盘或NVMe硬盘进行连接,因此不能并行地处理来自主机的输入输出请求,即不能实现双控磁盘阵列系统的双活模式。

由于SATA硬盘或单端口的NVMe硬盘不具有双端口,若需要实现双控制器同时与SATA硬盘或单端口的NVMe硬盘连接,则必须借助设置有复用器AAMUX芯片进行信号切换的转接板,这种借助转接板的方式不仅需要增加成本,而且该转接板也可能成为数据存取的性能瓶颈或故障点。



技术实现要素:

基于此,有必要针对传统双控磁盘阵列系统使用SATA硬盘或NVMe硬盘时由于SATA硬盘或NVMe硬盘不具有双端口而使双控磁盘阵列系统不能实现双活模式的问题,提供一种基于SATA或NVMe盘的双控磁盘阵列系统及其数据存取方法,能够在双控磁盘阵列系统使用SATA硬盘或NVMe硬盘时,不需要转接板以及复用器AAMUX芯片进行信号切换也能够实现双活模式。

为达到发明目的,提供一种双控磁盘阵列系统的数据存取方法,所述双控磁盘阵列系统包括第一控制器,第二控制器,设置有第一、第二端口选择线路的背板以及由SATA或NVMe硬盘形成的磁盘阵列,所述第一控制器和所述第二控制器均与所述背板连接,所述背板上的第一、第二端口选择线路合并后与所述磁盘阵列连接;所述数据存取方法包括:

所述第一控制器接收到主机发送的输入输出信号时,判断其自身是否为所述输入输出信号对应的磁盘阵列的逻辑卷预设的主控制器;

若所述第一控制器为所述主控制器,所述主控制器从所述背板上选择与所述第一控制器相对应的所述第一端口选择线路,并将所述第一控制器与所述第一端口选择线路连接,使得所述第一控制器通过所述第一端口选择线路对所述磁盘阵列的逻辑卷进行存取控制;

否则,则确定所述第二控制器为所述主控制器,所述主控制器从所述背板上选择与所述第二控制器相对应的所述第二端口选择线路,并将所述第二控制器与所述第二端口选择线路连接,使得所述第二控制器通过所述第二端口选择线路对所述磁盘阵列的逻辑卷进行存取控制;

在确定所述主控制器,并将所述背板上的第一端口选择线路与所述第一控制器连接或将所述背板上第二端口选择线路与所述第二控制器连接后,所述主控制器根据所述输入输出信号控制所述磁盘阵列的逻辑卷存取数据。

在其中一个实施例中,所述在确定所述主控制器,并将所述背板上的第一端口选择线路与所述第一控制器连接或将所述背板上第二端口选择线路与所述第二控制器连接后,所述主控制器根据所述输入输出信号控制所述磁盘阵列的逻辑卷存取数据的步骤之后,还包括:

从控制器定时向所述主控制器发送心跳检测信号;

所述从控制器根据所述心跳检测信号判断所述主控制器是否发生故障,并在所述主控制器发生故障时,所述主控制器断开与其连接的端口选择线路,所述从控制器从所述背板上选择与其对应的端口选择线路连接,所述从控制器根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制。

在其中一个实施例中,所述从控制器根据所述心跳检测信号判断所述主控制器是否发生故障,并在所述主控制器发生故障时,所述主控制器断开与其连接的端口选择线路,所述从控制器从所述背板上选择与其对应的端口选择线路,并将选择的端口选择线路与其连接,所述从控制器根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制的步骤包括:

所述从控制器判断是否在预设时间内接收到所述主控制器反馈的心跳信号;

若所述从控制器在所述预设时间内未接收到所述心跳信号,则判定所述主控制器发生故障,所述主控制器断开与其连接的端口选择线路,所述从控制器从所述背板上选择与其对应的端口选择线路连接,所述从控制器根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制;

若所述从控制器在所述预设时间内接收到所述心跳信号,则判定所述主控制器未发生故障,所述主控制器根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制。

在其中一个实施例中,所述在确定所述主控制器,并将所述背板上的第一端口选择线路与所述第一控制器连接或将所述背板上第二端口选择线路与所述第二控制器连接后,所述主控制器根据所述输入输出信号控制所述磁盘阵列的逻辑卷存取数据的步骤包括:

若确定所述第一控制器为所述主控制器,则将所述第二控制器的第二内存地址映射到所述第一控制器,并与所述第一控制器的第一内存地址合并构成第一合并内存地址;

若所述输入输出信号为输出信号,所述主控制器控制所述磁盘阵列的逻辑卷将其内的数据缓存到所述第一合并内存地址内,并通过所述第一合并内存地址读取所述数据;

若所述输入输出信号为输入信号,所述主控制器将所述数据缓存到所述第一合并内存地址中,并通过所述第一合并内存地址将所述数据写入所述磁盘阵列的逻辑卷中。

在其中一个实施例中,所述在确定所述主控制器,并将所述背板上的第一端口选择线路与所述第一控制器连接或将所述背板上第二端口选择线路与所述第二控制器连接后,所述主控制器根据所述输入输出信号控制所述磁盘阵列存取数据的步骤还包括:

若确定所述第二控制器为所述主控制器,所述第一控制器将所述输入输出信号传递给所述第二控制器,并将所述第一控制器的第一内存地址映射到所述第二控制器,与所述第二控制器的第二内存地址合并构成第二合并内存地址;

若所述输入输出信号为输出信号,所述主控制器将所述磁盘阵列的逻辑卷中的数据缓存到所述第二合并内存地址内,并通过所述第二合并内存地址读取数据;

若所述输入输出信号为输入信号,所述主控制器将所述数据缓存到所述第二合并内存地址中,并通过所述第二合并内存地址将所述数据写入所述磁盘阵列的逻辑卷中。

本发明还提供一种用于数据存取的双控磁盘阵列系统,所述系统包括第一控制器,第二控制器,设置有第一、第二端口选择线路的背板以及由SATA或NVMe硬盘形成的磁盘阵列,所述第一控制器和所述第二控制器均与所述背板连接,所述背板上的第一、第二端口选择线路合并后与所述磁盘阵列连接;其中,所述第一控制器和所述第二控制器均包括接收判断模块,第一选择控制模块和第二选择控制模块;

所述接收判断模块,用于接收到主机发送的输入输出信号时,判断所述第一控制器是否为所述输入输出信号对应的磁盘阵列的逻辑卷预设的主控制器;

所述第一选择控制模块,用于在判定所述第一控制器为所述主控制器时,从所述背板上选择与所述第一控制器相对应的所述第一端口选择线路,并将所述第一控制器与所述第一端口选择线路连接,使得所述第一控制器通过所述第一端口选择线路对所述磁盘阵列的逻辑卷进行存取控制,并根据所述输入输出信号控制所述磁盘阵列的逻辑卷存取数据;

所述第二选择控制模块,用于在判定所述第二控制器为所述主控制器时,从所述背板上选择与所述第二控制器相对应的所述第二端口选择线路,并将所述第二控制器与所述第二端口选择线路连接,使得所述第二控制器通过所述第二端口选择线路对所述磁盘阵列的逻辑卷进行存取控制,并根据所述输入输出信号控制所述磁盘阵列的逻辑卷存取数据。

在其中一个实施例中,所述第一控制器和所述第二控制器均还包括:

心跳检测模块,用于定时向所述主控制器发送心跳检测信号;

判断控制模块,用于根据所述心跳检测信号判断所述主控制器是否发生故障,并在所述主控制器发生故障时,断开所述主控制器与所述主控制器对应的端口选择线路之间的连接,从所述背板上选择与所述从控制器对应的端口选择线路,并将所述从控制器与选择的端口选择线路连接,使得所述从控制器对所述磁盘阵列的逻辑卷进行存取控制。

在其中一个实施例中,所述判断控制模块包括:

判断单元,用于判断所述从控制器是否在预设时间内接收到所述主控制器反馈的心跳信号;若是,则进入第一判定单元,若否,则进入第二判定单元;

所述第一判定单元,用于判定所述主控制器未发生故障,所述主控制器继续根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制;

所述第二判定单元,用于判定所述主控制器发生故障,断开所述主控制器与所述主控制器对应的端口选择线路之间的连接,从所述背板上选择与所述从控制器对应的端口选择线路,将所述从控制器与选择的端口选择线路连接,并根据所述输入输出信号对所述磁盘阵列的逻辑卷进行存取控制。

在其中一个实施例中,所述第一选择控制模块包括:

第一映射单元,用于在确定所述第一控制器为所述主控制器时,将所述第二控制器的第二内存地址映射到所述第一控制器,并与所述第一控制器的第一内存地址合并构成第一合并内存地址;

第一读取单元,用于若所述输入输出信号为输出信号,控制所述磁盘阵列的逻辑卷将其内的数据缓存到所述第一合并内存地址内,并通过所述第一合并内存地址读取所述数据;

第一写入单元,用于若所述输入输出信号为输入信号,将所述数据缓存到所述第一合并内存地址中,并通过所述第一合并内存地址将所述数据写入所述磁盘阵列的逻辑卷中。

在其中一个实施例中,所述第二选择控制模块包括:

第二映射单元,用于在确定所述第二控制器为所述主控制器时,接收所述第一控制器传递的所述输入输出信号,并将其第一内存地址映射到所述第二控制器,与所述第二控制器的第二内存地址合并构成第二合并内存地址;

第二读取单元,用于若所述输入输出信号为输出信号,将所述磁盘阵列的逻辑卷中的数据缓存到所述第二合并内存地址内,并通过所述第二合并内存地址读取数据;

第二写入单元,用于若所述输入输出信号为输入信号,将所述数据缓存到所述第二合并内存地址中,并通过所述第二合并内存地址将所述数据写入所述磁盘阵列的逻辑卷中。

本发明的有益效果包括:

上述双控磁盘阵列系统及其数据存取方法,在接收到主机发送的输入输出信号后,从第一、第二控制器中判断出哪个是当前的主控制器,主控制器控制背板上与其相对应的端口选择线路与其连接,从而实现主控制器与磁盘阵列的连接,此时主控制器可根据接收到的输入输出信号通过与其对应的端口选择线路控制磁盘阵列的逻辑卷进行数据的存取,这样第一控制器和第二控制器便可并行处理来自主机的输入输出请求,实现双控磁盘阵列系统的双活模式。同时,本实施例中的双控磁盘阵列系统的数据存取方法通过控制背板上的第一、第二端口选择线路来实现第一控制器或第二控制器与磁盘阵列的连接,避免了对SATA或NVMe硬盘的端口的频繁插拔,保证SATA或NVMe硬盘的端口不被磨损,从而确保SATA或NVMe硬盘的可靠性。并且,由于背板的使用,省去了为了避免SATA或NVMe硬盘的端口的磨损而使用的转接板,省去了使用转接板的成本,且无需为转接板预留空间,双控磁盘阵列系统结构更加紧凑集中化,且第一控制器和第二控制器使用背板上的第一、第二端口选择线路与磁盘阵列连接时,使用的仍是SATA或NVMe硬盘的端口的标准,不会因为端口标准不同而使双控磁盘阵列系统的使用变得复杂化,有效地避免了使用转接板对双控磁盘阵列系统的数据存取等性能的限制。

附图说明

图1为一个实施例中的双控磁盘阵列系统的数据存取方法的流程示意图;

图2为一个实施例中传统的双控磁盘阵列系统的架构示意图;

图3为一个实施例中的双控磁盘阵列系统的架构示意图;

图4为一个实施例中的双控磁盘阵列系统中背板与第一、第二控制器以及物理硬盘连接的结构示意图;

图5为另一个实施例中的双控磁盘阵列系统的数据存取方法的流程示意图;

图6为一个实施例中的用于数据存取的双控磁盘阵列系统的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明双控磁盘阵列系统及其数据存取方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

在一个实施例中,如图1所示,提供了一种双控磁盘阵列系统的数据存取方法,所述双控磁盘阵列系统包括第一控制器,第二控制器,设置有第一、第二端口选择线路的背板以及由SATA或NVMe硬盘形成的磁盘阵列,第一控制器和第二控制器均与背板连接,背板上的第一、第二端口选择线路合并后与磁盘阵列连接。该数据存取方法包括以下步骤:

S100,第一控制器接收到主机发送的输入输出信号时,判断其自身是否为输入输出信号对应的磁盘阵列的逻辑卷预设的主控制器。

S200,若第一控制器为主控制器,主控制器从背板上选择与第一控制器相对应的第一端口选择线路,并将第一控制器与第一端口选择线路连接,使得第一控制器通过第一端口选择线路对磁盘阵列的逻辑卷进行存取控制。

S300,否则,则确定第二控制器为主控制器,主控制器从背板上选择与第二控制器相对应的第二端口选择线路,并将第二控制器与第二端口选择线路连接,使得第二控制器通过第二端口选择线路对磁盘阵列的逻辑卷进行存取控制。

S400,在确定主控制器,并将背板上的第一端口选择线路与第一控制器连接或将背板上的第二端口选择线路与第二控制器连接后,主控制器根据输入输出信号控制磁盘阵列的逻辑卷存取数据。

本实施例中,双控磁盘阵列系统包括第一控制器和第二控制器,两个控制器在与SATA或NVMe硬盘形成的磁盘阵列连接时,由于SATA或单端口的NVMe硬盘只有一个端口,因此第一控制器和第二控制器中同时只能有一个控制器与SATA或单端口的NVMe硬盘连接,如:当第一控制器与SATA或NVMe硬盘连接后,如果第一控制器发生故障,想要改用第二控制器时,需要先将第一控制器从SATA或NVMe硬盘的端口中拔出,再将第二控制器与SATA或NVMe硬盘的端口连接,这种频繁地对SATA或NVMe硬盘的端口进行插拔的过程显然会对SATA或NVMe硬盘的端口产生磨损,从而影响SATA或NVMe硬盘的使用寿命。为了减少对SATA或NVMe硬盘的端口的磨损,通常使用转接板来避免这种磨损,使用设置有复用器AAMUX芯片(设置在硬盘驱动器和SATA/NVMe控制器之间提供双端口路径,进行信号切换的芯片)的转接板来实现两个控制器同时对SATA或NVMe硬盘进行信号切换的目的,从而实现双控磁盘阵列系统的双活模式,但设置有复用器AAMUX芯片的转接板的使用在一定程度上增加了成本,且SATA或NVMe硬盘的端口处需要预留空间来设置转接板。而本实施例中在SATA或NVMe硬盘和控制器之间设置一个背板,该背板上设置有第一、第二端口选择线路,第一、第二端口选择线路合并后与由SATA或NVMe硬盘形成的磁盘阵列连接,如图4所示,第一控制器和第二控制器均与背板连接。此处需要说明的是,在从第一控制器和第二控制器中确定出主控制器之前,第一控制器和第二控制器与背板的连接指的只是与背板本体结构上的物理连接,实质上并未与背板中设置的第一、第二端口选择线路产生电气连接。

当第一控制器和/或第二控制器需要控制磁盘阵列存取数据时,即第一控制器(此处的第一控制器指的是两个控制器中的任一个)接收到主机发送的输入输出信号时,第一控制器先判断自身是否是输入输出信号对应的磁盘阵列的逻辑卷的预设的主控制器,由于只有主控制器才能对磁盘阵列的逻辑卷进行存取操作,而从控制器是不能对磁盘阵列的逻辑卷进行存取操作的,因此需要先从第一控制器和第二控制器中判定出主控制器。如果第一控制器确定自己为主控制器,就控制背板上与其对应的第一端口选择线路与其连接,从而实现第一控制器通过第一端口选择线路与磁盘阵列的逻辑卷连接,此时作为主控制器的第一控制器便可根据接收到输入输出信号对磁盘阵列的逻辑卷进行数据存取操作;当第一控制器判断自身不是输入输出信号对应的磁盘阵列的逻辑卷的预设的主控制器,则能够确定第二控制器为主控制器,此时第一控制器将输入输出信号传递给第二控制器,第二控制器控制背板上与其对应的第二端口选择线路与其连接,从而实现第二控制器通过第二端口选择线路与磁盘阵列的逻辑卷连接,此时作为主控制器的第二控制器便可根据输入输出信号对磁盘阵列的逻辑卷进行数据存取操作,这样第一控制器和第二控制器便可并行处理来自主机的输入输出请求(I/O请求),实现双控磁盘阵列系统的双活模式。同时,本实施例中的双控磁盘阵列系统的数据存取方法通过控制背板上的第一、第二端口选择线路来实现第一控制器或第二控制器与磁盘阵列的连接,避免了对SATA或NVMe硬盘的端口的频繁插拔,保证SATA或NVMe硬盘的端口不被磨损,从而确保SATA或NVMe硬盘的可靠性。并且,由于背板的使用,省去了为了避免SATA或NVMe硬盘的端口的磨损而使用的转接板,省去了使用转接板的成本,且无需为转接板预留空间,双控磁盘阵列系统结构更加紧凑集中化,且第一控制器和第二控制器使用背板上的第一、第二端口选择线路与磁盘阵列连接时,使用的仍是SATA或NVMe硬盘的端口的标准,不会因为端口标准不同(转接板使用的端口标准与SATA或NVMe硬盘的端口标准不同)而使双控磁盘阵列系统的使用变得复杂化,有效地避免了使用转接板对双控磁盘阵列系统的性能的限制。

其中,需要说明的是,在对磁盘阵列进行数据存取控制时,参见图2,是利用逻辑卷管理器(LVM,Logical Volume Manager)来对磁盘分区进行管理(即图2中所示的RAID/LVM),将一个或多个硬盘的分区在逻辑上集合为一个大的硬盘,即卷组,然后在卷组上创建一个或多个逻辑卷,每个逻辑卷可由一个或多个物理卷组成,这样可实现磁盘空间的动态管理,为计算机提供更高层次的磁盘存储,可以更方便的为应用与用户分配存储空间。

在一个实施例中,上述实施例中的双控磁盘阵列系统,如图3所示,其中,第一控制器和第二控制器中均包括一个中央处理单元(CPU,Central ProcessingUnit),中央处理单元用于运行存储软件,控制背板。第一控制器和第二控制器还均包括一个SATA/NVMe控制单元,用来对磁盘进行存取操作。在一个实施例中,如图4所示,背板包括第一、第二端口选择线路以及控制第一端口选择线路与第一控制器连接的第一电子开关器件,控制第二端口选择线路与第二控制器连接的第二电子开关器件。在一个实施例中,第一控制器接收到主机发送的输入输出信号并判定自身为磁盘阵列的逻辑卷预设的主控制器时,第一控制器向背板上的第一电子开关器件发送一个闭合指令,控制第一电子开关器件闭合,实现第一控制器与背板上的第一端口选择线路的连接,从而实现第一控制器与SATA或NVMe硬盘的连接。在另一个实施例中,第一控制器接收到主机发送的输入输出信号并判定自身不是主控制器时,确定第二控制器为磁盘阵列的逻辑卷预设的主控制器,第一控制器将接收到的输入输出信号传递给第二控制器,第二控制器接收到第一控制器传递的输入输出信号,向背板上的第二电子开关器件发送一个闭合指令,控制第二电子开关器件闭合,实现第二控制器与背板上的第二端口选择线路的连接,从而实现第二控制器与SATA或NVMe硬盘的连接。其中,第一控制器在将输入输出信号传递给第二控制器时,将输入输出信号封装为信号包,将信号包传递给第二控制器,第二控制器接收到信号包后对信号包进行解包,得到输入输出信号。将输入输出信号进行封装传递能够保证信号的安全性及有效性。值得说明的是,第一控制器在传递输入输出信号或数据给第二控制器时,采用NTB(Non-transparent bridging,非透明桥接)协议或IB(infiniband,无限带宽)协议传递信号或数据。其中,第一控制器通过图2所示的I/O传递模块传递输入输出信号。

在一个实施例中,参见图5,在步骤S400之后,还包括:

S500,从控制器定时向主控制器发送心跳检测信号。

S600,从控制器根据心跳检测信号判断主控制器是否发生故障,并在主控制器发生故障时,主控制器断开与其连接的端口选择线路,从控制器从背板上选择与其对应的端口选择线路连接,从控制器根据输入输出信号对磁盘阵列的逻辑卷进行存取控制。

双控磁盘阵列系统的双活模式(Active-Active)指的是两个控制器都处于激活状态,可并行处理来自主机的输入输出请求,并在某一控制器主线故障或离线时,另一个控制器将及时接管发生故障的控制器进行工作,从而达到不影响系统已有的任务。本实施例中在确定主从控制器后,主控制器根据输入输出信号控制磁盘阵列的逻辑卷存取数据,同时,从控制器则在一旁监控主控制器的状态,一旦发现主控制器发生故障,则接管主控制器的工作,保证系统的高可靠性。

需要说明的是,双控磁盘阵列中包括HA(High Available,高可靠性)模块,上述从控制器对主控制器的心跳侦测过程就是由HA模块实现的。

具体地,步骤S600包括:

S610,从控制器判断是否在预设时间内接收到主控制器反馈的心跳信号。

S620,若从控制器在预设时间内未接收到心跳信号,则判定主控制器发生故障,主控制器断开与其连接的端口选择线路,从控制器从背板上选择与其对应的端口选择线路连接,从控制器根据输入输出信号对磁盘阵列的逻辑卷进行存取控制。

S630,若从控制器在预设时间内接收到心跳信号,则判定主控制器未发生故障,主控制器根据输入输出信号对磁盘阵列的逻辑卷进行存取控制。

本实施例为从控制器监控主控制器是否发生故障的具体步骤,在该实施例中,从控制器向主控制器发送一个心跳检测信号之后,主控制器会在预设时间(如:3s)内向从控制器反馈一个证明其存活的心跳信号,如果从控制器在预设时间内接收到主控制器反馈的心跳信号,则判定主控制器正常工作,返回步骤S500继续定时向主控制器发送心跳检测信号,在一个实施例中,从控制器每隔1s向主控制器发送一个心跳检测信号,以实时监测主控制器的状态。如果从控制器在预设时间内没有接收到主控制器反馈的心跳信号,则确定主控制器发生故障,此时从控制器需接管主控制器工作,具体地,主控制器向与其连接的端口选择线路的电子开关器件发送一个断开指令,该电子开关器件断开,从而断开主控制器与SATA或NVMe硬盘的连接。同时,从控制器向与其对应的端口选择线路的电子开关器件发送一个闭合指令,该电子开关器件闭合,从而使得从控制器和SATA或NVMe硬盘连通。其能在主控制器故障时从控制器接管主控制器的工作,保证系统的高可靠性。

具体地,在一个实施例中,步骤S620包括:

若从控制器在预设时间内未接收到心跳信号,则继续等待一段时间,如1~3s,如果继续等待一段时间后仍未接收到主控制器反馈的心跳信号,则判定主控制器发生故障。从而有效避免由于信号延迟导致的对主控制器状态的误判的情况,避免不是主控制器发生故障而切换控制器的情况发生。

在一个实施例中,步骤S400包括:

S410a,若确定第一控制器为主控制器,则将第二控制器的第二内存地址映射到第一控制器,并与第一控制器的第一内存地址合并构成第一合并内存地址。

S420a,若输入输出信号为输出信号,主控制器控制磁盘阵列的逻辑卷将其内的数据缓存到第一合并内存地址内,并通过第一合并内存地址读取数据。

S430a,若输入输出信号为输入信号,主控制器将数据缓存到第一合并内存地址中,并通过第一合并内存地址将数据写入磁盘阵列的逻辑卷中。

在另一个实施例中,步骤S400还包括:

S410b,若确定第二控制器为主控制器,第一控制器将输入输出信号传递给第二控制器,并将其第一内存地址映射到第二控制器,与第二控制器的第二内存地址合并构成第二合并内存地址。

S420b,若所述输入输出信号为输出信号,主控制器将所述磁盘阵列的逻辑卷中的数据缓存到第二合并内存地址内,并通过第二合并内存地址读出数据。

S430b,若输入输出信号为输入信号,主控制器将数据缓存到第二合并内存地址中,并通过第二合并内存地址将所述数据写入磁盘阵列的逻辑卷中。

上述两个实施例为主控制器根据输入输出信号控制磁盘阵列的逻辑卷存取数据的具体实施方式,如果第一控制器为主控制器,就无需进行输入输出信号传递,直接由其控制相应的逻辑卷存取数据,实现数据的快速存取。在实现第二控制器的第二内存地址映射到第一控制器时,使用NTB的内存转址功能达到隔绝双控制器两边地址域,降低系统性能影响,提高数据传送效率的效果。第二控制器为主控制器时除了需要第一控制器将输入输出信号传递给第二控制器外,其它数据存取的过程及达到的效果与第一控制器的主控制器的类似,此处不再赘述。

需要说明的是,NTB内存转址功能指的是将对方控制器的内存地址映射到本地地址,达到存取对方控制器的数据,就如同存取本地内存的数据一样,降低系统性能影响,提高数据传送效率。双控磁盘阵列中包括IPC(inter processor communication,处理器间的通信)模块,用于实现双控制器之间数据的高速传输,可以是PCI-e(pci Express,总线接口)或IB协议。

在一个实施例中,当主控制器存取数据完成后,会向主机发送一个确认信号,以告知主机已完成相应数据的存取,可以发送下一个输入输出信号。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

在一个实施例中,如图6所示,还提供了一种用于数据存取的双控磁盘阵列系统,该系统包括第一控制器,第二控制器,设置有第一、第二端口选择线路的背板以及由SATA或NVMe硬盘形成的磁盘阵列,第一控制器和第二控制器均与背板连接,背板上的第一、第二端口选择线路合并后与磁盘阵列连接。其中,第一控制器和第二控制器均包括接收判断模块,第一选择控制模块和第二选择控制模块。接收判断模块100,用于接收到主机发送的输入输出信号时,判断第一控制器是否为输入输出信号对应的磁盘阵列的逻辑卷预设的主控制器。第一选择控制模块200,用于在判定第一控制器为主控制器时,从背板上选择与第一控制器相对应的第一端口选择线路,并将第一控制器与第一端口选择线路连接,使得第一控制器通过第一端口选择线路对磁盘阵列的逻辑卷进行存取控制,并根据输入输出信号控制磁盘阵列的逻辑卷存取数据。第二选择控制模块300,用于在判定第二控制器为主控制器时,从背板上选择与第二控制器相对应的第二端口选择线路,并将第二控制器与第二端口选择线路连接,使得第二控制器通过第二端口选择线路对磁盘阵列的逻辑卷进行存取控制,并根据输入输出信号控制磁盘阵列的逻辑卷存取数据。

本实施例中的双控磁盘阵列系统,在接收到主机发送的输入输出信号后,由于只有主控制器才能存取磁盘阵列的逻辑卷,而从控制器是不能对磁盘阵列的逻辑卷进行存取的,因此需要从第一、第二控制器中判断出主控制器,主控制器控制背板上与其相对应的端口选择线路与其连接,从而实现主控制器与磁盘阵列的连接,此时主控制器可根据接收到的输入输出信号通过与其对应的端口选择线路控制磁盘阵列的逻辑卷进行数据的存取,这样第一控制器和第二控制器便可并行处理来自主机的输入输出请求,实现双控磁盘阵列系统的双活模式。同时,本实施例中的双控磁盘阵列系统的数据存取方法通过控制背板上的第一、第二端口选择线路来实现第一控制器或第二控制器与磁盘阵列的连接,避免了对SATA或NVMe硬盘的端口的频繁插拔,保证SATA或NVMe硬盘的端口不被磨损,从而确保SATA或NVMe硬盘的可靠性。并且,由于背板的使用,省去了为了避免SATA或NVMe硬盘的端口的磨损而使用的转接板,省去了使用转接板的成本,且无需为转接板预留空间,双控磁盘阵列系统结构更加紧凑集中化,且第一控制器和第二控制器使用背板上的第一、第二端口选择线路与磁盘阵列连接时,使用的仍是SATA或NVMe硬盘的端口的标准,不会因为端口标准不同而使双控磁盘阵列系统的使用变得复杂化,有效地避免了使用转接板对双控磁盘阵列系统的性能的限制。

其中,图2中的目标模块相当于本实施例中的接收判断模块100,用于与主机对接,接收主机发送的输入输出信号。

在一个实施例中,所述第一控制器和所述第二控制器均还包括:心跳检测模块400,用于定时向主控制器发送心跳检测信号。判断控制模块500,用于根据心跳检测信号判断主控制器是否发生故障,并在主控制器发生故障时,断开主控制器与主控制器对应的端口选择线路之间的连接,从背板上选择与从控制器对应的端口选择线路,并将从控制器与选择的端口选择线路连接,使得从控制器对磁盘阵列的逻辑卷进行存取控制。

需要说明的是,本实施例中的心跳检测模块和判断控制模块相当于图2中的HA模块(高可靠性模块)。

在一个实施例中,判断控制模块500包括:判断单元510,用于判断从控制器是否在预设时间内接收到主控制器反馈的心跳信号;若是,则进入第一判定单元520,若否,则进入第二判定单元530。第一判定单元520,用于判定主控制器未发生故障,主控制器继续根据输入输出信号对磁盘阵列的逻辑卷进行存取控制。第二判定单元530,用于判定主控制器发生故障,断开主控制器与主控制器对应的端口选择线路之间的连接,从背板上选择与从控制器对应的端口选择线路,将从控制器与选择的端口选择线路连接,并根据输入输出信号对磁盘阵列的逻辑卷进行存取控制。

在一个实施例中,第一选择控制模块200包括:第一映射单元210,用于在确定第一控制器为主控制器时,将第二控制器的第二内存地址映射到第一控制器,并与第一控制器的第一内存地址合并构成第一合并内存地址。第一读取单元220,用于若输入输出信号为输出信号,控制磁盘阵列的逻辑卷将其内的数据缓存到第一合并内存地址内,并通过第一合并内存地址读取数据。第一写入单元230,用于若输入输出信号为输入信号,将数据缓存到所述第一合并内存地址中,并通过第一合并内存地址将所述数据写入磁盘阵列的逻辑卷中。

在一个实施例中,第二选择控制模块300包括:第二映射单元310,用于在确定第二控制器为所述主控制器时,接收第一控制器传递的输入输出信号,并将其第一内存地址映射到所第二控制器,与第二控制器的第二内存地址合并构成第二合并内存地址。第二读取单元320,用于若输入输出信号为输出信号,将磁盘阵列的逻辑卷中的数据缓存到第二合并内存地址内,并通过第二合并内存地址读取数据。第二写入单元330,用于若输入输出信号为输入信号,将数据缓存到第二合并内存地址中,并通过第二合并内存地址将数据写入磁盘阵列的逻辑卷中。

由于此系统解决问题的原理与前述一种双控磁盘阵列系统的数据存取方法方法相似,因此该系统的实施可以参见前述方法的实施,重复之处不再赘述。

在上述描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1