一种数据存储方法及装置转让专利

申请号 : CN201210541101.0

文献号 : CN103064633B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 冯海勇刘先材

申请人 : 广东威创视讯科技股份有限公司

摘要 :

本发明提出一种数据存储方法,包括步骤:从空闲的磁盘中建立若干块文件;其中,所述块文件由若干文件块组成,所述文件块为操作系统文件分配的块;以所述块文件为单位进行数据存储。本发明还提出一种数据存储装置,可以提高从磁盘读取数据的速度,提高磁盘的读写性能。

权利要求 :

1.一种数据存储方法,其特征在于,包括步骤:

从空闲的磁盘中建立若干块文件;其中,所述块文件由若干文件块组成,所述文件块为操作系统文件分配的块;

当有新数据需要存储,且无空闲的块文件时,按照预定条件删除块文件中的数据,以块文件为单位进行数据删除;其中,所述预定条件为存储所述数据的时间,或者指定的块文件,或者存储的所述数据的标识;

将所述新数据以块文件为单位存储在空闲的块文件中;

若所述预定条件为存储所述数据的时间,按照预定条件删除块文件中的数据,将所述新数据以块文件为单位存储在空闲的块文件中的步骤包括:将指定时间对应的块文件中的数据删除,然后存入新数据中未存储的数据;判断新数据是否存储完毕;若否,将与指定时间挨着的下一个时间作为新的指定时间,返回将指定时间对应的块文件中的数据删除的步骤;其中释放块文件中数据的速度大于接收数据的速度;

所述以块文件为单位进行数据存储的步骤包括:若当前数据中剩余数据的大小比当前块文件的容量小,则在存储完当前数据后,在所述当前块文件中存储另一数据。

2.根据权利要求1所述的数据存储方法,其特征在于,

在系统构建时,或在磁盘格式化时,进行所述从空闲的磁盘中建立若干块文件的步骤。

3.根据权利要求1所述的数据存储方法,其特征在于,

各个所述块文件的容量相同。

4.根据权利要求1所述的数据存储方法,其特征在于,所述以块文件为单位进行数据存储的步骤包括:若当前数据的大小比当前块文件的容量大,则在所述当前块文件中存储完毕后,在另一个块文件中存储当前数据中的剩余数据。

5.一种数据存储装置,其特征在于,包括:

块文件建立单元,用于从空闲的磁盘中建立若干块文件;其中,所述块文件由若干文件块组成,所述文件块为操作系统文件分配的块;

当有新数据需要存储,且无空闲的块文件时,删除单元按照预定条件删除块文件中的数据,以块文件为单位进行数据删除;其中,所述预定条件为存储所述数据的时间,或者指定的块文件,或者存储的所述数据的标识;

存储单元,用于将所述新数据以块文件为单位存储在空闲的块文件中;

在所述预定条件为存储所述数据的时间时,删除单元将指定时间对应的块文件中的数据删除;存储单元在数据删除后的块文件中存入新数据中未存储的数据,判断新数据是否存储完毕,若没有存储完毕,将与指定时间挨着的下一个时间作为新的所述指定时间;其中释放块文件中数据的速度大于接收数据的速度;

所述存储单元以块文件为单位进行数据存储时,若当前数据中剩余数据的大小比当前块文件的容量小,则在存储完当前数据后,在所述当前块文件中存储另一数据。

6.根据权利要求5所述的数据存储装置,其特征在于,

所述块文件建立单元在系统构建时,或在磁盘格式化时,从空闲的磁盘中建立若干块文件。

7.根据权利要求5所述的数据存储装置,其特征在于,

各个所述块文件容量相同。

8.根据权利要求5所述的数据存储装置,其特征在于,所述存储单元以块文件为单位进行数据存储时,若当前数据的大小比当前块文件的容量大,则在所述当前块文件中存储完毕后,在另一个块文件中存储当前数据中的剩余数据。

说明书 :

一种数据存储方法及装置

技术领域

[0001] 本发明涉及数据存储领域,特别是涉及一种数据存储方法及装置。

背景技术

[0002] 由于现在磁盘限制,一般来说磁盘都是机械式的,在现有的操作系统实现中,无论是免费的Linux系统或者付费的Windows系统都存在一个问题,当频繁进行数据的删除和存储后会存在严重的磁盘碎片的问题,使得磁盘的读写性能会越来越差;
[0003] 当然由于个人电脑用户不会像IP视频中那么疯狂的读写磁盘,不会在很短时间内把自己磁盘填满然后清掉,所以这个碎片产生的过程不会很快,使用数年的系统才有可能出现这个问题,然而在某些特定领域,如IP视频存储,磁盘经常处于饱和状态,经常的有数据删除然后填入新的数据,碎片产生的很快,这个过程可能会被提快10倍,几个月就会出现这个问题,所以经常会出现这样的问题,存储系统初期运行良好,负载规格的内视频存储完全没有问题,但随着系统运行可能负载会越来越重,直至系统无法完成涉及规格要求的内容。
[0004] 要解释为什么会出现这样的问题,我们需要了解两个问题,一、磁盘的物理特性;二、操作系统文件系统实现;首先我们要明白磁盘是一个机械的设备,当上位的操作系统要访问磁盘的时候需要首先将磁盘的读写头移动到要读写的位置,这就是磁盘的寻址问题,与内存、固态硬盘不同,所以当你访问内容不是在磁盘同一块区域上的时候就涉及到了频繁寻址的问题,这会大大降低磁盘的吞吐量,大量时间都用在了磁盘读写头的定位上。对于操作系统的文件系统实现,操作系统会将磁盘划分成若干个独立的块,称之为文件块,一般的系统中默认实现文件块大小都是4KB级别的,操作系统会管理所有的空闲文件块,以及每个文件所使用的所有文件块列表。
[0005] 当系统刚建立的是时候,我们假设磁盘都是空白的,刚刚格式化过,当你的应用程序需要往磁盘写数据的时候,操作系统分配块会尽可能紧挨着上一个已经写完的文件块,因为系统是空白的,所以紧挨着的文件块也应该很有可能是空白的,因为相关的文件块是连在一起的,这时候对磁盘进行读写的时候,磁盘的读写头可以很快的移到位置,所以这时候的磁盘性能是比较好的;然而随着系统的运行,进过频繁的读写之后,所有的空闲文件块可能已经不是连在一起的了,因为中间涉及多次文件块分配与释放,当你再要进行写的时候可能紧挨着的文件块已经被别的文件使用了,磁盘读写头可能要进行大幅度的移动,带来较大的开销,这时候磁盘的性能会急剧下降。如图1和图2所示;
[0006] 图1是系统刚建立的时候每个文件块表集合,因为文件块是大部分都是空闲的,所以分配的时候每个数据的文件块应该都是连续在一起的,这时候由于磁盘的读写头移动距离比较小,这时会具有比较的好性能。
[0007] 图2系统运行一段时间后磁盘的状态,这个过程可以如下,假设在图1的基础上我们删了数据3,而数据1和数据2需要继续写数据,由于数据1后续的文件块数据已经被数据2占掉了,所以只能分配删除数据3时释放的文件块,而然后数据2也需要继续写数据,数据1和数据2就会交叉的分配文件块,造成每个文件块都不是连续的,这样访问数据1和数据2的后半段数据的时候性能会有明显的下降。

发明内容

[0008] 本发明的目的在于提出一种数据存储方法及装置,可以提高从磁盘读取数据的速度,提高磁盘的读写性能。
[0009] 采用的方案:
[0010] 一种数据存储方法,包括步骤:
[0011] 从空闲的磁盘中建立若干块文件;其中,所述块文件由若干文件块组成,所述文件块为操作系统文件分配的块;
[0012] 当有新数据需要存储,且无空闲的块文件时,按照预定条件删除块文件中的数据,以块文件为单位进行数据删除;其中,所述预定条件为存储所述数据的时间,或者指定的块文件,或者存储的所述数据的标识;
[0013] 将所述新数据以块文件为单位存储在空闲的块文件中。
[0014] 以及,一种数据存储装置,包括:
[0015] 块文件建立单元,用于从空闲的磁盘中建立若干块文件;其中,所述块文件由若干文件块组成,所述文件块为操作系统文件分配的块;
[0016] 当有新数据需要存储,且无空闲的块文件时,删除单元按照预定条件删除块文件中的数据,以块文件为单位进行数据删除;其中,所述预定条件为存储所述数据的时间,或者指定的块文件,或者存储的所述数据的标识;
[0017] 存储单元,用于将所述新数据以块文件为单位存储在空闲的块文件中。
[0018] 本发明在空闲的磁盘中创建若干块文件,块文件由若干文件块组成;存储数据时,以块文件为单位进行存储;这样使得存储的当前数据的位置尽可能的连在一起,相比没有使用块文件出现磁盘碎片的系统,大大减少了磁盘访问过程中的寻址次数,磁盘少了寻址的时间,这部分时间可以用在真正的读写数据上;提高了提高磁盘的读写性能。

附图说明

[0019] 图1为现有磁盘存储方法中的一个结构示意图;
[0020] 图2为现有磁盘存储方法中的另一个结构示意图;
[0021] 图3为本发明提出的数据存储的一个结构示意图;
[0022] 图4为本发明提出的数据存储的另一个结构示意图;
[0023] 图5为本发明提出的数据存储的另一个结构示意图;
[0024] 图6为本发明方法的一个流程图;
[0025] 图7为本发明装置的一个结构示意图;
[0026] 图8为本发明装置的另一个结构示意图。

具体实施方式

[0027] 本发明提出一种数据存储方法,具体的,请参考图6,包括步骤:
[0028] S1、从空闲的磁盘中建立若干块文件;
[0029] 具体的,其中,块文件由若干文件块组成,文件块为操作系统文件分配的块;各个块文件容量可以相同或者不相同;对于特定视频存储来说,建立块文件时,每个块文件的容量不应过大或过小,较为合适的容量是128MB,这个级别可以存储监控行业视频也就10分钟左右,能控制到删除颗粒度为10分钟,已经基本可以满足对存储视频可控粒度,如果需要更小删除的粒度,需要调小块文件的大小,如果对删除粒度要求不是那么精确,可以加大块文件的大小来提升磁盘的性能。
[0030] 创建块文件的时机,可在在系统构建时,或在磁盘格式化时,也可以直接在现有系统中,对磁盘进行碎片整理后;对于磁盘容量巨大的情况,磁盘的碎片整理时间很长,可以在进行格式时,进行块文件的创建。
[0031] S2、以块文件为单位进行数据存储。
[0032] 具体的,若当前数据的大小比当前块文件的容量大,则在当前块文件中存储完毕后,在另一个块文件中存储当前数据中的剩余数据;
[0033] 若当前数据中剩余数据的大小比当前块文件的容量小,则在存储完当前数据后,在当前块文件中存储另一数据。
[0034] 当有新数据需要存储,且无空闲的块文件时,按照预定条件删除块文件中的数据;以块文件为单位进行数据删除;其中,预定的条件额可以是存储数据的时间,或者是指定的块文件,或者是存储的数据的标识;其中一个实施方式中,若预定的条件为存储的数据的标识,在存储数据时,记录各数据的类型,数据类型包括但不限于:图片数据、音频数据、视频数据等等;为每个类型的数据分配唯一标识。若预定的条件为存储数据的时间,则在删除时,指定删除某个时间段存储的数据,删除时,也是以块文件为单位进行;
[0035] 将新数据以块文件为单位存储在空闲的块文件中。
[0036] 本发明在空闲的磁盘中创建若干块文件,块文件由若干文件块组成;存储数据时,以块文件为单位进行存储;这样使得存储的当前数据的位置尽可能的连在一起,相比没有使用块文件出现磁盘碎片的系统,大大减少了磁盘访问过程中的寻址次数,磁盘少了寻址的时间,这部分时间可以用在真正的读写数据上;提高了提高磁盘的读写性能。
[0037] 对于视频数据存储,可以将块文件的大小定义在128MB级别,这样获取某个时间段的数据时,至少在128MB级别内的是不需要寻址的,都是紧接着下一个就是要读写的文件块,如果没有这一层机制的话在磁盘碎片严重的磁盘系统中,可能每个文件块都要进行重新寻址,128MB级别块文件实现方案只有直接使用文件系统的方案出现寻址次数的1/32768,假定存储同样的内容需要的磁盘空间大致是一致的,块的数量决定了寻址次数的多少,4KB除以128MB可以得出上面的数字。
[0038] 除了减少磁盘寻址提升性能另一个重大的改善在于稳定磁盘的访问性能,没有块文件的存储系统,当你要读写一定量的数据时候,由于面临的磁盘寻址次数不同,时间也是有很大的抖动的,无法明确软件的响应时间,但使用块文件系统这些就是可控的,对于128M级别的块文件,在存储系统中可能10分钟后才涉及到一次磁盘的寻址,评估起软件的响应时间就容易多了。这同时也会大大提高系统的可用性,保证所有必要监控数据都可以被存储起来,不会随着系统的运行磁盘性能越来越低,直至无法完成系统的设计规格。
[0039] 下面对上述过程进行进一步的说明,请参考图3,建立4个,块文件1、块文件2、块文件3、块文件4联合完成一个存储的生命周期之内的存储,现实中一个存储的块文件可能很多,为了描述方案简单这里只使用4个块文件。图中每个块文件由5个文件块组成;接收到数据1,以块文件为单位进行存储,首先在块文件1中存储;此时,块文件1的容量不足于存储所有数据1,所以在块文件2中存储数据1剩余的数据,若块文件2刚好可以存储数据1中剩余的数据,则若接收到数据2,则在块文件3中存储;块文件3刚好能够存储数据2;接收到数据3时,将其存储在块文件4中。
[0040] 另一种情况,请参考图4,同样是建立4个,块文件1、块文件2、块文件3、块文件4;图中每个块文件由5个文件块组成;接收到数据1,以块文件为单位进行存储,首先在块文件1中存储;此时,块文件1的容量不足于存储所有数据1,所以在块文件2中存储数据1剩余的数据,若块文件2存储完数据1中剩余的数据后,仍有空间;则在接收到数据2时,将数据2存储在块文件2中;块文件2中的剩余容量刚好可以存储数据2;
[0041] 若接收到数据3,则在块文件3中存储;块文件3刚好能够存储数据3;接收到数据4时,将其存储在块文件4中。
[0042] 另一种情况,请参考图5,同样是建立4个,块文件1、块文件2、块文件3、块文件4;图中每个块文件由5个文件块组成;经过一段时间的存储,将所有建立的4个块文件都存储完毕,以图3的存储过程为例,设定数据1在块文件1的存储时间段为12:00至12:30;数据1在块文件2的存储时间段为12:31至13:00;数据2在块文件3的存储时间段为14:00至14:30;数据3在块文件4的存储时间段为14:00至14:30;
[0043] 现在接收到数据5需要存储,需要释放磁盘中的空间来存放数据5;其中一个实施方式为:若删除数据的预定的条件为:数据存储时间,则可设定释放12:00至12:30存储的数据,即释放块文件1中的数据1;将数据5存储到块文件1中;判断数据5的大小是否可以被块文件1存储完毕;若否,则释放12:31至13:00存储的数据;即释放块文件2中的数据;将数据5中剩余的数据存储到块文件2中,继续判断块文件2是否可以将数据5存储完毕;若否,则继续释放下一个块文件,按此操作直至将数据5存储完毕。其中,进行速率匹配;使得释放块文件中数据的速度应该大于接收数据的速度,这样才能保证磁盘的存储性能。
[0044] 另一个实施方式是:接收到数据5,则根据数据5的大小和块文件容量来预先判断需要释放多少个块文件中的数据,然后释放对应数目的块文件;将数据5存储在释放数据后的块文件中。
[0045] 下面介绍本发明装置,请参考图7,一种数据存储装置,包括:
[0046] 块文件建立单元,用于从空闲的磁盘中建立若干块文件;其中,块文件由若干文件块组成,文件块为操作系统文件分配的块;各个块文件容量可以相同,也可以不相同;
[0047] 存储单元,用于以块文件为单位进行数据存储。
[0048] 本发明在空闲的磁盘中创建若干块文件,块文件由若干文件块组成;存储数据时,以块文件为单位进行存储;这样使得存储的当前数据的位置尽可能的连在一起,相比没有使用块文件出现磁盘碎片的系统,大大减少了磁盘访问过程中的寻址次数,磁盘少了寻址的时间,这部分时间可以用在真正的读写数据上;提高了提高磁盘的读写性能。
[0049] 其中,块文件建立单元在系统构建时,或在磁盘格式化时,从空闲的磁盘中建立若干块文件。
[0050] 其中,存储单元以块文件为单位进行数据存储时,
[0051] 若当前数据的大小比当前块文件的容量大,则在当前块文件中存储完毕后,在另一个块文件中存储当前数据中的剩余数据;
[0052] 若当前数据中剩余数据的大小比当前块文件的容量小,则在存储完当前数据后,在当前块文件中存储另一数据。
[0053] 其中,数据存储装置还包括:删除单元;请参考图8,
[0054] 其中,当有新数据需要存储,且无空闲的块文件时,删除单元按照预定条件删除块文件中的数据;以块文件为单位进行数据删除;
[0055] 存储单元将新数据以块文件为单位存储在空闲的块文件中。
[0056] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。