一种内存申请方法、装置、电子设备和介质

著录项
  • CN202010752655.X
  • 20200730
  • CN111881067A
  • 20201103
  • 北京浪潮数据技术有限公司
  • 侯红生;刘文志
  • G06F12/0871
  • G06F12/0871 G06F11/14

  • 北京市海淀区上地信息路2号C栋5层
  • 北京(11)
  • 北京集佳知识产权代理有限公司
  • 王云晓
摘要
本申请提供了一种内存申请方法、装置、电子设备和介质,该方法包括:在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;若对端节点发生故障,则创建与对端节点对应第一缓存分区;根据第一缓存分区发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。本申请集中的两节点同时故障后的恢复过程中,本地节点在感知对端节点二次故障后,在本地节点创建对端节点的第一缓存分区并为申请第一内存,能够在对端节点二次故障后,本地节点能够代替对端节点申请到内存,保证了缓存分区不丢失,避免了由于存在单分区申请不到内存的情况造成的删除分区造成故障的问题。
权利要求

1.一种内存申请方法,其特征在于,包括:

在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区;

根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存。

2.根据权利要求1所述的内存申请方法,其特征在于,还包括:

创建第二缓存分区;

根据所述第二缓存分区发送第二内存申请请求至所述存储设备,以便所述存储设备为所述第二缓存分区分配第二内存。

3.根据权利要求1所述的内存申请方法,其特征在于,所述本地节点判断对端节点是否发生故障,包括:

判断在预设时间内是否接收到所述对端节点的信息;

若没有接收到所述对端节点的信息,则确定所述对端节点故障。

4.根据权利要求1所述的内存申请方法,其特征在于,所述根据所述第一缓存分区发送第一内存申请请求至存储设备之后,还包括:

当所述对端节点加入所述集后,所述本地节点删除所述第一缓存分区,以使所述对端节点创建缓存分区并申请对应的内存。

5.根据权利要求1所述的内存申请方法,其特征在于,所述若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区,包括:

若所述对端节点发生故障,则接收到所述对端节点发送的中间状态值;

将所述中间状态值进行修改,并创建与所述对端节点对应的所述第一缓存分区;

对应的,所述根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存,包括:

根据所述第一缓存分区和修改过的所述中间状态值发送所述第一内存申请请求至所述存储设备,以便所述存储设备为所述第一缓存分区分配所述第一内存。

6.根据权利要求5所述的内存申请方法,其特征在于,所述存储设备为所述第一缓存分区分配所述第一内存,包括:

所述存储设备判断所述对端节点是否创建过缓存分区;

若所述对端节点创建过所述缓存分区,则根据修改过的所述中间状态值判断所述对端节点的标志位是否恢复;

若所述对端节点的所述标志位恢复,则为所述第一缓存分区分配所述第一缓存。

7.一种内存申请装置,其特征在于,包括:

判断模块,用于在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

第一缓存分区创建模块,用于若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区;

请求发送模块,用于根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存。

8.根据权利要求7所述的内存申请装置,其特征在于,还包括:

第二缓存分区创建模块,用于创建第二缓存分区;

第二内存申请请求发送模块,用于根据所述第二缓存分区发送第二内存申请请求至所述存储设备,以便所述存储设备为所述第二缓存分区分配第二内存。

9.一种电子设备,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述内存申请方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述内存申请方法的步骤。

说明书
技术领域

本申请涉及内存申请技术领域,特别涉及一种内存申请方法、装置、电子设备和计算机可读存储介质。

对于多控存储设备,如果IO集中的两个节点都不在集中,会触发二次故障恢复流程。在二次故障恢复流程中,如果某个节点在恢复的过程中再次触发其他的故障,例如租约超期,SSD单分区就会申请不到内存,导致删除分区的时候发生故障,无法正常的使用SSD的加速功能。

因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前需要解决的问题。

本申请的目的是提供一种内存申请方法、装置、电子设备和计算机可读存储介质,能够在对端节点二次故障后,本地节点能够代替对端节点申请到内存,避免了由于存在单分区申请不到内存的情况造成的删除分区造成故障的问题。其具体方案如下:

本申请提供了一种内存申请方法,包括:

在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区;

根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存。

优选地,还包括:

创建第二缓存分区;

根据所述第二缓存分区发送第二内存申请请求至所述存储设备,以便所述存储设备为所述第二缓存分区分配第二内存。

优选地,所述本地节点判断对端节点是否发生故障,包括:

判断在预设时间内是否接收到所述对端节点的信息;

若没有接收到所述对端节点的信息,则确定所述对端节点故障。

优选地,所述根据所述第一缓存分区发送第一内存申请请求至存储设备之后,还包括:

当所述对端节点加入所述集后,所述本地节点删除所述第一缓存分区,以使所述对端节点创建缓存分区并申请对应的内存。

优选地,所述若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区,包括:

若所述对端节点发生故障,则接收到所述对端节点发送的中间状态值;

将所述中间状态值进行修改,并创建与所述对端节点对应的所述第一缓存分区;

对应的,所述根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存,包括:

根据所述第一缓存分区和修改过的所述中间状态值发送所述第一内存申请请求至所述存储设备,以便所述存储设备为所述第一缓存分区分配所述第一内存。

优选地,所述存储设备为所述第一缓存分区分配所述第一内存,包括:

所述存储设备判断所述对端节点是否创建过缓存分区;

若所述对端节点创建过所述缓存分区,则根据修改过的所述中间状态值判断所述对端节点的标志位是否恢复;

若所述对端节点的所述标志位恢复,则为所述第一缓存分区分配所述第一缓存。

本申请提供了一种内存申请装置,包括:

判断模块,用于在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

第一缓存分区创建模块,用于若所述对端节点发生故障,则创建与所述对端节点对应第一缓存分区;

请求发送模块,用于根据所述第一缓存分区发送第一内存申请请求至存储设备,以便所述存储设备为所述第一缓存分区分配第一内存。

优选地,还包括:

第二缓存分区创建模块,用于创建第二缓存分区;

第二内存申请请求发送模块,用于根据所述第二缓存分区发送第二内存申请请求至所述存储设备,以便所述存储设备为所述第二缓存分区分配第二内存。

本申请提供了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述内存申请方法的步骤。

本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述内存申请方法的步骤。

本申请提供了一种内存申请方法,包括:在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;若对端节点发生故障,则创建与对端节点对应第一缓存分区;根据第一缓存分区发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。

可见,本申请集中的两节点同时故障后的恢复过程中,本地节点在感知对端节点二次故障后,在本地节点创建对端节点的第一缓存分区并为申请第一内存,能够在对端节点二次故障后,本地节点能够代替对端节点申请到内存,保证了缓存分区不丢失,避免了由于存在单分区申请不到内存的情况造成的删除分区造成故障的问题。

本申请同时还提供了一种内存申请装置、电子设备和计算机可读存储介质,均具有上述有益效果,在此不再赘述。

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

图1为本申请实施例提供的一种内存申请方法的流程图;

图2为本申请实施例提供的一种内存申请装置的结构示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

对于多控存储设备,如果IO集中的两个节点都不在集中,会触发二次故障恢复流程。在二次故障恢复流程中,如果某个节点在恢复的过程中再次触发其他的故障,例如租约超期,SSD单分区就会申请不到内存,导致删除分区的时候发生故障,无法正常的使用SSD的加速功能。

基于上述技术问题,本实施例提供一种内存申请方法,能够在对端节点二次故障后,本地节点能够代替对端节点申请到内存,保证了缓存分区不丢失,避免了由于存在单分区申请不到内存的情况造成的删除分区造成故障的问题,具体请参考图1,图1为本申请实施例提供的一种内存申请方法的流程图,具体包括:

S101、在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

在多控存储设备中,集即IO集包括多对节点和存储设备,节点均是成对存在,该节点指的是具有SSD单分区的节点,存储设备为节点分配内存。当集中的两节点均不在集中,也就是两个节点(包括本地节点和对端节点)同时发生故障退出集。此时会触发T2恢复流程,在T2恢复流程中,即在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障,此时本实施例中默认本地节点以完成了故障恢复,不会再次发生故障,可以理解的是,本实施例中的本地节点和对端节点可以互换,也就是说,本地节点作为新的对端节点,对端节点作为新的本地节点。

可以理解的是,对端节点在节点恢复过程中再次出发了其他的故障,产生了二次故障或者多次故障,该故障包括但是不限定于租约超期,此时SSD单分区申请不到内存。

本实施例不对判断对端节点是否发生故障的方式进行限定,用户可自定义设置,只要是能够实现本实施例的目的即可。

在一种可实现的实施方式中,本地节点判断对端节点是否发生故障,包括:判断在预设时间内是否接收到对端节点的信息;若没有接收到对端节点的信息,则确定对端节点故障。

其中,本地节点会定时与对端节点进行通信,如果在预设时间内接收到对端节点的信息,则确定对端节点恢复正常,如果在预设时间内没有接收到对端节点的信息,则确定对端节点故障。本实施例不对预设时间进行限定,可以是5s、10s或者其他时间,只要是能够实现本实施例的目的即可。

在另一种可实现的实施方式中,本地节点判断对端节点是否发生故障,包括:获取存储设备下发的各节点状态列表,根据各节点状态列表确定对端节点是否发生故障。

S102、若对端节点发生故障,则创建与对端节点对应第一缓存分区;

如果对端节点发生故障,本地节点创建与对端节点对应的第一缓存分区。

如果对端节点没有发生故障,则本地节点建立本地节点的缓存分区,并申请内存,对端节点建立对端节点的缓存分区,并申请内存。

S103、根据第一缓存分区发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。

其中,将第一缓存分区对应的第一内存申请请求发送至存储设备以使存储设备为第一缓存分区分配第一内存。本实施例中存储设备具体可以是存储池。

具体的,在触发T2恢复的流程中,为所有存在的SSD单分区(集中的存储节点)新增第一标志位,表明在恢复过程中要为这些存在的缓存分区申请内存。在两个节点T2恢复的流程中,一个节点发生故障再次退出集,存活的节点(本地节点)感知到另一个节点(对端节点)退出集,就会根据标志位,将会为属于对端节点上的缓存分区申请内存,保证为两个节点上缓存分区申请的总内存不变。如对端节点能够正常的加入集不需要再次为缓存分区申请内存;如果对端节点不能够加入集,存活的节点(本地节点)将属于对端节点的第一缓存分区新建在本地节点,并且为新建的第一缓存分区申请内存。

具体的,若对端节点发生故障,则创建与对端节点对应第一缓存分区,包括:

若对端节点发生故障,则接收到对端节点发送的中间状态值;

将中间状态值进行修改,并创建与对端节点对应的第一缓存分区;

对应的,根据第一缓存分区发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存,包括:

根据第一缓存分区和修改过的中间状态值发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。

其中,如果对端节点能够正常的加入集,不需要额外的增加适配流程;如果对端节点不能够正常的加入集,本地节点需要新增处理流程申请对端节点对应的第一内存。具体的,本地节点在感知到对端节点不能够正常的加入集时,将对端节点发送的中间状态值强制修改成本地节点恢复流程中为第二缓存分区申请内存所需要的状态,这样就能够保证本地节点的第二缓存分区(第二SSD单缓存分区)和新建的对端节点的第一缓存分区(第一SSD单缓存分区)都能申请到内存。

进一步的,存储设备为第一缓存分区分配第一内存,包括:存储设备判断对端节点是否创建过缓存分区;若对端节点创建过缓存分区,则根据修改过的中间状态值判断对端节点的标志位是否恢复;若对端节点的标志位恢复,则为第一缓存分区分配第一缓存。其中判断对端节点是否创建过缓存分区的方式可以通过存在标志进行判定,当存在标志中的值为目标值,则确定创建过缓存分区,若存在标志中的值不是目标值,则确定没有创建过缓存分区。中间状态值表征的是是否完成重新创建,如果完成重新创建,则中间状态值由之前的false变成true,此时确定标志位恢复,则存储设备为第一缓存分区分配第一缓存。

进一步的,根据第一缓存分区发送第一内存申请请求至存储设备之后,还包括:当对端节点加入集后,本地节点删除第一缓存分区,以使对端节点创建缓存分区并申请对应的内存。

其中,当对端节点加入集后,将本地的第一缓存分区删除,对端节点创建缓存分区并申请对应的内存,其中,该内存的大小与第一内存相同,以保证本地节点的申请内存量与对端节点的内存申请量之和不变。

综上,本实施例提供的一种SSD缓存分区申请内存的方法,触发T2恢复时给所有存在的单分区新增一个标志位表征发生过故障,然后两个节点恢复过程中如果有节点二次故障,本地节点感知到对端节点二次故障,本地节点会根据标志位给新建的对端节点上的第一缓存分区申请第一内存;最后,如果对端节点能够正常的加入集,本地节点能够正常的为本地节点上的第二缓存分区申请到第二内存,如果对端节点不能够加入集,本地节点需要新增处理流程给对端节点对应的第二缓存分区申请第二内存。本实施例能够保证为发生故障节点上的缓存分区申请到内存,保证SSD缓存分区加速功能正常的使用,删除缓存分区不会导致集故障。

基于上述技术方案,本实施例集中的两节点同时故障后的恢复过程中,本地节点在感知对端节点二次故障后,在本地节点创建对端节点的第一缓存分区并为申请第一内存,能够在对端节点二次故障后,本地节点能够代替对端节点申请到内存,保证了缓存分区不丢失,避免了由于存在单分区申请不到内存的情况造成的删除分区造成故障的问题。

进一步的,还包括:创建第二缓存分区;根据第二缓存分区发送第二内存申请请求至存储设备,以便存储设备为第二缓存分区分配第二内存。

可以理解的是,第一内存与第二内存的和保持不变。当本地节点建立了第一缓存分区和第二缓存分区后,本地节点是包含了两个SSD单分区。

下面对本申请实施例提供的一种内存申请装置进行介绍,下文描述的内存申请装置与上文描述的内存申请方法可相互对应参照,相关模块均设置于本地节点中,参考图2,图2为本申请实施例提供的一种内存申请装置的结构示意图,包括:

判断模块201,用于在集中的两节点同时故障后的恢复过程中,本地节点判断对端节点是否发生故障;

第一缓存分区创建模块202,用于若对端节点发生故障,则创建与对端节点对应第一缓存分区;

请求发送模块203,用于根据第一缓存分区发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。

优选地,还包括:

第二缓存分区创建模块,用于创建第二缓存分区;

第二内存申请请求发送模块,用于根据第二缓存分区发送第二内存申请请求至存储设备,以便存储设备为第二缓存分区分配第二内存。

优选地,判断模块201包括:

判断单元,用于判断在预设时间内是否接收到对端节点的信息;

故障确定单元,用于若没有接收到对端节点的信息,则确定对端节点故障。

优选地,还包括:

删除模块,用于当对端节点加入集后,本地节点删除第一缓存分区,以使对端节点创建缓存分区并申请对应的内存。

优选地,第一缓存分区创建模块202包括:

接收单元,用于若对端节点发生故障,则接收到对端节点发送的中间状态值;

修改与创建单元,用于将中间状态值进行修改,并创建与对端节点对应的第一缓存分区;

对应的,请求发送模块203包括:

请求发送单元,用于根据第一缓存分区和修改过的中间状态值发送第一内存申请请求至存储设备,以便存储设备为第一缓存分区分配第一内存。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的内存申请方法可相互对应参照。请参考图3,图3为本申请实施例提供的一种电子设备的结构示意图,包括:

存储器300,用于存储计算机程序;

处理器400,用于执行计算机程序时实现如上述内存申请方法的步骤。

还可以包括:输入输出接口500,网络端口600。其中,存储器300包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。处理器400可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。处理器400为电子设备提供计算和控制能力,执行存储器300中保存的计算机程序时,可以实现内存申请方法的步骤。输入输出接口500,用于获取外部导入的计算机程序、参数和指令,经处理器400控制保存至存储器300中。该输入输出接口500可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。具体的,在本实施例中,用户可以通过输入输出接口500启动内存申请方法。网络端口600,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(MHL)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术等。具体的,在本实施例中,在正常联网的情况下,可以通过网络端口600与手机或者平板电脑进行交互实现认证。

由于电子设备部分的实施例与方法部分的实施例相互对应,因此电子设备部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的方法可相互对应参照。

本实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上内存申请方法的步骤。

由于计算机可读存储介质部分的实施例与方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种内存申请方法、装置、电子设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

本文发布于:2024-09-23 13:20:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/85226.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议