CN114442927B - 一种数据存储空间的管理方法及装置 - Google Patents
一种数据存储空间的管理方法及装置 Download PDFInfo
- Publication number
- CN114442927B CN114442927B CN202111583353.5A CN202111583353A CN114442927B CN 114442927 B CN114442927 B CN 114442927B CN 202111583353 A CN202111583353 A CN 202111583353A CN 114442927 B CN114442927 B CN 114442927B
- Authority
- CN
- China
- Prior art keywords
- storage space
- weight value
- determining
- alternative
- alternative storage
- 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.)
- Active
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 21
- 238000007726 management method Methods 0.000 title description 25
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000004422 calculation algorithm Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 239000012634 fragment Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000012216 screening Methods 0.000 description 5
- 239000000306 component Substances 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储空间的管理方法及装置,用以提供当存在多个备选存储空间时的目标存储空间的确定方案。本申请提供的方法,包括:当需要分配数据存储空间时,确定备选存储空间;当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;根据所述权重值,确定目标存储空间。
Description
技术领域
本申请涉及数据技术领域,尤其涉及一种数据存储空间的管理方法及装置。
背景技术
以下背景技术的描述可以包括对本申请的实施例的至少一些示例的见解、发现、理解或公开或关联、以及相关现有技术不知道但由本申请提供的公开内容。本申请的一些这种贡献可以在下面被具体指出,而本申请的其他这种贡献将从相关上下文中显而易见。
存储资源,例如内存(包括持久化内存)、硬盘等,其使用离不开存储资源管理系统,这种系统往往都是一些核心系统的核心组件之一,所述核心系统例如操作系统、数据库、分布式存储系统、缓存系统等。
因此,存储资源管理系统的好坏直接决定了存储资源能否被高效的使用。存储资源能否被高效的使用,最重要的一个评价维度就是存储空间分配过程中产生的碎片的多少。
存储资源管理系统离不开其管理算法,常见的管理算法有最先匹配(Fist Fit)、下次匹配(Next Fit)、最佳匹配(Best Fit)、最差匹配(Worst Fit)、顺序匹配(SequentialFit)、伙伴系统(buddy)、slab等,其中前五种比较适合连续存储空间的管理,这其中在碎片处理上表现最好的当属最佳匹配(Best Fit)方法,然而在同等条件下,如果出现多个匹配的存储空间时,现有技术无法解决。
发明内容
本申请实施例提供了一种数据存储空间的管理方法及装置,用以提供当存在多个备选存储空间时的目标存储空间的确定方案。
本申请实施例提供的一种数据存储空间的管理方法,包括:
当需要分配数据存储空间时,确定备选存储空间;
当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;
根据所述权重值,确定目标存储空间。
本申请实施例中,当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;根据所述权重值,进一步确定目标存储空间,从而提供了当存在多个备选存储空间时的目标存储空间的确定方案。
可选地,确定每一备选存储空间对应的权重值,具体包括:
对于每一备选存储空间,根据该备选存储空间的相邻连续已分配存储空间的大小,确定该备选存储空间对应的权重值。
从而,本申请实施例可以根据备选存储空间的相邻连续已分配存储空间的大小,确定目标存储空间,减少了连续存储空间的分配管理过程中产生的碎片。
可选地,通过滑动窗口分别确定每一备选存储空间的左、右两侧的相邻连续已分配存储空间的大小;
对于每一备选存储空间,根据该备选存储空间的左侧的相邻连续已分配存储空间的大小,确定该备选存储空间的左权重值;根据该备选存储空间的右侧的相邻连续已分配存储空间的大小,确定该备选存储空间的右权重值;根据该备选存储空间的左权重值和右权重值,最终确定该备选存储空间对应的权重值。
可选地,根据所述权重值,确定目标存储空间,具体包括:
将左权重值和右权重值之和最大的备选存储空间,作为目标存储空间。
可选地,若存在左权重值和右权重值之和最大的多个备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,选择左权重值或右权重值为0的备选存储空间,作为目标存储空间。
可选地,若在左权重值和右权重值之和最大的多个备选存储空间中,不存在左权重值或右权重值为0的备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,将左权重值和右权重值之积最大的备选存储空间,作为目标存储空间。
可选地,所述确定备选存储空间,具体包括:
确定比特表Bitmap;所述Bitmap通过二进制方式存储有Bucket中每一block的使用情况;
计算所述Bitmap的哈希值;
根据所述哈希值,确定备选存储空间。
本申请另一实施例提供了一种计算设备,其包括存储器和处理器,其中,所述存储器用于存储程序指令,所述处理器用于调用所述存储器中存储的程序指令,按照获得的程序执行上述任一种方法。
此外,根据实施例,例如提供了一种用于计算机的计算机程序产品,其包括软件代码部分,当所述产品在计算机上运行时,这些软件代码部分用于执行上述所定义的方法的步骤。该计算机程序产品可以包括在其上存储有软件代码部分的计算机可读介质。此外,该计算机程序产品可以通过上传过程、下载过程和推送过程中的至少一个经由网络直接加载到计算机的内部存储器中和/或发送。
本申请另一实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行上述任一种方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的Bucket内部由连续的一个或多个block组成的示意图;
图2为本申请实施例提供的Bucket内的目标存储空间的示意图;
图3为本申请实施例提供的数据存储空间的管理系统的架构示意图;
图4为本申请实施例提供的Bucket内block6、block13作为备选存储空间的示意图;
图5为本申请实施例提供的Bucket内block6、block13的左侧初始滑动窗口大小示意图;
图6为本申请实施例提供的Bucket内block6、block13的左侧滑动窗口压缩后的大小示意图;
图7为本申请实施例提供的一种数据存储空间的管理方法的具体流程示意图;
图8为本申请实施例提供的一种数据存储空间的管理方法的总体流程示意图;
图9为本申请实施例提供的一种数据存储空间的管理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种数据存储空间的管理方法及装置,用以提供当存在多个备选存储空间时的目标存储空间的确定方案。
其中,方法和装置是基于同一申请构思的,由于方法和装置解决问题的原理相似,因此装置和方法的实施可以相互参见,重复之处不再赘述。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下示例和实施例将只被理解为是说明性的示例。虽然本说明书可能在若干处提及“一”、“一个”或“一些”示例或实施例,但这并非意味着每个这种提及都与相同的示例或实施例有关,也并非意味着该特征仅适用于单个示例或实施例。不同实施例的单个特征也可以被组合以提供其他实施例。此外,如“包括”和“包含”的术语应被理解为并不将所描述的实施例限制为仅由已提及的那些特征组成;这种示例和实施例还可以包含并未具体提及的特征、结构、单元、模块等。
下面结合说明书附图对本申请各个实施例进行详细描述。需要说明的是,本申请实施例的展示顺序仅代表实施例的先后顺序,并不代表实施例所提供的技术方案的优劣。
存储资源管理系统离不开其管理算法,常见的管理算法有最先匹配(Fist Fit)、下次匹配(Next Fit)、最佳匹配(Best Fit)、最差匹配(Worst Fit)、顺序匹配(SequentialFit)、伙伴系统(buddy)、slab等,其中前五种比较适合连续存储空间的管理,这其中在碎片处理上表现最好的当属最佳匹配(Best Fit)方法,然而在同等条件下,如果出现多个匹配的存储空间时,现有技术无法解决。
本申请实施例总结了连续存储空间管理时,传统最佳匹配(Best Fit)方法的缺点和不足,提供了一种以匹配空间周围已分配区域“密集”或“稀疏”程度作为进一步筛选最佳匹配空间的技术方案,以减少连续存储空间管理时分配空间过程中产生的碎片。
本申请实施例所述的存储空间是通过一个个大小相同的桶(Bucket)来管理的,不同的Bucket在地址上可能不连续,Bucket是固定大小的连续存储空间,由相同大小的块(block)组成。本文中所指的空间就是Bucket内部连续的一个或多个block组成的区域,如图1所示,一个Bucket包括连续的block0~block n。
本申请实施例所讨论的存储空间管理的范围是Bucket内部连续存储空间的管理,而对于Bucket本身的管理、如何分配、回收等,都不在本申请实施例讨论的范围内。
本申请实施例提供的技术方案的基本实现原理是:在标准最佳匹配算法(BestFit)的基础上,从所有匹配的空间中找到一块最合适的空间,与这块最合适的空间相邻的已分配空间区域是最“密集”的。而为何要选择已分配区域是最“密集”的,是因为这些已分配区域在空间释放时,越“密集”的区域越不容易产生大块连续的空间,而已分配区域越“稀疏”的区域,空间释放时,越容易产生大块连续的空间,因此从已分配区域越“密集”的地方分配空间,这样当有空间释放时,对于整个Bucket的内部空间,就更容易合并出大块连续的空间,从而减少了碎片的产生。
如何确定一个区域是最“密集”的已分配空间区域,需要通过本申请实施例提供的滑动窗口算法和预设权值来共同确定,通过滑动窗口算法最终计算出权值最大的区域,则为最密集的区域。例如:需要分配一个block大小的空间,根据最佳匹配算法(Best Fit)确定block6、block13都能满足,而根据本申请实施例提供的方案,从中确定block13才是真正的目标空间,因为其权值最大(在后续Sliding Window模块、Weighted Strategy模块说明部分会有通过具体算法推算的过程),也就是说,block13周围已经分配的区域最“密集”,如图2所示,除了block13,与block13相邻的block 10~block 15均为已分配的空间区域。
例如,如图3所示,本申请实施例提供的系统(或者可以称为数据存储处理装置)主要包括:Bitmap模块、BestFit Algorithm模块、Sliding Window模块、Weighted Strategy模块、Hash Table模块。
其中,Bitmap表示位图;BestFit Algorithm表示最佳匹配算法;Sliding Window表示滑动窗口;Weighted Strategy表示权重计算;Hash Table表示哈希表。各模块的具体功能如下:
Bitmap模块:位图模块,存储Bucket的Bitmap(比特表)值,用来管理Bucket内部连续存储空间的使用情况,在分配、回收空间时使用,通过一个二进制位表示对应的空间是否被分配以及能否满足请求空间的分配需要。具体来说,Bitmap的哈希(Hash)值表示最大连续存储空间的大小,因此通过计算这个Hash值,就可以快速预判是否进一步进行分配。哈希值的计算通过Hash Table模块的Bitmap Table子模块来获取。正式分配一个空间时,将Bitmap的对应的二进制位置为1,相反,释放(回收)一个空间时,则将对应的二进制位置为0。
BestFit Algorithm模块:最佳匹配算法模块,实现空间的初级分配,具体原理是,从一个Bucket内部尚未分配的block中,找到满足大小的空间,然后对这些空间进行排序,从中挑出最小满足需要的一些block。本申请实施例中,最核心的内容就是解决当这些block不唯一时,如何从多个block中进一步选择最终目标block的问题,而如何筛选,则是其他几个模块共同协作完成的。
Sliding Window模块:滑动窗口模块,主要功能是找出备选block区域周围(左右相邻区域)已经分配空间的“密集”区域,这个区域则用左窗口来表示。具体来说,以当前匹配Block作为窗口右边界的下一个位置,在左侧相邻区域确定出滑动窗口的左边界,初始状态可以是Bitmap的最左测的block,但是窗口的初始大小以不超过16个block为好(16个以内哈希表的大小适中),超过时可以直接调整滑动窗口的左边界直到窗口大小为16。然后进行窗口大小的压缩调整,调整时窗口的右界保持不动,将窗口的左边界向右方向单向进行压缩,当窗口中包含的全是已分配的block(即对应Bitmap的二进制位全为1)时,窗口大小的压缩调整完成,即最终确定出左窗口的大小,即包括几个block。如果窗口大小为0时,则不进行任何调整。
同理,这个“密集”区域也可以用右窗口来表示。具体来说,以当前匹配Block作为窗口左边界的下一个位置,在右侧相邻区域确定出滑动窗口的右边界,初始状态可以是Bitmap的最右测的block,但是窗口的初始大小以不超过16个block为好(16个以内哈希表的大小适中),超过时可以直接调整滑动窗口的右边界直到窗口大小为16。然后进行窗口大小的压缩调整,调整时窗口的左界保持不动,将窗口的右边界向左方向单向进行压缩,当窗口中包含的全是已分配的block(即对应Bitmap的二进制位全为1)时,窗口大小的压缩调整完成,即最终确定出右窗口的大小,即包括几个block。如果窗口大小为0时,则不进行任何调整。
具体例如:如图4所示,如果用灰色块表示已经分配的block,白色块表示尚未分配的block,假设一个Bucket由16个大小相等的block组成,其Bitmap值为0b1101110010100001U,通过BestFit Algorithm模块已经算出block6、block13都能满足分配需求。
以调整左侧窗口为例,窗口初始大小如图5中虚线框部分所示,其中block6的窗口大小为6,即覆盖block 0~block 5的6个block;block13的窗口大小为13,即覆盖block 0~block 12的13个block。
上述block6、block13的窗口分别向右压缩,如图6所示,最终确定block6左侧的窗口大小为1,即覆盖block 5,block13左侧的窗口大小为3,即覆盖block 10~block 12。
同理,通过同样的方法,可以计算出block6右侧的窗口大小为1,block13右侧的窗口大小为2。
Weighted Strategy模块:权重计算模块,用于计算出备选block区域的权重值,这个权重值用来表示一块区域的“密集”程度,值越大,表示越“密集”。在同等筛选条件下,当多个block区域满足分配要求时,优先选择已分配空间比较“密集”的区域,即权值最大的空间。
权重值计算方法以及筛选备选block区域的策略,例如包括:
通过输入滑动窗口模块的输出结果,即左、右窗口的大小,来计算各备选block区域的权重,左窗口的大小为左权值,右窗口的大小为右权值。左权值或右权值的计算公式即:
weightL/R=windowsizeL/R
其中,weight表示权值,下标L表示左权值,R表示右权值;windowsize表示窗口的大小,下标L表示左窗口的大小,R表示右窗口的大小。
左、右权重值求和,作为备选block区域的权重值,选择权值最大的备选block区域作为最终的目标block区域。其中的左、右权重值求和计算公式即:
weight=weightL+weightR
如果备选block区域的权重值相等,则进行下一步:
如果左、右权值中有0时,选择左、右权值中有0的备选区域作为最终的目标block区域,否则进行下一步:
将左、右权重值的乘积作为备选block区域的权重值,然后选择权值最大的block区域作为最终的目标block区域。其中的权值计算公式如下:
weight=weightL×weightR
通过上述权值计算策略,可以得到前面举例中所述的block6的权值为2,block13的权值为5,因此最终筛选出的是block13作为最终的目标block区域进行空间分配。
Hash Table模块:哈希计算模块,由Bitmap Table、Sliding Window Table两个子模块组成,主要功能是根据输入快速计算出对应的哈希值。
其中,Bitmap Table子模块通过输入Bitmap,产生哈希值,这个哈希值表示当前Bucket中最大连续存储空间的大小,供分配时判断当前Bucket中是否有满足需要的空间。
而Sliding Window Table子模块通过输入初始窗口的Bitmap值,来快速计算出最终压缩后的窗口大小,是对Sliding Window模块进行窗口压缩时的一种加速手段。
综上所述,本申请实施例提供的技术方案的总体流程如图7所示。
其中,空间分配流程如下:
步骤一、收到分配空间请求;
步骤二、对当前bucket的Bitmap值传入Bitmap Table模块进行hash计算;
步骤三、从Bitmap Table模块的输出中得到哈希值;
步骤四、判断当前的哈希值是否小于需要分配空间的大小,如果是,则分配失败,结束。否则,执行步骤五,进行进一步分配;
步骤五、通过最佳匹配算法,找到满足需求的block区域;
步骤六、如果步骤五中找到的满足需求的block的数量不为1,则执行步骤七,进行进一步分配。否则,执行步骤十一;
步骤七、滑动窗口计算,得到左、右窗口大小;
步骤八、根据前一步中输出的窗口大小,计算出左、右权值,最终算出各备选block的权重值(此处的子流程省略);
步骤九、从步骤五中选出的备选block中挑出权重值最大的block区域,然后执行步骤十一。如果权重值最大的block区域不止一个,则进行下一步;
步骤十、从前一步的结果中随机筛选出一个block区域作为最终的目标block区域;
步骤十一、分配成功,将最终的目标block在bitmap中对应的二进制位置1,结束。
空间回收流程,例如包括如下步骤:
步骤一、收到释放空间请求;其中,携带需要释放的目标block的信息;
步骤二、将需要释放的目标block在bitmap中相应的二进制位置0;
步骤三、空间回收成功,结束。
可见,传统的最佳匹配算法只能从最小满足空间大小需求的区域中选择一个区域作为目标区域,而如果有多个区域都满足需求时,则无能为力,而本申请实施例提供的方法可以通过已经分配空间的“密集”程度进一步深入的筛选,对减少分配空间时造成的碎片有很好的促进作用,使分配系统显的更加智能。
进一步,本申请实施例所述的方案中存在多处哈希计算,例如判断空间是否满足请求大小需要、滑动窗口压缩调整。如果不采用哈希计算,可以采用遍历的方式去完成相应的工作,但是效率会比较低,而采用哈希计算,效率会明显提升。
另外,本申请实施例在回收空间时,可以自动完成连续存储空间的合并,效率极高。如果采用传统的做法,即通过free list来管理bucket内部的未分配的存储空间,在空间释放时,需要遍历free list,来判断释放空间前后的区域是否也在free list上,如果在,则去完成空间合并,这样的时间复杂度是O(n)。而采用本申请实施例所述的方法,由于采用了Bitmap,在收到释放空间的请求后,将Bitmap相应位置0,则回收成功,时间复杂度只有O(1)。
需要说明的是,本申请实施例虽然提供的是在最佳匹配算法基础上的改进,但是本申请实施例所提供的方法的应用并不局限于此,可以通过本申请实施例提到的方法确定一个区域的“密集”程度,从而可以评估一块存储空间分散的程度。
本申请实施例所提供的技术方案,可以适用的应用场景例如:
1.资源紧凑性系统场景,如嵌入式系统、网关cache。
2.资源昂贵性系统场景,如使用持久化内存的系统。
具体地,本申请实施例所提供的技术方案具有如下应用及相应的有益效果:
任何操作系统都需要对内存、硬盘进行空间管理,可以将本申请实施例所提供的技术方案引入操作系统作为OS的核心模块使用。
有些数据库系统需要自己去管理存储空间,可以将本申请实施例所提供的技术方案应用于数据库的底层存储管理中。
用于分布式存储系统的硬盘空间管理,节省存储空间,降低存储成本。
用于持久化内存的空间管理,节省存储空间,降低成本。
综上所述,参见图8,本申请实施例提供的一种数据存储空间的管理方法,包括:
S101、当需要分配数据存储空间时,确定备选存储空间;
S102、当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;
S103、根据所述权重值,确定目标存储空间。
本申请实施例中,当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;根据所述权重值,进一步确定目标存储空间,从而提供了当存在多个备选存储空间时的目标存储空间的确定方案。
可选地,确定每一备选存储空间对应的权重值,具体包括:
对于每一备选存储空间,根据该备选存储空间的相邻连续已分配存储空间的大小,确定该备选存储空间对应的权重值。
从而,本申请实施例可以根据备选存储空间的相邻连续已分配存储空间的大小,确定目标存储空间,减少了连续存储空间的分配管理过程中产生的碎片。
可选地,通过滑动窗口分别确定每一备选存储空间的左、右两侧的相邻连续已分配存储空间的大小;
对于每一备选存储空间,根据该备选存储空间的左侧的相邻连续已分配存储空间的大小,确定该备选存储空间的左权重值;根据该备选存储空间的右侧的相邻连续已分配存储空间的大小,确定该备选存储空间的右权重值;根据该备选存储空间的左权重值和右权重值,最终确定该备选存储空间对应的权重值。
可选地,根据所述权重值,确定目标存储空间,具体包括:
将左权重值和右权重值之和最大的备选存储空间,作为目标存储空间。
可选地,若存在左权重值和右权重值之和最大的多个备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,选择左权重值或右权重值为0的备选存储空间,作为目标存储空间。
可选地,若在左权重值和右权重值之和最大的多个备选存储空间中,不存在左权重值或右权重值为0的备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,将左权重值和右权重值之积最大的备选存储空间,作为目标存储空间。
可选地,所述确定备选存储空间,具体包括:
确定比特表Bitmap;所述Bitmap通过二进制方式存储有Bucket中每一block的使用情况;
计算所述Bitmap的哈希值;
根据所述哈希值,确定备选存储空间。
可选地,该方法还包括:
当收到释放空间请求时,根据释放空间请求,将所述Bitmap中需要释放的空间对应的二进制位置为0。
下面介绍一下本申请实施例提供的设备或装置,其中与上述方法中所述的相同或相应的技术特征的解释或举例说明,后续不再赘述。
参见图9,本申请实施例提供的一种数据存储空间的管理装置,包括存储器11和处理器12,其中,所述存储器11用于存储程序指令,所述处理器12用于调用所述存储器11中存储的程序指令,按照获得的程序执行:
当需要分配数据存储空间时,确定备选存储空间;
当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;
根据所述权重值,确定目标存储空间。
可选地,确定每一备选存储空间对应的权重值,具体包括:
对于每一备选存储空间,根据该备选存储空间的相邻连续已分配存储空间的大小,确定该备选存储空间对应的权重值。
从而,本申请实施例可以根据备选存储空间的相邻连续已分配存储空间的大小,确定目标存储空间,减少了连续存储空间的分配管理过程中产生的碎片。
可选地,处理器12通过滑动窗口分别确定每一备选存储空间的左、右两侧的相邻连续已分配存储空间的大小;
对于每一备选存储空间,处理器12根据该备选存储空间的左侧的相邻连续已分配存储空间的大小,确定该备选存储空间的左权重值;根据该备选存储空间的右侧的相邻连续已分配存储空间的大小,确定该备选存储空间的右权重值;根据该备选存储空间的左权重值和右权重值,最终确定该备选存储空间对应的权重值。
可选地,根据所述权重值,确定目标存储空间,具体包括:
将左权重值和右权重值之和最大的备选存储空间,作为目标存储空间。
可选地,若存在左权重值和右权重值之和最大的多个备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,选择左权重值或右权重值为0的备选存储空间,作为目标存储空间。
可选地,若在左权重值和右权重值之和最大的多个备选存储空间中,不存在左权重值或右权重值为0的备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,将左权重值和右权重值之积最大的备选存储空间,作为目标存储空间。
可选地,所述确定备选存储空间,具体包括:
确定比特表Bitmap;所述Bitmap通过二进制方式存储有Bucket中每一block的使用情况;
计算所述Bitmap的哈希值;
根据所述哈希值,确定备选存储空间。
可选地,处理器12还用于:
当收到释放空间请求时,根据释放空间请求,将所述Bitmap中需要释放的空间对应的二进制位置为0。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本申请实施例中,存储器可以用于存储本申请实施例提供的任一所述方法的程序。
处理器通过调用存储器存储的程序指令,处理器用于按照获得的程序指令执行本申请实施例提供的任一所述方法。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的任一所述方法。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请实施例提供了一种计算机可读存储介质,用于储存为上述本申请实施例提供的装置所用的计算机程序指令,其包含用于执行上述本申请实施例提供的任一方法的程序。所述计算机可读存储介质,可以是非暂时性计算机可读介质。
所述计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
应当理解:
通信网络中的实体经由其往来传送流量的接入技术可以是任何合适的当前或未来技术,诸如可以使用WLAN(无线本地接入网络)、WiMAX(微波接入全球互操作性)、LTE、LTE-A、5G、蓝牙、红外等;另外,实施例还可以应用有线技术,例如,基于IP的接入技术,如有线网络或固定线路。
适合于被实现为软件代码或其一部分并使用处理器或处理功能运行的实施例是独立于软件代码的,并且可以使用任何已知或未来开发的编程语言来规定,诸如高级编程语言,诸如objective-C、C、C++、C#、Java、Python、Javascript、其他脚本语言等,或低级编程语言,诸如机器语言或汇编程序。
实施例的实现是独立于硬件的,并且可以使用任何已知或未来开发的硬件技术或其任何混合来实现,诸如微处理器或CPU(中央处理单元)、MOS(金属氧化物半导体)、CMOS(互补MOS)、BiMOS(双极MOS)、BiCMOS(双极CMOS)、ECL(发射极耦合逻辑)和/或TTL(晶体管-晶体管逻辑)。
实施例可以被实现为单独的设备、装置、单元、部件或功能,或者以分布式方式实现,例如,可以在处理中使用或共享一个或多个处理器或处理功能,或者可以在处理中使用和共享一个或多个处理段或处理部分,其中,一个物理处理器或多于一个的物理处理器可以被用于实现一个或多个专用于如所描述的特定处理的处理部分。
装置可以由半导体芯片、芯片组或包括这种芯片或芯片组的(硬件)模块来实现。
实施例还可以被实现为硬件和软件的任何组合,诸如ASIC(应用特定IC(集成电路))组件、FPGA(现场可编程门阵列)或CPLD(复杂可编程逻辑器件)组件或DSP(数字信号处理器)组件。
实施例还可以被实现为计算机程序产品,包括在其中体现计算机可读程序代码的计算机可用介质,该计算机可读程序代码适应于执行如实施例中所描述的过程,其中,该计算机可用介质可以是非暂时性介质。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (5)
1.一种数据存储空间的管理方法,其特征在于,该方法包括:
当需要分配数据存储空间时,确定备选存储空间;
当存在多个备选存储空间时,确定每一备选存储空间对应的权重值;
根据所述权重值,确定目标存储空间;
其中,确定每一备选存储空间对应的权重值,具体包括:
对于每一备选存储空间,根据该备选存储空间的相邻连续已分配存储空间的大小,确定该备选存储空间对应的权重值;
其中,通过滑动窗口分别确定每一备选存储空间的左、右两侧的相邻连续已分配存储空间的大小;
对于每一备选存储空间,根据该备选存储空间的左侧的相邻连续已分配存储空间的大小,确定该备选存储空间的左权重值;根据该备选存储空间的右侧的相邻连续已分配存储空间的大小,确定该备选存储空间的右权重值;根据该备选存储空间的左权重值和右权重值,最终确定该备选存储空间对应的权重值;
其中,根据所述权重值,确定目标存储空间,具体包括:
将左权重值和右权重值之和最大的备选存储空间,作为目标存储空间;
若存在左权重值和右权重值之和最大的多个备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,选择左权重值或右权重值为0的备选存储空间,作为目标存储空间。
2.根据权利要求1所述的方法,其特征在于,若在左权重值和右权重值之和最大的多个备选存储空间中,不存在左权重值或右权重值为0的备选存储空间,则在左权重值和右权重值之和最大的多个备选存储空间中,将左权重值和右权重值之积最大的备选存储空间,作为目标存储空间。
3.根据权利要求1所述的方法,其特征在于,所述确定备选存储空间,具体包括:
确定比特表Bitmap;所述Bitmap通过二进制方式存储有Bucket中每一block的使用情况;
计算所述Bitmap的哈希值;
根据所述哈希值,确定备选存储空间。
4.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至3任一项所述的方法。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行权利要求1至3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111583353.5A CN114442927B (zh) | 2021-12-22 | 2021-12-22 | 一种数据存储空间的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111583353.5A CN114442927B (zh) | 2021-12-22 | 2021-12-22 | 一种数据存储空间的管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114442927A CN114442927A (zh) | 2022-05-06 |
CN114442927B true CN114442927B (zh) | 2023-11-03 |
Family
ID=81364266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111583353.5A Active CN114442927B (zh) | 2021-12-22 | 2021-12-22 | 一种数据存储空间的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114442927B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012042792A1 (en) * | 2010-09-30 | 2012-04-05 | Nec Corporation | Storage system |
GB201611296D0 (en) * | 2016-06-29 | 2016-08-10 | Advanced Risc Mach Ltd | Accessing encoded blocks of data in memory |
WO2017107015A1 (zh) * | 2015-12-21 | 2017-06-29 | 华为技术有限公司 | 存储空间的分配方法及存储设备 |
CN109885255A (zh) * | 2019-01-07 | 2019-06-14 | 北京小米移动软件有限公司 | 存储空间整理方法及装置 |
EP3575981A1 (en) * | 2018-05-31 | 2019-12-04 | Sap Se | Adaptive timestamp access controller |
CN110764706A (zh) * | 2019-10-25 | 2020-02-07 | 普联技术有限公司 | 存储系统、数据管理方法及存储介质 |
CN111338569A (zh) * | 2020-02-16 | 2020-06-26 | 西安奥卡云数据科技有限公司 | 一种基于直接映射的对象存储后端优化方法 |
US11055028B1 (en) * | 2020-02-03 | 2021-07-06 | EMC IP Holding Company LLC | Storage system with reduced read latency |
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8880839B2 (en) * | 2011-04-14 | 2014-11-04 | International Business Machines Corporation | Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride |
US10509721B2 (en) * | 2017-11-09 | 2019-12-17 | Microsoft Technology Licensing, Llc | Performance counters for computer memory |
US11157189B2 (en) * | 2019-07-10 | 2021-10-26 | Dell Products L.P. | Hybrid data reduction |
US11429294B2 (en) * | 2020-05-22 | 2022-08-30 | Dell Products L.P. | Efficient compressed track size classification to reduce disk fragmentation and increase probability of in-place compressed writes |
-
2021
- 2021-12-22 CN CN202111583353.5A patent/CN114442927B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012042792A1 (en) * | 2010-09-30 | 2012-04-05 | Nec Corporation | Storage system |
WO2017107015A1 (zh) * | 2015-12-21 | 2017-06-29 | 华为技术有限公司 | 存储空间的分配方法及存储设备 |
GB201611296D0 (en) * | 2016-06-29 | 2016-08-10 | Advanced Risc Mach Ltd | Accessing encoded blocks of data in memory |
EP3575981A1 (en) * | 2018-05-31 | 2019-12-04 | Sap Se | Adaptive timestamp access controller |
CN109885255A (zh) * | 2019-01-07 | 2019-06-14 | 北京小米移动软件有限公司 | 存储空间整理方法及装置 |
CN110764706A (zh) * | 2019-10-25 | 2020-02-07 | 普联技术有限公司 | 存储系统、数据管理方法及存储介质 |
US11055028B1 (en) * | 2020-02-03 | 2021-07-06 | EMC IP Holding Company LLC | Storage system with reduced read latency |
CN111338569A (zh) * | 2020-02-16 | 2020-06-26 | 西安奥卡云数据科技有限公司 | 一种基于直接映射的对象存储后端优化方法 |
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN114442927A (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109375872B (zh) | 数据访问请求的处理方法、装置和设备及存储介质 | |
CN103346912B (zh) | 告警相关性分析的方法、装置及系统 | |
CN109889586B (zh) | 通信处理方法、装置、计算机可读介质及电子设备 | |
US9830264B2 (en) | Cache memory system and operating method for the same | |
US20150178117A1 (en) | Selecting cloud computing resource based on fault tolerance and network efficiency | |
CN108471385B (zh) | 一种针对分布式系统的流量控制方法及装置 | |
CN116010109B (zh) | 缓存资源分配方法、装置、电子设备和存储介质 | |
CN114442927B (zh) | 一种数据存储空间的管理方法及装置 | |
CN110839166B (zh) | 一种数据共享方法及装置 | |
CN109254930A (zh) | 数据访问方法及装置 | |
JP7107671B2 (ja) | リソース割当装置 | |
CN112799978B (zh) | 缓存设计管理方法、装置、设备和计算机可读存储介质 | |
CN113342274B (zh) | 一种数据处理方法及装置 | |
CN116841720A (zh) | 资源配置方法、装置、计算机设备、存储介质及程序产品 | |
CN115185658A (zh) | 一种基于时间和通信可靠的任务卸载调度方法及相关产品 | |
CN116346382A (zh) | 一种阻断恶意tcp连接的方法、装置及电子设备 | |
CN113805845A (zh) | 随机数序列生成方法和随机数引擎 | |
CN110960858A (zh) | 一种游戏资源的处理方法、装置、设备及存储介质 | |
US11855908B2 (en) | Resource allocation in cloud computing systems | |
CN115774800B (zh) | 基于numa架构的时变图处理方法、电子设备、介质 | |
CN113992760B (zh) | 回源流量的调度方法、装置、设备以及存储介质 | |
CN115861662B (zh) | 基于组合神经网络模型的预测方法、装置、设备及介质 | |
CN112422342B (zh) | 一种业务数据的获取方法及装置 | |
CN109101187B (zh) | 一种进行数据重构的方法和装置 | |
CN108268664B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |