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

著录项
  • CN202010915152.X
  • 20200903
  • CN112162850A
  • 20210101
  • 北京浪潮数据技术有限公司
  • 张刚;李俭
  • G06F9/50
  • G06F9/50 G06F12/02

  • 北京市海淀区上地信息路2号C栋5层
  • 北京(11)
  • 北京集佳知识产权代理有限公司
  • 王云晓
摘要
本申请提供一种内存申请方法,包括:接收全闪精简池的创建指令;根据创建指令创建全闪精简池,并申请元数据管理模块工作所需的动态内存;全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池,若申请到动态内存,则将动态内存分配给各个子模块。可见,本申请只有当存储系统要创建全闪精简池的时候,才需要全闪精简池的元数据管理模块进行工作,此时申请元数据管理模块所需要的内存空间即动态内存,对应的,当存储系统中没有全闪精简池的时候,则不申请元数据管理模块所需的动态内存,减少了内存空间的浪费,提高了存储系统的性能。本申请同时还提供了一种内存申请装置、电子设备和计算机可读存储介质,均具有上述有益效果。
权利要求

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

接收全闪精简池的创建指令;

根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池,

若申请到所述动态内存,则将所述动态内存分配给各个子模块。

2.根据权利要求1所述的内存申请方法,其特征在于,所述接收全闪精简池的创建指令之前,还包括:

在动态内存管理模块的CSM端和AGT端分别添加所述元数据管理模块的动态内存申请所需要的预设信息;其中,所述预设信息包含需要预留的最大内存、初始预留内存大小;

在系统初始化时对所述预设信息进行初始化注册。

3.根据权利要求2所述的内存申请方法,其特征在于,所述在系统初始化时对所述预设信息进行初始化注册之后,还包括:

在所述全闪精简池管理模块的CSM端添加第一动态内存管理信息;所述第一动态内存管理信息用于标识是否已申请所述元数据管理模块所需要的内存,以及申请内存的大小,

在所述元数据管理模块的AGT端增加第二动态内存管理信息;所述第二动态内存管理信息包括标识信息和分配信息,所述标识信息用于标识是否已经申请到所述元数据管理模块所需要的内存。

4.根据权利要求3所述的内存申请方法,其特征在于,所述若申请到所述动态内存,则将所述动态内存分配给各个子模块之后,还包括:

当申请到所述动态内存后,则修改所述第一动态内存管理信息;

发送修改指令至各个节点,以使各个所述节点的AGT端修改所述第二动态内存管理信息。

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

当删除所述全闪精简池时,通知各个所述节点的AGT端修改所述第二动态内存管理信息;

释放分配给各个子模块的所述动态内存;

根据释放后的信息修改所述第一动态内存管理信息。

7.根据权利要求6所述的内存申请方法,其特征在于,所述当删除所述全闪精简池时,通知各个所述节点的AGT端修改所述第二动态内存管理信息,包括:

当删除所述全闪精简池时,通过CLI或者GUI触发释放指令;

根据所述释放指令,通知各个所述节点的AGT端修改所述第二动态内存管理信息。

5.根据权利要求3所述的内存申请方法,其特征在于,所述若申请到所述动态内存,则将所述动态内存分配给各个子模块,包括:

利用所述动态内存管理模块的CSM端获取剩余动态内存;

判断所述剩余动态内存是否大于所述动态内存;

若大于所述动态内存,则申请到所述元数据管理模块工作所需的动态内存,并将所述动态内存分配给各个所述子模块。

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

指令接收模块,用于接收全闪精简池的创建指令;

申请模块,用于根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池;

分配模块,用于若申请到所述动态内存,则将所述动态内存分配给各个子模块。

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

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

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

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

说明书
技术领域

本申请涉及内存分配技术领域,特别涉及一种内存申请方法、装置、设备和介质。

全闪精简池是指全部使用固态存储介质(固态硬盘SSD)构建成的可创建自精简卷的存储池。全闪精简池存储功能中,元数据管理模块用于进行元数据管理,当系统初始化的时候,系统会申请元数据管理模块工作时所需要使用的内存管理空间。但是,当系统上没有全闪精简池而只有普通池的时候,元数据管理模块所申请的内存管理空间就不会被使用,从而造成可内存空间的浪费,甚至造成系统性能的下降。

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

本申请的目的是提供一种内存申请方法、内存申请装置、电子设备和计算机可读存储介质,能够减少了内存空间的浪费,提高了存储系统的性能。其具体方案如下:

本申请公开了一种内存申请方法,包括:

接收全闪精简池的创建指令;

根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池,

若申请到所述动态内存,则将所述动态内存分配给各个子模块。

可选的,所述接收全闪精简池的创建指令之前,还包括:

在动态内存管理模块的CSM端和AGT端分别添加所述元数据管理模块的动态内存申请所需要的预设信息;其中,所述预设信息包含需要预留的最大内存、初始预留内存大小;

在系统初始化时对所述预设信息进行初始化注册。

可选的,所述在系统初始化时对所述预设信息进行初始化注册之后,还包括:

在所述全闪精简池管理模块的CSM端添加第一动态内存管理信息;所述第一动态内存管理信息用于标识是否已申请所述元数据管理模块所需要的内存,以及申请内存的大小,

在所述元数据管理模块的AGT端增加第二动态内存管理信息;所述第二动态内存管理信息包括标识信息和分配信息,所述标识信息用于标识是否已经申请到所述元数据管理模块所需要的内存。

可选的,所述若申请到所述动态内存,则将所述动态内存分配给各个子模块之后,还包括:

当申请到所述动态内存后,则修改所述第一动态内存管理信息;

发送修改指令至各个节点,以使各个所述节点的AGT端修改所述第二动态内存管理信息。

可选的,所述若申请到所述动态内存,则将所述动态内存分配给各个子模块,包括:

利用所述动态内存管理模块的CSM端获取剩余动态内存;

判断所述剩余动态内存是否大于所述动态内存;

若大于所述动态内存,则申请到所述元数据管理模块工作所需的动态内存,并将所述动态内存分配给各个所述子模块。

可选的,还包括:

当删除所述全闪精简池时,通知各个所述节点的AGT端修改所述第二动态内存管理信息;

释放分配给各个子模块的所述动态内存;

根据释放后的信息修改所述第一动态内存管理信息。

可选的,所述当删除所述全闪精简池时,通知各个所述节点的AGT端修改所述第二动态内存管理信息,包括:

当删除所述全闪精简池时,通过CLI或者GUI触发释放指令;

根据所述释放指令,通知各个所述节点的AGT端修改所述第二动态内存管理信息。

本申请公开了一种内存申请装置,包括:

指令接收模块,用于接收全闪精简池的创建指令;

申请模块,用于根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池;

分配模块,用于若申请到所述动态内存,则将所述动态内存分配给各个子模块。

本申请公开了一种电子设备,包括:

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

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

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

本申请提供一种内存申请方法,包括:接收全闪精简池的创建指令;根据创建指令创建全闪精简池,并申请元数据管理模块工作所需的动态内存;全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池,若申请到动态内存,则将动态内存分配给各个子模块。

可见,本申请只有当存储系统要创建全闪精简池的时候,才需要全闪精简池的元数据管理模块进行工作,此时申请元数据管理模块所需要的内存空间即动态内存,对应的,当存储系统中没有全闪精简池的时候,则不申请元数据管理模块所需的动态内存,减少了内存空间的浪费,提高了存储系统的性能。

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

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

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

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

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

全闪精简池是指全部使用固态存储介质(固态硬盘SSD)构建成的可创建自精简卷的存储池。全闪精简池存储功能中,元数据管理模块用于进行元数据管理,当系统初始化的时候,系统会申请元数据管理模块工作时所需要使用的内存管理空间。但是,当系统上没有全闪精简池而只有普通池的时候,元数据管理模块所申请的内存管理空间就不会被使用,从而造成可内存空间的浪费,甚至造成系统性能的下降。

基于上述技术问题,本实施例提供一种内存申请方法,能够减少了内存空间的浪费,提高了存储系统的性能,以实现,具体请参考图1,图1为本申请实施例提供的一种内存申请方法的流程图,具体包括:

S101、接收全闪精简池的创建指令;

S102、根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池,

当接收到全闪精简池的创建指令后,则创建全闪精简池,并且申请元数据管理模块工作所需的动态内存。

本实施例中每当创建全闪精简池时,才会申请元数据管理模块工作所需的动态内存,如果没有创建全闪精简池,则不申请元数据管理模块工作所需的动态内存,并且,当删除全闪精简池时,也会将之前申请的动态内存释放。来减少内存空间的浪费,提高存储系统的性能。

进一步的,接收全闪精简池的创建指令之前,还包括:在动态内存管理模块的CSM端和AGT端分别添加元数据管理模块的动态内存申请所需要的预设信息;其中,预设信息包含需要预留的最大内存、初始预留内存大小;在系统初始化时对预设信息进行初始化注册。

可以理解的是,本实施例中存储系统的动态内存管理模块中设有CSM端和AGT端。CSM端(Control state machine,控制状态机)在存储系统中表示为各个模块的控制状态机。AGT端(agent,模块终端)在存储系统中表示为各个节点上的模块终端。在CSM端和AGT端分别添加(元数据管理模块)MDM模块的动态内存申请所需要的预设信息,该预设信息包含需要预留的最大内存,初始预留内存大小等信息,并在系统初始化时对上述信息进行初始化注册。

进一步的,在系统初始化时对预设信息进行初始化注册之后,还包括:在全闪精简池管理模块的CSM端添加第一动态内存管理信息;第一动态内存管理信息用于标识是否已申请元数据管理模块所需要的内存,以及申请内存的大小,在元数据管理模块的AGT端增加第二动态内存管理信息;第二动态内存管理信息包括标识信息和分配信息,标识信息用于标识是否已经申请到元数据管理模块所需要的内存。

其中,在全闪精简池管理模块即全闪精简池管理信息的CSM端增加管理信息也就是第一动态内存管理信息,标识是否已申请MDM模块所需要的内存,以及申请内存的大小;在MDM模块的AGT端增加本模块动态内存申请和分配情况相关的信息,标识是否已经申请到MDM模块所需要的内存,并分配给各个子模块进行使用。

可以理解的是,本实施例中在全闪精简池管理模块和MDM模块分别设置CSM端和AGT端,来实现灾备,当某一节点由于故障掉电时,可以根据存储的第一动态内存管理信息和第二动态内存管理信息,在该节点重新进行上电时进行数据恢复,保证系统的正常运行。

S103、若申请到动态内存,则将动态内存分配给各个子模块。

本实施例中强申请到的动态内存分配给各个子模块,本实施例中子模块包括但是不限定于:写缓存、读缓存等。本实施例不对分配规则进行限定,用户可自定义设置只要是能够实现本实施例的目的即可。具体的分配规则可以是平均分配,还可以是根据各个子模块的应用频次进行分配。

进一步的,若申请到动态内存,则将动态内存分配给各个子模块,包括:

利用动态内存管理模块的CSM端获取剩余动态内存;

判断剩余动态内存是否大于动态内存;

若大于动态内存,则申请到元数据管理模块工作所需的动态内存,并将动态内存分配给各个子模块。

本实施例中当剩余动态内存大于所需的动态内存时,则能够申请到动态内存并分配给各个子模块,如果剩余动态内存不大于所需的动态内存时,则等待,当系统释放动态内存后再执行利用动态内存管理模块的CSM端获取剩余动态内存的步骤,直至能够申请到所需的动态内存。通过上述方式避免了当剩余动态内存不大于所所需动态内存时,直接申请剩余动态内存造成的运行速度低或者运行出现问题的现象的发生。

进一步的,若申请到动态内存,则将动态内存分配给各个子模块之后,还包括:当申请到动态内存后,则修改第一动态内存管理信息;发送修改指令至各个节点,以使各个节点的AGT端修改第二动态内存管理信息。

本实施了中的第一动态内存管理信息和第二动态内存管理信息在实时更新,保证系统内存储的是最新的信息,当某一节点由于故障掉电时,能够根据存储的信息进行内存的恢复。

基于上述技术方案,本实施例只有当存储系统要创建全闪精简池的时候,才需要全闪精简池的元数据管理模块进行工作,此时申请元数据管理模块所需要的内存空间即动态内存,对应的,当存储系统中没有全闪精简池的时候,则不申请元数据管理模块所需的动态内存,减少了内存空间的浪费,提高了存储系统的性能。

进一步的,还包括:当删除全闪精简池时,通知各个节点的AGT端修改第二动态内存管理信息;释放分配给各个子模块的动态内存;根据释放后的信息修改第一动态内存管理信息。

进一步的,当删除全闪精简池时,通过CLI或者GUI触发释放指令;根据释放指令,通知各个节点的AGT端修改第二动态内存管理信息。

当删除全闪精简池时,通过CLI(Command Line Interface for batchscripting,命令行界面)或者GUI(Graphical User Interface,图形用户界面)触发命令行处理流程,CSM调用AGT端接口通知各个节点的AGT端修改MDM动态内存相关的管理信息,并释放分配给各个子模块的动态内存,然后修改CSM端的MDM模块内存管理信息,标识动态内存已经释放,可以供其他模块使用。

可见,本实施例当系统中没有全闪精简池的时候,MDM模块不会工作,所以,此时不需要申请MDM模块所需要的内存空间(动态内存),只有当系统要创建全闪精简池的时候,才需要全闪精简池的MDM模块进行工作,才需要申请MDM模块所需要的内存空间,当系统中没有全闪精简池的时候,则释放MDM模块之前申请的内存空间。减少内存空间的浪费,提高系统性能。

基于上述任一实施例,本实施例提供一种具体的内存申请方法,实现了内存动态申请与释放,包括:

动态内存模块DMM的管理分为CSM端和AGT端,进行内存动态申请和释放需要进行一下操作:

1、在CSM端和AGT端都分别添加MDM模块动态内存申请所需要的信息,包含需要预留的最大内存,初始预留内存大小等信息,并在系统初始化时对上述信息进行初始化注册;

2、在全闪精简池管理信息的CSM端增加第一动态内存管理信息,标识是否已申请MDM模块所需要的内存,以及申请内存的大小;

3、在MDM模块的AGT端增加第二动态内存管理信息,包括本模块动态内存申请和分配情况相关的信息,标识是否已经申请到MDM模块所需要的内存,并分配给各个子模块进行使用;

4、当创建第一个全闪精简池时,通过CLI或者GUI触发命令行处理流程,动态内存管理模块的CSM端查询并申请MDM模块所需要的动态内存,并修改CSM端的MDM模块动态内存管理信息,标识已经申请到动态内存,然后通知各个节点的AGT端修改MDM动态内存相关的管理信息,并将已申请到的动态内存分配给各个子模块,以保证MDM模块能正常工作;

5、当删除最后一个全闪精简池时,通过CLI或者GUI触发命令行处理流程,CSM调用AGT端接口通知各个节点的AGT端修改MDM动态内存相关的管理信息,并释放分配给各个子模块的动态内存,然后修改CSM端的MDM模块内存管理信息,标识动态内存已经释放,可以供其他模块使用。

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

指令接收模块201,用于接收全闪精简池的创建指令;

申请模块202,用于根据所述创建指令创建所述全闪精简池,并申请元数据管理模块工作所需的动态内存;所述全闪精简池为全部使用固态存储介质构建成的可创建自精简卷的存储池;

分配模块203,用于若申请到所述动态内存,则将所述动态内存分配给各个子模块。

可选的,还包括:

信息添加模块,用于在动态内存管理模块的CSM端和AGT端分别添加元数据管理模块的动态内存申请所需要的预设信息;其中,预设信息包含需要预留的最大内存、初始预留内存大小;

初始化模块,用于在系统初始化时对预设信息进行初始化注册。

可选的,还包括:

第一动态内存管理信息添加模块,用于在全闪精简池管理模块的CSM端添加第一动态内存管理信息;第一动态内存管理信息用于标识是否已申请元数据管理模块所需要的内存,以及申请内存的大小,

第二动态内存管理信息增加模块,用于在元数据管理模块的AGT端增加第二动态内存管理信息;第二动态内存管理信息包括标识信息和分配信息,标识信息用于标识是否已经申请到元数据管理模块所需要的内存。

可选的,还包括:

第一修改模块,用于当申请到动态内存后,则修改第一动态内存管理信息;

第二修改模块,用于发送修改指令至各个节点,以使各个节点的AGT端修改第二动态内存管理信息。

可选的,分配模块203,包括:

获取单元,用于利用动态内存管理模块的CSM端获取剩余动态内存;

判断单元,用于判断剩余动态内存是否大于动态内存;

分配单元,用于若大于动态内存,则申请到元数据管理模块工作所需的动态内存,并将动态内存分配给各个子模块。

可选的,还包括:

通知模块,用于当删除全闪精简池时,通知各个节点的AGT端修改第二动态内存管理信息;

释放模块,用于释放分配给各个子模块的动态内存;

第三修改模块,用于根据释放后的信息修改第一动态内存管理信息。

可选的,通知模块包括:

触发单元,用于当删除全闪精简池时,通过CLI或者GUI触发释放指令;

通知单元,用于根据释放指令,通知各个节点的AGT端修改第二动态内存管理信息。

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

下面对本申请实施例提供的一种电子设备进行介绍,下文描述的电子设备与上文描述的内存申请方法可相互对应参照。

本实施例提供一种电子设备,包括:

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

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

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

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

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

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

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

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

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

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

本文发布于:2024-09-25 16:36:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/85664.html

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

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