摘 要: 硬盤播出視頻服務(wù)器的存儲(chǔ)子系統(tǒng)的發(fā)展歷程,并分析了各個(gè)階段的典型模式的特點(diǎn)。
關(guān)鍵詞: 視頻服務(wù)器 碼流 帶寬 RAID
當(dāng)前,廣播電視的播出系統(tǒng)正處于由模擬信號(hào)播出向數(shù)字信號(hào)播出的轉(zhuǎn)換時(shí)期,播出系統(tǒng)數(shù)字化的關(guān)鍵點(diǎn)之一就是選用合適的硬盤播出視頻服務(wù)器。硬盤播出視頻服務(wù)器從誕生至今雖然時(shí)間不久,卻經(jīng)歷了一系列的變化,其性能也是由多方面因素的綜合作用決定的。本文將從存儲(chǔ)子系統(tǒng)的角度回顧硬盤播出視頻服務(wù)器的發(fā)展歷程,并且分析各種存儲(chǔ)系統(tǒng)結(jié)構(gòu)對(duì)于硬盤播出視頻服務(wù)器的影響。
1 第一代存儲(chǔ)子系統(tǒng)——單機(jī)陣列
第一代存儲(chǔ)子系統(tǒng)的產(chǎn)品示意圖如圖1所示。
由于受成本的制約和技術(shù)的限制,早期視頻服務(wù)器的硬盤存儲(chǔ)系統(tǒng)相對(duì)比較簡(jiǎn)單。它們大多是一個(gè)獨(dú)立的單一系統(tǒng),擁有一套硬盤存儲(chǔ)陣列,采用RAID3 或RAID5技術(shù),擁有一層簡(jiǎn)單的容錯(cuò)功能。從視頻播出領(lǐng)域的應(yīng)用角度考慮,要保證播出安全,容錯(cuò)技術(shù)尤為重要。一層簡(jiǎn)單的容錯(cuò)能力難以滿足大型多頻道播出的安全要求。這種播出方式除安全問題尤其顯著外,它的負(fù)載能力也有很大的局限性,由于總線速度的限制,總共可以安裝的編解碼板的數(shù)量是有限的。隨著編解碼板數(shù)量的增加而帶來的巨大的I/O帶寬壓力,對(duì)于磁盤陣列的帶寬承受能力是一個(gè)很大的考驗(yàn)。如果系統(tǒng)負(fù)載過重,陣列帶寬占用率過高,或者說余量帶寬很小,則一旦陣列中的某個(gè)硬盤損壞,陣列的恢復(fù)將是一個(gè)極其漫長(zhǎng)的過程,而且處于恢復(fù)過程中的陣列的帶寬余量更小,使整個(gè)陣列面臨的危險(xiǎn)性顯著增加。這種方式的設(shè)計(jì)整體上沒有太多的冗余考慮,因而具有實(shí)現(xiàn)簡(jiǎn)單、低成本的特點(diǎn)。但這種結(jié)構(gòu)的播出服務(wù)器只能負(fù)責(zé)一些廣告和短片的插播,不能作為主播設(shè)備使用。
2 第二代存儲(chǔ)子系統(tǒng)——雙機(jī)鏡像
由于單機(jī)系統(tǒng)的安全原因,一些視頻服務(wù)器供應(yīng)商提出一個(gè)改良的方法,即對(duì)單一系統(tǒng)進(jìn)行一對(duì)一的鏡像配置。通過鏡像,存儲(chǔ)系統(tǒng)被分成主系統(tǒng)和備份系統(tǒng)二個(gè)內(nèi)容完全一樣的結(jié)構(gòu)。文件上載到主系統(tǒng)后,往備份系統(tǒng)做一對(duì)一的拷貝(如圖2)。對(duì)于目前這種結(jié)構(gòu)的主流產(chǎn)品而言,主系統(tǒng)和備份系統(tǒng)中間的連接通常采用的鏈路方式為光纖通道。
這種方式是通過增加存儲(chǔ)系統(tǒng)的冗余度,加了一倍的容量來提高系統(tǒng)的安全性。這種方式實(shí)現(xiàn)比較簡(jiǎn)單,從技術(shù)角度來看,它的存儲(chǔ)子系統(tǒng)與第一代產(chǎn)品在故障容錯(cuò)能力上是相同的,只是增加了拷貝功能。這種方式雖然在整體上增加了系統(tǒng)安全播出的可靠性,但是面對(duì)用戶對(duì)多頻道播出的需求,相對(duì)于第一代視頻服務(wù)器沒有什么提高,只是隨著IT技術(shù)的發(fā)展,在服務(wù)器的數(shù)據(jù)總線寬度達(dá)到64位,總線速度有了明顯提升之后,才能夠?qū)崿F(xiàn)在這種系統(tǒng)構(gòu)建方式下播出2~3個(gè)頻道。
這種構(gòu)建方式的不足之處在于:(1)存儲(chǔ)系統(tǒng)的利用率較低(不到50%),整體構(gòu)建成本較高。(2)單臺(tái)服務(wù)器上的編解碼板的正常運(yùn)作幾乎完全依賴于本機(jī)的存儲(chǔ)陣列。也就是說編解碼板與存儲(chǔ)陣列是綁定在一起的。在這種體系中,存儲(chǔ)損失一半的同時(shí)編解碼板也要有一半停止工作。(3)多頻道高碼流播出的負(fù)載能力有限。但是這種構(gòu)建方式也有著明顯的優(yōu)點(diǎn):原理比較簡(jiǎn)單,易于理解和控制
目前國(guó)內(nèi)許多廠商推出的小型播出視頻服務(wù)器采用這種構(gòu)建方式。當(dāng)前的主流進(jìn)口產(chǎn)品中也有采用雙機(jī)鏡像這種構(gòu)建方式的硬盤播出視頻服務(wù)服務(wù)器。以SONY的MAV-70XGI播出視頻服務(wù)器和SeaChange公司的BMS系列服務(wù)器為代表,其中MAV-70XGI服務(wù)器的存儲(chǔ)陣列基本配置由8塊硬盤組成,使用Raid3校驗(yàn)方式;BMS服務(wù)器的存儲(chǔ)陣列的基本配置由8塊或者12塊硬盤組成,使用Raid5校驗(yàn)方式。
3 基于SAN結(jié)構(gòu)存儲(chǔ)子系統(tǒng)的視頻服務(wù)器
鏡像存儲(chǔ)系統(tǒng)的做法限制了播出視頻服務(wù)器向多頻道高碼流方向的發(fā)展。因此采用鏡像存儲(chǔ)數(shù)據(jù)方式的服務(wù)器供應(yīng)商開始考慮使用新的方法來彌補(bǔ)鏡像設(shè)計(jì)的不足。其中一種方法是采用SAN(Storage Area Network)共享存儲(chǔ)結(jié)構(gòu)。典型的系統(tǒng)結(jié)構(gòu)是:只配置視頻I/O(沒有內(nèi)部大容量存儲(chǔ))的視頻服務(wù)器通過FC集線器或交換機(jī)與中央存儲(chǔ)盤塔連接。盤塔采用RAID3或RAID5硬盤陣列形式。盤塔提供素材共享,它通過集線器或交換機(jī)向各個(gè)輸入輸出視頻服務(wù)器提供存儲(chǔ)服務(wù)。其典型結(jié)構(gòu)如圖3所示。
圖3所示的SAN方案常采用對(duì)硬盤陣列分組的方式,下面以此為例進(jìn)行說明。系統(tǒng)中有4組硬盤陣列連接到交換機(jī)上。進(jìn)入到系統(tǒng)的視頻數(shù)據(jù)首先被分散到4個(gè)陣列,然后,進(jìn)入每個(gè)陣列的局部數(shù)據(jù)在陣列內(nèi)做RAID3或者RAD5的處理與記錄。在數(shù)據(jù)做RAID3或者RAID5前,先做了一次RAID0處理,這樣做有一個(gè)明顯的好處就是可以提高硬盤的總吞吐帶寬。隨著總的可用帶寬的增加,外部?jī)H僅負(fù)責(zé)I/O的播出服務(wù)器就可以在數(shù)量上有所增加,對(duì)于多頻道高碼流的負(fù)載能力就得到了顯著的增強(qiáng)。在這種體系結(jié)構(gòu)下一個(gè)機(jī)群系統(tǒng)可以負(fù)載4個(gè)以上的播出頻道。
由于播出系統(tǒng)對(duì)于系統(tǒng)安全性的要求是極高的,所以必須在SAN結(jié)構(gòu)帶來極大進(jìn)步的同時(shí),冷靜地看一下它仍存在的一些安全上的隱患:(1)為了消除理論上的單一崩潰點(diǎn),這種結(jié)構(gòu)下的文件服務(wù)器最好做成主備方式。(2)多頻道同時(shí)播出與上載同時(shí)進(jìn)行的情況下,作為數(shù)據(jù)交換核心的交換機(jī)將承受巨大的帶寬壓力,這就要求該交換機(jī)具有很強(qiáng)的負(fù)載能力,而且最好也形成主備結(jié)構(gòu)。(3)SAN結(jié)構(gòu)的四個(gè)存儲(chǔ)陣列之間是RAID0的關(guān)系,每個(gè)陣列內(nèi)部只擁有一層RAID3或者RAID5的保護(hù)。也就是說如果某個(gè)存儲(chǔ)陣列同時(shí)出現(xiàn)二塊以上的硬盤故障或者其他的可以引起整個(gè)陣列停機(jī)的故障,則丟失的數(shù)據(jù)將無從找回,這也就意味著將會(huì)出現(xiàn)播出事故。所以實(shí)際中使用的SAN產(chǎn)品,都在此采用了一套備份存儲(chǔ)陣列。以圖3為例,通常的產(chǎn)品構(gòu)建方式為陣列1、2為一體,陣列3、4為一體,后者作為前者的備份,二者之間為鏡像關(guān)系。這種解決辦法可以保證SAN結(jié)構(gòu)的硬盤播出服務(wù)器的數(shù)據(jù)存儲(chǔ)的安全性,但是這種解決方式也有著明顯的缺點(diǎn):(1)存儲(chǔ)利用率低、成本較高;(2)由于主備二套存儲(chǔ)之間的鏡像關(guān)系,主存儲(chǔ)除了要負(fù)擔(dān)外部I/O服務(wù)器的上載、數(shù)據(jù)寫入、播出及數(shù)據(jù)讀出外,還要把上載進(jìn)來的新素材數(shù)據(jù)通過中心交換機(jī)及時(shí)地傳送給鏡像的備存儲(chǔ),這就相當(dāng)于把中心交換機(jī)對(duì)主存儲(chǔ)的寫入帶寬的服務(wù)增加了一倍。也就是說中心交換機(jī)和主存儲(chǔ)體面臨的帶寬壓力更大了。
SAN結(jié)構(gòu)除了可以極大地提高服務(wù)器機(jī)群的總帶寬負(fù)載能力外,還帶來了一個(gè)革命性的變化,那就是打破了以往的服務(wù)器I/O與存儲(chǔ)陣列故障綁定的傳統(tǒng)。在這種結(jié)構(gòu)下外部的服務(wù)和內(nèi)部的存儲(chǔ)是相互獨(dú)立的,各自可以隨著自己的需要而進(jìn)行增減。存儲(chǔ)的故障也不會(huì)再影響到外部的I/O應(yīng)用服務(wù)。
與主備結(jié)構(gòu)相比,SAN存儲(chǔ)結(jié)構(gòu)的采用極大地提升了硬盤播出視頻服務(wù)器系統(tǒng)的總體性能,這是一次由視頻服務(wù)器體系結(jié)構(gòu)的改進(jìn)而帶來的明顯進(jìn)步,此后又有很多新的視頻服務(wù)器的體系結(jié)構(gòu)被提出,其中就包括基于RAID平方存儲(chǔ)結(jié)構(gòu)的視頻服務(wù)器。
共享存儲(chǔ)的SAN結(jié)構(gòu)被各大服務(wù)器廠商應(yīng)用于各自的產(chǎn)品。這些產(chǎn)品包括目前處于主流地位的一些服務(wù)器,例如GVG的PVS1000系列和PVS2000系列都可以構(gòu)建成SAN模式。
4 基于RAID平方存儲(chǔ)子系統(tǒng)的視頻服務(wù)器
要說明RAID平方存儲(chǔ)結(jié)構(gòu),首先要看一下RAID5的數(shù)據(jù)保護(hù)方式。一塊數(shù)據(jù)如果要通過RAID5控制單元(硬件或者軟件)寫入它所控制的多個(gè)存儲(chǔ)體,就必須經(jīng)過以下幾個(gè)步驟:數(shù)據(jù)分割,校驗(yàn)計(jì)算,存儲(chǔ)體分配。圖4表示了一個(gè)RAID5控制單元控制著五個(gè)存儲(chǔ)體。下面通過一個(gè)例子來看一下數(shù)據(jù)是如何寫入的。假設(shè)待寫入的數(shù)據(jù)塊大小為4MB。根據(jù)RAID5控制單元所控制的存儲(chǔ)體的個(gè)數(shù)(這里為5個(gè)),將這塊數(shù)據(jù)分成等長(zhǎng)的5-1=4段,每段大小為1MB,然后根據(jù)這4段數(shù)據(jù)計(jì)算出等長(zhǎng)的一段校驗(yàn)數(shù)據(jù)(校驗(yàn)方式為異或校驗(yàn))。這樣總共得到5個(gè)等長(zhǎng)的數(shù)據(jù)段,RAID5控制單元的每次寫入都是將這5個(gè)數(shù)據(jù)段放置在不同的存儲(chǔ)體上。四段原始數(shù)據(jù)在存儲(chǔ)體中以1、2、3、4表示,一段校驗(yàn)數(shù)據(jù)在存儲(chǔ)體中以xor表示。圖4表示了RAID5控制設(shè)備連續(xù)五次對(duì)存儲(chǔ)體進(jìn)行數(shù)據(jù)寫入的過程。RAID5控制單元的每次寫入是將各個(gè)數(shù)據(jù)段循環(huán)放置到不同的存儲(chǔ)體上。一個(gè)數(shù)據(jù)段不與某個(gè)存儲(chǔ)體固定對(duì)應(yīng)。數(shù)據(jù)讀出的過程也是按塊進(jìn)行的,每塊數(shù)據(jù)的讀出就是從所有存儲(chǔ)體同時(shí)讀出當(dāng)初寫入時(shí)相對(duì)應(yīng)的各段,然后檢查數(shù)據(jù)無誤后,去掉校驗(yàn)段數(shù)據(jù),組裝有效數(shù)據(jù)段進(jìn)行輸出。
RAID5的數(shù)據(jù)保護(hù)允許所控制的N(N≥3)個(gè)存儲(chǔ)體中的一個(gè)存儲(chǔ)體失效,這時(shí)缺失的數(shù)據(jù)由其他正常的N-1個(gè)存儲(chǔ)體的數(shù)據(jù)計(jì)算得到。如果再出現(xiàn)第二個(gè)存儲(chǔ)體失效,則RAID5存儲(chǔ)結(jié)構(gòu)將會(huì)因有效存儲(chǔ)體的不足而崩潰。
RAID平方存儲(chǔ)結(jié)構(gòu)是由三個(gè)或三個(gè)以上的獨(dú)立節(jié)點(diǎn)組成的分布式系統(tǒng),每個(gè)節(jié)點(diǎn)類似于一臺(tái)獨(dú)立的服務(wù)器,擁有自己的硬盤陣列,系統(tǒng)中采用點(diǎn)對(duì)點(diǎn)的連接方式。圖5給出了由四個(gè)節(jié)點(diǎn)組成的RAID平方存儲(chǔ)結(jié)構(gòu)。RAID平方存儲(chǔ)系統(tǒng)的數(shù)據(jù)寫入和讀出也是以數(shù)據(jù)塊的方式進(jìn)行的。它通過一個(gè)節(jié)點(diǎn)要輸入系統(tǒng)的數(shù)據(jù)塊,在該節(jié)點(diǎn)以系統(tǒng)所有節(jié)點(diǎn)為存儲(chǔ)體進(jìn)行RAID5數(shù)據(jù)處理,將得到的各段數(shù)據(jù)分送各個(gè)節(jié)點(diǎn)。這樣在節(jié)點(diǎn)之間就形成了第一次RAID5數(shù)據(jù)保護(hù)。到達(dá)各個(gè)節(jié)點(diǎn)的數(shù)據(jù),在其內(nèi)部RAID5控制卡的作用下,再經(jīng)過一次RAID5處理,最終到達(dá)節(jié)點(diǎn)內(nèi)部的陣列中的硬盤。數(shù)據(jù)在這個(gè)系統(tǒng)中得到了二次RAID5方式的數(shù)據(jù)保護(hù),這也是這種系統(tǒng)稱為RAID平方的原因。如果要從某個(gè)節(jié)點(diǎn)把數(shù)據(jù)從系統(tǒng)中讀出,則所經(jīng)歷的過程與寫入過程是相反的,每個(gè)節(jié)點(diǎn)要從內(nèi)部的陣列取出數(shù)據(jù),這由節(jié)點(diǎn)內(nèi)部的RAID5控制卡負(fù)責(zé),再將各個(gè)節(jié)點(diǎn)取出的數(shù)據(jù)送往負(fù)責(zé)對(duì)外服務(wù)的那個(gè)具體節(jié)點(diǎn),并由這個(gè)節(jié)點(diǎn)自身的處理系統(tǒng)負(fù)責(zé)將有效數(shù)據(jù)最終交給某個(gè)應(yīng)用。由RAID5的故障承受能力可以知道,每個(gè)節(jié)點(diǎn)允許內(nèi)部的陣列有一塊硬盤失效,整個(gè)系統(tǒng)允許出現(xiàn)一個(gè)節(jié)點(diǎn)的存儲(chǔ)失效。在這樣的情況下,通過數(shù)據(jù)恢復(fù)機(jī)制,系統(tǒng)的正常數(shù)據(jù)讀寫不會(huì)受到影響,采取適當(dāng)?shù)拇胧┛梢曰謴?fù)缺失的硬盤數(shù)據(jù)和節(jié)點(diǎn)數(shù)據(jù)。與主備存儲(chǔ)結(jié)構(gòu)相比,系統(tǒng)中不再存在相同文件的拷貝,每個(gè)文件只有一份。這樣RAID平方存儲(chǔ)方式可以達(dá)到很高的存儲(chǔ)利用率。例如,四個(gè)節(jié)點(diǎn),每節(jié)點(diǎn)八塊硬盤的RAID平方存儲(chǔ)系統(tǒng)的存儲(chǔ)利用率為3/4×7/8=65.625%。這種結(jié)構(gòu)中,單就一個(gè)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)來說是沒有意義的,是不完整的數(shù)據(jù),必須要整個(gè)系統(tǒng)同步工作才能得到有效的數(shù)據(jù)。
基于RAID平方存儲(chǔ)結(jié)構(gòu)的硬盤播出視頻服務(wù)器的I/O基本配置方式為:編碼板和解碼板分散安裝在各個(gè)節(jié)點(diǎn)上,一個(gè)頻道的主備二塊解碼板一般不安裝在同一個(gè)節(jié)點(diǎn)上,這樣可以避免因?yàn)橐粋€(gè)節(jié)點(diǎn)出現(xiàn)故障而導(dǎo)致某個(gè)頻道的播出事故。圖6為一個(gè)三節(jié)點(diǎn)的RAID平方存儲(chǔ)結(jié)構(gòu)的視頻服務(wù)器的I/O配置示例。圖中ch1、ch2、ch3分別表示頻道1、2、3。
這種方式下,單就一個(gè)節(jié)點(diǎn)的數(shù)據(jù)來說是沒有意義的,是不完整的數(shù)據(jù),必須整個(gè)系統(tǒng)同步工作才能得到有效的數(shù)據(jù)。由于RAID5對(duì)于數(shù)據(jù)的保護(hù),系統(tǒng)只允許一個(gè)節(jié)點(diǎn)失效,這種情況下該節(jié)點(diǎn)所丟失的數(shù)據(jù)可由其他存在的節(jié)點(diǎn)的數(shù)據(jù)計(jì)算得到。如果整個(gè)系統(tǒng)出現(xiàn)第二個(gè)失效節(jié)點(diǎn),丟失數(shù)據(jù)將無法得到,則這種結(jié)構(gòu)將因?yàn)闆]有足夠的有效數(shù)據(jù)而崩潰。
RAID平方存儲(chǔ)結(jié)構(gòu)的視頻服務(wù)器具備一些突出的優(yōu)點(diǎn):(1)高存儲(chǔ)利用率。RAID平方結(jié)構(gòu)存儲(chǔ)利用率比較高,實(shí)現(xiàn)了無備份存儲(chǔ),可以通過較小的硬盤或者較小的空間占用來實(shí)現(xiàn)相同于其他播出服務(wù)器的素材存儲(chǔ)時(shí)間。這樣陣列內(nèi)部的硬盤的故障恢復(fù)和整個(gè)節(jié)點(diǎn)的存儲(chǔ)的恢復(fù)都將可以較快地完成,從而減少了服務(wù)器處于危險(xiǎn)模式的時(shí)間,使服務(wù)器的故障概率得以降低。(2)帶寬壓力平衡。由于結(jié)構(gòu)內(nèi)部是點(diǎn)對(duì)點(diǎn)互連,所以系統(tǒng)工作的時(shí)候,帶寬壓力平均到各個(gè)節(jié)點(diǎn)之間的鏈路上,從而避免了帶寬壓力的集中,帶寬均衡可以使服務(wù)器的故障率得以降低。(3)受存儲(chǔ)故障牽連的I/O板卡減少。I/O板卡的分散使得在某個(gè)節(jié)點(diǎn)完全由于故障停止的情況下,受到影響的I/O板卡只是總量的1/N(N為節(jié)點(diǎn)數(shù)),從而進(jìn)一步降低了受到故障影響的I/O板卡比例。如果采用合理的控制方式,在一個(gè)節(jié)點(diǎn)僅僅發(fā)生存儲(chǔ)陣列故障的情況下,實(shí)現(xiàn)該節(jié)點(diǎn)編解碼板繼續(xù)工作是完全可能的。(4)系統(tǒng)升級(jí)成本低。這種方式的構(gòu)建的服務(wù)器,可以通過增加節(jié)點(diǎn)的方式實(shí)現(xiàn)服務(wù)器的升級(jí)——增加存儲(chǔ)、增加負(fù)載頻道的數(shù)量。從而擺脫了以往升級(jí)時(shí)必須購(gòu)買一套主備存儲(chǔ)設(shè)備的弊端。
這種結(jié)構(gòu)的視頻服務(wù)器目前只有SeaChange公司的BMC系列,該項(xiàng)技術(shù)尚處于專利保護(hù)期內(nèi)。這種服務(wù)器對(duì)于多頻道播出系統(tǒng)有不錯(cuò)的性價(jià)比,而對(duì)于三個(gè)以下頻道的播出則顯得有些昂貴。筆者認(rèn)為,這種服務(wù)器是多頻道播出的首選,目前該系列產(chǎn)品已經(jīng)服務(wù)于國(guó)內(nèi)許多多頻道播出的電視臺(tái)。
5 結(jié) 論
通過以上幾點(diǎn)比較可以看到,存儲(chǔ)子系統(tǒng)結(jié)構(gòu)的不同和存儲(chǔ)技術(shù)的差異,對(duì)于存儲(chǔ)容量、容錯(cuò)能力、存儲(chǔ)系統(tǒng)的升級(jí)性、負(fù)載能力以及性價(jià)比有著極其重要的影響。目前市場(chǎng)上基于各種存儲(chǔ)結(jié)構(gòu)的硬盤播出視頻服務(wù)器都可以找到,這就需要正準(zhǔn)備進(jìn)行播出系統(tǒng)數(shù)字化改造的電視臺(tái),根據(jù)自己的實(shí)際情況,選擇適合本臺(tái)的硬盤播出視頻服務(wù)器。
參考文獻(xiàn)
1 張琦.數(shù)字電視中心技術(shù).北京:北京廣播學(xué)院出版社,2000
2 杜百川.數(shù)字電視.北京:中國(guó)電子學(xué)會(huì)廣播電視技術(shù)分會(huì),1998
3 史品智.網(wǎng)絡(luò)多頻道硬盤自動(dòng)播控系統(tǒng)與數(shù)字中心存儲(chǔ).合肥:安徽省廣播電視局,2003