硬盘录像机相关内容
DVR文件系统及硬盘发展趋势
嵌入式DVR与PC机一样,都存在硬盘文件系统。嵌入式DVR硬盘文件系统可分为两类,一是与PC机相同的FAT文件系统,第二种是嵌入式DVR生产厂家自行开发的,适合存储大容量媒体数据流的专业文件系统。
DVR文件系统及硬盘发展趋势
嵌入式DVR与PC机一样,都存在硬盘文件系统。嵌入式DVR硬盘文件系统可分为两类,一是与PC机相同的FAT文件系统,第二种是嵌入式DVR生产厂家自行开发的,适合存储大容量媒体数据流的专业文件系统。
目前市场上,PC-based DVR一般基于Windows系统,文件系统一般采用NTFS或FAT32;而嵌入式 DVR所采用的文件系统则与厂商选择的嵌入式操作系统有密切的关系。目前嵌入式 DVR中所采用的嵌入式操作系统有RTOS、pSOS、嵌入式 Linux、vxWorks等,而采用的文件系统则有较多种类,如MS-DOS兼容文件系统、UNIX兼容文件系统、Windows兼容文件系统
等。
PC系统使用的FAT文件系统,对于长时间录像产生的大数据包(几G到数十G的数据)无法管理,只能进行分包,将一段完整的录像,分为若干个小的文件包,如5、10、30分钟自动形成一个文件,或者150M、200M作为一个文件。因此容易产生包与包之间丢帧现象,同时硬盘磁头需要频繁地读写数据与文件索引,磁头频繁跳动,对于每天十几到二十四小时连续读写硬盘的DVR系统,极容易造成硬盘故障。同时硬盘录满后,需要删除整段文件,但新录制的文件与老的文件大小不同,由此会在硬盘上产生大量碎片空间,影响硬盘的使用和系统效率。另外,FAT文件系统用做录像机录像资料管理还存在两个风险,一是文件分配表如果损坏,则录像资料大多会丢失,二是系统突然断电或遭到人为破坏,当前的录像数据不能够保存。
针对FAT文件系统在媒体数据流存储领域中的不足之处,专业公司开发了适合媒体数据流存储方式的硬盘管理文件系统,该系统可以高效率地管理整个硬盘,不受录像数据包大小影响,录像机从开始到结束为一个录像机段,录像机段长度可从几秒钟到几十小时,数据可从几K到几十T。采用这种硬盘管理方式,克服了FAT系统对长时间录像管理存在的缺陷。由于unix文件系统
不存在分包录像,因此也不存在包与包之间丢帧现象;磁头不需要频繁读写数据与文件索引,延长硬盘使用寿命;硬盘录满后,采用逐帧覆盖技术,不存在硬盘碎片。可以将硬盘形象地比做一盘录像机带,硬盘任何地方的错误,不会影响前面或后面的录像。在突然断电的情况下,也能保存断电前瞬间的图像;同时,原始录像资料盘数据与PC不兼容,无法在PC上直接修改,保证原始资料的保密性和可靠性。
但由于开发难度和资金投入的限制,多数嵌入式DVR生产企业仍然会采用FAT文件存储方式对硬盘录像机进行数据管理。从嵌入式DVR硬盘文件系统的发展方向看,长时间稳定录像采用这种方式可以大幅度提高硬盘录像机的可靠性,但需要专业公司具备开发硬盘操作系统的能力与经验,目前国内只有少数几个厂家拥有该项技术。
储存结构
为了提高灵活性,系统将硬盘进行分区。一个硬盘最多划分为两个区(又称为驱动器)。系统预留了一分区扇区,保存在该扇区的分区信息结构包括着硬盘的操作状态、校验标记等一些重要信息,同时还包含两个分区的硬盘参数表(即DPT)。DPT又包含每个分区的储存特征、总的簇数等信息。硬盘分区(如图1 硬盘分区示意图)所示:
分区扇区 | 分区信息结构(含两个硬盘参数表):扇区号,硬盘信息 |
第一分区 | .驱动器参数结构 .目录区 .索引区 .数据区 |
第二分区 | .驱动器参数结构 .目录区 .索引区 .数据区 |
驱动器参数结构是文件系统访问驱动器的依据,它包含驱动器的操作状态、储存特征、链表指针、校验标记等信息。硬盘排列时,根据驱动器的操作状态(特别是录像起止时间),驱动器形成双向链表,链表指针被填充。硬盘格式化时,根据硬盘容量和分区个数生成DPT,再用DPT来初始化每个分区的驱动器参数结构,并保存到对应扇区。硬盘初始化时,根据DPT中的驱动器参数结构扇区偏移直接得到驱动器参数结构。
对于大数据量的流媒体应用,系统采用单位比较大的簇来管理数据,这样可以提高效率,而数据碎片的影响可以忽略不计。每簇与目录区和索引区中的目录结构、索引结构物理上一一对应。写数据时,目录结构、索引结构、簇在物理上都是顺序申请的,按照申请的时间先后次序,各个通道混合存放。
( 如图2 硬盘目录结构图)所示,组成如下表。其中簇标志用于标识文件的起始和结束,数据标志和数据属性用于文件的查和定位,关联属性将特定通道的簇链接起来,主要用于文件的连续读取。
| ||||||||||||
索引结构包含簇内数据的通道号、音视频标志、报警标志。由于索引结构占用空间小,实际上使用索引结构代替目录结构中的数据标志来实现文件的查,可以提高效率。
缓冲管理
由于对索引区及目录区的读写操作比较频繁,存在空间、时间局部性,如果每次读写直接对底层接口进行调用,比较浪费资源,而从系统中开一缓冲数组进行管理,从而减少真正的读写次数。而对数据区的读写不存在上述特性,所以对数据区的读写可以直接调用底层接口函数。
为了提高缓冲的命中率,缓冲开设大小应该大于64个扇区单元,如果系统内存资源不存在问题,则加大开设的缓冲数。在大的缓冲数开设情况下,系统存在缓冲查的时间开销,为减小这部分开销,在定位缓冲时采用hash查。Hash表的长度定为缓冲数的2倍以上。由于访问上顺序特性,hash函数可以直接从LBA的低位生成。
在突然断电的情况下,为了能够恢复数据,对目录区必须进行随时保存,所以缓冲在任意情况下都能进行同步,同步方式有单缓冲、单驱动器、所有缓冲。
电源管理
硬盘正常运行的功耗都比较大,一般都带电源管理功能,它基本上分为三种工作状态,分别为寻道、空闲、待命。空闲状态硬盘的电机还是运转的,待命状态时硬盘的电机是停转的,但它接受命令的输入。
系统设置了硬盘的参数,使其如果在固定时间无任何操作情况下自动进入待命状态,但由于硬盘从待命状态恢复到寻道状态需要比较长的时间(一般在8秒以上),会引起数据的丢失,所以程序中在对待命的硬盘进行操作前会预先进行唤醒。
对于同一端口的主从盘,由于采用的是同一组线,现对它们在电源管理上采用一致的方式,即要么两盘一起工作,要么一起进行待命状态。
文件系统初始化与冲突处理
文件系统初始化的流程为:缓冲初始化-版本检测-驱动器初始化-句柄初始化、文件系统恢复-冲突扫描-硬盘排列。初始化成功后,文件系统才能开始正常工作。
版本检测时,判断分区扇区中的校验标记,如果不是系统要求的文件系统标记,对其格式化。
硬盘排列指文件系统初始化时,需要根据硬盘录像时间的先后顺序将所有驱动器参数结构连成双向链表,并确定当前工作盘。对硬盘的工作顺序正确排列,理功能,它基本上分为三种工作状态,分别为寻道、空闲、待命。空闲状态硬盘的电机还是运转的,待命状态时硬盘的电机是停转的,但它接受命令的输入。
系统设置了硬盘的参数,使其如果在固定时间无任何操作情况下自动进入待命状态,但由于硬盘从待命状态恢复到寻道状态需要比较长的时间(一般在8秒以上),会引起数据的丢失,所以程序中在对待命的硬盘进行操作前会预先进行唤醒。
对于同一端口的主从盘,由于采用的是同一组线,现对它们在电源管理上采用一致的方式,即要么两盘一起工作,要么一起进行待命状态。
文件系统初始化与冲突处理
文件系统初始化的流程为:缓冲初始化-版本检测-驱动器初始化-句柄初始化、文件系
统恢复-冲突扫描-硬盘排列。初始化成功后,文件系统才能开始正常工作。
版本检测时,判断分区扇区中的校验标记,如果不是系统要求的文件系统标记,对其格式化。
硬盘排列指文件系统初始化时,需要根据硬盘录像时间的先后顺序将所有驱动器参数结构连成双向链表,并确定当前工作盘。对硬盘的工作顺序正确排列,是保证数据连续性和空间最大利用率的基础。
但是,由于机器上的硬盘变动(如人为的硬盘更换),硬盘之间录像时间会有重叠,或者与机器的当前时间冲突,这些统称为硬盘冲突。对冲突进行适当的处理,才能使系统正常工作,并且在最佳状态,反之,会对数据连续性,空间利用率和查都带来坏的影响。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论