【摘要】在播出領域視頻存儲系統中,如何解決保證數據容量、數據的高速讀寫和安全可靠成為重點。本文簡要介紹了廣東廣播電視臺高清系統的播出存儲系統框架,并著重介紹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.