視頻服務器的存儲結構
大的流媒體服務系統(tǒng)應具備1,000~10,000小時的節(jié)目存儲量,某些應用,如nCUBE公司最近推出個人錄像機(PVR)服務,則要求服務器能達到100,000小時存儲能力,若系統(tǒng)容量為100,000小時,不考慮差錯控制產生的存儲開銷,采用MPEG-2方式以3M流存儲,則凈存儲數(shù)據為140TB ,這是相當大的數(shù)據量,截止到2001年6月,還沒有一家數(shù)據存儲廠商能解決如此海量的數(shù)據存儲問題。這也說明了超大規(guī)模流媒體應用也將帶動數(shù)據存儲技術向前迅猛發(fā)展。
對于數(shù)據存儲問題的解決,有兩種可選的方式:分布存儲方式和集中存儲方式,以下分別介紹。
數(shù)據分布式存儲方式
流媒體數(shù)據分布式存儲是采用磁盤陣列在多個節(jié)點間分布的方式來存儲媒體數(shù)據,如圖7所示,由于節(jié)點之間可以通過互連I/O來進行相互通信,因此,這些磁盤陣列中存儲的數(shù)據從物理上來看雖然掛接在某個特定的節(jié)點,但是對所有的節(jié)點來說,這些數(shù)據都是可以訪問的,也就是說,數(shù)據是可以完全共享的。在邏輯上,系統(tǒng)通過數(shù)據管理屏蔽層的實現(xiàn),整個系統(tǒng)的所有媒體數(shù)據存儲設備就相當于一個巨大的存儲池,這就是單一存儲映像(Single Storage Image)的技術。
圖1.7:分布式數(shù)據存儲模型
可以看到,圖1.7給出的視頻服務器就是采用的這種方式,這種方式的視頻服務器由于采用了緊耦合節(jié)點互連方式,內部高速互聯(lián)網絡具有很高的帶寬,可以實現(xiàn)對遠程節(jié)點的數(shù)據進行直接存取和訪問,所有的數(shù)據對所有的節(jié)點來說都是可以訪問的,因此,可以實現(xiàn)所有的節(jié)點可以“同時”訪問同一數(shù)據內容。
集中式數(shù)據存儲方式
流媒體數(shù)據集中存儲是將現(xiàn)有的SAN或NAS系統(tǒng)作為視頻服務器的存儲部分,如圖1.8所示的系統(tǒng)采用SAN作為存儲方案,和圖1.7不一樣,每個節(jié)點可以通過FC交換機直接訪問所有的數(shù)據而不需要經過其它節(jié)點,因此,所有的數(shù)據對所有的節(jié)點來說已經是共享的了,數(shù)據的讀取可以不通過節(jié)點之間的內部高速互聯(lián)網絡,但是對所有的節(jié)點來說,這種數(shù)據共享必須是公平的,為了達到這一目的,必須采用一種均衡機制(如鎖機制、分時方式等)來協(xié)調節(jié)點對存儲設備的訪問。這種方式的好處就是可以將節(jié)點從數(shù)據存儲管理的負擔中解脫出來,實現(xiàn)數(shù)據處理和數(shù)據存儲的分離,同時對節(jié)點間的內部通信帶寬可以不需要占用。
圖1.8:集中式存儲模型
目前基于這種結構的視頻服務器也有相應的產品,或者提供了對這種存儲方式的支持,從網絡吞吐型應用的特性上說,采用這種方式的視頻服務器體系結構更加合理,這種結構的好處就是系統(tǒng)可以在線升級和加入新的存儲設備。但由于運營級視頻服務是網絡吞吐型應用,對帶寬的要求很高,因此要求存儲系統(tǒng)有很高的吞吐性能(100GB/s),而目前單個大型存儲系統(tǒng)的帶寬標稱值一般為1.6GB,3.2GB(16或32個FC通道),這對大型運營級視頻服務器來說遠遠不夠,如果非要這樣做,還必須增加FC交換機,并掛接多個分布式的RAID存儲子系統(tǒng),但這樣問題又暴露出來了,數(shù)據又出現(xiàn)了共享問題。最要命的是,由于FC設備的價格原因,這樣做代價很高。因此,目前少有大型視頻服務器采用這種存儲結構。
存儲還可以采用NAS方式,由于NAS技術用于視頻應用還不夠成熟,目前還沒有視頻服務器采用,這里就不再介紹
數(shù)據存儲帶寬問題
對于視頻服務器來說,數(shù)據存儲得帶寬是一個很重要的指標,由于目前節(jié)點內部的內存和互連I/O帶寬已經不再是瓶頸,目前的技術均可以達到1~2GB/s,而目前計算機的網絡I/O和存儲I/O接口的帶寬一般都在1Gbps以內。因此視頻服務器的吞吐性能主要取決于存儲I/O和網絡接口速率,集中式存儲和分布式存儲有著對數(shù)據的不同的訪問方式:
對于分布式存儲訪問,其系統(tǒng)內數(shù)據的處理路徑如下:
讀取數(shù)據路徑:節(jié)點(請求)->中轉節(jié)點(路由)->存儲設備 #p#page_title#e#
輸出數(shù)據路徑:存儲設備->中轉節(jié)點(路由)->節(jié)點(處理)->網絡接口(輸出)
對于集中式存儲訪問,其系統(tǒng)內數(shù)據的處理路徑如下:
讀取數(shù)據路徑:節(jié)點(請求)->FC交換->存儲設備
輸出數(shù)據路徑:存儲設備->FC交換->節(jié)點(處理)->網絡接口(輸出)
從數(shù)據的搬移路徑可以看出,無論是分布式存儲還是集中是存儲,必須保證存儲I/O的速度遠遠大于網絡接口I/O的速度,即消除存儲瓶頸,才能使網絡接口以全速向外吐出數(shù)據。從經驗來看,存儲I/O速度的標稱值必須配置成網絡I/O接口速度的3倍以上。如配置2塊100M網卡,則應該配置一個80MB/s的U2SCSI或100MB/s的FC存儲接口。如nCUBE公司的視頻服務器n4每個節(jié)點的輸出能力為500Mbps,對應的每節(jié)點存儲I/O配置了4條80MB/s的U2SCSI總線。
媒體數(shù)據存儲技術
媒體數(shù)據的存儲主要用到了數(shù)據分條(Striping)和校驗(parity)技術。數(shù)據校驗和分條是實現(xiàn)各種RAID技術的基礎,其基本原理可簡單描述如下:若采用n個stripe存儲數(shù)據,則存儲方法為,每存儲n-1 個stripe,就生成一個stripe存放前n-1個stripe的校驗(parity)數(shù)據,如此循環(huán)往復,如圖1.9:
圖 1.9:數(shù)據分條方式
計算校驗(parity)的算法如下:
parity = stripe1⊕stripe2⊕stripe3⊕... ⊕stripe(n-1)
其中“⊕”是邏輯異或(XOR)運算、或稱為模2加運算
若發(fā)生數(shù)據差錯,如stripe3發(fā)生錯誤或無法讀取,則用同樣的算法來恢復:
stripe3 = stripe1⊕stripe2⊕stripe4⊕... ⊕stripe(n-1)⊕parity
對于校驗除了XOR操作之外,還有其它的新技術,這里不再介紹。
stripe技術是數(shù)據分布式存儲技術的基礎,可以采用硬件方式,也可以采用軟件方式實現(xiàn),將一個大的文件均勻分條以后,就可以將其均勻的存放到到所有的存儲設備中。