发明内容
本发明的目的在于提供一种流数据存储控制系统及其方法,目的在于克服传统文件系统存储流数据效率低下的问题,改变传统基于文件系统的流数据存储方式,构造一种专用于流数据的存储结构,保障高带宽流数据读、写、查询、删除操作的快速高效。
为了实现上述目的,本发明提供了一种流数据存储控制系统,其特征在于,包括:RAID控制模块、逻辑卷管理模块、流数据存取接口模块、时间索引与空间管理模块、主机接口驱动模块;
所述RAID控制模块,用于控制连接在SAS接口上的磁盘,并将所述磁盘上的存储空间映射为多个RAID空间,以使所述系统同时支持多种RAID级别;
所述逻辑卷管理模块,连接所述RAID控制模块,用于将所述多个RAID空间划分为多个逻辑卷,并提供进行流数据和时间索引存取的存储接口;
所述流数据存取接口模块,连接所述逻辑卷管理模块、所述时间索引与空间管理模块、所述主机接口驱动模块,用于解析所述主机接口驱动模块转发的流数据及其控制命令,依据控制命令,调用所述时间索引与空间管理模块获取流数据写入或读出的存储地址,并调用所述存储接口完成流数据的存取;
所述时间索引与空间管理模块,连接所述逻辑卷管理模块,用于负责磁盘空间的管理与分配,为每一路流数据维护一个时间索引,依据时间信息向所述流数据存取接口模块提供所述存储地址,并根据所述存储接口将时间索引定期写回到磁盘;
所述主机接口驱动模块,用于获取流数据,并传送流数据及其控制命令;
进一步地,所述流数据存储控制系统由所述时间索引与空间管理模块维护一时间点与该时间点对应的流数据存储地址之间的映射,由所述流数据存取接口模块依据所述存储地址,实现以时间为索引在一个具有连续物理地址空间的物理卷或所述逻辑卷上连续存放流数据。
所述的流数据存储控制系统,其中,还包括:
一存储管理模块,用于对系统运行状态进行监控,对所述RAID控制模块、所述逻辑卷管理模块、所述流数据存取接口模块、所述时间索引与空间管理模块及所述主机接口驱动模块的存储参数进行配置。
所述的流数据存储控制系统,其中,所述流数据的存储结构包括:
卷头,用于通过卷头存储物理卷或逻辑卷的全局信息,包含超级块、块位图、卷节点映射表和多个卷节点;
多个数据卷,用于通过多个数据卷存储流数据,每个数据卷对应一路流数据,不同时间区间的流数据划分为段,一路流数据包含多个段,多个段具有一段头,该段头记录段索引和描述信息,包含段索引表、段节点和时间索引表。
所述的流数据存储控制系统,其中,该超级块存储物理卷或逻辑卷的类型、卷总容量、空间分块大小、已分配出去的数据卷节点数、总数据块数和空闲数据块数;该块位图记录数据块的分配状态;该卷节点映射表实现数据卷节点的快速定位;该卷节点存储流数据标识符、分配给该数据卷的数据块、当前写入地址、流数据保存策略、流数据属性和描述信息。
所述的流数据存储控制系统,其中,该段索引表实现段节点的快速定位,段索引表的索引项与段节点一一对应,包含段开始时间和段结束时间;该段节点存储段属性和描述信息;该时间索引表存储时间、对应该时间的流数据的写入地址和写入长度,实现流数据的定位和检索。
为了实现上述目的,本发明提供了一种流数据存储控制方法,其特征在于,包括:
步骤一,控制连接在SAS接口上的磁盘,并将所述磁盘上的存储空间映射为多个RAID空间,以使流数据存储控制系统同时支持多种RAID级别,将所述多个RAID空间划分为多个逻辑卷,并提供进行流数据和时间索引存取的存储接口,为每一路流数据维护一个时间索引,依据时间信息提供流数据的存储地址;
步骤二,根据所述存储接口将时间索引定期写回到磁盘,解析流数据及其控制命令,依据控制命令,调用流数据写入或读出的存储地址,并调用所述存储接口完成流数据的存取;
维护一时间点与该时间点对应的流数据存储地址之间的映射,依据所述存储地址,实现以时间为索引在一个具有连续物理地址空间的物理卷或所述逻辑卷上连续存放流数据。
所述的流数据存储控制方法,其中,所述步骤二中,进一步包括:
将物理卷或逻辑卷划分为卷头、多个数据卷,并由卷头存储系统全局信息,包含超级块、块位图、卷节点映射表和多个卷节点;由多个数据卷存储单元存储流数据,每个数据卷对应一路流数据,不同时间区间的流数据划分为段,一路流数据包含多个段,多个段具有一段头,该段头记录段索引和描述信息,包含段索引表、段节点和时间索引表;
依据该数据卷、该段实现流数据的访问处理。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:读流数据的步骤,具体为:
打开段;根据时间索引表查询拟读取时间区间内流数据的起始地址和结束地址;根据查询到的起始地址和结束地址读取流数据。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:写流数据的步骤,具体为:
创建段;从卷节点中读取写入地址信息;根据写入地址信息写入流数据;向时间索引表增加一条新的索引项;修改卷节点中写入地址信息。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:查询流数据的步骤,具体为:
打开段;获取段属性,从段节点中获取视频流数据的属性信息。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:删除流数据的步骤,具体为:
步骤111,打开段;
步骤112,判断是否有对该段的读和写操作;
步骤113,根据拟删除流的开始时间和结束时间从时间索引表查询流数据的起始地址和结束地址;
步骤114,删除起始地址和结束地址之间的流数据;
步骤115,删除开始时间和结束时间之间的时间索引项;
步骤116,若开始时间和结束时间之间的流数据是一个整段,则删除对应的段节点和段索引项,并修改卷节点相关信息。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:创建卷的步骤,具体为:
步骤121,判断是否存在流标识符相同的数据卷;
步骤122,修改块位图,为数据卷分配数据块;
步骤123,修改卷节点映射表,为卷分配一个未使用的卷节点;
步骤124,创建卷节点;
步骤125,修改超级块相关信息。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:删除卷的步骤,具体为:
步骤131,判断是否有对该数据卷的读和写操作;
步骤132,修改块位图,回收分配给该数据卷的数据块;
步骤133,修改卷节点映射表,回收分配给该卷的卷节点;
步骤134,修改超级块相关信息。
所述的流数据存储控制方法,其中,所述流数据的访问处理步骤中,包括:打开段的步骤,具体为:
步骤141,判断对应的卷节点是否已读入内存,若是则转入步骤144;
步骤142,从卷节点映射表查找对应的卷节点;
步骤143,将卷节点读入内存;
步骤144,从卷节点获取对应数据卷地址;
步骤145,从段索引表中查找对应的段节点;
步骤146,将段节点读入内存。
本发明的有益技术效果是:
与传统基于文件系统的流存储方式不同,本发明在连续物理或逻辑地址空间上存储与组织流数据,流数据在存储前不需要转化为文件,杜绝了文件碎片的产生,提高了流数据的存储效率,基于时间信息索引和查询流数据,实现了流数据的精确定位和检索,适用于视频监控、传感器网络、航空航天、气象监控和金融服务等应用领域中视频、音频、图像、文本等流数据的存储,保障高带宽流数据读、写、查询、删除操作的快速高效。
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
如图1所示,是本发明的流数据存储控制系统结构图。该流数据存储控制系统100包括:RAID控制模块10、逻辑卷管理模块20、流数据存取接口模块30、时间索引与空间管理模块40、主机接口驱动模块50。
RAID控制模块10,通过SAS通道驱动程序向连接在SAS接口上的多个磁盘发送数据和状态读写命令,控制磁盘的读写和状态,通过RAID核心引擎实现RAID核心算法、缓存管理和I/O调度等功能,将这些磁盘上的存储空间映射为多个RAID空间,以使流数据存储控制系统100同时支持多种RAID级别(如0、1、5、6、10)。
不同的RAID级别实现流数据在多个磁盘上的不同分布,如RAID 0,则表示RAID控制模块10可实现流数据在多个磁盘上条带化分布,RAID 1,则表示RAID控制模块10可实现流数据在多个磁盘上镜像分布,从而实现流数据在多个磁盘上并发存取和容错分布,以提高流存储系统的读写性能和数据容错能力。
逻辑卷管理模块20,连接RAID控制模块10,将RAID控制模块10提供的RAID空间划分为若干个子空间,每个子空间称为一个逻辑卷,通过划分不同大小的逻辑卷及动态调整逻辑卷大小,实现存储空间的灵活管理,并提供存储接口以供流数据存取接口模块30和时间索引与空间管理模块40分别进行流数据和时间索引的存取;
流数据存取接口模块30,连接逻辑卷管理模块20、时间索引与空间管理模块40、主机接口驱动模块50,接收主机接口驱动模块50转发的流数据及其控制命令,依据控制命令类型,调用时间索引与空间管理模块40,获取时间索引与空间管理模块40查询时间索引得到的流数据写入或读出的存储地址,然后调用逻辑卷管理模块20提供的存储接口完成流数据的存或取;
时间索引与空间管理模块40,负责存储空间的管理与分配,并为每一路流数据维护一个时间索引,该时间索引维护时间点与该时间点对应的流数据存储地址之间的映射,从而时间索引与空间管理模块40可以依据时间信息向流数据存取接口模块30提供流数据写入或读出的存储地址,并调用逻辑卷管理模块20提供的存储接口将时间索引定期写回到磁盘,以保证系统重启后,能够恢复内存中的时间索引。
主机接口驱动模块50,获取以太网接口监听到的流数据及其控制命令,并采用标准数据传输协议,如TCP、UDP、iSCSI,或自定义传输协议对流数据及其控制命令进行解析,将解析后的流数据及其控制命令转交给流数据存取接口模块30;
进一步地,流数据存储控制系统100还包括存储管理模块60,用于对流数据存储控制系统100的运行状态进行监控,对RAID控制模块10、逻辑卷管理模块20、流数据存取接口模块30、时间索引与空间管理模块40及主机接口驱动模块50的存储参数进行配置。
进一步地,流数据存储控制系统100采用基于时间索引的流存储技术,由时间索引与空间管理模块40维护时间点与该时间点对应的流数据存储地址之间的映射,由流数据存取接口模块30依据从时间索引与空间管理模块40获取的存储地址,实现以时间为索引在一个具有连续物理地址空间的物理卷或逻辑卷管理模块20提供的逻辑卷上连续存放流数据,包含卷头和若干个数据卷,参见图2所示的本发明流数据的存储结构示意图:
(1)卷头存储系统全局信息,如存储容量、分块大小、已分配空间、未分配空间、卷索引和描述信息等,包含超级块、块位图、卷节点映射表和若干个卷节点;
A.所述的超级块记录逻辑卷类型、卷总容量、空间分块大小、已分配出去的数据卷节点数、总数据块数和空闲数据块数;
B.块位图记录数据块的分配状态,为0的位表示对应的数据块未分配,为1的位表示数据块已分配;
C.卷节点映射表实现卷节点的快速定位,每一路流数据的流标识符由Hash函数快速映射到表内相应位置;
D.卷节点存储流数据标识符、分配给该卷的数据块、当前写入地址、流数据保存策略、流数据属性和描述信息;
(2)数据卷存储流数据,每个数据卷对应一路流数据;不同时间区间的流数据划分为段,一路流数据包含若干个段;数据卷首部集中存放段头,段头记录段索引和描述信息,包含段索引表、段节点和时间索引表;
A.所述的段索引表实现段节点的快速定位,段索引表的索引项与段节点一一对应,包含段开始时间和段结束时间;
B.段节点存储段属性和描述信息;
C.时间索引表存储时间、对应该时间的流数据的写入地址和写入长度,实现流数据的精确定位和检索。
下面结合实施例给出采用本发明的流数据存储控制系统存储视频流的具体实施方式。该实施例在逻辑卷管理模块20提供的逻辑卷上存储与组织视频流,包含一个卷头和若干个录像卷(即数据卷),存储录像卷的逻辑地址空间按64GB大小分块。
卷头存放与录像卷管理和操作相关的全局信息,包括:超级块、块位图、卷节点映射表和1024个卷节点。
如图3所示,为本发明的超级块存储结构示意图。超级块记录整个逻辑卷地址空间的信息,共占用逻辑卷前128个字节,其中:
1)文件系统名字为6字节长,占用第0~5字节;
2)数据块大小为8字节长,用于指定存储录像卷的域地址空间的分块大小,占用第6~13字节;
3)总块数为4字节长,用于指定逻辑卷中用于存储录像卷的总数据块数,占用第14~17字节;
4)空闲块数为4字节长,用于指定未分配出去的数据块数,占用第18~21字节;
5)最后一次装载文件系统的时间为4字节长,占用第22~25字节;
6)超级块的最后一次写入时间为4字节长,占用第26~29字节;
7)幻数为2字节长,用来识别不同文件系统,占用第30~31字节;
8)第32~127字节保留。
块位图共占用32KB字节,块位图中每一位指定一个数据块的分配状态,0表示数据块未分配,1表示数据块已分配。
卷节点映射表共占用20KB,包含1024项,每一项20字节长,与1024个卷节点一一对应,用于快速定位录像卷节点。视频流的流标识符SID被快速映射到表内第k个位置,映射函数定义为k=Hash(SID)mod 1024,Hash(SID)值被存储在第k项内,若存在冲突项则自k项向下寻找最接近的未使用项。
如图4所示,为本发明的录像卷节点存储结构示意图,录像卷节点存储视频流的管理与配置信息,每个录像卷节点占用256字节,可管理一路视频流,1024个录像卷节点共占用256KB,最大可支持1024路视频流存储。如图4所示录像卷节点,其中:
1)摄像头标识符为50字节长,用于唯一标识一路视频流,占用第0~49字节;
2)摄像头别名为50字节长,用于概要描述摄像头的用途,占用第50~99字节;
3)块区间表为80字节长,占用第100~179字节,用于指定分配给该录像卷节点所对应录像卷使用的存储空间,表结构如图5所示,每一项占用4字节,前两个字节指定起始块号,后两个字节指定块数,共20项,最大可表示20个块区间;
4)下一次写入地址为8字节长,用于指定视频流数据下一次写入地址,占用第180~187字节;
5)当前录像段节点号为2字节长,用于指定最后一次写入的视频流数据对应的录像段节点号,占用第188~189字节;
6)时间索引表长度为4字节长,用于指定录像卷的时间索引表的字节数,占用第190~193字节;
7)下一次写入时间索引地址为8字节长,用于指定下一次写时间索引项的地址,占用第194~201字节;
8)段数据起始地址为8字节长,用于指定录像卷的首个录像段的起始地址,占用第202~209字节;
9)回转标志位为1字节长,用于指定循环写入的视频流是否覆盖了前期写入的视频流,占用第210字节;
10)录像保存天数为2字节长,用于指定视频流最短保留天数,占用第211~212字节;
11)录像覆盖策略为1字节长,用于指定是否循环写入视频流,占用第213字节,值为0表示顺序写入不覆盖,值为1表示循环覆盖写;
12)编码格式为1字节长,用于指定视频流的编码格式,占用第214字节,值为1表示H.264编码,值为2表示MJPEG编码,值为3表示MPEG4编码;
13)第215~255字节保留。
录像卷用于存储视频流数据,每个录像卷对应一路摄像头的视频流数据,摄像头不同时间区间的视频流数据被划分为若干录像段进行管理。卷首部集中存放段头,段头存储录像段的索引和描述信息,包含段索引表、1024个录像段节点和时间索引表。
段索引表包含1024项,共占用8KB空间,表内每一项8字节长,与一个录像段节点对应,记录录像段的开始和结束时间,其中前4个字节指定录像段开始时间,后4个字节指定录像段结束时间。
如图6所示,为本发明的录像段节点存储结构示意图,用于存储录像段的属性和头数据,每个录像段节点占用11KB,共1024个录像段节点,一路视频流最大允许创建1024个录像段。如图6所示录像段节点,其中:
1)帧率为4字节长,用于指定录像段每秒的帧数,占用第0~3字节;
2)宽分辨率为2字节长,用于指定录像段图像宽度方向的像素数,占用第4~5字节;
3)高分辨率为2字节长,用于指定录像段图像高度方向的像素数,占用第6~7字节;
4)描述信息长度为4字节长,用于指定录像段描述信息的字节数,占用第8~11字节;
5)头数据起始地址偏移为4字节长,用于指定录像段头数据起始地址相对录像段节点首地址的偏移,占用第12~15字节;
6)头数据大小为4字节长,用于指定头数据的字节数,占用第16~19字节;
7)第20~255字节保留;
8)描述信息为768字节长,占用第256~1023字节;
9)头数据为10KB长,占用第1024~11263字节。
如图7所示,为本发明的时间索引表结构示意图,存放某时刻视频流的写入地址和写入长度,用于实现视频流数据的精确定位和检索。时间索引表的索引粒度精确到1秒,每个索引项共占用18字节,一个月时长的时间索引表总共占用30×24×3600×18=46656000字节≈44.5MB。每个索引项包含时间、逻辑地址、长度三个字段,其中:
1)时间字段6字节长,用于指定该索引项对应视频流数据的起始时间,定义为1970年1月1日以来经过的毫秒数;
2)逻辑地址字段8字节长,用于指定该索引项对应视频流数据在逻辑卷域地址空间上的写入首地址;
3)长度字段4字节长,用于指定该索引项所代表时间区间内写入的视频流数据的字节数。
本发明的流存储系统的访问方法,包括以下步骤:
(1)创建卷的步骤,包括:
A.判断是否存在流标识符相同的卷;
B.修改块位图,为卷分配数据块;
C.修改卷节点映射表,为卷分配一个未使用的卷节点;
D.创建卷节点;
E.修改超级块相关信息。
(2)删除卷的步骤,包括:
A.判断是否有对该卷的读和写操作;
B.修改块位图,回收分配给该卷的数据块;
C.修改卷节点映射表,回收分配给该卷的卷节点;
D.修改超级块相关信息。
(3)创建段的步骤,包括:
A.在段索引表中增加一条新的索引项,为段分配一个未使用的段节点;
B.创建段节点;
C.修改卷节点相关信息。
(4)打开段的步骤,包括:
A.判断对应的卷节点是否已读入内存,若是则转入D;
B.从卷节点映射表查找对应的卷节点;
C.将卷节点读入内存;
D.从卷节点获取对应卷地址;
E.从段索引表中查找对应的段节点;
F.将段节点读入内存。
(5)写流数据的步骤,包括:
A.打开段;
B.从卷节点中读取写入地址信息;
C.根据写入地址信息,写入流数据;
D.向时间索引表增加一条新的索引项;
E.修改卷节点中写入地址信息。
(6)读流数据的步骤,包括:
A.打开段;
B.根据时间索引表查询拟读取时间区间内流数据的起始地址和结束地址;
C.根据查询到的起始地址和结束地址读取流数据。
(7)删除流数据的步骤,包括:
A.打开段;
B.判断是否有对该段的读和写操作;
C.根据拟删除流数据的开始时间和结束时间从时间索引表查询流数据的起始地址和结束地址;
D.删除起始地址和结束地址之间的流数据;
E.删除开始时间和结束时间之间的时间索引项;
F.若开始时间和结束时间之间的流数据是一个整段,则删除对应的段节点和段索引项,并修改卷节点相关信息。
(8)关闭段的步骤,包括:
A.判断是否有对该段的读和写操作;
B.若无将段节点写回设备,并回收内存。
(9)获取卷属性的步骤,包括:
A.判断卷是否已创建;
B.从卷节点映射表查找对应的卷节点;
C.访问卷节点获取卷属性。
(10)获取段属性的步骤,包括:
A.打开段;
B.访问段节点,获取段属性。
如图8所示,为采用本发明的访问方法实现的读、写、查询、删除视频流数据业务流程图,步骤如下:
步骤801,系统初始化;
步骤802,接受请求;
步骤803,判断请求的合法性,若合法,则执行读视频流数据、写视频流数据、查询视频流数据和/或删除视频流数据的操作,进入步骤804;否则执行非法请求处理,进入步骤804;
步骤804,结束请求处理。
进一步地,步骤803中,读视频流数据的步骤包括:
A.打开段,确认要读取的视频流数据是否存在,若存在进入下一步,否则返回错误码,结束操作;
B.读视频流数据;
C.获取段属性,从段节点中获取视频流数据的属性信息及视频流数据的头数据;
D.关闭段。
进一步地,步骤803中,写视频流数据的步骤包括:
A.创建段,创建成功进入下一步,否则返回错误码,结束操作;
B.写视频流数据;
C.关闭段。
进一步地,步骤803中,查询视频流数据的步骤包括:
A.打开段,确认要查询的视频流数据是否存在,若存在进入下一步,否则结束操作;
B.获取段属性,从段节点中获取视频流数据的属性信息;
C.关闭段。
进一步地,步骤803中,删除视频流数据的步骤包括:
A.打开段,确认要查询的视频流数据是否存在,若存在进入下一步,否则结束操作;
B.删除视频流数据;
C.关闭段。
本发明提供了一种视频流存储控制系统及其视频流访问方法,克服了传统文件系统存储流数据效率低下的问题。本发明在块设备上存储与组织流数据,流数据在存储前不需要转化为文件;在逻辑地址空间上按序连续存放流数据,杜绝磁盘碎片的产生;基于时间信息索引和查询流数据,实现流数据的精确定位和检索;采用开放的接入协议和SDK包,对流数据进行访问。
本发明改变了传统基于文件系统的流数据存储方式,创造性地采用了一种专用于流数据的存储结构,可用于视频监控、传感器网络、航空航天、气象监控和金融服务等应用领域中视频、音频、图像、文本等流数据的存储,保障高带宽流数据读、写、查询、删除操作的快速高效,具有广阔的应用前景。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。