一种存储系统的磁盘空间分配方法、装置以及介质与流程

文档序号:32798450发布日期:2023-01-03 23:00阅读:50来源:国知局
一种存储系统的磁盘空间分配方法、装置以及介质与流程

1.本技术涉及存储技术领域,特别是涉及一种存储系统的磁盘空间分配方法、装置以及介质。


背景技术:

2.机械硬盘(hard disk drive,hdd)作为分布式存储系统最基本的存储单元,其读写速度直接影响了存储系统的性能。目前的磁盘空间分配所使用的算法,并没有考虑到磁盘不同位置空间的速率差异,而是从磁盘初始位置按顺序向后不断分配新空间,当分配到磁盘的最后一个分配单元后,再从起始位置向后寻找空闲空间进行分配。这种方式在实际使用中往往并不会将整个存储系统写满,但经常会对已写入的数据进行修改,为了数据的安全和性能考虑,存储系统会使用再分配写对数据进行修改,即修改某个对象的数据时,并不会先将原有数据删除,而是新分配一段磁盘空间将新数据写入,新数据写入完成后再将原有数据删除并释放其磁盘空间。这样做的好处是可以无需引入日志机制便可保证数据不会丢失。
3.但这种方式同时也带来了新的磁盘空间分配操作。因此即使存储系统已用容量不大的情况下,经过多次的数据修改写,也会导致被分配到磁盘末尾的空间,这时由于磁盘该位置的性能较低,会拖慢存储系统的整体性能。
4.由此可见,如何避免磁盘占用过多,从而保证存储系统的整体性能,是本领域技术人员亟待解决的问题。


技术实现要素:

5.本技术的目的是提供一种存储系统的磁盘空间分配方法、装置以及介质,以避免磁盘占用过多,从而保证存储系统的整体性能。
6.为解决上述技术问题,本技术提供一种存储系统的磁盘空间分配方法,包括:
7.接收磁盘空间的申请请求;
8.若收到所述申请请求,则按离所述磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间;
9.若找到空闲的所述块存储空间,则将所述块存储空间进行分配。
10.优选地,所述磁盘空间划分为不同等级的多层位图,且一个等级高的所述位图对应的所述磁盘空间包括多个等级低的所述位图对应的所述磁盘空间;
11.遍历所述磁盘的所述块存储空间以找到空闲的所述块存储空间包括:
12.遍历等级高的所述位图对应的所述磁盘空间;
13.若等级高的所述位图对应的所述磁盘空间存在空闲,则确定对应的所述磁盘空间为目标磁盘空间;
14.遍历所述目标磁盘空间所包括的等级低的所述位图对应的所述磁盘空间,直至找到空闲的所述块存储空间。
15.优选地,根据预设阈值将所述磁盘空间分为外圈和内圈;其中,所述预设阈值为所述磁盘空间上的位置离所述磁盘空间的中心位置的距离;
16.所述按离所述磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间包括:
17.遍历所述外圈的所述块存储空间;
18.若所述外圈不存在空闲的所述块存储空间,则遍历所述内圈的所述块存储空间。
19.优选地,遍历所述外圈的所述块存储空间以找到空闲的所述块存储空间包括:
20.若上次分配的所述块存储空间位于所述外圈,则从上次分配的所述块存储空间的下一个所述块存储空间起开始遍历以找到空闲的所述块存储空间;
21.若上次分配的所述块存储空间位于所述内圈,则从所述外圈的起始位置对应的所述块存储空间起开始遍历以找到空闲的所述块存储空间。
22.优选地,遍历所述外圈的所述块存储空间以找到空闲的所述块存储空间包括:
23.从所述外圈的起始位置对应的所述块存储空间起开始遍历以找到空闲的所述块存储空间。
24.优选地,遍历所述内圈的所述块存储空间以找到空闲的所述块存储空间包括:
25.若上次分配的所述块存储空间位于所述外圈,则从所述内圈的起始位置对应的所述块存储空间起开始遍历以找到空闲的所述块存储空间;
26.若上次分配的所述块存储空间位于所述内圈,则从上次分配的所述块存储空间的下一个所述块存储空间起开始遍历以找到空闲的所述块存储空间。
27.优选地,所述若找到空闲的所述块存储空间,则将所述块存储空间进行分配之后,还包括:
28.更新分配后的所述块存储空间的状态。
29.为解决上述技术问题,本技术还提供一种存储系统的磁盘空间分配装置,包括:
30.接收模块,用于接收磁盘空间的申请请求;
31.遍历模块,用于若收到所述申请请求,则按离所述磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间;
32.分配模块,用于若找到空闲的所述块存储空间,则将所述块存储空间进行分配。
33.优选地,所述存储系统的磁盘空间分配装置还包括:更新模块,用于在若找到空闲的所述块存储空间,则将所述块存储空间进行分配之后,更新分配后的所述块存储空间的状态。
34.为解决上述技术问题,本技术还提供一种存储系统的磁盘空间分配装置,包括:存储器,用于存储计算机程序;
35.处理器,用于执行计算机程序时实现上述存储系统的磁盘空间分配方法的步骤。
36.为解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述存储系统的磁盘空间分配方法的步骤。
37.本技术所提供的一种存储系统的磁盘空间分配方法,一般是在修改某个对象的数据时接收磁盘空间的申请请求,若收到申请请求,则按离磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间,若找到空闲的块存储空间,则将块存储空间进行分配。本技术提供的存储系统的磁盘空间分配方法,依据机械硬盘外圈性能高,内圈性能低的特点对磁
盘空间进行划分,能够在分配磁盘空间时优先使用磁盘高速的外圈空间,避免了存储系统因部分磁盘使用了低速的内圈空间拖慢整体性能,提升了系统的性能和稳定性。
38.本技术还提供了一种存储系统的磁盘空间分配装置和计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
附图说明
39.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1为本技术实施例提供的一种存储系统的磁盘空间分配方法的流程图;
41.图2为本技术实施例提供的一种使用位图对磁盘空间进行划分的示意图;
42.图3为本技术实施例提供的一种磁盘空间分配流程示意图;
43.图4为本技术实施例提供的存储系统的磁盘空间分配装置的结构图;
44.图5为本技术另一实施例提供的存储系统的磁盘空间分配装置的结构图。
具体实施方式
45.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
46.本技术的核心是提供一种存储系统的磁盘空间分配方法、装置以及介质,以避免磁盘占用过多,从而保证存储系统的整体性能。
47.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
48.分布式存储系统是由多个存储服务器(节点)通过网络连接而成,在磁盘上部署对象存储设备(object-based storage device,osd)服务,并通过算法将数据均衡分布在各个osd上,实现了高性能,高可靠性,易于扩展的数据存储。为了缩短数据读写(input/output,io)路径获得更高的性能,目前的分布式存储系统直接对物理磁盘进行管理,不依赖文件系统,自行分配和释放磁盘空间。hdd作为分布式存储系统最基本的存储单元,其读写速度直接影响了存储系统的性能。由于hdd需要增加存储单元的密度并提高存储介质的利用率,使得磁盘的内环和外环的每个轨道的扇区数并不相同。在相同密度下,盘外环的存储单元小于内环,当盘的角速度恒定时,盘的外圈的线速度比内圈快,读取的扇区数更多,因此外圈的读写速度比内圈更快。在相同的测试条件下,从磁盘的起始位置开始,越靠近磁盘的内圈其读写性能越差,速度差异最大可达到两倍以上。本技术设计了一种存储系统的磁盘空间分配方法,能够在分配磁盘空间时优先使用磁盘高速的外圈空间,并且通过分层的位图结构,提高了磁盘空间分配的效率。避免了存储系统因部分磁盘使用了低速的内圈空间拖慢整体性能,提升了系统的性能和稳定性。图1为本技术实施例提供的一种存储系统的磁盘空间分配方法的流程图;如图1所示,该方法包括如下步骤:
49.s10:接收磁盘空间的申请请求。
50.s11:若收到申请请求,则按离磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间。
51.s12:若找到空闲的块存储空间,则将块存储空间进行分配。
52.这里提供一种具体的实现方案,需要注意的是,本技术并不限于以下方案,在本技术公开的技术方案的基础上不付出创造性劳动得到的其他方案均在本技术的保护范围内。按离磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间的具体方案这里不作限定,保证优先使用磁盘外圈的空间即可。这里以磁盘外圈起始位置为0位置,并将整个磁盘空间划分为多个大小为最小分配单元的逻辑块(即块存储空间block),使用从上到下l2、l1、l0三层位图进行管理,按照一定阈值将位图分为高速单元区和低速单元区,如果前一次分配的空间位于高速区,则从该位置继续向后查找空闲空间,否则重新从高速区起始位置向后查找,保证优先使用磁盘外圈的空间。具体方案如下。
53.图2为本技术实施例提供的一种使用位图对磁盘空间进行划分的示意图;如图2所示,本实施例的存储系统的磁盘空间分配方法使用位图对磁盘空间进行划分,并按照一定阈值将磁盘空间分为高速区和低速区,通过树形结构增加查找效率。首先按照最小分配单元大小(可以是4k、8k或者更大)将hdd划分为多个block,从上往下依次为三层位图l2、l1、l0,可通过数组的数据结构进行组织,对每个位置索引(position,pos)的状态位置位为0或1来表示该位置的占用状态。l0的每个pos直接与物理磁盘的每个block一一映射,其状态位置位为0时表示该最小分配单元的空间已被占用,置位为1时则表示空闲。l1的每个pos映射到l0的64个pos,即1个pos包含磁盘上的64个block,当l1的pos所映射的l0上的所有pos都被置位为0时,该l1上的对应pos置位为0,否则置位为1,即置位为0时表示l1的该pos下的block全部都被占用,置位为1时表示该pos下存在空闲的block。l2的每个pos则映射到l1的64个pos,即l2的1个pos包含磁盘上的64*64个block。同上,当该pos所映射的l1上的所有pos都被置位为0时,该l2上的对应pos置位为0,否则置位为1。另外,按照一定预设阈值(如在磁盘的中心与边界的中间位置,即磁盘的前半部分认为是外圈,后半部分认为是内圈,可根据磁盘性能表现和业务需求进行调整)将l2中划分为高速区和低速区,高速区和低速区的分界位置为临界位置,l2层中所有小于临界位置的pos认为处于高速区,其余的pos则认为处于低速区。该方案还需要记录上次分配磁盘空间在l2层的位置last_pos(初始化为0),分配空间时,首先判断last_pos是否处于高速区,如果是则从该位置开始向后查找空闲的pos,找到后再从l2-》l0递归查找可用的磁盘空间,找到并分配磁盘空间后,最后回溯设置l0到l2层的位图更新可用空间。
54.图3为本技术实施例提供的一种磁盘空间分配流程示意图;如图3所示,该方法包括如下步骤:s20:申请磁盘空间。s21:判断last_pos是否位于高速区;若是,则进入步骤s22,若否,则进入步骤s23。s22:从该位置向后查找l2的空闲pos。s23:从pos0向后查找l2的空闲pos。s24:判断是否找到空闲pos;若是,则进入步骤s25,若否,则进入步骤s26。s25:从该位置向后查找l2的空闲pos。s26:返回false。s27:向下层递归查找可用的block。s28:返回可用的block位置。s29:从l0向上回溯置位。s30:更新last_pos。图3所示的分配流程,在收到磁盘空间申请请求后,首先判断上次分配空间在l2层的位置last_pos是否小于临界pos,如果是则从该位置开始向后查找,否则从pos0向后查找。向后遍历pos,如果pos占用则继续向后查找,如果pos空闲则向下层递归查找,当遍历所有pos仍没有空闲pos则返回
false。根据l2层空闲pos所映射的l1层pos起始位置,向后查找l1层的空闲pos,找到后再根据该l1层空闲pos所映射的l0层pos起始位置查找空闲block。返回找到的空闲block的位置,即分配磁盘该位置的空间。将该位置对应的l0层pos置位为0,即占用,再向上层回溯置位,若该l1层pos映射所有的l0层的pos全部状态位为0,则该l1层pos置位为0,l2层依次类推(即在将块存储空间进行分配之后,更新分配后的块存储空间的状态)。更新上次分配空间位置变量last_pos为本次分配空间位置所在的l2层的pos。本技术实施例依据机械硬盘外圈性能高,内圈性能低的特点对磁盘空间划分为高速区和低速区,保证在分配磁盘空间时优先分配高速区的空间。通过对上一次分配位置的记录避免每次从起始位置查找和分层的位图结构提高分配空间时的检索效率。
55.在实际应用时,并不限定划分为外圈和内圈进行遍历,可以划分为更多的环圈,也可以不进行划分,从外向内遍历磁盘的块存储空间即可,位图也不限定为l2、l1、l0三个位图。遍历的起始位置也可根据实际需求进行调整,上述实施例的方案可避免每次都从初始位置开始遍历,因为按顺序进行分配,则上次分配的块存储空间之前块存储空间大部分都被占用,则从分配点之后的块存储空间开始遍历,可以加快外圈的遍历效率。而在具体实施时,也可设置为每次均从起始位置开始遍历,实现起来更加简单。
56.本技术实施例所提供的一种存储系统的磁盘空间分配方法,一般是在修改某个对象的数据时接收磁盘空间的申请请求,若收到申请请求,则按离磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间,若找到空闲的块存储空间,则将块存储空间进行分配。本技术实施例提供的存储系统的磁盘空间分配方法,依据机械硬盘外圈性能高,内圈性能低的特点对磁盘空间进行划分,能够在分配磁盘空间时优先使用磁盘高速的外圈空间,避免了存储系统因部分磁盘使用了低速的内圈空间拖慢整体性能,提升了系统的性能和稳定性。
57.在实际应用中,若直接遍历磁盘的块存储空间,则遍历的效率较低,因此本实施例将磁盘空间划分为不同等级的多层位图,且一个等级高的位图对应的磁盘空间包括多个等级低的位图对应的磁盘空间,如图2中的l2、l1、l0三层位图。而遍历磁盘的块存储空间以找到空闲的块存储空间包括:遍历等级高的位图对应的磁盘空间,若等级高的位图对应的磁盘空间存在空闲,则确定对应的磁盘空间为目标磁盘空间,再遍历目标磁盘空间所包括的等级低的位图对应的磁盘空间,直至找到空闲的块存储空间。具体方案可参考图2中的l2、l1、l0三层位图,首先在l2层向后遍历pos,如果pos占用则继续向后查找,如果pos空闲则向下层递归查找,当遍历所有pos仍没有空闲pos则返回false。根据l2层空闲pos所映射的l1层pos起始位置,向后查找l1层的空闲pos,找到后再根据该l1层空闲pos所映射的l0层pos起始位置查找空闲block。最后返回找到的空闲block的位置,即分配磁盘该位置的空间。本实施例通过分层的位图结构,提高了磁盘空间分配的效率。
58.由于hdd需要增加存储单元的密度并提高存储介质的利用率,使得磁盘的内环和外环的每个轨道的扇区数并不相同。在相同密度下,盘外环的存储单元小于内环,当盘的角速度恒定时,盘的外圈的线速度比内圈快,读取的扇区数更多,因此外圈的读写速度比内圈更快,这里的外圈是相对于内圈而言,而在实际应用时,可以根据预设阈值将磁盘空间明确划分为外圈和内圈,其中,预设阈值为磁盘空间上的位置离磁盘空间的中心位置的距离,预设阈值的大小不作限定,一般可设置在磁盘的中心与边界的中间位置。则按离磁盘空间的
中心位置的距离从外向内遍历磁盘的块存储空间包括:遍历外圈的块存储空间,若外圈不存在空闲的块存储空间,则遍历内圈的块存储空间。本方案能够在分配磁盘空间时优先使用磁盘高速的外圈空间。
59.对应的,在明确划分了外圈和内圈之后,遍历块存储空间的具体方案也可进行调整。例如,第一种方案是,遍历外圈的块存储空间以找到空闲的块存储空间包括:若上次分配的块存储空间位于外圈,则从上次分配的块存储空间的下一个块存储空间起开始遍历以找到空闲的块存储空间;若上次分配的块存储空间位于内圈,则从外圈的起始位置对应的块存储空间起开始遍历以找到空闲的块存储空间。这种方式避免每次都从初始位置开始遍历,因为按顺序进行分配,则上次分配的块存储空间之前块存储空间大部分都被占用,则从分配点之后的块存储空间开始遍历,可以加快外圈的遍历效率。而对应的另一种方案是,遍历外圈的块存储空间以找到空闲的块存储空间包括:都从外圈的起始位置对应的块存储空间起开始遍历以找到空闲的块存储空间。这种方案不需要记录上次分配的块存储空间,不需要进行判断,只需要每次从起始位置开始遍历即可,实现更加简单。
60.上文是举例说明了遍历外圈的两种方案,而外圈都被占用之后,则需要分配内圈的块存储空间,遍历内圈的块存储空间以找到空闲的块存储空间包括:若上次分配的块存储空间位于外圈,则从内圈的起始位置对应的块存储空间起开始遍历以找到空闲的块存储空间;若上次分配的块存储空间位于内圈,则从上次分配的块存储空间的下一个块存储空间起开始遍历以找到空闲的块存储空间。本例的方案与分配外圈空间的第一种方案对应,避免每次都从初始位置开始遍历,可以加快内圈的遍历效率。
61.在上述实施例中,对于存储系统的磁盘空间分配方法进行了详细描述,本技术还提供存储系统的磁盘空间分配装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
62.基于功能模块的角度,本实施例提供一种存储系统的磁盘空间分配装置,图4为本技术实施例提供的存储系统的磁盘空间分配装置的结构图,如图4所示,该装置包括:
63.接收模块10,用于接收磁盘空间的申请请求;
64.遍历模块11,用于若收到申请请求,则按离磁盘空间的中心位置的距离从外向内遍历磁盘的块存储空间;
65.分配模块12,用于若找到空闲的块存储空间,则将块存储空间进行分配。
66.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
67.作为优选的实施方式,存储系统的磁盘空间分配装置还包括:更新模块,用于在若找到空闲的块存储空间,则将块存储空间进行分配之后,更新分配后的块存储空间的状态。
68.本实施例提供的存储系统的磁盘空间分配装置,与上述方法对应,故具有与上述方法相同的有益效果。
69.基于硬件的角度,本实施例提供了另一种存储系统的磁盘空间分配装置,图5为本技术另一实施例提供的存储系统的磁盘空间分配装置的结构图,如图5所示,存储系统的磁盘空间分配装置包括:存储器20,用于存储计算机程序;
70.处理器21,用于执行计算机程序时实现如上述实施例中所提到的存储系统的磁盘空间分配方法的步骤。
71.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
72.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的存储系统的磁盘空间分配方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于存储系统的磁盘空间分配方法涉及到的数据等。
73.在一些实施例中,存储系统的磁盘空间分配装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
74.本领域技术人员可以理解,图中示出的结构并不构成对存储系统的磁盘空间分配装置的限定,可以包括比图示更多或更少的组件。
75.本技术实施例提供的存储系统的磁盘空间分配装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:存储系统的磁盘空间分配方法。
76.本实施例提供的存储系统的磁盘空间分配装置,与上述方法对应,故具有与上述方法相同的有益效果。
77.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
78.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例描述的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
79.本实施例提供的计算机可读存储介质,与上述方法对应,故具有与上述方法相同的有益效果。
80.以上对本技术所提供的一种存储系统的磁盘空间分配方法、装置以及介质进行了
详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
81.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1