基于FAT32的音视频存储系统的设计与实现
2016-11-25马洪兵陈从华
黄 鹏,马洪兵,陈从华
(1.清华大学 电子工程系,北京100084;2.厦门雅迅网络股份有限公司 福建 厦门361008)
基于FAT32的音视频存储系统的设计与实现
黄 鹏1,2,马洪兵1,陈从华2
(1.清华大学 电子工程系,北京100084;2.厦门雅迅网络股份有限公司 福建 厦门361008)
提出了一种基于FAT32的音视频存储系统的设计方案。该设计通过初始化时进行文件列表的预分配,保证存储介质的挂载;通过使用列表文件和索引文件,保证数据的快速的精确定位和已存储数据的有效性;通过对数据的封装写入,保证数据在PC端上可以正常播放。该设计为解决嵌入式设备对音视频数据存储的特殊需求提供了一种思考方向。
嵌入式设备;FAT32文件系统;数据安全;快速索引
随着生活水平的提高,人们拥有汽车的比例较从前有了较大幅度的增加,特别是在一二线城市,上下班高峰期的车辆密度对于行车人员的技术及判断有较高的要求。相应的,因此产生的各种交通事故的发生频率也越来越高。而对于交通事故的定责和定性,如果没有事故发生时的影像资料作为有力的证据,则存在较大的辩解空间。在影像的录制过程中,存储、检索和提取是相当重要的环节,以致当前人们对于嵌入式设备音视频存储的需求日益增加。
当前主流的文件系统在设计时考虑的需求是针对日常操作中的多文件类型、多层次目录和读取多于写入等特性而设计的。而这些特性在用于专门处理音视频存储的环境中,优点反倒成了缺点。因为音视频存储时存在其类型较单一、层次目录简单并且写入多于读取等特性。
嵌入式终端的音视频录制有别于PC端的音视频录制,在PC端的音视频录制时,由于其场景的固定性及事件的单一性,所以可以进行较简单的处理,而在处理嵌入式终端的音视频存储时,我们需要考虑到嵌入式终端的特殊性。由于嵌入式终端所处的环境处于恶劣的运动环境中,即在高低温、颠簸、供电不稳等条件下,对音视频的录制及保存产生了较大的影响。所以,我们需要对嵌入式设备的音视频存储系统进行定制,以符合嵌入式终端的音视频录制需求。
1 嵌入式音视频数据存储的特性
由于嵌入式终端使用场景的多样性,导致其对于音视频数据存储的特殊需求。
1)重复使用:在嵌入式设备上无法配备较大的存储介质,而音视频的存储数据量较大,且经常需要连续不间断的使用,需要对存储介质进行反复的利用以便使用较少的开支达到所需的功能;
2)检索:视频的存储是为了播放,需要通过较少的条件进行快速而又精确地定位数据;
3)文件新建删除操作频繁:嵌入式终端经常处于供电不稳或者需要进行频繁的断电及上电的操作;
4)灾难恢复能力:需要保证视频数据的安全性,在异常断电或者数据损坏后能够进行最大程度的还原;
5)寿命:降低存储介质的损坏几率,以提升产品寿命。即使在部分存储介质损坏的情况下,也需要充分利用剩余的存储空间[1];
6)便捷性:由于嵌入式设备的多样性,导致了其使用场景无法像PC端一样具有固定的网络及带宽的连接,从而导致大部分嵌入式设备无法进行云端存储。
2 通用文件系统的存储方式及其缺点
当前主流的操作系统有Linux和Windows,Linux下的文件系统有 EXT2、EXT3、EXT4,Windows下的文件系统有FAT32、NTFS。由于Windows系统的广泛使用,使得FAT32文件系统在嵌入式设备中有较高的使用率[2]。
在这我们以FAT32文件系统举例:FAT32的文件系统可以简单的划分为保留扇区、FAT表以及数据区,保留扇区的第一个扇区被称为BPB(boot parameter block),该扇区用于存储文件系统的相关配置信息,例如:每扇区字节数、每簇扇区数、保留扇区数等[3];FAT表与数据区的簇号是一一对应的,用于索引整个数据区,整个FAT表采用链式存储记录方式,FAT表2是对FAT表1的备份[4],在FAT表1损坏时启用;数据区是用户数据的存放区域。FAT32文件系统结构如图1所示[1]。
图1 FAT32文件系统结构
FAT32文件系统以簇为单位进行文件的管理,并且其每次文件的创建、拷贝、删除、重命名、移动,都需要修改FAT表以进行检索的同步。这就使得系统对FAT表区域的存储介质进行频繁的读写操作,导致长时间使用后FAT表损坏从而使得存储介质无法正常挂载,从而影响了整个存储介质的使用。由于嵌入式终端的使用场景的特殊性,需要经常地开关录制功能,从而需要进行大量的文件创建和删除,导致FAT表区域的访问频率比它区域高将近100倍[5]。这就产生了上述的对较小区域存储介质的频繁读写,导致该区域扇区损坏,进而无法挂载,导致数据无法进行存储和读取。
FAT32文件系统的存储是以文件为单位,如果在写入某个文件时有异常断电等突发情况,文件没有完整的写入,就会导致文件读取异常从而使得该文件已写入的数据丢失。
当前FAT32文件系统的主流文件格式与嵌入式终端的视频需求不同,例如:标记音视频文件录制时的状态、预录等功能。
综上所述,FAT32文件系统用于存储嵌入式的音视频文件时存在如下缺点:
1)长期使用后容易导致FAT表损坏从而无法挂载;
2)不易准确快速的定位所需数据;
3)异常关机导致数据丢失;
4)无法满足嵌入式终端的一些特殊需求。
3 基于FAT32文件系统定制的理论分析
要读取存储介质,首先要保证存储介质能够进行正常的挂载,而FAT32文件系统是否能够正常挂载,取决于FAT表是否损坏。要解决使用时间久之后无法挂载这个问题,就要减少对于FAT表的操作,以保证系统对当前存储介质的识别挂载。
嵌入式设备终端的文件操作与平常PC端的操作有一个本质上的差别,就是PC上所要操作的文件类型多而杂,而嵌入式终端的文件操作只是单一的音视频文件,多的话会加上照片或者数据库文件。如果只是进行单一的音视频存储,需要存储的文件索引信息与主流的文件系统的差别在于其关心的重点不同,可以只是将FAT32文件系统的FAT表进行固定格式的初始化,保证系统的挂载及基本的文件定位即可。
在格式化磁盘时预先对文件进行分区及文件分配,可以根据需求进行分区,例如将较大的区域划于音视频的存储,然后再行划分照片及其它文件的分区,除音视频区外其它区域可以使用默认系统或者定制系统,这边暂时只考虑音视频分区。
在分区后对当前分区的索引进行预分配,根据当前分区的大小及需求进行文件的初始化,并且对当前的索引区进行保护,从而保证对索引扇区最低限度的操作,保证挂载功能的成功率。为了解决原先索引起到的对文件进行快速的分配空间及数据检索功能,可以利用已分配的文件进行索引的重定义,为了防止对小范围扇区的多次读写导致该区域易损坏的问题,对新定义的索引文件进行多重备份及轮循读写,从而降低索引区的损坏概率。
4 总体设计
在存储介质挂载时对存储介质进行文件列表的预分配,进行分配的文件类型有五种,分别是:提示文件、信息文件、列表文件、索引文件、数据文件。其数量和作用简介如下:
1)1个提示文件,用以警示误删除,提示当前分区作用,例如可以命名为“本文件夹内所有文件为特殊文件,请勿修改或删除,否则后果自负”。
2)N个数据文件,用于存放具体的音视频数据,数据文件的数量和大小根据存储介质大小进行动态分配,每个容量的存储介质分配后的数据文件的大小和数据一致。
3)N个相应的索引文件,与数据文件一一对应,用来精确定位视频数据的位置,从而进行音视频数据的准确定位。
4)4个列表文件,这4个列表文件功能相同,大小相同,它们轮流进行音视频文件的检索和管理,这样能防止单一列表文件损坏从而导致检索功能失效,亦能保证这块磁盘的磨损平衡。例如可以设定每个列表文件使用期为30天,到期后使用下一个列表文件进行替换,时间可以通过嵌入式设备的系统时间为判定标准。
5)2个信息文件,这2个信息文件功能相同,大小相同,用于指示各个列表文件的使用时间及使用状态,信息文件2为信息文件1的备份。
信息文件与列表文件对应如图2所示。
信息文件保存了列表文件的启用时间和当前使用状态。启动时读取当前所使用列表文件的启用时间,以判断是否需要启用下一列表文件。
列表文件与索引和数据文件对应如图3所示。
如图3所示,列表文件用于记录每个数据文件的时间片段及相应标志,从而可以通过列表文件快速定位到存有所需数据的数据文件。而索引文件则与数据文件的具体数据进行索引,例如每两秒进行数据片段的存储,索引文件记录相应数据的具体情况。这样通过两级定位,能够快速精确的定位到所要查找的数据。
图2 信息文件与列表文件对应关系
图3 列表文件与索引和数据文件对应关系
5 方案特点
定义相关的读写接口和检索接口,以方便操作者的使用。写入数据时按顺序写入,可以有效消除调用系统接口时产生的磁盘碎片的问题,减少对数据进行操作时的寻道时间[6],保证了数据的平衡写入。
固定了FAT表,所以每个数据文件和磁盘位置是对应的,在遭到快速格式化,或者部分数据的覆盖写入后,只要再将存储介质放到嵌入式设备进行文件预分配操作,就会定位出各个文件的相应位置和数据,进行数据的恢复。如果有人通过PC端对当前存储介质的文件进行操作,就会破坏当前文件系统的统一格式而被发现,从而防止数据被伪造,保证了数据的安全性。
使用自定义的读写接口,并且对数据以较小的片段为单位进行存储,可以在启动时判断上次写入是否正常结束,如果未正常结束就进行数据的结束标志写入。以保证异常断电等情况下数据的存储有效及读取的正确。可以标志坏块、优先级、类型等相关参数,以便充分利用存储介质的剩余空间及满足需求的多样化。
由于采用的是FAT32文件系统,兼容Linux、Android和Windows等操作系统,使用者可以方便的将存储介质进行挂载、读取和拷贝。在保存数据为数据文件时可进行相应的封装,可封装成主流的视频格式,方便使用者进行数据的直接读取,保证在没有相应工具时也能对数据进行简单的保存和查看。
通过上述分析,该定制系统具有如下几个特点:
1)保证存储介质能够正常挂载,使得系统能够识别该存储介质;
2)平衡数据的写入,保证磁盘的寿命,减少寻道时间;
3)提供便捷的数据恢复功能,以便在低格或者少量覆盖后能够进行数据恢复;
4)最大程度的利用存储介质的有效空间,充分发挥存储介质的剩余价值;
5)提供快速的数据定位功能,方便对数据进行检索查找;
6)使用自定义的接口,防止数据的伪造;
7)可以为数据添加标签,增加扩展功能;
8)兼容主流文件系统,方便PC端的操作;
9)支持数据封装,保证了主流媒体工具的读取播放。
6 结束语
文中以嵌入式设备对于音视频存储功能的特殊需求为出发点,通过对FAT32文件系统的优缺点进行分析,结合存储介质的特性进行定制。通过固定文件位置、固定文件大小、固定文件个数和固定文件类型,来保证存储介质的正常挂载和数据的安全。通过自定义索引,来实现对数据的快速和精确的定位。通过对现有的FAT32文件系统进行定制并且对数据进行封装,保证了PC端对存储介质的识别并且可以对数据进行直接的读取播放。使用该文件系统可以解决在使用FAT32文件系统时出现的挂载失败、不易检索、不易扩展等问题,为嵌入式设备的音视频存储提供了一种思考方向。
[1]谢琦,胡俊,王磊.FAT文件系统在NAND FLASH上的磨损均衡研究[J].微电子学与计算机,2011(7):34-37.
[2]应骏,江峰,李莉.嵌入式设备上的文件系统优化设计[J].电子技术应用,2007(12):141-144.
[3]龚勇.Windows下数据恢复的研究[D].成都:电子科技大学,2008.
[4]邓波.FAT32文件系统结构研究[J].四川师范大学学报:自然科学版,2000(6):665-669.
[5]陈华.面向多媒体存储的FAT文件系统研究与应用[D].武汉:华中科技大学,2013.
[6]罗丽丽.视频存储优化技术研究与应用[D].长沙:国防科学技术大学,2009.
Design and implementation of audio and video storage system based on FAT32
HUANG Peng1,2,MA Hong-bing1,CHEN Cong-hua2
(1.Department of Electronic Engineering,Tsinghua University,Beijing 100084,China;2.Yaxon Network Co.,Ltd.,Xiamen 361008,China)
This paper proposes a design of audio and video storage system based on FAT32.The design is pre-assigned by the initialization file list,ensure mounted storage medium;by using the list of files and index files,ensure the effectiveness of fast and accurate positioning data that already stored;by writing the data package to ensure that the data can play on the PC side normally.This is designed to solve embedded devices provide a way of thinking about the direction of the special needs of audio and video data storage.
embedded devices;FAT32;data security;quick search
TN946.2
A
1674-6236(2016)18-0101-03
2015-09-29 稿件编号:201509188
黄 鹏(1987—),男,福建莆田人,硕士研究生。研究方向:嵌入式系统。