CN117311964A - 一种集中式多控存储集群添加节点的方法、装置及介质 - Google Patents

一种集中式多控存储集群添加节点的方法、装置及介质 Download PDF

Info

Publication number
CN117311964A
CN117311964A CN202311232947.0A CN202311232947A CN117311964A CN 117311964 A CN117311964 A CN 117311964A CN 202311232947 A CN202311232947 A CN 202311232947A CN 117311964 A CN117311964 A CN 117311964A
Authority
CN
China
Prior art keywords
cluster
node
candidate node
nodes
private information
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.)
Pending
Application number
CN202311232947.0A
Other languages
English (en)
Inventor
张一罡
赵鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN202311232947.0A priority Critical patent/CN117311964A/zh
Publication of CN117311964A publication Critical patent/CN117311964A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种集中式多控存储集群添加节点的方法、装置及介质,应用于云计算数据中心技术领域。本方法中,配置节点先接收候选节点发送的私有信息;然后对接收的私有信息进行预检查。若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端以便于集群端根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。本方案的有益效果是,将部分检查工作转移至配置节点,由配置节点进行预检查,集群端只需要在配置节点检查完成自后进行自身状态检查即可。相较于原方案中由集群端完成所有检查工作,本方案降低了集群端的线程资源占用,提高集群端的性能。

Description

一种集中式多控存储集群添加节点的方法、装置及介质
技术领域
本发明涉及云计算数据中心技术领域,特别是涉及一种集中式多控存储集群添加节点的方法、装置及介质。
背景技术
集中式存储***指存储介质集中布放的存储***,集群式存储***在物理形式上往往由多个完全相同的控制框组成,每个控制框内部存放完全相同的控制器。这些控制器是提供业务的最小单位,被称为节点,它们共同组成了存储集群,然后由存储集群对外提供统一的管理接口。存储集群在创建时,一般是在一个节点上先完成创建,然后再将其他可加入集群的节点自动拉入集群。在存储集群运行时,涉及到将节点拉入集群的过程,这个过程被称为“添加节点”。目前,在添加节点的过程中,是在节点***机柜后,由机柜上报集群端,然后通过集群端检查节点的私有信息,并让集群端完全控制节点进行添加。
即目前需要集群端持续处理节点添加业务,但集群端的资源有限,若长期被占用,会导致其他业务受影响。
由此可见,如何在集群添加节点的过程中,减少集群端的资源占用,是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种集中式多控存储集群添加节点的方法、装置及介质,以解决在集群添加节点的过程中集群端的资源被占用的问题。
为解决上述技术问题,本发明提供一种集中式多控存储集群添加节点的方法,应用于配置节点,所述配置节点为从集群中预先选取的节点;所述方法包括:
接收候选节点发送的私有信息;其中,所述候选节点为待加入集群的节点;
对所述私有信息进行预检查;
若预检查结果表征所述候选节点为合法候选节点,则将所述私有信息上报至集群端以便于所述集群端根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
一方面,所述对所述私有信息进行预检查包括以下方式中的任意一项或任意多项:
方式一:
监控自身接收的信息;
在接收到所述候选节点发送的所述私有信息后,则启动一次所述私有信息的预检查程序;
方式二:
监控计时器时间;
在计时器时间每过预设时长后从本地拉取接收的所述私有信息;
若本地存在所述私有信息,则启动一次所述私有信息的预检查程序。
另一方面,在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,还包括:
拉取包含集群标识的集群信息;
将所述集群信息发送至所述候选节点,以便于所述候选节点将所述集群标识保存至本地;其中,若所述候选节点重启后包含所述集群标识,则所述集群端将完整的集群状态同步至所述候选节点。
另一方面,所述对所述私有信息进行预检查包括以下方式中的任意一项或任意多项:
方式一:
根据所述私有信息确定所述候选节点对应的控制框;
遍历所有已加入集群的控制框;
若所述候选节点对应的控制框已加入集群,则表征所述候选节点为合法候选节点;
若所述候选节点对应的控制框未加入集群,则表征所述候选节点为非法候选节点;
方式二:
获取所述私有信息中的节点标识;
从本地拉取所述节点标识对应的计数标识;其中,所述计数标识根据所述节点标识记录对应的所述候选节点加入集群的次数;
比较所述候选节点加入集群的次数以及预设的次数阈值;
若所述候选节点加入集群的次数超过所述次数阈值,则表征所述候选节点为非法候选节点。
对应的,在所述获取所述私有信息中的节点标识之后,以及所述比较所述候选节点加入集群的次数以及预设的次数阈值之前,还包括:
从本地拉取所述节点标识对应的所述候选节点上一次加入集群的时间戳;
比较当前时刻与所述候选节点上一次加入集群的时刻;
若当前时刻与所述候选节点上一次加入集群的时刻之间的时间差值超过时间阈值,则将所述计数标识清零。
为解决上述技术问题,本发明还提供一种集中式多控存储集群添加节点的方法,应用于集群端,集群中预先选取有配置节点;所述方法包括:
监控所述配置节点,所述配置节点接收候选节点发送的私有信息并对所述私有信息进行预检查后,在预检查结果表征所述候选节点为合法候选节点时,上报所述私有信息至所述集群端;其中,所述候选节点为待加入集群的节点;
接收所述配置节点上报的所述私有信息;
根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
另一方面,所述根据所述私有信息对集群自身状态进行检查包括以下方式中的任意一项或任意多项:
方式一:
获取自身的集群内存规格字段;其中,所述集群内存规格字段为集群中当前最小节点的内存值;
根据所述私有信息确定所述候选节点的内存值;
比较所述候选节点的内存值与所述集群内存规格字段;
若所述候选节点的内存值大于或等于所述集群内存规格字段,则表征集群允许所述候选节点加入;
方式二:
在接收到所述私有信息后,遍历集群自身的所有节点;
若未找到正在删除的节点和/或刷缓存的节点,则表征集群允许所述候选节点加入。
另一方面,在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,还包括:
将所述候选节点的信息保存至本地;
将对应的所述候选节点设置为待加入状态,其中,处于所述待加入状态的所述候选节点禁止再次加入集群。
另一方面,所述候选节点发送所述私有信息至所述配置节点包括:
从控制板上读取节点标识、机柜标识以及集群标识;
将读取的所述节点标识、所述机柜标识以及所述集群标识加载至本地内存以形成私有信息;
通过对应的驱动模块建立与所述配置节点间的进行通信的链路;
利用建立的链路形成虚拟的数据交互通道;
将所述私有信息通过所述数据交互通道发送至所述配置节点。
为解决上述技术问题,本发明还提供一种集中式多控存储集群添加节点的装置,应用于配置节点,所述配置节点为从集群中预先选取的节点;所述装置包括:
第一接收模块,用于接收候选节点发送的私有信息;其中,所述候选节点为待加入集群的节点;
预检查模块,用于对所述私有信息进行预检查;
上报模块,用于若预检查结果表征所述候选节点为合法候选节点,则将所述私有信息上报至集群端以便于所述集群端根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
另一方面,所述集中式多控存储集群添加节点的装置还包括:拉取模块,用于在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,拉取包含集群标识的集群信息;
第一保存模块,用于将所述集群信息发送至所述候选节点,以便于所述候选节点将所述集群标识保存至本地;其中,若所述候选节点重启后包含所述集群标识,则所述集群端将完整的集群状态同步至所述候选节点。
为解决上述技术问题,本发明还提供一种集中式多控存储集群添加节点的装置,应用于集群端,集群中预先选取有配置节点;所述装置包括:
监控模块,用于监控所述配置节点,所述配置节点接收候选节点发送的私有信息并对所述私有信息进行预检查后,在预检查结果表征所述候选节点为合法候选节点时,上报所述私有信息至所述集群端;其中,所述候选节点为待加入集群的节点;
第二接收模块,用于接收所述配置节点上报的所述私有信息;
检查模块,用于根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
另一方面,所述集中式多控存储集群添加节点的装置还包括:第二保存模块,用于在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,将所述候选节点的信息保存至本地;
设置模块,用于将对应的所述候选节点设置为待加入状态,其中,处于所述待加入状态的所述候选节点禁止再次加入集群。
为解决上述技术问题,本发明还提供一种集中式多控存储集群添加节点的装置,包括:存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述集中式多控存储集群添加节点的方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述集中式多控存储集群添加节点的方法的步骤。
本发明所提供的一种集中式多控存储集群添加节点的方法,应用于配置节点,其中,配置节点为从集群中预先选取的节点,候选节点为待加入集群的节点。该方法中,配置节点先接收候选节点发送的私有信息;然后对接收的私有信息进行预检查,若预检查结果表征候选节点为非法候选节点,则直接禁止候选节点加入集群,降低了节点添加中途失败的几率,避免资源浪费。若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端以便于集群端根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。本方案的有益效果是,将部分检查工作转移至配置节点,由配置节点进行预检查,集群端只需要在配置节点检查完成自后进行自身状态检查即可。相较于原方案中由集群端完成所有检查工作,本方案降低了集群端的线程资源占用,提高集群端的性能。
此外,本发明还提供两种配置节点启动预检查程序的方式,分别为接收到私有信息触发,以及相隔预设时长后触发。接收到私有信息后触发能够保证私有信息及时进入预检查程序,以及及时进行后续步骤;而定时触发能够避免部分私有信息漏检的情况发生。而在候选节点重启之前,可只将包含集群标识的集群信息发送至节点,避免在候选节点与集群版本不一致时无法对其与集群信息进行解读的情况发生。本方案还提供了配置节点对私有信息进行预检查的两种具体方式,方式一为检查候选节点的控制框是否被包含于集群中,方式二为检查候选节点是否频繁加入集群中;通过上述检查,能够增加候选节点成功加入集群的几率。这里还提供了集群端根据私有信息对自身状态进行检查的两种方式,一是对比候选节点的内存值与自身节点最小内存值,保证候选节点的内存值不小于自身节点最小内存值,避免影响集群工作。二是寻找是否存在正在删除的节点和/或刷缓存的节点,避免其影响候选节点的加入。此外,还可提前将候选节点的信息保存至本地,而不是在候选节点重启之后再保存,此方式减少了集群的任务量,且另外增设了一个待加入状态,保证节点不会被重复加入。本方案还提供一种候选节点发送私有信息至配置节点的具体方式,保证私有信息正常发送。
本发明还提供了一种集中式多控存储集群添加节点的装置和计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种应用于配置节点的集中式多控存储集群添加节点的方法的流程图;
图2为本发明实施例提供的一种节点添加的整体流程图;
图3为本发明实施例提供的一种应用于集群端的集中式多控存储集群添加节点的方法的流程图;
图4为本发明实施例提供的应用于配置节点的集中式多控存储集群添加节点的装置的结构图;
图5为本发明实施例提供的应用于集群端的集中式多控存储集群添加节点的装置的结构图;
图6为本发明另一实施例提供的集中式多控存储集群添加节点的装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种集中式多控存储集群添加节点的方法、装置及介质,以解决在集群添加节点的过程中集群端的资源被占用的问题。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
集中式存储***指存储介质集中布放的存储***,通过光纤通道-存储区域网络(Fibre Channel-Storage Area Network,FC-SAN)或者以太网协议-存储区域网络(Internet Protocol-Storage Area Network,IP-SAN)形成存储区域网络。为了实现更强的性能和更高的稳定性,集群式存储***在物理形式上往往由多个完全相同的控制框组成,每个控制框内部存放完全相同的控制器。这些控制器是提供业务的最小单位,被称为节点,它们共同组成了存储集群,然后由存储集群对外提供统一的管理接口。存储集群在创建时,一般是在一个节点上先完成创建,然后再将其他可加入集群的节点自动拉入集群。而在存储集群运行时,节点可能因为多种原因离开集群,比如用户主动下电、节点因硬件故障而重启等,当节点离开集群后,必然需要通过一些方法再将节点重新拉入集群,以确保集群的完整性。以上无论是哪种情况,都涉及到将节点拉入集群的过程,这个过程被称为“添加节点”,所以“添加节点”也是所有存储集群必备的基础功能之一。但现有的自动添加节点功能易用性不好,并且还会影响集群的稳定性和性能。
为解决上述技术问题,本发明实施例提供一种集中式多控存储集群添加节点的方法,应用于配置节点。图1为本发明实施例提供的一种应用于配置节点的集中式多控存储集群添加节点的方法的流程图;如图1所示,该方法包括如下步骤:
S10:接收候选节点发送的私有信息。
S11:对私有信息进行预检查。
S12:若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端以便于集群端根据私有信息对集群自身状态进行检查。
其中,候选节点为待加入集群的节点,配置节点为从集群中预先选取的节点。另外,若最后的检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。
本发明将自动添加节点的触发条件转移至“配置节点”,由配置节点通过链路状态、定时器发起节点自动添加流程(即发起候选节点检查)。在原方案的基础上,本方案还能处理节点故障重启加入集群这种场景,同时减轻了集群端的业务压力。
下面以一具体的实现方式对本发明实施例的方案进行说明。图2为本发明实施例提供的一种节点添加的整体流程图;如图2所示,该流程包括如下步骤:S20:上报登录信息并形成链路。S21:私有信息交互。S22:候选节点检查。S23:判断候选节点所在控制框是否已加入集群;若是,则进入步骤S24,若否,则进入步骤S26。S24:进行稳定性检查。S25:替换集群标识。S26:执行添加节点命令,替换集群标识,并将集群标识写入控制板。S27:判断候选节点软件版本是否与集群一致;若是,则进入步骤S28,若否,则进入步骤S29。S28:重启候选节点。S29:进行版本同步。S30:集群状态同步。
当一个节点启动后,会进入如下动作:1、产品属性加载,即将节点的唯一标识(World Wide Node Number,WWNN)、节点所在机柜的唯一标识(Enclosure_Identify)、集群的唯一标识(Cluster ID)等信息从控制板上读出并加载到内存中,这些产品属性在出厂时即储存在控制板上。2、登录信息(Login)上报,若节点间存在物理连接,那么对应的驱动模块(如FC卡驱动、网际协议RDMA over Converged Ethernet(RoCE)网卡驱动)会识别到物理连接并上报Login,形成链路。3、形成数据通道,驱动模块上报的Login会进一步通知给节点的通信管理模块,通信管理模块再形成一条虚拟的数据交互通道,专门用于传输数据。4、私有信息交互,节点将WWNN、Enclosure_Identify、Cluster ID等私有信息通过通信管理模块发送到集群中的节点,同样,集群中的节点也会返回自己的私有信息给这个节点,这些信息保存在每个节点的节点管理模块中。5、发起候选节点检查,即候选节点的发现,集群中有一个负责管理其他节点的特殊节点,被称为“配置节点”,每当配置节点收到其他节点的私有信息后,都会发起候选节点检查;除此之外,配置节点中运行有候选检查定时器,每隔预设时长(如15分钟)也会对已收到的私有信息进行候选节点检查。一般可通过下表的内容判断当前的节点是否是合法候选节点。
表1Cluster ID含义表
节点的Cluster ID通常是个64位无符号整型,它的高8位用于记录节点的状态。配置节点通过”0b11111111”掩码和Cluster ID的高8位进行与操作,这样就能够获取ClusterID高8位的数值,然后根据数值确认节点是否处于候选状态,从而完成候选节点发现过程。
找到候选节点之后,进入自动添加节点的过程。集中式存储设备在物理形态上是由多个控制框组成的,控制框内部节点的行为是完全一致的,所以当控制框中已有节点在集群中时,框内其他节点也应当被自动加入集群,这个过程也被叫做自动添加节点。自动添加点整体流程分为:配置节点预检查->集群端检查->集群端设置节点属性->配置节点发起添加动作->候选节点加入集群。
配置节点预检查包括控制框合法性检查,当配置节点检测到候选节点后,遍历所有已加入集群的控制框,检查该候选节点的Enclosure_Identify是否和某个控制框的Enclosure_Identify相同。如果集群存在Enclosure_Identify相同的控制框,则说明候选节点属于该控制框,可以自动加入集群。此外,在将节点拉入集群之前,还要对节点进行稳定性检查,过程如下:配置节点以WWNN为标识记录所有节点加入集群的次数,节点每加入一次,该WWNN对应的计数标识node_add_count就加一;当node_add_count到达3之后,则拒绝该节点加入集群。而除了记录node_add_count,配置节点还会记录节点最后一次加入集群的时间戳,若本次加入集群的时间距离上次加入集群的时间戳已过去24小时,则可将node_add_count清零。以上设计能够确保反复重启的节点将被集群拒绝加入,从而保障集群的稳定性。
配置节点预检查通过后,需要将候选节点加入集群事件上报给集群端,由集群端继续进行检查。一是内存容量检查,集群端会维护一个集群内存规格字段,其值为集群中当前内存最小的节点的内存值。新增加的节点的内存值必须大于或等于该值,否则可能会影响集群功能的使用,因此会被拒绝加入集群。二是集群内节点状态检查,集群端会维护所有节点的状态,当有新节点添加时,遍历所有集群中的节点,检查是否有节点正在删除、刷缓存,如果存在上述节点,为了保证业务的稳定,也会拒绝候选节点加入。集群端检查完毕后,所有的检查项都已完成,此时集群端会直接将节点的一些信息写入集群,包括:节点名称(node name)、节点标识(node id)、WWNN等,最后将节点设置为待加入(adding)状态,防止重复添加。
同时,配置节点会将Cluster ID等集群信息发送给待添加的候选节点,候选节点将新的Cluster ID覆盖原有的Cluster ID并持久化保存在本地,然后重启。这里发送的集群信息是以Cluster ID为主的一小部分集群信息,目的是防止候选节点的版本与集群不一致时无法对差异的集群信息解读。最后,候选节点将进行重启,候选节点重启后,若节点的Cluster ID和集群的Cluster ID相同,表明该节点已经加入集群,那么集群端将同步完整的集群状态给该节点,状态同步后,该节点将和集群中其他节点达到状态一致,至此节点添加过程结束。
本发明实现了一种集中式多控存储添加节点的方案,节点添加是存储***最基础的功能之一,本方案作为其中一种实现方式,能够为设计存储架构提供思路。并且本方案实现简单,功能完备,能够节省人力,提高存储产品的竞争力。
本发明实施例所提供的一种集中式多控存储集群添加节点的方法,应用于配置节点,其中,配置节点为从集群中预先选取的节点,候选节点为待加入集群的节点。该方法中,配置节点先接收候选节点发送的私有信息;然后对接收的私有信息进行预检查,若预检查结果表征候选节点为非法候选节点,则直接禁止候选节点加入集群,降低了节点添加中途失败的几率,避免资源浪费。若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端以便于集群端根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。本方案的有益效果是,将部分检查工作转移至配置节点,由配置节点进行预检查,集群端只需要在配置节点检查完成自后进行自身状态检查即可。相较于原方案中由集群端完成所有检查工作,本方案降低了集群端的线程资源占用,提高集群端的性能。
上述实施例中并未限定何时进行私有信息的预检查,本发明实施例提供几种具体的实现方案,对私有信息进行预检查包括以下方式中的任意一项或任意多项。方式一:监控自身接收的信息,在接收到候选节点发送的私有信息后,则启动一次私有信息的预检查程序。方式二:监控计时器时间,在计时器时间每过预设时长后从本地拉取接收的私有信息,若本地存在私有信息,则启动一次私有信息的预检查程序。接收到私有信息后触发预检查能够保证私有信息及时进入预检查程序,以及及时进行后续步骤;而定时触发预检查能够避免部分私有信息漏检的情况发生。另外,本发明也不对预检查的具体方式作限定,其中,对私有信息进行预检查包括以下方式中的任意一项或任意多项。方式一:根据私有信息确定候选节点对应的控制框,遍历所有已加入集群的控制框,若候选节点对应的控制框已加入集群,则表征候选节点为合法候选节点,若候选节点对应的控制框未加入集群,则表征候选节点为非法候选节点,此方案能够增加候选节点成功加入集群的几率。方式二:获取私有信息中的节点标识,从本地拉取节点标识对应的计数标识;其中,计数标识根据节点标识记录对应的候选节点加入集群的次数。然后比较候选节点加入集群的次数以及预设的次数阈值;若候选节点加入集群的次数超过次数阈值,则表征候选节点为非法候选节点。则对应的,在获取私有信息中的节点标识之后,以及比较候选节点加入集群的次数以及预设的次数阈值之前,还包括:从本地拉取节点标识对应的候选节点上一次加入集群的时间戳;比较当前时刻与候选节点上一次加入集群的时刻;若当前时刻与候选节点上一次加入集群的时刻之间的时间差值超过时间阈值,则将计数标识清零。此方案能够确保反复重启的节点将被集群拒绝加入,从而保障集群的稳定性。
此外,在得到表征集群允许候选节点加入的检查结果之后,以及候选节点进行重启之前,还可拉取包含集群标识Cluster ID的集群信息,然后将集群信息发送至候选节点,以便于候选节点将集群标识保存至本地;其中,若候选节点重启后包含集群标识,则集群端将完整的集群状态同步至候选节点。这里只发送包含Cluster ID等少量的集群信息,能避免在候选节点与集群版本不一致时无法对其与集群信息进行解读的情况发生。
为解决上述技术问题,本发明实施例还提供一种集中式多控存储集群添加节点的方法,应用于集群端,其中,集群中预先选取有配置节点。图3为本发明实施例提供的一种应用于集群端的集中式多控存储集群添加节点的方法的流程图;如图3所示,该方法包括如下步骤:
S31:监控配置节点。
配置节点接收候选节点发送的私有信息并对私有信息进行预检查后,在预检查结果表征候选节点为合法候选节点时,上报私有信息至集群端;其中,候选节点为待加入集群的节点。
S32:接收配置节点上报的私有信息。
S33:根据私有信息对集群自身状态进行检查。
其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。
本发明实施例所提供的一种集中式多控存储集群添加节点的方法,应用于集群端,其中,配置节点为从集群中预先选取的节点,候选节点为待加入集群的节点。该方法中,配置节点先接收候选节点发送的私有信息;然后对接收的私有信息进行预检查,若预检查结果表征候选节点为非法候选节点,则直接禁止候选节点加入集群,降低了节点添加中途失败的几率,避免资源浪费。若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端。集群端会监控配置节点以便于及时接收配置节点上报的私有信息,然后根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。本方案的有益效果是,将部分检查工作转移至配置节点,由配置节点进行预检查,集群端只需要在配置节点检查完成自后进行自身状态检查即可。相较于原方案中由集群端完成所有检查工作,本方案降低了集群端的线程资源占用,提高集群端的性能。
上述实施例中并未限定集群端的检查内容,在实际应用中,在添加候选节点时如果有其他节点正在删除、刷缓存时去添加节点,会导致***性能波动,且集群如果添加了内存规格较小的节点,后续业务处理容易出现内存不足的问题。因此,集群端根据私有信息对集群自身状态进行检查可包括以下方式中的任意一项或任意多项,方式一:获取自身的集群内存规格字段;其中,集群内存规格字段为集群中当前最小节点的内存值;然后根据私有信息确定候选节点的内存值,并比较候选节点的内存值与集群内存规格字段;若候选节点的内存值大于或等于集群内存规格字段,则表征集群允许候选节点加入。方式二:在接收到私有信息后,遍历集群自身的所有节点,若未找到正在删除的节点和/或刷缓存的节点,则表征集群允许候选节点加入,此方案能避免影响集群的正常运作。
原有方案中,集群端准备添加节点时,让对应机柜发起指令,使对应节点重启,然后集群再保存节点信息,相当于集群需要发起二次处理,中间有线程切换开销,浪费线程资源。而本发明实施例提供的方案,在得到表征集群允许候选节点加入的检查结果之后,以及候选节点进行重启之前,可先将候选节点的信息保存至本地;并将对应的候选节点设置为待加入状态,其中,处于待加入状态的候选节点禁止再次加入集群。通过本方案,能够减少集群的动作,并且不会让候选节点重复加入。
实际应用时,候选节点发送私有信息至配置节点的过程并不作限定,可以先从控制板上读取节点标识WWNN、机柜标识Enclosure_Identify以及集群标识Cluster ID,然后将读取的节点标识、机柜标识以及集群标识加载至本地内存以形成私有信息。通过对应的驱动模块建立与配置节点间的进行通信的链路,并利用建立的链路形成虚拟的数据交互通道,最后将私有信息通过数据交互通道发送至配置节点。其中,通信管理模块维护集群内的虚拟通信通道,负责添加节点过程中的数据传递;节点管理模块保存节点的各种产品属性信息,用于在添加节点过程中进行校验。集群标识Cluster ID储存在控制板上,它既是集群的唯一标识,又通过一些标识位表明了节点的状态;这些状态将成为节点能否加入集群的条件。机柜标识Enclosure_Identify作为控制框的唯一标识,限制了只有当控制框加入集群后,同框的节点才能自动加入集群,使用户可以自主决定是否组建多控制框集群。配置节点可根据节点标识WWNN记录节点加入集群的次数,从而对节点进行稳定性检查,确保反复重启的节点将被集群拒绝加入,从而保障集群的稳定性。
此外,在某些情况下,一个即将加入集群的候选节点,它的软件版本和集群版本可能是不一样的,比如某个控制器硬件故障后,需要临时更换新的控制器,但更换上来的控制器可能预装有其他软件版本。那么在这种情况下,在将该候选节点加入集群时,需要同步该节点的软件版本至集群版本。在实际添加节点时,可根据版本号判断是否需要同步软件版本。版本同步时,通过通信管理模块完成软件包的传递,版本同步后节点会重启并加入集群。无论是主动添加节点还是自动添加节点,配置节点在重启候选节点之前,都会将自己的软件版本号通过通信管理模块发送给候选节点,如果候选节点判断自己的软件版本号和配置节点发送过来的版本号不一致,则不再重启,而是进行版本同步流程。在版本同步时,候选节点向配置节点发送版本同步请求,配置节点收到请求后,将当前版本的软件包通过通信管理模块发送给候选节点,候选节点安装完软件包后会再次重启,重启之后的候选节点从控制板上读取的Cluster ID和集群的Cluster ID一致,所以后续流程和自动添加节点类似,会同步集群状态并加入集群。
而如果某个控制框从未加入过集群,那么必须使用命令主动将该控制框中的节点加入集群,这样设定是考虑到,用户可以自主决定是否组建多控制框集群。首先执行添加节点命令。在配置节点执行”addnode”命令,并指定候选节点的WWNN。配置节点会根据WWNN在节点管理模块中查找对应的候选节点。然后是Cluster ID替换,此步骤和自动添加节点流程一样。之后将Cluster ID写入控制板,在主动添加节点时,会额外将集群的Cluster ID重新写到新加入控制框的控制板上,这样该控制框中的节点发生异常重启后,仍然会保留有正确的Cluster ID,从而在故障恢复后能自动加入集群。最后的候选节点重启步骤和自动添加节点流程一样。
在上述实施例中,对于集中式多控存储集群添加节点的方法进行了详细描述,本发明还提供集中式多控存储集群添加节点的装置对应的实施例。需要说明的是,本发明从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
基于功能模块的角度,本实施例提供一种集中式多控存储集群添加节点的装置,应用于配置节点,配置节点为从集群中预先选取的节点。图4为本发明实施例提供的应用于配置节点的集中式多控存储集群添加节点的装置的结构图,如图4所示,该装置包括:
第一接收模块10,用于接收候选节点发送的私有信息;其中,候选节点为待加入集群的节点;
预检查模块11,用于对私有信息进行预检查;
上报模块12,用于若预检查结果表征候选节点为合法候选节点,则将私有信息上报至集群端以便于集群端根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
在一些实施例中,集中式多控存储集群添加节点的装置还包括:拉取模块,用于在得到表征集群允许候选节点加入的检查结果之后,以及候选节点进行重启之前,拉取包含集群标识的集群信息;
第一保存模块,用于将集群信息发送至候选节点,以便于候选节点将集群标识保存至本地;其中,若候选节点重启后包含集群标识,则集群端将完整的集群状态同步至候选节点。
本实施例提供的集中式多控存储集群添加节点的装置,与上述方法对应,故具有与上述方法相同的有益效果。
基于功能模块的角度,本实施例还提供一种集中式多控存储集群添加节点的装置,应用于集群端,集群中预先选取有配置节点。图5为本发明实施例提供的应用于集群端的集中式多控存储集群添加节点的装置的结构图,如图5所示,该装置包括:
监控模块13,用于监控配置节点,配置节点接收候选节点发送的私有信息并对私有信息进行预检查后,在预检查结果表征候选节点为合法候选节点时,上报私有信息至集群端;其中,候选节点为待加入集群的节点;
第二接收模块14,用于接收配置节点上报的私有信息;
检查模块15,用于根据私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许候选节点加入,则候选节点进行重启以加入集群。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
在一些实施例中,集中式多控存储集群添加节点的装置还包括:第二保存模块,用于在得到表征集群允许候选节点加入的检查结果之后,以及候选节点进行重启之前,将候选节点的信息保存至本地;
设置模块,用于将对应的候选节点设置为待加入状态,其中,处于待加入状态的候选节点禁止再次加入集群。
本实施例提供的集中式多控存储集群添加节点的装置,与上述方法对应,故具有与上述方法相同的有益效果。
基于硬件的角度,本实施例提供了另一种集中式多控存储集群添加节点的装置,图6为本发明另一实施例提供的集中式多控存储集群添加节点的装置的结构图,如图6所示,集中式多控存储集群添加节点的装置包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的集中式多控存储集群添加节点的方法的步骤。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的集中式多控存储集群添加节点的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作***202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作***202可以包括Windows、Unix、Linux等。数据203可以包括但不限于集中式多控存储集群添加节点的方法涉及到的数据等。
在一些实施例中,集中式多控存储集群添加节点的装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图中示出的结构并不构成对集中式多控存储集群添加节点的装置的限定,可以包括比图示更多或更少的组件。
本发明实施例提供的集中式多控存储集群添加节点的装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:集中式多控存储集群添加节点的方法。
本实施例提供的集中式多控存储集群添加节点的装置,与上述方法对应,故具有与上述方法相同的有益效果。
最后,本发明还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例描述的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例提供的计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
以上对本发明所提供的一种集中式多控存储集群添加节点的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (12)

1.一种集中式多控存储集群添加节点的方法,其特征在于,应用于配置节点,所述配置节点为从集群中预先选取的节点;所述方法包括:
接收候选节点发送的私有信息;其中,所述候选节点为待加入集群的节点;
对所述私有信息进行预检查;
若预检查结果表征所述候选节点为合法候选节点,则将所述私有信息上报至集群端以便于所述集群端根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
2.根据权利要求1所述的集中式多控存储集群添加节点的方法,其特征在于,所述对所述私有信息进行预检查包括以下方式中的任意一项或任意多项:
方式一:
监控自身接收的信息;
在接收到所述候选节点发送的所述私有信息后,则启动一次所述私有信息的预检查程序;
方式二:
监控计时器时间;
在计时器时间每过预设时长后从本地拉取接收的所述私有信息;
若本地存在所述私有信息,则启动一次所述私有信息的预检查程序。
3.根据权利要求1所述的集中式多控存储集群添加节点的方法,其特征在于,在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,还包括:
拉取包含集群标识的集群信息;
将所述集群信息发送至所述候选节点,以便于所述候选节点将所述集群标识保存至本地;其中,若所述候选节点重启后包含所述集群标识,则所述集群端将完整的集群状态同步至所述候选节点。
4.根据权利要求1至3任意一项所述的集中式多控存储集群添加节点的方法,其特征在于,所述对所述私有信息进行预检查包括以下方式中的任意一项或任意多项:
方式一:
根据所述私有信息确定所述候选节点对应的控制框;
遍历所有已加入集群的控制框;
若所述候选节点对应的控制框已加入集群,则表征所述候选节点为合法候选节点;
若所述候选节点对应的控制框未加入集群,则表征所述候选节点为非法候选节点;
方式二:
获取所述私有信息中的节点标识;
从本地拉取所述节点标识对应的计数标识;其中,所述计数标识根据所述节点标识记录对应的所述候选节点加入集群的次数;
比较所述候选节点加入集群的次数以及预设的次数阈值;
若所述候选节点加入集群的次数超过所述次数阈值,则表征所述候选节点为非法候选节点。
对应的,在所述获取所述私有信息中的节点标识之后,以及所述比较所述候选节点加入集群的次数以及预设的次数阈值之前,还包括:
从本地拉取所述节点标识对应的所述候选节点上一次加入集群的时间戳;
比较当前时刻与所述候选节点上一次加入集群的时刻;
若当前时刻与所述候选节点上一次加入集群的时刻之间的时间差值超过时间阈值,则将所述计数标识清零。
5.一种集中式多控存储集群添加节点的方法,其特征在于,应用于集群端,集群中预先选取有配置节点;所述方法包括:
监控所述配置节点,所述配置节点接收候选节点发送的私有信息并对所述私有信息进行预检查后,在预检查结果表征所述候选节点为合法候选节点时,上报所述私有信息至所述集群端;其中,所述候选节点为待加入集群的节点;
接收所述配置节点上报的所述私有信息;
根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
6.根据权利要求5所述的集中式多控存储集群添加节点的方法,其特征在于,所述根据所述私有信息对集群自身状态进行检查包括以下方式中的任意一项或任意多项:
方式一:
获取自身的集群内存规格字段;其中,所述集群内存规格字段为集群中当前最小节点的内存值;
根据所述私有信息确定所述候选节点的内存值;
比较所述候选节点的内存值与所述集群内存规格字段;
若所述候选节点的内存值大于或等于所述集群内存规格字段,则表征集群允许所述候选节点加入;
方式二:
在接收到所述私有信息后,遍历集群自身的所有节点;
若未找到正在删除的节点和/或刷缓存的节点,则表征集群允许所述候选节点加入。
7.根据权利要求6所述的集中式多控存储集群添加节点的方法,其特征在于,在得到表征集群允许所述候选节点加入的所述检查结果之后,以及所述候选节点进行重启之前,还包括:
将所述候选节点的信息保存至本地;
将对应的所述候选节点设置为待加入状态,其中,处于所述待加入状态的所述候选节点禁止再次加入集群。
8.根据权利要求6所述的集中式多控存储集群添加节点的方法,其特征在于,所述候选节点发送所述私有信息至所述配置节点包括:
从控制板上读取节点标识、机柜标识以及集群标识;
将读取的所述节点标识、所述机柜标识以及所述集群标识加载至本地内存以形成私有信息;
通过对应的驱动模块建立与所述配置节点间的进行通信的链路;
利用建立的链路形成虚拟的数据交互通道;
将所述私有信息通过所述数据交互通道发送至所述配置节点。
9.一种集中式多控存储集群添加节点的装置,其特征在于,应用于配置节点,所述配置节点为从集群中预先选取的节点;所述装置包括:
第一接收模块,用于接收候选节点发送的私有信息;其中,所述候选节点为待加入集群的节点;
预检查模块,用于对所述私有信息进行预检查;
上报模块,用于若预检查结果表征所述候选节点为合法候选节点,则将所述私有信息上报至集群端以便于所述集群端根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
10.一种集中式多控存储集群添加节点的装置,其特征在于,应用于集群端,集群中预先选取有配置节点;所述装置包括:
监控模块,用于监控所述配置节点,所述配置节点接收候选节点发送的私有信息并对所述私有信息进行预检查后,在预检查结果表征所述候选节点为合法候选节点时,上报所述私有信息至所述集群端;其中,所述候选节点为待加入集群的节点;
第二接收模块,用于接收所述配置节点上报的所述私有信息;
检查模块,用于根据所述私有信息对集群自身状态进行检查;其中,若检查结果表征集群允许所述候选节点加入,则所述候选节点进行重启以加入集群。
11.一种集中式多控存储集群添加节点的装置,其特征在于,包括存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的集中式多控存储集群添加节点的方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的集中式多控存储集群添加节点的方法的步骤。
CN202311232947.0A 2023-09-22 2023-09-22 一种集中式多控存储集群添加节点的方法、装置及介质 Pending CN117311964A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311232947.0A CN117311964A (zh) 2023-09-22 2023-09-22 一种集中式多控存储集群添加节点的方法、装置及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311232947.0A CN117311964A (zh) 2023-09-22 2023-09-22 一种集中式多控存储集群添加节点的方法、装置及介质

Publications (1)

Publication Number Publication Date
CN117311964A true CN117311964A (zh) 2023-12-29

Family

ID=89296493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311232947.0A Pending CN117311964A (zh) 2023-09-22 2023-09-22 一种集中式多控存储集群添加节点的方法、装置及介质

Country Status (1)

Country Link
CN (1) CN117311964A (zh)

Similar Documents

Publication Publication Date Title
CN109831500B (zh) Kubernetes集群中配置文件与Pod的同步方法
CN108737548B (zh) 分布式web微服务容器集群架构***及其实现方法
US9984140B1 (en) Lease based leader election system
JP2002324047A (ja) 分散クライアント/サーバ環境での自動化セッション・リソース・クリーンアップの方法およびシステム。
CN109639794A (zh) 一种有状态集群恢复方法、装置、设备及可读存储介质
EP3418877A1 (en) Data writing and reading method and apparatus, and cloud storage system
CN109101341A (zh) 分布式锁的分配方法及设备
CN110764963B (zh) 一种服务异常处理方法、装置及设备
CN111290834A (zh) 一种基于云管理平台实现业务高可用的方法、装置及设备
CN110968603B (zh) 一种数据访问方法及装置
CN103530193A (zh) 用于调节应用进程的方法和设备
CN109697112B (zh) 分布式集约化一站式作业***和实现方法
CN103024065A (zh) 用于云存储***的***配置管理方法
CN114064414A (zh) 一种高可用的集群状态监控方法及***
WO2020063550A1 (zh) 策略决策方法及装置、***、存储介质、策略决策单元及集群
CN109582459A (zh) 应用的托管进程进行迁移的方法及装置
CN106331081B (zh) 一种信息同步方法及装置
US7499987B2 (en) Deterministically electing an active node
CN115357198B (zh) 存储卷的挂载方法及装置、存储介质及电子设备
CN111342986B (zh) 分布式节点管理方法及装置、分布式***、存储介质
EP2110748A2 (en) Cluster control apparatus, control system, control method, and control program
CN110427245A (zh) 管理虚拟机方法和装置
CN105391755A (zh) 一种分布式***中数据处理方法、装置及***
CN108833169A (zh) 一种节点上线管理方法和节点
CN109510730A (zh) 分布式***及其监控方法、装置、电子设备及存储介质

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