一種高可用性的視頻存儲方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種高可用性的視頻存儲方法。
【背景技術(shù)】
[0002]視頻監(jiān)控中的錄像數(shù)據(jù)可靠性是一項十分關(guān)鍵技術(shù),對于事后分析案例起到關(guān)鍵作用。目前視頻監(jiān)控中,常用的錄像數(shù)據(jù)可靠性技術(shù)采用磁盤冗余技術(shù)RAID5陣列實現(xiàn)。該技術(shù)可以保證在一塊硬盤損壞情況下,保持錄像的完整性。但是當(dāng)磁盤損壞到兩塊及以上后,則無法通過冗余磁盤恢復(fù)出完整的陣列數(shù)據(jù)。對于RAID5來說,由于數(shù)據(jù)按條帶方式連續(xù)順序存儲,從而導(dǎo)致讀取的數(shù)據(jù)斷斷續(xù)續(xù)。視頻圖像數(shù)據(jù)之間有一定的依賴性,有的時候,雖然讀出部分視頻數(shù)據(jù),但仍然可能造成整個數(shù)據(jù)的丟失。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明提供一種高可用性的視頻存儲方法。
[0004]該方法包括:在每個RAID5條帶內(nèi),將每個視頻I幀組按照條帶內(nèi)磁盤的順序依次存儲在每個磁盤中;其中,每個視頻I幀組僅屬于一個磁盤,且條帶內(nèi)單個磁盤上存儲的若干視頻I幀組序號不連續(xù)。
[0005]優(yōu)選地,每個條帶內(nèi)的單個磁盤存儲一個塊文件,該條帶存儲一個塊文件組,所述塊文件包括:超級塊和數(shù)據(jù)。
[0006]優(yōu)選地,該超級塊包括:塊文件組ID、塊文件序號、視頻開始時間和視頻結(jié)束時間。
[0007]優(yōu)選地,每個塊文件組作為一個整體單元被進行存儲分配與回收。
[0008]優(yōu)選地,每個塊文件組具有塊文件組摘要,該塊文件組摘要記錄塊文件組的相關(guān)信息,且該塊文件組摘要唯一指向RAID5陣列的一個條帶。
[0009]優(yōu)選地,在視頻檢索時,根據(jù)檢索時間檢索對應(yīng)的塊文件組;當(dāng)需檢索塊文件組內(nèi)部的塊文件時,依次比較檢索時間與塊文件中的I幀組時間,進行視頻的定位。
[0010]優(yōu)選地,當(dāng)該RAID5陣列的磁盤損壞數(shù)量達到兩塊或者兩塊以上時,忽略所述損壞磁盤和校驗磁盤,將剩余磁盤的條帶上的塊文件組成塊文件組,進行錄像存儲與錄像檢索及回放。
[0011]優(yōu)選地,所述塊文件的大小為256M或者128M。
[0012]優(yōu)選地,所述RAID5條帶為NVR設(shè)備構(gòu)建的RAID5條帶,所述視頻數(shù)據(jù)為IPC傳來的監(jiān)控視頻數(shù)據(jù)。
[0013]相較于現(xiàn)有技術(shù),本發(fā)明方案通過I幀組獨立存儲于RAID5中的一個磁盤上,并引入交織錄像存儲方式,從而在RAID5陣列損壞情況下,可盡力防止每個區(qū)間時間段內(nèi)錄像數(shù)據(jù)的全部丟失,從而最大限度的保證了存儲數(shù)據(jù)的可用性。
【附圖說明】
[0014]圖1是現(xiàn)有的RAID陣列圖。
[0015]圖2是一種塊文件組視頻幀組存儲方式圖。
[0016]圖3是塊文件組分布圖。
[0017]圖4是塊文件內(nèi)部結(jié)構(gòu)圖。
[0018]圖5是一種錄像組織方式圖。
[0019]圖6是一種RAIDO+陣列圖。
【具體實施方式】
[0020]為解決【背景技術(shù)】中提到的技術(shù)問題,本發(fā)明提供一種高可用性視頻存儲方案。本發(fā)明方案利用視頻錄像中I幀組內(nèi)數(shù)據(jù)依賴性以及順序存儲特點,將每個I幀組獨立存儲于RAID5的一個磁盤上,避免每個I幀組跨多盤存儲,從而保證每個I幀組只關(guān)聯(lián)一個磁盤。當(dāng)RAID5陣列中的磁盤數(shù)量損壞超過兩塊及以上時,RAID5陣列剩余磁盤中的視頻數(shù)據(jù)保持相對完整,可以繼續(xù)有效解碼播放,從而為用戶盡可能的保留了錄像數(shù)據(jù)。同時通過每個I幀組按RAID5陣列中磁盤的位置順序,進行順序交織存儲。這樣,只要RAID5中的剩余磁盤大于等于兩塊磁盤,即可避免出現(xiàn)某個時間段的錄像整體丟失。以下通過具體實施例詳細說明。
[0021]請參圖1所示的現(xiàn)有的RAID5存儲結(jié)構(gòu)。RAID5陣列一般由n(n> = 3)塊磁盤組成,RAID5陣列內(nèi)的每塊磁盤容量相等。RAID5陣列會對每塊磁盤以固定大小的空間劃分區(qū)間,每個盤的相同位置區(qū)間組成一個條帶,每個區(qū)間被稱為條帶塊,每個條帶由η-1個數(shù)據(jù)條帶塊與一個校驗條帶塊組成,每個條帶塊大小相同。
[0022]本發(fā)明實施例在存儲視頻數(shù)據(jù)的時候,在每個RAID5條帶內(nèi),將每個視頻I幀組按照條帶內(nèi)磁盤的順序依次存儲在每個磁盤中;其中,每個視頻I幀組僅屬于一個磁盤,且條帶內(nèi)單個磁盤上存儲的若干視頻I幀組序號不連續(xù)。
[0023]請參圖2,該例子給出了一個8塊磁盤的RAID5陣列。在將視頻I幀組存儲在該RAID5陣列條帶η的時候,將I幀組I?I幀組7分別存儲在條帶η內(nèi)的磁盤I?磁盤7,I幀組8?I幀組14分別存儲在條帶η內(nèi)的磁盤I?磁盤7 ;1幀組15?I幀組21分別存儲條帶η內(nèi)的磁盤I?磁盤7,依次類推。每個I幀組僅屬于一個磁盤,即不會將一個I幀組的視頻數(shù)據(jù)同時存儲在兩個及兩個以上的磁盤上。比如說I幀組I僅屬于磁盤1,I幀組2僅屬于磁盤2。條帶內(nèi)單個磁盤上存儲的視頻I幀組序號不連續(xù)。比如說,條帶η磁盤I包含I幀組1、I幀組8、I幀組15等;條帶η磁盤2包含I幀組2、I幀組9、I幀組16等。對條帶η內(nèi)磁盤I?磁盤7的數(shù)據(jù)進行異或運算得到了該條帶η磁盤8上的校驗數(shù)據(jù)。從上述存儲方式可以看出,本發(fā)明RAID5陣列在視頻監(jiān)控數(shù)據(jù)進行存儲的時候,不再具有條帶塊的概念,數(shù)據(jù)不會按照一個條帶地被下刷到各磁盤上。
[0024]由于本發(fā)明實施例的I幀組不會跨磁盤存儲,因此健康磁盤中的I幀組不會受故障磁盤的影響,可以被解碼播放。同時,由于每個數(shù)據(jù)磁盤的I幀組交織存儲,因此不會出現(xiàn)某個時間段內(nèi)錄像的全部丟失,只會出現(xiàn)間隔I幀組播放。這種存儲方式是針對視頻監(jiān)控數(shù)據(jù)的特點設(shè)計出的存儲方式,和一般的RAID5陣列存儲數(shù)據(jù)有著本質(zhì)的區(qū)別。
[0025]以上視頻數(shù)據(jù)的存儲方式尤其適合在NVR設(shè)備上執(zhí)行。IPC設(shè)備拍攝的監(jiān)控視頻數(shù)據(jù)發(fā)送到NVR設(shè)備后,NVR設(shè)備按照上述存儲方式執(zhí)行視頻數(shù)據(jù)的存儲。
[0026]為了更好地實現(xiàn)在RAID5陣列中每塊磁盤上每塊錄像數(shù)據(jù)的獨立性,每個條帶內(nèi)磁盤存儲空間的大小可以按獨立存儲的塊文件大小進行設(shè)置;如存儲的塊文件大小為256MB,則RAID5陣列的條帶內(nèi)一個磁盤存儲空間大小按256MB進行設(shè)置。這樣的設(shè)置方式,保證了塊文件內(nèi)整體數(shù)據(jù)的獨立性,可不依賴于條帶內(nèi)其它磁盤的數(shù)據(jù),從而保證塊文件里的數(shù)據(jù)索引與錄像數(shù)據(jù)的完整性,便于后續(xù)錄像回放。
[0027]請參圖3,每個條帶內(nèi)各磁盤上的文件塊組成一個塊文件組,并作為一個整體單元進行存儲分配與回收。每個條帶上的塊文件的順序與RAID5陣列中盤的位置順序相同,中間跳過校驗盤。比如條帶I內(nèi)具有5個磁盤:磁盤I?磁盤5,其中磁盤I為校驗磁盤,塊文件I存儲在磁盤2,塊文件2存儲在磁盤3,塊文件3存儲在磁盤4,塊文件4存儲在磁盤5。每個條帶上的每個塊文件在錄像存儲上相對獨立,即每個視頻I幀組只能屬于每個塊文件,而不能跨塊文件存儲。
[0028]請參圖4所示的塊文件結(jié)構(gòu)圖。每個塊文件包含超級塊和視頻數(shù)據(jù)兩部分。其中超級塊包含一個UUID字段、塊文件順序號、通道號、錄像開始時間、錄像結(jié)束時間等信息。UUID字段為塊文件組號,用于唯一表示某條帶組成的塊文件組ID ;塊文件順序號表示該塊文件在文件組內(nèi)的排序號;通道號唯一表示該錄像數(shù)據(jù)屬于