【摘要】在播出領(lǐng)域視頻存儲系統(tǒng)中,如何解決保證數(shù)據(jù)容量、數(shù)據(jù)的高速讀寫和安全可靠成為重點。本文簡要介紹了廣東廣播電視臺高清系統(tǒng)的播出存儲系統(tǒng)框架,并著重介紹BMLE集群系統(tǒng)和UML系統(tǒng)的主要技術(shù)和確保數(shù)據(jù)安全可靠機制。
【關(guān)鍵詞】 播出存儲 RAID 冗余 故障轉(zhuǎn)移
一.引言
隨著對信息技術(shù)和存儲技術(shù)的不斷發(fā)展,在電視播出中視頻數(shù)據(jù)存儲容量和數(shù)據(jù)可靠性的需求越來越高。電視臺媒體資源的播出領(lǐng)域有著大量的素材資源存儲的需求,同時作為播出末端,對于數(shù)據(jù)數(shù)據(jù)的高速讀寫和安全可靠的要求高。目前硬盤作為存儲的主要載體,讀寫速度有限,可靠性差的問題成為制約系統(tǒng)性能的關(guān)鍵問題。本文簡要介紹廣東廣播電視臺高清系統(tǒng)的播出存儲系統(tǒng)框架,并著重介紹該系統(tǒng)中視頻存儲服務(wù)器BMLE集群系統(tǒng)和UML系統(tǒng)的主要技術(shù),以及在該存儲系統(tǒng)中如何通過數(shù)據(jù)冗余容錯和故障轉(zhuǎn)移,提高保證系統(tǒng)的穩(wěn)定性,保證播出安全。
二.高清系統(tǒng)播出存儲框架簡介
廣東臺于2012年開始高清機房的建設(shè),搭建了高清混播的系統(tǒng)。這個過程中經(jīng)過了數(shù)次的升級和改造,目前系統(tǒng)形成了以三臺Seachange MCL(MediaClient)服務(wù)器、兩臺MSV(MediaServer)服務(wù)器共同作為上載服務(wù)器,完成上載視頻文件的編解碼;Seachange UML(Universal Media Library)服務(wù)器系統(tǒng)作為中央服務(wù)器存儲所有的視頻素材;兩臺Seachange BML(Broadcast Media Library)服務(wù)器組成集群作為播出服務(wù)器,連接六臺MCL服務(wù)器完成視頻素材的播出解碼播出的基本系統(tǒng)框架。即高清播出存儲系統(tǒng)中,主要結(jié)構(gòu)由編碼服務(wù)器—中央存儲服務(wù)器—播出存儲服務(wù)器—解碼服務(wù)器四級組成。具體系統(tǒng)結(jié)構(gòu)連接如圖1所示:

圖1 廣東臺高清播出存儲框架圖
系統(tǒng)中前后兩端的編解碼服務(wù)器采用了MCL服務(wù)器和MSV服務(wù)器,這兩種服務(wù)器采用了軟解碼的方式,具有實時編解碼I/O 功能,通過網(wǎng)絡(luò)連接分別與BML服務(wù)器組成的集群和UML服務(wù)器構(gòu)成NAS結(jié)構(gòu)類型的存儲網(wǎng)絡(luò)。這種方式改變了以往直接在BMC服務(wù)器嵌入硬件解碼器,采用解碼板實時編解碼I/O的方式,實現(xiàn)了解碼和存儲分離,一方面可以更加方便和自由地根據(jù)實際需要的編解碼通道數(shù)量和高標(biāo)清格式的不同構(gòu)建系統(tǒng),另一方面有效利用資源的同時,方便設(shè)備損壞時,能夠迅速修改網(wǎng)絡(luò)設(shè)置或備機實現(xiàn)故障轉(zhuǎn)移。
播出視頻服務(wù)器系統(tǒng)采用了Seachange公司開發(fā)的BML服務(wù)器集群,該集群采用了RAID52的技術(shù),由有兩個由3個節(jié)點組成的獨立的集群系統(tǒng)互為冗余鏡像組成,分別作為播出的主備視頻服務(wù)器。每個獨立的集群中,每一個節(jié)點都有一塊主機通道適配(HCA),帶著兩個InfiniBand線纜接口的,分別連接到兩臺交換機上,三個節(jié)點就是由在SeaChange公司的私有網(wǎng)絡(luò)協(xié)議SeaNet下采用InfiniBand架構(gòu)連接構(gòu)成集群系統(tǒng)。當(dāng)素材文件寫入集群其中一個節(jié)點時,首先由集群控制器做第一次的RAID5,分成3個冗余塊,通過InfiniBand構(gòu)架的網(wǎng)絡(luò)寫入其他節(jié)點中;節(jié)點上的RAID卡對冗余塊進行二次RAID5處理,形成數(shù)據(jù)條帶寫入磁盤陣列內(nèi),實現(xiàn)數(shù)據(jù)冗余和容錯。
中央存儲服務(wù)器由兩個完全鏡像冗余的UML系統(tǒng)組成,主要用于存儲視頻素材。UML系統(tǒng)由兩個UML服務(wù)器,共享一個存儲陣列組成。UML服務(wù)器通過SeaChange High Availablity Server(SHAS)的配置讓兩臺由高速InfiniBand內(nèi)部連接的UML服務(wù)器均可以訪問在硬盤陣列中的所有硬盤。存儲陣列采用RAID6的冗余容錯技術(shù),并把72塊磁盤分成7個LUN,分別掛載在兩個UML服務(wù)器上,UML服務(wù)器對于它所擁有的數(shù)據(jù)LUN有讀/寫權(quán)限。如果數(shù)據(jù)LUN屬于另一個UML服務(wù)器,讀寫的操作由另一個UML服務(wù)器代理進行,實現(xiàn)了負載均衡和故障自動倒換。
三.播出存儲系統(tǒng)的主要技術(shù)
1. RAID52
BML集群系統(tǒng)作為播出服務(wù)器,對于數(shù)據(jù)的安全性和可靠性要求極高,對于集群使用RAID52技術(shù)的同時,雙集群完全鏡像使得數(shù)據(jù)的容錯能力極高。
那什么RAID52為什么它保證數(shù)據(jù)的安全呢?首先,我們要先了解一下什么RAID。RAID(Redundant Arrays of Independent Disks),即獨立冗余磁盤陣列,指由多個獨立的磁盤組成的具有冗余性的陣列。RAID通過條帶化使得多塊獨立磁盤可以同時進行讀寫,提高了系統(tǒng)的I/O性能,具有高存儲和高傳輸速率的性能;同時RAID采用數(shù)據(jù)校驗甚至完全鏡像備份的方式,使得丟失數(shù)據(jù)可以通過校驗值或備份數(shù)據(jù)進行恢復(fù),具有備份冗余性,確保數(shù)據(jù)的安全性。在RAID技術(shù),RAID0,RAID1,RAID5,RAID6較為常用。
RAID5采用計算奇偶校驗碼(即異或XOR) 的方式來實現(xiàn)容錯。例如,對于一個由5塊磁盤形成了陣列組的RAID5存儲系統(tǒng),陣列磁盤在相同偏移處橫向邏輯分割形成多個條帶(Stripe)。當(dāng)該系統(tǒng)接收一個數(shù)據(jù)后,會對該數(shù)據(jù)采用條帶 (stripe) 技術(shù)分成4個塊,并通過同一條帶中一組數(shù)據(jù)進行奇偶校驗的方式計算校驗值,奇偶校驗碼的計算公式為:
(其中⊕表示異或計算操作)
該4個數(shù)據(jù)塊和計算得來的校驗塊分布于同一條帶中。當(dāng)其中某一塊磁盤故障或某扇區(qū)損壞時(如),則可以讀出、、、的數(shù)據(jù),通過 計算得到的數(shù)據(jù)寫入新磁盤中。如果校驗塊損壞時則直接通過4個數(shù)據(jù)塊重新計算校驗值即可。當(dāng)修改數(shù)據(jù)內(nèi)容是,則可以先讀出磁盤中其他三個數(shù)據(jù)塊的值,重新計算新的校驗值,覆蓋原校驗值,例如把數(shù)據(jù)塊改寫為時,則先讀取讀出、、的數(shù)據(jù),計算出新的校驗值;或者讀出數(shù)據(jù)塊和校驗值的數(shù)據(jù),計算,并把新數(shù)據(jù)塊寫覆蓋舊數(shù)據(jù)。
由此可見, RAID5可以保證當(dāng)有一塊磁盤發(fā)生故障的時候,可以通過校驗值重構(gòu)丟失的數(shù)據(jù),確保數(shù)據(jù)的安全性。
RAID52技術(shù)就是在RAID5的基礎(chǔ)上再搭建一個RAID的結(jié)構(gòu),進一步保證數(shù)據(jù)安全。例如,我們搭建3個相同的系統(tǒng),都是由5塊磁盤形成了陣列組的RAID5存儲系統(tǒng),我們把這3個獨立的存儲系統(tǒng)用RAID5方式組成一個具有3個節(jié)點的集群,則我們稱這個集群使用了RAID52技術(shù)。當(dāng)該集群接收到數(shù)據(jù)是,首先集群RAID處理器分塊并校驗計算后,把數(shù)據(jù)均衡存儲在3個節(jié)點中;節(jié)點收到數(shù)據(jù)后,節(jié)點的RAID處理器把數(shù)據(jù)再進行條帶分塊并校驗計算后存儲在磁盤中。同樣的道理,這3個節(jié)點中任意一個節(jié)點發(fā)生故障,另外2個節(jié)點都可以重構(gòu)出完整的數(shù)據(jù)內(nèi)容。而每個節(jié)點可以允許一塊磁盤發(fā)生故障,因此這個由15塊硬盤組成的集群中,最大可以允許7塊硬盤發(fā)生故障(即一個節(jié)點的磁盤全部故障,另外兩個節(jié)點各有一塊硬盤發(fā)生故障),避免了由于磁盤故障或者數(shù)據(jù)錯誤導(dǎo)致數(shù)據(jù)丟失,極大的保證了數(shù)據(jù)的安全。
2. RAID6
隨著高清電視的逐漸普及對播出域的存儲容量越來越高,這就要求中心存儲的容量足夠大,數(shù)據(jù)足夠安全可靠。這種情況下,RAID6應(yīng)運而生,而UML服務(wù)器系統(tǒng)的存儲陣列即采用了該技術(shù)。在確保數(shù)據(jù)安全的前提下,RAID6的硬盤空間利用率比RAID52更高。
RAID6采用雙重校驗的方法,第一種校驗方式采用異或 (XOR) 方法來計算;另一種則為一種獨立的編碼方式,例如有Reed-Solomon碼、P-Code碼、EVENODD碼、RDP碼等,計算得到另一個校驗數(shù)據(jù)。也就是說,RAID6在RAID5的基礎(chǔ)上增加了一個校驗位,即同樣是5塊硬盤組成陣列系統(tǒng),對于收到的數(shù)據(jù),RAID處理器把數(shù)據(jù)分成3個數(shù)據(jù)塊、、,根據(jù)這3個數(shù)據(jù)塊通過奇偶校驗的方式計算出校驗碼的數(shù)據(jù),這部分過程和RAID5相同。在此基礎(chǔ)上,RAID6根據(jù)3個數(shù)據(jù)塊重新計算出一個獨立的校驗碼Q,這兩個相互獨立的校驗碼校驗碼P、Q和3個數(shù)據(jù)塊、、分布到5個磁盤中,使得該陣列系統(tǒng)最多可以允許有2塊磁盤發(fā)生故障。即當(dāng)一塊磁盤發(fā)生故障時,可以通過其中一個校驗信息恢復(fù)出數(shù)據(jù);當(dāng)兩塊磁盤發(fā)生故障時候,通過兩個校驗信息類似聯(lián)立方程組方式,計算出發(fā)生故障的數(shù)據(jù)塊的信息,寫入磁盤中,完成數(shù)據(jù)重構(gòu)。RAID6在充分利用存儲空間的基礎(chǔ)上,大大的提高了RAID的容錯能力。[1]
3. SHAS軟件
SHAS(SeaChange High Availablity Server)軟件是SeaChange公司開發(fā)的應(yīng)用于UML服務(wù)器的軟件,是以對磁盤存儲陣列提供RAID6數(shù)據(jù)保護和以性能和自動切換為目的的UML服務(wù)器的硬盤I/O冗余技術(shù)。
通過配置SHAS可以讓兩臺UML服務(wù)器都訪問同一個磁盤陣列中的硬盤,在對陣列同一個磁盤的讀寫中,保持讀寫一致性。它通過高速InfiniBand內(nèi)部連接,在主機DRAM緩存間鏡像回寫數(shù)據(jù),提供故障恢復(fù)功能。當(dāng)其中一個節(jié)點發(fā)生故障時,另一個節(jié)點取得對磁盤的控制權(quán),通過”Active-Active”的配置,保證服務(wù)器快速切換時可以持續(xù)訪問存儲陣列,維持系統(tǒng)運行的可持續(xù)性。[2-3]

圖2 UML系統(tǒng)中網(wǎng)絡(luò)結(jié)構(gòu)
SHAS還對存儲陣列提供RAID6的數(shù)據(jù)保護,提供了RAID6配置可供選擇, 10+2和8+2配置包(表1)。在UML系統(tǒng)的存儲陣列有6個存儲盤箱,每個盤箱有12塊硬盤,條帶數(shù)據(jù)交叉穿過存儲盤箱。[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配置
四.存儲系統(tǒng)的數(shù)據(jù)安全保障
1. 冗余容錯
首先,RAID技術(shù)提供了冗余容錯的機制。
BML系統(tǒng)由三個節(jié)點服務(wù)器,每個節(jié)點有兩塊RAID卡,分別控制著兩個LUN組。下圖為Seachang的SeaView軟件展示的BML系統(tǒng)中每個節(jié)點的BML服務(wù)器的系統(tǒng)展示圖:

圖3 BML服務(wù)器的系統(tǒng)展示圖
由上圖可以看出,廣東臺高清的BML服務(wù)器由24塊硬盤組成,每12塊硬盤組成一個RAID組由一塊RAID卡控制做RAID5配置。所以在每一塊RAID控制的12個硬盤中,允許有一塊硬盤損壞,即每個節(jié)點至多允許有2塊硬盤損壞,不影響數(shù)據(jù)安全。對于3個節(jié)點構(gòu)成RAID52集群,任意兩個節(jié)點就能夠重構(gòu)出整個集群的數(shù)據(jù)。所以該集群中,在極端的情況下,一個節(jié)點離線,另外兩個節(jié)點仍然允許有4塊硬盤(每個節(jié)點的每個RAID組各一塊)損壞而不影響數(shù)據(jù)完整,極大保證數(shù)據(jù)安全。
UML服務(wù)器系統(tǒng)的存儲陣列采用8+2配置包,其中包括2塊存儲config、metadata、journal 信息的硬盤,用RAID1技術(shù)鏡像備份;70塊數(shù)據(jù)盤分成7個LUN,應(yīng)用了RAID6技術(shù)(8D+P+Q),即每個條帶中包括8個數(shù)據(jù)段和2個校驗段,數(shù)據(jù)段和校驗段交叉存放于硬盤中,每個LUN最多允許任意2塊硬盤發(fā)生故障。因此在最極端的情況下,不考慮負載和CPU等,在該存儲矩陣中,最多允許15塊硬盤發(fā)生故障。而每個LUN的10塊硬盤均衡地分布在6個存儲盤箱,每個盤箱都分布1-2塊,如果整個存儲盤箱發(fā)生故障或掉電時,對數(shù)據(jù)沒有影響。
其次,完全鏡像提高進一步的保證。兩個BML集群組成鏡像作為主備播出視頻服務(wù)器,如果主視頻服務(wù)器發(fā)生故障,可以迅速切換到備視頻服務(wù)器,保證了安全播出。兩個同構(gòu)的UML服務(wù)器鏡像冗余,高清播控系統(tǒng)的策略軟件在每天凌晨2點會自動發(fā)起對當(dāng)天新素材從存儲矩陣到同構(gòu)備份存儲矩陣的遷移,完成該操作后,即相當(dāng)于進行了RAID1的鏡像備份,進一步確保了系統(tǒng)的穩(wěn)定性。
2. 均衡負載和故障轉(zhuǎn)移
中央存儲系統(tǒng)由兩個UML服務(wù)器節(jié)點,共享單一的矩陣存儲陣列構(gòu)成的UML系統(tǒng)。每一個UML服務(wù)器包括 Cent OS(Linux)操作系統(tǒng)、SHAS 存儲子系統(tǒng)、以及 Blue Whale 文件系統(tǒng)或 Hyper FS 文件系統(tǒng)(圖2所示)。每個UML服務(wù)器有獨立的CentOS存儲區(qū),UML存儲區(qū)以及Snapshot文件,并且每個系統(tǒng)硬盤鏡像另一個UML服務(wù)器的分區(qū)和目錄,使故障的一臺UML服務(wù)器從對方服務(wù)器恢復(fù)原有系統(tǒng)軟件。Blue Whale文件系統(tǒng)將由SHAS控制的磁盤陣列存儲呈現(xiàn)為單文件系統(tǒng)卷,SHAS軟件配置讓兩臺UML服務(wù)器均可以訪問在磁盤陣列中的所有硬盤。它通過高速InfiniBand內(nèi)部連接,在主機DRAM緩存間鏡像回寫數(shù)據(jù)。SHAS還對存儲陣列提供RAID6的8+2的配置包,將數(shù)據(jù)盤分為了7個LUN,按4:3劃分為2組,任意一個UML服務(wù)器擁有4個數(shù)據(jù)LUN,對應(yīng)的另一個UML服務(wù)器擁有3個數(shù)據(jù)LUN,主UML服務(wù)器還擁有Metadata, Config和Journal LUN 的所有權(quán)。UML服務(wù)器對于它所擁有的數(shù)據(jù)LUN有讀/寫權(quán)限。如果數(shù)據(jù)LUN屬于另一個UML服務(wù)器,讀寫的操作由另一個UML服務(wù)器代理進行。在正常配置下,當(dāng)兩個UML服務(wù)器運行,被讀寫的數(shù)據(jù)通過Infiniband網(wǎng)絡(luò)連接形成鏡像數(shù)據(jù)顯示。一旦其中其中一個UML服務(wù)器故障,余下的UML服務(wù)器獲得所有7個數(shù)據(jù)LUN,以及Metadata, Config和Journal LUN。一旦故障的那臺UML服務(wù)器恢復(fù)后,7個數(shù)據(jù)LUN的所有權(quán)將再次均勻分布在兩個UML服務(wù)器上。通過以上的方式,兩個UML服務(wù)器節(jié)點實現(xiàn)了均衡的負載和故障的轉(zhuǎn)移,保證了數(shù)據(jù)的安全和事務(wù)的完整性處理。
五.結(jié)束語
安全一直都是播出的第一生命線,近些年來各大電視臺不斷的進行技術(shù)更新,不管是高清頻道的建設(shè)還是全臺網(wǎng)的系統(tǒng)改建中,中心存儲的容量和可靠性的一直是播出領(lǐng)域的重點考慮要求。在廣東臺高清播出建設(shè)中,我們通過對于數(shù)據(jù)存儲的安全性方面的冗余技術(shù)和故障轉(zhuǎn)移技術(shù)的介紹和應(yīng)用,達到了對于數(shù)據(jù)安全的要求,保證播出安全。
參考文獻
[1] 冬瓜頭(張冬).大話存儲Ⅱ—存儲系統(tǒng)架構(gòu)與底層原理極限剖析[M].北京:清華大學(xué)出版社,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.