專利名稱:一種流媒體系統(tǒng)數(shù)據(jù)存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流媒體系統(tǒng)領(lǐng)域,具體來講是一種流媒體系統(tǒng)數(shù)據(jù)存儲方法。
背景技術(shù):
流媒體系統(tǒng)存儲的是大容量的媒體數(shù)據(jù),要對這些媒體數(shù)據(jù)完成大量并發(fā)的實時流傳輸,除了需要與之相應(yīng)的網(wǎng)絡(luò)IO帶寬,還要有與之匹配的磁盤IO帶寬。如何將數(shù)據(jù)存儲在流媒體服務(wù)器上,在服務(wù)器上如何組織各個磁盤,直接決定了服務(wù)器的并發(fā)能力和媒體數(shù)據(jù)的安全性。在目前的一些流媒體分布式存儲系統(tǒng)中,數(shù)據(jù)被分成很多切片,切片是按磁盤塊大小,條帶式地逐個存儲在各個磁盤上,系統(tǒng)配置的磁盤數(shù)量很可能小于每個切片的塊數(shù), 也就是說切片在每個磁盤都存有內(nèi)容,所有磁盤并發(fā)地讀取,以提高系統(tǒng)的IO帶寬。但磁盤是一個較容易損壞的設(shè)備,并且隨著使用時間的延長,磁盤性能逐漸下降,導(dǎo)致讀取有些磁盤塊時間過長,明顯降低系統(tǒng)IO帶寬。如果某個磁盤出現(xiàn)故障,系統(tǒng)要停止運行,再重新啟動提供服務(wù),如果沒有做數(shù)據(jù)備份,流媒體服務(wù)器上的絕大部分切片在此磁盤上的數(shù)據(jù)都將丟失,稱之為垃圾數(shù)據(jù),甚至可能造成重大損失。點播訪問時,看到的將是跳躍的畫面,更嚴重時,可能導(dǎo)致流媒體服務(wù)器的崩潰。為了恢復(fù)這部分數(shù)據(jù),最簡單有效的方法就是清空整個服務(wù)器上的內(nèi)容,重新上載或者從別服務(wù)器拷貝過來,可是這個數(shù)據(jù)量非常龐大,將消耗很長的時間和很大的網(wǎng)絡(luò)帶寬。但是,如果只拷貝那些丟失的塊數(shù)據(jù),并重新生成訪問時的索引記錄,又對系統(tǒng)軟件的復(fù)雜度要求較高,并不利于大規(guī)模的使用。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,提高系統(tǒng)的IO能力,切片保存兩份,分別位于不同磁盤,當(dāng)其中一個磁盤出現(xiàn)故障時, 讀取另一個磁盤的備份數(shù)據(jù),數(shù)據(jù)恢復(fù)簡單,不必消耗很長時間和較大網(wǎng)絡(luò)帶寬,對系統(tǒng)軟件的復(fù)雜程度要求較低。為達到以上目的,本發(fā)明采取的技術(shù)方案是一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,包括如下步驟(1)將流媒體文件按相同的播放時間長度切成切片;(2)將服務(wù)器每個磁盤分成容量相同的內(nèi)區(qū)和外區(qū)兩部分,內(nèi)區(qū)和外區(qū)均分成大小相等的磁盤塊,并建立索引信息;(3)將所述切片按磁盤塊大小,分成多個切片塊,并均勻分配到所有磁盤的外區(qū)的磁盤塊上;(4)將所述切片塊均勻分配到所有磁盤的內(nèi)區(qū)的磁盤塊上,且保證同一切片塊分配到不同磁盤的內(nèi)區(qū)和外區(qū);(5)將所述切片塊寫入其所在的外區(qū)和內(nèi)區(qū),并為切片塊所在外區(qū)和內(nèi)區(qū)分配的磁盤號和磁盤塊號生成分配索引信息;(6)若切片塊寫入時,某一區(qū)磁盤塊有錯誤,導(dǎo)致寫入錯誤,則在該區(qū)重新分配磁盤塊,并從另一區(qū)讀取正確的切片塊進行復(fù)制。在上述技術(shù)方案的基礎(chǔ)上,所述切片的存儲大小各不相同。在上述技術(shù)方案的基礎(chǔ)上,所述切片分配磁盤時,根據(jù)磁盤剩余存儲空間的大小, 先分配剩余存儲空間最大的磁盤。在上述技術(shù)方案的基礎(chǔ)上,存儲后按照以下步驟讀?、俑鶕?jù)請求播放的時間點,確定系統(tǒng)訪問的切片;②根據(jù)所述切片的分配索引信息,得到存儲在外區(qū)和內(nèi)區(qū)的磁盤號、磁盤塊號;③若外區(qū)所在磁盤正常工作,且該磁盤塊號有效,則優(yōu)先讀取外區(qū);否則讀取內(nèi)區(qū)所在磁盤的磁盤塊號;④若發(fā)現(xiàn)多次讀取某一磁盤塊出現(xiàn)錯誤,標記該磁盤塊不可用,并重新分配磁盤塊,發(fā)起復(fù)制。在上述技術(shù)方案的基礎(chǔ)上,所述系統(tǒng)訪問的切片由請求的播放時間點除以切片時間大小求得。在上述技術(shù)方案的基礎(chǔ)上,若所述磁盤不能正常工作時,從其它磁盤的內(nèi)區(qū)訪問, 在線更換磁盤,從其它磁盤將數(shù)據(jù)復(fù)制到更換后的磁盤。本發(fā)明的有益效果在于I.將切片按磁盤塊大小,分成很多個切片塊,逐個存儲在流媒體服務(wù)器的磁盤上, 磁盤并發(fā)地讀寫媒體內(nèi)容,提高系統(tǒng)的整體磁盤IO能力。II.如果發(fā)現(xiàn)系統(tǒng)中磁盤出現(xiàn)故障,可在線拔出這個磁盤,位于這個磁盤上的所有數(shù)據(jù),因為在別的磁盤上面均有備份數(shù)據(jù),系統(tǒng)還能正常提供服務(wù),保證播放畫面平穩(wěn)。III.當(dāng)插入一個新磁盤后,根據(jù)切片索引的記錄,將別的磁盤上本應(yīng)存儲在新磁盤上的切片,拷貝到新磁盤,數(shù)據(jù)恢復(fù)簡單,保證數(shù)據(jù)塊共有兩份拷貝以備磁盤的損壞,不必消耗很長時間和較大網(wǎng)絡(luò)帶寬,對系統(tǒng)軟件的復(fù)雜程度要求較低。
具體實施例方式以下對本發(fā)明的實施例作進一步詳細說明?!N流媒體系統(tǒng)數(shù)據(jù)存儲方法,本實施例中,流媒體服務(wù)器帶有4塊磁盤(D0、D1、 D2、D!3),每個磁盤的容量為1GB,磁盤存儲塊大小為2MB。本實施例存儲時步驟如下(1)將流媒體文件按相同的播放時間長度切成切片,且所述不同實施例中切片的存儲大小各不相同,本實施例中,切片大小為14MB。(2)分別將服務(wù)器每個磁盤(DO、DU D2、D3)分成外區(qū)和內(nèi)區(qū)兩部分,大小都是 500MB,外區(qū)地址為W,500MB),內(nèi)區(qū)地址為[500MB,1000MB)。內(nèi)區(qū)和外區(qū)均分成大小相等的磁盤塊,以磁盤塊為單位,為磁盤內(nèi)區(qū)和外區(qū)建立索引信息,外區(qū)可用磁盤塊號為[0, 249),內(nèi)區(qū)可用磁盤塊號為[250,499)。根據(jù)切片的大小和磁盤塊確定切片塊數(shù)量為7個, 存入外區(qū)的分別記為MO, Ml, WZ...., M6,存入內(nèi)區(qū)的分別記為SO, Si,S2.…,S6。(3)存儲時先分配外區(qū),為切片塊選擇磁盤塊時,要考慮磁盤的負載均衡,根據(jù)磁盤剩余存儲空間的大小,選擇外區(qū)剩余空間最大的磁盤進行分配。先將切片塊MO分配在第一個磁盤DO的第一個磁盤塊號B0,再將其他的切片塊按此方法分配。(4)將切片塊按照上述方法分配到內(nèi)區(qū),磁盤號的選擇應(yīng)與外區(qū)不能為同一個,再從剩下的磁盤中選擇內(nèi)區(qū)未用空間最大的磁盤,當(dāng)有多個磁盤內(nèi)區(qū)未用空間相等時,隨機選擇一個,不能按磁盤順序選擇,這樣可避免兩個磁盤互為備份的情況。(5)所述切片塊寫入其所在的外區(qū)和內(nèi)區(qū),并為切片塊所在外區(qū)和內(nèi)區(qū)分配的磁盤號、磁盤塊號生成分配索引信息。例如切片的第一個切片塊M0,分配在第一個磁盤DO的第一個磁盤塊B0,記為{M0,D0,B0},后續(xù)分配的數(shù)據(jù)塊記為{Ml,Dl,BO}、{M2,D2,B0}、{M3, D3,BO}、{M4,DO, Bi}、{M5,Dl, Bi}、{M6,D2,Bi}。在內(nèi)區(qū)建立的索引信息可以為{SO, Dl, BO}、{Si, D2, BO}、{S2, D3, B0}、{S3, DO, Bi}、{S4, D2, Bi}、{S5, D3, Bi}、{S6, DO, Bi}。(6)若切片塊寫入時,某一區(qū)磁盤塊有錯誤,導(dǎo)致寫入錯誤,則在此區(qū)重新分配磁盤塊,并從另一區(qū)讀取正確的切片塊進行復(fù)制。當(dāng)流媒體服務(wù)器讀取所述切片并播放時,切片存儲在所有的磁盤,這些磁盤都會順序收到讀請求,并完成讀操作。當(dāng)流媒體服務(wù)器需要支持大量并發(fā)的不同切片讀操作時, 系統(tǒng)磁盤10操作會被均勻分布到所有磁盤,很大地提高系統(tǒng)整體10吞吐量。且其讀取順序如下①根據(jù)請求播放的時間點,再除以切片時間大小,確定系統(tǒng)訪問的切片。②根據(jù)所述切片的分配索引信息,得到存儲在外區(qū)和內(nèi)區(qū)的磁盤號、磁盤塊號。③由于外區(qū)的10讀比內(nèi)區(qū)快,系統(tǒng)優(yōu)先選擇讀外區(qū)的磁盤塊。當(dāng)外區(qū)磁盤塊出故障或者此磁盤被拔出時,系統(tǒng)讀取內(nèi)區(qū)塊所在的磁盤,保證系統(tǒng)平穩(wěn)無間斷運行。④若發(fā)現(xiàn)多次讀取某一磁盤塊出現(xiàn)錯誤,標記該磁盤塊不可用,并重新分配磁盤塊,發(fā)起復(fù)制。若所述磁盤不能正常工作時,從其它磁盤的內(nèi)區(qū)訪問,在線更換磁盤,從其它磁盤將數(shù)據(jù)復(fù)制到更換后的磁盤。本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于,包括如下步驟(1)將流媒體文件按相同的播放時間長度切成切片;(2)將服務(wù)器每個磁盤分成容量相同的內(nèi)區(qū)和外區(qū)兩部分,內(nèi)區(qū)和外區(qū)均分成大小相等的磁盤塊,并建立索引信息;(3)將所述切片按磁盤塊大小,分成多個切片塊,并均勻分配到所有磁盤的外區(qū)的磁盤塊上;(4)將所述切片塊均勻分配到所有磁盤的內(nèi)區(qū)的磁盤塊上,且保證同一切片塊分配到不同磁盤的內(nèi)區(qū)和外區(qū);(5)將所述切片塊寫入其所在的外區(qū)和內(nèi)區(qū),并為切片塊所在外區(qū)和內(nèi)區(qū)分配的磁盤號和磁盤塊號生成分配索引信息;(6)若切片塊寫入時,某一區(qū)磁盤塊有錯誤,導(dǎo)致寫入錯誤,則在該區(qū)重新分配磁盤塊, 并從另一區(qū)讀取正確的切片塊進行復(fù)制。
2.如權(quán)利要求1所述的一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于所述切片的存儲大小各不相同。
3.如權(quán)利要求1所述的一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于所述切片分配磁盤時,根據(jù)磁盤剩余存儲空間的大小,先分配剩余存儲空間最大的磁盤。
4.如權(quán)利要求1所述的一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于存儲后按照以下步驟讀?、俑鶕?jù)請求播放的時間點,確定系統(tǒng)訪問的切片;②根據(jù)所述切片的分配索引信息,得到存儲在外區(qū)和內(nèi)區(qū)的磁盤號、磁盤塊號;③若外區(qū)所在磁盤正常工作,且該磁盤塊號有效,則優(yōu)先讀取外區(qū);否則讀取內(nèi)區(qū)所在磁盤的磁盤塊號;④若發(fā)現(xiàn)多次讀取某一磁盤塊出現(xiàn)錯誤,標記該磁盤塊不可用,并重新分配磁盤塊,發(fā)起復(fù)制。
5.如權(quán)利要求4所述的一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于所述系統(tǒng)訪問的切片由請求的播放時間點除以切片時間大小求得。
6.如權(quán)利要求4所述的一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,其特征在于若所述磁盤不能正常工作時,從其它磁盤的內(nèi)區(qū)訪問,在線更換磁盤,從其它磁盤將數(shù)據(jù)復(fù)制到更換后的磁 全文摘要
一種流媒體系統(tǒng)數(shù)據(jù)存儲方法,包括(1)流媒體文件按相同播放時間長度切成切片;(2)將服務(wù)器每個磁盤分成容量相同的內(nèi)、外區(qū)兩部分,內(nèi)、外區(qū)均分成大小相等的磁盤塊,并建立索引信息;(3)將切片按磁盤塊大小,分成多個切片塊,均勻分配到所有磁盤的外區(qū)的磁盤塊上;(4)將切片塊均勻分配到所有磁盤的內(nèi)區(qū)的磁盤塊上,且保證同一切片塊分配到不同磁盤的內(nèi)、外區(qū);(5)切片塊寫入其所在的內(nèi)、外區(qū),并為切片塊所在內(nèi)、外區(qū)分配的磁盤號、磁盤塊號生成分配索引信息;(6)若寫入出現(xiàn)某區(qū)磁盤塊錯誤,導(dǎo)致寫入錯誤,則此區(qū)重新分配磁盤塊,從另一區(qū)讀取正確的切片進行復(fù)制。該方法提高系統(tǒng)的IO能力,數(shù)據(jù)恢復(fù)簡單,系統(tǒng)簡單不復(fù)雜。
文檔編號G06F11/14GK102200935SQ201110105679
公開日2011年9月28日 申請日期2011年4月27日 優(yōu)先權(quán)日2011年4月27日
發(fā)明者馮軍, 吳凌俊, 吳思欣 申請人:烽火通信科技股份有限公司