数据存储方法及装置与流程

文档序号:11406704阅读:156来源:国知局
数据存储方法及装置与流程

本发明涉及数据处理技术领域,具体涉及一种数据存储方法及装置。



背景技术:

目前在安防监控以及车辆监控等领域,涉及到全时段的音视频录像需求,限于成本以及技术的问题,录制的数据会在存储设备不断地写入及删除,在此过程中会产生大量的文件碎片,从而降低整个系统的效率和速度,减少存储设备的寿命,并为存储的数据带来安全性及稳定性上的风险,而随着高清、超高清以及多路录像的需求与普及,上述问题将愈加严峻。

现有技术中公开了一种整理移动终端文件碎片的方法,其做法是将整理区域内的数据复制到另一存储器中;再将整理区域进行格式化;最后将复制到另一存储器中的数据复制回格式化后的整理区域中,从而实现移动终端存储器的文件碎片整理。该方法客观条件需要额外的配置一个独立的存储器,在对碎片进行整理的过程中,需要两次复制,并且操作的是存储器中所有的数据,效率低下。

现有技术中还提供了一种文件碎片的整理方法,其做法是为存储设备分配连续的存储空间,将存在碎片的文件移到分配好的连续存储空间中,即更新碎片的文件的存储地址为连续的空块的地址,再对整理区域进行格式化。该方法在效率上有了一定的提高,但每次运行需要划分至少一块单独的连续地址,不能高效的利用存储器,并且随着碎片文件的增多,划分空间的大小始终有限,适用范围有限。



技术实现要素:

本发明提供一种数据存储方法及装置,通过使用该方法和装置可以解决现有技术中存储设备在存储数据时会产生大量文件碎片,而导致的降低采用该存储设备的系统效率降低以及减少存储设备使用寿命的问题,可以实现数据存储时避免产生文件碎片的效果,并且通用于常规的文件管理系统,显著的提高采用本发明方法和装置的系统及存储设备的性能和效率,降低了成本。

在一个实施例中,公开了一种数据存储方法的具体步骤,包括:

检测存储设备的剩余空间是否大于特定值;

若为是,则在存储设备中创建新文件并根据预分配空间值为新文件分配空间及添加标识信息;

若为否,则在存储设备中根据标识信息找到对应数据的存储时间最早的文件;

配置对应文件为新文件;以及

将数据写入新文件,并在写入数据的大小达到预分配空间值时关闭新文件。

在一个实施例中,公开了一种数据存储装置的具体组成,包括:

检测模块,用于检测存储设备的剩余空间是否大于预存的特定值;

第一预分配模块,用于在剩余空间大于特定值时,在存储设备中创建新文件,根据预存的预分配空间值为新文件分配空间,根据数据的信息为新文件添加标识信息;

第二预分配模块,用于在剩余空间小于特定值时,根据数据的信息在存储设备中寻找具有对应标识信息的存储时间最早的文件,并根据数据的信息更新文件的标识信息;

存储控制模块,用于将数据写入新文件或第二预分配模块更新标识信息后的文件,并在写入的数据达到预存的预分配空间值后关闭新文件或第二预分配模块更新标识信息后的文件。

提供本发明内容是以简化形式介绍在以下详细描述中的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

图1是本发明一实施例数据存储方法的流程图;

图2是本发明一实施例为文件预分配空间的示意图;

图3是本发明一实施例预分配空间文件写入新数据的示意图;

图4是本发明一实施例覆写文件数据的示意图;

图5是本发明一实施例数据存储装置的功能模块图。

具体实施方式

文件碎片的形成具有多样、复杂的原因,其与存储数据的类型、大小,存储设备本身的性质以及数据写入删除的频繁程度相关。目前在复杂类型数据的存储领域没有较好的解决办法,而对于安防、汽车监控领域的视频录像数据存储类单一数据,现有的做法是将存储设备配备成专用的文件管理系统,可以防止文件碎片的产生,但由于文件格式特殊,其存储的数据并不能通用于其他设备,而且成本较高,也不适用于复杂的数据存储环境。

本发明提供的方法与装置用于防止单一类型数据存储情况下产生文件碎片的问题,同时还可以适用于复杂的数据存储环境,并做到文件数据通用的效果。

现今的行车记录仪不仅需要同步、长时间的存储其车前、车后及车周等两路或多路录像源带来的视频数据,同时还需要存储例如gps导航,影音娱乐,拍照等其余数据,因此极易在其存储设备中产生文件碎片,对使用带来不便。下面就结合行车记录仪的使用场景及附图,对本发明的优选实施例作详细说明。应当理解的是,此处所采用的运用场景及描述的实施例仅用于解释本发明,而非对本发明的限定。

参阅图1,图1示出了本发明一实施例数据存储方法100的流程图。一般而言,新接入系统的存储设备会被格式化后再存储数据,方法100就用于将数据存储至存储设备,如图1所示,当需要存储数据时,方法100执行以下步骤:

s110,检测存储设备的剩余空间是否大于一个特定值;

若存储设备的剩余空间大于该特定值,则至

s120,创建新文件并根据预分配空间值为其分配空间及添加标识信息。

具体地,当需要存储数据时,需要检测存储设备的剩余空间是否大于一个预设的特定值,若判定为大于该特定值,则在存储设备中创建一个新文件并为其预分配一个空间。如图2所示,当同时写入a、b两个文件时,通用的文件系统操作会根据数据写入顺序同时为a、b文件分配存储空间,那么就会造成单个文件的分离存储,从而形成文件碎片。而通过预分配空间的形式存储文件,在文件开始写入时就根据其大小预先分配好空余的空间,就可以保证文件数据的连续性,避免文件碎片的形成。特定值应设定为大于或等于预分配空间值,而预分配空间值可以依据所存储数据的类型、用途来制定,例如当存储设备的容量为500gb,而单次存储的文件大小为400m至500m之间,那么预分配空间值就可以设定为500m。同时,新文件中还需要添加所存储数据的相关标识信息,包括数据来源、数据类型及存储时间等。

需要指出的是,当存储设备的空间被使用完毕,不足以再预分配空间给新的文件时,就只能不断地更新已经存储的数据类型,而不能存入新的数据。因此在其他实施方式中,可以保留一些空间供其他复杂数据使用,这个保留的空间大小设定为保留值,那么此时判断存储设备剩余空间的特定值的标准就应当大于或者等于预分配空间值与保留值。

当完成新文件的配置后,进行如下步骤:

s130,将数据写入该文件,当写入数据大小达到预分配空间值时关闭该文件。

具体地,当完成对新文件的空间分配后,就可以将数据写入该文件中,由于预先分配了空间,保证了存储数据的连续性,因此不会与其它数据混合存储并产生文件碎片。而当写入的数据达到预分配空间值时,或是此次写入数据已结束,就可以关闭该文件。当所需存储数据远大于预分配空间值时,可在文件关闭后跳至步骤s110重新开始实施本实施例的数据存储方法。

而当需要同时存储多个数据时,则可以为不同的数据建立不同的存储线程,不同的存储线程采用的特定值、预分配空间值等参数与标识信息都不同,因而可以在实现数据存储连续性的同时不会造成数据的混淆,从而达到防止文件碎片生产的目的,而这些参数和设定可以由所属领域的技术人员根据不同数据的性质以及实际需要进行配置。

在其他实施方式中,还可以单独为文件的标识信息进行备份,然后调整文件的写入数据的顺序,标识信息最后一起写入,这样可以进一步保证存储设备内部数据的顺序性,进一步提供速度的稳定性,同时由于标识信息做了备份,系统出错或异常断电也能保证之前录制的数据不丢失。

以行车记录仪为例,当开始录像时,首先会检测存储设备的剩余空间,并在剩余空间大于特定值时在存储设备上建立一个新文件,同时为新文件预分配空间以及添加录像数据的所属录像通道、录像时间等标识信息,继而将录像数据写入已经分配好空间的文件中,这里的预分配空间值可以设定为100m,那么特定值就需要大于或等于100m,在其他实施方式中还可以根据录像数据的码流、用途等因素根据需要自主制定。在特定值的设定中除了考虑预分配空间值的大小之外,还可以增加为gps导航、影音娱乐及拍照等其余数据保留的空间,例如保留500m的空间,若预分配空间值为100m,那么特定值就需要大于或等于600m。

由于预分配空间的值是固定的,而录像数据的大小与录像通道的码流大小和录像时间长短有关。因此可以根据录像数据的码流通过设定录像时间来控制每段录像数据的大小,使得写入的录像数据略小于预分配的空间值,当该段录像的时间达到设定值就停止向选定文件写入数据。对于循环录像而言,录像数据的总大小必然会大于预分配的空间值,那么可以循环以上存储流程直至录像完毕。

由于行车记录仪工作时会同时具有几路的录像通道,那么就需要根据每一路的录像码流参数为其对应录像数据设置单独的存储策略,其流程相同,但特定值、预分配空间值等参数不同,同时还具有不同的标识信息,在运行时有几路录像就有几路存储线程同时运行,因此各个录像通道之间的录像数据不会互相混淆,防止了文件碎片的产生,而对相同录像通道的录像数据而言还因具有相同的信息标识而保持了数据的连续性,利于进行其他应用。

由于存储设备的容量并不是无上限的,当存储的数据接近存储设备的容量时需要对旧文件进行处理以便写入新数据。通常的做法是将旧文件删除之后再写入新文件,但是这样的做法会引入新的文件碎片,即便是采用了预分配空间的做法。如图3所示,写入6个文件,由于其中一类文件的预分配空间值为另一类文件的2.5倍,因此文件a、c、e的大小为文件b、d、f的2.5倍。此时删除文件b、d、f,又同时写入这两类文件,那么会分别形成文件g及h,g文件大小是h文件的2.5倍,那么可以看到g文件被分成了多个片段,形成了文件碎片。因此需要对旧文件进一步的处理,使得存储设备在写入新数据同时不会形成文件碎片。

如果在步骤s110检测到存储设备的剩余空间小于特定值时,进行如下步骤:

s140,根据标识信息找到对应存储数据的存储时间最早的文件;

s150,配置该文件为新文件。当文件配置完成后,转至步骤s130写入数据。

具体地,当存储设备的剩余空间小于特定值,因而无法再在存储设备上新建文件并预分配空间时,就需要根据文件标识信息找到存储时间最早的一个文件,而对于有多种类型数据文件的情况而言,还需要匹配文件标识中的数据文件类型信息。当找到对应的最早文件后,需要更新文件中的标识信息为当前写入数据的对应信息,之后将数据直接写入该新文件中。

本发明实施例数据存储方法100除了创建新文件时,需要使用预分配策略分配空间外,以后都不会再分配和释放空间了。如果文件录制满了,可以覆写预分配文件,而不用删除文件后再重新分配空间,这样就避免了文件碎片的产生。如图4所示,同样为写入两种数据而预分配空间值不一致的情况,当需要写入新数据时,方法100会将数据覆写到对应的旧文件中并形成新文件,如a文件为一种数据对应的最早文件,则将a文件覆写入该种数据并将其配置为新文件g,而b文件为另一种数据对应的最早文件,就将b文件覆写入该种数据并将其配置为新文件h,从而就避免了文件分离而形成文件碎片的情况。

由于新配置文件中的数据并没有清除,而是直接写入新数据,因此在特殊情况下如写入数据小于预分配空间值或异常断电时,可能会存在新旧数据同时存在于一个文件中的结果。对于一些特殊数据如音频、视频数据而言,新旧数据混合可能会导致文件无法播放的情况。

那么在其他实施方式中,步骤s150中对最早的对应文件进行配置的内容除了更新标识信息之外,需要对文件进行截断操作,即清除文件内的旧数据,但同时保留文件的占有空间。这样做的目的在于保持同一个文件内数据的统一性,同时不能将文件的占有空间释放出来,因为释放空间就相当于删除文件,无法实现预防文件碎片产生的效果。

由于在某些文件系统中,数据写出错会释放之前预分配的空间,会导致文件碎片的形成。因此在存储设备中存在不需要预分配空间的文件时,就需要为预分配空间的文件的标识信息中添加一个标志,使得文件系统可以区分预分配文件与非预分配文件,仅对预分配的文件做保留空间的截断操作,而非预分配文件可以正常的写入和删除。

以fat32文件系统为例,使用系统短文件名目录项中的偏移为0x0cbyte的第0bit作为区分是否为预分配文件的标志,将其定义为prealloc_flag,因为此bit是文件系统保留没有使用的。当应用层为新文件添加标识信息时时,对应的内核文件系统层接口写入prealloc_flag。以后,除非删除文件,否则操作此文件时,内核文件系统层都可以区分该文件是否为预分配文件了。

以上更新数据的步骤以行车记录仪为例,当检测到剩余空间不足时,会根据当前所需存储录像数据的录像通道找到具有同样标识信息的最早的录像文件,更新该文件的录像时间等标识信息,清空其中的录像数据并保留空间,随后将新的录像数据写入该更新后的文件中,从而实现循环录像的无缝连接,而不同通道之间的录像数据也可以根据标识信息进行区分存储。

参阅图5,图5示出了本发明一实施例数据存储装置200的功能模块图。装置200用于将数据存储至存储设备300中,如图5所示,装置200包括:

检测模块210,用于检测存储设备300的剩余空间是否大于预存的特定值。

第一预分配模块220,用于在检测模块210的检测结果为剩余空间大于特定值时在存储设备300中创建新文件,根据预存的预分配空间值为新文件分配空间,根据所存储的数据信息为新文件添加标识信息。

具体地,特定值可以依据预分配空间值来制定,要大于或等于预分配空间值,预分配空间值可以根据存储数据的类型、用途来制定,新文件的标识信息包括数据来源、数据类型及存储时间等。

第二预分配模块230,用于根据检测模块210的检测结果为剩余空间小于特定值时根据当前存储数据信息在存储设备300中寻找具有对应标识信息的存储时间最早的文件,并根据当前存储数据信息更新该文件的标识信息。

存储控制模块240,用于将存储数据写入预分配模块220创建的新文件或更新标识后的文件,并在写入的数据达到预存的预分配空间值后关闭该文件。

具体地,当存储设备300不允许再创建新文件时,第二预分配模块230会根据找到与当前存储数据信息一致的存储时间最早的文件,并更新该文件的标识信息为当前存储数据的信息。而文件配置完成后,存储控制模块240将数据写入文件中,并在写入的数据达到预分配空间值或是此次写入数据已结束后关闭文件。而大于预分配空间值的数据只需重新经过检测模块210的判断进行上述数据存储操作。

在其他实施方式中,还可以在存储设备300中为其余复杂数据保留通用的空间,这个保留的空间大小设定为保留值,那么检测模块210的特定值就要大于或者等于保留值和预分配空间值之和。

进一步地,针对一些特殊数据如音频、视频数据,新旧数据混合可能会导致这些数据文件无法使用的情况,因此存储控制模块240还可以对更新标识后的文件进行截断操作,即清除文件内的旧数据,但同时保留文件的占有空间。这样做的目的在于保持同一个文件内数据的统一性,同时不能将文件的占有空间释放出来,因为释放空间就相当于删除文件,无法实现预防文件碎片产生的效果。

在某些文件系统中,数据写出错会释放之前预分配的空间,会导致文件碎片的形成。因此在存储设备300中存在非预分配的文件时,就需要第一预分配模块220和第二预分配模块230为预分配文件的标识信息中添加一个标志,使得存储控制模块240可以区分预分配文件与非预分配文件,仅对预分配的文件做保留空间的截断操作。

进一步地,存储控制模块240还可以对第一预分配模块220和第二预分配模块230生成的标识信息进行备份,并在文件写入数据达到特定值需要关闭时再一并写入,这样可以进一步保证存储设备300内部数据的顺序性,进一步提供速度的稳定性,同时由于标识信息做了备份,系统出错或异常断电也能保证之前录制的数据不丢失。

综述本发明,通过预分配和覆写的方式实现了单一数据存储时避免产生文件碎片的效果,同时不改变存储数据以及设备本身的属性,使得存储数据和设备可以通用与其他系统,进一步的还可以通过预分配文件和非预分配文件的分别处理,实现单一数据与复杂数据混合存放的效果,可以显著的提高采用本发明存储的系统及其存储设备的性能和效率,降低了成本。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件辅与必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

应当理解的是,以上优选实施例仅用以说明本发明的技术方案,而非用以限定,对本领域技术人员来说,可以对上述优选实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而所有这些修改和替换,都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1