一種適應(yīng)于多路并發(fā)寫入流媒體數(shù)據(jù)的分塊式存儲(chǔ)算法
【專利摘要】本發(fā)明為一種適應(yīng)于多路并發(fā)寫入流媒體數(shù)據(jù)的分塊式存儲(chǔ)算法。在安防監(jiān)控行業(yè)中,項(xiàng)目規(guī)模的不斷擴(kuò)大、高清前端攝像機(jī)的使用,對(duì)視頻服務(wù)器中存儲(chǔ)性能的要求越來越高。外部成百上千路攝像機(jī)視頻數(shù)據(jù)并發(fā)寫入單臺(tái)存儲(chǔ)服務(wù)器形成瓶頸的進(jìn)行分析。服務(wù)器異常情況下文件系統(tǒng)容易損壞,數(shù)據(jù)丟失嚴(yán)重。當(dāng)磁盤反復(fù)覆蓋寫后,產(chǎn)生大量的磁盤碎片,存儲(chǔ)性能隨之下降。本文針對(duì)上述問題進(jìn)行分析,提出繞過文件系統(tǒng)層,構(gòu)建自身緩存系統(tǒng)的策略,以及分塊式存儲(chǔ)思想和在此基礎(chǔ)上的可用塊查找算法。經(jīng)實(shí)際產(chǎn)品在線使用,驗(yàn)證了該專利的可行性和可靠性。
【專利說明】一種適應(yīng)于多路并發(fā)寫入流媒體數(shù)據(jù)的分塊式存儲(chǔ)算法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明主要應(yīng)用于安防網(wǎng)絡(luò)視頻監(jiān)控領(lǐng)域,專門針對(duì)網(wǎng)絡(luò)視頻監(jiān)控中產(chǎn)生的流媒體數(shù)據(jù),提供了一種優(yōu)化的存儲(chǔ)算法,該算法可應(yīng)用在網(wǎng)絡(luò)視頻監(jiān)控中所有的存儲(chǔ)設(shè)備上,以保證數(shù)據(jù)的高效、優(yōu)化存儲(chǔ)。
【背景技術(shù)】
[0002]近幾年來,隨著樓宇安防、園區(qū)安防以及平安城市的建設(shè),網(wǎng)絡(luò)化的視頻監(jiān)控呈現(xiàn)除了迅速的增長(zhǎng)趨勢(shì),視頻數(shù)據(jù)從標(biāo)清到高清,網(wǎng)絡(luò)攝像機(jī)產(chǎn)生的流媒體數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)揭曨l服務(wù)器時(shí)候,需要存儲(chǔ)起來并且保存一定的天數(shù),以便當(dāng)某些事件發(fā)生的時(shí)候用戶回放錄像。因而,存儲(chǔ)在網(wǎng)絡(luò)監(jiān)控中所占的比重也越來越大,其數(shù)據(jù)的安全性和穩(wěn)定性尤為重要,從而,對(duì)網(wǎng)絡(luò)化視頻的存儲(chǔ)要求也就越來越高。
[0003]現(xiàn)有的存儲(chǔ)技術(shù)都是基于系統(tǒng)默認(rèn)的存儲(chǔ)方式之上的,其基本的存儲(chǔ)思路是:所有的文件都構(gòu)建在操作系統(tǒng)的虛擬文件系統(tǒng)層VFS之上,當(dāng)系統(tǒng)有視頻數(shù)據(jù)寫入時(shí),首先,系統(tǒng)將把傳輸過來的視頻數(shù)據(jù)存儲(chǔ)成一個(gè)個(gè)小的文件,新的文件的產(chǎn)生條件可以進(jìn)行定義(如每隔一個(gè)小時(shí)、或文件大小超過200MB時(shí)),這樣,當(dāng)條件滿足時(shí),虛擬文件系統(tǒng)VFS就會(huì)產(chǎn)生一個(gè)新的文件,來進(jìn)行視頻數(shù)據(jù)的存儲(chǔ);然后,通過文件的方式將視頻數(shù)據(jù)寫進(jìn)磁盤高速緩存(Disk Caches),從而將磁盤上的數(shù)據(jù)緩存在內(nèi)存中;最后,系統(tǒng)不定期的通過磁盤緩存向硬盤寫入數(shù)據(jù),進(jìn)行存儲(chǔ)。
[0004]針對(duì)網(wǎng)絡(luò)視頻監(jiān)控中大量流媒體數(shù)據(jù)需要不間斷的進(jìn)行存儲(chǔ)來說,此種存儲(chǔ)方案存在以下弊端。
[0005]首先,由于網(wǎng)絡(luò)視頻數(shù)據(jù)存儲(chǔ)之前,需要先經(jīng)過磁盤高速緩存進(jìn)行存儲(chǔ),當(dāng)前端存在大量網(wǎng)絡(luò)攝像機(jī)進(jìn)行數(shù)據(jù)采集并需要存儲(chǔ)時(shí),某視頻數(shù)據(jù)在寫入硬盤之前,需要先將其對(duì)應(yīng)的緩存進(jìn)行填充,當(dāng)該緩存區(qū)域存儲(chǔ)的空間用完時(shí),然后才能寫入硬盤,清空緩存。由于為各個(gè)網(wǎng)絡(luò)視頻流所分配的緩存由系統(tǒng)默認(rèn)決定,因而緩存的硬盤寫入時(shí)間也不能夠確定,這樣,一旦當(dāng)服務(wù)器出現(xiàn)宕機(jī)、掉電等現(xiàn)象,磁盤高速緩存中的數(shù)據(jù)將無法寫入硬盤,緩存數(shù)據(jù)全部丟失,極有可能會(huì)造成某段數(shù)據(jù)的大量缺失,從而帶來嚴(yán)重的損失。
[0006]其次,在系統(tǒng)緩存將視頻數(shù)據(jù)寫入硬盤時(shí),由于系統(tǒng)采用默認(rèn)的分塊存儲(chǔ)方式,由于每個(gè)文件的大小不受控制,當(dāng)規(guī)定文件容量太小時(shí)候,由于高清攝像機(jī)的產(chǎn)生的數(shù)據(jù)量較大,如4Mbps,這樣,視頻數(shù)據(jù)在硬盤系統(tǒng)中將被分散成許多小文件進(jìn)行分布存儲(chǔ),這樣,由于頻繁的打開和關(guān)閉文件,從而造成額外的系統(tǒng)開銷,導(dǎo)致檢索的效率降低,影響系統(tǒng)的操作體驗(yàn);反之,若規(guī)定文件容量太大,由于系統(tǒng)是通過操作系統(tǒng)負(fù)責(zé)尋找可用的磁盤空間,這樣將會(huì)造成文件分布在磁盤上多個(gè)不同的位置,以至于磁盤尋道時(shí)間增加,磁盤讀寫速度降低,影響系統(tǒng)性能。
[0007]第三,由于磁盤高速緩存在向硬盤寫入數(shù)據(jù)時(shí),其寫入周期根據(jù)各個(gè)緩存空間的不同而不同,而且各個(gè)緩存空間是動(dòng)態(tài)變化的,從而,整個(gè)硬盤組幾乎一直處于驅(qū)動(dòng)狀態(tài),導(dǎo)致功耗增加,硬盤壽命降低。[0008]第四,在安防監(jiān)控行業(yè)中,項(xiàng)目規(guī)模的不斷擴(kuò)大、高清前端攝像機(jī)的使用,前端視頻碼流不斷增加,系統(tǒng)默認(rèn)存儲(chǔ)方式會(huì)出現(xiàn)瓶頸,導(dǎo)致其最多能夠處理的視頻碼流不會(huì)超過150Mbps,這樣對(duì)于單臺(tái)存儲(chǔ)設(shè)備,外部有幾百路甚至上千路攝像機(jī)視頻數(shù)據(jù)需要并發(fā)寫入服務(wù)器時(shí),則需要增加服務(wù)器的數(shù)量完成存儲(chǔ)需求。
[0009]最后,由于安防行業(yè)的特殊性,需要監(jiān)控設(shè)備長(zhǎng)期有效運(yùn)行,因而,設(shè)備的穩(wěn)定性顯得尤為重要,而視頻監(jiān)控?cái)?shù)據(jù)的特殊性,在于它將不斷的進(jìn)行大量的存儲(chǔ)和刪除過期數(shù)據(jù),因而,在傳統(tǒng)的存儲(chǔ)方式中,系統(tǒng)緩存將視頻數(shù)據(jù)寫入硬盤時(shí),由于系統(tǒng)采用默認(rèn)的分塊存儲(chǔ)方式,這樣,被刪除了數(shù)據(jù)的硬盤空間,在以后的使用過程中將不能夠重新被利用,導(dǎo)致大量的磁盤碎片產(chǎn)生,嚴(yán)重影響系統(tǒng)性能,一方面,會(huì)造成數(shù)據(jù)的寫入出現(xiàn)障礙,導(dǎo)致數(shù)據(jù)丟失;另一方面,碎片過多會(huì)影響整個(gè)文件系統(tǒng),導(dǎo)致整個(gè)系統(tǒng)的性能下降,必須關(guān)閉系統(tǒng),進(jìn)行磁盤清理,不僅如此,大量的碎片會(huì)導(dǎo)致硬盤利用率降低(經(jīng)統(tǒng)計(jì),硬盤利用率最多不會(huì)超過80%)和硬盤壽命減少,這將導(dǎo)致存儲(chǔ)的成本升高。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的就在于解決整個(gè)安防行業(yè)中的網(wǎng)絡(luò)視頻數(shù)據(jù)存儲(chǔ)的問題,本發(fā)明將克服上述存儲(chǔ)技術(shù)中的缺點(diǎn),從而能夠提供一種適合于安防行業(yè)中網(wǎng)絡(luò)視頻數(shù)據(jù)存儲(chǔ)的方法,以達(dá)到高效、穩(wěn)定、節(jié)能、無碎片的智慧存儲(chǔ)。
[0011]為了實(shí)現(xiàn)上述目的,本發(fā)明提出了一種適應(yīng)于多路并發(fā)寫入流媒體數(shù)據(jù)的分塊式存儲(chǔ)算法的思想,其基本思想是:在安防行業(yè)中,網(wǎng)絡(luò)視頻數(shù)據(jù)又被稱為流媒體數(shù)據(jù),當(dāng)流媒體數(shù)據(jù)在存儲(chǔ)過程中時(shí),寫入數(shù)據(jù)帶寬遠(yuǎn)大于讀出數(shù)據(jù)帶寬,也就是說,系統(tǒng)絕大部分帶寬開銷都在數(shù)據(jù)接收存儲(chǔ)上,并且很少有對(duì)最近寫入的數(shù)據(jù)進(jìn)行讀取應(yīng)用,所以本發(fā)明摒棄了文件系統(tǒng)存儲(chǔ)方式,以直接模式打開磁盤,繞開磁盤高速緩存,直接對(duì)磁盤指定的區(qū)域進(jìn)行讀寫操作。換句話說 ,本算法發(fā)明了一種由緩存系統(tǒng)(Cache System)使用一套更利于流媒體數(shù)據(jù)使用的專用的緩存機(jī)制,用以取代內(nèi)核提供的磁盤通用緩存機(jī)制。本存儲(chǔ)算法的實(shí)現(xiàn)步驟描述如下。
[0012]首先,初始化緩存系統(tǒng),將系統(tǒng)內(nèi)存的大部分空間分配給緩存系統(tǒng),按照伙伴系統(tǒng)算法對(duì)分配內(nèi)存進(jìn)行管理,結(jié)合流媒體數(shù)據(jù)的特點(diǎn)為每個(gè)前端設(shè)備分配寫入存儲(chǔ)塊時(shí)的緩存。流媒體數(shù)據(jù)寫入速度的一個(gè)重要指標(biāo)就是碼流,它表示了前端設(shè)備每秒產(chǎn)生數(shù)據(jù)量的大小,而前端設(shè)備碼流并不穩(wěn)定,因此需要計(jì)算前端設(shè)備每秒產(chǎn)生的視頻流量(碼流)Q的數(shù)學(xué)期望。為前端設(shè)備分配緩存大小Fb設(shè)置碼流的常數(shù)C倍,它表示系統(tǒng)能夠緩沖C秒的數(shù)據(jù),公式如下:
Fh = CEiQ) = C Y IQkPkI
Lmd.[0013]第二,初始化硬盤存儲(chǔ)系統(tǒng),以直接模式打開磁盤,將磁盤按照固定的大小,均分成若干個(gè)存儲(chǔ)塊(chunk),每個(gè)前端設(shè)備向?yàn)槠浞峙涞闹付ù鎯?chǔ)塊寫入數(shù)據(jù),當(dāng)存儲(chǔ)塊寫滿后按照可用塊探測(cè)算法(如下述介紹)查找可用塊。系統(tǒng)以單線程多路異步寫入的方式,處理多路并發(fā)寫入的問題,有效降低多線程開銷,使得系統(tǒng)更加穩(wěn)定。
[0014]可用塊探測(cè)算法描述。[0015]當(dāng)前端設(shè)備向?yàn)槠浞峙涞拇鎯?chǔ)塊寫滿后,按照可用塊探測(cè)算法查找可用塊。假設(shè)系統(tǒng)中總的存儲(chǔ)塊數(shù)目為T,所有前端設(shè)備產(chǎn)生總碼流的數(shù)學(xué)期望為E (S),當(dāng)前前端設(shè)備碼流在總碼流中的比重為P= upper (E (S) /E (Q)),已經(jīng)寫滿存儲(chǔ)塊a,正在探測(cè)下一個(gè)可用塊,探測(cè)算法Find Chunk O描述如下:
步驟1:初始化變量循環(huán)變量i=0、k=l,臨時(shí)變量nTmpBlock=0 ;
步驟2:判斷循環(huán)變量i值是否小于P,若條件成立繼續(xù)向下執(zhí)行;
步驟3:求下一個(gè)可能的可用存儲(chǔ)塊nActBlock:nTmpBlock = a + (P -1)*k; nActBlock = nTmpBlock % 總塊數(shù) T ;
步驟4:判斷nTmpBlock是否小于當(dāng)前塊a+總塊數(shù)T,若條件不成立跳到步驟6,若條件成立繼續(xù)向下執(zhí)行;
步驟5:判斷nActBlock是否為未被其余前端設(shè)備使用,或者該塊所存儲(chǔ)的錄像已經(jīng)過期,如果條件成立則此次成功找到可用塊,程序返回,如果沒有找到,循環(huán)變量k++,繼續(xù)探測(cè),跳到步驟3;
步驟 6:nTmpBlock = O, i++,跳到步驟 2。
[0016]第三,當(dāng)有流媒體數(shù)據(jù)進(jìn)入系統(tǒng)存儲(chǔ)時(shí),此時(shí)不再通過VFS分配存儲(chǔ)文件進(jìn)行存儲(chǔ),而是根據(jù)設(shè)備分配緩沖計(jì)算公式,從緩存系統(tǒng)中為前端設(shè)備分配對(duì)應(yīng)的緩存;從而該設(shè)備的數(shù)據(jù)流將一直寫入為其指定的緩存空間。
[0017]第四,在硬盤空間為前端的設(shè)備分配存儲(chǔ)塊,當(dāng)緩沖區(qū)寫滿后,則可向其指定的存儲(chǔ)塊寫入數(shù)據(jù),此時(shí),應(yīng)檢測(cè)存儲(chǔ)塊是否足以容納當(dāng)前緩存區(qū)數(shù)據(jù),若能,則直接寫入;若不能則用可用塊探測(cè)算法探測(cè)下一個(gè)可用的存儲(chǔ)塊,并分配給該前端設(shè)備,作為當(dāng)前存儲(chǔ)塊。
[0018]第五,以異步寫的方式向指定存儲(chǔ)塊的區(qū)域?qū)懭刖彌_區(qū)中的數(shù)據(jù),并且將該緩沖區(qū)加入忙緩沖區(qū)隊(duì)列。檢測(cè)忙緩沖區(qū)隊(duì)列中是否有完成異步寫入的緩沖,并由緩存系統(tǒng)回收已完成異步寫入的緩沖區(qū),此時(shí)重新根據(jù)緩存公式為設(shè)備分配緩存空間,繼續(xù)執(zhí)行存儲(chǔ)。
[0019]本存儲(chǔ)算法應(yīng)用于流媒體視頻存儲(chǔ)帶來的價(jià)值有以下幾點(diǎn)。
[0020]1.從安防行業(yè)的安全性上來說,由于本算法摒棄了文件系統(tǒng)的存儲(chǔ)方式,以直接模式打開磁盤,繞開了磁盤高速緩存,從而直接對(duì)磁盤指定的區(qū)域進(jìn)行讀寫操作,而各路視頻數(shù)據(jù)在緩存中的大小事根據(jù)算法進(jìn)行分配的,從而其大小具有固定性和可知性,從而在服務(wù)器異常情況下,可以最大限度的降低視頻數(shù)據(jù)的丟失,保證了監(jiān)控?cái)?shù)據(jù)的安全性。
[0021]2.另一方面,由于系統(tǒng)將磁盤按照固定的大小,均分成若干個(gè)存儲(chǔ)塊(chunk),每個(gè)前端設(shè)備只能向?yàn)槠浞峙涞拇鎯?chǔ)塊寫入數(shù)據(jù),當(dāng)存儲(chǔ)塊寫滿后按照可用塊探測(cè)算法查找可用塊,再從此塊進(jìn)行存儲(chǔ),從而,有效消除了由于硬盤數(shù)據(jù)反復(fù)存取造成的碎片問題,系統(tǒng)性能更加穩(wěn)定,硬盤使用壽命增加,硬盤利用率達(dá)到100%,在大型的監(jiān)控項(xiàng)目,如平安城市的建設(shè)中,這將為系統(tǒng)后臺(tái)存儲(chǔ)帶來巨大的經(jīng)濟(jì)效益。
[0022]3.本發(fā)明由于采用自制的緩存空間進(jìn)行數(shù)據(jù)緩存,因而其向硬盤進(jìn)行寫入的周期是固定的,這使得硬盤組不需任何時(shí)候都進(jìn)行驅(qū)動(dòng),而只是周期性的進(jìn)行驅(qū)動(dòng),這將使存儲(chǔ)設(shè)備的功耗大大降低,成為節(jié)能綠色產(chǎn)品。
[0023]4.由于本存儲(chǔ)算法避免了系統(tǒng)服務(wù)器對(duì)于處理大規(guī)模視頻碼流的瓶頸,本算法可以極大提高存儲(chǔ)服務(wù)器的使用性能,單臺(tái)存儲(chǔ)服務(wù)器設(shè)備能夠處理的視頻碼流可以超過500Mbps ο[0024]5.由于整個(gè)存儲(chǔ)過程由本發(fā)明的算法所控制,根據(jù)大量實(shí)驗(yàn)和實(shí)際應(yīng)用環(huán)境中表現(xiàn),其首次命中率(循環(huán)中第一次計(jì)算)達(dá)到80%以上,S卩,硬盤的讀取效率增加,設(shè)備性能提高,用戶交互性得到很好的改善。
【專利附圖】
【附圖說明】
[0025]附圖1是當(dāng)前操作系統(tǒng)默認(rèn)的存儲(chǔ)過程的示意圖。
[0026]附圖2是當(dāng)前操作系統(tǒng)在存儲(chǔ)時(shí)碎片產(chǎn)生過程示意圖。
[0027]附圖3是使用本發(fā)明算法后網(wǎng)絡(luò)視頻數(shù)據(jù)存儲(chǔ)過程示意圖。
[0028]附圖4是使用本發(fā)明算法后無磁盤碎片原因示意圖。
[0029]附圖5是本發(fā)明在存儲(chǔ)系統(tǒng)中的整個(gè)工作流程示意圖。
[0030]附圖6是本發(fā)明存儲(chǔ)算法中的存儲(chǔ)可用塊探測(cè)算法流程示意圖。
【具體實(shí)施方式】
[0031 ] 下面結(jié)合附圖進(jìn)一步說明本發(fā)明的技術(shù)方案。
[0032]對(duì)比附圖1和附圖3,可以看到,網(wǎng)絡(luò)視頻在進(jìn)入系統(tǒng)準(zhǔn)備進(jìn)行存儲(chǔ)之前,默認(rèn)的存儲(chǔ)方式是將視頻數(shù)據(jù)通過虛擬文件系統(tǒng)存儲(chǔ)成一個(gè)個(gè)的小文件,然后再通過文件的方式將視頻數(shù)據(jù)寫進(jìn)磁盤高速緩存,最后不定期將數(shù)據(jù)寫進(jìn)硬盤。本發(fā)明針對(duì)流媒體數(shù)據(jù)的特殊性,對(duì)整個(gè)數(shù)據(jù)存儲(chǔ)過程進(jìn)行了改進(jìn)。
[0033]參見附圖1,前端網(wǎng)絡(luò)視頻數(shù)據(jù)進(jìn)入系統(tǒng)準(zhǔn)備進(jìn)行存儲(chǔ),此時(shí)直接進(jìn)入虛擬文件系統(tǒng),而摒棄了首先通過文件來存儲(chǔ)數(shù)據(jù)的做法,隨后數(shù)據(jù)進(jìn)入自定義的緩存系統(tǒng)(此緩存由系統(tǒng)內(nèi)存分配),而并非進(jìn)入系統(tǒng)默認(rèn)的磁盤高速緩存,具體實(shí)施方案描述如下。
[0034]1.將系統(tǒng)內(nèi)存的大部分空間分配給緩存系統(tǒng),按照伙伴系統(tǒng)算法(為解決系統(tǒng)外碎片而使用的算法)對(duì)分配內(nèi)存進(jìn)行管理。
[0035]2.結(jié)合流媒體數(shù)據(jù)的特點(diǎn)為每個(gè)前端設(shè)備分配寫入存儲(chǔ)塊時(shí)的緩存。如附圖5,假如前端有兩路高清網(wǎng)絡(luò)視頻數(shù)據(jù)進(jìn)入系統(tǒng),根據(jù)緩存分配公式,假設(shè)C取2,表示視頻數(shù)據(jù)可以在緩存中存放2秒,假如計(jì)算設(shè)備I碼流的期望值為4Mbps,設(shè)備2碼流的期望值為2Mbps,,則系統(tǒng)緩存為設(shè)備I提供的緩存空間為2*4=8Mb,為設(shè)備2提供的緩存空間為2*2=4Mb,一旦初始化后,只要前端設(shè)備視頻碼流穩(wěn)定,則分配的緩存空間基本保持恒定,此時(shí),設(shè)備I和設(shè)備2的數(shù)據(jù)分別存儲(chǔ)到各自對(duì)應(yīng)的緩存;2秒以后,各個(gè)緩存中的視頻數(shù)據(jù)寫滿,此時(shí)驅(qū)動(dòng)硬盤組,將緩存中的數(shù)據(jù)寫進(jìn)硬盤。
[0036]繞開系統(tǒng)高速緩存而使用自定義緩存的目的描述如下。
[0037]—方面,因?yàn)榇疟P高速緩存的優(yōu)勢(shì)是對(duì)于經(jīng)常使用的數(shù)據(jù),由于其事先存在于緩存,因而讀寫速度較快,而在監(jiān)控行業(yè),視頻流數(shù)據(jù)在絕大部分時(shí)間都是處于存儲(chǔ)狀態(tài),無需對(duì)它進(jìn)行操作,此時(shí),由于磁盤高速緩存為各個(gè)視頻設(shè)備分配的存儲(chǔ)空間是不可控的,即:可能發(fā)生某段視頻數(shù)據(jù)會(huì)大量滯留于緩存內(nèi)部,此時(shí)若系統(tǒng)斷電或宕機(jī),此段數(shù)據(jù)的丟失可能會(huì)帶來嚴(yán)重影響。而自定義的緩存系統(tǒng),其為每個(gè)視頻設(shè)備分配的存儲(chǔ)空間是可控并且可知的,這樣,即使斷電,也不會(huì)出現(xiàn)某段視頻大量丟失的情況。
[0038]另一方面,由于磁盤高速緩存為各個(gè)視頻設(shè)備分配的存儲(chǔ)空間是不可控,這也造成了緩存向硬盤寫入數(shù)據(jù)的時(shí)間不可控,基本上硬盤組需要一直驅(qū)動(dòng),功耗增加,硬盤壽命減少;而自定義的緩存系統(tǒng),其像硬盤寫入數(shù)據(jù)的時(shí)間是固定的,如每隔2秒寫入一次,因而硬盤只需要每隔2秒驅(qū)動(dòng)一次進(jìn)行寫入即可。
[0039]3.如附圖5所示,在經(jīng)歷了步驟1,兩臺(tái)設(shè)備將視頻數(shù)據(jù)寫入到緩存系統(tǒng)中之后,當(dāng)緩存寫滿時(shí),進(jìn)入步驟2,將數(shù)據(jù)寫入硬盤,此時(shí)硬盤并非按照默認(rèn)的存儲(chǔ)方式(進(jìn)行分段、分頁存儲(chǔ)),而是將硬盤劃分為若干個(gè)相同大小的存儲(chǔ)塊(chunk),初始時(shí),為設(shè)備分配兩個(gè)存儲(chǔ)塊,如:設(shè)備I視頻數(shù)據(jù)存入chunkO,設(shè)備2視頻數(shù)據(jù)存入chunk5,在此后的一段時(shí)間里,兩臺(tái)設(shè)備的視頻數(shù)據(jù)將固定存入到此存儲(chǔ)塊里,直到此存儲(chǔ)塊空間耗盡。當(dāng)此存儲(chǔ)塊的空間用完時(shí),進(jìn)入步驟3 (附圖5),再根據(jù)存儲(chǔ)探測(cè)塊探測(cè)算法,找到下一個(gè)進(jìn)行存儲(chǔ)的chunk,如此不斷循環(huán);探測(cè)方式如下(參見附圖6)。
[0040](I)假設(shè)硬盤被劃分為16個(gè)存儲(chǔ)塊,即T=16, chunkO- chunkl5,前端兩臺(tái)視頻設(shè)備所產(chǎn)生的總碼流的數(shù)學(xué)期望為6Mbps,則兩臺(tái)視頻設(shè)備的碼流在總碼流中的比重Pl=Upper (6/4) =2, Pl=Upper (6/2) =3。
[0041](2)若視頻設(shè)備I已經(jīng)寫滿chunkO,根據(jù)算法計(jì)算,可能的可用存儲(chǔ)塊nActBlock=nTmpBlock % 總塊數(shù) T ;nTmpBlock = a + (P -1 ) * k ;則 nTmpBlock=0+(2_0)*l=2,求得nActBlock=2%16=2 ;此時(shí)若chunk2空閑,或者是該空間上的錄像已經(jīng)過期,則視頻設(shè)備2的視頻流數(shù)據(jù)將在chunk2上進(jìn)行存儲(chǔ);若chunk2已經(jīng)被占用,則將i和k的值加I,繼續(xù)計(jì)算,直到找到空閑區(qū)間為止。設(shè)備2的存儲(chǔ)塊尋找方式與I相同。
[0042](3)在視頻數(shù)據(jù)刪除的過程中,只要有空間被空閑出來,就有機(jī)會(huì)被其他視頻數(shù)據(jù)存儲(chǔ)用到,不會(huì)出現(xiàn)小空間不能夠被利用的情況。
[0043]視頻數(shù)據(jù)不采用系統(tǒng)默認(rèn)的段頁式存儲(chǔ)方式,而采用此種存儲(chǔ)方式,其目的是。
[0044]參照附圖2,系統(tǒng)默認(rèn)的段頁式存儲(chǔ),由于在存儲(chǔ)過程中,硬盤的存儲(chǔ)空間劃分的各個(gè)存儲(chǔ)空間的大小是不相同 的,在按照該系統(tǒng)的尋找算法,一些比較小的空間將很可能不能夠被利用,或者是在視頻數(shù)據(jù)的反復(fù)刪除后,將留下許多不能被重用的小空間,從而產(chǎn)生碎片(而啟動(dòng)硬盤的碎片整理機(jī)制是一項(xiàng)耗時(shí)和耗資源的方法),而經(jīng)過本發(fā)明存儲(chǔ)算法存儲(chǔ)視頻數(shù)據(jù)(參照附圖4),各個(gè)視頻的存儲(chǔ)位置變化很少,只有在將當(dāng)前的空間存儲(chǔ)滿之后,才會(huì)轉(zhuǎn)而尋找下一個(gè)空間進(jìn)行存儲(chǔ),由于此時(shí)的流媒體數(shù)據(jù)并非以文件方式進(jìn)行存儲(chǔ),因而,無論是多小的空間,仍然可以利用,從而,使得硬盤空間完全不存在碎片。并且,提到的可用塊探測(cè)算法,根據(jù)大量實(shí)驗(yàn)和實(shí)際應(yīng)用環(huán)境中表現(xiàn),其首次命中率(循環(huán)中第一次計(jì)算)達(dá)到80%以上,降低了反復(fù)覆蓋寫情況寫入速度的波動(dòng)。
[0045]無碎片存儲(chǔ)使得系統(tǒng)可以長(zhǎng)期高效、穩(wěn)定運(yùn)行,并且硬盤使用率和使用壽命得到大大提高。下面以一個(gè)安防監(jiān)控項(xiàng)目為例,對(duì)比該發(fā)明的價(jià)值體現(xiàn)。
[0046]前端設(shè)備有1000路高清網(wǎng)絡(luò)攝像機(jī),碼流均為4Mbps,要求全天錄像,并且錄像數(shù)據(jù)保存15天。下述表格為兩種不同的存儲(chǔ)方式的性能對(duì)比。
性能I默認(rèn)存儲(chǔ)方式I流媒體數(shù)據(jù)存儲(chǔ)gf
存儲(chǔ)服務(wù)器數(shù)量(臺(tái))27__9_
所需硬盤數(shù)量(3T)__263__206_
硬盤壞盤率(/年)__30%_5%_
頑耗(/小時(shí))!9345W4890W
[0047]本發(fā)明可以用在監(jiān)控系統(tǒng)中的任何存儲(chǔ)設(shè)備上,包括DVR (數(shù)字硬盤錄像機(jī))、NVR(網(wǎng)絡(luò)硬盤錄像機(jī))以及其他存儲(chǔ)陣列等;以上所述并不用于限制本發(fā)明,凡在本發(fā)明的原則和精神之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均就包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種針對(duì)網(wǎng)絡(luò)視頻監(jiān)控中,對(duì)網(wǎng)絡(luò)攝像機(jī)視頻數(shù)據(jù)進(jìn)行優(yōu)化存儲(chǔ)的算法。
2.此算法發(fā)明了一種由緩存系統(tǒng)(CacheSystem)使用一套更利于流媒體數(shù)據(jù)使用的專用的緩存機(jī)制,用以取代內(nèi)核提供的磁盤通用緩存機(jī)制。
3.算法所描述的存儲(chǔ)方法包括:改變數(shù)據(jù)流緩存的方式,使用自定義緩存系統(tǒng)(CacheSystem)替代系統(tǒng)默認(rèn)的高速緩存;改變操作系統(tǒng)系統(tǒng)默認(rèn)的硬盤存儲(chǔ)方式,利用算法將硬盤均分成若干個(gè)存儲(chǔ)塊(chunk)進(jìn)行存儲(chǔ)。
4.根據(jù)權(quán)利要求1所述的緩存系統(tǒng),其特征在于:緩存系統(tǒng)自適應(yīng)前端設(shè)備碼流分配緩存空間。
5.根據(jù)權(quán)利要求1所述的緩存系統(tǒng),其特征在于:向硬盤的寫入周期是可控的。
6.根據(jù)權(quán)利要求1所述的將硬盤均分成若干個(gè)存儲(chǔ)塊(chunk),其特征在于利用算法管理硬盤存儲(chǔ),自定義硬盤分塊方式。
7.根據(jù)權(quán)利要求4所述的將硬盤均分成若干個(gè)存儲(chǔ)塊(chunk),其特征在于利用可用塊探測(cè)算法為每個(gè)前端設(shè)備迅速分配不同存儲(chǔ)塊。
8.根據(jù)權(quán)利要求4所述的分塊存儲(chǔ)方式,其特征在于不使用操作系統(tǒng)默認(rèn)的文件系統(tǒng)進(jìn)行存儲(chǔ),采用去除磁盤碎片存儲(chǔ)方式。
【文檔編號(hào)】H04N7/18GK103702057SQ201310394300
【公開日】2014年4月2日 申請(qǐng)日期:2013年9月3日 優(yōu)先權(quán)日:2013年9月3日
【發(fā)明者】張帆, 王鑫, 周偉 申請(qǐng)人:成都竣泰科技有限公司