【摘要】在播出领域视频存储系统中,如何解决保证数据容量、数据的高速读写和安全可靠成为重点。本文简要介绍了广东广播电视台高清系统的播出存储系统框架,并着重介绍BMLE集群系统和UML系统的主要技术和确保数据安全可靠机制。
【关键词】 播出存储 RAID 冗余 故障转移
一.引言
随着对信息技术和存储技术的不断发展,在电视播出中视频数据存储容量和数据可靠性的需求越来越高。电视台媒体资源的播出领域有着大量的素材资源存储的需求,同时作为播出末端,对于数据数据的高速读写和安全可靠的要求高。目前硬盘作为存储的主要载体,读写速度有限,可靠性差的问题成为制约系统性能的关键问题。本文简要介绍广东广播电视台高清系统的播出存储系统框架,并着重介绍该系统中视频存储服务器BMLE集群系统和UML系统的主要技术,以及在该存储系统中如何通过数据冗余容错和故障转移,提高保证系统的稳定性,保证播出安全。
二.高清系统播出存储框架简介
广东台于2012年开始高清机房的建设,搭建了高清混播的系统。这个过程中经过了数次的升级和改造,目前系统形成了以三台Seachange MCL(MediaClient)服务器、两台MSV(MediaServer)服务器共同作为上载服务器,完成上载视频文件的编解码;Seachange UML(Universal Media Library)服务器系统作为中央服务器存储所有的视频素材;两台Seachange BML(Broadcast Media Library)服务器组成集群作为播出服务器,连接六台MCL服务器完成视频素材的播出解码播出的基本系统框架。即高清播出存储系统中,主要结构由编码服务器—中央存储服务器—播出存储服务器—解码服务器四级组成。具体系统结构连接如图1所示:

图1 广东台高清播出存储框架图
系统中前后两端的编解码服务器采用了MCL服务器和MSV服务器,这两种服务器采用了软解码的方式,具有实时编解码I/O 功能,通过网络连接分别与BML服务器组成的集群和UML服务器构成NAS结构类型的存储网络。这种方式改变了以往直接在BMC服务器嵌入硬件解码器,采用解码板实时编解码I/O的方式,实现了解码和存储分离,一方面可以更加方便和自由地根据实际需要的编解码通道数量和高标清格式的不同构建系统,另一方面有效利用资源的同时,方便设备损坏时,能够迅速修改网络设置或备机实现故障转移。
播出视频服务器系统采用了Seachange公司开发的BML服务器集群,该集群采用了RAID52的技术,由有两个由3个节点组成的独立的集群系统互为冗余镜像组成,分别作为播出的主备视频服务器。每个独立的集群中,每一个节点都有一块主机通道适配(HCA),带着两个InfiniBand线缆接口的,分别连接到两台交换机上,三个节点就是由在SeaChange公司的私有网络协议SeaNet下采用InfiniBand架构连接构成集群系统。当素材文件写入集群其中一个节点时,首先由集群控制器做第一次的RAID5,分成3个冗余块,通过InfiniBand构架的网络写入其他节点中;节点上的RAID卡对冗余块进行二次RAID5处理,形成数据条带写入磁盘阵列内,实现数据冗余和容错。
中央存储服务器由两个完全镜像冗余的UML系统组成,主要用于存储视频素材。UML系统由两个UML服务器,共享一个存储阵列组成。UML服务器通过SeaChange High Availablity Server(SHAS)的配置让两台由高速InfiniBand内部连接的UML服务器均可以访问在硬盘阵列中的所有硬盘。存储阵列采用RAID6的冗余容错技术,并把72块磁盘分成7个LUN,分别挂载在两个UML服务器上,UML服务器对于它所拥有的数据LUN有读/写权限。如果数据LUN属于另一个UML服务器,读写的操作由另一个UML服务器代理进行,实现了负载均衡和故障自动倒换。
三.播出存储系统的主要技术
1. RAID52
BML集群系统作为播出服务器,对于数据的安全性和可靠性要求极高,对于集群使用RAID52技术的同时,双集群完全镜像使得数据的容错能力极高。
那什么RAID52为什么它保证数据的安全呢?首先,我们要先了解一下什么RAID。RAID(Redundant Arrays of Independent Disks),即独立冗余磁盘阵列,指由多个独立的磁盘组成的具有冗余性的阵列。RAID通过条带化使得多块独立磁盘可以同时进行读写,提高了系统的I/O性能,具有高存储和高传输速率的性能;同时RAID采用数据校验甚至完全镜像备份的方式,使得丢失数据可以通过校验值或备份数据进行恢复,具有备份冗余性,确保数据的安全性。在RAID技术,RAID0,RAID1,RAID5,RAID6较为常用。
RAID5采用计算奇偶校验码(即异或XOR) 的方式来实现容错。例如,对于一个由5块磁盘形成了阵列组的RAID5存储系统,阵列磁盘在相同偏移处横向逻辑分割形成多个条带(Stripe)。当该系统接收一个数据后,会对该数据采用条带 (stripe) 技术分成4个块,并通过同一条带中一组数据进行奇偶校验的方式计算校验值,奇偶校验码的计算公式为:
(其中⊕表示异或计算操作)
该4个数据块和计算得来的校验块分布于同一条带中。当其中某一块磁盘故障或某扇区损坏时(如),则可以读出、、、的数据,通过 计算得到的数据写入新磁盘中。如果校验块损坏时则直接通过4个数据块重新计算校验值即可。当修改数据内容是,则可以先读出磁盘中其他三个数据块的值,重新计算新的校验值,覆盖原校验值,例如把数据块改写为时,则先读取读出、、的数据,计算出新的校验值;或者读出数据块和校验值的数据,计算,并把新数据块写覆盖旧数据。
由此可见, RAID5可以保证当有一块磁盘发生故障的时候,可以通过校验值重构丢失的数据,确保数据的安全性。
RAID52技术就是在RAID5的基础上再搭建一个RAID的结构,进一步保证数据安全。例如,我们搭建3个相同的系统,都是由5块磁盘形成了阵列组的RAID5存储系统,我们把这3个独立的存储系统用RAID5方式组成一个具有3个节点的集群,则我们称这个集群使用了RAID52技术。当该集群接收到数据是,首先集群RAID处理器分块并校验计算后,把数据均衡存储在3个节点中;节点收到数据后,节点的RAID处理器把数据再进行条带分块并校验计算后存储在磁盘中。同样的道理,这3个节点中任意一个节点发生故障,另外2个节点都可以重构出完整的数据内容。而每个节点可以允许一块磁盘发生故障,因此这个由15块硬盘组成的集群中,最大可以允许7块硬盘发生故障(即一个节点的磁盘全部故障,另外两个节点各有一块硬盘发生故障),避免了由于磁盘故障或者数据错误导致数据丢失,极大的保证了数据的安全。
2. RAID6
随着高清电视的逐渐普及对播出域的存储容量越来越高,这就要求中心存储的容量足够大,数据足够安全可靠。这种情况下,RAID6应运而生,而UML服务器系统的存储阵列即采用了该技术。在确保数据安全的前提下,RAID6的硬盘空间利用率比RAID52更高。
RAID6采用双重校验的方法,第一种校验方式采用异或 (XOR) 方法来计算;另一种则为一种独立的编码方式,例如有Reed-Solomon码、P-Code码、EVENODD码、RDP码等,计算得到另一个校验数据。也就是说,RAID6在RAID5的基础上增加了一个校验位,即同样是5块硬盘组成阵列系统,对于收到的数据,RAID处理器把数据分成3个数据块、、,根据这3个数据块通过奇偶校验的方式计算出校验码的数据,这部分过程和RAID5相同。在此基础上,RAID6根据3个数据块重新计算出一个独立的校验码Q,这两个相互独立的校验码校验码P、Q和3个数据块、、分布到5个磁盘中,使得该阵列系统最多可以允许有2块磁盘发生故障。即当一块磁盘发生故障时,可以通过其中一个校验信息恢复出数据;当两块磁盘发生故障时候,通过两个校验信息类似联立方程组方式,计算出发生故障的数据块的信息,写入磁盘中,完成数据重构。RAID6在充分利用存储空间的基础上,大大的提高了RAID的容错能力。[1]
3. SHAS软件
SHAS(SeaChange High Availablity Server)软件是SeaChange公司开发的应用于UML服务器的软件,是以对磁盘存储阵列提供RAID6数据保护和以性能和自动切换为目的的UML服务器的硬盘I/O冗余技术。
通过配置SHAS可以让两台UML服务器都访问同一个磁盘阵列中的硬盘,在对阵列同一个磁盘的读写中,保持读写一致性。它通过高速InfiniBand内部连接,在主机DRAM缓存间镜像回写数据,提供故障恢复功能。当其中一个节点发生故障时,另一个节点取得对磁盘的控制权,通过”Active-Active”的配置,保证服务器快速切换时可以持续访问存储阵列,维持系统运行的可持续性。[2-3]

图2 UML系统中网络结构
SHAS还对存储阵列提供RAID6的数据保护,提供了RAID6配置可供选择, 10+2和8+2配置包(表1)。在UML系统的存储阵列有6个存储盘箱,每个盘箱有12块硬盘,条带数据交叉穿过存储盘箱。[2-3]
sled 0 |
sled 1 |
sled 2 |
sled 3 |
sled 4 |
sled 5 |
|
8+2 配置 |
|
|
|
|
|
|
|
|
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
60 |
66 |
72 |
|
LUNs |
RAID Type |
Color Code |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
11 |
17 |
23 |
29 |
35 |
41 |
47 |
53 |
59 |
65 |
71 |
|
config |
RAID 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
metadata |
|
|
4 |
10 |
16 |
22 |
28 |
34 |
40 |
46 |
52 |
58 |
64 |
70 |
|
journal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date_1 |
RAID 6 |
|
3 |
9 |
15 |
21 |
27 |
33 |
39 |
45 |
51 |
57 |
63 |
69 |
|
Date_2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date_3 |
|
|
2 |
8 |
14 |
20 |
26 |
32 |
38 |
44 |
50 |
56 |
62 |
68 |
|
Date_4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date_5 |
|
|
1 |
7 |
13 |
19 |
25 |
31 |
37 |
43 |
49 |
55 |
61 |
67 |
|
Date_6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date_7 |
|
|
表1 RAID6的8+2配置
四.存储系统的数据安全保障
1. 冗余容错
首先,RAID技术提供了冗余容错的机制。
BML系统由三个节点服务器,每个节点有两块RAID卡,分别控制着两个LUN组。下图为Seachang的SeaView软件展示的BML系统中每个节点的BML服务器的系统展示图:

图3 BML服务器的系统展示图
由上图可以看出,广东台高清的BML服务器由24块硬盘组成,每12块硬盘组成一个RAID组由一块RAID卡控制做RAID5配置。所以在每一块RAID控制的12个硬盘中,允许有一块硬盘损坏,即每个节点至多允许有2块硬盘损坏,不影响数据安全。对于3个节点构成RAID52集群,任意两个节点就能够重构出整个集群的数据。所以该集群中,在极端的情况下,一个节点离线,另外两个节点仍然允许有4块硬盘(每个节点的每个RAID组各一块)损坏而不影响数据完整,极大保证数据安全。
UML服务器系统的存储阵列采用8+2配置包,其中包括2块存储config、metadata、journal 信息的硬盘,用RAID1技术镜像备份;70块数据盘分成7个LUN,应用了RAID6技术(8D+P+Q),即每个条带中包括8个数据段和2个校验段,数据段和校验段交叉存放于硬盘中,每个LUN最多允许任意2块硬盘发生故障。因此在最极端的情况下,不考虑负载和CPU等,在该存储矩阵中,最多允许15块硬盘发生故障。而每个LUN的10块硬盘均衡地分布在6个存储盘箱,每个盘箱都分布1-2块,如果整个存储盘箱发生故障或掉电时,对数据没有影响。
其次,完全镜像提高进一步的保证。两个BML集群组成镜像作为主备播出视频服务器,如果主视频服务器发生故障,可以迅速切换到备视频服务器,保证了安全播出。两个同构的UML服务器镜像冗余,高清播控系统的策略软件在每天凌晨2点会自动发起对当天新素材从存储矩阵到同构备份存储矩阵的迁移,完成该操作后,即相当于进行了RAID1的镜像备份,进一步确保了系统的稳定性。
2. 均衡负载和故障转移
中央存储系统由两个UML服务器节点,共享单一的矩阵存储阵列构成的UML系统。每一个UML服务器包括 Cent OS(Linux)操作系统、SHAS 存储子系统、以及 Blue Whale 文件系统或 Hyper FS 文件系统(图2所示)。每个UML服务器有独立的CentOS存储区,UML存储区以及Snapshot文件,并且每个系统硬盘镜像另一个UML服务器的分区和目录,使故障的一台UML服务器从对方服务器恢复原有系统软件。Blue Whale文件系统将由SHAS控制的磁盘阵列存储呈现为单文件系统卷,SHAS软件配置让两台UML服务器均可以访问在磁盘阵列中的所有硬盘。它通过高速InfiniBand内部连接,在主机DRAM缓存间镜像回写数据。SHAS还对存储阵列提供RAID6的8+2的配置包,将数据盘分为了7个LUN,按4:3划分为2组,任意一个UML服务器拥有4个数据LUN,对应的另一个UML服务器拥有3个数据LUN,主UML服务器还拥有Metadata, Config和Journal LUN 的所有权。UML服务器对于它所拥有的数据LUN有读/写权限。如果数据LUN属于另一个UML服务器,读写的操作由另一个UML服务器代理进行。在正常配置下,当两个UML服务器运行,被读写的数据通过Infiniband网络连接形成镜像数据显示。一旦其中其中一个UML服务器故障,余下的UML服务器获得所有7个数据LUN,以及Metadata, Config和Journal LUN。一旦故障的那台UML服务器恢复后,7个数据LUN的所有权将再次均匀分布在两个UML服务器上。通过以上的方式,两个UML服务器节点实现了均衡的负载和故障的转移,保证了数据的安全和事务的完整性处理。
五.结束语
安全一直都是播出的第一生命线,近些年来各大电视台不断的进行技术更新,不管是高清频道的建设还是全台网的系统改建中,中心存储的容量和可靠性的一直是播出领域的重点考虑要求。在广东台高清播出建设中,我们通过对于数据存储的安全性方面的冗余技术和故障转移技术的介绍和应用,达到了对于数据安全的要求,保证播出安全。
参考文献
[1] 冬瓜头(张冬).大话存储Ⅱ—存储系统架构与底层原理极限剖析[M].北京:清华大学出版社,2011.
[2] SeaChange International Inc. SeaChange UML Server Hardware Reference[R] .Acton, MA: SeaChange International Inc. ,2010.
[3] SeaChange International Inc. SeaChange UML System Management Guide[R] . Acton, MA: SeaChange International Inc. ,2010.