发明内容
本发明提供一种监控系统中数据的存储方法及其系统,以实现多个冗余存储设备的数据写入,保证数据不会发生丢失。
为了达到上述目的,本发明提供一种监控系统中数据的存储方法,应用于包括编码器EC、媒体服务器MS和多个存储设备的系统中,该方法包括以下步骤:
所述EC将需要存储的传输控制协议TCP数据流发送给所述MS;
所述MS接收来自所述EC的所述TCP数据流;
所述MS将所述TCP数据流存储到所述多个存储设备,所述多个存储设备用于为所述EC提供冗余备份功能。
所述MS将所述TCP数据流存储到所述多个存储设备,具体包括:
在接收到所述TCP数据流后,所述MS将所述TCP数据流记录到自身的缓存资源中,并将所述缓存资源中记录的所述TCP数据流存储到所述多个存储设备。
所述方法进一步包括:当所述多个存储设备均完成对所述TCP数据流的存储后,所述MS删除所述缓存资源中记录的所述TCP数据流;或者,
当有存储设备完成对所述TCP数据流的存储,且有存储设备未完成对所述TCP数据流的存储时,所述MS在未完成对所述TCP数据流的存储的存储设备上记录所述TCP数据流对应的索引,将待同步记录信息通知给视频管理VM服务器,并删除所述缓存资源中记录的所述TCP数据流;
所述待同步记录信息中包括:未完成对所述TCP数据流的存储的目标存储设备信息、完成对所述TCP数据流的存储的源存储设备信息、目标存储设备中未进行存储的TCP数据流的时间区域信息;且所述待同步记录信息用于指示所述VM服务器将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述方法进一步包括:在所述MS将所述TCP数据流存储到所述多个存储设备的过程中,如果有存储设备发生故障,所述MS向所述VM服务器发送故障消息,所述故障消息中携带故障存储设备信息、故障发生时间信息;在发生故障的目标存储设备恢复后,所述MS在目标存储设备上记录所述TCP数据流对应的索引,并向所述VM服务器发送故障恢复消息,所述故障恢复消息中携带故障存储设备信息、故障恢复时间信息、用于同步所述TCP数据流的已完成TCP数据流存储的源存储设备信息;
所述VM服务器根据所述故障发生时间信息和所述故障恢复时间信息确定目标存储设备中未进行存储的TCP数据流的时间区域信息,并将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述VM服务器将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中,具体包括:
当到达指定同步时间时,所述VM服务器将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中;或者,
当存在至少3个存储设备为所述EC提供冗余备份功能时,在所述VM服务器接收到所述待同步记录信息后,如果所述VM服务器又接收到其他待同步记录信息,且发现所述待同步记录信息中的目标存储设备在所述其他待同步记录信息中为源存储设备,所述待同步记录信息中的源存储设备在所述其他待同步记录信息中不是目标存储设备,则所述VM服务器将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中。
所述VM服务器将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中,具体包括:
所述VM服务器通知所述源存储设备将所述时间区域信息所对应的TCP数据流同步到所述目标存储设备;
所述源存储设备接收到所述通知后,读取所述目标存储设备上记录的所述TCP数据流对应的索引,获得写入地址信息;
所述源存储设备读取自身存储的所述时间区域信息所对应的TCP数据流,并通过所述写入地址信息将该TCP数据流存储到所述目标存储设备。
一种用于数据存储的监控系统,至少包括编码器EC、媒体服务器MS和多个存储设备,所述EC,用于将需要存储的传输控制协议TCP数据流发送给所述MS;所述MS,用于接收来自所述EC的所述TCP数据流,并将所述TCP数据流存储到所述多个存储设备,所述多个存储设备用于为所述EC提供冗余备份功能。
所述MS,具体用于在将所述TCP数据流存储到所述多个存储设备的过程中,在接收到所述TCP数据流后,将所述TCP数据流记录到自身的缓存资源中,并将所述缓存资源中记录的所述TCP数据流存储到所述多个存储设备。
所述系统中还包括视频管理VM服务器;所述MS,还用于当所述多个存储设备均完成对所述TCP数据流的存储后,删除所述缓存资源中记录的所述TCP数据流;或者,
当有存储设备完成对所述TCP数据流的存储,且有存储设备未完成对所述TCP数据流的存储时,在未完成对所述TCP数据流的存储的存储设备上记录所述TCP数据流对应的索引,将待同步记录信息通知给所述VM服务器,并删除所述缓存资源中记录的所述TCP数据流;
所述待同步记录信息中包括:未完成对所述TCP数据流的存储的目标存储设备信息、完成对所述TCP数据流的存储的源存储设备信息、目标存储设备中未进行存储的TCP数据流的时间区域信息;且所述待同步记录信息用于指示所述VM服务器将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述系统中还包括VM服务器;所述MS,还用于在将所述TCP数据流存储到所述多个存储设备的过程中,如果有存储设备发生故障,则向所述VM服务器发送故障消息,所述故障消息中携带故障存储设备信息、故障发生时间信息;
在发生故障的目标存储设备恢复后,在目标存储设备上记录所述TCP数据流对应的索引,并向所述VM服务器发送故障恢复消息,所述故障恢复消息中携带故障存储设备信息、故障恢复时间信息、用于同步所述TCP数据流的已完成TCP数据流存储的源存储设备信息;
所述VM服务器,用于根据所述故障发生时间信息和所述故障恢复时间信息确定目标存储设备中未进行存储的TCP数据流的时间区域信息,并将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述VM服务器,具体用于当到达指定同步时间时,将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中;或者,
当存在至少3个存储设备为所述EC提供冗余备份功能时,在接收到所述待同步记录信息后,如果又接收到其他待同步记录信息,且发现所述待同步记录信息中的目标存储设备在所述其他待同步记录信息中为源存储设备,所述待同步记录信息中的源存储设备在所述其他待同步记录信息中不是目标存储设备,则将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中。
所述VM服务器,具体用于通知所述源存储设备将所述时间区域信息所对应的TCP数据流同步到所述目标存储设备;由所述源存储设备读取所述目标存储设备上记录的所述TCP数据流对应的索引,获得写入地址信息,并读取自身存储的所述时间区域信息所对应的TCP数据流,通过所述写入地址信息将该TCP数据流存储到所述目标存储设备。
与现有技术相比,本发明至少具有以下优点:
通过对MS接收到的TCP(Transmission Control Protocol,传输控制协议)数据流进行数据存储,可以减少EC的负载;通过在MS上检测数据写入状况,以不影响TCP数据流的存储为前提,可以完成多个冗余存储设备的数据写入。
具体实施方式
本发明提出一种监控系统中数据的存储方法,如图2所示,为本发明的应用场景示意图,该方法应用的监控系统中至少包括:EC、MS(Media Server,媒体服务器)、VM服务器和多个存储设备(如IPSAN设备);基于图2所示的应用场景,如图3所示,该方法包括以下步骤:
步骤301,EC将需要存储的TCP数据流发送给MS。其中,该TCP数据流为TCP实况流。
需要注意的是,在当前的监控系统中,如果有VC直接点播EC上的数据,则EC需要将TCP实况流发送给VC;在此基础上,无论是否有VC直接点播EC上的数据,EC均需要将数据存储到存储设备上,该过程与上述TCP实况流的发送过程是独立进行的,且该存储方式可以为EC通过iSCSI连接到存储设备,并将数据直接写入到存储设备中。
本发明中,当EC需要将数据存储到存储设备时,并不会直接将数据存储到存储设备上,而是以TCP实况流的方式将需要存储的数据发送给MS,由MS将TCP实况流存储到存储设备上(该过程将在后续步骤中详细说明);在此基础上,如果有VC直接点播EC上的数据,则MS可以直接将TCP实况流发送给VC。因此,本发明中,无法是否有VC直接点播EC上的数据,EC均只需要发送一次TCP实况流,从而可以减少EC的负载。
步骤302,MS接收来自EC的TCP数据流,并将TCP数据流存储到多个存储设备,该多个存储设备用于为EC提供冗余备份功能。例如,存储设备A、B、C用于为EC提供冗余备份功能时,则MS需要将TCP数据流存储到存储设备A、B、C上。
本发明中,由于MS可以与各个存储设备连接(即MS上可挂载多个存储设备),因此,当MS接收到TCP数据流后,可以同时将TCP数据流写入各个存储设备(如为EC提供冗余备份功能的存储设备A、B、C)。
本步骤中,在将TCP数据流存储到多个存储设备的过程中,MS在接收到TCP数据流后,需要将TCP数据流记录到自身的缓存资源中,并将缓存资源中记录的TCP数据流存储到多个存储设备。
由于MS上的缓存资源有限,为了实现将TCP数据流存储到多个存储设备的过程,需要对缓存资源中记录的TCP数据流执行删除处理,相应的处理可以有以下方式:
方式一:当多个存储设备均完成对TCP数据流的存储后,MS删除缓存资源中记录的TCP数据流;例如,在MS将缓存资源中记录的TCP数据流存储到存储设备A、B、C时,如果存储设备A、B、C均完成对TCP数据流的存储,则删除缓存资源中记录的TCP数据流。
方式二:当有存储设备完成对TCP数据流的存储,且有存储设备未完成对TCP数据流的存储时,MS在未完成对TCP数据流的存储的存储设备上记录TCP数据流对应的索引,将待同步记录信息通知给VM服务器,并删除缓存资源中记录的TCP数据流;其中,该待同步记录信息中至少包括:未完成对TCP数据流的存储的目标存储设备信息(如标识)、完成对TCP数据流的存储的源存储设备信息、目标存储设备中未进行存储的TCP数据流的时间区域信息;且待同步记录信息用于指示VM服务器将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中。
需要说明的是,当有多个存储设备完成对TCP数据流的存储时,MS在发送待同步记录信息的过程中,可以根据自身的需要选择任意一个完成对TCP数据流的存储的存储设备为源存储设备,并在待同步记录信息中记录该源存储设备的信息。
本发明中,MS需要在收到所有的存储设备的写入完成确认后,释放缓存资源中记录的TCP数据流,以节省缓存资源;由于MS上的缓存资源有限,假如某一存储设备(即目标存储设备)由于网络拥塞等原因导致传输缓慢,该情况下MS会很长时间不能释放缓存资源中记录的TCP数据流,继而使得MS的缓存资源紧张,以致无法及时接收后续的TCP数据流;针对上述问题,可采用上述方式二进行处理。
在具体实现过程中,当缓存资源达到一个限定值(表示缓存资源紧张)时,如果某一个存储设备(以存储设备A为例)的数据写入速度慢于其他存储设备,从而使得有存储设备完成对TCP数据流的存储,且该存储设备A未完成对TCP数据流的存储;此时,MS可以在存储设备A上写入缓存资源中TCP数据流对应的索引,并向VM服务器发送携带待同步记录信息的通知消息,该待同步记录信息中至少包括:目标存储设备信息、时间区域信息(即起始时间和结束时间)、源设备(已完成TCP数据流写入的存储设备)信息。
此外,该待同步记录信息中还可以包括存储格式(块或文件系统,如Raw)、状态等信息;在VM服务器收到上述待同步记录信息后,VM服务器可以通过待同步记录表的方式记录该待同步记录信息,以便后续进行同步。如表1所示,为一种在VM服务器上记录的待同步记录表的示意情况。
表1
进一步的,VM服务器为了实现将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中,可通过以下方式:
方式一:当到达指定同步时间(该同步时间可以在制定存储计划时指定)时,VM服务器将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中。
该方式下,一种优选方式为VM服务器按照指定同步时间获得目标存储设备的性能指标和源存储设备的性能指标;当目标存储设备的性能指标低于预设第一阈值(如性能指标可以为CPU使用率,第一阈值可以为50%,CPU使用率小于50%,此时说明目标存储设备有足够的性能处理数据)、且源存储设备的性能指标低于预设第二阈值(如性能指标可以为内存使用率,第一阈值可以为50%,内存使用率小于50%,此时说明源存储设备有足够的性能处理数据)时,VM服务器将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中。
方式二:当存在至少3个存储设备为EC提供冗余备份功能时,在VM服务器接收到待同步记录信息后,如果VM服务器又接收到其他待同步记录信息,且发现待同步记录信息中的目标存储设备在其他待同步记录信息中为源存储设备,待同步记录信息中的源存储设备在其他待同步记录信息中不是目标存储设备,则VM服务器将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中。
具体的,基于VM服务器上记录的待同步记录表,如果待同步记录表的记录中有目标存储设备出现在后续记录的源设备一项(即此时该存储设备响应比其他存储设备快),此时触发同步。例如,针对上述表1所示的待同步记录表,如果增加一项记录,如表2所示,该记录显示需要从存储设备A同步数据到存储设备C,而之前存在存储设备B向存储设备A同步数据的记录,此时可以触发存储设备B到存储设备A的数据同步过程。
表2
本发明中,在VM服务器将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备的过程中,具体包括:VM服务器通知源存储设备将时间区域信息所对应的TCP数据流同步到目标存储设备;源存储设备接收到通知后,读取目标存储设备上记录的TCP数据流对应的索引,获得写入地址信息;之后,源存储设备读取自身存储的时间区域信息所对应的TCP数据流,并通过写入地址信息将该TCP数据流存储到目标存储设备。
具体的,VM服务器发送通知给待同步记录表中的源存储设备,使源存储设备向待同步记录表中的目标存储设备同步所需的TCP数据流;以记录1为例,VM服务器发送通知给存储设备B(即源设备),使存储设备B向存储设备A(即目标存储设备)同步TCP数据流;并更新待同步记录表的状态,如表3所示的针对表2的更新情况。
表3
进一步的,存储设备B在接收到上述同步通知后,进行如下操作:连接存储设备A,并读取存储设备B上相应时间区域对应的数据(如存储设备B上时间区域20110707153130-20110707153150内的数据);以及读取存储设备A上的索引,从中获取数据写入的地址;并按照该地址写入数据。
在该同步过程完成后,存储设备B断开与存储设备A之间的连接,并向VM服务器发送完成消息;VM服务器在收到完成消息后,删除对应记录(如记录1)。需要注意的是,如果同步出错则恢复到未同步状态,等待下次同步开始继续同步。
本发明中,上述过程是针对存储设备没有出现故障的处理,在MS将TCP数据流存储到多个存储设备的过程中,如果有存储设备(即目标存储设备)发生故障,则MS需要向VM服务器发送故障消息,该故障消息中携带故障存储设备信息(如标识信息)、故障发生时间信息(未成功写入的数据时间);之后,VM服务器以故障存储设备记录表记录故障存储设备信息和故障发生时间信息,如表4所示的一种故障存储设备记录表。
表4
|
存储设备 |
故障时间 |
状态 |
1 |
A |
20110707160030 |
故障 |
2 |
C |
20110707160030 |
故障 |
进一步的,在发生故障的目标存储设备恢复后,MS在目标存储设备上记录TCP数据流对应的索引(即MS从未发生故障的存储设备中读取索引信息,并同步到该发生故障的目标存储设备中,同步完成后MS恢复对该存储设备的正常数据写入),并向VM服务器发送故障恢复消息,故障恢复消息中携带故障存储设备信息、故障恢复时间信息、用于同步TCP数据流的已完成TCP数据流存储的源存储设备(即未发生故障的存储设备)信息。
VM服务器在收到该故障恢复消息后,删除对应的故障存储设备记录表,并在待同步记录表中新增一条记录,在待同步记录表的该条记录中,起始时间为故障发生时间,结束时间为故障恢复时间,因此VM服务器可根据故障发生时间信息和故障恢复时间信息确定目标存储设备中未进行存储的TCP数据流的时间区域信息。
例如,上述表4中的存储设备A恢复,MS完成索引记录的同步,并向VM服务器发送故障恢复消息,之后VM服务器删除存储设备A的故障记录,此时表4变更为表5所示的故障存储设备记录表。此外,VM服务器还需要增加存储设备A的待同步记录,如表6所示的待同步记录表。
表5
|
存储设备 |
故障时间 |
状态 |
1 |
C |
20110707160030 |
故障 |
表6
综上所述,通过上述过程,针对MS将TCP数据流存储到多个存储设备的过程,如果有目标存储设备发生故障,即可以将源存储设备中时间区域信息所对应的TCP数据流同步到目标存储设备中;该同步过程与待同步记录表中数据的同步过程类似,在此不再重复赘述。
基于与上述方法同样的发明构思,本发明还提出了一种用于数据存储的监控系统,至少包括编码器EC、媒体服务器MS和多个存储设备,其中:
所述EC,用于将需要存储的传输控制协议TCP数据流发送给所述MS;
所述MS,用于接收来自所述EC的所述TCP数据流,并将所述TCP数据流存储到所述多个存储设备,所述多个存储设备用于为所述EC提供冗余备份功能。
所述MS,具体用于在将所述TCP数据流存储到所述多个存储设备的过程中,在接收到所述TCP数据流后,将所述TCP数据流记录到自身的缓存资源中,并将所述缓存资源中记录的所述TCP数据流存储到所述多个存储设备。
本发明中,所述系统中还包括视频管理VM服务器;
所述MS,还用于当所述多个存储设备均完成对所述TCP数据流的存储后,删除所述缓存资源中记录的所述TCP数据流;或者,
当有存储设备完成对所述TCP数据流的存储,且有存储设备未完成对所述TCP数据流的存储时,在未完成对所述TCP数据流的存储的存储设备上记录所述TCP数据流对应的索引,将待同步记录信息通知给所述VM服务器,并删除所述缓存资源中记录的所述TCP数据流;
所述待同步记录信息中包括:未完成对所述TCP数据流的存储的目标存储设备信息、完成对所述TCP数据流的存储的源存储设备信息、目标存储设备中未进行存储的TCP数据流的时间区域信息;且所述待同步记录信息用于指示所述VM服务器将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述MS,还用于在将所述TCP数据流存储到所述多个存储设备的过程中,如果有存储设备发生故障,则向所述VM服务器发送故障消息,所述故障消息中携带故障存储设备信息、故障发生时间信息;
在发生故障的目标存储设备恢复后,在目标存储设备上记录所述TCP数据流对应的索引,并向所述VM服务器发送故障恢复消息,所述故障恢复消息中携带故障存储设备信息、故障恢复时间信息、用于同步所述TCP数据流的已完成TCP数据流存储的源存储设备信息;
所述VM服务器,用于根据所述故障发生时间信息和所述故障恢复时间信息确定目标存储设备中未进行存储的TCP数据流的时间区域信息,并将源存储设备中所述时间区域信息所对应的TCP数据流同步到目标存储设备中。
所述VM服务器,具体用于当到达指定同步时间时,将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中;或者,
当存在至少3个存储设备为所述EC提供冗余备份功能时,在接收到所述待同步记录信息后,如果又接收到其他待同步记录信息,且发现所述待同步记录信息中的目标存储设备在所述其他待同步记录信息中为源存储设备,所述待同步记录信息中的源存储设备在所述其他待同步记录信息中不是目标存储设备,则将所述源存储设备中所述时间区域信息所对应的TCP数据流同步到所述目标存储设备中。
所述VM服务器,具体用于通知所述源存储设备将所述时间区域信息所对应的TCP数据流同步到所述目标存储设备;由所述源存储设备读取所述目标存储设备上记录的所述TCP数据流对应的索引,获得写入地址信息,并读取自身存储的所述时间区域信息所对应的TCP数据流,通过所述写入地址信息将该TCP数据流存储到所述目标存储设备。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。