本申请涉及数据存储技术领域,尤其涉及一种存储空间分配的方法和装置。
背景技术:
随机科学技术的快速发展,数据量的迅速增长,数据存储技术变得越来越重要,尤其是如何提升存储空间空间的利用率。
基于传统的存储技术,在分配存储空间时,考虑到所使用的存储空间的大小,确保存储空间足够使用,不会轻易出现由于存储空间不够而崩溃的情况,往往预先分配多于实际需求的存储空间。
但是,发明人经过研究发现,采用上述存储空间分配模式,在实际使用中,预先分配的较大存储空间被没有被充分利用,大部分存储空间属于闲置状态,其他数据也无法利用闲置状态的存储空间,造成存储空间利用率低,且由于闲置状态存储空间的不断增加,总的存储空间不足,导致不得不购买更大的存储空间以满足存储需求,加大了存储成本。
技术实现要素:
本申请所要解决的技术问题是,提供一种存储空间分配的方法和装置,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
第一方面,本申请实施例提供了一种存储空间分配的方法,该方法包括:
接收对目标卷的写请求,所述目标卷按照实际需求分配有实际存储空间,所述写请求包括第一目标地址;
获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;
根据所述第一目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
若所述目标虚拟地址-物理地址映射关系数据不包括所述第一目标地址,基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。
可选的,所述目标虚拟地址-物理地址映射关系数据采用b-树数据结构。
可选的,在所述基于磁盘池的分配情况向所述目标卷分配目标物理磁盘之后,还包括:
将所述目标物理磁盘对应的目标物理地址和所述第一目标地址对应映射,并更新所述目标虚拟地址-物理地址映射关系数据。
可选的,所述写请求还包括写入数据,在所述基于磁盘池的分配情况向所述目标卷分配目标物理磁盘之后,还包括:
将所述写入数据写入所述目标物理磁盘。
可选的,还包括:
接收对目标卷的读请求,所述读请求包括第二目标地址;
根据所述第二目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
若所述目标虚拟地址-物理地址映射关系数据不包括所述第二目标地址,返回空值。
第二方面,本申请实施例提供了一种存储空间分配的装置,该装置包括:
第一接收单元,用于接收对目标卷的写请求,所述目标卷按照实际需求分配有实际存储空间,所述写请求包括第一目标地址;
获取单元,用于获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;
第一查询单元,用于根据所述第一目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
分配单元,用于若所述目标虚拟地址-物理地址映射关系数据不包括所述第一目标地址,基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。
可选的,所述目标虚拟地址-物理地址映射关系数据采用b-树数据结构。
可选的,还包括:
映射更新单元,用于将所述目标物理磁盘对应的目标物理地址和所述第一目标地址对应映射,并更新所述目标虚拟地址-物理地址映射关系数据。
可选的,所述写请求还包括写入数据,所述装置还包括:
写入单元,用于将所述写入数据写入所述目标物理磁盘。
可选的,还包括:
第二接收单元,用于接收对目标卷的读请求,所述读请求包括第二目标地址;
第二查询单元,用于根据所述第二目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
返回单元,用于若所述目标虚拟地址-物理地址映射关系数据不包括所述第二目标地址,返回空值。
与现有技术相比,本申请至少具有以下优点:
采用本申请实施例的技术方案,首先,接收对按照实际需求分配有实际存储空间的目标卷的包括第一目标地址的写请求;然后,获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;其次,在查询所述目标虚拟地址-物理地址映射关系数据中查询是否包括所述第一目标地址;若不包括,则基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。由此可见,无需提前分配大于实际需求的存储空间,基于目标卷的实际写入数据需求动态分配存储空间,允许超额分配存储空间,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中一种应用场景所涉及的系统框架示意图;
图2为本申请实施例提供的一种存储空间分配的方法的流程示意图;
图3为本申请实施例提供的另一种存储空间分配的方法的流程示意图;
图4为本申请实施例提供的一种存储空间分配的装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
传统地,向应用等分配存储空间时,考虑到其所需存储空间的大小,为了确保存储空间足够使用,不会轻易出现存储空间不够崩溃的情况,往往预先分配多于实际需求的存储空间。发明人经过研究发现,在实际使用中,预先分配的较大存储空间大约只有20%—30%被利用,其余大部分存储空间属于闲置状态,然而,其他数据也无法利用闲置状态的存储空间,最终造成存储空间利用率低,且由于闲置状态存储空间的不断增加,总的存储空间不足,导致不得不购买更大的存储空间以满足存储需求,加大了存储成本。
为了解决这一问题,在本申请实施例中,首先,接收对按照实际需求分配有实际存储空间的目标卷的包括第一目标地址的写请求;然后,获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;其次,在查询所述目标虚拟地址-物理地址映射关系数据中查询是否包括所述第一目标地址;若不包括,则基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。由此可见,无需提前分配大于实际需求的存储空间,基于目标卷的实际写入数据需求动态分配存储空间,允许超额分配存储空间,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
举例来说,本申请实施例的场景之一,可以是应用到如图1所示的场景中。该场景包括用户终端101、处理器102和磁盘池103,其中,磁盘池103包括多个物理磁盘。用户可以通过在用户终端101的操作发起对目标卷的写请求,处理器102接收对目标卷的写请求,所述写请求包括第一目标地址,所述目标卷按照实际需求分配有实际存储空间;处理器102获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;处理器102根据所述第一目标地址,查询所述目标虚拟地址-物理地址映射关系数据;若所述目标虚拟地址-物理地址映射关系数据不包括所述第一目标地址,处理器102基于磁盘池103的分配情况向所述目标卷分配目标物理磁盘。
可以理解的是,在上述应用场景中,虽然将本申请实施方式的动作描述由处理器102执行,但是,本申请在执行主体方面不受限制,只要执行了本申请实施方式所公开的动作即可。
可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景。
下面结合附图,通过实施例来详细说明本申请实施例中存储空间分配的方法和装置的具体实现方式。
示例性方法
参见图2,示出了本申请实施例中一种存储空间分配的方法的流程示意图。在本实施例中,所述方法例如可以包括以下步骤:
步骤201:接收对目标卷的写请求,所述目标卷按照实际需求分配有实际存储空间,所述写请求包括第一目标地址。
可以理解的是,其中,写请求中需要包括写入数据所需写入的地址,即,第一目标地址。目标卷是预先设定的卷,其按照实际需求分配有实际存储空间,具有映射关系的虚拟地址和物理地址。
步骤202:获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据。
可以理解的是,目标卷对应的虚拟地址-物理地址的映射关系数据预先记录存储在硬盘池的物理磁盘中,在步骤201接收到包括第一目标地址的写请求后,需要明确该第一目标地址是否与虚拟地址-物理地址的映射关系数据中某个虚拟地址相同,则首先需要获取目标卷对应的目标虚拟地址-物理地址映射关系数据,即,执行步骤202。
需要说明的是,为了后续能够快速查询目标虚拟地址-物理地址映射关系数据,提升查询效率,该数据可以采用b-树数据结构进行记录存储。因此,在本实施例的一些实施方式中,所述目标虚拟地址-物理地址映射关系数据采用b-树数据结构。
步骤203:根据所述第一目标地址,查询所述目标虚拟地址-物理地址映射关系数据。
可以理解的是,在步骤202获取到目标虚拟地址-物理地址映射关系数据之后,明确该第一目标地址是否与虚拟地址-物理地址的映射关系数据中某个虚拟地址相同具体是在目标虚拟地址-物理地址映射关系数据中查询是否包括第一目标地址。
步骤204:若所述目标虚拟地址-物理地址映射关系数据不包括所述第一目标地址,基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。
可以理解的是,当目标虚拟地址-物理地址映射关系数据不包括第一目标地址时,表示第一目标地址超过了目标卷所设定的虚拟地址范围,此时,需要为了完成对目标卷的写请求,需要从磁盘池中未分配的物理磁盘中选取目标物理磁盘分配给目标卷,且需要尽量保证该目标物理磁盘与已分配的物理磁盘在物理上连续。
需要说明的是,在步骤204分配目标物理磁盘之后,表明该目标物理磁盘对应的目标物理地址实际上与第一目标地址存在映射关系,为了确保后续对目标卷写操作或读操作的正确性,则需要将目标物理地址与第一目标地址映射存储,用于更新原有的目标虚拟地址-物理地址映射关系数据。因此,在本实施例的一些实施方式中,在所述步骤204之后,例如还可以包括该步骤:将所述目标物理磁盘对应的目标物理地址和所述第一目标地址对应映射,并更新所述目标虚拟地址-物理地址映射关系数据。
需要说明的是,上述写请求中还需要包括所需写入的写入数据,在包括写入数据时,当步骤204分配目标物理磁盘之后,还需要将写入数据写入至目标物理磁盘,从而实现基于对目标卷的写请求,完成对目标卷的写操作。因此,在本实施例的一些实施方式中,所述写请求还包括写入数据,在步骤204之后,例如还可以包括该步骤:将所述写入数据写入所述目标物理磁盘。
还需要说明的是,存在第一目标地址与目标虚拟地址-物理地址映射关系数据中某个虚拟地址相同的情况,即,目标虚拟地址-物理地址映射关系数据包括第一目标地址,此时,基于目标虚拟地址-物理地址映射关系数据,确定出第一目标地址对应的第一物理地址,然后将写入数据写入该第一物理地址对应的物理磁盘即可。因此,在本实施例的一些实施方式中,对应于步骤204,例如还可以包括如下步骤:
步骤a:若所述目标虚拟地址-物理地址映射关系数据包括所述第一目标地址,确定所述第一目标地址对应的第一物理地址;
步骤b:根据所述第一物理地址,将所述写入数据写入所述第一物理地址对应的物理磁盘。
另需要说明的是,对应于步骤201中对目标卷的写请求,存在对目标卷的读请求,其中,读请求需要包括读取数据所在的地址,即,第二目标地址。在接收到对目标卷的读请求后,同样需要获取目标卷对应的目标虚拟地址-物理地址映射关系数据,以便在其中查询是否包括第二目标地址,明确第二目标地址是否超过了目标卷所设定的虚拟地址范围,若是,表明读取数据不在目标卷中,返回空值表示未能读取数据。因此,在本实施例的一些实施方式中,例如还可以包括以下步骤:
步骤c:接收对目标卷的读请求,所述读请求包括第二目标地址;
步骤d:获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;
步骤e:根据所述第二目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
步骤f:若所述目标虚拟地址-物理地址映射关系数据不包括所述第二目标地址,返回空值。
同理,存在第二目标地址与目标虚拟地址-物理地址映射关系数据中某个虚拟地址相同的情况,即,目标虚拟地址-物理地址映射关系数据包括第二目标地址,此时,基于目标虚拟地址-物理地址映射关系数据,确定出第二目标地址对应的第二物理地址,然后读取该第二物理地址存储的数据并返回即可。因此,在本实施例的一些实施方式中,对应于步骤f,例如还可以包括如下步骤:
步骤g:若所述目标虚拟地址-物理地址映射关系数据包括所述第二目标地址,确定所述第二目标地址对应的第二物理地址;
步骤h:根据所述第二物理地址,返回所述第二物理地址存储的数据。
通过本实施例提供的各种实施方式,首先,接收对按照实际需求分配有实际存储空间的目标卷的包括第一目标地址的写请求;然后,获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;其次,在查询所述目标虚拟地址-物理地址映射关系数据中查询是否包括所述第一目标地址;若不包括,则基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。由此可见,无需提前分配大于实际需求的存储空间,基于目标卷的实际写入数据需求动态分配存储空间,允许超额分配存储空间,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
下面结合附图3,通过又一实施例来详细说明本申请实施例中存储空间分配的方法的具体实现方式。
参见图3,示出了本申请实施例中另一种存储空间分配的方法的流程示意图。在本实施例中,所述方法例如可以包括以下步骤:
步骤301:接收对目标卷的写请求;目标卷按照实际需求分配有实际存储空间,写请求包括第一目标地址和写入数据。
步骤302:获取目标卷对应的目标虚拟地址-物理地址映射关系数据;目标虚拟地址-物理地址映射关系数据采用b-树数据结构。
步骤303:根据第一目标地址查询目标虚拟地址-物理地址映射关系数据。
步骤304:判断目标虚拟地址-物理地址映射关系数据是否包括第一目标地址;若是,执行步骤305-306;若否,执行步骤307-309。
步骤305:根据目标虚拟地址-物理地址映射关系数据,确定第一目标地址对应的第一物理地址。
步骤306:根据第一物理地址,将写入数据写入第一物理地址对应的物理磁盘。
步骤307:基于磁盘池的分配情况向目标卷分配目标物理磁盘。
步骤308:将写入数据写入目标物理磁盘。
步骤309:将目标物理磁盘对应的目标物理地址和第一目标地址对应映射,并更新目标虚拟地址-物理地址映射关系数据。
通过本实施例提供的各种实施方式,首先,接收对按照实际需求分配有实际存储空间的目标卷的包括第一目标地址的写请求;然后,获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;其次,在查询所述目标虚拟地址-物理地址映射关系数据中查询是否包括所述第一目标地址;若不包括,则基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。由此可见,无需提前分配大于实际需求的存储空间,基于目标卷的实际写入数据需求动态分配存储空间,允许超额分配存储空间,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
示例性设备
参见图4,示出了本申请实施例中一种存储空间分配的装置的结构示意图。在本实施例中,所述装置例如具体可以包括:
第一接收单元401,用于接收对目标卷的写请求,所述目标卷按照实际需求分配有实际存储空间,所述写请求包括第一目标地址;
获取单元402,用于获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;
第一查询单元403,用于根据所述第一目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
分配单元404,用于若所述目标虚拟地址-物理地址映射关系数据不包括所述第一目标地址,基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。
可选的,所述目标虚拟地址-物理地址映射关系数据采用b-树数据结构。
可选的,还包括:
映射更新单元,用于将所述目标物理磁盘对应的目标物理地址和所述第一目标地址对应映射,并更新所述目标虚拟地址-物理地址映射关系数据。
可选的,所述写请求还包括写入数据,所述装置还包括:
写入单元,用于将所述写入数据写入所述目标物理磁盘。
可选的,还包括:
第二接收单元,用于接收对目标卷的读请求,所述读请求包括第二目标地址;
第二查询单元,用于根据所述第二目标地址,查询所述目标虚拟地址-物理地址映射关系数据;
返回单元,用于若所述目标虚拟地址-物理地址映射关系数据不包括所述第二目标地址,返回空值。
通过本实施例提供的各种实施方式,首先,接收对按照实际需求分配有实际存储空间的目标卷的包括第一目标地址的写请求;然后,获取所述目标卷对应的目标虚拟地址-物理地址映射关系数据;其次,在查询所述目标虚拟地址-物理地址映射关系数据中查询是否包括所述第一目标地址;若不包括,则基于磁盘池的分配情况向所述目标卷分配目标物理磁盘。由此可见,无需提前分配大于实际需求的存储空间,基于目标卷的实际写入数据需求动态分配存储空间,允许超额分配存储空间,以尽量减少已分配但未使用的存储空间量,从而提升存储空间利用率;且降低了总存储空间的分配量,减少不得不购买更大存储空间产生的额外存储成本。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述,仅是本申请的较佳实施例而已,并非对本申请作任何形式上的限制。虽然本申请已以较佳实施例揭露如上,然而并非用以限定本申请。任何熟悉本领域的技术人员,在不脱离本申请技术方案范围情况下,都可利用上述揭示的方法和技术内容对本申请技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本申请技术方案的内容,依据本申请的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本申请技术方案保护的范围内。