摘 要: 硬盘播出视频服务器的存储子系统的发展历程,并分析了各个阶段的典型模式的特点。
关键词: 视频服务器 码流 带宽 RAID
当前,广播电视的播出系统正处于由模拟信号播出向数字信号播出的转换时期,播出系统数字化的关键点之一就是选用合适的硬盘播出视频服务器。硬盘播出视频服务器从诞生至今虽然时间不久,却经历了一系列的变化,其性能也是由多方面因素的综合作用决定的。本文将从存储子系统的角度回顾硬盘播出视频服务器的发展历程,并且分析各种存储系统结构对于硬盘播出视频服务器的影响。
1 第一代存储子系统——单机阵列
第一代存储子系统的产品示意图如图1所示。
由于受成本的制约和技术的限制,早期视频服务器的硬盘存储系统相对比较简单。它们大多是一个独立的单一系统,拥有一套硬盘存储阵列,采用RAID3 或RAID5技术,拥有一层简单的容错功能。从视频播出领域的应用角度考虑,要保证播出安全,容错技术尤为重要。一层简单的容错能力难以满足大型多频道播出的安全要求。这种播出方式除安全问题尤其显著外,它的负载能力也有很大的局限性,由于总线速度的限制,总共可以安装的编解码板的数量是有限的。随着编解码板数量的增加而带来的巨大的I/O带宽压力,对于磁盘阵列的带宽承受能力是一个很大的考验。如果系统负载过重,阵列带宽占用率过高,或者说余量带宽很小,则一旦阵列中的某个硬盘损坏,阵列的恢复将是一个极其漫长的过程,而且处于恢复过程中的阵列的带宽余量更小,使整个阵列面临的危险性显著增加。这种方式的设计整体上没有太多的冗余考虑,因而具有实现简单、低成本的特点。但这种结构的播出服务器只能负责一些广告和短片的插播,不能作为主播设备使用。
2 第二代存储子系统——双机镜像
由于单机系统的安全原因,一些视频服务器供应商提出一个改良的方法,即对单一系统进行一对一的镜像配置。通过镜像,存储系统被分成主系统和备份系统二个内容完全一样的结构。文件上载到主系统后,往备份系统做一对一的拷贝(如图2)。对于目前这种结构的主流产品而言,主系统和备份系统中间的连接通常采用的链路方式为光纤通道。
这种方式是通过增加存储系统的冗余度,加了一倍的容量来提高系统的安全性。这种方式实现比较简单,从技术角度来看,它的存储子系统与第一代产品在故障容错能力上是相同的,只是增加了拷贝功能。这种方式虽然在整体上增加了系统安全播出的可靠性,但是面对用户对多频道播出的需求,相对于第一代视频服务器没有什么提高,只是随着IT技术的发展,在服务器的数据总线宽度达到64位,总线速度有了明显提升之后,才能够实现在这种系统构建方式下播出2~3个频道。
这种构建方式的不足之处在于:(1)存储系统的利用率较低(不到50%),整体构建成本较高。(2)单台服务器上的编解码板的正常运作几乎完全依赖于本机的存储阵列。也就是说编解码板与存储阵列是绑定在一起的。在这种体系中,存储损失一半的同时编解码板也要有一半停止工作。(3)多频道高码流播出的负载能力有限。但是这种构建方式也有着明显的优点:原理比较简单,易于理解和控制
目前国内许多厂商推出的小型播出视频服务器采用这种构建方式。当前的主流进口产品中也有采用双机镜像这种构建方式的硬盘播出视频服务服务器。以SONY的MAV-70XGI播出视频服务器和SeaChange公司的BMS系列服务器为代表,其中MAV-70XGI服务器的存储阵列基本配置由8块硬盘组成,使用Raid3校验方式;BMS服务器的存储阵列的基本配置由8块或者12块硬盘组成,使用Raid5校验方式。
3 基于SAN结构存储子系统的视频服务器
镜像存储系统的做法限制了播出视频服务器向多频道高码流方向的发展。因此采用镜像存储数据方式的服务器供应商开始考虑使用新的方法来弥补镜像设计的不足。其中一种方法是采用SAN(Storage Area Network)共享存储结构。典型的系统结构是:只配置视频I/O(没有内部大容量存储)的视频服务器通过FC集线器或交换机与中央存储盘塔连接。盘塔采用RAID3或RAID5硬盘阵列形式。盘塔提供素材共享,它通过集线器或交换机向各个输入输出视频服务器提供存储服务。其典型结构如图3所示。
图3所示的SAN方案常采用对硬盘阵列分组的方式,下面以此为例进行说明。系统中有4组硬盘阵列连接到交换机上。进入到系统的视频数据首先被分散到4个阵列,然后,进入每个阵列的局部数据在阵列内做RAID3或者RAD5的处理与记录。在数据做RAID3或者RAID5前,先做了一次RAID0处理,这样做有一个明显的好处就是可以提高硬盘的总吞吐带宽。随着总的可用带宽的增加,外部仅仅负责I/O的播出服务器就可以在数量上有所增加,对于多频道高码流的负载能力就得到了显著的增强。在这种体系结构下一个机群系统可以负载4个以上的播出频道。
由于播出系统对于系统安全性的要求是极高的,所以必须在SAN结构带来极大进步的同时,冷静地看一下它仍存在的一些安全上的隐患:(1)为了消除理论上的单一崩溃点,这种结构下的文件服务器最好做成主备方式。(2)多频道同时播出与上载同时进行的情况下,作为数据交换核心的交换机将承受巨大的带宽压力,这就要求该交换机具有很强的负载能力,而且最好也形成主备结构。(3)SAN结构的四个存储阵列之间是RAID0的关系,每个阵列内部只拥有一层RAID3或者RAID5的保护。也就是说如果某个存储阵列同时出现二块以上的硬盘故障或者其他的可以引起整个阵列停机的故障,则丢失的数据将无从找回,这也就意味着将会出现播出事故。所以实际中使用的SAN产品,都在此采用了一套备份存储阵列。以图3为例,通常的产品构建方式为阵列1、2为一体,阵列3、4为一体,后者作为前者的备份,二者之间为镜像关系。这种解决办法可以保证SAN结构的硬盘播出服务器的数据存储的安全性,但是这种解决方式也有着明显的缺点:(1)存储利用率低、成本较高;(2)由于主备二套存储之间的镜像关系,主存储除了要负担外部I/O服务器的上载、数据写入、播出及数据读出外,还要把上载进来的新素材数据通过中心交换机及时地传送给镜像的备存储,这就相当于把中心交换机对主存储的写入带宽的服务增加了一倍。也就是说中心交换机和主存储体面临的带宽压力更大了。
SAN结构除了可以极大地提高服务器机群的总带宽负载能力外,还带来了一个革命性的变化,那就是打破了以往的服务器I/O与存储阵列故障绑定的传统。在这种结构下外部的服务和内部的存储是相互独立的,各自可以随着自己的需要而进行增减。存储的故障也不会再影响到外部的I/O应用服务。
与主备结构相比,SAN存储结构的采用极大地提升了硬盘播出视频服务器系统的总体性能,这是一次由视频服务器体系结构的改进而带来的明显进步,此后又有很多新的视频服务器的体系结构被提出,其中就包括基于RAID平方存储结构的视频服务器。
共享存储的SAN结构被各大服务器厂商应用于各自的产品。这些产品包括目前处于主流地位的一些服务器,例如GVG的PVS1000系列和PVS2000系列都可以构建成SAN模式。
4 基于RAID平方存储子系统的视频服务器
要说明RAID平方存储结构,首先要看一下RAID5的数据保护方式。一块数据如果要通过RAID5控制单元(硬件或者软件)写入它所控制的多个存储体,就必须经过以下几个步骤:数据分割,校验计算,存储体分配。图4表示了一个RAID5控制单元控制着五个存储体。下面通过一个例子来看一下数据是如何写入的。假设待写入的数据块大小为4MB。根据RAID5控制单元所控制的存储体的个数(这里为5个),将这块数据分成等长的5-1=4段,每段大小为1MB,然后根据这4段数据计算出等长的一段校验数据(校验方式为异或校验)。这样总共得到5个等长的数据段,RAID5控制单元的每次写入都是将这5个数据段放置在不同的存储体上。四段原始数据在存储体中以1、2、3、4表示,一段校验数据在存储体中以xor表示。图4表示了RAID5控制设备连续五次对存储体进行数据写入的过程。RAID5控制单元的每次写入是将各个数据段循环放置到不同的存储体上。一个数据段不与某个存储体固定对应。数据读出的过程也是按块进行的,每块数据的读出就是从所有存储体同时读出当初写入时相对应的各段,然后检查数据无误后,去掉校验段数据,组装有效数据段进行输出。
RAID5的数据保护允许所控制的N(N≥3)个存储体中的一个存储体失效,这时缺失的数据由其他正常的N-1个存储体的数据计算得到。如果再出现第二个存储体失效,则RAID5存储结构将会因有效存储体的不足而崩溃。
RAID平方存储结构是由三个或三个以上的独立节点组成的分布式系统,每个节点类似于一台独立的服务器,拥有自己的硬盘阵列,系统中采用点对点的连接方式。图5给出了由四个节点组成的RAID平方存储结构。RAID平方存储系统的数据写入和读出也是以数据块的方式进行的。它通过一个节点要输入系统的数据块,在该节点以系统所有节点为存储体进行RAID5数据处理,将得到的各段数据分送各个节点。这样在节点之间就形成了第一次RAID5数据保护。到达各个节点的数据,在其内部RAID5控制卡的作用下,再经过一次RAID5处理,最终到达节点内部的阵列中的硬盘。数据在这个系统中得到了二次RAID5方式的数据保护,这也是这种系统称为RAID平方的原因。如果要从某个节点把数据从系统中读出,则所经历的过程与写入过程是相反的,每个节点要从内部的阵列取出数据,这由节点内部的RAID5控制卡负责,再将各个节点取出的数据送往负责对外服务的那个具体节点,并由这个节点自身的处理系统负责将有效数据最终交给某个应用。由RAID5的故障承受能力可以知道,每个节点允许内部的阵列有一块硬盘失效,整个系统允许出现一个节点的存储失效。在这样的情况下,通过数据恢复机制,系统的正常数据读写不会受到影响,采取适当的措施可以恢复缺失的硬盘数据和节点数据。与主备存储结构相比,系统中不再存在相同文件的拷贝,每个文件只有一份。这样RAID平方存储方式可以达到很高的存储利用率。例如,四个节点,每节点八块硬盘的RAID平方存储系统的存储利用率为3/4×7/8=65.625%。这种结构中,单就一个节点存储的数据来说是没有意义的,是不完整的数据,必须要整个系统同步工作才能得到有效的数据。
基于RAID平方存储结构的硬盘播出视频服务器的I/O基本配置方式为:编码板和解码板分散安装在各个节点上,一个频道的主备二块解码板一般不安装在同一个节点上,这样可以避免因为一个节点出现故障而导致某个频道的播出事故。图6为一个三节点的RAID平方存储结构的视频服务器的I/O配置示例。图中ch1、ch2、ch3分别表示频道1、2、3。
这种方式下,单就一个节点的数据来说是没有意义的,是不完整的数据,必须整个系统同步工作才能得到有效的数据。由于RAID5对于数据的保护,系统只允许一个节点失效,这种情况下该节点所丢失的数据可由其他存在的节点的数据计算得到。如果整个系统出现第二个失效节点,丢失数据将无法得到,则这种结构将因为没有足够的有效数据而崩溃。
RAID平方存储结构的视频服务器具备一些突出的优点:(1)高存储利用率。RAID平方结构存储利用率比较高,实现了无备份存储,可以通过较小的硬盘或者较小的空间占用来实现相同于其他播出服务器的素材存储时间。这样阵列内部的硬盘的故障恢复和整个节点的存储的恢复都将可以较快地完成,从而减少了服务器处于危险模式的时间,使服务器的故障概率得以降低。(2)带宽压力平衡。由于结构内部是点对点互连,所以系统工作的时候,带宽压力平均到各个节点之间的链路上,从而避免了带宽压力的集中,带宽均衡可以使服务器的故障率得以降低。(3)受存储故障牵连的I/O板卡减少。I/O板卡的分散使得在某个节点完全由于故障停止的情况下,受到影响的I/O板卡只是总量的1/N(N为节点数),从而进一步降低了受到故障影响的I/O板卡比例。如果采用合理的控制方式,在一个节点仅仅发生存储阵列故障的情况下,实现该节点编解码板继续工作是完全可能的。(4)系统升级成本低。这种方式的构建的服务器,可以通过增加节点的方式实现服务器的升级——增加存储、增加负载频道的数量。从而摆脱了以往升级时必须购买一套主备存储设备的弊端。
这种结构的视频服务器目前只有SeaChange公司的BMC系列,该项技术尚处于专利保护期内。这种服务器对于多频道播出系统有不错的性价比,而对于三个以下频道的播出则显得有些昂贵。笔者认为,这种服务器是多频道播出的首选,目前该系列产品已经服务于国内许多多频道播出的电视台。
5 结 论
通过以上几点比较可以看到,存储子系统结构的不同和存储技术的差异,对于存储容量、容错能力、存储系统的升级性、负载能力以及性价比有着极其重要的影响。目前市场上基于各种存储结构的硬盘播出视频服务器都可以找到,这就需要正准备进行播出系统数字化改造的电视台,根据自己的实际情况,选择适合本台的硬盘播出视频服务器。
参考文献
1 张琦.数字电视中心技术.北京:北京广播学院出版社,2000
2 杜百川.数字电视.北京:中国电子学会广播电视技术分会,1998
3 史品智.网络多频道硬盘自动播控系统与数字中心存储.合肥:安徽省广播电视局,2003