随着城市项目的推进, 城市视频监控系统的规模不断扩大, 视频监控系统朝着“数字化、网络化、高清化、智能化”的方向不断前进.不断增长的监控点设备数量、更高清的摄像头和更长的视频留存时间, 对视频监控数据存储系统提出了更高的要求.
传统的基于IP-SAN(Internet protocol storage area network(IP存储网络))存储方案通过iSCSI(Internet small computer system interface(Internet小型计算机系统接口))协议将磁盘阵列挂载给流媒体服务器做标准磁盘, 采用文件方式进行视频数据的集中存储.在这种模式下, 数据流要经过流媒体转存服务器才能写入磁盘阵列, 存在着单点故障和性能瓶颈等问题.视频监控系统通常要求7x24小时持续运行, 面对多路视频流的并发持续写入, 基于通用文件系统构建的存储系统将会产生大量的文件碎片, 导致随着时间的推移, 存储效率不断下降.因此, 传统模式不能满足视频监控系统规模上升时对存储系统的高可靠性、高性能、可扩展性和易管理等方面的需求.随着技术的发展, 分布式云存储[变得越来越重要, 一些中等规模的视频监控系统采用了分布式云存储方案.
视频监控的数据和传统数据, 如邮件、文件、图片、数据表等相比, 有以下特点.
(1) 数据量大.视频监控朝着高清化方向发展, 随着摄像头数量的不断增加, 一个中等规模的城市一天就能产生PB级数据量.监控视频的保存周期为30天~90天, 视频监控的存储系统必须满足视频数据的长时间大容量存储需求, 且要具有线性扩展的能力.
(2) 写密集.传统数据的读写符合二八定律, 即20%的时间写数据, 80%的时间读数据.而视频监控数据完全相反, 写操作几乎占到了100%, 只有在回放和检索视频时才读取视频数据.视频监控的存储系统在设计和实现上需要优先考虑如何提高写入带宽.
(3) 码率恒定.传统数据的码率比较随机, 而视频监控数据的码率比较恒定, 因为监控视频的分辨率和格式一般不会发生变化.
(4) 7×24小时持续服务.传统数据一般遵循访问周期, 可在访问量很少的情况下将系统停机下线进行维护和升级而不影响正常的商业活动.视频监控数据不存在这样的周期, 视频数据流持续不间断地涌向存储系统, 任何升级维护操作都不能影响输入视频流的存储, 必须动态地进行.
本文针对上述问题和视频监控数据的特点, 提出一种面向海量高清视频监控数据的高性能分布式存储系统——DVSS(distributed video surveillance storage).本文的主要贡献如下.
(1) 首先, 设计了一种基于RAW磁盘设备的逻辑卷结构来组织并存储非结构化视频数据, 将大量并发数据流随机写转化成大段的连续写, 极大地提升了磁盘写入带宽, 支撑大规模高清视频流的并发写入.
(2) 其次, 设计了两级索引结构来管理视频元数据.两级索引结构设计极大地减少了状态管理器需要管理的元数据数量, 消除了性能瓶颈, 且可实现录像段的秒级检索.
(3) 最后, 实现了DVSS系统原型, 并对磁盘写入速度和支持的并发视频路数等关键指标进行测试, 证明了DVSS系统的高效的存储性能.测试结果表明, DVSS系统在单台廉价PC服务器上能够同时记录400路1080P视频流数据, 写入速度达本地文件系统的2.5倍.
1 相关工作
针对传统文件系统存储方案的问题, 研究人员根据视频监控数据的特点, 提出了直写裸磁盘设备的流式存储策略, 即设计一种磁盘逻辑结构, 将录像段的数据和索引信息以此结构组织并直接写入裸磁盘设备中[.文献[
文献[
2 DVSS设计与实现
视频监控数据具有高并发、大容量、有序的特点.通用文件系统如NTFS和Ext4等并非针对视频监控数据而设计, 传统存储方案以文件来组织并存储视频流数据, 存在以下两个问题.
(1) 以文件方式存储视频流数据不能保证数据在磁盘上的存放是连续的, 同时, 在记录多路高清视频流时, 系统需要维护大量打开的文件描述符, 并在这些文件描述符之间来回切换.随着系统长时间运行, 文件被频繁地创建和删除, 势必产生大量的磁盘碎片, 使得在写连续的视频流时磁头需要频繁地移动, 造成磁盘访问性能下降.
(2) 文件分片的长度决定了视频检索的精度:分片太小会产生海量的小文件, 造成inode号不够用; 分片太大, 造成检索精度不高.
2.1 DVSS系统结构
DVSS系统由一个状态管理器(state manager)、多个存储服务器(storage
server)和多个客户端(client)组成.系统结构如
图 1
Fig. 1
Fig. 1 Architecture of DVSS
图 1 DVSS系统结构
状态管理器主要做调度工作, 起负载均衡的作用.状态管理器除了需要在内存中记录集群中所有存储组和存储服务器的状态信息以外, 还需要记录录像段的起止时间和对应的存储组.存储服务器采用分组的组织方