《一种适应于多路并发写入流媒体数据的分块式存储算法.pdf》由会员分享,可在线阅读,更多相关《一种适应于多路并发写入流媒体数据的分块式存储算法.pdf(14页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103702057 A (43)申请公布日 2014.04.02 CN 103702057 A (21)申请号 201310394300.8 (22)申请日 2013.09.03 H04N 5/781(2006.01) H04N 7/18(2006.01) G06F 3/06(2006.01) (71)申请人 成都竣泰科技有限公司 地址 610000 四川省成都市高新区益州大道 中段 1800 号 1 栋 7 楼 702 室 (72)发明人 张帆 王鑫 周伟 (54) 发明名称 一种适应于多路并发写入流媒体数据的分块 式存储算法 (57) 摘要 本发明为一种适应于多路。
2、并发写入流媒体数 据的分块式存储算法。 在安防监控行业中, 项目规 模的不断扩大、 高清前端摄像机的使用, 对视频服 务器中存储性能的要求越来越高。外部成百上千 路摄像机视频数据并发写入单台存储服务器形成 瓶颈的进行分析。服务器异常情况下文件系统容 易损坏, 数据丢失严重。当磁盘反复覆盖写后, 产 生大量的磁盘碎片, 存储性能随之下降。 本文针对 上述问题进行分析, 提出绕过文件系统层, 构建自 身缓存系统的策略, 以及分块式存储思想和在此 基础上的可用块查找算法。 经实际产品在线使用, 验证了该专利的可行性和可靠性。 (51)Int.Cl. 权利要求书 1 页 说明书 6 页 附图 6 页 。
3、(19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书6页 附图6页 (10)申请公布号 CN 103702057 A CN 103702057 A 1/1 页 2 1. 一种针对网络视频监控中, 对网络摄像机视频数据进行优化存储的算法。 2. 此算法发明了一种由缓存系统 (Cache System) 使用一套更利于流媒体数据使用的 专用的缓存机制, 用以取代内核提供的磁盘通用缓存机制。 3. 算法所描述的存储方法包括 : 改变数据流缓存的方式, 使用自定义缓存系统 (Cache System) 替代系统默认的高速缓存 ; 改变操作系统系统默认的硬盘存储方式, 利用。
4、算法将硬 盘均分成若干个存储块 (chunk) 进行存储。 4. 根据权利要求 1 所述的缓存系统, 其特征在于 : 缓存系统自适应前端设备码流分配 缓存空间。 5. 根据权利要求 1 所述的缓存系统, 其特征在于 : 向硬盘的写入周期是可控的。 6. 根据权利要求 1 所述的将硬盘均分成若干个存储块 (chunk) , 其特征在于利用算法 管理硬盘存储, 自定义硬盘分块方式。 7. 根据权利要求 4 所述的将硬盘均分成若干个存储块 (chunk) , 其特征在于利用可用 块探测算法为每个前端设备迅速分配不同存储块。 8. 根据权利要求 4 所述的分块存储方式, 其特征在于不使用操作系统默认的。
5、文件系统 进行存储, 采用去除磁盘碎片存储方式。 权 利 要 求 书 CN 103702057 A 2 1/6 页 3 一种适应于多路并发写入流媒体数据的分块式存储算法 技术领域 0001 本发明主要应用于安防网络视频监控领域, 专门针对网络视频监控中产生的流媒 体数据, 提供了一种优化的存储算法, 该算法可应用在网络视频监控中所有的存储设备上, 以保证数据的高效、 优化存储。 背景技术 0002 近几年来, 随着楼宇安防、 园区安防以及平安城市的建设, 网络化的视频监控呈现 除了迅速的增长趋势, 视频数据从标清到高清, 网络摄像机产生的流媒体数据通过网络传 输到视频服务器时候, 需要存储起来。
6、并且保存一定的天数, 以便当某些事件发生的时候用 户回放录像。 因而, 存储在网络监控中所占的比重也越来越大, 其数据的安全性和稳定性尤 为重要, 从而, 对网络化视频的存储要求也就越来越高。 0003 现有的存储技术都是基于系统默认的存储方式之上的, 其基本的存储思路是 : 所 有的文件都构建在操作系统的虚拟文件系统层 VFS 之上, 当系统有视频数据写入时, 首先, 系统将把传输过来的视频数据存储成一个个小的文件, 新的文件的产生条件可以进行定义 (如每隔一个小时、 或文件大小超过 200MB 时) , 这样, 当条件满足时, 虚拟文件系统 VFS 就 会产生一个新的文件, 来进行视频数据。
7、的存储 ; 然后, 通过文件的方式将视频数据写进磁盘 高速缓存 (Disk Caches) , 从而将磁盘上的数据缓存在内存中 ; 最后, 系统不定期的通过磁 盘缓存向硬盘写入数据, 进行存储。 0004 针对网络视频监控中大量流媒体数据需要不间断的进行存储来说, 此种存储方案 存在以下弊端。 0005 首先, 由于网络视频数据存储之前, 需要先经过磁盘高速缓存进行存储, 当前端存 在大量网络摄像机进行数据采集并需要存储时, 某视频数据在写入硬盘之前, 需要先将其 对应的缓存进行填充, 当该缓存区域存储的空间用完时, 然后才能写入硬盘, 清空缓存。由 于为各个网络视频流所分配的缓存由系统默认决。
8、定, 因而缓存的硬盘写入时间也不能够确 定, 这样, 一旦当服务器出现宕机、 掉电等现象, 磁盘高速缓存中的数据将无法写入硬盘, 缓 存数据全部丢失, 极有可能会造成某段数据的大量缺失, 从而带来严重的损失。 0006 其次, 在系统缓存将视频数据写入硬盘时, 由于系统采用默认的分块存储方式, 由 于每个文件的大小不受控制, 当规定文件容量太小时候, 由于高清摄像机的产生的数据量 较大, 如 4Mbps, 这样, 视频数据在硬盘系统中将被分散成许多小文件进行分布存储, 这样, 由于频繁的打开和关闭文件, 从而造成额外的系统开销, 导致检索的效率降低, 影响系统的 操作体验 ; 反之, 若规定文。
9、件容量太大, 由于系统是通过操作系统负责寻找可用的磁盘空 间, 这样将会造成文件分布在磁盘上多个不同的位置, 以至于磁盘寻道时间增加, 磁盘读写 速度降低, 影响系统性能。 0007 第三, 由于磁盘高速缓存在向硬盘写入数据时, 其写入周期根据各个缓存空间的 不同而不同, 而且各个缓存空间是动态变化的, 从而, 整个硬盘组几乎一直处于驱动状态, 导致功耗增加, 硬盘寿命降低。 说 明 书 CN 103702057 A 3 2/6 页 4 0008 第四, 在安防监控行业中, 项目规模的不断扩大、 高清前端摄像机的使用, 前端视 频码流不断增加, 系统默认存储方式会出现瓶颈, 导致其最多能够处理。
10、的视频码流不会超 过 150Mbps, 这样对于单台存储设备, 外部有几百路甚至上千路摄像机视频数据需要并发写 入服务器时, 则需要增加服务器的数量完成存储需求。 0009 最后, 由于安防行业的特殊性, 需要监控设备长期有效运行, 因而, 设备的稳定性 显得尤为重要, 而视频监控数据的特殊性, 在于它将不断的进行大量的存储和删除过期数 据, 因而, 在传统的存储方式中, 系统缓存将视频数据写入硬盘时, 由于系统采用默认的分 块存储方式, 这样, 被删除了数据的硬盘空间, 在以后的使用过程中将不能够重新被利用, 导致大量的磁盘碎片产生, 严重影响系统性能, 一方面, 会造成数据的写入出现障碍,。
11、 导致 数据丢失 ; 另一方面, 碎片过多会影响整个文件系统, 导致整个系统的性能下降, 必须关闭 系统, 进行磁盘清理, 不仅如此, 大量的碎片会导致硬盘利用率降低 (经统计, 硬盘利用率最 多不会超过 80%) 和硬盘寿命减少, 这将导致存储的成本升高。 发明内容 0010 本发明的目的就在于解决整个安防行业中的网络视频数据存储的问题, 本发明将 克服上述存储技术中的缺点, 从而能够提供一种适合于安防行业中网络视频数据存储的方 法, 以达到高效、 稳定、 节能、 无碎片的智慧存储。 0011 为了实现上述目的, 本发明提出了一种适应于多路并发写入流媒体数据的分块式 存储算法的思想, 其基本。
12、思想是 : 在安防行业中, 网络视频数据又被称为流媒体数据, 当流 媒体数据在存储过程中时, 写入数据带宽远大于读出数据带宽, 也就是说, 系统绝大部分带 宽开销都在数据接收存储上, 并且很少有对最近写入的数据进行读取应用, 所以本发明摒 弃了文件系统存储方式, 以直接模式打开磁盘, 绕开磁盘高速缓存, 直接对磁盘指定的区域 进行读写操作。换句话说, 本算法发明了一种由缓存系统 (Cache System) 使用一套更利于 流媒体数据使用的专用的缓存机制, 用以取代内核提供的磁盘通用缓存机制。本存储算法 的实现步骤描述如下。 0012 首先, 初始化缓存系统, 将系统内存的大部分空间分配给缓存。
13、系统, 按照伙伴系统 算法对分配内存进行管理, 结合流媒体数据的特点为每个前端设备分配写入存储块时的缓 存。流媒体数据写入速度的一个重要指标就是码流, 它表示了前端设备每秒产生数据量的 大小, 而前端设备码流并不稳定, 因此需要计算前端设备每秒产生的视频流量 (码流) Q 的数 学期望。为前端设备分配缓存大小 Fb 设置码流的常数 C 倍, 它表示系统能够缓冲 C 秒的数 据, 公式如下 : 0013 第二, 初始化硬盘存储系统, 以直接模式打开磁盘, 将磁盘按照固定的大小, 均分 成若干个存储块 (chunk) , 每个前端设备向为其分配的指定存储块写入数据, 当存储块写满 后按照可用块探测。
14、算法 (如下述介绍) 查找可用块。系统以单线程多路异步写入的方式, 处 理多路并发写入的问题, 有效降低多线程开销, 使得系统更加稳定。 0014 可用块探测算法描述。 说 明 书 CN 103702057 A 4 3/6 页 5 0015 当前端设备向为其分配的存储块写满后, 按照可用块探测算法查找可用块。假设 系统中总的存储块数目为 T, 所有前端设备产生总码流的数学期望为 E(S), 当前前端设备 码流在总码流中的比重为 P= upper(E(S)/E(Q), 已经写满存储块 a, 正在探测下一个可用 块, 探测算法 Find Chunk() 描述如下 : 步骤 1 : 初始化变量循环变。
15、量 i=0、 k=1, 临时变量 nTmpBlock=0 ; 步骤 2 : 判断循环变量 i 值是否小于 P, 若条件成立继续向下执行 ; 步骤 3 : 求下一个可能的可用存储块 nActBlock : nTmpBlock = a + (P i ) * k ; nActBlock = nTmpBlock % 总块数 T ; 步骤 4 : 判断 nTmpBlock 是否小于当前块 a+ 总块数 T, 若条件不成立跳到步骤 6, 若条 件成立继续向下执行 ; 步骤 5 : 判断 nActBlock 是否为未被其余前端设备使用, 或者该块所存储的录像已经过 期, 如果条件成立则此次成功找到可用块, 。
16、程序返回, 如果没有找到, 循环变量 k+, 继续探 测, 跳到步骤 3 ; 步骤 6 : nTmpBlock = 0, i+, 跳到步骤 2。 0016 第三, 当有流媒体数据进入系统存储时, 此时不再通过 VFS 分配存储文件进行存 储, 而是根据设备分配缓冲计算公式, 从缓存系统中为前端设备分配对应的缓存 ; 从而该设 备的数据流将一直写入为其指定的缓存空间。 0017 第四, 在硬盘空间为前端的设备分配存储块, 当缓冲区写满后, 则可向其指定的存 储块写入数据, 此时, 应检测存储块是否足以容纳当前缓存区数据, 若能, 则直接写入 ; 若不 能则用可用块探测算法探测下一个可用的存储块,。
17、 并分配给该前端设备, 作为当前存储块。 0018 第五, 以异步写的方式向指定存储块的区域写入缓冲区中的数据, 并且将该缓冲 区加入忙缓冲区队列。检测忙缓冲区队列中是否有完成异步写入的缓冲, 并由缓存系统回 收已完成异步写入的缓冲区, 此时重新根据缓存公式为设备分配缓存空间, 继续执行存储。 0019 本存储算法应用于流媒体视频存储带来的价值有以下几点。 0020 1. 从安防行业的安全性上来说, 由于本算法摒弃了文件系统的存储方式, 以直接 模式打开磁盘, 绕开了磁盘高速缓存, 从而直接对磁盘指定的区域进行读写操作, 而各路视 频数据在缓存中的大小事根据算法进行分配的, 从而其大小具有固定。
18、性和可知性, 从而在 服务器异常情况下, 可以最大限度的降低视频数据的丢失, 保证了监控数据的安全性。 0021 2. 另一方面, 由于系统将磁盘按照固定的大小, 均分成若干个存储块 (chunk) , 每 个前端设备只能向为其分配的存储块写入数据, 当存储块写满后按照可用块探测算法查找 可用块, 再从此块进行存储, 从而, 有效消除了由于硬盘数据反复存取造成的碎片问题, 系 统性能更加稳定, 硬盘使用寿命增加, 硬盘利用率达到 100%, 在大型的监控项目, 如平安城 市的建设中, 这将为系统后台存储带来巨大的经济效益。 0022 3. 本发明由于采用自制的缓存空间进行数据缓存, 因而其向硬。
19、盘进行写入的周期 是固定的, 这使得硬盘组不需任何时候都进行驱动, 而只是周期性的进行驱动, 这将使存储 设备的功耗大大降低, 成为节能绿色产品。 0023 4. 由于本存储算法避免了系统服务器对于处理大规模视频码流的瓶颈, 本算法 可以极大提高存储服务器的使用性能, 单台存储服务器设备能够处理的视频码流可以超过 500Mbps。 说 明 书 CN 103702057 A 5 4/6 页 6 0024 5. 由于整个存储过程由本发明的算法所控制, 根据大量实验和实际应用环境中表 现, 其首次命中率 (循环中第一次计算) 达到80%以上, 即, 硬盘的读取效率增加, 设备性能提 高, 用户交互性。
20、得到很好的改善。 附图说明 0025 附图 1 是当前操作系统默认的存储过程的示意图。 0026 附图 2 是当前操作系统在存储时碎片产生过程示意图。 0027 附图 3 是使用本发明算法后网络视频数据存储过程示意图。 0028 附图 4 是使用本发明算法后无磁盘碎片原因示意图。 0029 附图 5 是本发明在存储系统中的整个工作流程示意图。 0030 附图 6 是本发明存储算法中的存储可用块探测算法流程示意图。 具体实施方式 0031 下面结合附图进一步说明本发明的技术方案。 0032 对比附图 1 和附图 3, 可以看到, 网络视频在进入系统准备进行存储之前, 默认的 存储方式是将视频数据。
21、通过虚拟文件系统存储成一个个的小文件, 然后再通过文件的方式 将视频数据写进磁盘高速缓存, 最后不定期将数据写进硬盘。本发明针对流媒体数据的特 殊性, 对整个数据存储过程进行了改进。 0033 参见附图 1, 前端网络视频数据进入系统准备进行存储, 此时直接进入虚拟文件系 统, 而摒弃了首先通过文件来存储数据的做法, 随后数据进入自定义的缓存系统 (此缓存由 系统内存分配) , 而并非进入系统默认的磁盘高速缓存, 具体实施方案描述如下。 0034 1. 将系统内存的大部分空间分配给缓存系统, 按照伙伴系统算法 (为解决系统外 碎片而使用的算法) 对分配内存进行管理。 0035 2. 结合流媒体。
22、数据的特点为每个前端设备分配写入存储块时的缓存。如附图 5, 假如前端有两路高清网络视频数据进入系统, 根据缓存分配公式, 假设 C 取 2, 表示视频数 据可以在缓存中存放 2 秒, 假如计算设备 1 码流的期望值为 4Mbps, 设备 2 码流的期望值 为 2Mbps, , 则系统缓存为设备 1 提供的缓存空间为 2*4=8Mb, 为设备 2 提供的缓存空间为 2*2=4Mb, 一旦初始化后, 只要前端设备视频码流稳定, 则分配的缓存空间基本保持恒定, 此 时, 设备 1 和设备 2 的数据分别存储到各自对应的缓存 ; 2 秒以后, 各个缓存中的视频数据 写满, 此时驱动硬盘组, 将缓存中。
23、的数据写进硬盘。 0036 绕开系统高速缓存而使用自定义缓存的目的描述如下。 0037 一方面, 因为磁盘高速缓存的优势是对于经常使用的数据, 由于其事先存在于缓 存, 因而读写速度较快, 而在监控行业, 视频流数据在绝大部分时间都是处于存储状态, 无 需对它进行操作, 此时, 由于磁盘高速缓存为各个视频设备分配的存储空间是不可控的, 即 : 可能发生某段视频数据会大量滞留于缓存内部, 此时若系统断电或宕机, 此段数据的丢 失可能会带来严重影响。而自定义的缓存系统, 其为每个视频设备分配的存储空间是可控 并且可知的, 这样, 即使断电, 也不会出现某段视频大量丢失的情况。 0038 另一方面,。
24、 由于磁盘高速缓存为各个视频设备分配的存储空间是不可控, 这也造 成了缓存向硬盘写入数据的时间不可控, 基本上硬盘组需要一直驱动, 功耗增加, 硬盘寿命 说 明 书 CN 103702057 A 6 5/6 页 7 减少 ; 而自定义的缓存系统, 其像硬盘写入数据的时间是固定的, 如每隔 2 秒写入一次, 因 而硬盘只需要每隔 2 秒驱动一次进行写入即可。 0039 3. 如附图 5 所示, 在经历了步骤 1, 两台设备将视频数据写入到缓存系统中之后, 当缓存写满时, 进入步骤 2, 将数据写入硬盘, 此时硬盘并非按照默认的存储方式 (进行分 段、 分页存储) , 而是将硬盘划分为若干个相同大。
25、小的存储块 (chunk) , 初始时, 为设备分配 两个存储块, 如 : 设备 1 视频数据存入 chunk0, 设备 2 视频数据存入 chunk5, 在此后的一段 时间里, 两台设备的视频数据将固定存入到此存储块里, 直到此存储块空间耗尽。 当此存储 块的空间用完时, 进入步骤 3(附图 5) , 再根据存储探测块探测算法, 找到下一个进行存储 的 chunk, 如此不断循环 ; 探测方式如下 (参见附图 6) 。 0040 (1)假设硬盘被划分为 16 个存储块, 即 T=16, chunk0- chunk15, 前端两台视 频设备所产生的总码流的数学期望为 6Mbps, 则两台视频设。
26、备的码流在总码流中的比重 P1=upper(6/4) =2, P1=upper(6/2) =3。 0041 (2) 若视频设备 1 已经写满 chunk0, 根据算法计算, 可能的可用存储块 nActBlock = nTmpBlock % 总块数 T ; nTmpBlock = a + (P i ) * k ; 则 nTmpBlock=0+ (2-0) *1=2, 求得 nActBlock=2%16=2 ; 此时若 chunk2 空闲, 或者是该空间上的录像已经过期, 则视频设 备 2 的视频流数据将在 chunk2 上进行存储 ; 若 chunk2 已经被占用, 则将 i 和 k 的值加 1。
27、, 继续计算, 直到找到空闲区间为止。设备 2 的存储块寻找方式与 1 相同。 0042 (3) 在视频数据删除的过程中, 只要有空间被空闲出来, 就有机会被其他视频数据 存储用到, 不会出现小空间不能够被利用的情况。 0043 视频数据不采用系统默认的段页式存储方式, 而采用此种存储方式, 其目的是。 0044 参照附图 2, 系统默认的段页式存储, 由于在存储过程中, 硬盘的存储空间划分的 各个存储空间的大小是不相同的, 在按照该系统的寻找算法, 一些比较小的空间将很可能 不能够被利用, 或者是在视频数据的反复删除后, 将留下许多不能被重用的小空间, 从而产 生碎片 (而启动硬盘的碎片整理。
28、机制是一项耗时和耗资源的方法) , 而经过本发明存储算法 存储视频数据 (参照附图 4) , 各个视频的存储位置变化很少, 只有在将当前的空间存储满之 后, 才会转而寻找下一个空间进行存储, 由于此时的流媒体数据并非以文件方式进行存储, 因而, 无论是多小的空间, 仍然可以利用, 从而, 使得硬盘空间完全不存在碎片。并且, 提到 的可用块探测算法, 根据大量实验和实际应用环境中表现, 其首次命中率 (循环中第一次计 算) 达到 80% 以上, 降低了反复覆盖写情况写入速度的波动。 0045 无碎片存储使得系统可以长期高效、 稳定运行, 并且硬盘使用率和使用寿命得到 大大提高。下面以一个安防监控。
29、项目为例, 对比该发明的价值体现。 0046 前端设备有 1000 路高清网络摄像机, 码流均为 4Mbps, 要求全天录像, 并且录像数 据保存 15 天。下述表格为两种不同的存储方式的性能对比。 性能默认存储方式流媒体数据存储算法 存储服务器数量 (台) 27 9 所需硬盘数量 (3T) 263 206 硬盘坏盘率 (/ 年) 30%5% 功耗 (/ 小时)9345W 4890W 0047 本发明可以用在监控系统中的任何存储设备上, 包括 DVR(数字硬盘录像机) 、 NVR (网络硬盘录像机) 以及其他存储阵列等 ; 以上所述并不用于限制本发明, 凡在本发明的原 说 明 书 CN 103。
30、702057 A 7 6/6 页 8 则和精神之内所作的任何修改、 等同替换和改进等, 均就包含在本发明的保护范围之内。 说 明 书 CN 103702057 A 8 1/6 页 9 图 1 说 明 书 附 图 CN 103702057 A 9 2/6 页 10 图 2 说 明 书 附 图 CN 103702057 A 10 3/6 页 11 图 3 说 明 书 附 图 CN 103702057 A 11 4/6 页 12 图 4 说 明 书 附 图 CN 103702057 A 12 5/6 页 13 图 5 说 明 书 附 图 CN 103702057 A 13 6/6 页 14 图 6 说 明 书 附 图 CN 103702057 A 14 。