一种信息同步方法及装置与流程

文档序号:12625252阅读:235来源:国知局
一种信息同步方法及装置与流程

本发明涉及计算机存储技术领域,特别是涉及一种信息同步方法及装置。



背景技术:

在计算机集群的存储系统中,如果只配置一个控制器,容易产生单点故障点(Single Point Of Failure,SPOF),影响计算机集群的正常工作。所以,一般会配置两个控制器,这两个控制器互为冗余。

在平时工作过程中,两个控制器均管理各自的逻辑卷,当其中一个控制器因故障失效的时候,该控制器对应的逻辑卷需要被另一个正常工作的控制器接管,继续处理针对这些逻辑卷的读写请求。这就需要两个控制器在平时工作过程中进行信息同步。

举例而言,SCSI-3Persistent Reserve(小型计算机系统接口的持续保留,简称为PR)信息的相关属性字段在两个控制器之间的实时同步非常重要。PR信息中包括每个I-T-L(Initiator-Target-LUN)路径对每个逻辑卷(LUN)的注册(Register)信息和预留(Reserve)信息,具体包括注册密钥(Key)、预留类型(Type)等。这些信息必须在两个控制器中保持完全一致,否则就会出现错误或者异常。

比如,SCSI-3协议规定,一旦某条I-T-L路径对某个LUN进行了读写排他类型的预留,其他I-T-L路径就不能对该LUN进行读写。假设一条I-T-L路径ITL0通过控制器1对LUN0进行了预留,而此预留信息并没有同步到控制器2。如果另一条I-T-L路径ITL1通过控制器2试图对LUN0进行访问。按照协议规定,ITL1是不能对LUN0进行读写的,然而由于控制器2中并没有ITL0对LUN0的预留信息,因此,ITL1可以对LUN0进行读写,从而会产生数据不一致的情况,引发严重的后果。

在现有技术中,一个控制器仅是简单的将同步信息发送给另一个控制器,另一个控制器是否进行相应信息的记录和修改是未知的,一旦两个控制器中信息不同步,就可能产生数据不一致的情况,影响计算机集群的正常工作。



技术实现要素:

为解决上述技术问题,本发明提供一种信息同步方法及装置。

一种信息同步方法,应用于第一控制器,所述第一控制器为存储系统中的任意一个控制器,所述第一控制器与所述存储系统中的第二控制器互为冗余,所述方法包括:

接收客户端发送的第一命令;

将所述第一命令发送给所述第二控制器,以使所述第二控制器根据所述第一命令,进行内存相关信息的修改,如果修改成功,则返回携带修改成功结果的第一应答信息;

如果接收到所述第二控制器返回的所述第一应答信息,则根据所述第一命令修改本地相关内存信息。

在本发明的一种具体实施方式中,在所述接收客户端发送的第一命令之后、所述将所述第一命令发送给第二控制器之前,所述方法还包括:

确定所述第一命令的类型是否为预设的同步信息类型;

如果是,则执行所述将所述第一命令发送给所述第二控制器的步骤。

在本发明的一种具体实施方式中,所述方法还包括:

在确定所述第一命令的类型不是预设的同步信息类型时,直接执行所述修改本地内存相关信息的步骤。

在本发明的一种具体实施方式中,所述方法还包括:

如果在设定时间段内未接收到所述第二控制器的心跳报文,或者接收到所述第二控制器的故障事件通知报文,则对所述第二控制器对应的逻辑卷进行管理。

在本发明的一种具体实施方式中,所述方法还包括:

如果接收到所述第二控制器发送的信息同步请求,则中断对所述第二控制器对应的逻辑卷的管理,并向所述第二控制器返回所有的待同步信息,以使所述第二控制器根据所述待同步信息更新本地内存相关信息,并对自身对应的逻辑卷进行管理。

一种信息同步装置,应用于第一控制器,所述第一控制器为存储系统中的任意一个控制器,所述第一控制器与所述存储系统中的第二控制器互为冗余,所述装置包括:

命令接收模块,用于接收客户端发送的第一命令;

命令发送模块,用于将所述第一命令发送给所述第二控制器,以使所述第二控制器根据所述第一命令,进行内存相关信息的修改,如果修改成功,则返回携带修改成功结果的第一应答信息;

信息修改模块,用于在接收到所述第二控制器返回的所述第一应答信息时,根据所述第一命令修改本地相关内存信息。

在本发明的一种具体实施方式中,所述装置还包括信息类型确定模块,用于:

在所述接收客户端发送的第一命令之后、所述将所述第一命令发送给第二控制器之前,确定所述第一命令的类型是否为预设的同步信息类型;如果是,则触发所述命令发送模块。

在本发明的一种具体实施方式中,所述信息类型确定模块,还用于:

在确定所述第一命令的类型不是预设的同步信息类型时,直接修改本地内存相关信息。

在本发明的一种具体实施方式中,所述装置还包括逻辑卷管理模块,用于:

在设定时间段内未接收到所述第二控制器的心跳报文时,或者在接收到所述第二控制器的故障事件通知报文时,对所述第二控制器对应的逻辑卷进行管理。

在本发明的一种具体实施方式中,所述装置还包括恢复管理模块,用于:

在接收到所述第二控制器发送的信息同步请求时,中断对所述第二控制器对应的逻辑卷的管理,并向所述第二控制器返回所有的待同步信息,以使所述第二控制器根据所述待同步信息更新本地内存相关信息,并对自身对应的逻辑卷进行管理。

应用本发明实施例所提供的技术方案,作为存储系统中的任意一个控制器的第一控制器在接收到客户端发送的第一命令时,将该第一命令发送给第二控制器,第二控制器根据该第一命令,进行其本地内存相关信息的修改,修改成功后,向第一控制器返回携带修改成功结果的第一应答信息,第一控制器如果接收到该第一应答信息,则可以根据该第一命令修改本地内存相关信息。这样,可以在命令级别保证第一控制器和第二控制器之间的信息实时且可靠的同步,避免产生数据不一致的情况,维护计算机集群的正常工作。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种信息同步方法的实施流程图;

图2为本发明实施例中一种信息同步装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种信息同步方法,该方法可以应用于第一控制器,在计算机集群的存储系统中,可以包含多个控制器,其中,第一控制器和第二控制器通信连接,互为冗余,第一控制器为该存储系统中的任意一个控制器。

在该存储系统中,分别分配给第一控制器和第二控制器相应的逻辑卷。在平时工作过程中,第一控制器和第二控制器管理各自对应的逻辑卷,并进行信息同步。

参见图1所示,为本发明实施例所提供的一种信息同步方法的实施流程图,该方法可以包括以下步骤:

S110:接收客户端发送的第一命令。

在存储系统中,可以为每个控制器分配一定数量的逻辑卷。第一控制器和第二控制器在正常工作过程中,对各自相应的逻辑卷进行管理。

当第一控制器接收到客户端发送的第一命令时,可以继续执行步骤S120的操作。

S120:将第一命令发送给第二控制器,以使第二控制器根据第一命令,进行内存相关信息的修改,如果修改成功,则返回携带修改成功结果的第一应答信息。

在本发明实施例中,第一控制器接收到客户端发送的第一命令后,先将第一命令发送给第二控制器。第二控制器可以对该第一命令进行解析,并根据该第一命令,进行本地内存相关信息的修改。如果修改成功,则第二控制器可以向第一控制器返回携带修改成功结果的第一应答信息,表明已经根据该第一命令成功修改了本地内存相关信息。如果修改失败,则第二控制器可以向第一控制器返回携带修改失败结果的第二应答信息,表明根据该第一命令未成功修改本地内存相关信息,或者,第二控制器可以不返回任何信息。

S130:如果接收到第二控制器返回的第一应答信息,则根据第一命令修改本地相关内存信息。

第一控制器如果接收到第二控制器返回的第一应答信息,则可以获知第二控制器已经根据该第一命令成功修改其本地内存相关信息,这时,第一控制器可以根据该第一命令,修改自己本地相关内存信息。

在实际应用中,第一控制器如果接收到第二控制器返回的第二应答信息,或者在设定时间段内未接收到第二控制器返回的任何应答信息,则可以获知第二控制器根据该第一命令未成功修改其本地内存相关信息,在这种情况下,第一控制器可以对该第一命令不做处理,或者重复执行将第一命令发送给第二控制器的步骤。

第一控制器为存储系统中的任意一个控制器,其与第二控制器是对等的。当第二控制器接收到客户端发送的第二命令,也需将第二命令发送给第一控制器,第一控制器根据该第二命令,可以进行本地内存相关信息的修改,如果修改成功,可以向第二控制器返回携带修改成功结果的第三应答信息,第二控制器如果接收到第一控制器返回的第三应答信息,则可以根据该第二命令修改本地内存相关信息。

应用本发明实施例所提供的方法,作为存储系统中的任意一个控制器的第一控制器在接收到客户端发送的第一命令时,将该第一命令发送给第二控制器,第二控制器根据该第一命令,进行其本地内存相关信息的修改,修改成功后,向第一控制器返回携带修改成功结果的第一应答信息,第一控制器如果接收到该第一应答信息,则可以根据该第一命令修改本地内存相关信息。这样,可以在命令级别保证第一控制器和第二控制器之间的信息实时且可靠的同步,避免产生数据不一致的情况,维护计算机集群的正常工作。

在本发明的一个实施例中,在步骤S110之后、步骤S120之前,该方法还可以包括以下步骤:

确定第一命令的类型是否为预设的同步信息类型,如果是,则执行步骤S120。

可以理解的是,存储系统的控制器接收到的客户端发送的命令中,有些命令没有必要进行信息同步。所以,在实际应用中,可以预先设定哪些类型的命令需要进行信息同步。比如,可以针对对内存进行写操作的SCSI-3PR命令进行信息同步。

在本发明实施例中,第一控制器接收到客户端发送的第一命令后,可以先对该第一命令进行解析,确定该第一命令的类型是否为预设的同步信息类型,如果是,则继续执行步骤S120的操作。

在本发明的一种具体实施方式中,在确定第一命令的类型不是预设的同步信息类型时,可以执行修改本地内存相关信息的步骤。

这样,可以节省第一控制器和第二控制器间的通信开销。

在本发明的一个实施例中,该方法还可以包括以下步骤:

如果在设定时间段内未接收到第二控制器的心跳报文,或者接收到第二控制器的故障事件通知报文,则对第二控制器对应的逻辑卷进行管理。

在实际应用中,第一控制器与第二控制器之间可以互发心跳报文以获知对方的存在状态,如果第一控制器在设定时间段内未接收到第二控制器的心跳报文,则可以确定第二控制器出现故障,可以对第二控制器对应的逻辑卷进行管理。

或者,第二控制器在其出现故障时,可以向第一控制器发送故障事件通知报文,第一控制器根据该故障事件通知报文,可以确定第二控制器出现故障,可以对第二控制器对应的逻辑卷进行管理。

因为通过步骤S110至步骤S130的操作,可以实现第一控制器和第二控制器间信息的同步。当第二控制器出现故障时,第一控制器可以直接接管第二控制器对应的逻辑卷,继续进行相关工作。同样,当第一控制器出现故障时,第二控制器也可以直接接管第一控制器对应的逻辑卷,继续进行相关工作。这样,可以保证计算机集群的正常工作。

在本发明的一个实施例,该方法还可以包括以下步骤:

如果接收到第二控制器发送的信息同步请求,则中断对第二控制器对应的逻辑卷的管理,并向第二控制器返回所有的待同步信息,以使第二控制器根据待同步信息更新本地内存相关信息,并对自身对应的逻辑卷进行管理。

第二控制器出现故障时,第一控制器可以直接接管第二控制器对应的逻辑卷。当第二控制器重启恢复正常后,可以向第一控制器发送信息同步请求,第一控制器接收到第二控制器发送的信息同步请求后,可以中断对第二控制器对应的逻辑卷的管理,并向第二控制器返回所有的待同步信息,重新进行信息同步,第二控制器根据待同步信息更新本地内存相关信息后,对自身对应的逻辑卷进行管理。实现了高可用性。

在本发明实施例中,在第一控制器和第二控制器进行信息同步之前,可以预先在第一控制器和第二控制器中均分别构建一个消息发送线程cthread和一个消息接收线程sthread,第一控制器和第二控制器在进行消息传递时,可以调用底层通信模块,即dcomm模块。

具体过程可以描述如下:

由第一控制器的程序主线程进行构造命令、分配内存、加入队列等操作,并唤醒第一控制器的消息发送线程。该消息发送线程将第一命令取出,调用底层通信模块,将该第一命令发送给第二控制器。

第二控制器通过底层通信模块接收第一命令,并唤醒消息接收线程,消息接收线程对内存相关信息进行修改之后,唤醒消息发送线程,消息发送线程生成相应的应答信息,调用底层通信模块将该应答信息发送给第一控制器。

第一控制器通过底层通信模块接收到第二控制器发送的应答信息后,唤醒本地消息接收线程,处理该应答信息,并将应答结果提交给程序主线程,以确定是否进行本地内存相关信息的修改。

如果第二控制器发生故障,第一控制器可以接管第二控制器对应的逻辑卷。

当第二控制器重启后,可以生成信息同步请求命令包,然后唤醒消息发送线程,消息发送线程调用底层通信模块,将信息同步请求命令包发送给第一控制器。

第一控制器接收到信息同步请求命令包后,可以调用消息接收线程进行命令的解析,并判断命令类型,发现为信息同步请求后,立刻向程序主线程发送中断。程序主线程接收到中断后,中断对第二控制器对应的逻辑卷的管理,并生成同步信息应答包,该同步信息应答包中可以携带所有的待同步信息,并唤醒消息发送线程,调用底层通信模块将所有的待同步信息发送给第二控制器。

第二控制器接收到待同步信息后,进行信息同步,并对自身对应的逻辑卷进行管理。

相应于上面的方法实施例,本发明实施例还提供了一种信息同步装置,该装置应用于第一控制器,第一控制器为存储系统中的任意一个控制器,第一控制器与存储系统中的第二控制器互为冗余。下文描述的一种信息同步装置与上文描述的一种信息同步方法可相互对应参照。

参见图2所示,该装置可以包括以下模块:

命令接收模块210,用于接收客户端发送的第一命令;

命令发送模块220,用于将第一命令发送给第二控制器,以使第二控制器根据第一命令,进行内存相关信息的修改,如果修改成功,则返回携带修改成功结果的第一应答信息;

信息修改模块230,用于在接收到第二控制器返回的第一应答信息时,根据第一命令修改本地相关内存信息。

应用本发明实施例所提供的装置,作为存储系统中的任意一个控制器的第一控制器在接收到客户端发送的第一命令时,将该第一命令发送给第二控制器,第二控制器根据该第一命令,进行其本地内存相关信息的修改,修改成功后,向第一控制器返回携带修改成功结果的第一应答信息,第一控制器如果接收到该第一应答信息,则可以根据该第一命令修改本地内存相关信息。这样,可以在命令级别保证第一控制器和第二控制器之间的信息实时且可靠的同步,避免产生数据不一致的情况,维护计算机集群的正常工作。

在本发明的一种具体实施方式中,该装置还包括信息类型确定模块,用于:

在接收客户端发送的第一命令之后、将第一命令发送给第二控制器之前,确定第一命令的类型是否为预设的同步信息类型;如果是,则触发命令发送模块220。

在本发明的一种具体实施方式中,信息类型确定模块,还用于:

在确定第一命令的类型不是预设的同步信息类型时,直接修改本地内存相关信息。

在本发明的一种具体实施方式中,装置还包括逻辑卷管理模块,用于:

在设定时间段内未接收到第二控制器的心跳报文时,或者在接收到第二控制器的故障事件通知报文时,对第二控制器对应的逻辑卷进行管理。

在本发明的一种具体实施方式中,装置还包括恢复管理模块,用于:

在接收到第二控制器发送的信息同步请求时,中断对第二控制器对应的逻辑卷的管理,并向第二控制器返回所有的待同步信息,以使第二控制器根据待同步信息更新本地内存相关信息,并对自身对应的逻辑卷进行管理。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种信息同步方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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