一种基于块存储的动态调整存储单元的方法及装置转让专利

申请号 : CN201910237378.6

文献号 : CN110069215B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周迪付建辉路小波

申请人 : 浙江宇视科技有限公司

摘要 :

本发明公开了一种基于块存储的动态调整存储单元的方法及装置,通过比较待存储文件与存储单元剩余空间的大小,在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小,在块存储模式下,本发明存储单元尺寸通过阈值设置可动态调节,提高了存储空间的利用率,同时设置两个阈值包括最小阈值和最大阈值,避免过于频繁的变动,从而兼顾了存储性能。此外还通过保存调整前基准地址值来解决文件满覆盖时读取的问题。

权利要求 :

1.一种基于块存储的动态调整存储单元的方法,其特征在于,所述基于块存储的动态调整存储单元的方法,包括:比较待存储文件与存储单元剩余空间的大小;

在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小;

其中,所述扩大或缩小存储单元尺寸以适应待存储文件大小,包括:若存储单元剩余空间大于第一阈值,则扩大存储单元尺寸大小以便存储待存储文件;

若存储单元剩余空间小于第二阈值,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;

若存储单元剩余空间小于等于第一阈值且大于等于第二阈值,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。

2.根据权利要求1所述的基于块存储的动态调整存储单元的方法,其特征在于,所述扩大存储单元尺寸大小以便存储待存储文件,其中:存储单元尺寸的扩大值为待存储文件大小与存储单元剩余空间大小的差值;

所述缩小存储单元尺寸大小,其中:

存储单元尺寸的缩小值为存储单元剩余空间大小。

3.根据权利要求1所述的基于块存储的动态调整存储单元的方法,其特征在于,所述扩大或缩小存储单元尺寸以适应待存储文件大小,还包括:在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。

4.根据权利要求3所述的基于块存储的动态调整存储单元的方法,其特征在于,所述扩大或缩小存储单元尺寸以适应待存储文件大小,还包括:在索引中保存存储单元调整前、后的基准地址。

5.一种基于块存储的动态调整存储单元的装置,其特征在于,所述基于块存储的动态调整存储单元的装置,包括:比较模块,用于比较待存储文件与存储单元剩余空间的大小;

存储单元调整模块,用于在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小;

其中,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,执行如下操作:若存储单元剩余空间大于第一阈值,则扩大存储单元尺寸大小以便存储待存储文件;

若存储单元剩余空间小于第二阈值,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;

若存储单元剩余空间小于等于第一阈值且大于等于第二阈值,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。

6.根据权利要求5所述的基于块存储的动态调整存储单元的装置,其特征在于,所述存储单元调整模块在扩大存储单元尺寸大小以便存储待存储文件,其中:存储单元尺寸的扩大值为待存储文件大小与存储单元剩余空间大小的差值;

所述缩小存储单元尺寸大小,其中:

存储单元尺寸的缩小值为存储单元剩余空间大小。

7.根据权利要求5所述的基于块存储的动态调整存储单元的装置,其特征在于,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下步骤:在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。

8.根据权利要求7所述的基于块存储的动态调整存储单元的装置,其特征在于,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下操作:在索引中保存存储单元调整前、后的基准地址。

说明书 :

一种基于块存储的动态调整存储单元的方法及装置

技术领域

[0001] 本发明属于数据存储技术领域,尤其涉及一种基于块存储的动态调整存储单元的方法及装置。

背景技术

[0002] 在视频监控领域,尤其是视频监控卡口应用场景中,包括图片在内的小文件存储是需要面对的一大难题,通常存在图片存储的性能低下、存储数据不可靠、存储空间浪费等问题。对于文件尤其是图片块存储性能低下及空间浪费问题,已有的类似解决方法和思路是:将多个图片聚合存储,并将图片相对于存储单元的偏移量写入索引,以实现一次性查找定位,并在一定程度上解决图片存储空间浪费问题。
[0003] 上述技术方案将一个批次的小文件按大文件的方式存储在一起,而拥有大文件的存储性能。将小文件映射成大文件后,在后端系统上存储大文件,一定程度上提升了存储空间的利用率和文件的查找性能。然而把图片或小文件映射成大文件的方式,存储单元的大小是固定的,这种情况下,当存储单元的剩余空间小于需要存储的文件大小时,因为无法塞入一张图片导致该存储单元的剩余空间浪费。

发明内容

[0004] 本发明的目的是提供一种基于块存储的动态调整存储单元的方法,对现有文件块存储方法进行优化和改进,较好的解决了文件块存储导致存储空间浪费的问题。
[0005] 为了实现上述目的,本发明技术方案如下:
[0006] 一种基于块存储的动态调整存储单元的方法,包括:
[0007] 比较待存储文件与存储单元剩余空间的大小;
[0008] 在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小。
[0009] 可选的,所述扩大或缩小存储单元尺寸以适应待存储文件大小,包括:
[0010] 若存储单元剩余空间大于第一阈值,则扩大存储单元尺寸大小以便存储待存储文件;
[0011] 若存储单元剩余空间小于第二阈值,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;
[0012] 若存储单元剩余空间小于等于第一阈值且大于等于第二阈值,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。
[0013] 进一步地,所述扩大存储单元尺寸大小以便存储待存储文件,其中:
[0014] 存储单元尺寸的扩大值为待存储文件大小与存储单元剩余空间大小的差值;
[0015] 所述缩小存储单元尺寸大小,其中:
[0016] 存储单元尺寸的缩小值为存储单元剩余空间大小。
[0017] 进一步地,所述扩大或缩小存储单元尺寸以适应待存储文件大小,还包括:
[0018] 在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。
[0019] 进一步地,所述扩大或缩小存储单元尺寸以适应待存储文件大小,还包括:
[0020] 在索引中保存存储单元调整前、后的基准地址。
[0021] 本发明还提出了一种基于块存储的动态调整存储单元的装置,包括:
[0022] 比较模块,用于比较待存储文件与存储单元剩余空间的大小;
[0023] 存储单元调整模块,用于在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小。
[0024] 可选的,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,执行如下操作:
[0025] 若存储单元剩余空间大于第一阈值,则扩大存储单元尺寸大小以便存储待存储文件;
[0026] 若存储单元剩余空间小于第二阈值,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;
[0027] 若存储单元剩余空间小于等于第一阈值且大于等于第二阈值,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。
[0028] 进一步地,所述存储单元调整模块在扩大存储单元尺寸大小以便存储待存储文件,其中:
[0029] 存储单元尺寸的扩大值为待存储文件大小与存储单元剩余空间大小的差值;
[0030] 所述缩小存储单元尺寸大小,其中:
[0031] 存储单元尺寸的缩小值为存储单元剩余空间大小。
[0032] 进一步地,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下步骤:
[0033] 在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。
[0034] 进一步地,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下操作:
[0035] 在索引中保存存储单元调整前、后的基准地址。
[0036] 本发明提出的一种基于块存储的动态调整存储单元的方法及装置,通过比较待存储文件与存储单元剩余空间的大小,在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小,在块存储模式下,本发明存储单元尺寸通过阈值设置可动态调节,提高了存储空间的利用率,同时设置两个阈值包括最小阈值和最大阈值,避免过于频繁的变动,从而兼顾了存储性能。此外还通过保存调整前基准地址值来解决文件满覆盖时读取的问题。

附图说明

[0037] 图1为块存储数据结构示意图;
[0038] 图2为本发明实施例基于块存储的动态调整存储单元的方法流程图;
[0039] 图3为本发明实施例存储单元结构示意图;
[0040] 图4为本发明另一实施例存储单元结构示意图。

具体实施方式

[0041] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0042] 在电警卡口、人脸抓拍等视频监控业务中,有海量的图片存储业务需求。这些图片小文件的存储,相对于当前的存储模型和结构,会存在较多的存储空间浪费现象,例如当存储单元的剩余空间无法存储一张图片的大小时,现有的方法是找到下一个存储单元的开始进行存储,这样就导致了前一个存储单元剩余空间的浪费,当图片基数足够大的时候,累计起来浪费的存储空间将非常可观。
[0043] 本申请涉及的范围主要是基于块存储的图片或文件(下面都以图片来说明)存储,块存储是将裸磁盘空间整个映射给主机使用的一种系统,在块存储服务系统中,所有存储的数据都以定长的数据块为单位进行存储。块存储中定义的最小存储大小就是存储单元,整个存储空间划分为若干个存储单元。索引是提供文件存储地址的一种存储结构,通过索引可以快速定位图片或文件在存储单元的物理位置,索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
[0044] 块存储数据结构如图1所示,块存储数据结构通常包括块设备头部信息、数据索引区,以及由存储单元组成的数据区。
[0045] 在一个实施例中,如图2所示,提供了一种基于块存储的动态调整存储单元的方法,根据存储单元剩余容量、图片大小以及经验阈值的设置,来动态调整存储单元的大小,调整方式可包括扩大、缩小或保持不变,同时刷新图片索引值和图片相对存储单元的偏移量值,从而达到节省存储空间的作用,同时兼顾了图片的存储效率和性能。
[0046] 本实施例一种基于块存储的动态调整存储单元的方法,包括:
[0047] 比较待存储文件与存储单元剩余空间的大小;
[0048] 在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小。
[0049] 本申请技术方案涉及到几个变量,例如待存储文件(以下以图片为例进行说明)的大小S1,存储单元剩余空间大小S2,并引入了两个阈值,第一阈值X1,即最大阈值;第二阈值X2,即最小阈值。
[0050] 实施例1、如果图片大小S1>存储单元剩余空间S2。
[0051] 若存储单元剩余空间S2大于第一阈值X1,则扩大存储单元尺寸大小以便存储待存储文件;
[0052] 若存储单元剩余空间S2小于第二阈值X2,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;
[0053] 若存储单元剩余空间S2小于等于第一阈值X1且大于等于第二阈值X2,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。
[0054] 即,在存储单元剩余空间S2>第一阈值X1时,说明存储单元剩余空间S2是比较大的,可以通过扩大存储单元尺寸大小的方式,将存储单元扩大至刚好可以存储下该图片的大小,扩大值等于S1–S2,以存储图片。同时调整索引、调整偏移量。
[0055] 在存储单元剩余空间S2<第二阈值X2时,说明存储单元剩余空间S2比较小,可以不再利用,对存储单元尺寸不做调整,图片继续存储到下一个存储单元。这样做的好处是避免频繁调整,影响性能。
[0056] 在第二阈值X2<=存储单元剩余空间S2<=第一阈值X1时,说明存储单元剩余空间S2还有,不利用可惜,利用起来又不够,本实施例通过缩小存储单元尺寸大小的方式,缩小值等于存储单元剩余空间S2,这样将存储单元剩余空间S2放入下一个存储单元,将待存储文件存储到下一个存储单元,来充分利用存储资源。同时调整索引、调整偏移量。
[0057] 实施例2、如果图片大小S1>存储单元剩余空间S2。
[0058] 在存储单元剩余空间S2>第一阈值X1时,说明存储单元剩余空间S2是比较大的,可以通过扩大存储单元尺寸大小的方式,将存储单元扩大至刚好可以存储下该图片的大小,扩大值等于S1–S2,来存储图片。同时调整索引、调整偏移量。
[0059] 在存储单元剩余空间S2<第二阈值X2时,说明存储单元剩余空间S2比较小,可以不再利用,对存储单元尺寸不做调整,图片继续存储到下一个存储单元。这样做的好处是避免频繁调整,影响性能。
[0060] 在第二阈值X2<=存储单元剩余空间S2<=第一阈值X1时,说明存储单元剩余空间S2还有,不利用可惜,利用起来又不够,通过扩大存储单元尺寸大小,将存储单元扩大至刚好可以存储下该图片的大小,扩大值等于S1–S2,来存储图片。同时调整索引、调整偏移量。
[0061] 实施例3、如果图片大小S1<=存储单元剩余空间S2。
[0062] 直接将图片存储至该存储单元的剩余空间,不调整存储单元尺寸大小。同时更新索引。
[0063] 需要说明的是,存储单元大小调整时,一般来说扩大或缩小的量以能正好保存待存储的文件为准,当然适当放宽扩大或缩小的量并不会影响本发明的技术效果,本申请技术方案的目的是最大可能减少存储空间的浪费。
[0064] 在一个实施例中,扩大或缩小存储单元尺寸以适应待存储文件大小,还包括:
[0065] 在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。
[0066] 如图3为存储单元结构示意图,P1、P2…Pn为存储的图片(两条虚线之间为一张图片的存储空间)。当存储单元n的剩余空间无法塞入一张图片,需要缩小存储单元尺寸以节省容量时,此时节省的容量大小为存储单元的剩余空间,如图3方块P所示。调整前索引为A1,调整后索引更新为A2,同时记录偏移量,偏移量大小为缩小的尺寸,即剩余空间的大小。
[0067] 当存储单元n的剩余容量无法塞入一张图片,需要扩大存储单元尺寸时,扩大的尺寸大小为图片大小减掉存储单元剩余的大小,如图4方块P所示。调整前索引为B1,调整后索引更新为B2,同时记录偏移量,大小为扩大的尺寸。
[0068] 应该理解的是,当存储单元尺寸存在调整时(包括缩小和扩大),如果下一个存储单元上已有老的历史数据,这个时候会涉及到下一个存储单元的第一张图片的覆盖问题以及读取问题。
[0069] 在本实施例中,下一个存储单元的第一张图片满覆盖策略保持和现有实现不变,读取策略则如下:
[0070] 当存储单元尺寸缩小时,存储单元中第一张以及后面的图片地址根据调整前基准地址进行读取。
[0071] 需要说明的是,调整前基准地址是存储单元尺寸调整前索引里面保存的基准地址,基准地址指的是图片相对于它所在的每个存储单元的开始地址。索引里面保存两份地址,一份为调整前基准地址,一份为调整后基准地址,调整后基准地址是指存储单元尺寸调整后索引里面保存的基准地址,两份地址的基准地址不同。索引里图片地址根据其相对于基准地址的偏移量和基准地址来确定,在确定图片地址后,就可以根据图片地址进行读取,这里不再赘述。
[0072] 当存储单元尺寸扩大时,后续存储单元中第一张图由于被覆盖掉了,无法读取。再往后一张同样采用前基准地址来读取。
[0073] 为了满足上述读取策略,本实施例基于块存储的动态调整存储单元的方法,还包括:
[0074] 在索引中保存存储单元调整前、后的基准地址。
[0075] 由于调整后的基准地址必然是随着存储单元的变化而修改的,这里默认为本申请技术方案在索引中保存两份基准地址,分别为调整前的基准地址和调整后的基准地址。
[0076] 应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0077] 在一个实施例中,本申请还提供了一种基于块存储的动态调整存储单元的装置,包括:
[0078] 比较模块,用于比较待存储文件与存储单元剩余空间的大小;
[0079] 存储单元调整模块,用于在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小。
[0080] 关于基于块存储的动态调整存储单元的装置的具体限定可以参见上文中对于基于块存储的动态调整存储单元的方法的限定,在此不再赘述。上述基于块存储的动态调整存储单元的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0081] 在一个具体的实施例中,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,执行如下操作:
[0082] 若存储单元剩余空间大于第一阈值,则扩大存储单元尺寸大小以便存储待存储文件;
[0083] 若存储单元剩余空间小于第二阈值,则保持存储单元尺寸大小不变,将待存储文件存储到下一个存储单元;
[0084] 若存储单元剩余空间小于等于第一阈值且大于等于第二阈值,则缩小存储单元尺寸大小,将待存储文件存储到下一个存储单元。
[0085] 在一个具体的实施例中,所述存储单元调整模块在扩大存储单元尺寸大小以便存储待存储文件,其中:
[0086] 存储单元尺寸的扩大值为待存储文件大小与存储单元剩余空间大小的差值;
[0087] 所述缩小存储单元尺寸大小,其中:
[0088] 存储单元尺寸的缩小值为存储单元剩余空间大小。
[0089] 在一个具体的实施例中,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下步骤:
[0090] 在扩大或缩小存储单元尺寸以适应待存储文件大小时,更新待存储文件对应的索引,并记录偏移量。
[0091] 在一个具体的实施例中,所述存储单元调整模块在扩大或缩小存储单元尺寸以适应待存储文件大小时,还执行如下操作:
[0092] 在索引中保存存储单元调整前、后的基准地址。
[0093] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。