具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述。需要说明的是,在附图或说明书中,相似或相同的元件皆使用相同的附图标记。
图1为本发明实施例提供的一种多媒体储存方法流程图。如图1所示,本实施例提供的多媒体数据存储方法具体可以通过软件/硬件方式实现,该多媒体数据存储方法包括:
步骤10、将多媒体数据分别写入多媒体存储模块的缓冲区和数据模块;
步骤20、当接收到读数据指令时,从缓冲区查询读数据指令对应的多媒体数据,若缓冲区包含读数据指令对应的多媒体数据,则停止对缓冲区的写数据操作,从缓冲区中读取读数据指令对应的多媒体数据;否则,从数据模块查询读数据指令对应的多媒体数据,若数据模块中包含读数据指令对应的多媒体数据,则从数据模块中读取读数据指令对应的多媒体数据。
在本实施例中,对数据模块和多媒体存储模块的写入和读操作步骤并不一定具有时序关系,步骤10和步骤20还可以并行执行。本实施例提供的多媒体数据存储方法,具体可以应用于对视频数据的存储,适用于对视频监控中生成的视频文件的写入和读取。但该多媒体数据存储方法还适用于其他的多媒体文件(如音频文件等)存储,不以本实施例为限。
在具体的视频监控应用过程中,将视频监控中产生的多媒体数据同时写入数据模块和多媒体存储模块的缓冲区,当用户需要对某段多媒体数据进行查询时,输入相应的读数据指令。当缓冲区中存在查询的多媒体数据时,则停止对缓冲区的写数据操作,只进行读数据操作,可以提高对多媒体数据的读取速度。而此时,继续将视频监控中产生的多媒体数据写入数据模块,未中断对多媒体数据的存储。由于对数据模块的写数据操作是不间断的,数据模块中存储有完整的视频监控中产生的多媒体数据,因此多媒体存储模块的缓冲区中无需存储完整的数据。当从缓冲区读取完读数据指令对应的多媒体数据后,也可以根据数据模块中的多媒体数据,将缓冲区中缺失的多媒体数据恢复。当缓冲区中不存在读数据指令对应的多媒体数据时,才查询数据模块,当数据模块中包含该多媒体数据时,读取该多媒体数据。具体的,缓冲区可以用于存储较短时间段内视频监控产生的多媒体数据,当多媒体数据容量超出缓冲区的存储空间时,可以覆盖缓冲区中已写入的多媒体数据,即循环覆盖,以进行新的多媒体数据的存储。数据模块可以为存储空间较大的存储设备,可以存储较长时间段内视频监控产生的多媒体数据。
本实施例提供的多媒体数据存储方法,将多媒体数据同时写入数据模块和多媒体存储模块的缓冲区,在接收到读数据指令时,通过先对缓冲区进行读数据指令对应的多媒体数据的查询,若所需要读取的多媒体数据存在于缓冲区中,停止对缓冲区的写数据操作,从缓冲区进行多媒体数据的读取,提高了读取速度,进而提高了多媒体数据存储系统的响应速度。
在本实施例中,步骤10、将多媒体数据同时写入数据模块和多媒体存储模块的缓冲区之前,还可以包括:
步骤30、将多媒体存储模块设置为独立冗余磁盘阵列;其中,缓冲区包括第一存储单元和第二存储单元。
具体的,可以将多媒体存储模块设置为独立冗余磁盘阵列(RedundantArray of Independent Disk,以下简称RAID)10结构,其中,第一存储单元和第二存储单元所形成的阵列结构为RAID1。
具体的,第一存储单元和第二存储单元均可以为不同硬盘的一部分存储区域。硬盘分别用硬盘A和硬盘B来表示,硬盘A和硬盘B所形成的阵列结构为RAID1,RAID1为镜像磁盘阵列,可以提高数据存储的安全性,其中硬盘B为硬盘A的镜像。在视频监控过程中,将产生的多媒体数据写入多媒体存储模块时,同时对硬盘A和硬盘B写入相同的多媒体数据。多媒体存储模块还包括硬盘C,可以将硬盘A、硬盘B和硬盘C设置为RAID10。多媒体存储模块还可以包括硬盘D,可以将硬盘A和硬盘B设置为RAID1,将硬盘C和硬盘D设置为RAID1,再将硬盘A、硬盘B、硬盘C和硬盘D设置为RAID0,以形成RAID10,及硬盘B为硬盘A的镜像,硬盘D为硬盘C的镜像,硬盘A和硬盘C形成一个逻辑盘,硬盘B和硬盘D形成一个逻辑盘。多媒体存储模块中的硬盘的数量可以根据实际的存储容量需要来设置,RAID10结构中硬盘的组合方式也可以根据实际的数据安全和读写速度需求来设置,不以本实施例为限。在将多个硬盘设置成RAID10结构,以形成该多媒体存储模块后,可以再将多媒体存储模块划分为多个分区,如缓冲区、系统区等,以进行相应数据的存储。
在本实施例中,通过将多媒体存储模块设置为RAID10,RAID0可以对不同的硬盘写入不同的多媒体数据,提高了多媒体存储模块的读写效率,而RAID1具有较高的数据保护和恢复能力,提高了多媒体存储模块的安全性和稳定性。由于RAID10为先将硬盘镜像处理,再条带处理,RAID10中任何一个硬盘失效,还有一个镜像硬盘存在,可靠性和安全性比较高。
还可以将多媒体存储模块设置为RAID01结构,其中,第一存储单元和第二存储单元所形成的阵列结构为RAID1。
具体的,多媒体存储模块为RAID01结构,多媒体存储模块至少包括四个硬盘,分别为硬盘A、硬盘B、硬盘C和硬盘D,首先将硬盘A和硬盘B设置为RAID0,以形成第一逻辑盘,第一存储单元可以为该第一逻辑盘的一部分存储区域。将硬盘C和硬盘D设置为RAID0,以形成第二逻辑盘,第二存储单元可以该第二逻辑盘的一部分存储区域,再将第一逻辑盘和第二逻辑盘设置为RAID1,第一存储单元和第二存储单元即为RAID1,即第二存储单元为第一存储单元的镜像。多媒体存储模块中的硬盘的数量可以根据实际的存储容量需要来设置,RAID01结构中硬盘的组合方式也可以根据实际的数据安全和读写速度需求来设置,不以本实施例为限。
在本实施例中,通过将多媒体存储模块设置为RAID01,RAID0可以对不同的硬盘写入不同的多媒体数据,提高了多媒体存储模块的读写效率,而RAID1具有较高的数据保护和恢复能力,提高了多媒体存储模块的安全性和稳定性。
还可以将多媒体存储模块设置为其他磁盘阵列结构,如RAID3或RAID5等,不以本实施例为限。本实施例多媒体数据存储方法,将需要频繁读写的数据如近期视频监控产生的多媒体数据放在RAID结构的多媒体存储模块上,非频繁读写的数据放置到数据模块上,例如,放置到单盘上,从而避免了由于多媒体数据的频繁读写对数据模块性能的影响而导致其使用寿命的缩短,提高了多媒体数据存储系统的可靠性。
在本实施例中,停止对缓冲区的写数据操作,从缓冲区中读取读数据指令对应的多媒体数据,具体可以包括:
步骤40、若缓冲区第一存储单元中的读数据指令对应的多媒体数据处于写数据状态,则停止对缓冲区第一存储单元的写数据操作,从缓冲区第一存储单元内读取读数据指令对应的多媒体数据。
在本实施例中,步骤40之后还可以包括
步骤50、根据缓冲区第二存储单元中的多媒体数据,对缓冲区第一存储单元进行数据恢复。
在本实施例中,由于第一存储单元和第二存储单元为RAID1,第二存储单元为第一存储单元的镜像,当从多媒体存储模块的缓冲区中读取多媒体数据时,若该多媒体数据所在的文件写句柄未关闭或该多媒体数据所处的SCSI(Small Computer System Interface)块(即SCSI块)还处于写状态时,可以通过先将第一存储单元的写数据操作关闭,使第一存储单元处于可读的状态后,就可以从第一存储模块中读取多媒体数据了。此时,第二存储单元还可以继续写入多媒体数据。当多媒体数据读取完毕后,再将第二存储单元的数据恢复到第一存储单元中。具体可以将第二存储单元中的所有数据复制到第一存储单元中,以实现对第一存储单元的数据恢复。也可以根据停止对第一存储单元的写数据操作过程中,对第二存储单元新写入的数据,对第一存储单元进行数据恢复。解决了由于文件写句柄未关闭或SCSI块还处于写状态而造成的无法及时读取多媒体数据的问题,进一步提高了多媒体数据存储系统的响应速度,也提高了多媒体数据存储系统的稳定性。
在本实施例中,多媒体数据存储方法还可以包括:
步骤60、根据接收到的数据存档指示信息,将缓冲区中的多媒体数据存储到多媒体存储模块的存档区中。
数据存档指示信息具体可以为用户输入的用于缓冲区中数据存档的指示信息。可以根据应用将多媒体数据模块分为多个区,如系统区、缓冲区和存档区等,系统区主要用于存储操作系统和系统运行中所需关键数据,存档区主要用于对多媒体数据进行备份。在实际的视频业务中,多媒体数据的存储通常是按照循环覆盖的方式来运行的,通过将缓冲区中的重要数据存储到存档区中以得到永久的保护。
以下结合图2对本实施例提供的多媒体数据存储方法运作过程作详细地说明,图2为本发明实施例提供的另一种多媒体数据存储方法流程图,如图2所示,本实施例提供的多媒体数据存储方法的运作过程具体为:
步骤11、将多媒体存储模块设置为RAID10结构;
步骤12、将多媒体数据分别写入多媒体存储模块的缓冲区和数据模块;
步骤13、当接收到读数据指令时,从缓冲区查询读数据指令对应的多媒体数据;
步骤14、判断缓冲区中是否包含读数据指令对应的多媒体数据;
若缓冲区包含读数据指令对应的多媒体数据,则进行步骤15、判断缓冲区中的读数据指令对应的多媒体数据是否处于写数据状态;若缓冲区中的读数据指令对应的多媒体数据不处于写数据状态,则进行步骤16、从缓冲区中读取该读数据指令对应的多媒体数据。
若缓冲区中的多媒体数据处于写数据状态,则进行步骤17、停止第一存储单元的写数据操作,从第一存储单元内读取读数据指令对应的多媒体数据。
接下来进行步骤18、根据第二存储单元中的多媒体数据,对第一存储单元进行数据恢复。
若缓冲区不包含读数据指令对应的多媒体数据,则进行步骤19、判断数据模块中是否包含读数据指令对应的多媒体数据;若数据模块中包含读数据指令对应的多媒体数据,则进行步骤21、从数据模块中读取该读数据指令对应的多媒体数据;否则进行步骤22、返回错误报告。以告知用户所查询的多媒体数据不存在或访问的多媒体数据错误。
图3为本发明实施例提供的一种多媒体数据存储系统结构示意图。如图3所示,该多媒体数据存储系统包括多媒体存储模块31、数据模块32、多媒体数据写入模块33和控制模块34,多媒体存储模块31包括缓冲区311,缓冲区311用于存储写入的多媒体数据。数据模块32用于存储写入的多媒体数据。多媒体数据写入模块33用于将多媒体数据分别写入多媒体存储模块31的缓冲区311和数据模块32。控制模块34包括判断执行单元341,判断执行单元341用于当接收到读数据指令时,从缓冲区311查询读数据指令对应的多媒体数据,若缓冲区311包含读数据指令对应的多媒体数据,则停止对缓冲区311的写数据操作,从缓冲区311中读取读数据指令对应的多媒体数据;否则,从数据模块32查询读数据指令对应的多媒体数据,若数据模块32中包含读数据指令对应的多媒体数据,则从数据模块32中读取读数据指令对应的多媒体数据。
具体的,多媒体存储模块31中可以设置系统区312,以存储操作系统和关键数据。多媒体数据写入模块33和控制模块34具体可以在硬件基础上执行操作系统软件程序以实现对多媒体数据写入和读取的相关控制操作。
本实施例提供的多媒体数据存储系统,通过数据模块32和具有缓冲区311的多媒体存储模块31的设置,可以将多媒体数据同时写入数据模块32和多媒体存储模块31的缓冲区311,在接收到读数据指令时,通过首选对缓冲区311进行读数据指令对应的多媒体数据的查询,若所需要读取的多媒体数据存在于缓冲区311中,停止对缓冲区311的写数据操作,从缓冲区311进行多媒体数据的读取,提高了读取速度,进而提高了多媒体数据存储系统的响应速度。
图4为本发明实施例提供的另一种多媒体数据存储系统结构示意图。如图4所示,在本实施例中,该多媒体数据存储系统还包括结构设置模块35,结构设置模块35用于将多媒体存储模块31设置为独立冗余磁盘阵列;其中,所述缓冲区311包括第一存储单元和第二存储单元。
优选地,多媒体存储模块31为独立冗余磁盘阵列RAID10结构,第一存储单元和第二存储单元所形成的阵列结构为RAID1。
具体的,第一存储单元和第二存储单元均可以为不同硬盘的一部分存储区域,硬盘分别用硬盘A和硬盘B来表示,硬盘A和硬盘B所形成的阵列结构为RAID1,其中硬盘B为硬盘A的镜像。在视频监控过程中,将产生的多媒体数据写入多媒体存储模块31时,同时对硬盘A和硬盘B写入相同的多媒体数据。多媒体存储模块31还包括硬盘C,可以将硬盘A、硬盘B和硬盘C设置为RAID10。多媒体存储模块31还可以包括硬盘D,可以将硬盘A和硬盘B设置为RAID1,将硬盘C和硬盘D设置为RAID1,再将硬盘A、硬盘B、硬盘C和硬盘D设置为RAID0,以形成RAID10,及硬盘B为硬盘A的镜像,硬盘D为硬盘C的镜像,硬盘A和硬盘C形成一个逻辑盘,硬盘B和硬盘D形成一个逻辑盘。多媒体存储模块31中的硬盘的数量可以根据实际的存储容量需要来设置,RAID10结构中硬盘的组合方式也可以根据实际的数据安全和读写速度需求来设置,不以本实施例为限。
在本实施例中,通过磁盘阵列结构为RAID10的多媒体存储模块31的设置,RAID0可以对不同的硬盘写入不同的多媒体数据,提高了多媒体存储模块31的读写效率,而RAID1具有较高的数据保护和恢复能力,提高了多媒体存储模块31的安全性和稳定性。
在本实施例中,优选地,多媒体存储模块31为RAID01结构,第一存储单元和第二存储单元所形成的阵列结构为RAID1。
具体的,多媒体存储模块31为RAID01结构,多媒体存储模块31至少包括四个硬盘,分别为硬盘A、硬盘B、硬盘C和硬盘D,首先将硬盘A和硬盘B设置为RAID0,以形成一个逻辑盘,第一存储单元可以为该第一逻辑盘的一部分存储区域,将硬盘C和硬盘D设置为RAID0,以形成一个逻辑盘,第二存储单元可以为该第二逻辑盘的一部分存储区域,再将第一逻辑盘和第二逻辑盘设置为RAID1,即第二存储单元为第一存储单元的镜像。多媒体存储模块31中的硬盘的数量可以根据实际的存储容量需要来设置,RAID01结构中硬盘的组合方式也可以根据实际的数据安全和读写速度需求来设置,不以本实施例为限。
在本实施例中,通过磁盘阵列结构为RAID01的多媒体存储模块31的设置,RAID0可以对不同的硬盘写入不同的多媒体数据,提高了多媒体存储模块31的读写效率,而RAID1具有较高的数据保护和恢复能力,提高了多媒体存储模块31的安全性和稳定性。
在本实施例中,多媒体存储模块31的结构设置可以通过软件设置方式实现,也可以通过硬件设置方式实现。
在本实施例中,将需要频繁读写的数据如近期视频监控产生的多媒体数据放在RAID结构的多媒体存储模块31上,非频繁读写的数据放置到单盘即数据模块32上,避免了由于多媒体数据的频繁读写对单盘性能的影响而导致其使用寿命的缩短,提高了多媒体数据存储系统的可靠性。
在本实施例中,判断执行单元341还用于若缓冲区311第一存储单元中的读数据指令对应的多媒体数据处于写数据状态,则停止对缓冲区311第一存储单元的写数据操作,从缓冲区311第一存储单元内读取读数据指令对应的多媒体数据。
在本实施例中,控制模块34具体还可以包括数据恢复单元342,数据恢复单元342用于根据缓冲区311第二存储单元中的多媒体数据,对缓冲区311第一存储单元进行数据恢复。通过数据恢复单元342的设置,当多媒体存储模块31的缓冲区311中的文件写句柄未关闭或SCSI块还处于写状态时,通过先将第一存储单元的写数据操作关闭,使第一存储单元处于可读的状态后,可以实现从第一存储模块中读取多媒体数据。而此时,第二存储单元还可以继续写入多媒体数据。当多媒体数据读取完毕后,再将第二存储单元的数据恢复到第一存储单元中。解决了由于文件写句柄未关闭或SCSI块还处于写状态而造成的无法及时读取多媒体数据的问题,进一步提高了多媒体数据存储系统的响应速度,也提高了多媒体数据存储系统的稳定性。
在本实施例中,多媒体存储模块31还可以包括存档区313;相应地,控制模块34还包括存档执行单元343,存档执行单元343用于根据接收到的数据存档指示信息,将缓冲区311中的多媒体数据存储到多媒体存储模块31的存档区313中。通过存档区313的设置,可以对重要数据进行永久保存,提高了多媒体数据存储系统的安全性。
图5为本发明实施例提供的多媒体存储模块结构示意图。如图5所示,该多媒体存储模块31以四个硬盘组成的磁盘阵列RAID10为例,四个硬盘分别为硬盘A、硬盘B、硬盘C和硬盘D,每个硬盘的容量例如为400G,将硬盘A、硬盘B、硬盘C和硬盘D设置成RAID10的多媒体存储模块31后,再将该多媒体存储模块31划分成三个分区,分别为系统区312、存档区313和缓冲区311。缓冲区311具体可以为100G,则硬盘A、硬盘B、硬盘C和硬盘D分别为缓冲区311提供25G的容量的存储区域,以组成该缓冲区311。缓冲区311包括第一存储单元和第二存储单元,第一存储单元具体可以包括硬盘A的第一存储区域A1和硬盘C的第一存储区域C1,第二存储单元具体可以包括硬盘B的第一存储区域B1和硬盘D的第一存储区域D1,第一存储单元和第二存储单元所形成的阵列结构为RAID1。操作系统和关键数据存储在系统区312,得到了可靠的保护,多媒体数据按照循环覆盖的方式写入缓冲区311,存档区313保存重要数据。
本发明实施例提供的多媒体数据存储方法及系统,当读数据指令到来时,判断该读数据指令对应的多媒体数据是否还在缓冲区内,若还在,就读取缓冲区中的多媒体数据,根据RAID1的读平衡算法,以RAID0的速度,大大增快了响应速度。而且读取的时候又分为两种情况,若缓冲区的文件或数据块已经完成写入,则可以实现正常读取,若缓冲区的文件和数据块也正在写入,则暂停RAID1中的一块或多块硬盘以提供读取,读取完成后再恢复RAID1。本实施例将需要频繁读写的数据如近期视频监控产生的多媒体数据放在RAID上来保护,非频繁读写的数据放置到单盘即数据模块上,避免了由于多媒体数据的频繁读写对单盘性能的影响而导致其使用寿命的缩短,提高了多媒体数据存储系统的可靠性。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。