CN105404469B - 一种视频数据的存储方法和系统 - Google Patents
一种视频数据的存储方法和系统 Download PDFInfo
- Publication number
- CN105404469B CN105404469B CN201510689794.1A CN201510689794A CN105404469B CN 105404469 B CN105404469 B CN 105404469B CN 201510689794 A CN201510689794 A CN 201510689794A CN 105404469 B CN105404469 B CN 105404469B
- Authority
- CN
- China
- Prior art keywords
- band
- data
- client
- write
- video data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/7605—Television signal recording on discs or drums
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种视频数据的存储方法和系统,应用于包括管理节点、存储节点、写客户端和读客户端的分布式视频监控系统中,该方法包括:管理节点接收来自写客户端的条带资源请求消息,并为写客户端分配条带,所述条带中包括至少一个用于存储校验块的数据块;管理节点向所述条带对应的多个存储节点发送数据块资源请求消息,接收各存储节点返回的携带数据块信息的数据块资源响应消息;管理节点利用数据块信息确定所述条带的信息,并通过条带资源响应消息将所述条带的信息发送给写客户端,写客户端利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中写入视频数据。通过本发明的技术方案,支持高写入性能、高空间利用率、高重建性能。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种视频数据的存储方法和系统。
背景技术
EC(Erasure Code,纠删码)作为一种前向错误纠正技术,主要应用在网络传输中避免数据的丢失。存储系统利用EC来提高存储可靠性。EC一般的实现方式如下:将要存储在系统中的文件分割成k块,然后对其编码得到n个文件分片(n>k),并对n个文件分片进行分布式存储。基于此,只需要存在k’个可用的文件分片,就可以重构出原始文件,从而恢复出原始文件。纠删码的空间复杂度和数据冗余度较低,若文件分割成k块,编码后得到n个文件分片,则需要存放在n个系统节点上,消耗n/k倍的存储资源。
目前的EC存储方案均是针对互联网行业的存储特点设计的存储方案,其数据存储是一种少写多读模型,即读数据IO(Input Output)比写数据IO更多,且保障数据读取性能更重要。同时,数据的冷热区分比较明显,新数据的访问热度较高,一段时间(比如1个月)之前的老数据的访问热度较低。
而在视频监控存储领域,其存储特点与互联网行业的存储特点有明显不同,其数据存储是一种多写少读模型,即主要以前端设备的视频数据的存储为主,视频数据的读取相对较少,前端设备一般会以7×24小时连续的写入视频数据。同时,视频数据的冷热区分并不明显,视频数据的日常访问较少,只有案件发生之后,用户才会对案件相关的视频数据进行调阅和备份。
因此,目前的针对互联网行业的EC存储方案并不适用于视频监控存储领域,有必要为视频监控存储领域设计一种EC存储方案。
发明内容
本发明提供一种视频数据的存储方法,应用于包括管理节点、存储节点、写客户端和读客户端的分布式视频监控系统中,所述方法包括:
所述管理节点接收来自写客户端的条带资源请求消息,并为所述写客户端分配条带,所述条带中包括至少一个用于存储校验块的数据块;
所述管理节点向所述条带对应的多个存储节点发送数据块资源请求消息,并接收各存储节点返回的携带数据块信息的数据块资源响应消息;
所述管理节点利用数据块信息确定所述条带的信息,并通过条带资源响应消息将所述条带的信息发送给所述写客户端,由所述写客户端利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中写入视频数据。
所述管理节点为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体包括:
所述管理节点从所述条带资源请求消息中获得所述写客户端所在的数据写入设备的设备标识,并利用所述设备标识查询预先配置的冗余保护表,得到对应的冗余保护数量,并为所述写客户端分配包括所述冗余保护数量个用于存储校验块的数据块的条带;其中,所述冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
所述管理节点为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体包括:
所述管理节点从所述条带资源请求消息中获得所述写客户端的客户端标识,并利用所述客户端标识查询预先配置的全局哈希表,得到对应的条带标识;其中,所述全局哈希表用于维护客户端标识与条带标识之间的对应关系;
如果所述条带标识对应的条带中未写满视频数据,则所述管理节点将所述条带标识对应的条带作为为所述写客户端分配的条带;
如果所述条带标识对应的条带中已经写满视频数据或者所述全局哈希表中没有所述客户端标识对应的条带标识,则所述管理节点选择一个空闲状态的条带作为为所述写客户端分配的条带,并在所述全局哈希表中记录所述客户端标识与所述当前选择的条带的条带标识之间的对应关系。
所述写客户端在所述条带对应的多个存储节点的相应数据块中写入视频数据的过程,具体包括:
所述写客户端将待写入存储节点的视频数据写入到写缓存中;
如果所述写缓存中写入的视频数据在预设时间内达到指定数据量,则所述写客户端采用整条带写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据;
如果所述写缓存中写入的视频数据在预设时间内未达到指定数据量,则所述写客户端采用重构写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据。
所述方法进一步包括:
所述管理节点接收来自读客户端的携带分片信息的文件读取请求消息;
所述管理节点利用所述分片信息确定对应的条带的文件位置信息;
所述管理节点通过文件读取响应消息将所述条带的文件位置信息发送给所述读客户端,由所述读客户端利用所述条带的文件位置信息,从所述条带对应的多个存储节点的相应数据块中读取视频数据。
所述读客户端从所述条带对应的多个存储节点的相应数据块中读取视频数据的过程,具体包括:所述读客户端利用所述条带的文件位置信息,查询所述条带对应的多个存储节点的相应数据块中是否存在损坏的数据块;
如果所述条带对应的所有数据块均未损坏,则所述读客户端从所述条带对应的多个存储节点的相应数据块中读取视频数据;
如果所述条带对应的所有数据块中存在损坏的数据块,则所述读客户端从所述条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
所述方法进一步包括:所述管理节点按照条带对应的多个存储节点的相应数据块中写入的视频数据的时间先后顺序,对所有条带进行排序;
基于所有条带的排序结果,所述管理节点定期删除前面N个条带对应的多个存储节点的相应数据块中写入的视频数据。
所述方法进一步包括:
所述管理节点获得视频数据的存储类型,当所述视频数据的存储类型为纠删码存储类型时,则所述管理节点拒绝执行所有条带的同步处理。
本发明提供一种视频数据的存储系统,包括:管理节点、存储节点、写客户端和读客户端,其中,所述管理节点包括接收模块、分配模块、发送模块,所述写客户端包括写入模块,所述存储节点包括存储模块;
所述接收模块,用于接收来自写客户端的条带资源请求消息;所述分配模块,用于为所述写客户端分配条带,所述条带中包括至少一个用于存储校验块的数据块;所述发送模块,用于向所述条带对应的多个存储节点发送数据块资源请求消息;所述接收模块,用于接收各存储节点返回的携带数据块信息的数据块资源响应消息;所述发送模块,用于利用数据块信息确定所述条带的信息,通过条带资源响应消息将所述条带的信息发送给所述写客户端;
所述写入模块,用于从条带资源响应消息中获得条带的信息,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中写入视频数据;
所述存储模块,用于存储所述写客户端写入的视频数据。
所述分配模块,具体用于在为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得写客户端所在的数据写入设备的设备标识,并利用所述设备标识查询预先配置的冗余保护表,得到对应的冗余保护数量,并为写客户端分配包括所述冗余保护数量个用于存储校验块的数据块的条带;所述冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
所述分配模块,具体用于在为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得写客户端的客户端标识,并利用所述客户端标识查询预先配置的全局哈希表,得到对应的条带标识;所述全局哈希表用于维护客户端标识与条带标识之间的对应关系;如果所述条带标识对应的条带中未写满视频数据,则将所述条带标识对应的条带作为为写客户端分配的条带;如果所述条带标识对应的条带中已经写满视频数据或者所述全局哈希表中没有所述客户端标识对应的条带标识,则选择一个空闲状态的条带作为为写客户端分配的条带,在所述全局哈希表中记录所述客户端标识与当前选择的条带的条带标识之间的对应关系。
所述写入模块,具体用于在所述条带对应的多个存储节点的相应数据块中写入视频数据的过程中,将待写入存储节点的视频数据写入到写缓存中;如果所述写缓存中写入的视频数据在预设时间内达到指定数据量,采用整条带写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据;如果所述写缓存中写入的视频数据在预设时间内未达到指定数据量,采用重构写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据。
所述接收模块,还用于接收来自读客户端的携带分片信息的文件读取请求消息;所述发送模块,还用于利用所述分片信息确定对应的条带的文件位置信息,通过文件读取响应消息将所述条带的文件位置信息发送给读客户端;
所述读客户端包括读取模块,所述读取模块,用于利用所述条带的文件位置信息,从所述条带对应的多个存储节点的相应数据块中读取视频数据。
所述读取模块,具体用于在从所述条带对应的多个存储节点的相应数据块中读取视频数据的过程中,利用所述条带的文件位置信息,查询所述条带对应的多个存储节点的相应数据块中是否存在损坏的数据块;如果所述条带对应的所有数据块均未损坏,则从所述条带对应的多个存储节点的相应数据块中读取视频数据;如果所述条带对应的所有数据块中存在损坏的数据块,则从所述条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
基于上述技术方案,本发明实施例中,针对视频监控存储领域的存储特点,提出一种EC存储方案,支持高写入性能、高空间利用率、高重建性能。其中,基于数据写入设备的视频数据在7×24小时连续写入的特点,采用以条带为单位的连续存储空间分配方式,实现了数据写入的高性能,并保障了存储空间的高利用率,而且不会出现存储空间碎片化的问题。
附图说明
图1是本发明一种实施方式中的视频数据的存储方法的流程图;
图2是本发明一种实施方式中的分布式视频监控系统的结构示意图;
图3是本发明一种实施方式中的不同的冗余保护比的示意图;
图4是本发明一种实施方式中的数据写入流程的示意图;
图5是本发明一种实施方式中的数据读取流程的示意图;
图6是本发明一种实施方式中的视频数据的存储系统的结构图。
具体实施方式
针对现有技术中存在的问题,本发明实施例中提出一种视频数据的存储方法,该方法应用于包括管理节点、存储节点、写客户端和读客户端的分布式视频监控系统中,如图1所示,该方法具体可以包括以下步骤:
步骤101,管理节点接收来自写客户端的条带资源请求消息,并为该写客户端分配条带,且该条带中包括至少一个用于存储校验块的数据块。
本发明实施例中,管理节点为写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体可以包括但不限于如下方式:管理节点从该条带资源请求消息中获得该写客户端所在的数据写入设备的设备标识,并利用该设备标识查询预先配置的冗余保护表,得到该设备标识对应的冗余保护数量,并为该写客户端分配包括该冗余保护数量个用于存储校验块的数据块的条带。其中,该冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置(如银行、学校等)的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
本发明实施例中,管理节点为写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体可以包括但不限于如下方式:管理节点从该条带资源请求消息中获得该写客户端的客户端标识,并利用该客户端标识查询预先配置的全局哈希表,得到该客户端标识对应的条带标识。其中,该全局哈希表用于维护客户端标识与条带标识之间的对应关系。进一步的,如果该条带标识对应的条带中未写满视频数据,则管理节点将该条带标识对应的条带作为为该写客户端分配的条带。如果该条带标识对应的条带中已经写满视频数据或者全局哈希表中没有该客户端标识对应的条带标识,则管理节点选择一个空闲状态的条带作为为该写客户端分配的条带,并在全局哈希表中记录该客户端标识与当前选择的条带的条带标识之间的对应关系。
步骤102,管理节点向条带对应的多个存储节点发送数据块资源请求消息,并接收各存储节点返回的携带数据块信息的数据块资源响应消息。
步骤103,管理节点利用该数据块信息确定条带的信息,并通过条带资源响应消息将该条带的信息发送给写客户端,由该写客户端利用该条带的信息在条带对应的多个存储节点的相应数据块中写入视频数据。
本发明实施例中,写客户端利用该条带的信息在条带对应的多个存储节点的相应数据块中写入视频数据的过程,具体可以包括但不限于如下方式:写客户端将待写入存储节点的视频数据写入到写缓存中。进一步的,如果写缓存中写入的视频数据在预设时间内达到指定数据量,则写客户端采用整条带写模式,并利用条带的信息在条带对应的多个存储节点的相应数据块中,写入该写缓存中的视频数据。如果写缓存中写入的视频数据在预设时间内未达到指定数据量,则写客户端采用重构写模式,并利用条带的信息在条带对应的多个存储节点的相应数据块中,写入该写缓存中的视频数据。
上述过程为视频数据的写入过程,在视频数据的读取过程中,本发明实施例中,管理节点可以接收来自读客户端的携带分片信息的文件读取请求消息,并利用该分片信息确定对应的条带的文件位置信息,并通过文件读取响应消息将该条带的文件位置信息发送给读客户端,由读客户端利用该条带的文件位置信息,从条带对应的多个存储节点的相应数据块中读取视频数据。
进一步的,读客户端从条带对应的多个存储节点的相应数据块中读取视频数据的过程,具体可以包括但不限于如下方式:读客户端利用条带的文件位置信息,查询条带对应的多个存储节点的相应数据块中是否存在损坏的数据块。如果条带对应的所有数据块均未损坏,则读客户端从条带对应的多个存储节点的相应数据块中读取视频数据。如果条带对应的所有数据块中存在损坏的数据块,则读客户端从条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
本发明实施例中,管理节点还可以按照条带对应的多个存储节点的相应数据块中写入的视频数据的时间先后顺序,对所有条带进行排序。进一步的,基于所有条带的排序结果,管理节点可以定期(如每隔72小时)删除前面N个(如16个)条带对应的多个存储节点的相应数据块中写入的视频数据。
本发明实施例中,管理节点还可以获得视频数据的存储类型,当视频数据的存储类型为纠删码存储类型时,管理节点拒绝执行所有条带的同步处理。
基于上述技术方案,本发明实施例中,针对视频监控存储领域的存储特点,提出一种EC存储方案,支持高写入性能、高空间利用率、高重建性能。其中,基于数据写入设备的视频数据在7×24小时连续写入的特点,采用以条带为单位的连续存储空间分配方式,实现了数据写入的高性能,并保障了存储空间的高利用率,而且不会出现存储空间碎片化的问题。
以下结合具体的应用场景,对本发明实施例的上述过程进行详细说明。
一、系统结构。如图2所示,为本发明实施例中提出的分布式视频监控系统的结构示意图,该分布式视频监控系统可以包括管理节点、存储节点、写客户端和读客户端。其中,管理节点可以部署在管理服务器(如VM(Video Management,视频管理)服务器)上。存储节点可以部署在IPSAN(Internet Protocol Storage Area Network,网络互连协议存储局域网络)、NAS(Network Attached Storage,网络附属存储)等存储设备上,且存储节点的数量可以为多个。写客户端可以部署在前端设备、流转存服务器等数据写入设备上。读客户端可以部署在录像回放服务器、录像下载服务器等数据读取设备上。
管理节点,用于进行全局元数据管理与信令处理,包括但不限于如下功能:全局元数据管理,该全局元数据包括但不限于:目录元数据、文件及分片元数据、条带元数据、存储节点元数据、界面配置元数据等。存储节点的注册、保活、配置下发等。局部重建、整节点重建的启动、进度跟踪、恢复等。集群存储空间的循环满覆盖。写客户端/读客户端的目录创建与删除、文件创建与删除、条带空间分配、文件读取、文件删除等信令消息的支持。
存储节点,用于存储视频数据,包括但不限于如下功能:发起与管理节点之间的注册、保活,并处理管理节点下发的各种类型消息。存储节点自身的存储资源管理、本地文件系统管理。在管理节点的调度下,执行重建过程。
写客户端,用于在存储节点中写入视频数据,包括但不限于如下功能:条带的写缓存、视频数据的写入(支持整条带写的视频数据写入模式、重构写的视频数据写入模式)。条带的分配和管理。文件数据的写入,支持文件的条带分片、纠删码的计算、条带的多节点的视频数据写入等。
读客户端,用于从存储节点中读取视频数据,包括但不限于如下功能:读文件数据,支持文件分片的多存储节点的读取与组装。对于条带冗余能力范围内的读失败,读取条带其它部分的数据,基于校验码算法恢复数据。
二、基于条带的存储空间的布局与编码。
本发明实施例中,所有存储节点的存储空间采用RAID(Redundant Arrays ofIndependent Disks,独立冗余磁盘阵列)的逻辑条带方式进行管理。条带的单节点数据块大小与存储节点的实际数据块大小相同,可以为64M字节。
本发明实施例中,可以采用同步编码方式进行编码,即在视频数据写入时进行编码,同步编码方式的编码算法可以采用RS(Reed solomon,前向纠错的信道编码方式)编码,以条带作为纠删码保护的逻辑空间单位。
本发明实施例中,每个条带的数据与校验的比例,支持基于不同数据写入设备(如前端设备)进行区分配置,位于特定位置(如银行、学校等)的数据写入设备(视频数据的重要性较高)的冗余保护数量大于位于非特定位置(如公路等)的数据写入设备(视频数据的重要性较低)的冗余保护数量。
如图3所示,为不同的冗余保护比的示意图。假设存储节点的总数为N,则针对位于非特定位置的数据写入设备,其冗余保护数量可以为1,此时条带数据冗余保护比为N-1:1,即条带中只有1个校验块,且最多1个数据块的视频数据丢失之后,可以通过其它数据块进行恢复。此外,针对位于特定位置的数据写入设备,可以配置更高的数据冗余保护比,如其冗余保护数量可以为2,此时条带数据冗余保护比为N-2:2,即条带中有2个校验块,且最多2个数据块的视频数据丢失之后,可以通过其它数据块进行恢复。
三、各级元数据的结构设计。
1、文件、条带、存储节点等元数据之间的关联设计。在文件元数据中,通过文件分片信息与条带及其数据块进行关联。在每个文件分片信息中,记录在文件中的位置、大小,并记录该文件分片所在条带标识、所在条带数据块索引、在数据块中偏移等。在条带元数据中,通过文件引用计数记录存储文件数量,在数据块中记录所在存储节点的索引、所映射的实际数据块标识。
2、条带逻辑数据块与存储节点实际数据块的关联设计。在写客户端申请条带时,管理节点根据条带元数据的空闲/占用状态条带bitmap(位图),分配空闲状态的条带。对于新分配的空闲状态条带,管理节点向条带的每个数据块所在存储节点,申请实际数据块。存储节点收到申请消息后,在存储资源中完成本地数据块的分配,向管理节点返回实际数据块标识(可以采用存储资源编号+资源中的数据块编号的组合,比如前4位为存储资源编号,后28位为资源内的数据块编号),管理节点将实际数据块标识记录到条带对应数据块的结构中。在管理节点返回给写客户端的新分配条带信息中,携带条带各数据块的实际数据块标识。在写客户端执行文件数据写入/读客户端执行文件数据读取时,在发送给存储节点的请求消息中,指定实际数据块标识、读写位置、大小。存储节点收到请求消息后,对实际数据块进行读写操作。
3、各级元数据的具体结构设计。
文件元数据结构,文件元数据结构具体可以包括但不限于:文件Handle(句柄,4字节);文件名(256字节);文件大小(4字节);文件创建时间(4字节);所属目录的标识(4字节);文件分片的数量(4字节)。单个文件的所有文件分片的信息,其最多支持32个:分片在文件中的偏移(4字节);分片的大小(4字节);分片所在条带的标识(4字节);分片所在条带的数据块索引(4字节);分片在条带数据块中的偏移(4字节)。
条带元数据结构,条带元数据结构具体可以包括但不限于:条带总数(4字节);条带数据块的大小(4字节),条带数据块的大小与存储节点的数据块大小保持一致,比如64M;占用状态的条带总数(4字节);重建状态标识(4字节),默认取值为0,表示未重建,当取值为1时,表示局部重建,当取值为2时,表示整机重建;处于不同步状态的条带数量(4字节),用于局部重建;整机重建的当前已完成条带标识(4字节),用于整机重建的恢复;待整机重建的条带总数(4字节);重建完成的条带数量(4字节);空闲/占用状态条带的bitmap(64K字节),用于条带分配,最多支持512K个;不同步状态条带的bitmap(64K字节),用于局部重建,最多支持512K个。所有处于占用状态的条带信息,最多支持512K个条带:条带标识(4字节),条带标识即存储空间按照横向条带方式划分的编号;分配条带的时间戳(4字节);占用条带的设备标识(4字节);条带的文件引用计数(4字节);条带已写入数据大小(4字节),用于判断条带是否写满;条带已同步数据大小(4字节),全部节点正确写入数据的条带数据大小;条带的数据块数量(4字节)。单个条带的所有数据块信息,最多支持32个数据块:数据块类型(2字节),标识是校验块,还是数据块;数据块状态(2字节),正常或者异常,异常一般是数据块对应的存储节点故障;数据块所在存储节点的标识(4字节);所绑定的存储节点的实际数据块标识(4字节)。
集群存储节点的元数据结构,集群存储节点的元数据结构具体可以包括但不限于:集群标识(4字节);集群模式(4字节),正常模式、退化模式(存在存储节点故障);集群存储节点数量(4字节)。集群所有存储节点的信息,最多支持32个节点:设备标识(4字节);设备IP地址(4字节);通讯端口(2字节);设备在集群中的位置(2字节);设备状态(2字节),在线、离线;设备重建状态(2字节),用于整机重建,未重建、正在重建。
四、数据写入流程,如图4所示,为数据写入流程的示意图。
步骤401,写客户端在创建文件之后,在写入新文件数据之前,向管理节点发送条带资源请求消息。其中,该条带资源请求消息中至少可以携带写客户端的客户端标识和写客户端所在的数据写入设备的设备标识。
步骤402,管理节点接收来自写客户端的条带资源请求消息,并为该写客户端分配条带,且该条带中包括至少一个用于存储校验块的数据块。
其中,管理节点在接收到来自写客户端的条带资源请求消息之后,如果集群处于退化模式,即集群中的多个存储节点中有存储节点发生故障,则管理节点先判断集群损坏的存储节点数量是否大于写客户端所在的数据写入设备的冗余保护数量,如果大于,则直接向写客户端返回申请条带失败的消息,如果不大于,则为该写客户端分配条带。例如,针对位于非特定位置的数据写入设备,其冗余保护数量为1,则判断集群损坏的存储节点数量是否大于冗余保护数量1。针对位于特定位置的数据写入设备,其冗余保护数量为2,则判断集群损坏的存储节点数量是否大于冗余保护数量2。
本发明实施例中,管理节点为写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体可以包括但不限于如下方式:管理节点从该条带资源请求消息中获得该写客户端所在的数据写入设备的设备标识,并利用该设备标识查询预先配置的冗余保护表,得到该设备标识对应的冗余保护数量,并为该写客户端分配包括该冗余保护数量个用于存储校验块的数据块的条带。其中,该冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置(如银行、学校等)的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
基于上述方式,对于处于不同位置的数据写入设备的视频数据,可以以条带为单位支持不同的冗余保护比,这样,对于重要位置的数据写入设备的数据,可以采用高冗余保护,对于非重要位置的数据写入设备的数据,可以采用低冗余保护,从而在数据保护的灵活性上,更能够满足监控存储的需求。
本发明实施例中,管理节点为写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体可以包括但不限于如下方式:管理节点从该条带资源请求消息中获得该写客户端的客户端标识,并利用该客户端标识查询预先配置的全局哈希表,得到该客户端标识对应的条带标识。其中,该全局哈希表用于维护客户端标识与条带标识之间的对应关系。进一步的,如果该条带标识对应的条带中未写满视频数据,则管理节点将该条带标识对应的条带作为为该写客户端分配的条带。如果该条带标识对应的条带中已经写满视频数据或者全局哈希表中没有该客户端标识对应的条带标识,则管理节点选择一个空闲状态的条带作为为该写客户端分配的条带,并在全局哈希表中记录该客户端标识与当前选择的条带的条带标识之间的对应关系。
其中,对于每个写客户端,以客户端标识为索引建立条带分配的全局哈希表,该全局哈希表用于记录每个写客户端最新分配的条带标识。在写客户端申请新条带时,管理节点先查询这个全局哈希表,如果之前分配给该写客户端的条带的已写入数据大小还小于该条带大小,则将之前分配的条带再次分配给该写客户端。如果全局哈希表中查不到条带、或者之前已分配的条带已经写满数据,则从空闲/占用状态条带的bitmap中,找到一个空闲状态的条带。如果没有空闲条带,则直接向写客户端返回申请条带失败的消息。对于新找到的、且未向存储节点申请实际数据块的条带,执行步骤403。
步骤403,管理节点向条带对应的多个存储节点(即条带的各数据块对应的存储节点)发送数据块资源请求消息(用于请求分配实际数据块)。
步骤404,各存储节点接收到数据块资源请求消息之后,在本地存储资源中申请数据块,并向管理节点返回携带数据块信息的数据块资源响应消息。
本发明实施例中,数据块信息具体可以包括但不限于实际数据块标识,且该实际数据块标识可以采用存储资源编号+资源中的数据块编号的组合,比如前4位为存储资源编号,后28位为资源内的数据块编号。
步骤405,管理节点接收各存储节点返回的携带数据块信息(即实际数据块标识)的数据块资源响应消息,并利用该数据块信息确定条带的信息,并通过条带资源响应消息将该条带的信息发送给写客户端。
其中,管理节点在接收到携带实际数据块标识的数据块资源响应消息后,将实际数据块标识设置到条带对应的数据块结构中。对于新分配的条带,管理节点根据数据写入设备的冗余保护数量,在条带元数据中设置对应的数据块类型、数据块状态等信息,其中校验块的数量等于数据写入设备的冗余保护数量。管理节点在将条带资源响应消息成功发送给写客户端之后,还可以将条带标识对应的空闲/占用状态条带bitmap比特位,置位为1。
其中,条带资源响应消息携带的条带的信息包括但不限于以下之一或任意组合:条带标识;条带数据块大小;条带可写入数据的位置;条带的数据块数量;条带的各数据块信息数组:数据块类型,如校验、数据;数据块状态,如正常、异常;所在存储节点的IP地址、端口;所映射实际数据块标识。
其中,管理节点在通过条带资源响应消息将条带的信息发送给写客户端之后,写客户端可能会向管理节点发送分配成功应答消息,如果管理节点接收到分配成功应答消息,则管理节点根据该写客户端的客户端标识,找到全局哈希表中该条带的对应记录,并更新最新分配的条带标识。此外,管理节点还可以将该条带标识对应的不同步条带bitmap的比特位,置位为1。
步骤406,写客户端利用条带的信息(即条带资源响应消息中携带的条带的信息)在条带对应的多个存储节点的相应数据块中写入视频数据。
其中,写客户端在接收到来自管理节点的条带资源响应消息之后,将条带的信息写入本地文件,在条带的信息写入本地文件成功之后,向管理节点发送分配成功应答消息。在后续写入视频数据时,优先使用本地文件中记录的条带的存储空间,在该存储空间未写满之前,不向管理节点申请新条带。
本发明实施例中,写客户端利用条带的信息在条带对应的多个存储节点的相应数据块中写入视频数据的过程,具体可以包括但不限于如下方式:写客户端在申请到条带资源之后,为了节省计算校验和的开销(减少读取老数据的开销),写客户端可以先将待写入存储节点的视频数据先写入到写缓存中。在视频数据写入写缓存成功之后,则写客户端向上层应用返回写入成功。如果写缓存中写入的视频数据在预设时间内达到指定数据量,则写客户端采用整条带写模式,并利用条带的信息在条带对应的多个存储节点的相应数据块中,写入该写缓存中的视频数据。如果写缓存中写入的视频数据在预设时间内未达到指定数据量,则写客户端采用重构写模式,并利用条带的信息在条带对应的多个存储节点的相应数据块中,写入该写缓存中的视频数据。
其中,预设时间可以根据实际经验设置,如16秒,指定数据量可以根据实际经验设置,如指定数据量可以为64K*N(N为条带中的数据块数量)。
其中,写客户端在采用整条带写模式写入视频数据时,直接利用写缓存中的视频数据计算条带的校验数据,且将校验数据写入到存储节点的用于存储校验块的数据块中。写客户端在采用重构写模式写入视频数据时,对于没有新写入数据的数据块,从对应存储节点读取老数据,并利用写缓存中的视频数据和读取的老数据计算条带的校验数据,且将校验数据写入到存储节点的用于存储校验块的数据块中。进一步的,在计算条带的校验数据时,可以基于校验块的数量和相应的校验算法计算条带的校验数据,该过程不再赘述。
其中,在利用条带的信息在多个存储节点的相应数据块中,写入该写缓存中的视频数据的过程中,写客户端可以根据条带的信息中的数据块、校验块的位置,对于状态为正常的数据块,将相应数据写入到对应的存储节点。
本发明实施例中,针对条带数据写入的状态管理过程,管理节点通过条带元数据中的不同步条带bitmap,来管理条带数据写入的状态:在给写客户端分配64M条带时,管理节点根据条带标识,将不同步条带bitmap的对应比特位置位为1。在写客户端完成条带的64K数据写入时,通知管理节点,管理节点更新条带的已同步数据大小、已写入数据大小。在完成一个文件的所有分片写入之后,写客户端将文件分片写入结果通知到管理节点,管理节点更新文件索引节点中的分片元数据。在写客户端完成整个64M条带的全部数据写入时,通知到管理节点,管理节点根据条带标识,将不同步条带bitmap的对应比特位,清除为0,并清除条带分配全局哈希表中该客户端标识的对应记录。在写客户端的64K数据写入过程中,如果某个或者多个存储节点写入失败,将相关信息通知给管理节点,管理节点将条带对应数据块状态置为异常,同时,条带元数据中的不同步条带bitmap的对应比特位,保持置位为1,这样,在后续系统启动重建时,可以迅速找到需要重建的条带。
五、数据读取流程,如图5所示,为数据读取流程的示意图。
步骤501,读客户端在接收到上层应用的文件数据读取请求时,向管理节点发送携带分片信息的文件读取请求消息。其中,该分片信息具体可以包括但不限于:文件handle、读取起始位置、读取大小等信息。
步骤502,管理节点接收来自读客户端的携带分片信息的文件读取请求消息,在收到文件读取请求消息后,利用该分片信息确定对应的条带的文件位置信息,通过文件读取响应消息将该条带的文件位置信息发送给读客户端。
其中,条带的文件位置信息具体可以包括但不限于以下之一或者任意组合:条带标识、实际数据块标识、数据块中的偏移位置(即待读取的起始位置)和读取大小、条带状态、所在的存储节点的IP地址等信息。
其中,管理节点在接收到文件读取请求消息后,可以根据文件handle找到对应的文件索引节点,并根据文件索引节点中各文件分片的数据以及读取起始位置、读取大小等信息,得到所有文件分片所在的条带的文件位置信息。
其中,管理节点在接收到文件读取请求消息后,如果获知对应的条带中存在损坏状态的数据块、且条带中损坏的数据块的数量大于条带的校验块的数量,则管理节点向读客户端返回读取失败的文件读取响应消息。
步骤503,读客户端利用条带的文件位置信息(即文件读取响应消息中携带的信息),从条带对应的多个存储节点的相应数据块中读取视频数据。
本发明实施例中,读客户端从条带对应的多个存储节点的相应数据块中读取视频数据,具体可以包括但不限于如下方式:读客户端利用条带的文件位置信息,查询条带对应的多个存储节点的相应数据块中是否存在损坏的数据块。如果条带对应的所有数据块均未损坏,则读客户端从条带对应的多个存储节点的相应数据块中读取视频数据。如果条带对应的所有数据块中存在损坏的数据块,则读客户端从条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
其中,读客户端在接收到文件读取响应消息后,如果存在损坏状态的文件分片,则向条带的未损坏的存储节点发送视频数据的读请求消息,在所有存储节点的视频数据读取成功之后,基于校验算法进行计算,恢复出损坏数据块上的视频数据。如果不存在损坏状态的文件分片,则向条带的所有存储节点发送视频数据的读请求消息,从所有存储节点读取视频数据。
其中,读客户端在向条带的存储节点发送视频数据的读请求消息之后,在接收到存储节点的携带视频数据的应答消息之后,根据该视频数据在文件待读取数据中的位置、大小等信息,将该视频数据拷贝到应答缓存的对应位置。在凑齐本次读取的视频数据之后,读客户端将视频数据返回给上层应用。
六、条带资源的回收。管理节点可以按照条带对应的多个存储节点的相应数据块中写入的视频数据的时间先后顺序,对所有条带进行排序。基于所有条带的排序结果,管理节点可以定期(如每隔72小时)删除前面N个(如16个)条带对应的多个存储节点的相应数据块中写入的视频数据。
其中,基于视频监控存储领域的存储特点,写客户端在存储视频数据时,是按照时间顺序存储视频数据的,即一个条带中存储的是时间接近的视频数据。而且,不会出现用户随机删除文件的情况,只支持系统自身的满覆盖删除,在满覆盖删除文件时,一般是按照时间(如日期)顺序删除最老时间的文件。基于此,本发明实施例中,管理节点可以定期(如72小时)删除一定数量的最老时间文件,进行存储空间的回收。而且,每次删除的文件至少达到一定数量(如16个)条带的存储空间。这样,即使由于文件大小与条带大小不对齐,存在少量大部分空间空闲的条带以及小部分空间占用的条带,由于这种条带的数量会很少,因此下一次满覆盖也会从这个条带开始执行。
基于上述方式,考虑到存储节点只会通过循环覆盖方式删除老数据的特点,采用整条带的分配与回收方式,一方面简化了空间管理机制,同时保障了存储空间的高利用率,而且不会出现存储空间碎片化的问题。
七、初始化阶段的同步。管理节点还可以获得视频数据的存储类型,当视频数据的存储类型为纠删码存储类型时,拒绝执行所有条带的同步处理。
其中,由于整个集群的存储空间巨大,如果在初始化阶段执行对所有条带的同步处理,将造成初始化阶段的系统同步时间较长等问题。为了解决上述问题,本发明实施例中,放弃初始化阶段对全部存储空间的同步处理。
基于视频监控存储领域的存储特点,写客户端会在存储节点连续写入视频数据,且在写客户端的数据写入流程中,只支持整条带写和重构写等两种写模式,不采用读改写模式。因此,即使放弃初始化阶段对全部存储空间的同步处理,也可以有效的避免条带的校验与数据的不一致问题。
基于上述技术方案,本发明实施例中,针对视频监控存储领域的存储特点,提出一种EC存储方案,支持高写入性能、高空间利用率、高重建性能。其中,基于数据写入设备的视频数据在7×24小时连续写入的特点,采用以条带为单位的连续存储空间分配方式,实现了数据写入的高性能,并保障了存储空间的高利用率,而且不会出现存储空间碎片化的问题。
基于与上述方法同样的构思,如图6所示,本发明实施例提出一种视频数据的存储系统,包括:管理节点10、存储节点20、写客户端30和读客户端40,其中,所述管理节点10包括接收模块11、分配模块12、发送模块13,所述写客户端30包括写入模块31,所述存储节点20包括存储模块21。
所述接收模块11,用于接收来自所述写客户端30的条带资源请求消息;所述分配模块12,用于为所述写客户端30分配条带,其中,所述条带中包括至少一个用于存储校验块的数据块;所述发送模块13,用于向所述条带对应的多个存储节点20发送数据块资源请求消息;所述接收模块11,还用于接收各存储节点20返回的携带数据块信息的数据块资源响应消息;所述发送模块13,还用于利用所述数据块信息确定所述条带的信息,并通过条带资源响应消息将所述条带的信息发送给所述写客户端30;
所述写入模块31,用于从条带资源响应消息中获得条带的信息,利用条带的信息在所述条带对应的多个存储节点20的相应数据块中写入视频数据;
所述存储模块21,用于存储所述写客户端30写入的视频数据。
本发明实施例中,所述分配模块12,具体用于在为所述写客户端30分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得所述写客户端30所在的数据写入设备的设备标识,并利用所述设备标识查询预先配置的冗余保护表,得到所述设备标识对应的冗余保护数量,并为所述写客户端30分配包括所述冗余保护数量个用于存储校验块的数据块的条带;其中,所述冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
本发明实施例中,所述分配模块12,具体用于在为所述写客户端30分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得所述写客户端30的客户端标识,并利用所述客户端标识查询预先配置的全局哈希表,得到所述客户端标识对应的条带标识;其中,所述全局哈希表用于维护客户端标识与条带标识之间的对应关系;如果所述条带标识对应的条带中未写满视频数据,则将所述条带标识对应的条带作为为所述写客户端30分配的条带;如果所述条带标识对应的条带中已经写满视频数据或者所述全局哈希表中没有所述客户端标识对应的条带标识,则选择一个空闲状态的条带作为为所述写客户端30分配的条带,在所述全局哈希表中记录所述客户端标识与当前选择的条带的条带标识之间的对应关系。
本发明实施例中,所述写入模块31,具体用于在所述条带对应的多个存储节点20的相应数据块中写入视频数据的过程中,首先将待写入存储节点20的视频数据写入到相应的写缓存中;进一步的,如果所述写缓存中写入的视频数据在预设时间内达到指定数据量,则采用整条带写模式,利用所述条带的信息在所述条带对应的多个存储节点20的相应数据块中,写入所述写缓存中的视频数据;如果所述写缓存中写入的视频数据在预设时间内未达到指定数据量,则采用重构写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据。
本发明实施例中,所述接收模块11,还用于接收来自读客户端40的携带分片信息的文件读取请求消息;所述发送模块13,还用于利用所述分片信息确定对应的条带的文件位置信息,并通过文件读取响应消息将所述条带的文件位置信息发送给读客户端40。进一步的,所述读客户端40具体包括读取模块41,所述读取模块41,用于利用所述条带的文件位置信息,从所述条带对应的多个存储节点20的相应数据块中读取视频数据。
所述读取模块41,具体用于在从所述条带对应的多个存储节点20的相应数据块中读取视频数据的过程中,利用所述条带的文件位置信息,查询所述条带对应的多个存储节点20的相应数据块中是否存在损坏的数据块;如果所述条带对应的所有数据块均未损坏,则从所述条带对应的多个存储节点20的相应数据块中读取视频数据;如果所述条带对应的所有数据块中存在损坏的数据块,则从所述条带对应的多个存储节点20的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
本发明实施例中,所述管理节点10还包括处理模块14(图中未体现),所述处理模块14,用于按照条带对应的多个存储节点20的相应数据块中写入的视频数据的时间先后顺序,对所有条带进行排序;基于所有条带的排序结果,定期删除前面N个条带对应的多个存储节点20的相应数据块中写入的视频数据。所述处理模块14,还用于获得视频数据的存储类型,当所述视频数据的存储类型为纠删码存储类型时,拒绝执行所有条带的同步处理。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (12)
1.一种视频数据的存储方法,其特征在于,应用于包括管理节点、存储节点、写客户端和读客户端的分布式视频监控系统中,所述方法包括:
所述管理节点接收来自写客户端的条带资源请求消息,并为所述写客户端分配条带,所述条带中包括至少一个用于存储校验块的数据块,在为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程中,所述管理节点从所述条带资源请求消息中获得所述写客户端的客户端标识,并利用所述客户端标识查询预先配置的全局哈希表,得到对应的条带标识;其中,所述全局哈希表用于维护客户端标识与条带标识之间的对应关系;
如果所述条带标识对应的条带中未写满视频数据,则所述管理节点将所述条带标识对应的条带作为为所述写客户端分配的条带;
如果所述条带标识对应的条带中已经写满视频数据或者所述全局哈希表中没有所述客户端标识对应的条带标识,则所述管理节点选择一个空闲状态的条带作为为所述写客户端分配的条带,并在所述全局哈希表中记录所述客户端标识与当前选择的条带的条带标识之间的对应关系;
所述管理节点向所述条带对应的多个存储节点发送数据块资源请求消息,并接收各存储节点返回的携带数据块信息的数据块资源响应消息;
所述管理节点利用数据块信息确定所述条带的信息,并通过条带资源响应消息将所述条带的信息发送给所述写客户端,由所述写客户端利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中写入视频数据。
2.根据权利要求1所述的方法,其特征在于,所述管理节点为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程,具体包括:
所述管理节点从所述条带资源请求消息中获得所述写客户端所在的数据写入设备的设备标识,并利用所述设备标识查询预先配置的冗余保护表,得到对应的冗余保护数量,并为所述写客户端分配包括所述冗余保护数量个用于存储校验块的数据块的条带;其中,所述冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
3.根据权利要求1所述的方法,其特征在于,所述写客户端在所述条带对应的多个存储节点的相应数据块中写入视频数据的过程,具体包括:
所述写客户端将待写入存储节点的视频数据写入到写缓存中;
如果所述写缓存中写入的视频数据在预设时间内达到指定数据量,则所述写客户端采用整条带写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据;
如果所述写缓存中写入的视频数据在预设时间内未达到指定数据量,则所述写客户端采用重构写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据。
4.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述管理节点接收来自读客户端的携带分片信息的文件读取请求消息;
所述管理节点利用所述分片信息确定对应的条带的文件位置信息;
所述管理节点通过文件读取响应消息将所述条带的文件位置信息发送给所述读客户端,由所述读客户端利用所述条带的文件位置信息,从所述条带对应的多个存储节点的相应数据块中读取视频数据。
5.根据权利要求4所述的方法,其特征在于,所述读客户端从所述条带对应的多个存储节点的相应数据块中读取视频数据的过程,具体包括:
所述读客户端利用所述条带的文件位置信息,查询所述条带对应的多个存储节点的相应数据块中是否存在损坏的数据块;
如果所述条带对应的所有数据块均未损坏,则所述读客户端从所述条带对应的多个存储节点的相应数据块中读取视频数据;
如果所述条带对应的所有数据块中存在损坏的数据块,则所述读客户端从所述条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
6.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述管理节点按照条带对应的多个存储节点的相应数据块中写入的视频数据的时间先后顺序,对所有条带进行排序;
基于所有条带的排序结果,所述管理节点定期删除前面N个条带对应的多个存储节点的相应数据块中写入的视频数据。
7.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
所述管理节点获得视频数据的存储类型,当所述视频数据的存储类型为纠删码存储类型时,则所述管理节点拒绝执行所有条带的同步处理。
8.一种视频数据的存储系统,其特征在于,包括:管理节点、存储节点、写客户端和读客户端,其中,所述管理节点包括接收模块、分配模块、发送模块,所述写客户端包括写入模块,所述存储节点包括存储模块;
所述接收模块,用于接收来自写客户端的条带资源请求消息;所述分配模块,用于为所述写客户端分配条带,所述条带中包括至少一个用于存储校验块的数据块,在为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得写客户端的客户端标识,并利用所述客户端标识查询预先配置的全局哈希表,得到对应的条带标识;所述全局哈希表用于维护客户端标识与条带标识之间的对应关系;如果所述条带标识对应的条带中未写满视频数据,则将所述条带标识对应的条带作为为写客户端分配的条带;如果所述条带标识对应的条带中已经写满视频数据或者所述全局哈希表中没有所述客户端标识对应的条带标识,则选择一个空闲状态的条带作为为写客户端分配的条带,在所述全局哈希表中记录所述客户端标识与当前选择的条带的条带标识之间的对应关系;
所述发送模块,用于向所述条带对应的多个存储节点发送数据块资源请求消息;所述接收模块,用于接收各存储节点返回的携带数据块信息的数据块资源响应消息;所述发送模块,用于利用数据块信息确定所述条带的信息,通过条带资源响应消息将所述条带的信息发送给所述写客户端;
所述写入模块,用于从条带资源响应消息中获得条带的信息,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中写入视频数据;
所述存储模块,用于存储所述写客户端写入的视频数据。
9.根据权利要求8所述的系统,其特征在于,
所述分配模块,具体用于在为所述写客户端分配包括至少一个用于存储校验块的数据块的条带的过程中,从所述条带资源请求消息中获得写客户端所在的数据写入设备的设备标识,并利用所述设备标识查询预先配置的冗余保护表,得到对应的冗余保护数量,并为写客户端分配包括所述冗余保护数量个用于存储校验块的数据块的条带;所述冗余保护表用于维护数据写入设备的设备标识与冗余保护数量之间的对应关系,且位于特定位置的数据写入设备的冗余保护数量大于位于非特定位置的数据写入设备的冗余保护数量。
10.根据权利要求8所述的系统,其特征在于,
所述写入模块,具体用于在所述条带对应的多个存储节点的相应数据块中写入视频数据的过程中,将待写入存储节点的视频数据写入到写缓存中;如果所述写缓存中写入的视频数据在预设时间内达到指定数据量,采用整条带写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据;如果所述写缓存中写入的视频数据在预设时间内未达到指定数据量,采用重构写模式,利用所述条带的信息在所述条带对应的多个存储节点的相应数据块中,写入所述写缓存中的视频数据。
11.根据权利要求8所述的系统,其特征在于,
所述接收模块,还用于接收来自读客户端的携带分片信息的文件读取请求消息;所述发送模块,还用于利用所述分片信息确定对应的条带的文件位置信息,通过文件读取响应消息将所述条带的文件位置信息发送给读客户端;
所述读客户端包括读取模块,所述读取模块,用于利用所述条带的文件位置信息,从所述条带对应的多个存储节点的相应数据块中读取视频数据。
12.根据权利要求11所述的系统,其特征在于,
所述读取模块,具体用于在从所述条带对应的多个存储节点的相应数据块中读取视频数据的过程中,利用所述条带的文件位置信息,查询所述条带对应的多个存储节点的相应数据块中是否存在损坏的数据块;如果所述条带对应的所有数据块均未损坏,则从所述条带对应的多个存储节点的相应数据块中读取视频数据;如果所述条带对应的所有数据块中存在损坏的数据块,则从所述条带对应的多个存储节点的未损坏的数据块中读取视频数据,并利用当前读取的视频数据恢复损坏的数据块中的视频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510689794.1A CN105404469B (zh) | 2015-10-22 | 2015-10-22 | 一种视频数据的存储方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510689794.1A CN105404469B (zh) | 2015-10-22 | 2015-10-22 | 一种视频数据的存储方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105404469A CN105404469A (zh) | 2016-03-16 |
CN105404469B true CN105404469B (zh) | 2018-11-13 |
Family
ID=55469977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510689794.1A Active CN105404469B (zh) | 2015-10-22 | 2015-10-22 | 一种视频数据的存储方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105404469B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824580B (zh) * | 2016-03-18 | 2018-11-02 | 福州瑞芯微电子股份有限公司 | 录像文件写方法和录制设备 |
CN108008909B (zh) * | 2016-10-31 | 2019-11-22 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法、装置及系统 |
JP6526235B2 (ja) * | 2016-11-25 | 2019-06-05 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データチェック方法および記憶システム |
CN108614670B (zh) * | 2016-12-13 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | 一种信息处理方法及装置 |
CN108632305B (zh) * | 2017-03-16 | 2021-05-25 | 杭州海康威视数字技术股份有限公司 | 云存储系统、媒体数据存储方法及系统 |
CN107087031B (zh) * | 2017-05-10 | 2020-07-28 | 浙江宇视科技有限公司 | 一种存储资源负载均衡方法及装置 |
CN107197324B (zh) * | 2017-05-15 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种分布式文件系统的视频容错方法及装置 |
CN107370787A (zh) * | 2017-06-05 | 2017-11-21 | 广西英伟科技有限公司 | 一种服务器管理系统 |
CN107707395B (zh) * | 2017-09-28 | 2021-02-02 | 浙江大华技术股份有限公司 | 一种数据传输方法、装置和系统 |
EP3495939B1 (en) * | 2017-10-13 | 2021-06-30 | Huawei Technologies Co., Ltd. | Method and device for storing data in distributed block storage system, and computer readable storage medium |
CN109960458B (zh) * | 2017-12-14 | 2022-07-19 | 浙江宇视科技有限公司 | 一种基于块存储的数据存储方法、装置及可读存储介质 |
CN110086840B (zh) * | 2018-01-26 | 2022-03-11 | 浙江宇视科技有限公司 | 图像数据存储方法、装置及计算机可读存储介质 |
CN112513804B (zh) * | 2018-07-26 | 2022-08-19 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN109542921B (zh) * | 2018-11-28 | 2021-03-02 | 北京字节跳动网络技术有限公司 | 一种数据检查方法、装置、电子设备及存储介质 |
CN110191143B (zh) * | 2018-12-13 | 2022-09-30 | 浙江宇视科技有限公司 | 一种资源发布方法、装置及系统 |
EP3889752B1 (en) * | 2018-12-25 | 2024-09-25 | Huawei Cloud Computing Technologies Co., Ltd. | Data storage method and apparatus in distributed storage system, and computer program product |
CN111857552A (zh) * | 2019-04-30 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 存储管理方法、电子设备和计算机程序产品 |
CN113760186A (zh) * | 2019-07-30 | 2021-12-07 | 华为技术有限公司 | 数据存储方法、装置、计算设备、存储系统及存储介质 |
CN110704395B (zh) * | 2019-09-18 | 2022-12-09 | 四川商通实业有限公司 | 一种用于分布式系统的唯一标识方法 |
CN111399764B (zh) * | 2019-12-25 | 2023-04-14 | 杭州海康威视系统技术有限公司 | 数据存储方法、读取方法、装置、设备及存储介质 |
CN111399765B (zh) * | 2019-12-31 | 2022-11-01 | 杭州海康威视系统技术有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN111273862A (zh) * | 2020-01-16 | 2020-06-12 | 上海依图网络科技有限公司 | 数据存储方法及其装置、可读介质和系统 |
CN111400083B (zh) * | 2020-03-17 | 2024-02-23 | 上海七牛信息技术有限公司 | 数据存储方法及系统、存储介质 |
CN112019788B (zh) * | 2020-08-27 | 2023-04-11 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置、系统及存储介质 |
CN113420035A (zh) * | 2021-02-05 | 2021-09-21 | 阿里巴巴集团控股有限公司 | 数据处理方法、系统、装置、电子设备及计算机存储介质 |
CN113515531B (zh) * | 2021-05-08 | 2022-12-02 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
CN113672175A (zh) * | 2021-08-09 | 2021-11-19 | 浙江大华技术股份有限公司 | 分布式对象存储方法、装置和设备及计算机存储介质 |
CN115547367A (zh) * | 2022-09-23 | 2022-12-30 | 天翼数字生活科技有限公司 | 一种音视频缓冲区读取处理方法及装置 |
CN115629714B (zh) * | 2022-12-06 | 2023-03-17 | 苏州浪潮智能科技有限公司 | Raid卡的写方法、raid卡的写系统及相关装置 |
CN118172711B (zh) * | 2024-04-12 | 2024-09-24 | 义乌中国小商品城大数据有限公司 | 一种ai大数据智能管理方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510145A (zh) * | 2009-03-27 | 2009-08-19 | 杭州华三通信技术有限公司 | 一种存储系统管理方法和装置 |
CN104272274A (zh) * | 2013-12-31 | 2015-01-07 | 华为技术有限公司 | 一种分布式文件存储系统中的数据处理方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110050404A (ko) * | 2008-05-16 | 2011-05-13 | 퓨전-아이오, 인크. | 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품 |
-
2015
- 2015-10-22 CN CN201510689794.1A patent/CN105404469B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510145A (zh) * | 2009-03-27 | 2009-08-19 | 杭州华三通信技术有限公司 | 一种存储系统管理方法和装置 |
CN104272274A (zh) * | 2013-12-31 | 2015-01-07 | 华为技术有限公司 | 一种分布式文件存储系统中的数据处理方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105404469A (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105404469B (zh) | 一种视频数据的存储方法和系统 | |
US11662915B2 (en) | Parity in a vast storage system using alternate memory | |
CN106407040B (zh) | 一种远程数据复制方法及系统 | |
US9998538B2 (en) | Dispersed storage with coordinated execution and methods for use therewith | |
US7337331B2 (en) | Distributive storage controller and method | |
US10140178B2 (en) | Verifying a status level of stored encoded data slices | |
US7159150B2 (en) | Distributed storage system capable of restoring data in case of a storage failure | |
US8554994B2 (en) | Distributed storage network utilizing memory stripes | |
US9665429B2 (en) | Storage of data with verification in a dispersed storage network | |
US20140081919A1 (en) | Distributed backup system for determining access destination based on multiple performance indexes | |
US20090327445A1 (en) | Continuous data protection and remote block-level storage for a data volume | |
US20170017401A1 (en) | Redundant array of independent discs and dispersed storage network system re-director | |
CN102982182A (zh) | 一种数据存储规划方法及装置 | |
US7689877B2 (en) | Method and system using checksums to repair data | |
CN111459399A (zh) | 一种数据写入方法、数据读取方法及装置 | |
CN108271420B (zh) | 管理文件的方法、文件系统和服务器系统 | |
US10067998B2 (en) | Distributed sync list | |
US12079083B2 (en) | Rebuilding missing data in a storage network via locally decodable redundancy data | |
US10031805B2 (en) | Assigning slices to storage locations based on a predicted lifespan | |
CN115878381A (zh) | 基于srm盘的数据恢复方法及装置、存储介质、电子装置 | |
US20220374162A1 (en) | Facilitating Write Requests in a Storage Network | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
US11442921B1 (en) | Data access in a dispersed storage network with consistency | |
US20240045777A1 (en) | Processing of Data Access Requests in a Storage Network | |
KR100824510B1 (ko) | 순환 기록 방식의 기록 장치, 기록 방법, 및 기록 방법의프로그램을 기록한 기록 매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |