发明内容
本发明提供一种数据的处理方法和设备,以在增加存储空间的情况下,实现多个存储设备之间的协调工作。
为了达到上述目的,本发明提供一种数据的处理方法,应用于包括接入设备和多个存储设备的系统中,所述多个存储设备均与所述接入设备连接,所述多个存储设备之间互相连接,且所述多个存储设备具有相同的IP地址,在所述多个存储设备中选择一个存储设备为主控设备,其他存储设备为成员设备,所述主控设备与所述接入设备连接的端口处于up状态,所述成员设备与所述接入设备连接的端口处于down状态,该方法包括以下步骤:
所述主控设备接收来自所述接入设备的数据处理请求;
所述主控设备根据各存储设备的处理缓存状态确定对所述数据处理请求进行处理的存储设备;
所述主控设备将所述数据处理请求发送给确定的存储设备,由所述确定的存储设备对所述数据处理请求进行处理。
所述主控设备根据各存储设备的处理缓存状态确定对所述数据处理请求进行处理的存储设备,具体包括:
所述主控设备接收并维护各存储设备上报的处理缓存状态,所述处理缓存状态为繁忙状态、或正常状态、或空闲状态;
如果当前有处于空闲状态的存储设备,则所述主控设备确定对所述数据处理请求进行处理的存储设备为处于空闲状态的存储设备;
如果当前没有处于空闲状态的存储设备且有处于正常状态的存储设备,则所述主控设备确定对所述数据处理请求进行处理的存储设备为处于正常状态的存储设备;
如果当前没有处于空闲状态的存储设备且没有处于正常状态的存储设备,则所述主控设备确定对所述数据处理请求进行处理的存储设备为处于繁忙状态的存储设备。
所述主控设备接收各存储设备上报的处理缓存状态,具体为:
当存储设备在预设周期内检测到自身缓存小于预设空闲阈值时,所述主控设备接收到的所述存储设备上报的处理缓存状态为空闲状态;
当存储设备在预设周期内检测到自身缓存大于预设告警阈值时,所述主控设备接收到的所述存储设备上报的处理缓存状态为繁忙状态;
当存储设备在预设周期内检测到自身缓存不小于预设空闲阈值且不大于预设告警阈值时,所述主控设备接收到的所述存储设备上报的处理缓存状态为正常状态。
所述处理缓存状态为读缓存状态或写缓存状态;
当所述数据处理请求为写处理请求时,所述主控设备根据各存储设备的写缓存状态确定对写处理请求进行处理的存储设备;
当所述数据处理请求为读处理请求时,所述主控设备根据各存储设备的读缓存状态确定对读处理请求进行处理的存储设备。
当需要在所述系统中增加扩容存储设备时,将所述扩容存储设备与其他存储设备分别连接,且将所述扩容存储设备与所述接入设备连接;
在利用当前系统中存在的存储设备的性能重新选举出性能最优的主控设备后,使重新选举出的主控设备与所述接入设备连接的端口处于up状态,并使其他存储设备与所述接入设备连接的端口处于down状态。
一种数据的处理设备,应用于包括接入设备和多个存储设备的系统中,所述多个存储设备均与所述接入设备连接,所述多个存储设备之间互相连接,且所述多个存储设备具有相同的IP地址,在所述多个存储设备中选择一个存储设备为主控设备,其他存储设备为成员设备,所述主控设备与所述接入设备连接的端口处于up状态,所述成员设备与所述接入设备连接的端口处于down状态,所述处理设备为所述主控设备,且该主控设备包括:
接收模块,用于接收来自所述接入设备的数据处理请求;
确定模块,用于根据各存储设备的处理缓存状态确定对所述数据处理请求进行处理的存储设备;
发送模块,用于将所述数据处理请求发送给确定的存储设备,由所述确定的存储设备对所述数据处理请求进行处理。
所述接收模块,还用于接收并维护各存储设备上报的处理缓存状态,所述处理缓存状态为繁忙状态、或正常状态、或空闲状态;
所述确定模块,具体用于如果当前有处于空闲状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于空闲状态的存储设备;
如果当前没有处于空闲状态的存储设备且有处于正常状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于正常状态的存储设备;
如果当前没有处于空闲状态的存储设备且没有处于正常状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于繁忙状态的存储设备。
所述接收模块,进一步用于当存储设备在预设周期内检测到自身缓存小于预设空闲阈值时,接收到的所述存储设备上报的处理缓存状态为空闲状态;
当存储设备在预设周期内检测到自身缓存大于预设告警阈值时,接收到的所述存储设备上报的处理缓存状态为繁忙状态;
当存储设备在预设周期内检测到自身缓存不小于预设空闲阈值且不大于预设告警阈值时,接收到的所述存储设备上报的处理缓存状态为正常状态。
所述处理缓存状态为读缓存状态或写缓存状态;
所述确定模块,进一步用于当所述数据处理请求为写处理请求时,根据各存储设备的写缓存状态确定对写处理请求进行处理的存储设备;
当所述数据处理请求为读处理请求时,根据各存储设备的读缓存状态确定对读处理请求进行处理的存储设备。
当需要在所述系统中增加扩容存储设备时,将所述扩容存储设备与其他存储设备分别连接,且将所述扩容存储设备与所述接入设备连接;
在利用当前系统中存在的存储设备的性能重新选举出性能最优的主控设备后,使重新选举出的主控设备与所述接入设备连接的端口处于up状态,并使其他存储设备与所述接入设备连接的端口处于down状态。
与现有技术相比,本发明至少具有以下优点:
本发明中,通过判断各存储设备的处理缓存状态,以将数据处理请求分发给空闲存储设备,使空闲存储设备分担较多的计算任务,从而提高系统的处理性能。此外,多个存储设备之间协同处理数据,对外为一个IP地址进行管理以及业务处理,可以有效的简化网络配置,并节省私网IP地址的分配。
具体实施方式
本发明提出一种数据的处理方法,应用于包括接入设备(如接入交换机)和多个存储设备的系统(如视频监控系统)中,多个存储设备均与接入设备连接,多个存储设备之间互相连接,且多个存储设备具有相同的IP地址(当系统中其他设备需要访问各存储设备时,均使用该IP地址实现访问过程)。
本发明中,基于各存储设备的性能信息(包括但不限于CPU、RAID卡性能、内存、业务口状态等性能信息),可以在多个存储设备中选择一个存储设备为主控设备;例如,各存储设备根据自身的CPU、RAID卡性能、内存、业务口状态等性能信息进行选举,且权重最高的存储设备将被选举为主控设备,而其他存储设备为成员设备。之后,需要使主控设备与接入设备连接的端口处于up状态,并使成员设备与接入设备连接的端口处于down状态。
进一步的,当需要在系统中对存储设备进行扩容时,则需要在系统中增加存储设备(可以认为其是扩容存储设备,即在原有存储设备的基础上添加新的扩容存储设备),在该情况下,需要将扩容存储设备与其他存储设备分别进行连接,且需要将扩容存储设备与接入设备进行连接。
在将扩容存储设备与其他存储设备分别连接时,使用网线连接扩容存储设备与其他存储设备的空闲业务口,并各自配置为协同口(协同存储设备间的业务及管理数据传输口)。之后,设置扩容存储设备为协同模式,且在协同模式下,扩容存储设备需要与其他存储设备一起进行选举(即各存储设备根据自身的CPU、RAID卡性能、内存、业务口状态等性能信息进行选举),从而选举出新的主控设备(可以为之前的主控设备,也可以为扩容存储设备)。
需要注意的是,对于扩容存储设备,还需要将扩容存储设备的其他一个空闲业务口连接到接入设备,在利用当前系统中存在的存储设备的性能重新选举出性能最优的主控设备后,需要使重新选举出的主控设备与接入设备连接的端口处于up状态,并使其他存储设备与接入设备连接的端口处于down状态(本状态可为物理down状态,也可为up状态,但不分配mac地址)。
基于上述情况,如图2所示,该数据的处理方法包括以下步骤:
步骤201,主控设备接收来自接入设备的数据处理请求;该数据处理请求为写处理请求或者读处理请求。
具体的,当系统中的其他设备需要访问(如写处理请求或者读处理请求)存储设备时,会利用存储设备的IP地址访问该存储设备;而在接入设备上,由于只有接入设备与主控设备之间连接的端口处于up状态,且各存储设备的IP地址相同,因此接入设备会将数据处理请求发送给主控设备。
步骤202,主控设备根据各存储设备的处理缓存状态确定对数据处理请求进行处理的存储设备。
该处理缓存状态具体为读缓存状态或者写缓存状态;当数据处理请求为写处理请求时,则主控设备根据各存储设备的写缓存状态确定对写处理请求进行处理的存储设备;当数据处理请求为读处理请求时,则主控设备根据各存储设备的读缓存状态确定对读处理请求进行处理的存储设备。
本发明中,各存储设备上将启动定时器,每隔一定时间检测自身缓存状态,并向主控设备发送;以处理缓存状态为繁忙状态、或正常状态、或空闲状态为例进行说明;当存储设备在预设周期内检测到自身缓存小于预设空闲阈值时,则向主控设备上报处理缓存状态为空闲状态;当存储设备在预设周期内检测到自身缓存大于预设告警阈值时,则向主控设备上报处理缓存状态为繁忙状态;当存储设备在预设周期内检测到自身缓存不小于预设空闲阈值且不大于预设告警阈值时,则向主控设备上报处理缓存状态为正常状态。
针对上述过程,主控设备可接收到各存储设备上报的处理缓存状态,并维护各存储设备上报的处理缓存状态;对于主控设备自身的处理缓存状态,其可以直接按照上述方式检测得到。
具体的,针对处理缓存状态为繁忙状态、或正常状态、或空闲状态,则当存储设备在预设周期内检测到自身缓存小于预设空闲阈值时,主控设备接收到的存储设备上报的处理缓存状态为空闲状态;当存储设备在预设周期内检测到自身缓存大于预设告警阈值时,主控设备接收到的存储设备上报的处理缓存状态为繁忙状态;当存储设备在预设周期内检测到自身缓存不小于预设空闲阈值且不大于预设告警阈值时,主控设备接收到的存储设备上报的处理缓存状态为正常状态。
本发明中,主控设备根据各存储设备的处理缓存状态确定对数据处理请求进行处理的存储设备,具体包括:主控设备接收并维护各存储设备上报的处理缓存状态(对于主控设备自身的处理缓存状态,其可以直接检测得到),如果当前有处于空闲状态的存储设备,则主控设备确定对数据处理请求进行处理的存储设备为处于空闲状态的存储设备;如果当前没有处于空闲状态的存储设备且有处于正常状态的存储设备,则主控设备确定对数据处理请求进行处理的存储设备为处于正常状态的存储设备;如果当前没有处于空闲状态的存储设备且没有处于正常状态的存储设备,则主控设备确定对数据处理请求进行处理的存储设备为处于繁忙状态的存储设备。
步骤203,主控设备将数据处理请求发送给确定的存储设备,由确定的存储设备对数据处理请求进行处理。
当数据处理请求为写处理请求时(即针对数据写入过程),则主控设备会根据各存储设备的繁忙状态、正常状态、空闲状态,将写处理请求发送到相对空闲的存储设备的缓存上,之后通过该相对空闲的存储设备的RAID卡进行校验和的计算,并在计算完成后,下发到挂载上来的阵列中。
当数据处理请求为读处理请求时(即针对数据读取过程),则主控设备会根据各存储设备的繁忙状态、正常状态、空闲状态,将读处理请求发送到相对空闲的存储设备的缓存上,之后通过该相对空闲的存储设备读取挂载阵列中的数据(当多个存储设备的读缓存状态为空闲状态时,可以默认选择阵列所在的存储设备为读取数据的存储设备),之后可通过协同口将读取出的数据从主控设备发送出去。
本发明中,当阵列的某个磁盘损坏,且需要重建阵列时,则主控设备会根据各存储设备的繁忙状态、正常状态、空闲状态,将读处理请求发送到相对空闲的存储设备的缓存上,之后通过该相对空闲的存储设备读取挂载阵列中的数据(即从阵列读取数据)加以计算,并将数据重新写回阵列中。
综上所述,针对单台存储设备的RAID芯片处理能力的限制,使得不能无限制的添加级连存储磁盘柜来增加容量的问题;本发明中:
(1)通过将多个存储设备的阵列通过iSCSI协议挂载到主控设备(多个存储设备间通过网口级连方式进行连接,并通过iSCSI协议承载存储设备间管理命令)上,并通过判断各存储设备的处理缓存状态,以确定各存储设备的RAID卡的繁忙状态,最后由主控设备将数据流分发给空闲存储设备的RAID卡缓存,从而使空闲存储设备分担较多的计算任务,以提高整体的处理性能。
(2)多个存储设备之间协同存储数据时,对外为一个IP地址进行管理及业务处理,从而可以有效简化网络配置,并节省私网IP地址的分配。
(3)存储设备可灵活添加到系统中,扩容存储容量时不需要更换原有存储设备,可充分利用现有存储设备,而不是采用单一替换或添加的方式;而且可有效的实现系统的升级,缓解资源浪费,提升系统后续升级的可维护性。
(4)使得各存储设备之间的RAID卡芯片性能得到统一调度,使后端存储系统的性能最大化;且实现多个存储设备RAID卡计算的负载分担,有效提升整体设备性能。
以下结合具体的应用场景对本发明进行详细说明。
1、在存储设备NVR1(成员设备)和存储设备NVR2(主控设备)的基础上,加入一台新的存储设备NVR3,选择两个空闲网口为协同口,并将存储设备NVR3与已有的存储设备(存储设备NVR1和存储设备NVR2)连接成环;之后,选择一个网口与接入设备(接入交换机)连接,如图3A所示。
2、存储设备NVR3与原有主控设备(存储设备NVR2)进行协商,选举出新的主控设备,以存储设备NVR3的性能比存储设备NVR2高为例,则存储设备NVR3为新的主控设备,且与接入设备连接的业务口为up状态;而存储设备NVR1和存储设备NVR2为成员设备,且与接入设备连接的业务口为逻辑down状态,如图3B所示。
3、在存储设备NVR3上创建阵列后,阵列将通过协同口挂载到所有存储设备(存储设备NVR1、存储设备NVR2存储设备NVR3)上,如图3C所示。
4、各存储设备定时检测自身缓存的情况,并将各自的缓存状态(繁忙状态、正常状态、空闲状态)通过协同口上报给主控设备,由主控设备保留表项以记录各存储设备的繁忙情况,以及将业务流量通过协同口发送到空闲存储设备的缓存上,等待进行计算。如表1所示,为缓存状态的记录情况。
表1
设备名称 |
写缓存状态 |
读缓存状态 |
NVR1 |
繁忙 |
空闲 |
NVR2 |
空闲 |
空闲 |
NVR3 |
正常 |
空闲 |
5、针对数据写入情况,当计算完成后,存储设备将数据通过阵列与之连接的挂载通道下发到阵列磁盘中。
6、针对数据读取情况,主控设备判断读缓存状态(当多个存储设备读缓存为空闲状态时,则默认选择阵列所在存储设备读取数据),选择空闲的存储设备读取挂载阵列数据,并通过协同口将读出的数据从主控设备发送出去。
7、当某存储设备离开或者损坏时,由于通过协同口已经将原存储设备连接成环形,则在存储设备离开后,其他存储设备还能正常通信。例如,主控设备离开时,则剩余存储设备重新进行协商,选举产生主控设备,恢复业务。
基于与上述方法同样的发明构思,本发明还提出了一种数据的处理设备,应用于包括接入设备和多个存储设备的系统中,所述多个存储设备均与所述接入设备连接,所述多个存储设备之间互相连接,且所述多个存储设备具有相同的IP地址,在所述多个存储设备中选择一个存储设备为主控设备,其他存储设备为成员设备,所述主控设备与所述接入设备连接的端口处于up状态,所述成员设备与所述接入设备连接的端口处于down状态,所述处理设备为所述主控设备,如图4所示,该主控设备包括:
接收模块11,用于接收来自所述接入设备的数据处理请求;
确定模块12,用于根据各存储设备的处理缓存状态确定对所述数据处理请求进行处理的存储设备;
发送模块13,用于将所述数据处理请求发送给确定的存储设备,由所述确定的存储设备对所述数据处理请求进行处理。
所述接收模块11,还用于接收并维护各存储设备上报的处理缓存状态,所述处理缓存状态为繁忙状态、或正常状态、或空闲状态;
所述确定模块12,具体用于如果当前有处于空闲状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于空闲状态的存储设备;
如果当前没有处于空闲状态的存储设备且有处于正常状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于正常状态的存储设备;
如果当前没有处于空闲状态的存储设备且没有处于正常状态的存储设备,则确定对所述数据处理请求进行处理的存储设备为处于繁忙状态的存储设备。
所述接收模块11,进一步用于当存储设备在预设周期内检测到自身缓存小于预设空闲阈值时,接收到的所述存储设备上报的处理缓存状态为空闲状态;
当存储设备在预设周期内检测到自身缓存大于预设告警阈值时,接收到的所述存储设备上报的处理缓存状态为繁忙状态;
当存储设备在预设周期内检测到自身缓存不小于预设空闲阈值且不大于预设告警阈值时,接收到的所述存储设备上报的处理缓存状态为正常状态。
所述处理缓存状态为读缓存状态或写缓存状态;
所述确定模块12,进一步用于当所述数据处理请求为写处理请求时,根据各存储设备的写缓存状态确定对写处理请求进行处理的存储设备;
当所述数据处理请求为读处理请求时,根据各存储设备的读缓存状态确定对读处理请求进行处理的存储设备。
本发明中,当需要在所述系统中增加扩容存储设备时,将所述扩容存储设备与其他存储设备分别连接,且将所述扩容存储设备与所述接入设备连接;
在利用当前系统中存在的存储设备的性能重新选举出性能最优的主控设备后,使重新选举出的主控设备与所述接入设备连接的端口处于up状态,并使其他存储设备与所述接入设备连接的端口处于down状态。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。