CN107533435B - 存储空间的分配方法及存储设备 - Google Patents

存储空间的分配方法及存储设备 Download PDF

Info

Publication number
CN107533435B
CN107533435B CN201580056639.4A CN201580056639A CN107533435B CN 107533435 B CN107533435 B CN 107533435B CN 201580056639 A CN201580056639 A CN 201580056639A CN 107533435 B CN107533435 B CN 107533435B
Authority
CN
China
Prior art keywords
storage space
allocation granularity
allocable
size
granularity
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
Application number
CN201580056639.4A
Other languages
English (en)
Other versions
CN107533435A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107533435A publication Critical patent/CN107533435A/zh
Application granted granted Critical
Publication of CN107533435B publication Critical patent/CN107533435B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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 (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种存储空间的分配方法及存储设备,涉及存储领域,用以根据每次写入存储设备的数据量的大小以不同的分配粒度进行存储空间分配。所述方法包括:存储设备接收数据写请求,所述数据写请求包括待写入数据(S101);根据所述待写入数据的大小以及为存储空间预先设定的N个分配粒度,从所述N个不同分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度(S102);并以所述选择的分配粒度为所述数据写请求分配存储空间(S103),所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间。

Description

存储空间的分配方法及存储设备
技术领域
本发明涉及存储领域,尤其涉及一种存储空间的分配方法及存储设备。
背景技术
现有技术中,存储设备为数据写请求分配存储空间的粒度是固定的。也就是说,对于数据写请求中携带的待写入数据的不同数据大小,存储设备均以固定的存储空间大小Q为单位,向数据写请求分配大小为kQ的存储空间,k为正整数。由于,在同一存储架构下,每次写入的数据量的变化范围较小,因此,不会出现分配粒度远大于某次写入的数据大小导致存储空间浪费,或者远小于某次写入的数据大小导致用于描述该数据的存储属性的元数据量过多的问题。
但是,随着存储技术的发展,存储数据量不断增大,数据管理越来越复杂,现有技术中出现了统一存储的产品形态,即一个存储设备中融合了存储区域网络(英文全称:Storage Area Network,简称:SAN)和网络连接式存储(英文全称:Network AttachedStorage,简称:NAS)两种存储架构。其中,SAN通常用于保存结构化数据,其主要应用在需要高速块级别访问的数据操作服务器,比如数据库、高利用率的文件服务器等;NAS一般用于保存非结构化数据,其主要应用在需要进行文件共享的服务器。并且,SAN以“覆盖写”居多,其每次写入的数据量通常较大,适合大粒度的空间分配;NAS以“新增写”居多,其每次写入的数据量通常较小,适合小粒度的空间分配。
由上可知,针对每次写入存储设备的数据量差异较大的情况,若继续采用现有技术以固定粒度分配存储空间,将导致存储空间浪费或者元数据量过多,因此,目前急需一种更加优化的方案来针对每次写入存储设备的数据量差异较大的情况进行存储空间分配。
发明内容
本发明的目的是提供一种存储空间的分配方法及存储设备,用以根据每次写入存储设备的数据量的大小以不同的分配粒度进行存储空间分配。
上述目的将通过独立权利要求中的特征来达成。进一步的实现方式在从属权利要求、说明书和附图中体现。
第一方面,提供一种存储空间的分配方法,应用于存储设备,包括:为所述存储设备的存储空间预设N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;所述方法包括:所述存储设备接收数据写请求,所述数据写请求包括待写入数据;根据所述待写入数据的大小以及所述预先设定的分配粒度,从所述N个不同分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度;并以所述选择的分配粒度为所述数据写请求分配存储空间。
采用上述方法,该存储设备对于不同数据大小的数据写请求,可以选择不同的分配粒度向该数据写请求分配存储空间,这样,针对每次写入该存储设备的数据量差异较大的情况,该存储设备可以选择与每次数据写入大小最接近的分配粒度分配存储空间,避免了单一的分配粒度可能造成的存储空间浪费或者元数据量过多的问题。
结合第一方面,在第一方面的第一种可能的实现方式中,所述以所述选择的分配粒度为所述数据写请求分配存储空间,包括:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,k为不小于1的正整数,Qn是所述选择的分配粒度,M≤kQn<min{L1,M+Qn}。上述实现方式是存储设备以所述选择的分配粒度为所述数据写请求分配存储空间的一个示例。
结合第一方面,在第一方面的第二种可能的实现方式中,所述以所述选择的分配粒度为所述数据写请求分配存储空间,包括:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1小于M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间,且写入其中的数据已被擦除后的存储空间;从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。上述实现方式是存储设备以所述选择的分配粒度为所述数据写请求分配存储空间的另一个示例,采用上述实现方式,存储设备可以将所述选择的分配粒度的未分配存储空间分配给数据写请求,提高了所述选择的分配粒度的可分配存储空间的利用率。
结合第一方面,或者以上第一方面的任一种可能的实现方式,在第一方面的第三种可能的实现方式中,还包括:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度增加可分配存储空间,其中,所述相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。这样,存储设备对于同一存储空间可以采用不同的分配粒度进行分配,增加了存储空间利用的灵活性。
结合第一方面,或者以上第一方面的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间包括:比较该相邻的分配粒度的未分配存储空间大小与第一阈值;确定该相邻的分配粒度的未分配存储空间大小小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,从包括所述至少一个大小为Qn-1的连续地址空间的该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。这样,存储设备将小粒度的存储空间整合为地址连续的更大粒度的存储空间进行释放,减少了存储碎片。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,还包括:在确定所述已回收存储空间中不存在大小为Qn-1的连续地址空间时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于所述M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间中写入的数据已被擦除的存储空间;从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。
结合第一方面,或者以上第一方面的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,在从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度增加可分配存储空间,包括:比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额;确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
第二方面,提供一种存储设备,所述存储设备的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;所述存储设备包括:接收单元,用于接收数据写请求,所述数据写请求包括待写入数据;确定单元,用于根据所述待写入数据的大小以及所述预设的分配粒度,从所述N个不同的分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度;分配单元,用于以所述选择的分配粒度为所述数据写请求分配存储空间。
结合第二方面,在第二方面的第一种可能的实现方式中,所述分配单元具体用于:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,k为不小于1的正整数,Qn是所述选择的分配粒度,M≤kQn<min{L1,M+Qn}。
结合第二方面,在第二方面的第二种可能的实现方式中,所述分配单元具体用于:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1小于M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间,且写入其中的数据已被擦除后的存储空间;从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。
结合第二方面,在第二方面的第三种可能的实现方式中,所述分配单元具体用于:比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间,其中,所述相邻的分配粒度Qn-1大于所述选择的分配粒度Qn
结合第二方面,或者以上第二方面的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括释放单元,用于:比较该相邻的分配粒度的未分配存储空间大小与第一阈值;确定该相邻的分配粒度的未分配存储空间大小小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个连续地址空间释放至该相邻的分配粒度的可分配存储空间;所述分配单元具体用于,从包括所述至少一个大小为Qn-1的连续地址空间的该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
结合第二方面,或者以上第二方面的任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述分配单元还用于,比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额;确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
第三方面,提供一种存储设备,包括:处理器,存储器,内存,通信接口和通信总线,其中,所述处理器,所述存储器,所述内存和所述通信接口通过所述通信总线完成相互间的通信;所述存储器包括用于存储数据的存储空间;所述内存用于存放程序代码,所述程序代码为所述存储器中的存储空间预设有的N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;所述处理器执行所述内存中的程序代码,以使所述处理器执行执行第一方面,或以上第一方面的任一种可能的实现方式所述的方法。
在某些可能的实现方式中,还包括:比较所述选择的分配粒度的可分配存储空间中未分配存储空间的大小与第二阈值;当所述选择的分配粒度的可分配存储空间中未分配存储空间的大小小于所述第二阈值时,从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中的未分配存储空间为所述选择的分配粒度增加可分配存储空间,其中,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。这样,当某一分配粒度的未分配存储空间大小低于第二阈值时,均可从大于且与该分配粒度相邻的分配粒度的未分配存储空间中,为该分配粒度增加可分配存储空间,保证了每一个分配粒度拥有足够的可分配存储空间。
在某些可能的实现方式中,还包括:每隔预设时间,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至与所述选择的分配粒度相邻的分配粒度的可分配存储空间,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。这样,存储设备可以将每一个分配粒度的已回收存储空间依次释放,从而将小粒度的存储空间依次整合为地址连续的更大粒度的存储空间,减少了存储碎片。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种存储空间的分配方法的流程示意图;
图2为本发明实施例提供的一种存储空间中不同分配粒度的可分配存储空间的示意图;
图3为本发明实施例提供的一种以选择的分配粒度为数据写请求分配存储空间的方法的流程示意图;
图4为本发明实施例提供的一种从分配粒度Qn-1的可分配存储空间中为分配粒度Qn增加可分配存储空间的方法的流程示意图;
图5为本发明实施例提供的另一种存储空间中不同分配粒度的可分配存储空间的示意图;
图6为本发明实施例提供的一种存储设备的结构示意图;
图7为本发明实施例提供的另一种存储设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。
以下实施例应用于存储设备,该存储设备可以是存储阵列,固态硬盘,叠瓦式磁记录硬盘等。存储设备在接收到其他设备发送的数据写请求时,为该数据写请求分配存储空间,以存储该数据写请求中的待写入数据。
本发明实施例提供一种存储空间的分配方法,该方法应用于存储设备,其中,针对该存储设备的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配该存储空间的单位,且每个分配粒度具有可分配存储空间,每个分配粒度的可分配存储空间可以是预设的,也可以是第一次接收到以该分配粒度进行分配的数据写请求时,才设置的。其中,N是大于1的正整数。如图1所示,该方法包括:
S101、该存储设备接收数据写请求,该数据写请求包括待写入数据。
其中,该存储设备可以是与服务器相连的外接存储设备,也可以是与客户端相连的存储服务器。该数据写请求可以是该存储设备从与之相连的服务器或者客户端接收到的。
S102、该存储设备根据该待写入数据的大小以及该预先设定的分配粒度,从该N个不同分配粒度中为该数据写请求选择一个分配存储空间的分配粒度。
值的说明的是,存储空间的N个不同的分配粒度可以是用户根据每次写入该存储设备的数据量的实际情况进行预设的。例如,在该存储设备融合了SAN和NAS两种存储架构的情况下,若SAN存储架构每次的数据写入量在60M(兆)至64M范围之内,SAN存储架构每次的数据写入量在10KB(千字节)至64KB范围之内,则可以为存储空间预设64M和64KB两个分配粒度。
这样,步骤S102中,该存储设备可以计算待写入数据的大小分别与每个分配粒度的差值,并选择与所述数据大小的差值的绝对值最小的分配粒度。例如,若针对存储空间预设64M(兆)和64KB(千字节)两个分配粒度,在此种情况下,该存储设备在接收到携带的待写入数据的大小为10KB的数据写请求时,由于64KB的分配粒度与该待写入数据的大小最接近,因此,该存储设备可选择64KB的分配粒度为向该数据写请求分配存储空间的分配粒度;该存储设备在接收到携带的待写入数据的大小为60M的数据写请求时,由于64M的分配粒度与该待写入数据的大小最接近,因此,该存储设备可选择64M的分配粒度为向该数据写请求分配存储空间的分配粒度。
上述只是举例说明,存储设备选择为数据写请求分配存储空间的分配粒度的策略可以根据实际需求进行设定。例如,若存储空间的两个分配粒度为50M和30M,此时,对于数据大小为60M的待写入数据,按照上述举例说明的实现方式,与该数据大小最接近的分配粒度为50M,但是,存储设备若选择50M的分配粒度为该待写入数据分配存储空间,其需要分配两个50M大小的存储空间存储60M的数据,将导致40M的存储空间浪费,因此,在此种情况下,该存储设备可以选择30M的分配粒度为该待写入数据分配存储空间,两个30M大小的存储空间存储60M的数据,避免了存储空间的浪费。也就是说,对于分配粒度Qn和Qn-1,若knQn与待写入数据的大小M之间的差值的绝对值,大于kn-1Qn-1与待写入数据的大小M之间的差值的绝对值,则选择分配粒度Qn为向该数据写请求分配存储空间的分配粒度,反之,则选择Qn-1为向该数据写请求分配存储空间的分配粒度,其中,kn是存储设备为该待写入数据分配的大小为Qn的存储空间的个数,kn-1是存储设备为该待写入数据分配的大小为Qn-1的存储空间的个数,M≤knQn<M+Qn,M≤kn-1Qn-1<M+Qn-1
另一个例子,在预设的分配粒度为64M和64KB,而待写入数据的大小为32M的情况下,存储设备若选择64KB的分配粒度为32M的待写入数据分配存储空间,其需要分配500个64KB的存储空间,导致存储碎片化,元数据量过多。而存储设备若选择64M的分配粒度为32M的待写入数据分配存储空间,则会导致32M的存储空间浪费。在此种情况下,若具体实施过程中对存储利用率要求较高,则可预设条件:为数据写请求分配的存储空间的大小与待写入数据的大小之间的差值不能超过1M,这样,该存储设备根据该预设条件即可选择64KB的分配粒度为32M的待写入数据分配存储空间;若具体实施过程中要求存储碎片化程度最低,则可预设条件:针对同一个数据写请求,存储设备分配的相同粒度的存储空间不能超过两个,这样,该存储设备根据该预设条件即可选择64M的分配粒度为32M的待写入数据分配存储空间。另外,值的说明的是,为了避免上述举例中,待写入数据的大小与预设的每个分配粒度均相差较大的情况出现,本发明实施例在预设存储空间的N个分配粒度时,可以减小相邻两个分配粒度之间的差值。
S103、该存储设备以所述选择的分配粒度为该数据写请求分配存储空间。
示例地,所述选择的分配粒度对应一分配队列,该存储设备可以将该选择的分配粒度的未分配存储空间划分为多个存储子空间,其中,每个存储子空间的大小等于该选择的分配粒度的大小Qn,并将该存储子空间的地址加入该分配队列。这样,该存储设备在向数据写请求分配存储空间时,可以直接从该分配队列中分配,无需临时对所述选择的分配粒度的未分配存储空间进行划分,提高了分配效率。
例如,该数据写请求中待写入数据的大小为M,则该存储设备可以从该分配队列中向该数据写请求分配k个存储子空间,其中,k为不小于1的正整数,且M≤kQn<M+Qn。也就是说,若该选择的分配粒度为64KB,则对于大小为130KB的待写入数据,该存储设备为该待写入数据分配的存储空间大小为3*64KB=192KB。
另外,需要说明的是,本文所述的存储空间可以是一个逻辑存储单元(LogicalUnit Number,LUN),通常情况下,一个LUN通常只能被一个主机访问。在此种情况下,若存储设备存在多个LUN用于被多个主机访问,本发明实施例可以为每个LUN预设N个分配粒度。这样,针对每一个LUN,存储设备向数据写请求分配存储空间的方法可以参照上述步骤S101至步骤S103,此处不再赘述。
采用上述方法,该存储设备对于不同数据大小的数据写请求,可以选择不同的分配粒度向该数据写请求分配存储空间,避免了单一的分配粒度可能造成的存储空间浪费或者元数据量过多的问题。
在本发明实施例的一种可能的实现方式中,除了最大的分配粒度,每个分配粒度的可分配存储空间从与该分配粒度相邻的分配粒度的可分配存储空间的未分配存储空间中分配,且所述相邻的分配粒度大于该分配粒度,当该分配粒度的可分配存储空间分配完后,可从与该分配粒度相邻的且大于该分配粒度的分配粒度的可分配存储空间的未分配存储空间中为该分配粒度分配存储空间,如图2所示,相邻的分配粒度Qn、Qn-1、及Qn-2的大小关系为Qn<Qn-1<Qn-2,则所述Qn的可分配存储空间从所述Qn-1的未分配存储空间分配,所述Qn-1的可分配存储空间从所述Qn-2的未分配存储空间空间分配,当Qn的可分配存储空间分配完后,则可从Qn-1的未分配存储空间中为Qn分配可分配存储空间。所述Qn-2的可分配存储空间,即N个分配粒度中的最大分配粒度的可分配存储空间可以为一个LUN对应的存储空间,也可以为一个LUN中的部分存储空间,若Qn-2的可分配存储空间为一个LUN中的部分存储空间时,则当Qn-2的可分配存储空间分配完后,则可从所述LUN对应的存储空间中为Qn-2分配存储空间。
基于上述可能的实现方式,上述步骤S103中,存储设备以所述选择的分配粒度为该数据写请求分配存储空间具体包括:
S1031、该存储设备比较该待写入数据的大小M与该选择的分配粒度的可分配存储空间中未分配存储空间的大小L1
S1032、该存储设备在确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间。
若该存储设备确定L1小于M,即所选择的分配粒度的未分配存储空间小于待写入数据的大小时,则可通过两种方式获取为所述待写入数据分配存储空间,第一种方式为从所述选择的分配粒度的已回收存储空间为所述待写入数据分配存储空间,具体如步骤S1033’和S1034’所示,第二种方式为从与所述选择分配粒度相邻的且大于所述选择的分配粒度的分配粒度的可分配存储空间的未分配存储空间中为该分配粒度分配存储空间,具体如步骤S1033和步骤S1034所示。
其中,第一种方式具体包括如下步骤:
S1033’、该存储设备在确定L1小于M时,比较所述未分配存储空间大小L1与所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和与M。
其中,所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配且写入其中的数据已被擦除后的存储空间。
S1034’、该存储设备确定所述未分配存储空间大小L1与所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于M时,该存储设备从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。
在确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和小于M时,该存储设备可以执行步骤S1033和步骤S1034示出的第二种方式为所述待写入数据分配存储空间。
第二种方式具体包括如下步骤:
S1033、该存储设备确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
其中,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn
示例地,该存储设备可以根据待写入数据的大小M,从该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配大小为kQn-1的可分配存储空间,其中,kQn-1大于M且小于Qn-1+M。例如,该待写入数据的大小为10M,该相邻的分配粒度Qn-1为100M,在此种情况下,该存储设备可以从该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配大小为100M的存储空间。
另一个例子,该存储设备可以根据L1与M之间的差值,从该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配大小为kQn-1的可分配存储空间,其中,kQn-1大于M-L1且小于Qn-1+M-L1。例如,待写入数据大小为120M,该相邻的分配粒度Qn-1为50M,所述选择的分配粒度Qn为40M,所述选择的分配粒度的未分配存储空间大小为80M,在此种情况下,该存储设备可以从该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配大小为50M的存储空间。
S1034、该存储设备从所述选择的分配粒度的未分配存储空间中为所述数据写请求分配大小为kQn的存储空间。
下面将结合图4具体说明步骤S1033中存储设备从分配粒度Qn-1的可分配存储空间中为分配粒度Qn分配可分配存储空间的方法,包括:
S10331、该存储设备比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额。
S10332、该存储设备确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和大于为所述选择的分配粒度预设可分配存储空间配额时,则不再为所述选择的分配粒度分配存储空间,即返回写入失败信息。
也就是说,该存储设备可以预先对各个分配粒度的可分配存储空间设置配额,例如,若存储空间总的大小为500M,该存储空间的两个分配粒度分别是40M和10M,40M分配粒度的可分配存储空间的配额为400M,10M分配粒度的可分配存储空间的配额是100M,在此种情况下,若存储设备已从40M分配粒度的可分配存储空间向10M分配粒度分配了80M可分配存储空间,由于80M+40M=120M,超过了为10M分配粒度的可分配存储空间预设的配额100M,因此,该存储设备不能继续从该40M分配粒度的可分配存储空间中为10M分配粒度分配可分配存储空间,避免了由于某一分配粒度的存储空间分配过多,导致其他分配粒度无存储空间可用。
可选地,在确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和大于为所述选择的分配粒度预设可分配存储空间配额时,该存储设备可以从所述选择的分配粒度的未分配存储空间以及已回收存储空间中为所述待写入数据分配存储空间,当所述未分配存储空间以及所述已回收存储空间大小之和不足以为所述待写入数据分配空间时,则所述存储设备返回写入失败信息。
S10333、该存储设备确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,比较该相邻的分配粒度的可分配存储空间中未分配存储空间大小Rn-1与第一阈值。
其中,该第一阈值可以等于该相邻的分配粒度的大小Qn-1,在此种情况下,也就是说,该相邻的分配粒度的未分配存储空间不足一个分配粒度时,无法向所述选择的分配粒度分配可分配存储空间。
另外,该第一阈值可以大于该相邻的分配粒度的大小Qn-1,以避免该相邻的分配粒度的未分配存储空间被全部分配给所述选择的分配粒度。
S10334、该存储设备确定该相邻分配粒度的未分配存储空间大小不小于该第一阈值时,从该相邻分配粒度的未分配存储空间中,为所述选择的分配粒度分配可分配存储空间。
S10335、该存储设备确定该相邻的分配粒度的可分配存储空间大小Rn-1小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间。
S10336、该存储设备确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至该相邻的分配粒度的可分配存储空间。
由于所述选择的分配粒度的可分配存储空间均来自于该相邻分配粒度的可分配存储空间,所述选择的分配粒度的已回收存储空间中的数据虽然已经被擦除,但是,所述已回收存储空间仍然需要按照所述选择的分配粒度进行分配。步骤S10336中,所述至少一个大小为Qn-1的连续地址空间被释放至该相邻的分配粒度的可分配存储空间后,该存储设备即可以将释放回的存储空间与该相邻的分配粒度的未分配存储空间进行整合,并重新按照该相邻的分配粒度进行分配,减少了存储碎片。
示例地,所述选择的分配粒度对应一回收队列,在所述选择的分配粒度的已回收存储空间中,存在至少一个大小为Qn-1的连续地址空间时,该存储设备即可将该至少一个大小为Qn-1连续地址空间的地址加入到该回收队列中,这样,该存储设备可以直接从该回收队列中按照大小为Qn-1的释放粒度释放存储空间至该相邻分配粒度的可分配存储空间中。
可选地,该存储设备还可以每隔预设时间,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间,并在确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至该相邻的分配粒度的可分配存储空间。这样,存储设备将每一个分配粒度的已回收存储空间依次释放,从而将小粒度的存储空间依次整合为地址连续的更大粒度的存储空间,减少了存储碎片。
可选地,如果在步骤10335中,该存储设备确定所述已回收存储空间中不存在至少一个大小为Qn-1的连续地址空间,可以进一步从所述选择的分配粒度的未分配存储空间以及已回收存储空间中为所述待写入数据分配存储空间,当所述未分配存储空间以及所述已回收存储空间大小之和不足以为所述待写入数据分配空间时,则所述存储设备返回写入失败信息。
S10337、该存储设备从该相邻的分配粒度的包括该至少一个大小为Qn-1的连续地址空间的未分配存储空间中,为所述选择的分配粒度分配可分配存储空间。
也就是说,对于释放回该相邻的分配粒度的可分配存储空间的存储空间,该存储设备可以直接将释放回的存储空间跟该相邻的分配粒度的未分配的存储空间进行整合,并在重新划分后,用于分配给所述选择的分配粒度的可分配存储空间。
可选地,该存储设备还可以将每一个分配粒度的已回收存储空间依次释放,从而将小粒度的存储空间依次整合为地址连续的更大粒度的存储空间,并在将每一个分配粒度的已回收存储空间依次释放后,为每一个分配粒度分配可分配存储空间,以最大程度上避免存储碎片。
由上述步骤S1035以及步骤S1036可知,在所述选择的分配粒度的未分配存储空间大小小于待写入数据的大小时,可以触发存储设备从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中为所述选择的分配粒度分配可分配存储空间。可选地,存储设备还可以预先设置各个分配粒度的第二阈值,这样,该存储设备可以比较所述选择的分配粒度的可分配存储空间中未分配存储空间大小Rn与第二阈值,当所述选择的分配粒度的可分配存储空间中未分配存储空间大小Rn小于所述第二阈值时,从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中为所述选择的分配粒度分配可分配存储空间,从而保证了每一个分配粒度拥有足够的可分配存储空间。
以上为从一个分配粒度的相邻分配粒度的可分配存储空间的未分配存储空间为该分配粒度分配可分配存储空间的场景下,为待写入数据分配存储空间的实现方式的说明。
在本发明实施例的另一种可能的实现方式中,所述N个分配粒度的存储空间是独立的,并不存在上述实现方式中的关系。如图5所示,存储设备的存储空间中包括分配粒度Qn的可分配存储空间,分配粒度Qn-1的可分配存储空间以及分配粒度Qn-2的可分配存储空间,其中,分配粒度Qn,分配粒度Qn-1和分配粒度Qn-2的可分配存储空间均从存储设备总的存储空间中分配。在此种实现方式下,步骤S103具体包括图3中示出的步骤S1031,步骤S1032和步骤S1033’和步骤S1034’,此处不再赘述,另外,分配粒度Qn,分配粒度Qn-1和分配粒度Qn-2的可分配存储空间之和可以为一个LUN对应的存储空间,也可以为一个LUN中的部分存储空间,若分配粒度Qn,分配粒度Qn-1和分配粒度Qn-2的可分配存储空间之和为一个LUN对应的部分存储空间时,则在该存储设备在确定所述L1小于所述M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和小于M时,该存储设备可在该LUN所对应的存储空间中给所述选择的分配粒度再分配可分配的存储空间。
本发明实施例还提供一种存储设备60,用于执行上述方法实施例提供的一种存储空间的分配方法,其中,该存储设备60的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数。如图6所示,所述存储设备60包括:
接收单元61,用于接收数据写请求,所述数据写请求包括待写入数据;
确定单元62,用于根据所述待写入数据的大小以及所述预设的分配粒度,从所述N个不同的分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度;
分配单元63,用于以所述选择的分配粒度为所述数据写请求分配存储空间。
可选地,所述分配单元63具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1
确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,k为不小于1的正整数,Qn是所述选择的分配粒度,M≤kQn<min{L1,M+Qn}。
可选地,所述分配单元63具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1
确定L1小于M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间,且写入其中的数据已被擦除后的存储空间;
从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。
可选地,所述分配单元63具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1
确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间,其中,所述相邻的分配粒度Qn-1大于所述选择的分配粒度Qn
可选地,该存储设备60还包括释放单元64,该释放单元64用于,比较该相邻的分配粒度的未分配存储空间大小与第一阈值;确定该相邻的分配粒度的未分配存储空间大小小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个连续地址空间释放至该相邻的分配粒度的可分配存储空间;所述分配单元63具体用于,从包括所述至少一个大小为Qn-1的连续地址空间的该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
可选地,所述分配单元63还用于,比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额;确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
可选地,所述分配单元63还用于,比较所述选择的分配粒度的可分配存储空间中未分配存储空间的大小与第二阈值;当所述选择的分配粒度的可分配存储空间中未分配存储空间的大小小于所述第二阈值时,从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中的未分配存储空间为所述选择的分配粒度增加可分配存储空间,其中,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn
可选地,所述释放单元64还用于,每隔预设时间,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至与所述选择的分配粒度相邻的分配粒度的可分配存储空间,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn
值得说明的是,以上对存储设备功能单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如上述确定单元62和分配单元63可以划分为一处理单元。并且,上述各功能单元的物理实现也可以有多种实现方式,例如,上述确定单元62可以是一中央处理器,也可以是特定集成电路(Application Specific Integrated Circuit,ASIC)。
另外,所属本领域的技术人员应该了解到,为描述的方便和简洁,上述描述的存储设备的各单元的具体工作过程,可以参照前述方法实施例中对应的过程,在此不再赘述。
采用上述存储设备,该存储设备对于不同数据大小的数据写请求,可以选择不同的分配粒度向该数据写请求分配存储空间,这样,针对每次写入该存储设备的数据量差异较大的情况,该存储设备可以选择与每次数据写入大小最接近的分配粒度分配存储空间,避免了单一的分配粒度可能造成的存储空间浪费或者元数据量过多的问题。
本发明实施例还提供另一种存储设备,如图7所示,包括:处理器(processor)71、通信接口(Communications Interface)72、存储器(memory)73、内存74和通信总线75;其中,所述处理器71、所述通信接口72、所述存储器73和所述内存74通过所述通信总线75完成相互间的通信。
所述通信接口72,用于与外部设备进行通信。
所述存储器73,包括用于存储数据的存储空间。
所述内存74,用于存放程序代码,所述程序代码为所述存储器中的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数。
所述处理器71用于执行所述内存74中的程序代码,以执行上述方法实施例提供的一种存储空间的分配方法,具体可参照上述方法实施例对图1,图3以及图4的详细描述,此处不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (18)

1.一种存储空间的分配方法,应用于存储设备,其特征在于,为所述存储设备的存储空间预设N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;所述方法包括:
所述存储设备接收数据写请求,所述数据写请求包括待写入数据;
根据所述待写入数据的大小以及所述预设的分配粒度,从所述N个不同的分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度;并
以所述选择的分配粒度为所述数据写请求分配存储空间。
2.根据权利要求1所述的方法,其特征在于,所述以所述选择的分配粒度为所述数据写请求分配存储空间,包括:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,k为不小于1的正整数,Qn是所述选择的分配粒度,M≤kQn<min{L1,M+Qn}。
3.根据权利要求1所述的方法,其特征在于,所述以所述选择的分配粒度为所述数据写请求分配存储空间,包括:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1小于M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于所述M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间中写入的数据已被擦除的存储空间;
从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<min{L1+L2,M+Qn}。
4.根据权利要求1所述的方法,其特征在于,还包括:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间,其中,所述相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
5.根据权利要求4所述的方法,其特征在于,所述从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间包括:
比较该相邻的分配粒度的未分配存储空间大小与第一阈值;
确定该相邻的分配粒度的未分配存储空间大小小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间,所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间中写入的数据已被擦除的存储空间;
确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至该相邻的分配粒度的可分配存储空间;
从包括所述至少一个大小为Qn-1的连续地址空间的该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
6.根据权利要求4所述的方法,其特征在于,所述从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间,包括:
比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额;
确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
7.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
比较所述选择的分配粒度的可分配存储空间中未分配存储空间的大小与第二阈值;
当所述选择的分配粒度的可分配存储空间中未分配存储空间的大小小于所述第二阈值时,从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中的未分配存储空间为所述选择的分配粒度分配可分配存储空间,其中,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
8.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
每隔预设时间,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;
确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至与所述选择的分配粒度相邻的分配粒度的可分配存储空间,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
9.一种存储设备,其特征在于,所述存储设备的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;所述存储设备包括:
接收单元,用于接收数据写请求,所述数据写请求包括待写入数据;
确定单元,用于根据所述待写入数据的大小以及所述预设的分配粒度,从所述N个不同的分配粒度中为所述数据写请求选择一个分配存储空间的分配粒度;
分配单元,用于以所述选择的分配粒度为所述数据写请求分配存储空间。
10.根据权利要求9所述的存储设备,其特征在于,所述分配单元具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1不小于M时,从所述未分配存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,k为不小于1的正整数,Qn是所述选择的分配粒度,M≤kQn<min{L1,M+Qn}。
11.根据权利要求9所述的存储设备,其特征在于,所述分配单元具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1小于M时,确定所述未分配存储空间大小L1以及所述选择的分配粒度的可分配存储空间中已回收存储空间大小L2之和不小于M;所述已回收存储空间是指所述选择的分配粒度的可分配空间中已被分配的存储空间,且写入其中的数据已被擦除后的存储空间;
从所述未分配存储空间以及所述已回收存储空间中为所述数据写请求分配大小为kQn的存储空间,其中,M≤kQn<{L1+L2,M+Qn}。
12.根据权利要求9所述的存储设备,其特征在于,所述分配单元具体用于:
比较所述待写入数据的大小M与所述选择的分配粒度的可分配存储空间中未分配存储空间的大小L1;
确定L1小于M时,识别与所述选择的分配粒度相邻的分配粒度,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间,其中,所述相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
13.根据权利要求12所述的存储设备,其特征在于,还包括释放单元,所述释放单元用于:
比较该相邻的分配粒度的未分配存储空间大小与第一阈值;
确定该相邻的分配粒度的未分配存储空间大小小于所述第一阈值时,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;
确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个连续地址空间释放至该相邻的分配粒度的可分配存储空间;
所述分配单元具体用于,从包括所述至少一个大小为Qn-1的连续地址空间的该相邻的分配粒度的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
14.根据权利要求12所述的存储设备,其特征在于,所述分配单元还用于,
比较所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和与为所述选择的分配粒度预设的可分配存储空间配额;
确定所述选择的分配粒度的可分配存储空间与该相邻的分配粒度之和不大于为所述选择的分配粒度预设可分配存储空间配额时,从该相邻的分配粒度的可分配存储空间的未分配存储空间中为所述选择的分配粒度分配可分配存储空间。
15.根据权利要求9至11任一项所述的存储设备,其特征在于,所述分配单元还用于:
比较所述选择的分配粒度的可分配存储空间中未分配存储空间的大小与第二阈值;
当所述选择的分配粒度的可分配存储空间中未分配存储空间的大小小于所述第二阈值时,从与所述选择的分配粒度相邻的分配粒度的可分配存储空间中的未分配存储空间为所述选择的分配粒度增加可分配存储空间,其中,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
16.根据权利要求9至11任一项所述的存储设备,其特征在于,所述存储设备包括的释放单元,用于:
每隔预设时间,检测所述选择的分配粒度的可分配存储空间的已回收存储空间中,是否存在至少一个大小为Qn-1的连续地址空间;
确定所述已回收存储空间中存在至少一个大小为Qn-1的连续地址空间时,将所述至少一个大小为Qn-1的连续地址空间释放至与所述选择的分配粒度相邻的分配粒度的可分配存储空间,该相邻的分配粒度Qn-1大于所述选择的分配粒度Qn。
17.一种存储设备,其特征在于,包括:处理器,存储器,内存,通信接口和通信总线,其中,所述处理器,所述存储器,所述内存和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器包括用于存储数据的存储空间;
所述内存用于存放程序代码,所述程序代码为所述存储器中的存储空间预设有N个不同的分配粒度,所述分配粒度作为分配所述存储空间的单位,且每个分配粒度具有可分配存储空间,其中,N是大于1的正整数;
所述处理器执行所述内存中的程序代码,以使所述处理器执行权利要求1-8中任意一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被硬件执行时能够实现权利要求1至8任意一项所述的方法。
CN201580056639.4A 2015-12-21 2015-12-21 存储空间的分配方法及存储设备 Active CN107533435B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/098108 WO2017107015A1 (zh) 2015-12-21 2015-12-21 存储空间的分配方法及存储设备

Publications (2)

Publication Number Publication Date
CN107533435A CN107533435A (zh) 2018-01-02
CN107533435B true CN107533435B (zh) 2020-04-28

Family

ID=59088810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580056639.4A Active CN107533435B (zh) 2015-12-21 2015-12-21 存储空间的分配方法及存储设备

Country Status (2)

Country Link
CN (1) CN107533435B (zh)
WO (1) WO2017107015A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669640B (zh) 2018-12-24 2023-05-23 浙江大华技术股份有限公司 一种数据存储方法、装置、电子设备及介质
CN110221781B (zh) * 2019-06-04 2022-08-23 Oppo广东移动通信有限公司 一种磁盘碎片的制造方法、装置、存储介质及智能终端
CN110688345A (zh) * 2019-09-26 2020-01-14 重庆大学 一种内存文件***的多粒度结构化空间管理机制
US20230214322A1 (en) * 2020-05-18 2023-07-06 Cambricon (Xi'an) Semiconductor Co., Ltd. Method and device for allocating storage addresses for data in memory
CN113688062B (zh) * 2020-05-18 2022-08-26 北京市商汤科技开发有限公司 用于存储数据的方法和相关产品
CN113485969B (zh) * 2021-05-31 2022-05-03 荣耀终端有限公司 一种存储碎片化方法及装置、终端及计算机存储介质
CN113660338A (zh) * 2021-08-17 2021-11-16 中国农业银行股份有限公司 数据交互方法、装置、***和服务器
CN114115738B (zh) * 2021-11-23 2023-12-26 烽火通信科技股份有限公司 一种基于分布式存储的磁盘空间管理方法及***
CN114442927B (zh) * 2021-12-22 2023-11-03 天翼云科技有限公司 一种数据存储空间的管理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976223A (zh) * 2010-10-09 2011-02-16 成都市华为赛门铁克科技有限公司 自动精简配置方法和装置
CN102122284A (zh) * 2010-01-08 2011-07-13 腾讯科技(深圳)有限公司 一种复合文档存储、读写方法和装置
US8127096B1 (en) * 2007-07-19 2012-02-28 American Megatrends, Inc. High capacity thin provisioned storage server with advanced snapshot mechanism
CN102650931A (zh) * 2012-04-01 2012-08-29 华为技术有限公司 一种写入数据的方法及***
CN104915146A (zh) * 2014-03-14 2015-09-16 中兴通讯股份有限公司 基于自动精简配置的资源分配方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127096B1 (en) * 2007-07-19 2012-02-28 American Megatrends, Inc. High capacity thin provisioned storage server with advanced snapshot mechanism
CN102122284A (zh) * 2010-01-08 2011-07-13 腾讯科技(深圳)有限公司 一种复合文档存储、读写方法和装置
CN101976223A (zh) * 2010-10-09 2011-02-16 成都市华为赛门铁克科技有限公司 自动精简配置方法和装置
CN102650931A (zh) * 2012-04-01 2012-08-29 华为技术有限公司 一种写入数据的方法及***
CN104915146A (zh) * 2014-03-14 2015-09-16 中兴通讯股份有限公司 基于自动精简配置的资源分配方法及装置

Also Published As

Publication number Publication date
CN107533435A (zh) 2018-01-02
WO2017107015A1 (zh) 2017-06-29

Similar Documents

Publication Publication Date Title
CN107533435B (zh) 存储空间的分配方法及存储设备
CN110612511B (zh) 使用流选择性地向分配区域中存储数据
US7590816B2 (en) Computer system, management computer and storage system, and storage area allocation amount controlling method
US9329792B2 (en) Storage thin provisioning and space reclamation
US20200081640A1 (en) Target Optimized Auto Provisioning of Storage in a Discoverable Storage Network
US8751547B2 (en) Multiple file system and/or multi-host single instance store techniques
US20200341682A1 (en) Clustered storage system with dynamic space assignments across processing modules to counter unbalanced conditions
CN105593828A (zh) 管理文件的方法、分布式存储***和管理节点
US8868877B2 (en) Creating encrypted storage volumes based on thin-provisioning mode information
WO2013004136A1 (zh) 分布式存储方法、装置和***
JP7467593B2 (ja) リソース割振り方法、記憶デバイス、および記憶システム
CN104461914A (zh) 一种自动精简配置的自适应优化方法
CN103761053A (zh) 一种数据处理方法和装置
US20170220284A1 (en) Block-level internal fragmentation reduction using a heuristic-based approach to allocate fine-grained blocks
CN111949210A (zh) 分布式存储***中元数据存储方法、***及存储介质
WO2022120522A1 (zh) 内存空间的分配方法、装置及存储介质
US20240086092A1 (en) Method for managing namespaces in a storage device and storage device employing the same
CN112631520A (zh) 分布式块存储***、方法、装置、设备和介质
US11385814B2 (en) Method and device for allocating resource of hard disk in distributed storage system
US10228885B2 (en) Deallocating portions of data storage based on notifications of invalid data
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
CN114047886A (zh) 一种nvme命令处理方法、***、电子设备及存储介质
US10168911B1 (en) Defragmentation of persistent main memory
US20200333973A1 (en) Allocating snapshot group identifiers
US11886730B2 (en) Compression ratio-aware data deduplication

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