CN117311621A - 一种缓存盘空间分配方法、装置、计算机设备及存储介质 - Google Patents

一种缓存盘空间分配方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN117311621A
CN117311621A CN202311257176.0A CN202311257176A CN117311621A CN 117311621 A CN117311621 A CN 117311621A CN 202311257176 A CN202311257176 A CN 202311257176A CN 117311621 A CN117311621 A CN 117311621A
Authority
CN
China
Prior art keywords
data
storage
obj
capacity
data block
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
CN202311257176.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.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data 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 Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202311257176.0A priority Critical patent/CN117311621A/zh
Publication of CN117311621A publication Critical patent/CN117311621A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及云存储技术领域,公开了一种缓存盘空间分配方法、装置、计算机设备及存储介质,方法包括:在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块;接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块;将缓存数据存入目标数据块。本发明提供的技术方案解决了缓存盘空间利用率低的问题。

Description

一种缓存盘空间分配方法、装置、计算机设备及存储介质
技术领域
本发明涉及云存储技术领域,具体涉及一种缓存盘空间分配方法、装置、计算机设备及存储介质。
背景技术
在云存储领域,服务器中的存储盘包括缓存盘和数据盘两大类,数据盘是在服务器中担任存储数据功能的硬盘,缓存盘是根据用户经常访问的数据,将一部分数据保存到硬盘上方便下次读取的时候快速读取,其读取速度比数据盘更快。在当前的存储引擎中主要通过OBJ(OBJ是底层存储引擎处理输入输出的基本单元)来管理缓存盘的所有输入输出,在整个存储引擎中单个OBJ大小被定义为一个固定值,在磁盘初始化的时候,存储引擎中的格式化程序将整个磁盘按照OBJ的大小进行切割,然后对所有的数据块进行编号,根据该编号可以计算到每个块在磁盘的具体位置。对于整个存储引擎来说,OBJ的大小是定义的固定值,OBJ是数据存储请求的基本单元,所以响应于数据存储请求都需要分配一个OBJ被使用,不论该请求真实写入了多少数据,在磁盘上来看,必须要占用OBJ对应的物理磁盘大小。例如:一般情况下OBJ的大小被定义为4M,物理磁盘需要按照4M划分为很多块,此时如果某个OBJ仅仅写入了4K的数据,但是该OBJ必须占用的磁盘空间仍然为4M,导致这一块磁盘空间的有效的使用率只有1/1000。在这种模式下整个缓存盘的有效利用空间被极大缩小,对于缓存盘这种空间相对较小的资源,大量的空间浪费,将成为整个系统的一个瓶颈点。
发明内容
有鉴于此,本发明提供了一种缓存盘空间分配方法、装置、计算机设备及存储介质,以解决缓存盘空间利用率低的问题。
第一方面,本发明提供了一种缓存盘空间分配方法,方法包括:在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块;接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块;将缓存数据存入目标数据块。
根据上述技术手段,本实施例将缓存盘的数据区划分为大小不同的数据块,并采用按需最小分配的原则给待缓存数据分配数据块使用,将磁盘中空闲的空间合理利用起来,增加了磁盘的使用率,提升整个系统的缓存命中率,在最大程度上减少缓存盘的下刷和同步操作,能够显著增强整个存储系统的输入输出吞吐能力。
在一种可选地实施方式中,将缓存盘的数据区格式化为多种不同大小的数据块,包括:按照不同的容量单位将数据区划分为与各种容量单位对应大小的数据块,并得到每个数据块对应的存储ID,存储ID用于对应缓存盘的物理位置,各数据块的存储ID互不重复;将每个数据块对应的存储ID放入空闲列表,空闲列表中的存储ID用于表示对应的数据块为可用状态;定义OBJ的大小,并将编号后的数据块映射到不同的OBJ当中。
根据上述技术手段,本实施例为划分的数据块进行不重复编号,以表示各个数据块对应的实际物理位置,然后定义OBJ的大小,将各个数据块分配给不同的OBJ使用,相比定义不同大小的OBJ配置难度更低。当需要进行数据缓存时,只需分配一个OBJ处理数据存储请求,OBJ不直接占用一块较大的物理空间,而是根据数据的实际大小从管理的数据块中选择较小的数据块对数据进行缓存,没有利用的数据块在后续的存储任务中还能继续使用,从而显著提高了缓存盘的空间利用率。
在一种可选地实施方式中,按照不同的容量单位将数据区划分为与各种容量单位对应大小的数据块,包括:将缓存盘分为三个区域;分别对三个区域按照预设的第一容量单位、第二容量单位和第三容量单位进行划分,得到多个大数据块、中数据块和小数据块,第一容量单位>第二容量单位>第三容量单位。
根据上述技术手段,本发明实施例将缓存盘的数据区按照大、中、小三种划分为大数据块、中数据块和小数据块,从而适应多种数据存储场景,也避免数据块的种类划分过多,增加数据存储的复杂度。
在一种可选地实施方式中,接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块,包括:检测缓存数据的空间占用容量;将空间占用容量依次与各种大小的数据块容量进行比对;根据比对结果,从大于空间占用容量的数据块容量中确定最小的目标数据块容量;根据目标数据块容量从空闲列表中确定目标存储ID;根据目标存储ID确定使用对应目标数据块的目标OBJ;通过目标OBJ接收缓存数据;通过目标OBJ将缓存数据按照目标存储ID存入目标数据块中;将目标存储ID从空闲列表中删除。
在一种可选地实施方式中,所述第一容量单位、第二容量单位和第三容量单位分别是4M、1M和512K,所述接收缓存数据,并基于所述缓存数据占用空间的大小从多种不同大小的数据块中为所述缓存数据分配目标数据块,包括:检测所述缓存数据的空间占用容量;将所述空间占用容量依次与4M、1M和512K的数据块容量进行比对;根据比对结果,从4M、1M和512K中选择目标数据块容量,所述目标数据块容量是大于所述空间占用容量的最小容量;根据所述目标数据块容量从所述空闲列表中确定目标存储ID;根据所述目标存储ID确定使用对应所述目标数据块的目标OBJ;通过所述目标OBJ接收所述缓存数据;通过所述目标OBJ将所述缓存数据按照所述目标存储ID存入所述目标数据块中;将所述目标存储ID从所述空闲列表中删除。
根据上述技术手段,本实施例根据缓存数据的大小将大于空间占用容量的数据块容量中最小的目标数据块容量对应的数据块分配使用,在空间最小损耗的条件下还保证输入输出损耗最小,从而利用对应的OBJ处理数据存储任务,显著降低缓存盘的资源损耗率。
在一种可选地实施方式中,方法还包括:当预定义的较小容量单位对应的数据块数量小于预设阈值时,将较小容量单位对应数据块中的数据合并到预定义的较大容量单位对应的数据块中。
在一种可选地实施方式中,格式化时通过各个OBJ的元数据将各个OBJ以最小的容量单位改为数组,将较小容量单位对应数据块中的数据合并到较大容量单位对应的数据块中,包括:将当前OBJ中较小容量单位对应数据块中的数据按照数组表征的顺序读出;将读出的数据按照数组表征的顺序写入较大容量单位对应的数据块中;利用第二存储ID改写当前OBJ中的第一存储ID,第二存储ID为较大容量单位对应的数据块的存储ID,第一存储ID为较小容量单位对应数据块的存储ID;将第二存储ID从空闲列表中删除;将第一存储ID还原到空闲列表中。
根据上述技术手段,首选预定义哪些数据块的容量是较小容量单位,哪些是较大容量单位,然后当较小数据块使用较多时,本实施例还将一些较小数据块中的数据合并到更大的数据块中,解决小数据块、中数据块空间不足的情况,进一步提高存储资源的利用率。同时,将释放的存储ID重新放入空闲列表中,便于释放的存储资源被重复调用。
在一种可选地实施方式中,方法还包括:接收数据删除请求;通过当前OBJ响应数据删除请求,将当前OBJ使用的数据块清空;清理当前OBJ的元数据信息;将当前OBJ使用数据块的存储ID还原到空闲列表中;当当前OBJ中的数据下刷到数据盘时,将当前OBJ使用的数据块清空;清理当前OBJ的元数据信息;将当前OBJ使用数据块的存储ID还原到空闲列表中。
第二方面,本发明提供了一种缓存盘空间分配装置,装置包括:数据块划分单元,用于在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块;数据块分配单元,用于接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块;存储单元,用于将缓存数据存入目标数据块。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的缓存盘空间分配方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的缓存盘空间分配方法。
本发明提供的技术方案,具有如下优点:
(1)本实施例将缓存盘的数据区划分为大小不同的数据块,并采用空间损耗最小分配的原则给待缓存数据分配数据块使用,将磁盘中空闲的空间合理利用起来,增加了磁盘的使用率,提升整个系统的缓存命中率,在最大程度上减少缓存盘的下刷和同步操作,能够显著增强整个存储系统的输入输出吞吐能力。
(2)本实施例为划分的数据块进行不重复编号,以表示各个数据块对应的实际物理位置,然后定义OBJ的大小,将各个数据块分配给不同的OBJ使用,相比定义不同大小的OBJ配置难度更低。当需要进行数据缓存时,只需分配一个OBJ处理数据存储请求,OBJ不直接占用一块较大的物理空间,而是根据数据的实际大小从管理的数据块中选择较小的数据块对数据进行缓存,没有利用的数据块在后续的存储任务中还能继续使用,从而显著提高了缓存盘的空间利用率。
(3)本发明实施例将缓存盘的数据区按照大、中、小三种划分为大数据块、中数据块和小数据块,从而适应多种数据存储场景,也避免数据块的种类划分过多,增加数据存储的复杂度。
(4)本实施例根据缓存数据的大小将大于空间占用容量的数据块容量中最小的目标数据块容量对应的数据块分配使用,在空间最小损耗的条件下还保证输入输出损耗最小,从而利用对应的OBJ处理数据存储任务,显著降低缓存盘的资源损耗率。
(5)当较小数据块使用较多时,本实施例还将一些较小数据块中的数据合并到更大的数据块中,解决小数据块、中数据块空间不足的情况,进一步提高存储资源的利用率。同时,将释放的存储ID重新放入空闲列表中,便于释放的存储资源被重复调用。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种缓存盘空间分配方法的流程示意图;
图2是根据本发明实施例的一个OBJ的结构示意图;
图3是根据本发明实施例的另一个OBJ的结构示意图;
图4是根据本发明实施例的又一个OBJ的结构示意图;
图5是根据本发明实施例的又一个OBJ的结构示意图;
图6是根据本发明实施例的数据块整理对应OBJ结构变化的流程示意图;
图7是根据本发明实施例的一种缓存盘空间分配装置的结构示意图;
图8是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明实施例,提供了一种缓存盘空间分配方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种缓存盘空间分配方法,可用于上述的计算机设备,图1是根据本发明实施例的一种缓存盘空间分配方法的流程图,该流程包括如下步骤:
步骤S101,在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块。
具体地,本发明实施例提供的方法主要应用于云存储平台底层存储引擎的磁盘管理模块,主要是通过改进缓存盘内数据块的分配策略,达到降低IO(Input-Output,输入输出)过程中的磁盘损耗,节约磁盘空间,提升磁盘利用率的目的。基于此,本发明实施例在缓存盘进行格式化的时候,不再将缓存盘的整个数据区格式化成相同的大小,而是按照不同大小的数据块,将数据区格式化成一些大的数据块和一些小的数据块。例如,针对数据区的某个区域,将其按照4M大小进行格式化划分,另一个区域按照2M大小进行格式化划分,再另一个区域按照128K大小进行格式化划分,本实施例仅以此举例,不以此为限。从而通过这样的方案,得到多种不同大小的数据块。需要注意的是,本步骤只在磁盘第一次使用格式化时进行,当数据块划分好后,后续读写数据不需要每次都进行格式化。
步骤S102,接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块。
具体地,在缓存盘格式化之后,可以开始对上位机下发的数据进行存储,当磁盘管理模块接收到缓存数据时,首先判断缓存数据的大小,然后按照缓存盘空间最小损耗原则,从多种数据块中选出最接近缓存数据大小但又比缓存数据空间占用量大的一个或多个目标数据块来存储缓存数据。
步骤S103,将缓存数据存入目标数据块。
具体地,最后,本发明实施例将缓存数据存入挑选出的目标数据块,使挑选出的空间与缓存数据的大小尽可能接近,避免了盲目按照完全相等的OBJ分配较大磁盘物理空间给缓存数据,但实际只使用了较少物理空间而造成资源浪费的结果。
需要注意的是,在本发明实施例中,收到的每条缓存数据都被定义为不超过最大的数据块,例如相关技术将OBJ的大小定义为4M,其默认是每一条缓存数据最大不会超过4M,在本发明实施例中,如果定义最大的数据块大小为4M,同理每一条缓存数据最大也不会超过4M,这一点与相关技术目前广泛应用的机制相同,对于一条缓存数据超过最大数据块的场景,例如一条缓存数据就超过4M的场景,这类场景比较极端,通常用户也不会这样对数据进行定义,故不在本发明实施例考虑范围之内。
本实施例将缓存盘的数据区划分为大小不同的数据块,并采用按需最小分配的原则给待缓存数据分配数据块使用,将磁盘中空闲的空间合理利用起来,增加了磁盘的使用率,提升整个系统的缓存命中率,在最大程度上减少缓存盘的下刷和同步操作,能够显著增强整个存储系统的输入输出吞吐能力。
在一些可选地实施方式中,上述步骤S101包括:
步骤a1,按照不同的容量单位将数据区划分为与各种容量单位对应大小的数据块,并得到每个数据块对应的存储ID,存储ID用于对应缓存盘的物理位置,各数据块的存储ID互不重复;
步骤a2,将每个数据块对应的存储ID放入空闲列表,空闲列表中的存储ID用于表示对应的数据块为可用状态;
步骤a3,定义OBJ的大小,并将编号后的数据块映射到不同的OBJ当中。
具体地,OBJ是存储引擎进行处理IO的基本单元,换言之,OBJ作为软件结构上的概念,可以通俗理解为:OBJ是上位机每次请求缓存数据时,磁盘管理模块给到响应请求的一个软件对象,这个软件对象对应了缓存盘一个固定大小的物理位置,按照固定大小的OBJ等分数据区,磁盘管理模块利用OBJ作为基本单元每次对IO进行处理这一技术是比较成熟且健全的,操作起来难度较低,如果直接把OBJ划分为多种不同的大小,再利用不同大小的OBJ去处理IO,这类技术实现难度较大,并且要对磁盘管理模块处理IO的机制改动过多,不利于本发明实施例提供的技术方案在相关存储引擎上兼容。
从而,本发明实施例提供的方案,首先按照不同的容量单位将数据区划分为每种容量单位对应大小的数据块,然后对每个数据块进行不重复编号,得到每个数据块对应的存储ID,得到的存储ID即用于标记缓存盘每一个实际的物理位置,使存储ID与物理位置具有映射关系。
之后,将每个数据块对应的存储ID放入空闲列表,空闲列表是磁盘管理模块管理各个数据块状态的数据,如果数据块中没有存储数据,则数据块对应的存储ID会放入空闲列表中,如果数据块已被分配存储数据,则数据块对应的存储ID会从空闲列表移除,以使磁盘管理模块知晓哪些数据块可用,哪些数据块不可用。
之后,同样定义OBJ的大小,定义的OBJ为固定大小,例如4M。然后将编号后的数据块映射到不同的OBJ当中,即磁盘管理模块可用的OBJ有多个,不同的OBJ所使用的数据块不同。当上位机需要进行缓存数据时,磁盘管理模块依然按照存储引擎处理IO的机制,先给数据存储请求分配一个OBJ。但是区别在于,由于OBJ还管辖了多个大小不同的数据块,所以OBJ并不会直接将数据缓存到固定大小的物理空间中,而是分析缓存数据的大小,然后利用OBJ所使用的数据块为缓存数据再分配与之匹配的实际数据块,从而根据OBJ使用的数据块对应的存储ID将缓存数据存储到对应的物理位置,如果当前OBJ所使用的数据块还有一些没有使用,则下次处理数据IO时,当前OBJ还是可以被分配和调用的。
基于此,本实施例在结合相关技术利用OBJ处理IO的机制上,将本发明实施例提供的大小不同的数据块划分方法与之结合,实现了一种兼容性更高、提高存储资源利用率的缓存盘空间分配方法。
在一个实施例中,上述步骤a1具体包括:
1.将缓存盘分为三个区域。
2.分别对三个区域按照预设的第一容量单位、第二容量单位和第三容量单位进行划分,得到多个大数据块、中数据块和小数据块,第一容量单位>第二容量单位>第三容量单位。
具体地,本发明实施例将缓存盘的数据区按照大、中、小三种划分为大数据块、中数据块和小数据块,从而适应多种数据存储场景,也避免数据块的种类划分过多,增加数据存储的复杂度。
基于上述步骤,在一个具体场景实施例中,上述第一容量单位、第二容量单位和第三容量单位优选为4M、1M(4M的1/4)和512K(4M的1/8),从而得到4M、1M和512K三种大小的数据块。从而在本具体场景实施例中,系统初始化的时候格式化磁盘,Data区由原来的统一区域,按照特定的比例划分为三个区域:大块数据区按照OBJ的大小(4M)进行切分、中块数据区按照OBJ大小的1/4(1M)进行切分、小块数据区按照OBJ大小的1/8(512K)进行切分。对每一块的数据都分配唯一的存储ID,保证大、中、小数据块的存储ID没有重复。假设分配后的存储ID[1,1000]属于小块区,[1001,2000]属于中块区,[2000,max]属于大块区,然后分别设定小、中、大三个空闲列表,将对应的存储ID放入各自的空闲列表中去,表示上述数据块都是可用状态。
因为处理数据IO的最小单元并不是上述划分的数据块,本实施例还定义OBJ,假设定义的OBJ大小为4M,然后上述划分的数据块分别映射到不同的OBJ当中,从而本发明实施例提供的方案与大多数存储引擎都能兼容。得到的OBJ具有如下几种典型情况:
其一,OBJ只管理512K大小的数据块,可以管理一个或多个,最多管理8个,因为不能超过4M的定义限制,例如图2所示,整个OBJ仅写入一块小于512K的数据时,此时整个OBJ在磁盘上可以仅仅占用编号为112这个512K大小的数据块,而不是原来的占用一个4M的数据块。图中null的位置表示当前OBJ中没有使用其他数据块。
其二,OBJ只管理1M大小的数据块,可以管理一个或多个,最多管理4个,因为不能超过4M的定义限制,例如图3所示,当某个小于1M的数据写入时,整个OBJ在磁盘上可以仅占用编号为1002这个1M大小的数据块,而不是原来的占用一个4M的数据块。
其三,OBJ只管理4M大小的数据块,可以管理一个,因为不能超过4M的定义限制,例如图4所示,当某个OBJ被在整个4M数据全部写入的场景下,整个OBJ占用编号为2001的4M数据块。
其四,也是OBJ最多的管理场景,属于混合管理,OBJ管理的数据块既包括1M大小也包括512K大小。如图5所示,OBJ中的1、5位置分别指定了一个512K的数据块2和10。2、3位置共同占用了一个1M的数据块1000,6、7位置共同占用了一个1M数据块,整个OBJ实际占用磁盘空间为3M。
换言之,本发明实施例依然通过OBJ作为基本单元来处理数据IO,虽然OBJ定义为4M,但是OBJ并不直接分配4M物理空间给数据,而是OBJ最大能够管理4M的数据块,OBJ处理IO时,会根据收到的缓存数据的实际大小为其再分配数据块,然后根据实际分配的数据块的存储ID,将数据存储到对应的位置,例如图5中存储ID为2的数据块被使用,但是其他数据块没有被使用,则当前OBJ还可以再下次存储数据时继续使用。
基于此,本实施例在结合相关技术利用OBJ处理IO的机制上,将本发明实施例提供的大小不同的数据块划分方法与之结合,实现了一种兼容性更高、提高存储资源利用率的缓存盘空间分配方法。
在一些可选地实施方式中,上述步骤S102包括:
步骤b1,检测缓存数据的空间占用容量。
步骤b2,将空间占用容量依次与各种大小的数据块容量进行比对。
步骤b3,根据比对结果,从大于空间占用容量的数据块容量中确定最小的目标数据块容量。
步骤b4,根据目标数据块容量从空闲列表中确定目标存储ID。
步骤b5,根据目标存储ID确定使用对应目标数据块的目标OBJ。
步骤b6,通过目标OBJ接收缓存数据。
步骤b7,通过目标OBJ将缓存数据按照目标存储ID存入目标数据块中。
步骤b8,将目标存储ID从空闲列表中删除。
具体地,通常针对一些特殊的缓存数据大小,有多种不同的数据块分配方案,例如:缓存数据为900K,那么可以为其分配1个1M的数据块也可以为其分配2个512K的数据块进行存储,相对来说,对于存储空间的损耗都不算大。如果缓存数据为1.8M,可以为其分配2个1M的数据块也可以为其分配1个4M的数据块进行存储,相对来说,分配4M的数据块空间损耗要稍微大一些。但是,如果只考虑空间损耗最小,采用分配2个1M的数据块或者采用分配2个512K的数据块这类方案,会令IO损耗成倍增长,在数据交互速度要求较高的云计算领域,IO的损耗较高同样是不可接受的。
基于此,本发明实施例提供了一个兼顾存储资源损耗和IO损耗都尽可能小的具体空间分配方案。首先磁盘管理模块对于缓存数据的空间占用容量进行计算,确定缓存数据的大小。然后将空间占用容量依次与各种大小的数据块容量进行比对,例如缓存数据为900K,将900K依次与512K、1M和4M三种数据块大小进行比对;之后从大于空间占用容量的数据块容量中确定最小的目标数据块容量,例如:大于900K的数据块有1M和4M,选择最小的1M作为目标数据块容量,1M的数据块用来存储900K数据;然后,根据目标数据块容量从空闲列表中确定目标存储ID,例如:从空闲列表中查找哪些1M的数据块处于可用状态,例如目标存储ID为1000的数据块可用;由于不同的OBJ使用不同的数据块,从而需要根据目标存储ID确定哪一个OBJ使用了目标存储ID对应的数据块,假设使用目标数据块的OBJ为OBJ1,则OBJ1为目标OBJ;之后通过目标OBJ接收缓存数据,换言之,即通过调用OBJ1处理数据IO;之后,当目标OBJ处理缓存数据时,不直接为其分配4M的物理空间,而是按照前述目标存储ID“1000”将缓存数据存入对应的目标数据块中;最后,磁盘管理模块将目标存储ID从空闲列表中删除,以使该数据块的状态表征不可用,但是OBJ1中的其他数据块还是可用状态,所以当OBJ1中的其他数据块被使用时,OBJ1还可以被调用处理IO。
从而,通过上述方式,兼顾存储资源损耗和IO损耗都尽可能小,降低了存储引擎的综合资源损耗。
在一种可选地实施方式中,当第一容量单位、第二容量单位和第三容量单位分别是4M、1M和512K时,上述步骤S102包括:
步骤f1:检测缓存数据的空间占用容量;
步骤f2:将空间占用容量依次与4M、1M和512K的数据块容量进行比对;
步骤f3:根据比对结果,从4M、1M和512K中选择目标数据块容量,目标数据块容量是大于空间占用容量的最小容量;
步骤f4:根据目标数据块容量从空闲列表中确定目标存储ID;
步骤f5:根据目标存储ID确定使用对应目标数据块的目标OBJ;
步骤f6:通过目标OBJ接收缓存数据;
步骤f7:通过目标OBJ将缓存数据按照目标存储ID存入目标数据块中;
步骤f8:将目标存储ID从空闲列表中删除。
具体地,关于本实施例提供的具体缓存空间分配方案的原理与上述步骤b1~b8的原理相同,在此不再赘述,可参考上述步骤b1~b8的相关描述。
在一些可选地实施方式中,本发明实施例提供的缓存盘空间分配方法,还包括如下步骤:
步骤c1,当预定义的较小容量单位对应的数据块数量小于预设阈值时,将较小容量单位对应数据块中的数据合并到预定义的较大容量单位对应的数据块中。
具体地,由于缓存盘的资源有限,当执行了大量的读写IO以后,可能会有小块、中块空间不足的情况,此时如果有OBJ进行少量的数据写入,就会触发旧有处理流程,即申请完整的大数据块来使用,导致了空间的浪费。所以,本发明实施例先定义预设容量以下的数据块为较小容量单位,预设容量以上为较大容量单位,然后增加了磁盘整理流程,主要针对经过大量读写的OBJ,整个OBJ有大量的数据,但是却占用了多个小数据块。针对这类OBJ重新为其分配一个独立的大数据块,将OBJ所有的数据全部读取合并后,写入新分配的大块数据块中,最后释放其占有的小块数据块,进一步起到节约存储资源的效果。
在一些可选地实施方式中,上述步骤c1具体包括:
步骤d1,格式化时,通过各个OBJ的元数据将各个OBJ以最小的容量单位改为数组。
步骤d2,将当前OBJ中较小容量单位对应数据块中的数据按照数组表征的顺序读出。
步骤d3,将读出的数据按照数组表征的顺序写入较大容量单位对应的数据块中。
步骤d4,利用第二存储ID改写当前OBJ中的第一存储ID,第二存储ID为较大容量单位对应的数据块的存储ID,第一存储ID为较小容量单位对应数据块的存储ID。
步骤d5,将第二存储ID从空闲列表中删除。
步骤d6,将第一存储ID还原到空闲列表中。
具体地,在本发明实施例中,为了进一步方便整理后的数据能够准确读出,从而在磁盘格式化时对每个OBJ进行了数组形式的改写,例如上述图2至图5中,在OBJ的元数据中,以最小的容量单位512K将原来仅由一个ID标记的数据块,改为有8个元素的数组,图中方框下的数字用来指向OBJ中数据的相对位置。从而当进行数据合并时,如图6所示,先将OBJ之前使用的数据块中的数据读出,然后按照OBJ存储数据的数组顺序不变,即0K~512K是哪些数据,512K~1M是哪些数据,…,3M~4M是哪些数据都不变,再将读出的数据按照数组表征的顺序写入大数据块中。同时,在完成数据迁移之后,当前OBJ在数据整理之前使用的是第一存储ID对应的数据块,例如图6中的1、2、1000、9、10、1001,在数据整理之后使用的是第二存储ID的数据块,例如图6中的2001,从而还需利用第二存储ID改写当前OBJ中的第一存储ID。通过上述方式,数据整理前后的数据块虽然发生了变化,但是数据的相对位置没有发生变化,所以在数据读取时,即便只有一个大数据块的ID,但是大数据块中单独的小数据可以根据数组表征的数据存储相对位置对数据进行准确读取,解决了数据整理后数据难以准确读取的问题。
同时,本实施例还需将数据整理后的第二存储ID从空闲列表中删除,表示大数据块已被占用,将数据整理前的第一存储ID还原到空闲列表中,表示小数据块已被释放,便于磁盘管理模块重新利用释放的小数据块存储新的数据。
在一些可选地实施方式中,本发明实施例提供的缓存盘空间分配方法,还包括如下步骤:
步骤e1,接收数据删除请求。
步骤e2,通过当前OBJ响应数据删除请求,将当前OBJ使用的数据块清空。
步骤e3,清理当前OBJ的元数据信息。
步骤e4,将当前OBJ使用数据块的存储ID还原到空闲列表中。
步骤e5,当当前OBJ中的数据下刷到数据盘时,将当前OBJ使用的数据块清空。
步骤e6,清理当前OBJ的元数据信息。
步骤e7,将当前OBJ使用数据块的存储ID还原到空闲列表中。
具体地,在本发明实施例中,针对数据块的释放除了数据整理外,还包括另外两个方面。其一是磁盘管理模块正常的OBJ数据删除,根据接收的数据删除请求将当前OBJ使用的数据块清空,同时清理OBJ的元数据信息,释放其申请的所有的数据块,并根据存储ID,将对应的存储重新放入对应的空闲列表中。
其二,当缓存盘数据下刷到数据盘时。缓存旧数据一般也不需要留存,同样会触发资源的释放,此时按照前述OBJ删除逻辑处理。
通过本发明实施例提供的方案,进一步减少了冗余数据的存储,令数据块的使用更灵活,提高缓存盘的空间利用率。
需要注意的是,在一些可选地实施方式中,OBJ数据写IO的过程中涉及到数据块的申请,本实施例会根据IO请求描述的写入位置、数据大小、OBJ的当前元数据中已经获取的数据块情况,判定当前是否需要申请新的数据块以及需要申请的大小,从而将数据写入新的数据块或覆盖原数据块,最后,拿到存储ID,根据存储ID映射到真实的磁盘位置,将数据写入磁盘,然后更新OBJ的元数据信息以完成读写IO。例如:如图5所示,上一个IO请求描述的写入位置是512K~1M位置,则将数据写入第2个数据块,当前IO请求的写入位置是2.5M~3M数据块,则将数据写入新申请的第10个数据块,但是如果当前IO请求的写入位置也是512K~1M位置,则不新申请数据块,而是利用新数据覆盖第2个数据块中的旧数据。从而通过这一方式进一步提高数据读写的灵活性。
通过本发明实施例提供的方案,设计合理的磁盘分配和管理策略,在IO过程中根据需要去分配相应的磁盘空间给OBJ,减少因系统设计不合理导致的磁盘空间损耗,达到磁盘空间使用效率最大化的目的,极大地提高整个存储平台的稳定性和IO吞吐能力。缓存盘磁盘空间的分配采用多种方式,结合IO请求和当前元数据信息申请合理的空间存储数据,降低存储系统缓存盘的损耗,从而提高缓存命中率,还达到提升系统性能的目的。
在本实施例中还提供了一种缓存盘空间分配装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种缓存盘空间分配装置,如图7所示,包括:
数据块划分单元701,用于在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块。详细内容参见上述方法实施例中步骤S101的相关描述,在此不再进行赘述。
数据块分配单元702,用于接收缓存数据,并基于缓存数据占用空间的大小从多种不同大小的数据块中为缓存数据分配目标数据块。详细内容参见上述方法实施例中步骤S102的相关描述,在此不再进行赘述。
存储单元703,用于将缓存数据存入目标数据块。详细内容参见上述方法实施例中步骤S103的相关描述,在此不再进行赘述。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的缓存盘空间分配装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图7所示的缓存盘空间分配装置。
请参阅图8,图8是本发明可选实施例提供的一种计算机设备的结构示意图,如图8所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图8中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种缓存盘空间分配方法,其特征在于,所述方法包括:
在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块;
接收缓存数据,并基于所述缓存数据占用空间的大小从多种不同大小的数据块中为所述缓存数据分配目标数据块;
将所述缓存数据存入所述目标数据块。
2.根据权利要求1所述的方法,其特征在于,所述将缓存盘的数据区格式化为多种不同大小的数据块,包括:
按照不同的容量单位将所述数据区划分为与各种容量单位对应大小的数据块,并得到每个数据块对应的存储ID,所述存储ID用于对应缓存盘的物理位置,各所述数据块的存储ID互不重复;
将每个数据块对应的存储ID放入空闲列表,所述空闲列表中的存储ID用于表示对应的数据块为可用状态;
定义OBJ的大小,并将编号后的数据块映射到不同的OBJ当中。
3.根据权利要求2所述的方法,其特征在于,所述按照不同的容量单位将所述数据区划分为与各种容量单位对应大小的数据块,包括:
将所述缓存盘分为三个区域;
分别对三个区域按照预设的第一容量单位、第二容量单位和第三容量单位进行划分,得到多个大数据块、中数据块和小数据块,所述第一容量单位>所述第二容量单位>第三容量单位。
4.根据权利要求3所述的方法,其特征在于,所述第一容量单位、第二容量单位和第三容量单位分别是4M、1M和512K,所述接收缓存数据,并基于所述缓存数据占用空间的大小从多种不同大小的数据块中为所述缓存数据分配目标数据块,包括:
检测所述缓存数据的空间占用容量;
将所述空间占用容量依次与4M、1M和512K的数据块容量进行比对;
根据比对结果,从4M、1M和512K中选择目标数据块容量,所述目标数据块容量是大于所述空间占用容量的最小容量;
根据所述目标数据块容量从所述空闲列表中确定目标存储ID;
根据所述目标存储ID确定使用对应所述目标数据块的目标OBJ;
通过所述目标OBJ接收所述缓存数据;
通过所述目标OBJ将所述缓存数据按照所述目标存储ID存入所述目标数据块中;
将所述目标存储ID从所述空闲列表中删除。
5.根据权利要求2所述的方法,其特征在于,所述接收缓存数据,并基于所述缓存数据占用空间的大小从多种不同大小的数据块中为所述缓存数据分配目标数据块,包括:
检测所述缓存数据的空间占用容量;
将所述空间占用容量依次与各种大小的数据块容量进行比对;
根据比对结果,从大于所述空间占用容量的数据块容量中确定最小的目标数据块容量;
根据所述目标数据块容量从所述空闲列表中确定目标存储ID;
根据所述目标存储ID确定使用对应所述目标数据块的目标OBJ;
通过所述目标OBJ接收所述缓存数据;
通过所述目标OBJ将所述缓存数据按照所述目标存储ID存入所述目标数据块中;
将所述目标存储ID从所述空闲列表中删除。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当预定义的较小容量单位对应的数据块数量小于预设阈值时,将所述较小容量单位对应数据块中的数据合并到预定义的较大容量单位对应的数据块中。
7.根据权利要求6所述的方法,其特征在于,格式化时通过各个OBJ的元数据将各个OBJ以最小的容量单位改为数组,所述将所述较小容量单位对应数据块中的数据合并到预定义的较大容量单位对应的数据块中,包括:
将当前OBJ中所述较小容量单位对应数据块中的数据按照所述数组表征的顺序读出;
将读出的数据按照所述数组表征的顺序写入所述较大容量单位对应的数据块中;
利用第二存储ID改写所述当前OBJ中的第一存储ID,所述第二存储ID为所述较大容量单位对应的数据块的存储ID,所述第一存储ID为所述较小容量单位对应数据块的存储ID;
将所述第二存储ID从所述空闲列表中删除;
将所述第一存储ID还原到所述空闲列表中。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收数据删除请求;
通过当前OBJ响应所述数据删除请求,将所述当前OBJ使用的数据块清空;
清理当前OBJ的元数据信息;
将所述当前OBJ使用数据块的存储ID还原到所述空闲列表中;
当当前OBJ中的数据下刷到数据盘时,将所述当前OBJ使用的数据块清空;
清理当前OBJ的元数据信息;
将所述当前OBJ使用数据块的存储ID还原到所述空闲列表中。
9.一种缓存盘空间分配装置,其特征在于,所述装置包括:
数据块划分单元,用于在对缓存盘进行格式化时,将缓存盘的数据区格式化为多种不同大小的数据块;
数据块分配单元,用于接收缓存数据,并基于所述缓存数据占用空间的大小从多种不同大小的数据块中为所述缓存数据分配目标数据块;
存储单元,用于将所述缓存数据存入所述目标数据块。
10.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至8中任一项所述的缓存盘空间分配方法。
CN202311257176.0A 2023-09-26 2023-09-26 一种缓存盘空间分配方法、装置、计算机设备及存储介质 Pending CN117311621A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311257176.0A CN117311621A (zh) 2023-09-26 2023-09-26 一种缓存盘空间分配方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311257176.0A CN117311621A (zh) 2023-09-26 2023-09-26 一种缓存盘空间分配方法、装置、计算机设备及存储介质

Publications (1)

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

Family

ID=89241983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311257176.0A Pending CN117311621A (zh) 2023-09-26 2023-09-26 一种缓存盘空间分配方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN117311621A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539796A (zh) * 2024-01-09 2024-02-09 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法
CN117632039A (zh) * 2024-01-25 2024-03-01 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539796A (zh) * 2024-01-09 2024-02-09 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法
CN117539796B (zh) * 2024-01-09 2024-05-28 深圳宏芯宇电子股份有限公司 电子装置及缓冲存储器管理方法
CN117632039A (zh) * 2024-01-25 2024-03-01 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
CN117632039B (zh) * 2024-01-25 2024-05-03 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元

Similar Documents

Publication Publication Date Title
US10782903B2 (en) Memory system and method for controlling nonvolatile memory
CN108572792B (zh) 数据存储方法、装置、电子设备及计算机可读存储介质
CN117311621A (zh) 一种缓存盘空间分配方法、装置、计算机设备及存储介质
JP5347061B2 (ja) フラッシュメモリデータストレージデバイスにデータを格納するための方法及び装置
US9355119B2 (en) Allocation of absent data within filesystems
CN110555001B (zh) 数据处理方法、装置、终端及介质
US10789170B2 (en) Storage management method, electronic device and computer readable medium
CN108733306A (zh) 一种文件合并方法及装置
KR20180086120A (ko) 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘
US7032093B1 (en) On-demand allocation of physical storage for virtual volumes using a zero logical disk
CN104503703A (zh) 缓存的处理方法和装置
CN110162396A (zh) 内存回收方法、装置、系统和存储介质
CN111639037B (zh) 一种缓存的动态分配方法、装置及DRAM-Less固态硬盘
JP4612269B2 (ja) 仮想ボリューム管理方式
CN113434470B (zh) 数据分布方法、装置及电子设备
CN111562883B (zh) 固态硬盘的缓存管理系统、方法、装置
CN106557277B (zh) 磁盘阵列的读方法及装置
CN115904211A (zh) 一种存储系统、数据处理方法及相关设备
US20220365677A1 (en) Storage management device, storage management method, and program
CN117389485B (zh) 存储性能优化方法、装置、存储系统、电子设备和介质
CN117032596B (zh) 数据访问方法及装置、存储介质及电子设备
EP4187363A1 (en) Storage controller, storage control method, solid state disk and storage system
US20220391317A1 (en) Systems, methods, and apparatus for wear-level aware memory allocation
CN117806989A (zh) 基于持久化内存的高速数据处理方法、装置、设备及介质
CN116560848A (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