一种基于SAN资源的视频监控数据存储方法及其装置

阅读: 评论:0

著录项
  • CN201110147279.2
  • 20110602
  • CN102185929A
  • 20110914
  • 杭州华三通信技术有限公司
  • 胡荣国
  • H04L29/08
  • H04L29/08

  • 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地
  • 中国,CN,浙江(33)
  • 北京鑫媛睿博知识产权代理有限公司
  • 龚家骅
摘要
本发明公开了一种基于SAN资源的视频监控数据存储方法及其装置。该方法包括:RAID处理器读取写缓存中SAN资源所对应的整RAID条带大小的视频监控数据;RAID处理器根据读取到的该SAN资源对应的视频监控数据的数据量,在RAID空闲链表中未分配的条带中申请连续或相邻的相应数量的整RAID条带作为写入空间;RAID处理器在申请得到的写入空间顺序写入所述SAN资源对应的视频监控数据,并在写入成功后,将所述SAN资源的逻辑地址对应的初始条带回收到所述RAID空闲链表中,并更新所述SAN资源的逻辑地址与物理地址的对应关系。采用本发明可提高数据读写性能。
说明书
技术领域

技术领域

本发明涉及通信技术领域的数据存储技术,尤其涉及一种基于SAN资源的视频监控数据存储方法及其装置。

背景技术

在数据存储领域,SAN(Storage area network,存储区域网络)资源是指部分、一个或者多个物理设备虚拟化后的集合,属于逻辑资源。SAN资源可以直接与应用服务器(即SAN客户端)绑定,提供“块”级的数据访问。

SAN客户端无法直接访问物理资源,需要先将物理资源虚拟化,然后在此基础上创建不同类型的逻辑存储资源(即SAN资源),并分配给客户端后,才可以实现SAN客户端间接访问物理资源。

如图1所示,SAN资源和磁盘管理分为四个层次:物理磁盘、RAID(Redundant Array ofIndependent Disks,独立磁盘冗余阵列)、虚拟设备资源和SAN资源。SAN资源是最终分配给用户使用的存储空间。一个阵列对应一个虚拟设备,SAN资源是block(块)级的存储资源,用户通过SCSI(Small Computer System Interface,小型计算机系统接口)协议对其进行访问,SAN资源创建于已做虚拟化操作的物理设备上。

多路顺序流的使用情况非常普遍,如,视频监控系统中进行视频数据的录入过程等。在这种多路视频监控的应用场景下,一个SAN资源对应一个顺序流(即一路数据流),一个RAID5经常需要承载几十路至上百路的数据流。

现有方案是SAN资源占用RAID5的一段或几段连续空间(一般在SAN资源扩容的时候出现),如图2所示。

发明人在实现本发明的过程中,发现目前基于RAID5阵列的SAN资源存储机制中至少存在以下缺陷:

在一个SAN资源对应一个顺序流写入的情况下,多个SAN资源在RAID5上写入就相当于准随机写入,这样会使数据的读写性能降低比较多。

发明内容

本发明提供了一种基于SAN资源的数据存储方法及其装置,用以提高数据读写性能。

本发明提供的基于SAN资源的视频监控数据存储方法,包括:

RAID处理器读取写缓存中SAN资源所对应的整RAID条带大小的视频监控数据;

RAID处理器根据读取到的该SAN资源对应的视频监控数据的数据量,在RAID空闲链表中未分配的条带中申请连续或相邻的相应数量的整RAID条带作为写入空间;

RAID处理器在申请得到的写入空间顺序写入所述SAN资源对应的视频监控数据,并在写入成功后,将所述SAN资源的逻辑地址对应的初始条带回收到所述RAID空闲链表中,并更新所述SAN资源的逻辑地址与物理地址的对应关系。

本发明提供的RAID处理器,包括:

数据读取模块,用于读取写缓存中SAN资源所对应的整RAID条带大小的视频监控数据;

资源申请模块,用于根据读取到的该SAN资源对应的视频监控数据的数据量,在RAID空闲链表中未分配的条带中申请连续或相邻的相应数量的整RAID条带作为写入空间;

写操作模块,用于在申请得到的写入空间顺序写入所述SAN资源对应的视频监控数据,并在写入成功后,将所述SAN资源的逻辑地址对应的初始条带回收到所述RAID空闲链表中,并更新所述SAN资源的逻辑地址与物理地址的对应关系。

本发明的有益技术效果包括:

本发明通过写入SAN资源时,一方面从写缓存中读取整RAID条带大小的视频监控数据,另一方面在申请写入空间时,根据读取到的该SAN资源对应的视频监控数据的数据量,申请相应数量的连续或相邻的整RAID条带作为写入空间,从而与现有技术相比,减少了写操作的随机性,进而可提高数据读写性能。

附图说明

图1为现有技术中逻辑存储资源和磁盘管理的层次示意图;

图2为现有技术中SAN资源的分配示意图;

图3为本发明实施例提供的数据写流程示意图;

图4为本发明实施例提供的数据读流程示意图;

图5为本发明实施例提供的数据处理设备的结构示意图。

具体实施方式

按照现有的方法分配SAN资源会使RAID5的写入数据变成准随机,影响整个RAID5的性能,为此,本发明实施例提供了一种动态分配RAID5条带给SAN资源使用的方法,可以使多路数据流在相邻的条带写入,对硬盘来说就变成顺序流写入,从而充分发挥硬盘的写入性能,当写入的条带发生错误时,还可以重新分配新的条带,发生错误的条带标记不再使用,这样提高了RAID5的容错能力。

下面结合附图对本发明实施例进行详细描述。

与现有SAN资源分配机制一样,本发明实施例在基于SAN资源进行数据读写处理之前,首先要配置SAN资源。配置SAN资源的基本过程可包括:在虚拟设备上创建SAN资源、将SAN资源绑定到SAN客户端(SAN资源只有绑定给客户端后,才能被客户端访问)、配置SAN资源的存储特性(如配置SAN资源的容量)等。SAN资源的创建过程可通过现有的SAN资源管理软件实现,具体创建过程可包括:选择目标虚拟设备,在选择出的目标虚拟设备所对应的物理资源中进一步选择创建SAN资源的物理设备,然后设置SAN资源的大小、名称,完成SAN资源的创建。创建SAN资源后,SAN资源逻辑地址对应有初始的物理地址。

其中,本发明实施例在创建SAN资源时,在RAID5上预留一定存储空间,即,SAN资源的总和要小于RAID5空间,如在RAID上预留的存储空间容量为RAID空间容量总和的5%(这样分配给SAN资源使用的存储空间总和不超过RAID空间的95%)。将分配给SAN资源 的总和配置为小于RAID5存储空间,是为了后续在采用本发明实施例提供的方式向RAID5写入数据时,能够一定程度上保证RAID5上有足够空间存储待写入的数据。当然,该预留空间的大小可根据实际情况来设定,该预留空间越大,则分配到连续存储空间的几率就越高。

在完成SAN资源配置后,SAN客户端就可以基于SAN资源向RAID5中写入数据了。

本发明实施例在写入数据流时,对SAN资源所对应的实际RAID5条带实行动态分配,其数据流的写入流程可如图3所示。

参见图3,为本发明实施例提供的数据流写入流程的示意图。该流程适用于SAN客户端向RAID5阵列中写入数据的过程,其中,一个SAN资源对应一路视频监控数据流,SAN客户端向写缓存中写入视频监控数据,RAID5处理器根据RAID5机制将写缓存中的视频监控数据写入物理磁盘。在RAID5处理器将写缓存中的视频监控数据写入物理磁盘的过程中,需要根据预先设置的数据量阈值(这里称为写缓存刷盘水位线,如可设为写缓存容量的70%),将一定量的视频监控数据写入物理磁盘,即,每当写缓存中的数据量达到写缓存刷盘水位线时,执行以下流程(以下流程以写入视频监控数据流flow_01为例描述,视频监控数据流flow_01对应的SAN资源为SAN_01):

步骤301,RAID5处理器从写缓存中读取SAN_01资源所对应的视频流flow_01的数据,所读取的数据量为N(N≥1)个完整的RAID5条带所能承载的数据块大小。

步骤302,RAID5处理器向RAID5申请写入空间,所申请的写入空间为N个完整的条带。

该步骤中,RAID5处理器在申请条带时,优先申请连续或相邻的条带。具体的,RAID处理器判断RAID5中是否有N个连续的整RAID5条带,若有,则申请该N个整RAID5条带作为写入空间;否则,申请相邻的N个整RAID5条带作为写入空间。即,在RAID5中存在有N个连续的完整条带的情况下,RAID5处理器所申请的N个条带为连续的N个条带;在RAID5中不存在有N个连续的完整条带的情况下,RAID5处理器所申请N个条带为相邻的N个条带。

在具体实现时,空闲的条带通常记录在RAID空闲链表中,RAID5处理器可根据该RAID空闲链表申请写入空间。例如,如果当前的RAID空闲链表中记录有条带k~k+N(k≥0,N>1),则RAID5处理器可申请条带k~k+N-1作为SAN_01所对应的视频流flow_01数据的写入空间;如果当前的RAID空闲链表中没有N个连续的条带,其中记录有条带k~k+1、k+3~k+N(即N个连续的条带中的条带k+2被占用),则RAID5处理器可申请条带k~k+1、k+3~k+N作为SAN_01所对应的视频流flow_01数据的写入空间。

步骤303,在申请成功后,RAID5处理器记录所申请成功的条带逻辑地址与物理地址的映射关系,并将步骤301读取到的视频流数据flow_01按顺序写入到所申请的N个RAID5条带。

进一步的,RAID5处理器还可以根据写数据操作是否成功,执行以下步骤:

步骤304,RAID5处理器根据写操作的返回值判断写数据操作是否成功,如果成功,则转入步骤305;否则转入步骤307。

步骤305,RAID5处理器回收SAN资源逻辑地址对应的物理地址,如可回收到RAID空闲链表中,并将新写入数据的物理地址(如步骤303所记录的物理地址)更新到SAN资源逻辑地址对应的物理地址中,然后转入步骤306。

通常,SAN资源逻辑地址对应的物理地址可以初始设置,当有新的条带写入后,通过修改该对应关系,回收原来对应关系的物理地址块,以便后续再次使用,可以充分利用RAID资源。

步骤306,RAID5处理器向写缓存返回成功响应。

步骤307,RAID5处理器将写操作失败的RAID5物理地址所在的条带进行标记,如标记为不可用,这样被标记的条带不再使用;RAID5处理器根据未成功写入的数据量再次申请完整的条带作为写入空间,并将未成功写入的数据写入到新申请的条带,并转入步骤304。

具体的,如果写操作失败的数据量在一个完整条带容量之内,则重新申请一个完整条带,并将写操作失败的数据写入该新申请到的条带。如果写操作失败的数据量超过一个条带的容量但在两个条带容量之内,则重新申请两个完整条带,并将写操作失败的数据写入该新申请到的条带,以此类推。在再次申请条带时,同样可以优先申请连续或相邻的条带。在此基础上,再次申请的条带还可以尽量与前次申请的条带相邻。仍以上述实例为例,如果前次申请的条带为条带k~k+N-1,如果需要再次申请M(M≥1)个条带,则在条带k+N-1后面有M个连续条带的情况下,申请该M个连续条带。

以上仅以一个SAN资源所对应的视频监控数据的写入过程为例进行了说明,对于各个需要写入的SAN资源所对应的视频监控数据,均按照上述流程写入。

通过以上流程可以看出,SAN资源写入时,在空闲RAID5条带上分配新的空间给SAN资源,被覆盖的数据对应的RAID5条带回收到空闲链表中,通过这种组织方式,当多个SAN资源对应的顺序数据流写入时,RAID5处理器可以在空闲RAID5条带链表中一次分配多个条带分别给多个SAN资源,这样就可以把多个条带的数据大块顺序写入RAID5,使RAID5写入的数据流随机度大大减少。

下面以一具体实例对上述流程进一步详细描述。

当前的RAID空闲链表中包括:条带2、3、6、7。目前需要将SAN资源1对应的视频监控数据流flow1数据写入RAID5。

当cache刷盘水位线到达时,RAID处理器从该cache中读取SAN资源1对应的flow1数据,其数量为2个完整条带所承载的block大小,然后通过查询RAID空闲链表,发现条带2、3为2个连续且完整的空闲条带,因此申请条带2、3作为写入空间。RAID处理器在申请下来的条带2、3中顺序写入从cache读取的SAN资源1所对应的flow1数据。

在成功写入后,回收SAN资源逻辑地址对应的初始物理地址(本例中为条带9、10的物理地址)到RAID空闲链表中,并将新写入数据的物理地址(条带2、3的物理地址)更新到SAN资源逻辑地址对应的物理地址中。

之后,当cache刷盘水位线再次到达时,RAID处理器从cache中读取SAN资源1对应的flow1数据,其数据量为3个完整条带所承载的block大小,然后通过查询RAID空闲链表,发现已经没有3个连续的完整条带,则RAID处理器申请邻近的3个条带:条带6、7、9作为写入空间,并在申请下来的条带顺序写入从该cache读取的flow1数据。

在向RAID5写入数据过程中,若发生写入失败,则将发生写入失败的block标记为坏块,RAID处理器不再将该坏块所在条带作为写入空间进行申请,针对写入失败的视频监控数据流,RAID处理器再次申请完整的条带,用来再次写入该写入失败的视频监控数据。例 如,在向条带6写入数据时失败,则RAID处理器将发生写失败的block标记为坏块,并申请条带10作为写入空间,将需要向条带6写入的数据写入到条带10中。

基于上述数据写流程,本发明实施例中的数据读流程基本与现有方式一致。

参见图4,为本发明实施例提供的数据读流程示意图。该流程适用于SAN客户端从RAID5阵列中读出数据的过程,包括:

步骤401,SAN客户端请求读取数据。

步骤402,RAID处理器接收到该请求后,根据该SAN资源对应的逻辑地址与RAID物理地址映射表,查出实际的RAID物理地址空间。

步骤403,RAID处理器从该RAID的磁盘中读取数据块。

步骤404,RAID处理器将读取结果返回给SAN客户端。

需要说明的是,本发明实施例除了可适用于RAID5以外,还可以适用于其他RAID类型。

基于相同的技术构思,本发明实施例还提供了一种RAID处理器。

参见图5,为本发明实施例提供的RAID处理器的结构示意图。如图所示,该RAID处理器可包括:

数据读取模块501,用于读取写缓存中SAN资源所对应的整RAID条带大小的视频监控数据;

资源申请模块502,用于根据读取到的该SAN资源对应的视频监控数据的数据量,在RAID空闲链表中未分配的条带中申请连续或相邻的相应数量的整RAID条带作为写入空间;

写操作模块503,用于在申请得到的写入空间顺序写入所述SAN资源对应的视频监控数据,并在写入成功后,将所述SAN资源的逻辑地址对应的初始条带回收到所述RAID空闲链表中,并更新所述SAN资源的逻辑地址与物理地址的对应关系。

上述RAID处理器中,写操作模块503还用于:在申请得到的写入空间写入视频监控数据的过程中若发生写操作失败,则将发生写操作失败的RAID条带标记为不可用;以及,在再次申请得到的写入空间重新写入写操作失败的视频监控数据,并在写入成功后,将所述SAN资源的逻辑地址对应的初始条带回收到所述RAID空闲链表中,并更新所述SAN资源的逻辑地址与物理地址的对应关系。资源申请模块502可在申请得到的写入空间写入视频监控数据的过程中若发生写操作失败,则根据写操作失败的视频监控数据的数据量,在RAID空闲链表中未分配的条带中申请连续或相邻的相应数量的整RAID条带作为写入空间。

上述RAID处理器中,资源申请模块502可在申请相应数量的整RAID条带作为写入空间时,根据所述RAID空闲链表中未分配的条带,判断RAID中是否有相应数量的连续的整RAID条带,若有,则申请该相应数量的连续的整RAID条带作为写入空间;否则,申请相邻的相应数量的整RAID条带作为写入空间。

上述RAID处理器中,写操作模块503可根据所述SAN资源的逻辑地址对应的初始物理地址,将初始物理地址对应的条带回收到所述RAID空闲链表中,并将数据写入的物理地址更新为SAN资源逻辑地址对应的物理地址。

上述RAID处理器中,还可包括SAN资源配置模块504。该模块用于配置SAN资源, 其中,各路视频监控数据所对应的SAN资源的容量总和,小于RAID物理存储空间容量总和的预设比例。

综上所述,本发明实施例在RAID5层实现SAN资源按条带粒度映射,多个顺序流的SAN资源分配相邻的条带,以便对磁盘分解为顺序大块数据写入,提高性能,出现条带读写错误时,标记该条带错误不再使用,提高了容错性,延长了硬盘的使用寿命。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

本文发布于:2023-04-14 14:12:14,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/87206.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图