一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于块存储的切块方法和装置与流程

2022-06-05 18:50:09 来源:中国专利 TAG:


1.本文涉及数据存储技术,尤指一种基于块存储的切块方法和装置。


背景技术:

2.当前监控系统通常会给每个接入的前端相机分配一定的内存空间作为缓冲区,用于将接收到的码流数据按一定格式组装,便于存储;并且监控系统的存储管理模块进行相应的存储资源管理,如整合系统所有接入的硬盘,再按照一定的方式进行组织,提供接口供监控系统的码流数据接收模块申请空闲的存储空间,以及将接收到的码流数据存储到硬盘。具体组织方式,通常可以是一种特定的文件系统。
3.当前的后端监控存储方案中整体文件的切换过程是串行的,即先关闭当前写完的文件,再申请新的文件,整个流程都是串行执行的,针对当前存储方案常见的优化方案包括以下几种:
4.1、增大收流模块的缓冲区,或者减少旧文件关闭以及新文件打开过程中的步骤,以增加对前端相机数据堆积的容忍性;
5.2、动态调整存储单元,通过比较待存储文件与存储单元剩余空间的大小,在待存储文件小于等于存储单元剩余空间时,保持存储单元尺寸不变进行存储,否则扩大或缩小存储单元尺寸以适应待存储文件大小;
6.3、通过对硬盘空间进行划分,设置管理块和多个存储块,通过管理块对硬盘和存储块进行区分管理,且存储块之间相互独立,互不影响。
7.4、目前块存储时,当某个通道中一个存储块存完数据要切块的时候,才进行找下一个存储块,用于后续进行存储。
8.当前的处理方案存在以下问题:
9.1、增加收流模块的缓冲区,会占用更多的设备内存,增加了设备的成本;而精简文件切换过程的流程,通常有较大难度,甚至牺牲数据的完整性。
10.2、动态调整存储单元,缺点是在磁盘满后进行覆盖时,不是很好进行管理和维护。例如,之前分了一个很大的存储块用于存储,覆盖时是直接覆盖该存储块还是把该存储块分割后进行分块,因此在磁盘满进行覆盖时会有很多要解决和待讨论的问题。
11.3、对硬盘空间进行划分,该方案虽然是提前对空间进行划分,但是无法动态调整各个通道留存期,这里会造成硬盘空间的浪费。
12.4、在当前存储块存储数据结束的时候才进行后续存储块的寻找或者选择存储块(选块)。一方面这时系统性能会有较大开销(当前存储块结束的关闭操作以及后续的选块操作、新块头部信息处理操作,这些操作的消耗加起来比较大)。另一方面,由于选块时需要一些数据和参数进行处理,如果多个通道都在处理,存在后续存储块没有及时选到,导致没有将数据及时刷到后续存储块上,则保存在缓冲区的数据极有可能被丢弃,产生录像丢失的风险。
13.5、前述方案均没有体现出切块时性能损耗如何解决,以及存储块未按照理想条件
下进行分配,无法提高磁头读写效率问题。


技术实现要素:

14.本技术实施例提供了一种基于块存储的切块方法和装置,能够消除选块消耗的时间,避免所录制的音视频丢失,提高存储块的利用率,提高监控存储系统的完整性和稳定性,并提高读写效率。
15.本技术实施例提供了一种基于块存储的切块方法,所述方法可以包括:
16.获取待分配的多个存储块;
17.根据预设顺序将所述多个存储块分别进行编号,根据所述编号为所述多个存储块建立分配索引;
18.根据音视频存储通道的通道参数以及所述分配索引将所述多个存储块预分配给多个通道,并根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整;
19.其中,所述通道参数包括以下任意一种或多种:通道码率、通道容量、通道个数以及通道留存期;所述存储通道和/或存储盘的变化情况包括以下任意一种或多种:删除通道、新增通道、通道离线、通道重新上线、删除存储盘和新增存储盘。
20.在本技术的示例性实施例中,当被分配的存储块为当前存在的存储盘划分出的新的存储块时,所述根据音视频存储通道的通道参数以及所述分配索引将所述多个存储块预分配给多个通道包括:
21.检测所述多个通道的通道码率是否相同;根据检测结果依据下述的分配策略对所述多个存储块进行分配:
22.当所述多个通道的通道码率相同时,根据所述多个存储块的编码顺序,按照每个通道每次分配一个存储块的方式,从红黑树rbtree中依次将存储块分配给所述多个通道,直至将全部存储块分配完;
23.当所述多个通道的通道码率不相同时,根据所述多个存储块的编码顺序,按照每个通道每次分配的存储块的数量与多个通道的通道码率的比例相匹配的方式,从所述红黑树rbtree中依次将存储块分配给所述多个通道,直至将全部存储块分配完。
24.在本技术的示例性实施例中,所述根据音视频存储通道的通道参数以及所述分配索引将所述多个存储块预分配给多个通道还可以包括:
25.在由当前存在的存储盘划分出的新的存储块已经分配完毕后,开始回收被删除的通道、离线时长超过预设的时长阈值的通道和/或达到通道留存期的通道内的存储块作为旧块,将所述旧块分配给需要预分配存储块的通道;或者,回收该需要预分配存储块的通道内最早分配的存储块作为复写块,并在将所述复写块重新分配给该通道。
26.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整可以包括:
27.当增加新的存储盘时和/或当前存储盘的容量增加时,根据增加的新的存储盘和/或当前存储盘增加的容量划分出新的存储块,并根据所述分配策略向多个通道分配所述新的存储块,直至所述新的存储块分配完。
28.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整还可以包括:
29.当所述多个通道中至少一个通道被删除时,根据所述分配策略,将回收被删除的通道中超过通道留存期的存储块,并分配给在线的通道,直至在线的每个通道的通道留存期均相同;和/或,
30.当所述多个通道中至少一个通道离线时,根据所述分配策略,将离线的通道中的超过通道留存期的最早的存储块直至次新的存储块之间的存储块依次分配给在线的通道,直至在线的每个通道的通道留存期均相同;
31.其中,当同时存在离线通道和被删除通道时,所述离线通道和被删除通道中的随时间流逝超过通道留存期的存储块依次回收存储到红黑树rbtree中,根据分配策略分配给在线的通道。
32.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整还可以包括:
33.在由当前存在的存储盘划分出的新的存储块已经分配完毕后,当新增通道时,将从原有通道中回收的旧块或复写块分配给该新增通道,直至在线的每个通道的通道留存期均相同。
34.在本技术的示例性实施例中,所述旧块和所述复写块的回收策略可以包括以下一种或多种:
35.当存在新的存储块未分配完时,不回收所述旧块和所述复写块;
36.当新的存储块分配完毕后,回收所述旧块或所述复写块;其中,当存在可被回收的旧块时,不回收所述复写块;
37.当任意一个通道离线时长超过预设的时长阈值和/或任意一个通道被删除时,根据该通道的通道留存期对该通道内的存储块进行回收;以及,
38.当增加新的存储盘时,停止回收通道内的旧块和复写块,将新的存储盘划分出的新的存储块格式化后加入到所述红黑树rbtree中;
39.和/或,
40.所述方法还可以包括,将回收的旧块和复写块保存在所述红黑树rbtree的节点中。
41.在本技术的示例性实施例中,所述方法还可以包括:根据所述通道码率、通道个数、存储盘容量、每个存储块的大小以及通道留存期的计算触发事件计算每个通道的通道留存期;所述通道留存期是指保留通道内音视频的时长。
42.在本技术的示例性实施例中,所述根据所述通道码率、通道个数、存储盘容量、每个存储块的大小以及通道留存期的计算触发事件计算每个通道的通道留存期可以包括:根据预设的通道留存期计算式计算所述通道留存期;
43.所述通道留存期计算式可以包括:
44.其中,time为所述通道留存期,x为所述通道码率,d为所述存储盘容量,c为所述通道个数,b为每个存储块的大小,e为所述计算触发事件;
45.所述计算触发事件可以包括:
46.所述通道码率、通道个数、存储盘容量以及每个存储块的大小中的任意一个或多个数值的更改;和/或,所述存储通道和/或存储盘的变化情况。
47.本技术实施例还提供了一种基于块存储的切块装置,可以包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令被所述处理器执行时,实现上述任意一项所述的基于块存储的切块方法。
48.与相关技术相比,本技术实施例可以包括:获取待分配的多个存储块;根据预设顺序将所述多个存储块分别进行编号,根据所述编号为所述多个存储块建立分配索引;根据音视频存储通道的通道参数以及所述分配索引将所述多个存储块预分配给多个通道,并根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整;其中,所述通道参数包括以下任意一种或多种:通道码率、通道容量、通道个数以及通道留存期;所述存储通道和/或存储盘的变化情况包括以下任意一种或多种:删除通道、新增通道、通道离线、通道重新上线、删除存储盘和新增存储盘。通过该实施例方案,消除了选块消耗的时间,避免了录制的音视频丢失,提高了存储块的利用率,提高了监控存储系统的完整性和稳定性,并提高了读写效率。
49.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的其它优点可通过在说明书以及附图中所描述的方案来实现和获得。
附图说明
50.附图用来提供对本技术技术方案的理解,并且构成说明书的一部分,与本技术的实施例一起用于解释本技术的技术方案,并不构成对本技术技术方案的限制。
51.图1为本技术实施例的基于块存储的切块方法流程图;
52.图2为本技术实施例的各模块协调工作示意图;
53.图3为本技术实施例的基于块存储的切块装置组成框图。
具体实施方式
54.本技术描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本技术所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其它特征或元件结合使用,或可以替代任何其它实施例中的任何其它特征或元件。
55.本技术包括并设想了与本领域普通技术人员已知的特征和元件的组合。本技术已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本技术中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
56.此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法
或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本技术实施例的精神和范围内。
57.经典的后端监控方案通常有如下几个组成模块:ipc(网络摄像机)接入管理模块、码流数据接收模块(以下简称收流模块)和存储管理模块。其中码流数据主要是音视频数据,扩展后可包括各类智能数据。
58.该监控系统通常会给每个接入的前端相机分配一定的内存空间作为缓冲区,用于将接收到的码流数据按一定格式组装,便于存储;存储管理模块主要负责存储资源的管理,如整合系统所有接入的硬盘,再按照一定的方式进行组织,提供接口供收流模块申请空闲的存储空间,以及将接收到的码流数据存储到硬盘。具体组织方式,通常可以是一种特定的文件系统,也可以是基于块的存储系统(基本原理类似,下文以文件系统统一代称)。在文件系统中,会存在额外的管理元素,比如描述各文件的文件名、大小、在硬盘中的存储位置等,可称之为一级索引(文件系统中描述各文件的元数据信息)。在各文件中,用于记录码流数据的属性、在文件内部的具体位置等信息的数据,可称之为二级索引(文件中描述音视频、智能数据等的元数据信息)。
59.在视频监控的文件系统中,综合管理效率、空间利用率等方面,视频监控系统中的文件通常大小比较固定,比如设置为256mb或1gb。一个文件通常可以为ipc存储一段时间的数据,但当存储的数据达到固定大小时,当前文件已不可继续存储,需先关闭当前文件,再向存储模块申请新的文件来存储。具体流程为:先将当前文件中对应的二级索引信息明确写入到存储资源,再关闭该文件,更新该文件对应的一级索引信息;再向存储模块申请一个新的文件,申请到新文件后,为保证其不被其它前端相机占用,需在一级索引中标记其已使用,同时,还要初始化二级索引的信息,因此,再增加一次一级索引和一次二级索引的更新。
60.当前端相机的码流数据连续的产生时,每隔一段时间,收流模块就会切换一个文件,每次切换文件都会伴随多次一级索引和二级索引的更新。而在切换过程中,收流模块的缓冲区如果不是足够大,或者处理不及时,就会存在缓冲区溢出的问题,即前端相机采集的数据丢失。
61.综上可知,当前存储方案中切块的时候,会有较大的开销,且有产生视频丢失较多风险。因此,可以提前预分配存储块,实现块存储的数据无缝写入,提升系统性能,并且提前避免数据因选块方式产生的数据丢失风险。
62.本技术实施例提供了一种基于块存储的切块方法,如图1所示,所述方法可以包括步骤s101-s103:
63.s101、获取待分配的多个存储块;
64.s102、根据预设顺序将所述多个存储块分别进行编号,根据所述编号为所述多个存储块建立分配索引;
65.s103、根据所述通道参数以及所述分配索引将所述多个存储块预分配给多个通道,并根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整;
66.其中,所述通道参数包括以下任意一种或多种:通道码率、通道容量、通道个数以及通道留存期;所述存储通道和/或存储盘的变化情况包括以下任意一种或多种:删除通
道、新增通道、通道离线、通道重新上线、删除存储盘和新增存储盘。
67.在本技术的示例性实施例中,主要是为解决目前的存储方案中文件切换过程过长,引起系统缓存溢出,导致的前端相机数据丢失的问题,本技术实施例方案提出了一种存储块预分配方案,来避免一个存储块存储满以后后续无存储块做交接的情况下,文件进行临时选块、切换造成的消耗,从而提高监控存储系统的完整性和稳定性。
68.在本技术的示例性实施例中,采用本技术实施例方案,当前存储块在存储完之前,后续各个存储块已经就绪,使得数据可及时切到下一个存储块进行存储,去除了选块消耗的时间,避免了录制数据丢失的风险。
69.在本技术的示例性实施例中,所述获取待分配的多个存储块可以包括:
70.根据音视频存储通道的通道参数以及存储块参数计算所述待分配的多个存储块的数量;
71.根据所述待分配的多个存储块的数量,从依据当前存储盘的容量划分出的全部存储块中获取相应数量的存储块;其中,当划分出的全部存储块的总数小于计算出的待分配的存储块的数量时,从存储块数量不足的通道中回收该通道内最早分配的、已经被写满的存储块作为复写块,重新分配给该通道,以补充存储块的数量。
72.在本技术的示例性实施例中,根据音视频存储通道的通道参数以及存储块参数计算所述待分配的多个存储块的数量可以包括:根据各个通道当前的通道码率以及一个存储块的容量大小等参数,计算消耗一个存储块需要多长时间,并在各个通道的通道留存期一样长的情况下,计算出每个通道所需的存储块数量。
73.在本技术的示例性实施例中,在获取待分配的多个存储块后,提前给各个通道预分配存储块之前,可以预先为存储块建立分配索引,根据每个存储块的分配索引可以做到朝着索引有序的方向进行存储,这样一方面可以提高存储块的利用率,另一方面,合理分配通道留存期;而且由于稳定情况下各个存储块索引有序,并且提前分配好每个存储块的分配索引并进行保存,某些情况下,便于进行数据恢复以及后续人员维护;再者,各个通道的存储块索引有序进行存储,便于提高存储盘磁头读写效率,提高存储盘的输入输出io效率。
74.在本技术的示例性实施例中,由于是提前预分配存储块,因此将各个通道的索引及预分配索引保存下来,某异常情况下,根据索引值和预分配索引值,也便于恢复用户数据。
75.在本技术的示例性实施例中,根据预设顺序将所述多个存储块分别进行编号,根据所述编号为所述多个存储块建立索引可以包括:将待分配的相应数量的存储块进行标记,例如,为每个存储块设置一个唯一的编号,全部存储块的编号具有预设顺序,以使得根据编号建立的分配索引是连续的(例如,1-100个分配索引,2个通道,第一个通道占用1、3、5、7

99,第二个通道占用2、4、6、8、10

100),将这些存储块按照编号顺序首尾连接,并在每个存储块上标记被哪个通道使用,从而建立每个存储块的分配索引。
76.在本技术的示例性实施例中,在一个通道录像在当前存储块内正常存储音视频数据过程中,下一个存储块用哪一个,可以根据建立的分配索引提前分配好,实现存储块的预分配。
77.在本技术的示例性实施例中,当被分配的存储块为当前存在的存储盘划分出的新的存储块(可以简称新块,表示没有被添加到管理节点的块)时,所述根据音视频存储通道
的通道参数以及所述分配索引将所述多个存储块预分配给多个通道可以包括:
78.检测所述多个通道的通道码率是否相同;根据检测结果依据下述的分配策略对所述多个存储块进行分配:
79.当所述多个通道的通道码率相同时,根据所述多个存储块的编码顺序,按照每个通道每次分配一个存储块的方式,从红黑树rbtree中依次将存储块分配给所述多个通道,直至将全部存储块分配完;
80.当所述多个通道的通道码率不相同时,根据所述多个存储块的编码顺序,按照每个通道每次分配的存储块的数量与多个通道的通道码率的比例相匹配的方式,从所述红黑树rbtree中依次将存储块分配给所述多个通道,直至将全部存储块分配完。
81.在本技术的示例性实施例中,划分出的新的存储块可以保存到红黑树rbtree中,在分配存储块时,可以从rbtree中分配存储块。
82.在本技术的示例性实施例中,红黑树rbtree中保存的节点(存储块),可以不是全部分配下去,是需要的时候分配几个下去。因为事件产生时,会对存储块进行调整,如果存储块都分配到各个通道,还需要对这些存储块进行回收。因此本技术实施例方案可以在需要的时候分配,而不是全部一次性分配给各个通道。比如,当前存储块块写完1/4-1/3(如,可以选择1/4)时,要把下一个后续存储块选好,而不是把红黑树rbtree里的节点(存储块)全部给分配到各个通道。有事件产生时,只调整下一次分配的存储块的个数即可,若都分配到各个通道,则需要回收再分配。
83.在本技术的示例性实施例中,在将新划分出的存储块分配给各个通道时,依据上述的分配策略分配即可,下面根据一个具体实施例说明该分配策略。
84.在本技术的示例性实施例中,例如,先计算各个通道的通道码率,如果当前存在两个通道d1和d2,两个通道的通道码率都是4m,则分配存储块时,可以根据存储块的索引依次分配d1通道(0、2、4、8、10、12......),d2通道(1、3、5、7、9、11、13、15
……
)。当通道为3个时,分配方式可以如下面表1所示:
85.表1
86.通道d11471013通道d22581114通道d33691215
87.在本技术的示例性实施例中,如果通道d1和d2的通道码率分别是2m和4m,则分配存储块时,可以依次分配d1通道(0、3、6、9、12、15、18......),d2通道(1、2、4、5、7、8、10、11、13、14、16、17
……
),即,d1通道每次被分配给一个存储块,d2通道每次被分配给索引相邻的2个存储块。当通道为3个时,如果通道d1的通道码率为1m,通道d2的通道码率为2m,通道d3的通道码率为4m,则在三个通道的通道留存期一样的情况下,每次分配通道d1一个存储块,分配通道d2两个存储块,分配通道d3四个存储块。分配方式可以如下面表2所示:
88.表2
89.通道118
ꢀꢀꢀꢀꢀꢀ
通道223910
ꢀꢀꢀꢀ
通道3456711121314
90.在本技术的示例性实施例中,所述根据音视频存储通道的通道参数以及所述分配
索引将所述多个存储块预分配给多个通道还可以包括:
91.在由当前存在的存储盘划分出的新的存储块已经分配完毕后,开始回收被删除的通道、离线时长超过预设的时长阈值的通道和/或达到通道留存期的通道内的存储块作为旧块,将所述旧块分配给需要预分配存储块的通道;或者,回收该需要预分配存储块的通道内最早分配的存储块作为复写块,并在将所述复写块重新分配给该通道。
92.在本技术的示例性实施例中,在由当前存在的存储盘划分出的新的存储块已经分配完毕后,当任意一个通道内的存储块将要存满之前,可以回收旧块或复写块对该通道进行存储块预分配。
93.在本技术的示例性实施例中,在存储块分配完成后,如果有旧块可回收,则先回收旧块,并将旧块进行预分配,如果没有旧块可回收,则在通道自身内的存储块中进行循环复写。例如:
94.d1通道(0、3、6、9、12、15、18、21),无新的存储块时,最早的存储块是21,可以回收给d1通道作为复写块使用;回收后的存储块分配结果是d1(21、0、3、6、9、12、15、18),在该通道再次需要分配存储块时,分配规则也一样,可以回收18作为复写块;
95.d2通道(1、2、4、5、7、8、10、11、13、14、16、17、19、20),无新的存储块时,最早的存储块是20,可以回收给d2通道使用;回收后的存储块分配结果是d2(20、1、2、4、5、7、8、10、11、13、14、16、17、19),在该通道再次需要分配存储块时,分配规则也一样,可以回收19作为复写块。
96.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整可以包括:
97.当增加新的存储盘时和/或当前存储盘的容量增加时,根据增加的新的存储盘和/或当前存储盘增加的容量划分出新的存储块,并根据所述分配策略向多个通道分配所述新的存储块,直至所述新的存储块分配完。
98.在本技术的示例性实施例中,如果新设置某些通道存储容量,如增大或者减少某个通道的存储容量,那么该通道对应的存储块的个数则会相应的增大或者缩小,预分配方案可重新调整预分配的存储块。例如,如果该通道增加了存储容量,则需要把其它通道的存储块进行调整,预分配给该通道。如果该通道存储容量减少,则把该通道内的一些存储块分配给其它通道,相应的其它通道的存储块的个数将变多,则最终达到一种稳定状态。
99.在本技术的示例性实施例中,如果新增存储盘,则需要对新的存储盘重新格式化进行分块,将新分的存储块按预设的分配策略分配到各个通道作为后续块(一个通道中除第一个存储块以外的其他存储块)。同样的,如果存储盘离线,则需要从其它通道选出部分存储块用于当前某些通道录像的存储。
100.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整还可以包括:
101.当所述多个通道中至少一个通道被删除时,根据所述分配策略,将依次回收被删除的通道中超过通道留存期的存储块,并分配给在线的通道,直至在线的每个通道的通道留存期均相同;和/或,
102.当所述多个通道中至少一个通道离线时,根据所述分配策略,将离线的通道中的超过通道留存期的最早的存储块直至次新的存储块之间的存储块依次分配给在线的通道,
直至在线的每个通道的通道留存期均相同;
103.其中,当同时存在离线通道和被删除通道时,所述离线通道和被删除通道中的随时间流逝超过通道留存期的存储块依次回收存储到红黑树rbtree中,根据分配策略分配给在线的通道。
104.在本技术的示例性实施例中,如果有通道删除/离线时,可以将超过通道留存期的存储块分配给各个通道。
105.在本技术的示例性实施例中,如果某个通道离线超过一定时间后还没有上线,可以将该通道中包括随时间流逝的最老的存储块到次新存储块之间的存储块在内所有的存储块作为预分配存储块,都分配给其它通道,最大化提高存储块的使用率,尽可能保存其它通道更长的录像留存时间。
106.在本技术的示例性实施例中,各个通道已经预分配完存储块,达到稳定之后,考虑到可能新增通道,则需要给新的通道分配存储块,因此之前通道分配的存储块,还要能够分配给其它通道使用。根据分配策略可以依次找各个通道的最老(即最早)存储块释放给新增的通道来使用。选择哪个通道的最老存储块可以根据分配策略来选择,例如,d1通道1m码率,d2通道4m码率,相同留存期内,d1是一个存储块,d4是4个存储块,可以选通道d2最老块给新增的通道使用。
107.在本技术的示例性实施例中,一般是把最老的存储块释放,否则直接从后续第二个存储块拿走,会破坏原有通道录像完整。因此,即使释放也是释放各个通道最老的存储块。
108.在本技术的示例性实施例中,当磁盘空间存满后,后续音视频数据需要覆盖最老的音视频数据的存储块,存储数据最老(最早)的存储块(复写块)也将加入预分配块中。最终在稳定情况下,各个通道的复写块将在自身录像占用的储存块内部循环复写使用。该稳定状态是指各个通道的录像留存时间差不多,比如各个通道都能保存15天的录像。有序状态是指,某些通道块的索引有序,比如存储块索引值是递增或者递减的趋势。如某个通道块索引是:1、3、5、7、9、11、13、15、17、19、21(1、3、5、7、9、11、13、15、17、19、21),其中21是当前存储块,满覆盖情况下,将内部循环占用1作为第一个存储块,做标记不可被其它通道占用或者不能被预分配申请到,3-21是后续预分配的存储块情况,可以被其它通道申请到作为后续块(即第一个存储块以后的存储块)。
109.在本技术的示例性实施例中,所述根据所述存储通道和/或存储盘的变化情况对通道所分配的存储块进行调整还可以包括:
110.在由当前存在的存储盘划分出的新的存储块已经分配完毕后,当新增通道时,将从原有通道中回收的旧块或复写块分配给该新增通道,直至在线的每个通道的通道留存期均相同。
111.在本技术的示例性实施例中,如果新的存储块分配完毕,有新增通道时,可以将其它通道回收的块分配给该通道,直至各个通道的通道留存期一样。
112.在本技术的示例性实施例中,如果新调整某些通道的通道码流或者编码格式等参数,则可以重新调整各个通道的预分配存储块,最终达到一种稳定状态。
113.在本技术的示例性实施例中,如图2所示,本技术实施例方案中可以包括多个工作模块,例如:块分配模块、块回收模块、通道留存期计算模块以及通道链表管理模块。这些模
块可以配合工作完成本技术实施例方案。
114.在本技术的示例性实施例中,以上的存储块分配方案可以由预设的块分配模块完成,并且分配策略可以通过预设的分配函数实现,例如,y=f3(t,x),y表示分配函数,t表示新的存储块、旧块、复写块等,x为通道码率等参数。
115.在本技术的示例性实施例中,下面对存储块的回收策略做详细介绍,该回收策略可以由预设的块回收模块完成。
116.在本技术的示例性实施例中,所述旧块和所述复写块的回收策略包括以下一种或多种:
117.当存在新的存储块未分配完时,不回收所述旧块和所述复写块;
118.当新的存储块分配完毕后,回收所述旧块或所述复写块;其中,当存在可被回收的旧块时,不回收所述复写块;
119.当任意一个通道离线时长超过预设的时长阈值和/或任意一个通道被删除时,根据该通道的通道留存期对该通道内的存储块进行回收;以及,
120.当增加新的存储盘时,停止回收通道内的旧块和复写块,将新的存储盘划分出的新的存储块格式化后加入到所述红黑树rbtree中。
121.在本技术的示例性实施例中,所述方法还可以包括,将回收的旧块和复写块保存在所述红黑树rbtree的节点中。
122.在本技术的示例性实施例中,可以根据各种情况下(例如,删除通道、新增通道、通道离线、通道重新上线等)的通道留存期,计算出各个通道需要回收的存储块,然后把块投递到块分配模块中。
123.在本技术的示例性实施例中,块回收模块进行块回收时可以首先判断块回收的条件,因为有些情况下先不进行块回收,例如,如果ipc离线时长未超过预设时长,则先不立即进行块回收,目的是避免频繁离线、上线导致块回收模块处理过多,此时可以计算各个通道的通道留存期,并对达到通道留存期的存储块进行回收。
124.在本技术的示例性实施例中,每个通道占用的存储块可以使用一个通道链表进行处理。而释放回收的存储块,可以使用二叉树存放,例如红黑树rbtree。在存放时,可以依次把二叉树中块号最小的存储块取出分配给各个通道。
125.在本技术的示例性实施例中,块回收模块开始进行回收之前,可以先将新的存储块分配给各个通道,直至分配完。后续回收的存储块则是将各个通道最老(最早)的存储块投递到块回收模块中,作为复写块被回收,被回收的存储块(复写块),会被重新分配给之前的通道。旧块则是回收其它通道(如删除通道,超过留存期的通道,下线时间较长的通道)的存储块。其中,如果存在旧块,则先不回收当前通道最老的存储块,而是待旧块分配完之后,再回收各个通道最老的存储块。
126.在本技术的示例性实施例中,旧块和复写块的回收策略可以通过预设的回收函数实现,例如函数free=f2(c,t),该函数用于旧块和复写块的回收,free函数的回收的存储块用于分配给各个通道。free函数可以根据各个通道的通道留存期t的计算结果,确定一个通道内的存储块是否可以被回收,回收各个通道c的存储块,加入到该rbtree树中。
127.在本技术的示例性实施例中,如果rbtree树中新的存储块未分配完,则不回收各个通道的最老时间的存储块(复写块)。该rbtree树中保存的都是新的存储块,如果新的存
储块分配完成,则检测是否有旧块可以回收,如果有旧块可以回收,则回收的旧块可以作为新块(新的存储块)存到rbtree树中,如果无旧块,则可以取各个通道找最老的存储块(复写块)加入到该rbtree树中。由上可知,新的存储盘加入或者旧的存储盘格式化时,该rbtree树保存的都是新的存储块。新的存储块分配完成后,该rbtree树中保存的存储块的数量至多是添加通道的个数。如果新的存储块分配完成后,且无其它情况发生,如增删通道,增删存储盘等,则各个复写块被回收后,仍分配给回收前的通道使用,即块再通道内循环复写使用。
128.在本技术的示例性实施例中,下面对各个通道的通道留存期的计算方法作详细介绍,通道留存器的计算可以通过通道留存期计算模块来完成。
129.在本技术的示例性实施例中,所述方法还可以包括:根据所述通道码率、通道个数、存储盘容量、每个存储块的大小以及通道留存期的计算触发事件计算每个通道的通道留存期;所述通道留存期是指保留通道内音视频的时长。
130.在本技术的示例性实施例中,所述根据所述通道码率、通道个数、存储盘容量、每个存储块的大小以及通道留存期的计算触发事件计算每个通道的通道留存期可以包括:根据预设的通道留存期计算式计算所述通道留存期;
131.所述通道留存期计算式可以包括:
132.其中,time为所述通道留存期,x为所述通道码率,d为所述存储盘容量,c为所述通道个数,b为每个存储块的大小,e为所述计算触发事件;
133.所述计算触发事件可以包括:
134.所述通道码率、通道个数、存储盘容量以及每个存储块的大小中的任意一个或多个数值的更改;和/或,所述存储通道和/或存储盘的变化情况。
135.在本技术的示例性实施例中,通道在线时,可以计算各个通道的通道留存期。通道离线时,如果通道离线时长超过预设的时长阈值,例如1小时,还未上线,则可以启动通道留存期计算模块计算该通道可以保留多久的录像,并根据计算结果通知回收模块何时开始回收该通道最老的存储块。
136.在本技术的示例性实施例中,当新增/删除通道时,可以计算各个通道在配额情况,还可以再获得/减少多久的录像保留时间。
137.在本技术的示例性实施例中,当增删存储盘时,也可以计算每个通道将要增加/减少的通道留存期。
138.在本技术的示例性实施例中,通道留存期计算模块可以先计算得到的通道留存期,然后计算各个通道链表中的存储块,如果发现可以一个通道内的存储块可以回收时,通知回收模块进行回收,该通道链表要释放存储数据最早的块节点。
139.在本技术的示例性实施例中,通道留存期可用如下函数式(通道留存期计算式)计算得到:time=f(n,t)=n*t=f1(d,c,b,x,e);
140.其中,time是通道留存期;x表示当前通道参数,例如通道码率等信息,e表示触发事件(如通道上线、视频参数更改、增删通道等情况);n是每个通道内的存储块的个数,n=d/c/b;d指的是存储盘容量,c指的是通道个数,b是每个存储块的大小,如1g或者0.5g;t是单个存储块的保存时长(单位秒);t=b/(x/8/1000)秒,x是ipc的通道码率,b是单个存储块
的大小。
141.在本技术的示例性实施例中,举例说明,例如:ipc通道码率为4m,b是0.5g,则一个存储块能存储1000秒,16.666667分钟;则每个通道留存期为:time=d/b*b/(x/8/1000)。
142.在本技术的示例性实施例中,如果增加通道,则c相应增大1,如果增加存储盘(硬盘),则d变大。e是计算触发事件,当事件触发时,会触发计算各个通道的通道留存期。则可以整理通道留存期计算式如下:
[0143][0144]
通过该函数,可计算当前通道留存期。
[0145]
在本技术的示例性实施例中,举例说明:例如,一个存储块设置0.5g大小,ipc通道码率大小为4m,h.264编码,则16.67分钟即可存满一个存储块。如果只有一个1t硬盘,并且只有d1通道,则可以保存的通道留存期是23.15(2000个存储块)天。如果增加一个d2通道,则每个通道的通道留存期为11.57天(1000块)。再增加一块硬盘时,触发e条件。如果仍是两个通道时,则每个通道的通道留存期都是23.15天(2000块)。如果其中一个通道ipc离线或者删除,则该通道的最老录像可以保存23.15天后,对应的那个最老的存储块被释放。随着时间推移,该通道的存储块会依次都被回收。这些被释放的块,可以加入到空闲管理模块中。
[0146]
在本技术的示例性实施例中,前述的通道链表可以由通道链表管理模块进行管理,该通道链表管理模块可以用于管理各个通道的存储块,管理内容包括但不限于:存储块的个数、通道链表中存储块的信息等。通道链表管理模块还用于为当前将要写完的存储块以及下个即将要写入的存储块做好信息同步、数据衔接写入。切块后要做的前一个存储块的数据收尾工作,包括更新存储块的一级索引和二级索引等信息。
[0147]
在本技术的示例性实施例中,通道链表管理模块的管理策略可以通过管理函数实现,例如函数list=f4(x),x记录了该通道的切块信息、通道留存期信息、存储块的个数等信息。该函数的作用可以包括:当有新的存储块分配时,一直添加到该list头部,并更新该通道的信息。若无新的存储块分配时,则该通道链表管理模块接受一个存储块之后,释放时间最老的存储块到回收模块。
[0148]
在本技术的示例性实施例中,下面通过切块举例再次说明本技术实施例的方案。
[0149]
在本技术的示例性实施例中,如果某设备有两个通道,如通道1和通道2,两个通道的通道码率等编码参数都相同,有一个硬盘分成了20个存储块(为便于描述,块个数较少)。
[0150]
在本技术的示例性实施例中,理想分块占用如下表3所示:
[0151]
表3
[0152]
通道1135791113151719复写时:135791113151719通道22468101214161820 2468101214161820
[0153]
在本技术的示例性实施例中,实际上如果某个通道码率或者通道容量设置不同或者历史录像原因,加上原有选块分配策略的影响,很有可能升级后出现如下表4的情况:
[0154]
表4
[0155]
[0156]
如果进行存储块的预分配则可能出现如下情况:通道1和通道2刚存储时,第一个块索引分别是9、3,那么按照预分配策略,则是如下表5所示的分块:
[0157]
表5
[0158]
通道1914681113151719通道23257101214161820
[0159]
在本技术的示例性实施例中,增加通道3之前,通道1和通道2占用块索引的情况可以如下表6所示:
[0160]
表6
[0161]
通道1914681113151719通道23257101214161820
[0162]
增加通道3后,则通道预分配块索引如下表7所示:最老的存储块依次分配给1、2、3通道。灰色底的为增加3通道前的分块情况。
[0163]
表7
[0164][0165]
在本技术的示例性实施例中,如果通道3离线,假如当前存储块分配情况如下表8(通道3离线前)所示:
[0166]
表8
[0167]
通道1158121518 通道234711141720通道392610131619
[0168]
d3长时间离线后不上线,超过通道留存期后,通道3内的存储块依次被回收分配给1、2通道,则存储块预分配将如下表9所示,其中,因为通道3是离线,可以保留一个块索引19给通道3。
[0169]
表9
[0170][0171]
在本技术的示例性实施例中,如果通道3被删除,则超过通道预留期后,索引19不保留,如表10所示:
[0172]
表10
[0173][0174]
在本技术的示例性实施例中,如果增加一个硬盘,则增加了10个存储块,索引是21-30。那么三个通道索引预分配之前可以如下表11所示:
[0175]
表11
[0176]
通道1158121518 通道234711141720通道392610131619
[0177]
分配完成后可以如下表12所示:
[0178]
表12
[0179]
通道115812151821242730通道234711141720232629通道392610131619222528
[0180]
在本技术的示例性实施例中,通过本技术实施例方案提前预分配存储块,实现了存储块存储的数据无缝写入,提升了系统性能,提前避免了数据因选块方式产生的数据丢失风险。
[0181]
本技术实施例还提供了一种基于块存储的切块装置1,如图3所示,可以包括处理器11和计算机可读存储介质12,所述计算机可读存储介质12中存储有指令,当所述指令被所述处理器11执行时,实现上述任意一项所述的基于块存储的切块方法。
[0182]
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献