CN110535692B - 故障处理方法、装置、计算机设备、存储介质及存储*** - Google Patents
故障处理方法、装置、计算机设备、存储介质及存储*** Download PDFInfo
- Publication number
- CN110535692B CN110535692B CN201910741190.5A CN201910741190A CN110535692B CN 110535692 B CN110535692 B CN 110535692B CN 201910741190 A CN201910741190 A CN 201910741190A CN 110535692 B CN110535692 B CN 110535692B
- Authority
- CN
- China
- Prior art keywords
- fault
- storage node
- target
- storage system
- fault state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种分布式存储***故障处理方法、装置、计算机设备、存储介质及存储***,属于故障处理技术领域。本方法根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态,从而无需当所有存储节点均故障时,才确定分布式存储***的故障状态,当确定完故障状态后,可以立即向分布式存储***内的每个存储节点发送故障状态,以便每个存储节点根据确定的故障状态进行故障处理,从而可以降低分布式存储***恢复正常所用的时间。
Description
技术领域
本发明涉及故障处理技术领域,特别涉及一种分布式存储***故障处理方法、装置、计算机设备、存储介质及分布式存储***。
背景技术
随着大数据技术的发展,为了存储更多的数据以及防止数据丢失,分布式存储***越来越受到企业的青睐,分布式存储***中的存储节点随着使用时间的增长,不可避免的会出现故障,当分布式存储***中的存储节点均出现故障时,为了保证故障的存储节点不影响正常的业务,为用户提供业务的计算节点可以对分布式存储***中的故障,进行故障处理。
其中,故障处理可以是以下过程:在分布式存储***中,客户端向多个存储节点发送小型计算机***接口(small computer system interface,SCSI)请求;当分布式存储***中的所有存储节点均出现故障时,若存储节点出现的是短时间内可修复的故障,则存储节点不会响应SCSI请求,当客户端未获取任何存储节点的响应时,则客户端将该分布式存储***的故障状态确定为全部路径异常(all path down,APD)状态,APD状态为VMWare虚拟机定义的一种存储节点的故障状态,用于表示后端存储节点的所有路径均无法响应主机请求,客户端悬挂未处理的SCSI请求,等待技术人员修复分布式存储***内的故障;当存储节点出现短时间内不可修复的故障时,存储节点向客户端返回存储异常的消息,则客户端接收到该存储异常的消息后,将该分布式存储***的故障状态确定为永久设备丢失(permanent device lost,PDL)状态,其中,PDL状态为VMWare虚拟机定义的一种存储节点的故障状态,用于表示后端存储节点长期或永久故障,由于存储节点长时间出现故障会导致分布式存储***内的文件***损坏,当客户端确定的故障状态为PDL状态时,该客户端将文件***下电,并等待技术人员修复故障。
在上述故障处理过程中,只有当分布式存储***中所有存储节点均出现故障时,客户端才会执行上述故障处理的过程,但是,当分布式存储***中的部分存储节点出现故障时,客户端不会执行上述故障处理的过程。然而,在分布式存储***中部分存储节点出现故障是一种比较常见的现象,一旦部分存储节点出现故障,若不对分布式存储***中的存储节点进行故障诊断,则客户端并无法确定分布式存储***中的存储节点是否有故障,从而技术人员不能及时地从客户端获知存储节点出现故障的消息,也就不能立即对出现故障的存储节点进行修复,从而延长了分布式存储***恢复正常所用的时间。
发明内容
本发明实施例提供了一种分布式存储***故障处理方法、装置、计算机设备、存储介质及存储***,能够降低分布式存储***恢复正常所用的时间。该技术方案如下:
第一方面,提供了一种分布式存储***故障处理方法,所述分布式存储***包含多个存储节点;该方法包括:
根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个出现故障的存储节点能否在第一预设时长内全部被修复;
向所述多个存储节点中每一个存储节点发送所述故障状态。
基于上述实现方式,根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态,从而无需当所有存储节点均故障时,才确定分布式存储***的故障状态,当确定完故障状态后,可以立即向分布式存储***内的每个存储节点发送故障状态,以便每个存储节点根据确定的故障状态进行故障处理,从而可以降低分布式存储***恢复正常所用的时间。
在一种可能实现方式中,所述方法还包括:
根据所述分布式存储***的故障状态,进行故障处理。
在一种可能实现方式中,所述根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态包括:
确定所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据;
根据所述至少一个存储节点以及所述目标数据,确定所述故障状态。
在一种可能实现方式中,所述根据所述至少一个存储节点以及所述目标数据,确定所述故障状态包括:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,将所述故障状态确定为第一故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复。
基于上述可能的实现方式,在第一故障状态下,目标设备不会下电文件***,一旦在第一预设时间内该至少一个存储节点均能被修复,那么也就可以避免下电文件***,从而可以减少修复文件***的时间,使得分布式存储***可以尽快恢复业务,以保证服务质量。
在一种可能实现方式中,所述根据所述至少一个存储节点以及所述目标数据,确定所述故障状态包括:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,根据所述分布式存储***的故障场景,确定所述故障状态,所述故障场景用于指示所述至少一个存储节点是否同时出现故障。
在一种可能实现方式中,所述预设条件包括下述任一项:
所述目标数据的数据量与第一预设数据量之间的比值大于预设比值,所述第一预设数据量为所述分布式存储***存储的所有数据的总数据量;
所述目标数据的数据量大于第二预设数据量。
在一种可能实现方式中,所述根据所述至少一个存储节点以及所述目标数据,确定所述故障状态之后,所述方法还包括:
当所述故障状态为所述第一故障状态时,若在所述第一预设时长内所述至少一个存储节点未全部被修复,则将所述故障状态由第一故障状态更新为第二故障状态,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
在一种可能实现方式中,所述根据所述分布式存储***的故障场景,确定所述分布式存储***的故障状态之前,所述方法还包括:
根据所述至少一个存储节点出现故障的时间,确定所述故障场景。
在一种可能实现方式中,所述根据所述至少一个存储节点出现故障的时间,确定所述故障场景包括:
当所述至少一个存储节点在目标时长内均出现故障时,将所述故障场景确定为第一故障场景,否则,将所述故障场景确定为第二故障场景,所述第一故障场景用于指示所述至少一个存储节点同时出现故障,所述第二故障场景用于指示所述至少一个存储节点出现故障的时间不同。
在一种可能实现方式中,所述根据所述分布式存储***的故障场景,确定所述分布式存储***的故障状态包括:
若所述故障场景为第一故障场景,根据所述至少一个存储节点中每一个存储节点的故障类型,确定所述故障状态,所述第一故障场景用于指示所述至少一个存储节点同时出现故障,所述故障类型用于指示一个存储节点的故障能否在第二预设时长内被修复;
若所述故障场景为第二故障场景,根据所述至少一个存储节点中最晚出现故障的第一存储节点的故障类型,确定所述故障状态,所述第二故障场景用于指示所述至少一个存储节点出现故障的时间不同。
在一种可能实现方式中,所述根据所述至少一个存储节点中每一个存储节点的故障类型,确定所述故障状态包括:
当所述至少一个存储节点中每一个存储节点的故障类型均为第一故障类型时,将所述故障状态确定为第一故障状态,所述第一故障类型用于指示一个存储节点的故障能在所述第二预设时长内被修复,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复;
当所述至少一个存储节点中目标个数的存储节点的故障类型为第二故障类型时,若所述目标个数小于或等于所述分布式存储***的冗余度,将所述故障状态确定为所述第一故障状态,否则,将所述故障状态确定为第二故障状态,所述第二故障类型用于指示一个存储节点的故障不能在所述第二预设时长内被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
在一种可能实现方式中,所述根据所述至少一个存储节点中最晚出现故障的第一存储节点的故障类型,确定所述故障状态包括:
当所述第一存储节点的故障类型为第一故障类型时,将所述故障状态确定为第一故障状态,所述第一故障类型用于指示一个存储节点的故障能在所述第二预设时长内被修复,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复;
当所述第一存储节点的故障类型为第二故障类型时,则将所述故障状态确定为第二故障状态,所述第二故障类型用于指示一个存储节点的故障不能在所述第二预设时长内被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
在一种可能实现方式中,所述根据所述分布式存储***的故障场景,确定所述分布式存储***的故障状态之前,所述方法还包括:
对于所述至少一个存储节点中的任一存储节点,当所述任一存储节点出现预设的网络故障、预设的异常掉电故障、预设的误操作故障、预设的硬件故障或预设的软件故障时,将所述任一存储节点的故障类型确定为第一故障类型,否则,将所述任一存储节点的故障类型确定为第二故障类型,所述第一故障类型用于指示一个存储节点的故障能在所述第二预设时长内被修复,所述第二故障类型用于指示一个存储节点的故障不能在所述第二预设时长内被修复。
在一种可能实现方式中,所述根据所述分布式存储***的故障状态,进行故障处理之后,所述方法还包括:
当所述至少一个存储节点修复完成时,向所述分布式存储***内的各个设备发送修复完成响应,所述修复完成响应用于指示所述分布式存储***内没有故障设备。
第二方面,提供了一种分布式存储***故障处理方法,所述分布式存储***包含多个存储节点;该方法包括:
向所述分布式存储***中的目标存储节点发送访问请求;
接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态;所述故障状态用于指示至少一个出现故障的存储节点能否在第一预设时长内全部被修复。
在一种可能实现方式中,所述接收所述目标存储节点返回的响应之后,所述方法还包括:
基于所述响应中包含的故障状态,进行故障处理。
在一种可能实现方式中,所述故障状态的故障标识包括第一故障标识或第二故障标识中的任一个,其中,所述第一故障标识用于指示第一故障状态,所述第二故障标识用于指示第二故障状态,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复,所述存储节点为所述分布式存储***中出现故障的存储节点。
在一种可能实现方式中,所述基于所述响应中包含的故障状态,进行故障处理包括:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为所述第一故障状态,不向所述目标虚拟机响应所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为所述第二故障状态时,向所述目标虚拟机返回存储异常的消息,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
在一种可能实现方式中,所述基于所述响应中包含的故障状态,进行故障处理包括:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为所述第一故障状态,向所述目标虚拟机发送重试请求,所述重试请求用于指示重新下发所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为所述第二故障状态,向所述目标虚拟机返回所述目标虚拟机可识别的目标错误,所述目标错误用于指示存储介质故障,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
基于上述可能的实现方式,提供了不同的故障处理方式,从而使得该本发明实施例所提供的故障处理方式更具有普适性。
在一种可能实现方式中,所述向分布式存储***内的任一存储节点发送访问请求之前,所述方法还包括:
接收所述分布式存储***中的目标客户端发送的目标访问请求;
所述向分布式存储***中的目标存储节点发送访问请求包括:
基于所述目标访问请求,向分布式存储***中的目标存储节点发送所述访问请求。
在一种可能实现方式中,所述接收所述目标存储节点返回的响应之后,所述方法还包括:
接收目标存储节点返回的修复完成响应,所述修复完成响应用于指示所述分布式存储***内没有故障设备。
第三方面,提供了一种分布式存储***,所述分布式存储***包括监管节点和多个存储节点;
所述监管节点用于:
根据所述多个存储节点中的至少一个出现故障的存储节点确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个出现故障的存储节点能否在第一预设时长内全部被修复;
向所述多个存储节点中每一个存储节点发送所述故障状态;
所述多个存储节点中的每一个存储节点,用于接收所述故障状态。
在一种可能的实现方式中,所述故障状态的故障标识包括第一故障标识和第二故障标识中的任一个,所述第一故障标识用于指示所述第一故障状态,所述第二故障标识用于指示第二故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
在一种可能的实现方式中,所述多个存储节点中的每一个存储节点,还用于当接收到所述故障状态后,若再接收到所述访问请求,悬挂所述访问请求,基于接收的故障状态,进行故障处理。
第四方面,提供了一种故障处理装置,用于执行上述分布式存储***故障处理方法。具体地,该故障处理装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的故障处理方法的功能模块。
第五方面,提供了一种故障处理装置,用于执行上述分布式存储***故障处理方法。具体地,该故障处理装置包括用于执行上述第二方面或上述第二方面的任一种可选方式提供的故障处理方法的功能模块。
第六方面,提供一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述分布式存储***故障处理方法所执行的操作。
第七方面,提供一种存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述分布式存储***故障处理方法所执行的操作。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式存储***的示意图;
图2是本发明实施例提供的一种分布式存储***的网络环境的示意图;
图3是本发明实施例提供的一种分布式存储***内各个设备之间的交互示意图
图4是本发明实施例提供的一种计算机设备的结构示意图;
图5是本发明实施例提供的一种分布式存储***故障处理方法的流程图;
图6是本发明实施例提供的一种分布式存储***故障处理方法的流程图;
图7是本发明实施例提供的一种故障处理装置的结构示意图;
图8是本发明实施例提供的一种故障处理装置的结构示意图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种分布式存储***的示意图,参见图1,该分布式存储***包括至少一个客户端101、多个存储节点102以及监管节点103。其中,客户端101用于为用户提供数据存储以及数据读取的业务,也即是,客户端101可以将用户上传的数据存储在存储节点102中,也可以从存储节点102中读取数据。
存储节点102,用于存储客户端101写入的数据,还用于向客户端101返回数据,返回的数据可以是客户端101请求读取的数据,还可以向客户端101返回监管节点103下发的分布式存储***的故障状态,以便客户端101根据该分布式存储***的故障状态,处理出现的故障。
监管节点103,用于监控分布式存储***中各个存储节点102是否出现故障,当分布式存储***中出现故障的存储节点的数目高于该分布式存储***的冗余度时,可能会影响到业务的正常运行,因此,该监管节点103可以根据分布式存储***中出现故障的存储节点,确定该分布式存储***的故障状态,并将确定的故障状态下发至所有的存储节点102,存储节点102能够告知客户端101该分布式存储***的故障状态,从而可以使得客户端101或存储节点102可以根据该分布式存储***的故障状态,进行故障处理。
各个存储节点102的基板管理控制器(baseboard management controller,BMC)可以实时监控各自的存储节点是否出现故障,当该至少一个存储节点102中的任一存储节点的BMC监控到该任一存储节点出现故障时,该BMC可以存储该任一存储节点出现故障的原因以及出现故障的时间,还可以将该任一存储节点出现故障的原因以及出现故障的时间发送给监管节点103,以便监管节点103可以获知该任一存储节点是否出现故障。
当存储节点的BMC不将存储节点出现故障的原因以及出现故障的时间发送给监管节点103时,监管节点103可以通过访问各个存储节点102,来获知各个存储节点102是否存在故障,若存在故障,则可以从故障的存储节点获取出现故障的原因以及出现故障的时间。
无论监管节点103是接收故障的存储节点发送的出现故障的原因以及出现故障的时间,还是主动地从故障的存储节点获取发送的出现故障的原因以及出现故障的时间,该监管节点103均可以对故障的存储节点出现故障的原因以及出现故障的时间进行存储,以便后续可以根据故障的存储节点发送的出现故障的原因以及出现故障的时间,确定故障类型以及故障场景,其中,对故障类型的描述参见下文中的步骤603,对故障场景的描述参见下文中的步骤602。
该监管节点103可以对故障的存储节点出现故障的原因以及出现故障的时间进行存储可以包括:将故障的存储节点发送的出现故障的原因以及出现故障的时间存储在故障表中,该故障表可以存储编号、存储节点的标识、故障时间以及故障原因,其中,编号用于指示第几个出现故障的存储节点,一个存储节点的标识用于唯一指示一个存储节点,该标识可以是存储节点的互联网协议地址(internet protocol address,IP),还可以存储节点的媒体访问控制地址(media access control address,MAC),还可以是该存储节点在该分布式存储***内的编号,本发明实施例对该存储节点的标识不做具体限定。另外,故障时间为存储节点出现故障的时间,故障原因为存储节点出现故障的原因。
例如表1所示的故障表,从表1可知,当前分布式存储***内出现故障的存储节点有2个,分别为标识为X的存储节点以及标识为Y的存储节点,其中,标识为X的存储节点出现故障的时间为A,出现故障的原因为D;标识为Y的存储节点出现故障的时间为B,出现故障的原因为C。
表1
编号 | 存储节点的标识 | 故障时间 | 故障原因 |
01 | X | A | D |
02 | Y | C | E |
需要说明的是,当故障表内的记录的存储节点被修复后,该监管节点可以在该故障表中,删除被修复完成的存储节点的相关信息,从而监管节点可以根据故障表中最后一个存储节点的编号,确定分布式存储***内出现故障的存储节点的数目。
当分布式存储***内的存储节点出现故障时,可能造成分布式存储***内的文件***的损坏,当文件***损坏时,文件***内的元数据可能出现错误,由于元数据是指用来描述一个文件的特征的***数据,例如访问权限、文件拥有者以及文件内的数据块的分布信息等,当元数据出现错误时,元数据所指示的文件中的数据块可能无法被访问。
在一些实施中,当客户端访问任一存储节点内的数据块失败时,该客户端可以将该数据块的数据量以及唯一标识该数据块的数据标识发送给监管节点,该监管节点接收到该数据量以及数据标识后,对接收到的数据量以及数据标识进行存储,具体的可以存储在数据表中,该数据表可以用于存储数据总量、数据标识以及与每个数据标识对应的数据量,其中,数据总量为分布式存储***内当前不可被访问的所有数据的数据量。
例如表2所示的数据表,从表2可知,分布式存储***中当前不能被访问的数据为数据标识M所指示的数据块内的数据以及数据标识N所指示的数据块内的数据,其中,当前不能被访问的数据的数据总量为30千字节(kilobyte,KB),当前不能被访问的数据包括数据标识M所指示的数据块内10KB的数据以及数据标识N所指示的数据块内20KB的数据。
表2
需要说明的是,当客户端再一次访问不能被访问的数据块时,若该客户端可以访问成功,则该客户端向监管节点发送携带该数据块的数据标识的访问数据成功响应,该访问数据成功响应用于指示该数据块内的数据可以被访问,当接收到该访问数据成功响应后,在该数据表中,该监管节点可以删除该数据标识对应的数据量,并更新数据表内的数据总量。例如,该访问数据成功响应携带数据标识M,则该监管节点删除数据表内与数据标识M相关的信息,并将数据总量更新为20KB。需要说明的是,数据表中还可以存储有与数据标识对应的存储节点的标识,以指示哪个存储节点内的那个数据块不能被访问。
在一些实施例中,由于分布式存储***负责的业务量比较大,客户端101和存储节点102的数目可能比较多,为了方便客户端101与存储节点102之间的数据传输,客户端101所在的应用层可以设置有至少一个业务交换机,以客户端101与存储节点102之间的交互。为了便于存储节点102之间的数据传输,可以在存储节点102所在的存储层设置至少一个存储交换机,以实现各个存储节点102之间的交互。为了便于监管节点103与存储节点102之间的数据传输,可以设置有监管交换机,以实现监管节点103与存储节点102之间的交互。
从以上的描述可知,在该分布式存储***中,除了需要提供业务服务以外,还需要提供监控服务,对于不同的服务可以通过不同的网络来实现。为了实现客户端、存储节点以及监管节点之间的网络连接,该客户端、存储节点以及监管节点中均可以安装有至少一个网口,该至少一个网口可以用于连接不同的网络,不同的网络可以传输不同服务的数据,该至少一个网口可以分别是连接业务网络的业务网口、连接监管网络的监管网口,以及连接BMC网络的BMC网口。
为了说明分布式存储***中的网络环境,参见图2所示的本发明实施例提供的一种分布式存储***的网络环境的示意图,在该分布式存储***中网络可以包括业务网络、监管网络以及BMC网络。
其中,业务网络是存储节点之间用于心跳、数据同步以及镜像时所使用的网络,例如,当将存储节点1中存储的数据块1同步至存储节点2时,存储节点1可以通过业务网口,在该业务网络中,向存储节点2发送数据块1,那么存储节点2通过自己的业务网口,可以接收到数据块1,并将数据块1存储在存储节点2内。
监管网络是监控存储节点是否出现故障以及进行信息查询时所使用的网络,在监管网络中,可以传输监管节点下发的分布式存储***的故障状态,还可以查询出现故障的存储节点。在一些可能的实施方式中,监管节点可以通过监管网口向存储节点的监管网口,在监管网络中,发送分布式存储***的故障状态,存储节点可以通过自己的监管网口从监管网络中接收监管节点的故障状态,当存储节点再接收到客户端的业务请求(也即是下文中SCSI请求)后,可以不处理接收的业务请求,直接向客户端返回下发的故障状态,以便客户端可以根据故障状态,进行相应的故障处理。
BMC网络是管理BMC的网络,监管节点通过访问该BMC网络的BMC网口,可以监控BMC的状态,根据监控的BMC的状态,可以确定存储节点是否有故障。需要说明的是,BMC网络为可选的网络,在一些实施方式中,可以不通过BMC来监控存储节点的是否有故障,而是可以通过其他方式,来监控存储节点是否有故障,因此,分布式存储***内还可以不设置该BMC网络,直接通过监管网络,来实现监控。
当分布式存储***内的存储节点均和业务网络、监管网络以及BMC网络连接时,监管节点则可以从三网中实时接收存储节点的状态信息,例如是否故障的信息。
为了进一步说明客户端、存储节点以及监管节点之间交互过程,参见图3所示的本发明实施例提供的一种分布式存储***内各个设备之间的交互示意图,在图3中,一个存储节点中可以安装有至少一个对象存储(object storage device,OSD)进程、SCSI处理进程以及节点监控服务(node monitor service,NMS)代理进程。
其中,一个OSD进程可以对应存储节点中用于存储数据的一个或多个存储介质,该存储介质可以是硬盘,OSD进程用于管理对于一个或多个存储介质的访问请求,访问请求用于指示对待处理的数据进行处理,其中,对待处理的数据进行处理可以包括读取所述至少一个或多个存储介质内存储的数据块,待处理的数据块包括待处理的数据,对待处理的数据进行处理可以还包括将待处理的数据写入所述至少一个或多个存储介质,当访问请求可以使用SCSI发送时,该访问请求可以视为SCSI请求。
SCSI处理进程用于从业务网络中获取客户端发送的SCSI请求,并转换和分解SCSI请求,得到多个SCSI子请求,并将多个SCSI子请求下发到对应的OSD进程。例如,SCSI请求携带待读取的数据的逻辑区块地址(logical block address,LBA)为100-200,由于LBA 100-150所指示的存储位置在存储节点1的存储介质1中,LBA 151-200所指示的存储位置在存储节点1的存储介质2中,则SCSI处理进程可以将SCSI请求转换和分解为2个SCSI子请求,其中,SCSI子请求1用于指示请求读取存储介质1中LBA 100-150处存储的数据,SCSI子请求2用于指示请求读取存储介质2中LBA 151-200处存储的数据,从而SCSI处理进程可以将SCSI子请求1发送至于存储介质1对应的OSD进程,将SCSI子请求2发送至于存储介质2对应的OSD进程。
一个NMS代理进程用于接收监管节点下发的分布式存储***的故障状态,并向一个存储节点的所有OSD进程下发接收的故障状态。例如,客户端通过监管网络向存储节点发送分布式存储***的故障状态,存储节点内的NMS代理进程从监管网络中获取监管节点发送的故障状态,并将获取的故障状态下发至该存储节点内的各个OSD进程中,当任一OSD进程接收到故障状态后,若再接收到SCSI处理进程发送的SCSI子请求或SCSI请求,则直接向SCSI处理进程发送接收的故障状态,以便安装SCSI处理进程的设备根据接收的故障状态,进行故障处理。
需要说明的是,在一些实施方式中,SCSI处理进程未被安装在存储节点内,而是安装在客户端内,本发明实施例对安装该SCSI处理进程的设备不做具体限定。例如,客户端的SCSI处理进程中的SCSI请求携带待读取的数据的LBA为0-100,由于LBA 0-50所指示的存储位置在存储节点1中,LBA 51-100所指示的存储位置在存储节点2中,则SCSI处理进程可以将SCSI请求转换和分解为2个SCSI子请求,其中,SCSI子请求1用于指示请求读取存储节点1中LBA 0-50处存储的数据,SCSI子请求2用于指示请求读取存储节点2中LBA 51-100处存储的数据,从而SCSI处理进程可以将SCSI子请求1发送至于存储节点1内的OSD进程,将SCSI子请求2发送至于存储节点2内的OSD进程。
客户端、存储节点以及监管节点均可以是计算机设备,为了进一步说明,计算机设备的硬件结构,参见图4所示的本发明实施例提供的一种计算机设备的结构示意图,计算机设备400包括可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)401和一个或一个以上的存储器402,其中,该存储器402中存储有至少一条指令,该至少一条指令由该处理器401加载并执行以实现下的故障处理方法实施例提供的方法。当然,该计算机设备400还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备400还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成下述实施例中的故障处理方法。例如,该计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(randomaccess memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储节点等。
在本发明实施例中,监管节点可以根据出现故障的存储节点,来确定分布式存储***的故障状态,监管节点并将确定的故障状态下发至分布式存储***内所有的存储节点;客户端在接收到用户的读请求或者写请求后,可以向分布式存储***内的存储节点发送SCSI请求,用于完成用户的读请求或者写请求;当任一存储节点接收到SCSI请求后,任一存储节点暂不处理接收的SCSI请求,并向客户端返回接收的故障状态,使得客户端可以基于任一存储节点返回的故障状态,进行故障处理。而在一些实施例中,任一存储节点也可以基于故障状态进行故障处理,在一种可能的实现方式中,当任一存储节点接收到监管节点发送的故障状态时,若再接收到客户端发送的SCSI请求,则任一存储节点可以根据故障状态,进行故障处理。
为了进一步说明上述过程,参见如图5所示的本发明实施例提供的一种分布式存储***故障处理方法的流程图,该方法具体包括:
501、监管节点确定分布式存储***内出现故障的至少一个存储节点以及该至少一个存储节点无法被访问的目标数据。
该目标数据还可以是该分布式存储***中存储的且不能被访问的数据,该目标数据还可以仅是该至少一个存储节点所存储的无法被访问的数据。本发明实施例以该目标数据是该至少一个存储节点内不能被访问的数据为例进行说明。
该监管节点可以通过查询的方式,确定该至少一个存储节点以及该目标数据,在一种可能的实现方式中,该监管节点可以每经过第八预设时长,查询故障表以及数据表,从该故障表中确定出现故障的存储节点,从数据表中确定无法被访问的数据。该第八预设时长可以是10分钟或者1小时,本发明实施例对该第八预设时长不做具体限定。
需要说明的是,在前文中对从该故障表中确定出现故障的存储节点的方式以及从数据表中确定无法被访问的数据的方式有描述,在此不做赘述。
当该监管节点执行完本步骤501后,还可以根据至少一个存储节点以及所述目标数据,确定故障状态,那么,确定分布式存储***内出现故障的至少一个存储节点以及该至少一个存储节点无法被访问的目标数据;根据至少一个存储节点以及所述目标数据,确定故障状态的过程,也即是,根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态的过程。其中,根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态的过程可以通过下述步骤502所示的过程的来实现。
502、当该至少一个存储节点的数目大于该分布式存储***的冗余度,且该目标数据的数据量符合预设条件时,该监管节点则将该分布式存储***的故障状态确定为第一故障状态。
该冗余度为分布式存储***内存储的数据的冗余度,也即是该分布式存储***内存储的数据的副本数目,分布式存储***的故障状态用于指示该至少一个存储节点能否在第一预设时长内全部被修复,故障状态可以包括第一故障状态以及第二故障状态中的任一个,其中,第二故障状态用于指示该至少一个存储节点不能在该第一预设时长内全部被修复。也即是,当该至少一个存储节点可以在第一预设时长内被修复时,可以认为分布式存储***内的故障可以在短时间内修复,分布式存储***处于第一故障状态,该第一故障状态也即是节点短时故障(transient node down,TND)状态。当该至少一个存储节点可以在第一预设时长内被修复时,则认为分布式存储***内的故障不可以在短时间内修复,分布式存储***处于第二故障状态,第二故障状态也即是节点长期故障(permanent node down,PND)状态。第一预设时长可以是20分钟或者2两个小时,本发明实施例对该第一预设时长不做具体限定。
当分布式存储***内存储的数据较多且存储节点的数目也较多时,若分布式存储***内出现故障的存储节点的数目小于该分布式存储***的冗余度,该分布式存储***内的未故障的存储节点可以根据可以被访问的数据,重构故障的存储节点内不能被访问的数据,因此,当分布式存储***内出现故障的存储节点的数目小于该分布式存储***的冗余度时,不会影响到该分布式存储***的正常业务,那么,也就无需修复故障的存储节点。但是,若出现故障的存储节点的数目大于该分布式存储***的冗余度,该分布式存储***内的未出现故障的存储节点无法根据可以被访问的数据,重构故障的存储节点内不能被访问的数据,从而就可能会影响到分布式存储***内正常的业务。并且考虑到分布式存储***内存储的数据能否被访问也是影响业务的重要因素,当分布式存储***内无法被访问的目标数据过多时,对分布式存储***所提供的业务的影响也就比较大,可能会影响到业务的正常运行,因此,该监管节点可以先确定分布式存储***的故障状态,以便可以快速根据故障状态,进行故障处理,来最大限度的降低对业务的影响程度。而当该目标数据的较少时,对业务影响也就相对较小,可能不会影响到业务的正常运行,为了可以为用户持续提供业务,该监管节点可以暂不进行故障处理。
监管节点可以通过预设条件,确定目标数据的数据量是否能够影响到业务的正常运行,该预设条件可以包括下述任一项:目标数据的数据量与第一预设数据量之间的比值大于预设比值,该第一预设数据量为该分布式存储***存储的所有数据的总数据量;该目标数据的数据量大于第二预设数据量。当目标数据的数据量与第一预设数据量之间的比值大于预设比值时,或者当该目标数据的数据量大于第二预设数据量时,说明目标数据的数据量比较大,也就可能会影响到业务的正常运行,从而当目标数据的数据量符合预设条件时,该监管节点可以先将分布式存储***的故障状态设置为第一故障状态,以便可以快速根据故障状态,进行故障处理,以降低对业务的影响程度。若超过第一预设时间,该至少一个存储节点未全部修复完成,则可以再将该故障状态更新为第二故障状态。需要说明的是,该预设比值可以是0.4、0.5或者是0.6,本发明实施例对该预设比值、第一预设数据量以及第二预设数据量不做具体限定。
为了能够将该至少一个存储节点的数目与该分布式存储***的冗余度相比较,该监管节点可以查询该监管节点所存储的故障表,从故障表中确定该至少一个存储节点的数目。为了能够确定目标数据的数据量是否符合预设条件,该监管节点可以查询所存储的数据表,从数据表中确定该分布式存储***内目前无法访问的目标数据的数据量。例如,监管节点通过查询表2可以确定目标数据包括数据标识M所指示的数据块内10KB的数据以及数据标识N所指示的数据块内20KB的数据。
需要说明的是,在前文中介绍故障表时,对从故障表中确定在该分布式存储***内出现故障的存储节点的数目的过程进行了叙述,在此,本发明实施例对从故障表中确定在该分布式存储***内出现故障的存储节点的数目的过程不做赘述。
需要说明的是,本步骤502所示的过程也即是根据该至少一个存储节点以及所述目标数据,确定该分布式存储***的故障状态的过程。
503、该监管节点向该分布式存储***内的所有存储节点发送用于指示第一故障状态的第一故障标识。
故障状态的故障标识包括第一故障标识和第二故障标识中的任一个,其中,第一故障标识用于指示第一故障状态,第二故障标识用于指示第二故障状态,该第一故障标识和第二故障标识可以不同,例如,第一故障标识可以是s,第二故障标识可以是t,本发明实施例对第一故障标识和第二故障标识的表示方式不做具体限定。
该监管节点可以向每个存储节点的NMS代理进程发送该第一故障标识,从而实现向所有存储节点发送该第一故障标识,以告知所有存储节点分布式存储***目前的故障状态为第一故障状态。
需要说明的是,本步骤503所示的过程也即是监管节点向分布式存储***包含的多个存储节点中每一个存储节点发送所述故障状态的过程。
需要说明的是,在一些实施例中,监管节点在确定完故障状态后,还可以根据所述存储***的故障状态,进行故障处理,本发明实施例对监管节点进行故障处理的过程不做具体限定。
504、该分布式存储***中的目标存储节点接收该第一故障标识。
该目标存储节点为该分布式存储***中的任一存储节点,该目标存储节点内的每个OSD进程可以从该目标存储节点的NMS代理进程获取该第一故障标识,从而该目标存储节点的每个OSD进程可以获取该第一故障标识。需要说明的是,该分布式存储***内的每一个存储节点都可以执行本步骤504,对于故障的存储节点可能能够接收到该第一故障标识,也可能接收不到该第一故障标识。
505、目标设备向该目标存储节点发送访问请求,
该访问请求用于指示读取该目标存储节点所存储的数据或者向该目标存储节点写入数据。该目标设备为安装有SCSI处理进程的设备,可以是该目标客户端,还可以是目标存储节点,其中,目标客户端为该分布式存储***中的任一客户端。本步骤506可以由目标设备内的SCSI处理进程来实现。
在本步骤之前505之前,分布式存储***内的目标客户端可以向目标设备发送目标访问请求,该目标访问请求用于执行对第一目标数据进行处理,其中第一目标数据包括该访问请求所指示的数据,该目标访问请求可以携带目标存储地址,该目标存储地址可以是第一目标数据的存储地址。由目标客户端可以安装的目标虚拟机发送目标访问请求来。具体地,该目标虚拟机可以向该目标设备内的SCSI处理进程发送该目标访问请求。目标虚拟机向SCSI处理进程发送目标访问请求可以由用户的动作来触发,例如,当用户在客户端的界面内输入待读取的数据的存储地址,并点击读取按钮时,触发客户端内的目标虚拟机向SCSI处理进程发送目标访问请求,以请求读取到用户输入的存储地址处存储的数据。
然后,该目标设备接收分布式存储***内的目标客户端发送的目标访问请求,本步骤506可以通下述方式来实现:目标设备基于该目标访问请求,向分布式存储***内的目标存储节点发送访问请求。具体地,SCSI处理进程接收到该目标访问请求后,根据目标地址,对该目标访问请求进行转化和分解,得到多个访问请求,每个访问请求可以携带该目标地址中的部分地址,这部分地址可以是该目标存储节点内的任一OSD进程所管理的存储介质中的偏移地址,从而SCSI处理进程向目标存储节点内的OSD进程发送对应的访问请求,将访问请求转换访问请求的过程也即是前述的转换SCSI请求的过程。
506、当该分布式存储***内的目标存储节点接收到该第一故障标识后,若该目标存储节点再接收到访问请求,该目标存储节点悬挂该访问请求,向目标设备发送该第一故障标识。
本步骤506可以由该目标存储节点内接收该访问请求的OSD进程来实现。当该目标存储节点接收到该第一故障标识后,说明该目标存储节点已经知道该分布式存储***中有故障的存储节点,且目前的故障状态为第一故障状态,由于目前分布式存储***内的存储节点出现故障,则该目标存储节点可以将该访问请求悬挂,暂不处理该访问请求,等待故障的存储节点被自动修复或者手动修复。
为了使得目标设备也能获知分布式存储***的故障状态,则该目标存储节点在接收到目标设备发送的访问请求时,该目标存储节点可以将该第一故障标识输出给目标设备。具体地,该目标存储节点内的任一OSD进程接收到目标设备SCSI处理进程发送的访问请求后,任一OSD进程向该SCSI处理进程发送该第一故障标识。当然,在一些实施例中,监管节点确定完该分布式存储***的故障状态后,也可以将故障状态直接发送给目标设备,以便目标设备可以获取分布式存储***的故障状态,也就无需通过存储节点向目标设备发送故障状态。
需要说明的是,本步骤506所示的过程也即是当该分布式存储***中的目标存储节点接收到该故障标识后,若该目标存储节点再接收到访问请求时,输出故障标识的过程。
507、目标设备接收该目标存储节点基于该访问请求返回的第一故障标识。
本步骤507以由该目标设备内的SCSI处理进程来实现,本步骤507所示的过程也即是接收该目标存储节点基于该访问请求返回的故障标识的过程。当任一OSD进程向该SCSI处理进程发送该第一故障状态,该SCSI处理进程可以接收该第一故障标识。需要说明的是,本步骤507所示的过程,也即是,接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态;所述故障状态用于指示至少一个出现故障的存储节点能否在第一预设时长内全部被修复的过程,其中,所述响应中包含所述分布式存储***的故障状态也即是故障标识。
508、目标设备基于接收的第一故障标识,进行故障处理。
本步骤508可以由目标设备内安装的SCSI处理进程来执行,当该SCSI处理进程接收到该第一故障标识后,该SCSI处理进程可以将基于第一故障标识,进行故障处理,以便目标客户端内能够进行相应地处理。
在一些实施例中,目标客户端中与该SCSI处理进程对接目标虚拟机可能是VMWare虚拟机,也可能不是VMWare虚拟机,由于不同的虚拟机目标设备进行故障处理的方式不同,因此,本步骤508可以通过下述方式1-2中的任一方式实现。
方式1、当该访问请求由该分布式存储***中的目标客户端基于目标虚拟机发送,且该目标虚拟机是VMWare虚拟机时,若该故障状态为该第一故障状态,SCSI处理进程不向该目标虚拟机响应该访问请求。
当SCSI处理进程接收到第一故障标识时,说明分布式存储***处于第一故障状态,对于VMWare虚拟机而言,第一故障状态也即是ADP状态。且由于SCSI处理进程接收的访问请求为该目标虚拟机发送的,那么,为了使得VMWare虚拟机可以感知到分布式存储***处于自己定义的APD状态,SCSI处理进程不响应目标虚拟机,又因为分布式存储***内所有的SCSI处理进程只要向OSD进程下发访问请求,均会接收到第一故障标识,而处理访问请求的每个SCSI处理进程均不会响应目标虚拟机,从而可以模拟分布式存储***内所有链路无响应(DOWN),对于目标虚拟机而言,没有接收到SCSI处理进程的响应,目标虚拟机就会持续发送访问请求,从而即使分布式存储***内的存储节点没有全部故障时,也可以根据VMWare虚拟机定义的故障状态进行故障处理。
方式2、当该访问请求由该目标客户端基于目标虚拟机发送,且该目标虚拟机不是VMWare虚拟机时,若该故障状态为该第一故障状态,则SCSI处理进程向该目标虚拟机发送重试请求,该重试请求用于指示重新下发该访问请求。
重试请求中携带的检测关键字可以是Unit Attention(0x6)错误码,UnitAttention(0x6)错误码可以指示存储节点内的存储介质或链路状态发生了变化,也即是出现了故障,该目标虚拟机接收到该重试请求后,目标虚拟机向该SCSI处理进程重新下发一个访问请求,用于实现上述方式1中的处理方式。
对于不同的虚拟机,本发明实施例提供了不同的故障处理方式,从而使得该本发明实施例所提供的故障处理方式更具有普适性。
需要说明的是,本步骤508所示的过程也即是基于响应中包含的故障状态,进行故障处理的过程。
509、若在该第一预设时长内该至少一个存储节点全部修复,监管节点向该分布式存储***内的各个设备发送修复完成响应,该修复完成响应用于指示该分布式存储***内没有故障设备。
该各个设备包括存储节点以及客户端。当在该第一预设时长内该至少一个存储节点全部修复时,说明此时分布式存储***内的没有故障设备,若该监管节点存储了该用于标识第一故障状态的第一故障标识,该监管节点可以删除该第一故障标识,并向该分布式存储***内的各个设备发送修复完成响应,已告知各个设备该分布式存储***内没有故障设备,可以正常工作,那么当各个设备接收到该修复完成响应后,删除之前接收的故障标识,并可以开始正常工作。需要说明的是,步骤509所示的过程也即是当该至少一个存储节点修复完成时,向该分布式存储***内的各个设备发送修复完成响应的过程。
在现有技术中,当客户端未获取任何存储节点的响应时,直接认为分布式存储***的故障状态为APD状态,当存储节点明确返回存储异常的消息时才会认为分布式存储***的故障状态确定为PDL状态,若存储节点出现长期故障时,可能无法向客户端返回存储异常的消息,从而客户端可能将故障状态确定为APD状态,因此,现有技术中确定分布式存储***的故障状态并不精确,且若将PDL状态误认为APD状态,将导致业务侧修复工作无法开展,最终反而延长故障修复时长。而在本发明提供的实施例中,分布式存储***内的每个存储节点均知道分布式存储***的故障状态,对于未出现故障的存储节点而言,可以基于SCSI请求向目标设备返回故障状态,从而目标设备可以明确的知道分布式存储***的故障状态,进而可以提高目标设备确定故障状态的精度。
510、当该故障状态为第一故障状态时,若在该第一预设时长内该至少一个存储节点未全部被修复,则监管节点将该故障状态由第一故障状态更新为第二故障状态。
由于第一预设时长仅是一个预设的时长,在该第一预设时长内,该至少一个存储节点可能无法被全部修复,那么,当该至少一个存储节点可能未全部被修复时,就可能需要更长的时间修复还未修复的存储节点。由于修复还未修复的存储节点所用的时长不确定,可能会比较久,因此,该监管节点可以直接将该故障状态由第一故障状态更新为第二故障状态。
511、当将该故障状态由第一故障状态更新为该第二故障状态时,监管节点向该分布式存储***内的所有存储节点发送用于指示该第二故障的第二故障标识。
监管节点向所有存储节点发送第二故障标识的方式与步骤503中所有存储节点发送第一故障标识的方式同理,在此,本发明实施例对该本步骤511不做赘述。本步骤511所示的过程也即是向该多个存储节点中每一个存储节点发送所述故障状态的过程。
512、目标存储节点接收该第二故障标识。
目标存储节点接收该第二故障标识与步骤504中接收第一故障标识的方式同理,在此,本发明实施例对该本步骤512不做赘述。
513、目标设备向该目标存储节点发送访问请求。
目标设备向该目标存储节点发送访问请求的方式在步骤505中有相关描述,在此,本发明实施例对该本步骤513不做赘述。
514、当该分布式存储***内的目标存储节点接收到该第二故障标识时,若该目标存储节点再接收到访问请求,该目标存储节点悬挂该访问请求,输出该第二故障标识。
该任一存储节点悬挂访问请求以及输出该第二故障标识方式与步骤506中该目标存储节点悬挂访问请求以及输出该第一故障标识的方式同理,在此,本发明实施例对该本步骤514不做赘述。
515、目标设备接收该目标存储节点基于该访问请求返回的第二故障标识。
目标设备接收该第二故障标识的方式与步骤507中接收第一故障标识的方式同理,在此,本发明实施例对此不做赘述。
516、目标设备基于接收的第二故障标识,进行故障处理。
本步骤516可以由目标设备的SCSI处理进程来执行,在一些实施例中,客户端中与该SCSI处理进程对接目标虚拟机可能是VMWare虚拟机,也可能不是VMWare虚拟机,由于不同的虚拟机目标设备进行故障处理的方式不同,因此,本步骤516可以通过下述方式3-4中的任一方式实现。
方式3、当该访问请求由该目标客户端基于目标虚拟机发送,且该目标虚拟机是VMWare虚拟机时,若该故障状态为该第二故障状态,SCSI处理进程向VMWare虚拟机返回存储异常的消息。
当该故障标识第二故障标识时,说明至少一个存储节点在第一预设时间内不能全部被修复,需要更长的时间,目标虚拟机可以进行PDL状态下的故障处理,为了目标虚拟机可以感知到PDL状态,存储异常的消息可以携带VMWare虚拟机自定义的SK 0x0,ASC&ASCQ0x0200或SK 0x5,ASC&ASCQ 0x2500等SCSI错误,SCSI错误可以指示分布式存储***内的状态为PDL状态,从而目标虚拟机接收到该存储异常的消息就可以感知到PDL状态,那么该目标虚拟机可以将该分布式存储***内的文件***下电,等待技术人员修复分布式存储***内的故障,或者按照用户自定义的故障处理方式选择较优故障处理方式来处理故障的存储节点。例如,将故障的存储节点下电。
需要说明的是,由于分布式存储***内的存储节点出现不能短时修复的故障时,可能导致文件***异常,为了保证分布式存储***内的存储节点的故障被修复后,文件***能够被正常使用,则需要先将文件***下电。当修复完成时,在将文件***进行上电,并修复文件***。
方式4、当该访问请求由该目标客户端基于目标虚拟机发送,且该目标虚拟机不是VMWare虚拟机时,若该故障状态为该第二故障状态,该目标设备向该目标虚拟机返回该目标虚拟机可识别的目标错误,该目标错误用于指示存储介质故障。
该目标错误可以是Sense key 0x3错误,也即是存储介质错误(Medium Error),一般的虚拟机均可以识别,当目标虚拟机接收到该目标错误,说明此时分布式存储***的状态为第二故障状态,那么该目标设备可以将分布式文件***下电,等待技术人员修复分布式存储***内的故障,或者按照用户自定义的故障处理方式选择较优故障处理方式来处理故障的存储节点。
需要说明的是,本步骤516所示的过程也即是基于接收的故障标识,目标设备进行故障处理的过程,也即是基于所述响应中包含的故障状态,进行故障处理的过程。
517、当该至少一个存储节点修复完成时,向该分布式存储***内的各个设备发送修复完成响应。
本步骤517与步骤509同理,在此本发明实施例对本步骤517不做赘述。需要说明的是,该每个存储节点的故障可以是被自身所修复,还可以被技术人员修复,本发明实施例对存储节点的修复方式不做具体限定。
需要说明的是,当客户端接收到该修复完成响应时,若文件***已经下电,则该客户端对该文件***上电,并修复该文件***。由于文件***内存储有大量的元数据,当对该文件***进行修复时,需要扫描该文件***内的所有元数据,并修改扫描到的错误元数据,一般该修复文件***的过程需要消耗部分时间,在第一故障状态下,客户端不会下电文件***,一旦在第一预设时间内该至少一个存储节点均能被修复,那么也就可以避免下电文件***,从而可以减少修复文件***的时间,使得分布式存储***可以尽快恢复业务,以保证服务质量。
本发明实施例所示的方法,根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态,从而无需当所有存储节点均故障时,才确定分布式存储***的故障状态,当确定完故障状态后,可以立即向分布式存储***内的每个存储节点发送故障状态,以便每个存储节点根据确定的故障状态进行故障处理,从而可以降低分布式存储***恢复正常所用的时间。并且,对于不同的虚拟机,本发明实施例提供了不同的故障处理方式,从而使得该本发明实施例所提供的故障处理方式更具有普适性。并且,分布式存储***内的每个存储节点均知道分布式存储***的故障状态,对于未出现故障的存储节点而言,可以基于访问请求向目标设备返回故障状态,从而目标设备可以明确的知道分布式存储***的故障状态,进而可以提高目标设备确定故障状态的精度。并且,在第一故障状态下,目标设备不会下电文件***,一旦在第一预设时间内该至少一个存储节点均能被修复,那么也就可以避免下电文件***,且当该至少一个存储节点恢复后,文件***以及业务可以立即恢复,从而可以减少修复文件***的时间,使得分布式存储***可以尽快恢复业务,以保证服务质量。
由于存储节点出现的故障可能在短时间内可修复,还可能需要长时间修复,且每个存储节点的修复时间,都可以影响到整个分布式存储***的修复时间,因此,在一些实施例中,还可以根据每个存储节点的故障类型,来确定分布式存储***的故障状态。为了进一步说明此过程,参见图6所示的本发明实施例所提供的一种分布式存储***故障处理方法的流程图,该方法的流程可以包括以下步骤。
601、监管节点确定分布式存储***内出现故障的至少一个存储节点以及该至少一个存储节点无法被访问的目标数据。
本步骤601与步骤501同理,在此本发明实施例对步骤601不做赘述。
602、监管节点根据该至少一个存储节点出现故障的时间,确定该分布式存储***的故障场景,该故障场景用于指示该至少一个存储节点是否同时出现故障。
该故障场景可以包括第一故障场景和第二故障场景中的任一个,其中,该第一故障场景用于指示该至少一个存储节点同时出现故障,该第二故障场景用于指示该至少一个存储节点出现故障的时间不同。
该监管节点可以从存储的故障表中确定每一个存储节点出现故障的时间,从而该监管节点就可以根据至少一个存储节点出现故障的时间是否相同,确定故障场景。
在一种可能的实现方式中,当该至少一个存储节点在目标时长内均出现故障时,该监管节点将该故障场景确定为第一故障场景,否则,将该故障场景确定为第二故障场景。需要说明的是本步骤602所示的过程也即是根据所述至少一个存储节点出现故障的时间,确定所述故障场景的过程。
603、对于该至少一个存储节点中的任一存储节点,当该任一存储节点出现预设的网络故障、预设的异常掉电故障、预设的误操作故障、预设的硬件故障或预设的软件故障时,该监管节点将该任一存储节点的故障类型确定为第一故障类型,否则,将该任一存储节点的故障类型确定为第二故障类型。
存储节点的故障类型用于表示一个存储节点的故障能否在第二预设时长内被修复,故障类型可以包括第一故障类型和第二故障类型中的任一个,第二故障类型用于指示一个存储节点的故障不能在该第二预设时长内被修复,该第二预设时长可以小于或等于第一预设时长,本发明实施例对该第二预设时长不做具体限定。
其中,该预设的网络故障可以包括下述第1.1-1.7项中的任一项:
第1.1项、该任一存储节点的业务网口无法访问,该任一存储节点的监管网口能够访问,该业务网口是存储节点之间用于心跳、数据同步以及镜像时所使用的业务网络的网口,该监管网口为监控存储节点是否出现故障以及进行信息查询时所使用的监管网络的网口。
该监管节点可以通过监管节点的业务网口向任一存储节点的业务网口发送因特网包探索器(ping)请求,该ping请求用于请求建立连接,若可以连接成功,则认为该任一存储节点的业务网能够口访问,反之,则认为该任一存储节点的业务网口无法访问。同理,该监管节点可以通过监管节点的监管网口向任一存储节点的监管网口发送ping请求,若可以连接成功,则认为该任一存储节点的监管网口可以访问,否则认为该任一存储节点的监管网口无法访问。
若监管节点通过业务网口无法访问该任一存储节点,说明任一存储节点出现了网络故障,但是通过监管网口能够访问该任一存储节点,说明该任一存储节点出现的故障可以在短时间内修复,则该任一存储节点出现了预设的网络故障。
第1.2项、当该业务网络和该监管网络为同一个目标网络时,该任一存储节点在该目标网络内传输的数据包出现第一预设数目的丢包或第二预设数目的畸形包,且该任一存储节点的业务网口、监管网口以及基板管理控制器BMC网口均不可访问,BMC网口为管理BMC的BMC网络的网口。
该监管节点可以通过监管节点的BMC网口向任一存储节点的BMC网口发送ping请求,若可以连接成功,则认为该任一存储节点的BMC网口可以访问,否则,认为该任一存储节点的BMC网口不可以访问。
在交付阶段,技术人员可以将业务网络和监管网络配置为同一个网络,也即是目标网络,当该业务网络和该监管网络为同一个目标网络时,如果该任一存储节点在该目标网络内传输的数据包出现第一预设数目的丢包或第二预设数目的畸形包,说明该任一存储节点出现了网络故障,若该监管节点无法访问该任一存储节点,说明该任一存储节点出现的故障可以在短时间内修复,则该任一存储节点出现了预设的网络故障。
第1.3项、当该业务网络和该监管网络为同一个目标网络时,该任一存储节点在该目标网络内传输的数据包出现大于第一预设数目的丢包或大于第二预设数目的畸形包,且该任一存储节点在目标网络内传输数据的时延大于第三预设时长。
需要说明的是,当监管节点在向该任一存储节点发送ping请求时,若连接不成功,该任一存储节点会向该监管节点发送连接失败响应,该连接失败响应用于指示连接失败,且该连接失败响应内可以携带时延信息,该时延信息用于指示该任一存储节点在目标网络内传输数据的时延,从而该监管节点可以判断时延信息所指示的时延是否大于第三预设时长。
第1.4项、当该业务网络和该监管网络为同一个目标网络时,该目标网络中出现该任一存储节点的优先级的流量控制PFC报文大于第三预设数目,且该任一存储节点不可访问。
监管节点可以检测目标网络内的各个优先级的流量控制(priority-based flowcontrol,PFC)报文,从而可以确定该任一存储节点发送的PFC报文的数目是否大于第三预设数目,该监管节点就可以确定该任一存储节点是否符合预设条件。本发明实施例对该第三预设数目不做具体限定。
第1.5项、当该业务网络和该监管网络为同一个目标网络时,该目标网络中出现该任一存储节点发送第三预设数目的优先级的流量控制PFC报文,且该任一存储节点在该目标网络内传输数据的时延大于第四预设时长。
需要说明的是,本发明实施例对该四预设时长不做具体限定。
第1.6项、当该业务网络和该监管网络为同一个目标网络时,该目标网络中出现任一存储节点导致的广播风暴,且该任一存储节点的业务网口、监管网口以及BMC网口均不可访问。
需要说明的是,当任一存储节点在该目标网络内发送大量的广播包,则该目标网络中可能出现广播风暴。
第1.7项、当该业务网络和该监管网络为同一个目标网络时,该目标网络中出现该任一存储节点导致的广播风暴,且该任一存储节点在该目标网络内的时延大于第五预设时长。
需要说明的是,本发明实施例对该五预设时长不做具体限定。
该预设的异常掉电故障可以包括下述第2.1-2.2项中的任一项:
第2.1项、机框内的所有存储节点的业务网口、监管网口以及BMC网口均不可访问,该机框包括所述任一存储节点。
一个机框内可以包括至少一个存储节点,当所有的存储节点业务网口、监管网口以及BMC网口均不可访问时,可以认为机框内所有的存储节点均被下电,那么,若该任一存储节点在该机框内,说明该任一存储节点也被下电,只要给机框上电,就可以修复该任一存储节点的故障,则认为该任一存储节点出现了预设的异常掉电故障。
第2.2项、在第七预设时长内,第一目标个数的存储节点的业务网口、监管网口以及BMC网口均不可访问,该第一目标个数的存储节点包括该任一存储节点。
当在第七预设时长内,第一目标个数的存储节点的业务网口、监管网口以及BMC网口均不可访问时,第一目标个数的存储节点均可以认为出现了预设的异常掉电故障。需要说明的是,本发明实施例对该第七预设时长不做具体限定。
该预设的误操作故障可以包括:该任一存储节点被主动下电。例如,当用户点击任一存储节点的关机按钮或者重启按钮时,存储节点认为被主动下电,并将主动下电的信息发送给监管节点,从而监管节点确定该任一存储节点出现了预设的误操作故障。
该预设的硬件故障包括:任一存储节点异常退出,该任一存储节点的BMC网口能够访问,且该任一存储节点存在松动的部件。
当任一存储节点异常退出时,可以向监管节点发送异常退出的信息,以表示自己已经异常退出。由于异常退出可能是内部的部件松动导致。该任一部件松动可以是内存条以及卡条等,对于松动的部件通过插拔的方式可以立即恢复,也就是出现的是短时故障。需要说明的是,当该任一存储节点检测到任一部件连接不良时,说明该任一存储节点存在松动的部件,则该任一存储节点可以向监管节点发送松动部件的信息,以便监管节点可以根据松动部件的信息,确定该任一存储节点出现了预设的误操作故障。
该预设的软件故障可以包括下述第3.1-3.3项中的任一项:
第3.1项、该任一存储节点的操作***异常导致该任一存储节点异常复位。
当该任一存储节点的内存不足时,导致任一存储节点的操作***无法继续运行,需要复位,或者是看门狗触发的该任一存储节点异常复位等,当该任一存储节点出现异常复位时,该任一存储节点可以向监管节点发送异常复位的消息,从而该监管节点可以获知该任一存储节点异常复位,则说明该任一存储节点出现了预设的软件故障。
第3.2项、该任一存储节点的软件异常导致该任一存储节点的目标进程退出。
该目标进程可以是OSD进程,当该任一存储节点出现异常复位时,该任一存储节点可以向监管节点发送目标进程退出的消息,从而该监管节点可以获知该任一存储节点的目标进程退出,则说明该任一存储节点出现了预设的软件故障。
第3.3项、该任一存储节点的软件异常导致该任一存储节点的操作***复位。
由于软件异常,该任一存储节点操作***出现复位时,该任一存储节点可以向监管节点发送操作***复位的消息,从而该监管节点可以获知该任一存储节点的操作***复位,则说明该任一存储节点出现了预设的软件故障。
需要说明是,当该至少一个存储节点中的每个存储节点出现故障时,监管节点就可以通过本步骤603判断每个存储节点的故障类型是第一故障类型,还是第二故障类型,并将每个存储节点的故障类型存储在故障表中,以便需要监管节点需要任一存储节点的故障类型时,可以直接从故障表中获取。
需要说明的是,本步骤603中所体现的多种故障类型判别方法,可以精确地确定每个存储节点的故障类型,进而根据每个存储节点的故障类型确,可以更加精确的确定分布式存储***的故障状态。
604、当该至少一个存储节点的数目大于该分布式存储***的冗余度,且该目标数据的数据量符合预设条件时,若该故障场景为该第一故障场景,该监管节点则根据该至少一个存储节点中每一个存储节点的故障类型,确定该故障状态。
由于第一故障场景用于表示该至少一个存储节点同时出现,则该监管节点可以根据每一个存储节点,来确定该分布式存储***的故障状态。
在一种可能的实现方式中,监管节点则根据该至少一个存储节点中每一个存储节点的故障类型,确定该故障状态可以包括:当该至少一个存储节点中每一个存储节点的故障类型均为第一故障类型时,该监管节点将该故障状态确定为该第一故障状态,该第一故障状态用于指示该至少一个存储节点能在所述第一预设时长内全部被修复;当该至少一个存储节点中目标个数的存储节点的故障类型为第二故障类型时,若该目标个数小于或者等于该分布式存储***的冗余度时,该监管节点将该故障状态确定为该第一故障状态,否则,将该故障状态确定为该第二故障状态,该第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
当该至少一个存储节点中每一个存储节点的故障类型均为第一故障类型时,可以认为分布式存储***内的故障可以在短时间内被修复,则可以将该故障状态确定为第一故障状态。虽然目标个数的存储节点的故障类型为第二故障类型,但是当目标个数小于或等于该分布式存储***的冗余度,说明目标个数的存储节点对分布式存储***的影响不大,则可以将该故障状态确定为第一故障状态。一旦目标个数大于该分布式存储***的冗余度,说明目标个数的存储节点对分布式存储***的影响较大,则可以将该故障状态确定为第二故障状态,以便迅速修复故障。
需要说明的是,对于该至少一个存储节点的数目是否大于该分布式存储***的冗余度,且该目标数据的数据量是否符合预设条件的描述,在前文中有体现,对此本发明实施例不做赘述。
需要说明的是,当故障场景为第一故障场景时,监管节点可以通过步骤603中预设的网络故障,预设的异常掉电故障或预设的误操作故障中的任一预设故障,判断每个存储节点的故障类型。
605、当该至少一个存储节点的数目大于该分布式存储***的冗余度,且该目标数据的数据量符合预设条件时,若该故障场景为第二故障场景,监管节点则根据该至少一个存储节点中最后一个出现故障的第一存储节点的故障类型,确定该故障状态。
由于第二故障场景用于表示该至少一个存储节点出现故障的时间不同,则该监管节点可以根据该至少与一个存储节点中最后一个出现故障的存储节点的故障类型,来确定该分布式存储***的故障状态,其中,最后一个出现故障的存储节点也即是第一存储节点。
在一种可能的实现方式中,当该第一存储节点的故障类型为第一故障类型时,监管节点则将该故障状态确定为第一故障状态,该第一故障状态用于指示该至少一个存储节点能在该第一预设时长内全部被修复;当该第一存储节点的故障类型为所述第二故障类型时,监管节点则将该故障状态确定为第二故障状态,该第二故障状态用于指示该至少一个存储节点不能在所述第一预设时长内全部被修复。
需要说明的是,本步骤604和605所示的过程也即是根据所述分布式存储***的故障场景,确定所述分布式存储***的故障状态的过程。
需要说明的是,当故障场景为第二故障场景时,监管节点仅需要确定第一存储节点的故障类型即可,无需确定所以存储节点的故障类型,可以通过步骤603中预设的网络故障,预设的异常掉电故障、预设的误操作故障、预设的硬件故障或预设的软件故障中的任一预设故障,来判断第一存储节点的故障类型。
606、该监管节点向该分布式存储***内的所有存储节点发送用于指示故障状态的故障标识。
当该故障状态为第一故障状态时,该监管节点向该分布式存储***内的所有存储节点发送第一故障标识,当该故障状态为第二故障状态时,向该监管节点向该分布式存储***内的所有存储节点发送第二故障标识,具体执行过程与步骤503同理,在此不做赘述。需要说明的是,本步骤606所示的过程也即是向所述多个存储节点中每一个存储节点发送所述故障状态的过程。
607、该分布式存储***内的目标存储节点接收故障标识。
当该故障标识为第一故障标识时,目标存储节点接收到第一故障标识,当该故障标识为第二故障标识时,目标存储节点接收到第二故障标识,具体执行过程与步骤504同理,在此不做赘述。
608、目标设备向该目标存储节点发送访问请求。
本步骤608与步骤505所示的过程同理,本发明实施例对本步骤608不做赘述。
609、当该分布式存储***内的目标存储节点接收到该故障标识后,若该目标存储节点再接收到访问请求,该目标存储节点悬挂该访问请求,输出该故障标识。
当该故障标识为第一故障标识时,目标存储节点向目标设备输出第一故障标识,当该故障标识为第二故障标识时,目标存储节点向目标设备输出第二故障标识,具体执行过程与步骤506同理,在此不做赘述。
610、目标设备接收该目标存储节点基于该访问请求返回的故障标识。
本步骤610与步骤505所示的过程同理,本发明实施例对本步骤610不做赘述。需要说明的是,本步骤610所示的过程也即是接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态;所述故障状态用于指示至少一个出现故障的存储节点能否在第一预设时长内全部被修复的过程。其中,所述响应中包含的故障状态也即是故障标识。
611、目标设备基于接收的故障标识,进行故障处理。
当该故障标识为第一故障标识时,目标设备基于接收的第一故障标识,进行故障处理,具体执行过程与步骤508所示的过程同理。当该故障标识为第二故障标识时,目标设备基于接收的第二故障标识,进行故障处理,具体执行过程与步骤516所示的过程同理,在此,本发明实施例对本步骤611不做赘述。
需要说明的是,分布式存储***内的每个存储节点均知道分布式存储***的故障状态,对于未出现故障的存储节点而言,可以基于访问请求向目标设备返回故障状态,从而目标设备可以明确的知道分布式存储***的故障状态,进而可以提高目标设备确定故障状态的精度。
需要说明的是,对于不同的虚拟机,本发明实施例提供了不同的故障处理方式,从而使得该本发明实施例所提供的故障处理方式更具有普适性。
需要说明的是,本步骤611所示的过程也即是基于所述响应中包含的故障状态,进行故障处理的过程。
612、当该至少一个存储节点修复完成时,监管节点向该分布式存储***内的各个设备发送修复完成响应。
本步骤612与步骤509同理,在此本发明实施例对本步骤612不做赘述。需要说明的是,当该故障状态为第一故障状态时,若在该第一预设时长内该至少一个存储节点全部被修复完整,则可以直接执行本步骤612,若在该第一预设时长内该至少一个存储节点未全部修复,则监管节点将该故障状态由第一故障状态更新为第二故障状态,并跳转执行步骤606。需要说明的是,在第一故障状态下,客户端不会下电文件***,一旦在第一预设时间内该至少一个存储节点均能被修复,那么也就可以避免下电文件***,从而可以减少修复文件***的时间,使得分布式存储***可以尽快恢复业务,以保证服务质量。
本发明实施例所示的方法,根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态,从而无需当所有存储节点均故障时,才确定分布式存储***的故障状态,当确定完故障状态后,可以立即向分布式存储***内的每个存储节点发送故障状态,以便每个存储节点根据确定的故障状态进行故障处理,从而可以降低分布式存储***恢复正常所用的时间。并且,对于不同的虚拟机,本发明实施例提供了不同的故障处理方式,从而使得该本发明实施例所提供的故障处理方式更具有普适性。并且,分布式存储***内的每个存储节点均知道分布式存储***的故障状态,对于未出现故障的存储节点而言,可以基于访问请求向目标设备返回故障状态,从而目标设备可以明确的知道分布式存储***的故障状态,进而可以提高目标设备确定故障状态的精度。并且,在第一故障状态下,目标设备不会下电文件***,一旦在第一预设时间内该至少一个存储节点均能被修复,那么也就可以避免下电文件***,从而可以减少修复文件***的时间,使得分布式存储***可以尽快恢复业务,以保证服务质量。并且,本步骤603中所体现的多种故障类型判别方法,可以精确地确定每个存储节点的故障类型,进而根据每个存储节点的故障类型确,可以更加精确的确定分布式存储***的故障状态。
图7是本发明实施例提供的一种故障处理装置的结构示意图,应用于分布式存储***,所述分布式存储***包含多个存储节点,该装置包括:
确定模块701,用于根据所述多个存储节点中的至少一个出现故障的存储节点,确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个出现故障的存储节点能否在第一预设时长内全部被修复;
发送模块702,用于向所述多个存储节点中每一个存储节点发送所述故障状态。
可选地,所述装置还包括:
处理模块,用于向所述多个存储节点中每一个存储节点发送所述故障状态。
可选地,所述确定模块701,所述确定模块包括:
第一确定单元,用于执行上述步骤501;
第二确定单元,用于根据所述至少一个存储节点以及所述目标数据,确定所述故障状态。
可选地,所述第二确定单元用于:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,将所述故障状态确定为第一故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复。
可选地,所述第二确定单元用于:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,根据所述分布式存储***的故障场景,确定所述故障状态,所述故障场景用于指示所述至少一个存储节点是否同时出现故障。
可选地,所述预设条件包括下述任一项:
所述目标数据的数据量与第一预设数据量之间的比值大于预设比值,所述第一预设数据量为所述分布式存储***存储的所有数据的总数据量;
所述目标数据的数据量大于第二预设数据量。
可选地,所述装置还包括:
更新模块,用于当所述故障状态为所述第一故障状态时,若在所述第一预设时长内所述至少一个存储节点未全部被修复,则将所述故障状态由第一故障状态更新为第二故障状态,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述第二确定单元,用于执行上述步骤602。
可选地,所述第二确定单元,用于当所述至少一个存储节点在目标时长内均出现故障时,将所述故障场景确定为第一故障场景,否则,将所述故障场景确定为第二故障场景,所述第一故障场景用于指示所述至少一个存储节点同时出现故障,所述第二故障场景用于指示所述至少一个存储节点出现故障的时间不同。
可选地,所述第二确定单元包括:
第一确定子单元,用于执行上述步骤604;
第二确定子单元,用于执行上述步骤605。
可选地,所述第一确定子单元用于:
当所述至少一个存储节点中每一个存储节点的故障类型均为第一故障类型时,将所述故障状态确定为第一故障状态,所述第一故障类型用于指示一个存储节点的故障能在所述第二预设时长内被修复,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复;
当所述至少一个存储节点中目标个数的存储节点的故障类型为第二故障类型时,若所述目标个数小于或等于所述分布式存储***的冗余度,将所述故障状态确定为所述第一故障状态,否则,将所述故障状态确定为第二故障状态,所述第二故障类型用于指示一个存储节点的故障不能在所述第二预设时长内被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述第二确定子单元用于:
当所述第一存储节点的故障类型为第一故障类型时,将所述故障状态确定为第一故障状态,所述第一故障类型用于指示一个存储节点的故障能在所述第二预设时长内被修复,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复;
当所述第一存储节点的故障类型为第二故障类型时,则将所述故障状态确定为第二故障状态,所述第二故障类型用于指示一个存储节点的故障不能在所述第二预设时长内被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述确定模块701,还用于执行步骤603。
可选地,所述发送模块702,还用于执行上述步骤509。
图8是本发明实施例提供的一种故障处理装置的结构示意图,所述分布式存储***包含多个存储节点;该装置包括:
发送模块801,用于执行上述步骤608;
接收模块802,用于接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态;所述故障状态用于指示至少一个出现故障的存储节点能否在第一预设时长内全部被修复。
可选地,该装置还包括:
处理模块,用于基于所述响应中包含的故障状态,进行故障处理。
可选地,所述故障状态的故障标识包括第一故障标识或第二故障标识中的任一个,其中,所述第一故障标识用于指示第一故障状态,所述第二故障标识用于指示第二故障状态,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复,所述存储节点为所述分布式存储***中出现故障的存储节点。
可选地,所述处理模块用于:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为所述第一故障状态,不向所述目标虚拟机响应所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为所述第二故障状态时,向所述目标虚拟机返回存储异常的消息,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述处理模块用于:
当所述目标访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为所述第一故障状态,向所述目标虚拟机发送重试请求,所述重试请求用于指示重新下发所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述目标访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为所述第二故障状态,向所述目标虚拟机返回所述目标虚拟机可识别的目标错误,所述目标错误用于指示存储介质故障,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述接收模块802,还用于接收所述分布式存储***中的目标客户端发送的目标访问请求,所述目标访问请求用于指示对第一目标数据进行处理,所述第一目标数据包括所述目标数据;
所述发送模块801,用于基于所述目标访问请求,向分布式存储***内的目标存储节点发送所述访问请求。
可选地,接收模块802,用于接收目标存储节点返回的修复完成响应,所述修复完成响应用于指示所述分布式存储***内没有故障设备。
本发明实施例还提供一种分布式存储***,所述分布式存储***包括监管节点和多个存储节点;
所述监管节点用于:
根据所述多个存储节点中的至少一个出现故障的存储节点确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个出现故障的存储节点能否在第一预设时长内全部被修复;
向所述多个存储节点中每一个存储节点发送所述故障状态;
所述多个存储节点中的每一个存储节点,用于接收所述故障状态。
可选地,所述故障状态的故障标识包括第一故障标识和第二故障标识中的任一个,所述第一故障标识用于指示所述第一故障状态,所述第二故障标识用于指示第二故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
可选地,所述多个存储节点中的每一个存储节点,还用于当接收到所述故障标识后,若再接收到所述访问请求,悬挂所述访问请求,基于接收的故障状态,进行故障处理。
需要说明的上述提供的分布式存储***内的各个设备均可以是实施例5和6中的设备。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的故障处理装置在处理故障时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式存储***故障处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种分布式存储***故障处理方法,其特征在于,所述分布式存储***包含多个存储节点;所述方法包括:
确定所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据;
根据所述至少一个存储节点以及所述目标数据,确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个存储节点能否在第一预设时长内全部被修复;
向所述多个存储节点中每一个存储节点发送所述故障状态。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述存储***的故障状态,进行故障处理。
3.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个存储节点以及所述目标数据,确定所述故障状态包括:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,将所述故障状态确定为第一故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复。
4.根据权利要求1所述的方法,其特征在于,所述根据所述至少一个存储节点以及所述目标数据,确定所述故障状态包括:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,根据所述分布式存储***的故障场景,确定所述故障状态,所述故障场景用于指示所述至少一个存储节点是否同时出现故障。
5.一种分布式存储***故障处理方法,其特征在于,所述分布式存储***包含多个存储节点;所述方法包括:
向所述分布式存储***中的目标存储节点发送访问请求;
接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态,所述故障状态是根据所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据来确定;所述故障状态用于指示至少一个存储节点能否在第一预设时长内全部被修复。
6.根据权利要求5所述的方法,其特征在于,所述接收所述目标存储节点返回的响应之后,所述方法还包括:
基于所述响应中包含的故障状态,进行故障处理。
7.根据权利要求6所述的方法,其特征在于,所述基于所述响应中包含的故障状态,进行故障处理包括:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为第一故障状态,不向所述目标虚拟机响应所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为第二故障状态时,向所述目标虚拟机返回存储异常的消息,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
8.根据权利要求6所述的方法,其特征在于,所述基于所述响应中包含的故障状态,进行故障处理包括:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为第一故障状态,向所述目标虚拟机发送重试请求,所述重试请求用于指示重新下发所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为第二故障状态,向所述目标虚拟机返回所述目标虚拟机可识别的目标错误,所述目标错误用于指示存储介质故障,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
9.一种分布式存储***,其特征在于,所述分布式存储***包括监管节点和多个存储节点;
所述监管节点用于:
确定所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据;
根据所述至少一个存储节点以及所述目标数据,确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个存储节点能否在第一预设时长内全部被修复;
向所述多个存储节点中每一个存储节点发送所述故障状态;
所述多个存储节点中的每一个存储节点,用于接收所述故障状态。
10.根据权利要求9所述的***,其特征在于,所述多个存储节点中的每一个存储节点,还用于当接收到所述故障状态后,若再接收到访问请求,悬挂所述访问请求,基于接收的故障状态,进行故障处理。
11.一种故障处理装置,其特征在于,应用于分布式存储***,所述分布式存储***包含多个存储节点,所述装置包括确定模块和发送模块:
其中,所述确定模块包括第一确定单元和第二确定单元;
所述第一确定单元,用于确定所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据;
所述第二确定单元,用于根据所述至少一个存储节点以及所述目标数据,确定所述分布式存储***的故障状态;所述故障状态用于指示所述至少一个存储节点能否在第一预设时长内全部被修复;
所述发送模块,用于向所述多个存储节点中每一个存储节点发送所述故障状态。
12.根据权利要求11所述的装置,其特征在于,所述第二确定单元用于:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,将所述故障状态确定为第一故障状态,所述第一故障状态用于指示所述至少一个存储节点能在所述第一预设时长内全部被修复。
13.根据权利要求11所述的装置,其特征在于,所述第二确定单元用于:
当所述至少一个存储节点的数目大于所述分布式存储***的冗余度,且所述目标数据的数据量符合预设条件时,根据所述分布式存储***的故障场景,确定所述故障状态,所述故障场景用于指示所述至少一个存储节点是否同时出现故障。
14.一种故障处理装置,其特征在于,应用于分布式存储***,所述分布式存储***包含多个存储节点,所述装置包括:
发送模块,用于向所述分布式存储***中的目标存储节点发送访问请求,所述分布式存储***包含多个存储节点;
接收模块,用于接收所述目标存储节点返回的响应;所述响应中包含所述分布式存储***的故障状态,所述故障状态是根据所述分布式存储***内出现故障的至少一个存储节点以及所述至少一个存储节点内无法被访问的目标数据来确定;所述故障状态用于指示至少一个存储节点能否在第一预设时长内全部被修复。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
处理模块,用于基于所述响应中包含的故障状态,进行故障处理。
16.根据权利要求15所述的装置,其特征在于,所述处理模块用于:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为第一故障状态,不向所述目标虚拟机响应所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机是VMWare虚拟机时,若所述故障状态为第二故障状态时,向所述目标虚拟机返回存储异常的消息,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
17.根据权利要求15所述的装置,其特征在于,所述处理模块用于:
当所述访问请求由所述分布式存储***中的目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为第一故障状态,向所述目标虚拟机发送重试请求,所述重试请求用于指示重新下发所述访问请求,所述第一故障状态用于指示至少一个存储节点能在第一预设时长内全部被修复;
当所述访问请求由所述目标客户端基于目标虚拟机发送,且所述目标虚拟机不是VMWare虚拟机时,若所述故障状态为第二故障状态,向所述目标虚拟机返回所述目标虚拟机可识别的目标错误,所述目标错误用于指示存储介质故障,所述第二故障状态用于指示所述至少一个存储节点不能在所述第一预设时长内全部被修复。
18.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求8任一项所述的分布式存储***故障处理方法所执行的操作。
19.一种存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求8任一项所述的分布式存储***故障处理方法所执行的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741190.5A CN110535692B (zh) | 2019-08-12 | 2019-08-12 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
PCT/CN2020/102302 WO2021027481A1 (zh) | 2019-08-12 | 2020-07-16 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741190.5A CN110535692B (zh) | 2019-08-12 | 2019-08-12 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535692A CN110535692A (zh) | 2019-12-03 |
CN110535692B true CN110535692B (zh) | 2020-12-18 |
Family
ID=68662506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910741190.5A Active CN110535692B (zh) | 2019-08-12 | 2019-08-12 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110535692B (zh) |
WO (1) | WO2021027481A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110535692B (zh) * | 2019-08-12 | 2020-12-18 | 华为技术有限公司 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
CN111371848A (zh) * | 2020-02-21 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种请求处理方法、装置、设备及存储介质 |
CN113805788B (zh) * | 2020-06-12 | 2024-04-09 | 华为技术有限公司 | 一种分布式存储***及其异常处理方法和相关装置 |
CN112187919B (zh) * | 2020-09-28 | 2024-01-23 | 腾讯科技(深圳)有限公司 | 一种存储节点管理方法及相关装置 |
CN113326251B (zh) * | 2021-06-25 | 2024-02-23 | 深信服科技股份有限公司 | 数据管理方法、***、设备和存储介质 |
US11544139B1 (en) * | 2021-11-30 | 2023-01-03 | Vast Data Ltd. | Resolving erred 10 flows |
CN114584454B (zh) * | 2022-02-21 | 2023-08-11 | 苏州浪潮智能科技有限公司 | 一种服务器信息的处理方法、装置、电子设备及存储介质 |
CN117008815A (zh) * | 2022-04-28 | 2023-11-07 | 华为技术有限公司 | 存储装置及数据处理方法 |
CN116382850B (zh) * | 2023-04-10 | 2023-11-07 | 北京志凌海纳科技有限公司 | 一种利用多存储心跳检测的虚拟机高可用管理装置及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935481A (zh) * | 2015-06-24 | 2015-09-23 | 华中科技大学 | 一种分布式存储下基于冗余机制的数据恢复方法 |
CN108984107A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 提高存储***的可用性 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092712B (zh) * | 2011-11-04 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种任务中断恢复方法和设备 |
US10691479B2 (en) * | 2017-06-28 | 2020-06-23 | Vmware, Inc. | Virtual machine placement based on device profiles |
CN109831342A (zh) * | 2019-03-19 | 2019-05-31 | 江苏汇智达信息科技有限公司 | 一种基于分布式***的故障恢复方法 |
CN110535692B (zh) * | 2019-08-12 | 2020-12-18 | 华为技术有限公司 | 故障处理方法、装置、计算机设备、存储介质及存储*** |
-
2019
- 2019-08-12 CN CN201910741190.5A patent/CN110535692B/zh active Active
-
2020
- 2020-07-16 WO PCT/CN2020/102302 patent/WO2021027481A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104935481A (zh) * | 2015-06-24 | 2015-09-23 | 华中科技大学 | 一种分布式存储下基于冗余机制的数据恢复方法 |
CN108984107A (zh) * | 2017-06-02 | 2018-12-11 | 伊姆西Ip控股有限责任公司 | 提高存储***的可用性 |
Also Published As
Publication number | Publication date |
---|---|
WO2021027481A1 (zh) | 2021-02-18 |
CN110535692A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535692B (zh) | 故障处理方法、装置、计算机设备、存储介质及存储*** | |
RU2644146C2 (ru) | Способ, устройство и система управления обработкой отказов | |
US9021317B2 (en) | Reporting and processing computer operation failure alerts | |
JP5617304B2 (ja) | スイッチング装置、情報処理装置および障害通知制御プログラム | |
CN112738295B (zh) | Ip地址异常处理方法、装置、计算机***和存储介质 | |
US7499987B2 (en) | Deterministically electing an active node | |
CN109586989B (zh) | 一种状态检查方法、装置及集群*** | |
CN111342986B (zh) | 分布式节点管理方法及装置、分布式***、存储介质 | |
CN108512753B (zh) | 一种集群文件***中消息传输的方法及装置 | |
CN113965576B (zh) | 基于容器的大数据采集方法、装置、存储介质和设备 | |
US10860411B2 (en) | Automatically detecting time-of-fault bugs in cloud systems | |
US20140164851A1 (en) | Fault Processing in a System | |
TW201510995A (zh) | 維護電腦系統之檔案系統的方法 | |
US8819481B2 (en) | Managing storage providers in a clustered appliance environment | |
CN105323271A (zh) | 一种云计算***以及云计算***的处理方法和装置 | |
US20230106077A1 (en) | Distributed Storage System, Exception Handling Method Thereof, and Related Apparatus | |
CN111162938A (zh) | 数据处理***及方法 | |
CN113596195B (zh) | 公共ip地址管理方法、装置、主节点及存储介质 | |
CN116382850B (zh) | 一种利用多存储心跳检测的虚拟机高可用管理装置及*** | |
US20230090032A1 (en) | Storage system and control method | |
US11880266B2 (en) | Malfunction monitor for computing devices | |
CN113609199B (zh) | 数据库***、服务器及存储介质 | |
CN117312081A (zh) | 分布式存储***的故障检测方法、装置、设备及介质 | |
RU2672184C1 (ru) | Способ, устройство и система управления обработкой отказов | |
Wijaya et al. | Development Of Netwatch Host Using Telegram As A Strengthening Model Of Institutional Performance Quality Governance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |