一种重启OSD的方法、装置及系统与流程

文档序号:16530985发布日期:2019-01-05 10:45阅读:510来源:国知局
一种重启OSD的方法、装置及系统与流程

本发明涉及计算机技术领域,特别涉及一种重启osd的方法、装置及系统。



背景技术:

ceph是一种高可用、易于管理、开源的分布式存储系统。cephosd(objectstoragedevice,对象存储设备)是ceph存储系统最重要的组件,osd将数据以对象的形式存储到系统中每个存储节点的物理磁盘上。在osd发生故障,例如osd挂掉后,可以通过重启,恢复该osd。

对于每个存储节点的osd,可以在从节点上设置相应的副本osd,在osd发生故障的期间,可以改用副本osd处理用户请求。例如,osd存储为三副本的形式,若其中两个副本osd发生故障没有及时恢复,而第三个副本osd又发生故障,则会造成数据永久丢失。并且待故障osd重启时,重启的osd将副本osd磁盘中异常期间存入的数据,即变化的数据同步到本osd的磁盘中,同时副本osd也被锁住,所以无法处理用户的数据写入请求。如果故障osd越长时间没有被恢复,副本osd磁盘写入的新数据越多,重启osd越耗时,副本osd被锁住的时间也就越久。因此,故障osd恢复的时间越早,锁住写入的时间就会越短,对系统业务影响就会越小。

重启恢复osd之前,需要判断osd是否满足重启条件,满足才能重启,否则可能重启后会直接影响整个ceph存储系统的服务环境。并且在重启过程中,存在磁盘锁住影响写入的问题,以及可能存在其他问题影响到整个ceph存储系统的局部写入运作,所以整个重启恢复过程需要完整的监控,以分析判断是否需要终止重启,控制住影响。目前,判断osd是否可以重启以及监控重启过程均由人力介入处理,所以需要消耗大量的时间,并且复杂的逻辑判断容易造成人工的误判或者漏判。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种重启osd的方法、装置及系统。所述技术方案如下:

第一方面,提供了一种重启osd的方法,所述方法包括:

存储节点按照固定周期采集本节点中osd的状态数据;

当在预设时间段内所述osd一直处于异常状态时,所述存储节点利用重启判断脚本确定所述osd是否满足重启条件;

当所述osd满足所述重启条件时,所述存储节点利用重启脚本重启所述osd。

可选的,当在预设时间段内所述osd一直处于异常状态时,所述存储节点利用重启判断脚本确定所述osd是否满足重启条件,包括:

所述存储节点向中心节点发送所述状态数据;

当在预设时间段内所述osd一直处于异常状态时,所述中心节点向所述存储节点发送重启指令;

所述存储节点基于所述重启指令,利用所述重启判断脚本确定所述osd是否满足重启条件。

可选的,当在预设时间段内所述osd一直处于异常状态时,所述存储节点利用重启判断脚本确定所述osd是否满足重启条件,还包括:

所述存储节点向监控节点发送所述状态数据;

当在预设时间段内所述osd一直处于异常状态时,所述监控节点向中心节点发送告警信息;

所述中心节点基于所述告警信息向所述存储节点发送重启指令;

所述存储节点基于所述重启指令,利用重启判断脚本确定所述osd是否满足重启条件。

可选的,所述中心节点向所述存储节点发送重启指令,包括:

当在预设时间段内所述osd一直处于异常状态,并且所述中心节点接收到上一个执行osd重启的存储节点发送的osd重启结果时,向所述存储节点发送重启指令。

可选的,所述重启指令包括所述重启判断脚本和所述重启脚本。

可选的,所述存储节点利用重启判断脚本确定所述osd是否满足重启条件,包括:

所述存储节点判断所述osd的磁盘是否可用、所述osd的磁盘的挂载目录是否正常显示、所述osd的服务状态是否正常、所述osd的日志中是否存在不可恢复的报错以及所述osd的磁盘中是否存在以孤本形式存储的对象;

当所述osd的磁盘可用、所述osd的磁盘的挂载目录正常显示、所述osd的服务状态正常、所述osd的日志中不存在不可恢复的报错以及所述osd的磁盘中不存在以孤本形式存储的对象时,所述osd满足重启条件。

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

当所述osd不满足所述重启条件时,所述存储节点修复所述osd;

所述存储节点利用所述重启判断脚本确定修复后的所述osd是否满足重启条件;

如果修复后的所述osd满足所述重启条件,则利用所述重启脚本重启所述osd。

可选的,在所述存储节点利用重启脚本重启所述osd之前,包括:

所述存储节点将所述osd的磁盘内容写入内存中,以与副本osd的磁盘内容进行对比并同步变化的数据。

可选的,所述存储节点利用重启脚本重启所述osd,包括:

在所述osd的重启进程中,所述存储节点监控磁盘内容加载的持续时间,osd启动过程的持续时间,锁定副本osd磁盘的持续时间以及进程日志;

当任一持续时间超过相应的阈值,并且进程没有进展时,结束所述osd的重启进程。

第二方面,提供了一种重启osd的装置,包括:

采集模块,用于按照固定周期采集本节点中osd的状态数据;

判断模块,用于当在预设时间段内所述osd一直处于异常状态时,利用重启判断脚本确定所述osd是否满足重启条件;

重启模块,用于当所述osd满足所述重启条件时,利用重启脚本重启所述osd。

可选的,所述判断模块,具体用于:

判断所述osd的磁盘是否可用、所述osd的磁盘的挂载目录是否正常显示、所述osd的服务状态是否正常、所述osd的日志中是否存在不可恢复的报错以及所述osd的磁盘中是否存在以孤本形式存储的对象;

当所述osd的磁盘可用、所述osd的磁盘的挂载目录正常显示、所述osd的服务状态正常、所述osd的日志中不存在不可恢复的报错以及所述osd的磁盘中不存在以孤本形式存储的对象时,所述osd满足重启条件。

可选的,所述判断模块,还用于当所述osd不满足所述重启条件时,修复所述osd,以及利用所述重启判断脚本确定修复后的所述osd是否满足重启条件;

所述重启模块,还用于当修复后的所述osd满足所述重启条件时,利用所述重启脚本重启所述osd。

可选的,所述重启模块,还用于将所述osd的磁盘内容写入内存中,以与副本osd的磁盘内容进行对比并同步变化的数据。

可选的,所述重启模块,用于:

在所述osd的重启进程中,监控磁盘内容加载的持续时间,osd启动过程的持续时间,锁定副本osd磁盘的持续时间以及进程日志;

当任一持续时间超过预设阈值,并且进程没有进展时,结束所述osd的重启进程。

第三方面,提供了一种重启osd的系统,包括存储节点以及中心节点;

所述存储节点包括第二方面中所述的重启osd的装置;

所述存储节点,还用于向所述中心节点发送所述状态数据;

所述中心节点,用于当在预设时间段内所述osd一直处于异常状态时,向所述存储节点发送重启指令;

所述存储节点,还用于基于所述重启指令,利用所述重启判断脚本确定所述osd是否满足重启条件。

可选的,所述系统还包括监控节点;

所述存储节点,还用于向所述监控节点发送所述状态数据;

所述监控节点,用于当在预设时间段内所述osd一直处于异常状态时,向中心节点发送告警信息;

所述中心节点,用于基于所述告警信息向所述存储节点发送重启指令;

所述存储节点,用于基于所述重启指令,利用重启判断脚本确定所述osd是否满足重启条件。

可选的,所述中心节点,具体用于当在预设时间段内所述osd一直处于异常状态,并且接收到上一个执行osd重启的存储节点发送的osd重启结果时,向所述存储节点发送重启指令。

可选的,所述重启指令包括所述重启判断脚本和所述重启脚本。

本发明实施例可以实时监测osd的状态,当监测到有故障osd时,利用重启判断脚本确定该osd是否满足重启条件,当该osd满足重启条件时,利用重启脚本重启osd,并且在重启过程中,通过存储节点监控磁盘内容加载的持续时间,osd启动过程的持续时间以及锁定副本osd磁盘的持续时间等参数,以判断重启进程是否正常,一旦任一持续时间超过预设阈值时,结束所述osd的重启进程。使得系统从osd故障定位到osd重启环境判断再到osd重启进程监测的整个流程均实现自动化从而减少人力投入,提高处理的及时性和效率,为ceph系统的运维工作带来更大的便利,并且能够避免人工疏漏,有效保证系统安全可靠运行。

附图说明

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

图1是本发明实施例提供的一种重启osd的方法的流程图;

图2是本发明实施例提供的一种重启osd的装置的结构框图;

图3是本发明实施例提供的一种重启osd的系统的结构框图;

图4是本发明实施例提供的另一种重启osd的系统的结构框图。

具体实施方式

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

本发明实施例提供了一种重启osd的方法,该方法主要由存储节点来实现。存储节点可以是分布式存储系统中的任一存储节点,用于处理用户的请求,例如数据写入,数据读取等等。上述存储节点可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中的osd重启,存储器可以用于存储下述osd重启过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述osd重启过程中的相关数据。

参见图1,为本发明实施例提供的一种重启osd的方法的流程图,该方法具体可以包括以下步骤。

步骤101,存储节点按照固定周期采集本节点中osd的状态数据。

存储节点可以按照固定周期采集本节点中所有osd的状态数据。一般情况下,osd的状态数据可以包括启用(up)状态或者停用(down)状态,当osd处于up时,则表示osd处于正常状态,可以正常提供服务,当osd处于down时,说明osd处于异常状态。

步骤102,当在预设时间段内所述osd一直处于异常状态时,所述存储节点利用重启判断脚本确定所述osd是否满足重启条件。

当在预设时间段内,存储节点采集到的osd的状态数据表明该osd一直处于异常状态时,说明该osd发生了故障,需要重启进行恢复。在实施中,存储节点可以自行根据状态数据判断本节点中的故障osd,并且在判断出故障osd之后,执行重启判断脚本确定该故障osd是否满足重启条件。

可选的,本发明实施例还可以采用中心管理的方式,即通过中心节点对存储节点进行管理。在采用中心管理方式中,存储节点可以将采集到的状态数据上传给中心节点,由中心节点统一进行监控判断,当判断出故障osd时,即当判断出在预设时间段内所述osd一直处于异常状态时,向所述存储节点发送重启指令,所述存储节点基于所述重启指令,利用所述重启判断脚本确定所述osd是否满足重启条件。中心节点在管理不同的存储节点时可以通过串行执行进行管理,即中心节点在控制执行一个osd重启进程结束后,才控制执行下一个osd重启进程,保证同一时刻只有一个osd重启进程正在执行。也就是说,当中心节点判断出在预设时间段内所述osd一直处于异常状态时,要判断有没有接收到上一个执行osd重启的存储节点发送的osd重启结果,只有在接收到上一个执行osd重启的存储节点发送的osd重启结果之后,才可以向所述存储节点发送重启指令,从而避免交叉影响,可以防止数据的丢失和故障的发生。

可选的,在数据量较大的情况下,为保证数据处理效率,可以增加监控节点,用于监控osd的状态数据。也就是说,存储节点可以向监控节点发送状态数据,由监控节点判断故障osd,当所述监控节点判断出在预设时间段内所述osd一直处于异常状态时,所述监控节点向中心节点发送告警信息,所述中心节点基于所述告警信息向所述存储节点发送重启指令,所述存储节点基于所述重启指令,利用重启判断脚本确定所述osd是否满足重启条件。在实施中,所述中心节点接收到告警信息之后,判断有没有接收到上一个执行osd重启的存储节点发送的osd重启结果,只有在接收到上一个执行osd重启的存储节点发送的osd重启结果之后,才向所述存储节点发送重启指令。

本发明实施例可以由中心节点或监控节点对各个存储节点采集到的osd状态数据进行统一监控,该osd状态数据不仅可以用于故障告警,还可以用于故障分析,从而方便从根本上解决osd的故障问题。

判断osd是否满足重启条件所利用的重启判断脚本可以预先保存在存储节点中,当存储节点发现故障osd时,或者接收到中心节点发送的重启指令时,可以从本节点中调取预存的重启判断脚本,判断osd是否满足重启条件。

可选的,中心节点发送的重启指令可以包括重启判断脚本以及用于执行osd重启所需的重启脚本,存储节点可以基于该重启指令,利用中心节点下发的重启判断脚本,判断osd是否满足重启条件。重启判断脚本或者重启脚本由中心节点在检测到故障osd时统一下发,方便中心节点对脚本的集中管理,当重启判断脚本或者重启脚本需要升级或修改时,可以只对中心节点中的重启判断脚本或者重启脚本进行变更即可,而无需对各个存储节点进行任何处理,所以脚本变更更加方便简单。

所述存储节点利用重启判断脚本确定所述osd是否满足重启条件的过程可以包括:所述存储节点判断所述osd的磁盘是否可用、所述osd的磁盘的挂载目录是否正常显示、所述osd的服务状态是否正常、所述osd的日志中是否存在不可恢复的报错以及所述osd的磁盘中是否存在以孤本形式存储的对象;如果所述osd的磁盘可用、所述osd的磁盘的挂载目录正常显示、所述osd的服务状态正常、所述osd的日志中不存在不可恢复的报错以及所述osd的磁盘中不存在以孤本形式存储的对象,则所述osd满足重启条件,否则任一条件不符合要求时,所述osd不满足重启条件。在实施中,还可以根据业务需要自定义重启osd所需满足的条件,本发明实施例不对重启osd所需满足的条件以及各个条件的判断顺序进行具体限定。

在判断所述osd的磁盘是否可用时,可以利用message等日志,smartctl等硬件测工具检测磁盘是否能够正常使用。

在判断当前osd的磁盘中是否存在存储对象的孤本时,可以根据每个存储对象对应的pg的副本状态确定该存储对象是否只剩下一个可用的副本,如果是,说明该存储对象是孤本,并确定当前osd的磁盘中存在存储对象的孤本,当前osd不满足重启条件。

所述重启判断脚本中还可以包括修复脚本,用于当所述osd不满足所述重启条件时,修复所述osd,例如当osd的磁盘的挂载目录不显示时,利用修复脚本进行修复,以使osd的磁盘的挂载目录可以正常显示。修复结束后,利用所述重启判断脚本重新确定修复后的所述osd是否满足重启条件,如果修复后的所述osd满足所述重启条件,则利用所述重启脚本重启所述osd。如果修复后的osd仍然不符合重启条件时,可以对不可修复的问题报错生成日志并发送给中心节点,以进行人为干预,修复出现的问题。

步骤103,当所述osd满足所述重启条件时,所述存储节点利用重启脚本重启所述osd。

在实施中,该重启脚本可以预先保存在存储节点中,在存储节点判断出所述osd满足所述重启条件之后,可以从本节点调取预存的重启脚本,以执行osd的重启进程。可选的,该重启脚本还可以是中心节点在判断出故障osd之后,下发重启指令的同时下发给存储节点的数据。

所述osd的重启进程可以包括磁盘内容加载的过程、osd启动过程以及对比并同步副本osd磁盘中变化的数据的过程,该对比并同步变化的数据的过程也就是锁定副本osd磁盘的过程。重启脚本包括运行线程和监控线程。其中,运行线程用于执行osd的重启进程所包括的各个过程;监控线程用于监控各个过程的运行情况。在所述osd的重启进程中,所述存储节点可以利用该监控线程监控磁盘内容加载的持续时间,osd启动过程的持续时间,锁定副本osd磁盘的持续时间以及进程日志,当任一持续时间超过预设阈值,例如5分钟,并且进程没有进展时,结束所述osd的重启进程,从而防止发生抖动,并向中心节点上报错误。

在存储节点执行osd的重启进程之前,可以利用vmtouch组件将故障osd的磁盘内容写入内存,在对比并同步变化的数据的过程中,可以将内存中的磁盘内容与副本osd的磁盘内容进行对比,从而同步变化的数据,由于内存的数据处理速度较快,可以提高数据比对效率,从而缩减副本osd磁盘的锁定时间。

在存储节点执行osd重启条件判断以及重启进程的过程中,中心节点可以对osd加运行锁,以防止有人工同时操作相同osd。

osd重启之后,确认osd的状态是否由down转为up,确认转为up之后可以继续监控一段时间的ceph系统的整体状态,如果无异常则结束进程,并向中心节点发送osd重启结果以及整个过程日志。中心节点可以通过分析整个过程日志中的相关信息,确定osd故障优化方法,从而提高系统的稳定性。

存储节点在重启osd的过程中,一旦发生错误会及时将错误上报给中心节点,以及时人为干预操作过程,解决问题,并对上报的错误进行分析,以进一步进行优化。

本发明实施例可以实时监测osd的状态,当监测到有故障osd时,利用重启判断脚本确定该osd是否满足重启条件,当该osd满足重启条件时,利用重启脚本重启osd,并且在重启过程中,通过存储节点监控磁盘内容加载的持续时间,osd启动过程的持续时间以及锁定副本osd磁盘的持续时间等参数,以判断重启进程是否正常,一旦任一持续时间超过预设阈值时,结束所述osd的重启进程。使得系统从osd故障定位到osd重启环境判断再到osd重启进程监测的整个流程均实现自动化从而减少人力投入,提高处理的及时性和效率,为ceph系统的运维工作带来更大的便利,并且能够避免人工疏漏,有效保证系统安全可靠运行。

参照图2,为本发明实施例提供的一种重启osd的装置的结构框图,该装置可以包括采集模块201、判断模块202以及重启模块203。

其中,采集模块201,用于按照固定周期采集本节点中osd的状态数据;

判断模块202,用于当在预设时间段内所述osd一直处于异常状态时,利用重启判断脚本确定所述osd是否满足重启条件;

重启模块203,用于当所述osd满足所述重启条件时,利用重启脚本重启所述osd。

优选的,所述判断模块202,具体用于:

判断所述osd的磁盘是否可用、所述osd的磁盘的挂载目录是否正常显示、所述osd的服务状态是否正常、所述osd的日志中是否存在不可恢复的报错以及所述osd的磁盘中是否存在以孤本形式存储的对象;

当所述osd的磁盘可用、所述osd的磁盘的挂载目录正常显示、所述osd的服务状态正常、所述osd的日志中不存在不可恢复的报错以及所述osd的磁盘中不存在以孤本形式存储的对象时,所述osd满足重启条件。

优选的,所述判断模块202,还用于当所述osd不满足所述重启条件时,修复所述osd,以及利用所述重启判断脚本确定修复后的所述osd是否满足重启条件;

所述重启模块203,还用于当修复后的所述osd满足所述重启条件时,利用所述重启脚本重启所述osd。

优选的,所述重启模块203,还用于将所述osd的磁盘内容写入内存中,以与副本osd的磁盘内容进行对比并同步变化的数据。

优选的,所述重启模块203,用于:

在所述osd的重启进程中,监控磁盘内容加载的持续时间,osd启动过程的持续时间,锁定副本osd磁盘的持续时间以及进程日志;

当任一持续时间超过预设阈值,并且进程没有进展时,结束所述osd的重启进程。

本发明实施例可以实时监测osd的状态,当监测到有故障osd时,利用重启判断脚本确定该osd是否满足重启条件,当该osd满足重启条件时,利用重启脚本重启osd,并且在重启过程中,通过存储节点监控磁盘内容加载的持续时间,osd启动过程的持续时间以及锁定副本osd磁盘的持续时间等参数,以判断重启进程是否正常,一旦任一持续时间超过预设阈值时,结束所述osd的重启进程。使得系统从osd故障定位到osd重启环境判断再到osd重启进程监测的整个流程均实现自动化从而减少人力投入,提高处理的及时性和效率,为ceph系统的运维工作带来更大的便利,并且能够避免人工疏漏,有效保证系统安全可靠运行。

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

参照图3,为本发明实施例提供的一种重启osd的系统的结构框图,该系统可以包括存储节点以及中心节点;

所述存储节点包括上述的重启osd的装置;

所述存储节点,还用于向所述中心节点发送所述状态数据;

所述中心节点,用于当在预设时间段内所述osd一直处于异常状态时,向所述存储节点发送重启指令;

所述存储节点,还用于基于所述重启指令,利用所述重启判断脚本确定所述osd是否满足重启条件。

优选的,如图4所示,所述系统还包括监控节点;

所述存储节点,还用于向所述监控节点发送所述状态数据;

所述监控节点,用于当在预设时间段内所述osd一直处于异常状态时,向中心节点发送告警信息;

所述中心节点,用于基于所述告警信息向所述存储节点发送重启指令;

所述存储节点,用于基于所述重启指令,利用重启判断脚本确定所述osd是否满足重启条件。

优选的,所述中心节点,具体用于当在预设时间段内所述osd一直处于异常状态,并且接收到上一个执行osd重启的存储节点发送的osd重启结果时,向所述存储节点发送重启指令。

优选的,所述重启指令包括所述重启判断脚本和所述重启脚本。

本发明实施例可以实时监测osd的状态,当监测到有故障osd时,利用重启判断脚本确定该osd是否满足重启条件,当该osd满足重启条件时,利用重启脚本重启osd,并且在重启过程中,通过存储节点监控磁盘内容加载的持续时间,osd启动过程的持续时间以及锁定副本osd磁盘的持续时间等参数,以判断重启进程是否正常,一旦任一持续时间超过预设阈值时,结束所述osd的重启进程。使得系统从osd故障定位到osd重启环境判断再到osd重启进程监测的整个流程均实现自动化从而减少人力投入,提高处理的及时性和效率,为ceph系统的运维工作带来更大的便利,并且能够避免人工疏漏,有效保证系统安全可靠运行。

需要说明的是,上述实施例提供的重启osd的系统与重启osd的方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

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

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

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