存储设备管理方法及装置与流程

文档序号:20016954发布日期:2020-02-25 10:43阅读:205来源:国知局
存储设备管理方法及装置与流程

本申请涉及数据存储技术领域,特别涉及一种存储设备管理方法及装置。



背景技术:

当前,云存储系统被广泛的应用于数据存储领域。其中,云存储系统中可以包括多个存储节点,每个存储节点中可以包括多个存储设备。对于任意一个存储节点而言,该存储节点可以根据业务类型创建业务线程池。之后,当接收到某种类型的读写请求时,可以从该业务线程池中选择相应类型的业务线程,通过选择的业务线程调用系统读写接口来对目标存储设备进行数据读写。

然而,在该业务线程调用系统读写接口,通过目标存储设备的i/o(input/output,输入/输出)接口对目标存储设备进行数据读写时,若该目标存储设备的i/o接口卡住,则该业务线程将无法继续执行下去,并且也无法再继续接收其他任务,这样,该存储节点内的其他存储设备将无法再通过该业务线程进行数据读写。也即,存储节点内一个存储设备的i/o接口卡住,将影响到其他存储设备的数据读写,基于此,亟需提供一种存储设备管理方法,以便降低数据读写过程中单个存储设备对其他存储设备的影响。



技术实现要素:

本申请实施例提供了一种存储设备管理方法及装置,可以用于降低数据读写过程中单个存储设备异常对其他存储设备的影响。所述技术方案如下:

第一方面,提供了一种存储设备管理方法,所述方法包括:

为当前已接入的多个存储设备中的每个存储设备创建对应的输入/输出i/o线程池,所述i/o线程池中包括多个i/o线程,所述多个i/o线程中的每个i/o线程用于被业务线程调用,以执行所述i/o线程池对应的存储设备的i/o操作;

对每个存储设备对应的i/o线程池中的多个i/o线程进行监测;

若监测到目标存储设备对应的i/o线程池中存在异常线程,则对所述目标存储设备进行管理,所述目标存储设备为所述多个存储设备中的任一存储设备。

可选地,所述对所述目标存储设备进行管理,包括:

当所述异常线程的数量大于第一数值时,将所述目标存储设备以及所述目标存储设备对应的i/o线程池进行删除;

当所述异常线程的数量不大于所述第一数值时,获取所述目标存储设备的状态信息,并基于所述目标存储设备的状态信息对所述目标存储设备进行管理。

可选地,所述获取所述目标存储设备的状态信息,包括:

检测所述目标存储设备是否为第一类异常设备,所述第一类异常设备是指损坏的设备;

若所述目标存储设备为第一类异常设备,则确定所述目标存储设备的状态信息为第一状态信息,所述第一状态信息用于指示所述目标存储设备为第一类异常设备。

可选地,所述检测所述目标存储设备是否为第一类异常设备,包括:

检测所述目标存储设备的损坏区域占所述目标存储设备的全部存储区域的比例是否大于第二数值;

若所述目标存储设备的损坏区域占所述目标存储设备的全部存储区域的比例大于所述第二数值,则确定所述目标存储设备为第一类异常设备。

可选地,所述检测所述目标存储设备是否为第一类异常设备,包括:

检测所述目标存储设备的损坏区域是否为关键区域,所述关键区域是指所述目标存储设备中用于存储关键数据的存储区域,或者,所述关键区域是指所述目标存储设备中存储的数据的数据量大于第三数值的存储区域;

若所述目标存储设备的损坏区域为关键区域,则确定所述目标存储设备为第一类异常设备。

可选地,所述基于所述目标存储设备的状态信息对所述目标存储设备进行管理,包括:

当所述目标存储设备的状态信息为所述第一状态信息时,删除所述目标存储设备,并将所述目标存储设备的设备标识与所述第一状态信息对应存储。

可选地,所述删除所述目标存储设备之前,还包括:

若所述目标存储设备为网络存储设备,则向所述目标存储设备发送用于进行恢复检测的检测信息;

若在第一时长内未接收到所述目标存储设备针对所述检测信息发送的响应信息,则执行所述删除所述目标存储设备的步骤;

若在所述第一时长内接收到所述目标存储设备针对所述检测信息发送的响应信息,则将所述目标存储设备的状态信息更新为第二状态信息,并将存储的所述目标存储设备的设备标识对应的状态信息更新为所述第二状态信息,所述第二状态信息用于指示所述目标存储设备未损坏。

可选地,所述方法还包括:

若所述目标存储设备不为第一类异常设备,检测所述目标存储设备是否为第二类异常设备,所述第二类异常设备是指速度异常的设备;

若所述目标存储设备为第二类异常设备,则确定所述目标存储设备的状态信息为第三状态信息,所述第三状态信息用于指示所述目标存储设备为第二类异常设备。

可选地,所述检测所述目标存储设备是否为第二类异常设备,包括:

获取当前时刻之前第二时长内目标存储设备的多个i/o速度,若所述多个i/o速度均小于第四数值或所述多个i/o速度的平均值小于第五数值,则确定所述目标存储设备为第二类异常设备。

可选地,所述基于所述目标存储设备的状态信息对所述目标存储设备进行管理,包括:

当所述目标存储设备的状态信息为第三状态信息时,将所述目标存储设备的设备属性设置为只读属性,并对所述目标存储设备的状态信息进行存储。

可选地,所述为当前已接入的多个存储设备中的每个存储设备创建对应的输入/输出i/o线程池之前,还包括:

当检测到多个待接入的存储设备时,从存储的状态信息中查找所述多个待接入的存储设备中每个待接入的存储设备的状态信息,所述多个待接入的存储设备包括块设备、网络存储设备或第三方对象存储设备中的至少一种;

接入所述多个待接入设备中未查找到状态信息的待接入设备;

对于所述多个待接入设备中查找到状态信息的任一待接入设备a,若所述待接入设备a的状态信息未指示所述待接入设备a为第一类异常设备,则接入所述待接入设备a。

第二方面,提供了一种存储设管理装置,所述装置包括:

创建模块,用于为当前已接入的多个存储设备中的每个存储设备创建对应的输入/输出i/o线程池,所述i/o线程池中包括多个i/o线程,所述多个i/o线程中的每个i/o线程用于执行相应存储设备的i/o操作;

监测模块,用于对每个存储设备对应的i/o线程池中的多个i/o线程进行监测;

管理模块,用于若监测到目标存储设备对应的i/o线程池中存在异常线程,则对所述目标存储设备进行管理,所述目标存储设备为所述多个存储设备中的任一存储设备。

可选地,所述管理模块包括:

删除单元,用于当所述异常线程的数量大于第一数值时,将所述目标存储设备以及所述目标存储设备对应的i/o线程池进行删除;

获取单元,用于当所述异常线程的数量不大于第一数值时,获取所述目标存储设备的状态信息;

管理单元,用于基于所述目标存储设备的状态信息对所述目标存储设备进行管理。

可选地,所述获取单元包括:

第一检测子单元,用于检测所述目标存储设备是否为第一类异常设备,所述第一类异常设备是指损坏的设备;

第一确定子单元,用于若所述目标存储设备为第一类异常设备,则确定所述目标存储设备的状态信息为第一状态信息,所述第一状态信息用于指示所述目标存储设备为第一类异常设备。

可选地,所述第一检测子单元具体用于:

检测所述目标存储设备的损坏区域占所述目标存储设备的全部存储区域的比例是否大于第二数值;

若所述目标存储设备的损坏区域占所述目标存储设备的全部存储区域的比例大于所述第二数值,则确定所述目标存储设备为第一类异常设备。

可选地,所述第一检测子单元具体用于:

检测所述目标存储设备的损坏区域是否为关键区域,所述关键区域是指所述目标存储设备中用于存储关键数据的存储区域,或者,所述关键区域是指所述目标存储设备中存储的数据的数据量大于第三数值的存储区域;

若所述目标存储设备的损坏区域为关键区域,则确定所述目标存储设备为第一类异常设备。

可选地,所述管理单元具体用于:

当所述目标存储设备的状态信息为所述第一状态信息时,删除所述目标存储设备,并将所述目标存储设备的设备标识与所述第一状态信息对应存储。

可选地,所述管理单元具体还用于:

若所述目标存储设备为网络存储设备,则向所述目标存储设备发送用于进行恢复检测的检测信息;

若在第一时长内未接收到所述目标存储设备针对所述检测信息发送的响应信息,则执行所述删除所述目标存储设备的步骤;

若在所述第一时长内接收到所述目标存储设备针对所述检测信息发送的响应信息,则将所述目标存储设备的状态信息更新为第二状态信息,并将存储的所述目标存储设备的设备标识对应的状态信息更新为所述第二状态信息,所述第二状态信息用于指示所述目标存储设备未损坏。

可选地,所述获取单元还包括:

第二检测子单元,用于若所述目标存储设备不为第一类异常设备,检测所述目标存储设备是否为第二类异常设备,所述第二类异常设备是指速度异常的设备;

第二确定子单元,用于若所述目标存储设备为第二类异常设备,则确定所述目标存储设备的状态信息为第三状态信息,所述第三状态信息用于指示所述目标存储设备为第二类异常设备。

可选地,所述第二检测子单元具体用于:

获取当前时刻之前第二时长内目标存储设备的多个i/o速度,若所述多个i/o速度均小于第四数值或所述多个i/o速度的平均值小于所述第五数值,则确定所述目标存储设备为第二类异常设备。

可选地,所述管理单元具体用于:

当所述目标存储设备的状态信息为第三状态信息时,将所述目标存储设备的设备属性设置为只读属性,并对所述目标存储设备的状态信息进行存储。

可选地,所述装置还用于:

当检测到多个待接入的存储设备时,从存储的状态信息中查找所述多个待接入的存储设备中每个待接入的存储设备的状态信息,所述多个待接入的存储设备包括块设备、网络存储设备或第三方对象存储设备中的至少一种;

接入所述多个待接入设备中未查找到状态信息的待接入设备;

对于所述多个待接入设备中查找到状态信息的任一待接入设备a,若所述待接入设备a的状态信息未指示所述待接入设备a为第一类异常设备,则接入所述待接入设备a。

第三方面,提供了一种存储设备管理装置,所述装置包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为上述第一方面所述的任一项方法的步骤。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述第一方面所述的任一项方法的步骤。

本申请实施例提供的技术方案带来的有益效果至少包括:为每个存储设备创建对应的i/o线程池,并对每个存储设备对应的i/o线程池中的多个i/o线程进行监测,若监测到任一存储设备对应的i/o线程池中存在异常线程,则对该存储设备进行管理。由于每个存储设备均对应有一个i/o线程池,因此,当某个存储设备的i/o接口卡死,也只会影响到该存储设备的i/o线程池中相应的线程,而不会影响到其他存储设备的数据读写,由此可见,通过本申请实施例提供的存储设备管理方法,可以有效的隔离不同的存储设备,降低了数据读写过程中单个存储设备出现问题时对其他存储设备的影响。

附图说明

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

图1是本发明实施例提供的存储设备管理方法所适用的实施环境图;

图2是本申请实施例提供的一种存储设备管理方法的流程图;

图3是本发明实施例提供的一种存储设备管理方法的流程图;

图4是本发明实施例提供的一种存储设备管理装置结构示意图;

图5是本发明实施例提供的一种管理模块结构示意图;

图6是本发明实施例提供的一种存储设备管理装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

在本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的实施环境予以介绍。

图1是本申请实施例提供的存储设备管理方法所适用的实施环境图。如图1所示,该实施环境中可以包括多个存储节点101,每个存储节点中可以包括多个存储设备102。

其中,多个存储节点101中的每个存储节点101可以是指一个存储服务器,也可以是指一个存储服务器集群。每个存储节点101可以包括多个存储设备102,且每个存储节点可以通过对其包括的多个存储设备102进行管理和操作来实现数据的存储。

需要说明的是,每个存储节点中包括的多个存储设备102是指相应存储节点中用于存储数据的载体。示例性的,多个存储设备102可以是磁盘、ssd(solidstatedrives,固态硬盘)、raid(redundantarraysofindependentdisks,磁盘阵列)、fc(fibrechannel,光纤通道)设备、iscsi(internetsmallcomputersysteminterface,互联网小型计算机系统接口)设备、nas(networkattachedstorage,网络附属存储)设备中的一种或多种等。

接下来对本申请实施例提供的存储设备管理方法进行介绍。

图2是本申请实施例提供的一种存储设备管理方法的流程图。该方法可以应用于图1所示的实施环境中的任一存储节点上,以实现对相应存储节点中的多个存储设备的管理。参见图2,该方法包括以下步骤:

步骤201:为当前已接入的多个存储设备中的每个存储设备创建对应的输入/输出i/o线程池。

其中,i/o线程池中包括多个i/o线程,该多个i/o线程中的每个i/o线程可以用于被业务线程调用,以执行i/o线程池对应的存储设备的i/o操作。

需要说明的是,业务线程可以是指存储节点为某种类型的业务创建的线程,用于执行相应类型的业务。例如,该业务线程可以是写图片的线程,也可以是写视频的线程等等。

步骤202:对每个存储设备对应的i/o线程池中的多个i/o线程进行监测。

步骤203:若监测到目标存储设备对应的i/o线程池中存在异常线程,则对目标存储设备进行管理,目标存储设备为多个存储设备中的任一存储设备。

也即,可以将多个存储设备中的任一存储设备作为目标存储设备。

在本申请实施例中,存储节点可以为每个存储设备创建对应的i/o线程池,这样,并对每个存储设备对应的i/o线程池中的多个i/o线程进行监测,若监测到任一存储设备对应的i/o线程池中存在异常线程,则对该存储设备进行管理。由于每个存储设备均对应有一个i/o线程池,因此,当某个存储设备的i/o接口卡死,也只会影响到该存储设备的i/o线程池中相应的线程,而不会影响到其他存储设备的数据读写,由此可见,通过本申请实施例提供的存储设备管理方法,可以有效的隔离不同的存储设备,降低了数据读写过程中单个存储设备出现问题时对其他存储设备的影响。

图3是本申请实施例提供的一种存储设备管理方法的流程图。该方法可以应用于图图1所示的实施环境中的任一存储节点上,参见图3,该方法包括:

步骤301:接入多个待接入的存储设备。

在本申请实施例中,多个待接入的存储设备可以包括一种或多种类型的存储设备。例如,该多个待接入的存储设备中可以包括块设备、网络存储设备和第三方对象存储设备中的一种或多种。其中,网络存储设备可以为nas设备。

其中,对于不同类型的存储设备,存储节点可以通过不同的方式来检测是否有相应类型的存储设备接入。当探测到有存储设备接入时,存储节点可以基于待接入的存储设备的设备信息,来确定是否接入该待接入设备。

示例性的,存储节点中通常包括用于检测设备上下线的上下线接口,对于块设备,可以从该上下线接口处接入,上下线接口在检测到有块设备接入时,可以向存储节点上报该存储设备的设备信息,存储节点在接收到上下线接口上报的设备信息之后,则可以确定有块设备接入。

可选地,对于非块设备,例如,nas设备、第三方对象存储设备等,存储节点可以通过主动探测的功能来检测是否有非块设备接入。当探测到有非块设备时,存储节点可以获取该非块设备的设备信息。

在获取到待接入的存储设备的设备信息之后,存储节点可以根据该存储设备的设备信息来确定是否接入该存储设备。

需要说明的是,在本申请实施例中,存储节点中可以存储有已接入过的存储设备的设备信息和状态信息的对应关系,其中,对应关系中的状态信息可以用于表征相应的存储设备是否为异常设备。基于此,上下线接口在上报存储设备的设备信息之后,存储节点可以根据该存储设备的设备信息,从存储的状态信息中查找该存储设备对应的状态信息。若未查找到该存储设备对应的状态信息,则说明该存储设备之前并未接入过,此时,存储节点可以直接将该存储设备进行接入。

若查找到该存储设备对应的状态信息,且该存储设备对应的状态信息用于指示该存储设备为第一类异常设备,则存储节点可以不接入该存储设备,否则,该存储节点可以接入该存储设备。其中,第一类异常设备是指损坏的不可用设备。

可选地,当通过上述方法接入多个存储设备之后,存储节点可以根据已接入的多个存储设备的存储性能以及存储安全性来将多个存储设备进行分类,以便用户可以根据需要选择不同的存储设备来进行数据存储。

步骤302:为当前已接入的多个存储设备中的每个存储设备创建对应的i/o线程池。

在接入多个存储设备之后,存储节点可以为当前已接入的多个存储设备中的每个存储设备创建对应的i/o线程池,该i/o线程池中包括多个i/o线程,每个i/o线程用于被业务线程调用,以执行i/o线程池对应的存储设备的i/o操作。

在为每个存储设备创建对应的i/o线程池之后,存储节点可以根据创建的i/o线程池来对包括的存储设备进行数据读写。

示例性的,存储节点可以接收用户的业务请求,并根据用户的业务请求的类型将该业务请求分配给相应类型的业务线程进行处理。其中,业务线程是指存储节点根据业务请求类型创建的用于处理不同业务请求的线程。例如,该业务线程可以是写图片的线程,也可以是写视频的线程等等。相应地,当该业务请求是写图片请求时,存储节点可以将该业务请求分配给写图片的业务线程进行处理。将业务请求分配给相应类型的业务线程之后,该业务线程可以根据该业务请求所要请求的数据的存储位置确定相应的存储设备。之后,该业务线程可以调用确定的存储设备的i/o线程池中的多个i/o线程中的任一i/o线程来对确定的存储设备的数据执行i/o操作。其中,业务线程调用i/o线程之后,i/o线程可以通过系统i/o封装接口或者第三方对象存储的i/o封装接口来执行同步或异步的i/o操作,从而实现数据的输入或输出。

可选地,在本申请实施例中,存储节点中还可以存储有每个存储设备的配置参数以及设备信息,其中,设备信息可以是指相应存储设备的设备标识,配置参数可以包括相应存储设备的设备性能参数、允许的每秒执行i/o操作的最大次数、允许的每秒输入或输出的最大数据量或最大超时时间等等。在此基础上,存储节点还可以实时统计每个存储设备从启动服务起每一次数据读写的i/o数据,进而根据统计的i/o数据以及相应存储设备的设备信息和配置参数来对相应存储设备进行流量控制。

示例性的,对于多个存储设备中的任一存储设备a,在进行数据读写的过程中,存储节点可以统计存储设备a每秒执行i/o操作的次数。之后,存储节点可以根据该存储设备a的设备信息获取该存储设备a允许的每秒执行i/o操作的最大次数,若统计的存储设备a每秒执行i/o操作的次数大于最大次数,则存储节点可以对该目标存储设备的进行流量控制。

或者,存储节点也可以统计存储设备a每秒输入或输出的数据量的大小,并根据该存储设备a的设备信息以及该存储设备a每秒输入或输出的数据量的大小来确定是否对其进行流量控制。

需要说明的是,若不为每个存储设备创建相应的i/o线程池,则当存储节点需要对某个存储设备进行数据读写时,存储节点需要通过业务线程直接对该存储设备执行i/o操作,这样,一旦该存储设备的i/o接口卡死,用于执行i/o操作的业务线程将无法再继续执行下去,也无法再接收其他的业务请求,而存储节点中的业务线程的数量通常是固定的,这样,一旦某个业务线程因为该存储设备的i/o接口卡死而无法则使用,则会导致其他存储设备可用的业务线程减少,直接影响到其他存储设备的数据读写。而在本申请实施例中,由于为每个存储设备均创建了相应的i/o线程池,因此,在进行数据读写时,可以通过业务线程调用相应存储设备的i/o线程池中的i/o线程执行i/o操作即可,这样,即使某个存储设备的i/o接口卡死,也只会导致该存储设备的i/o线程池中的i/o线程卡死,而不会影响到业务线程,自然也不会影响到其他存储设备的数据读写。也即,通过为每个存储设备创建i/o线程池可以将多个存储设备进行隔离,从而使得多个存储设备之间的数据读写可以互不影响,并且,由于业务线程不再直接执行每个存储设备的i/o操作,因此,屏蔽了业务线程对存储设备异常的感知。

在为每个存储设备创建对应的i/o线程池之后,存储节点在通过i/o线程池中的i/o线程对相应存储设备进行数据读写的同时,还可以通过下述步骤304-306对每个存储设备的i/o线程池进行监测,以便在监测到i/o线程池中i/o线程异常时,对i/o线程对应的存储设备进行管理。

步骤303:对每个存储设备对应的i/o线程池中的多个i/o线程进行监测。

其中,存储节点可以为每个存储设备创建一个监控线程,用于对相应存储设备的i/o线程池中的多个i/o线程进行监测。

示例性的,存储节点可以通过每个存储设备对应的监控线程来监测相应存储设备的i/o线程池中i/o线程是否存在异常线程,并每隔固定时长统计该固定时长内i/o线程池中的异常线程的数量。

步骤304:若监测到目标存储设备对应的i/o线程池中存在异常线程,且异常线程的数量大于第一数值,则将目标存储设备以及目标存储设备对应的i/o线程池进行删除。

在对每个存储设备对应的i/o线程池进行监测的过程中,可以将多个存储设备中的任一存储设备作为目标存储设备,若监测到该目标存储设备对应的i/o线程池中多个i/o线程中存在异常线程,则该目标存储设备有可能是i/o接口卡死的存储设备。统计目标存储设备对应的i/o线程池中的异常线程的数量,若异常线程的数量超过第一数值时,则存储节点可以将该目标存储设备以及目标存储设备对应的i/o线程池进行删除。其中,第一数值小于或等于i/o线程池中的i/o线程的数量,且第一数值可以是指使得目标存储设备的i/o线程池卡死所需的最少数量的异常线程。换句话说,当异常线程的数量超过第一数值,则i/o线程池将卡死。在这种情况下,存储节点可以将目标存储设备删除,并通过删除目标存储设备的i/o线程池来回收线程池资源。

步骤305:若监测到目标存储设备对应的i/o线程池中存在异常线程,且异常线程的数量不大于第一数值时,获取目标存储设备的状态信息,并基于目标存储设备的状态信息对目标存储设备进行管理。

若监测到目标存储设备对应的i/o线程池中的多个i/o线程中存在异常线程,且异常线程的数量不大于第一数值,则存储节点可以进一步的获取目标存储设备的状态信息,并根据目标存储设备的状态信息来确定目标存储设备是否还可用,进而根据目标存储设备是否可用来对目标存储设备进行管理。

在本申请实施例中,存储节点可以首先检测目标存储设备是否为第一类异常设备;若目标存储设备为第一类异常设备,则确定目标存储设备的状态信息为第一状态信息,第一状态信息用于指示目标存储设备为第一类异常设备。

示例性的,存储节点可以检测目标存储设备的损坏区域占目标存储设备的全部存储区域的比例是否大于第二数值,若目标存储设备的损坏区域占目标存储设备的全部存储区域的比例大于第二数值,则确定目标存储设备为第一类异常设备,此时,则可以将目标存储设备的状态信息确定为第一状态信息。

其中,第二数值是指目标存储设备能够正常使用时损坏区域占全部存储区域的最大比例,也即,当损坏区域占全部存储区域的比例超过第二数值,则说明该目标存储设备中损坏的部分太多,剩余的未损坏的部分已经无法实现正常的数据存储,也即,该目标存储设备已损坏不可用。

可选地,在一种可能的实现方式,存储节点还可以通过统计目标存储设备的磁盘坏道的数量来判断该目标存储设备是否已损坏不可用,若已损坏不可用,则可以将该目标存储设备确定为第一类异常设备,并将该目标存储设备的状态信息确定为第一状态信息。

可选地,在一种可能的实现方式中,存储节点可以检测目标存储设备的损坏区域是否为关键区域,关键区域是指目标存储设备中用于存储关键数据的存储区域,或者,关键区域是指目标存储设备中存储的数据的数据量大于第三数值的存储区域;若目标存储设备的损坏区域为关键区域,则确定目标存储设备为第一类异常设备。此时,则可以将目标存储设备的状态信息确定为第一状态信息。

需要说明的是,若目标存储设备的损坏区域为存储关键数据的关键区域,该关键区域损坏则会导致关键数据的丢失,在这种情况下,为了避免关键数据的丢失,则不可再在该目标存储设备中进行数据存储,此时,可以将该目标存储设备确定为第一类异常设备。

若目标存储设备的损坏区域为存储的数据的数据量大于第三数值的的关键区域,该关键区域损坏则会导致大量数据的丢失,在这种情况下,该目标存储设备将不可用,也即,可以将该目标存储设备确定为第一类异常设备。

可选地,在一种可能的实现方式中,当该目标存储设备为网络存储设备时,若存储节点检测到该目标存储设备中的大量关键数据丢失或者是该目标存储设备中的数据不可访问,此时,存储节点可以将该目标存储设备确定为第一类异常设备,并该目标存储设备的状态信息确定为第一状态信息。

若存储节点通过上述介绍的方式确定目标存储设备不为第一类异常设备,则说明该目标存储设备未损坏,此时,存储节点可以进一步的检测该目标存储设备是否为第二类异常设备,若该目标存储设备为第二类异常设备,则可以将该目标存储设备的状态信息确定为第三状态信息。其中,第二类异常设备是指速度异常的设备。

其中,存储节点可以获取当前时刻之前第一时长内目标存储设备的多个i/o速度,若多个i/o速度均小于第四数值或多个i/o速度的平均值小于第五数值,则确定目标存储设备为第二类异常设备。

需要说明的是,i/o速度可以是指目标存储设备单位时间内执行i/o操作的次数。其中,存储节点可以获取当前时刻之前第一时长内多次从目标存储设备读取数据的过程中的多个i/o速度。若该多个i/o速度均小于第四数值,则说明在第一时长内的连续多次数据读写中i/o速度均比较慢,此时,则可以确定该目标存储设备的i/o速度较慢,也即,该目标存储设备的i/o速度异常,因此,可以将该目标存储设备确定为第二类异常设备。

可选地,在一种可能的实现方式中,存储节点在获取到多个i/o速度之后,可以计算该多个i/o速度的平均值,若该多个i/o速度的平均值小于第五数值,则说明第一时长内的i/o速度较慢,此时,则可以确定该目标存储设备的i/o速度较慢,也即,该目标存储设备的i/o速度异常,因此,可以将该目标存储设备确定为第二类异常设备。

可选地,在一种可能的实现方式中,若存储节点获取到的多个i/o速度的平均值小于第六数值,存储节点可以直接将该目标存储设备确定为第一类异常设备,并将该目标存储设备的状态信息设置为第一状态信息。其中,第六数值是指设置的存储设备的最低i/o速度。

需要说明的是,第四数值可以与第五数值相等,也可以不等。并且,第四数值和第五数值均大于第六数值。

可选地,当通过上述方式确定该目标存储设备既非第一类异常设备,也非第二类异常设备时,存储节点可以将该目标存储设备的状态信息设置为第二状态信息。该第二状态信息用于指示该目标存储设备为可用的正常设备。

当存储节点通过上述方式获取到目标存储设备的状态信息之后,若该目标存储设备的状态信息为第一状态信息,则说明该目标存储设备已经损坏不可用,此时,存储节点可以直接将该目标存储设备进行删除,并回收该目标存储设备的线程池资源。与此同时,为了避免后续该目标存储设备再次接入,存储节点可以直接将目标存储设备的设备信息和目标存储设备的状态信息进行对应存储,这样,当后续该目标存储设备再次接入时,存储节点就可以通过该目标存储设备的设备信息获取到该目标存储设备的状态信息,从而拒绝该目标存储设备接入。

可选地,若获取到的该目标存储设备的状态信息为第一状态信息且该目标存储设备为网络存储设备,则在删除该目标存储设备之前,存储节点还可以向该目标存储设备发送用于进行恢复检测的检测信息,若在第一时长内未接收到目标存储设备针对检测信息发送的响应信息,则执行删除目标存储设备的步骤;若在第一时长内接收到目标存储设备针对检测信息发送的响应信息,则将目标存储设备的状态信息更新为第二状态信息,并将存储的目标存储设备的设备标识对应的状态信息更新为第二状态信息。

也即,由于网络存储设备在某些情况下会由于网络状态而导致不可用,因此,当该目标存储设备为网络存储设备时,若该目标存储设备的状态信息为第一状态信息,则在删除该目标存储设备之前,存储节点还可以通过向该目标存储设备发送检测信息来检测该目标存储设备是否可恢复正常使用。若存储节点从发送检测信息的时刻起经过第一时长后依然未接收到目标存储设备针对该检测信息反馈的响应信息,则说明该目标存储设备未能恢复,此时,则可以确定该目标存储设备已损坏,在这种情况下,存储节点可以执行删除该目标存储设备,以及将该目标存储设备的设备标识和第一状态信息对应存储的操作。若存储节点在第一时长内接收到目标存储设备针对该检测信息反馈的响应信息,则说明该目标存储设备已恢复,此时,可以将该目标存储设备的状态信息进行更新,并且将存储的对应关系中目标存储设备的设备标识对应的第一状态信息更改为第二状态信息,以保证后续可以正常使用该目标存储设备。

可选地,在将该目标存储设备的状态信息更新为第二状态信息之前,存储节点还可以根据前述介绍的检测该目标存储设备是否为第二类异常设备的方式来对该目标存储设备进行检测,若该目标存储设备不为第二类异常设备,则存储节点可以将该目标存储设备的状态信息更新为第二状态信息,否则,可以将该目标存储设备的状态信息更新为第三状态信息。

若该目标存储设备的状态信息不为第一状态信息和第二状态信息,而是第三状态信息,则说明该目标存储设备的i/o速度异常,此时,可以将该目标存储设备设置为只读属性。并将该目标存储设备的状态信息与该目标存储设备的设备信息进行存储,以便该目标存储设备下线之后再次上线时,存储节点可以基于该目标存储设备的设备信息获取对应的状态信息,进而根据该状态信息对该目标存储设备进行处理。

可选地,当该目标存储设备的状态信息为第二状态信息时,存储节点可以正常使用该目标存储设备,并存储该目标存储设备的状态信息,以便在该目标存储设备下线后再次上线时作为是否接入该目标存储设备的依据。

可选地,在本申请实施例中,存储节点在监测到目标存储设备对应的i/o线程池中存在异常线程之后,也可以比较异常线程的数量与第一数值的大小,而是直接获取该目标存储设备的状态信息,并基于该目标存储设备的状态信息对目标存储设备进行管理。也即,存储节点若监测到目标存储设备对应的i/o线程池中存在异常线程,可以获取目标存储设备的状态信息,并基于目标存储设备的状态信息对目标存储设备进行管理。其中,存储节点获取目标存储设备的状态信息,并基于目标存储设备的状态信息对目标存储设备进行管理的实现方式可以参考前述相关说明,本申请实施例在此不再赘述。

在本申请实施例中,存储节点可以为每个存储设备创建对应的i/o线程池,并对每个存储设备对应的i/o线程池中的多个i/o线程进行监测,若监测到任一存储设备对应的i/o线程池中存在异常线程,则对该存储设备进行管理。由于每个存储设备均对应有一个i/o线程池,因此,当个存储设备的i/o接口卡死,也只会影响到该存储设备的i/o线程池中相应的线程,而不会影响到其他存储设备的数据读写,由此可见,通过本申请实施例提供的存储设备管理方法,可以有效的隔离不同的存储设备,降低了数据读写过程中单个存储设备出现问题时对其他存储设备的影响。

另外,在本申请实施例中,存储节点可以对每个存储设备对应的i/o线程池中的多个i/o线程进行监控,当多个i/o线程出现异常导致i/o线程池卡死时,可以及时删除相应的存储设备并回收线程池资源,保证了系统中其他存储设备运行的稳定性。

还需要说明的是,当多个i/o线程中存在部分异常线程时,可以通过对相应的存储设备进行检测来确定相应存储设备是否已损坏,或者相应存储设备是否为速度异常的设备,若相应存储设备为损坏设备,则可以直接删除,以此来保证系统中其他存储设备运行的稳定性。若相应存储设备为速度异常设备,则可以通过将相应存储设备设置为只读属性来避免相应存储设备拖慢整个系统的读写速度。

图4是本申请实施例提供的一种存储设备管理装置400,该装置400包括:

创建模块401,用于为当前已接入的多个存储设备中的每个存储设备创建对应的输入/输出i/o线程池,i/o线程池中包括多个i/o线程,多个i/o线程中的每个i/o线程用于被业务线程调用,以执行i/o线程池对应的存储设备的i/o操作;

监测模块402,用于对每个存储设备对应的i/o线程池中的多个i/o线程进行监测;

管理模块403,用于若监测到目标存储设备对应的i/o线程池中存在异常线程,则对目标存储设备进行管理,目标存储设备为多个存储设备中的任一存储设备。

可选地,参见图5,该管理模块403还包括:

删除单元4031,用于当异常线程的数量大于第一数值时,将目标存储设备以及目标存储设备对应的i/o线程池进行删除;

获取单元4032,用于当异常线程的数量不大于第一数值时,获取目标存储设备的状态信息;

管理单元4033,用于基于目标存储设备的状态信息对目标存储设备进行管理。

可选地,获取单元4032包括:

第一检测子单元,用于检测目标存储设备是否为第一类异常设备,第一类异常设备是指损坏的设备;

第一确定子单元,用于若目标存储设备为第一类异常设备,则确定目标存储设备的状态信息为第一状态信息,第一状态信息用于指示目标存储设备为第一类异常设备。

可选地,第一检测子单元具体用于:

检测目标存储设备的损坏区域占目标存储设备的全部存储区域的比例是否大于第二数值;

若目标存储设备的损坏区域占目标存储设备的全部存储区域的比例大于第二数值,则确定目标存储设备为第一类异常设备。

可选地,第一检测子单元具体用于:

检测目标存储设备的损坏区域是否为关键区域,关键区域是指目标存储设备中用于存储关键数据的存储区域,或者,关键区域是指目标存储设备中存储的数据的数据量大于第三数值的存储区域;

若目标存储设备的损坏区域为关键区域,则确定目标存储设备为第一类异常设备。

可选地,管理单元4033具体用于:

当目标存储设备的状态信息为第一状态信息时,删除目标存储设备,并将目标存储设备的设备标识与第一状态信息对应存储。

可选地,管理单元4033具体用于:

若目标存储设备为网络存储设备,则向目标存储设备发送用于进行恢复检测的检测信息;

若在第一时长内未接收到目标存储设备针对检测信息发送的响应信息,则执行删除目标存储设备的步骤;

若在第一时长内接收到目标存储设备针对检测信息发送的响应信息,则将目标存储设备的状态信息更新为第二状态信息,并将存储的目标存储设备的设备标识对应的状态信息更新为第二状态信息,第二状态信息用于指示目标存储设备未损坏。

可选地,获取单元4032还包括:

第二检测子单元,用于若目标存储设备不为第一类异常设备,检测目标存储设备是否为第二类异常设备,第二类异常设备是指速度异常的设备;

第二确定子单元,用于若目标存储设备为第二类异常设备,则确定目标存储设备的状态信息为第三状态信息,第三状态信息用于指示目标存储设备为第二类异常设备。

可选地,第二检测子单元具体用于:

获取当前时刻之前第二时长内目标存储设备的多个i/o速度,若多个i/o速度均小于第四数值或多个i/o速度的平均值小于第五数值,则确定目标存储设备为第二类异常设备。

可选地,管理单元4033具体用于:

当目标存储设备的状态信息为第三状态信息时,将目标存储设备的设备属性设置为只读属性,并对目标存储设备的状态信息进行存储。

可选地,该装置还用于:

当检测到多个待接入的存储设备时,从存储的状态信息中查找多个待接入的存储设备中每个待接入的存储设备的状态信息,多个待接入的存储设备包括块设备、网络存储设备或第三方对象存储设备中的至少一种;

接入多个待接入设备中未查找到状态信息的待接入设备;

对于多个待接入设备中查找到状态信息的任一待接入设备a,若待接入设备a的状态信息未指示待接入设备a为第一类异常设备,则接入待接入设备a。

综上所述,本申请实施例为每个存储设备创建对应的i/o线程池,这样,在并对每个存储设备对应的i/o线程池中的多个i/o线程进行监测,若监测到任一存储设备对应的i/o线程池中存在异常线程,则对该存储设备进行管理。由于每个存储设备均对应有一个i/o线程池,因此,当某个存储设备的i/o接口卡死,也只会影响到该存储设备的i/o线程池中相应的线程,而不会影响到其他存储设备的数据读写,由此可见,通过本申请实施例提供的存储设备管理方法,可以有效的隔离不同的存储设备,降低了数据读写过程中单个存储设备出现问题时对其他存储设备的影响。

需要说明的是:上述实施例提供的存储设备管理装置在管理存储设备时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的存储设备管理装置与存储设备管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是根据一示例性实施例示出的一种存储设备管理装置的服务器结构示意图。上述图2-3所示的实施例中的存储节点的功能即可以通过图6中所示的服务器来实现。该服务器可以是后台服务器集群中的服务器。具体来讲:

服务器600包括中央处理单元(cpu)601、包括随机存取存储器(ram)602和只读存储器(rom)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。服务器600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。

基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,大容量存储设备607可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。

根据本申请的各种实施例,服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu执行。所述一个或者一个以上程序包含用于进行本申请实施例提供的存储设备管理方法的指令。

本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述图2-3所示实施例提供的存储设备管理方法。

本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图2-3所示实施例提供的存储设备管理方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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