一種高可伸縮性raid陣列存儲(chǔ)視頻監(jiān)控?cái)?shù)據(jù)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種高可伸縮性RAID陣列存儲(chǔ)視頻監(jiān)控?cái)?shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002]視頻監(jiān)控中的錄像數(shù)據(jù)可靠性是一項(xiàng)十分關(guān)鍵的技術(shù),對(duì)于事后分析案例起到關(guān)鍵作用。目前視頻監(jiān)控中,常用的錄像數(shù)據(jù)可靠性技術(shù)采用磁盤(pán)冗余技術(shù)RAID5。該技術(shù)可以保證在I塊硬盤(pán)損壞情況下,保持錄像的完整性。
[0003]當(dāng)RAID5中的磁盤(pán)損壞I塊后,雖然可以繼續(xù)進(jìn)行存儲(chǔ),但無(wú)法再提供冗余功能;因此,后續(xù)當(dāng)磁盤(pán)繼續(xù)損壞后,將出現(xiàn)數(shù)據(jù)丟失。
[0004]當(dāng)需要擴(kuò)充容量時(shí),需要新增加一塊硬盤(pán)或幾塊硬盤(pán),但直接通過(guò)RAID5進(jìn)行擴(kuò)展將極大消耗性能,會(huì)影響到設(shè)備的整體服務(wù)可用性。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種高可伸縮性RAID5陣列存儲(chǔ)視頻監(jiān)控?cái)?shù)據(jù)的方法和裝置。
[0006]該方法包括:若包含η塊磁盤(pán)的RAID5陣列中的ml塊磁盤(pán)發(fā)生了故障,則對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n-ml塊磁盤(pán);其中,n-ml> = 3 ;將待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入該新的子RAID5陣列;或者,若包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán),則對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n+m2塊磁盤(pán);將待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入每一個(gè)新的子RAID5陣列。
[0007]優(yōu)選地,每個(gè)條帶內(nèi)的單個(gè)磁盤(pán)上存儲(chǔ)包含超級(jí)塊的塊文件,該超級(jí)塊的magic字段記錄該塊文件所在條帶包含的磁盤(pán)總數(shù)和該塊文件所在磁盤(pán)在該條帶中的位置。
[0008]優(yōu)選地,所述方法還包括:當(dāng)所述包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán)時(shí),對(duì)新增的m2塊磁盤(pán)的所有超級(jí)塊的magic字段寫(xiě)入預(yù)設(shè)的值后再將其加入到各子RAID5陣列中,所述預(yù)設(shè)的值用來(lái)表示該m2塊磁盤(pán)當(dāng)前數(shù)據(jù)無(wú)效。
[0009]優(yōu)選地,所述方法還包括:設(shè)備啟動(dòng)時(shí),掃描RAID5陣列下的所有條帶的magic值,并為每個(gè)條帶建立一個(gè)控制塊,該控制塊包含每個(gè)條帶磁盤(pán)數(shù)量、各磁盤(pán)在子RAID5中對(duì)應(yīng)的磁盤(pán)位置及校驗(yàn)盤(pán)位置;當(dāng)視頻錄像數(shù)據(jù)每次覆蓋某個(gè)條帶時(shí),刷新該條帶控制塊的信息;當(dāng)需要訪(fǎng)問(wèn)某個(gè)條帶數(shù)據(jù)時(shí),從該條帶對(duì)應(yīng)的控制塊中獲取該條帶信息。
[0010]該高可伸縮性RAID5陣列存儲(chǔ)視頻監(jiān)控?cái)?shù)據(jù)的裝置,其特征在于,該裝置包括:子RAID5陣列構(gòu)建模塊,用于若包含η塊磁盤(pán)的RAID5陣列中的ml塊磁盤(pán)發(fā)生了故障,則對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n-ml塊磁盤(pán);其中,n-ml> = 3 ;或者,用于若包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán),貝Ij對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列;該新的子RAID5陣列包含n+m2塊磁盤(pán);數(shù)據(jù)寫(xiě)入模塊,用于將待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入每一個(gè)新的包含n-ml塊磁盤(pán)或者包含n+m2塊磁盤(pán)的子RAID5陣列。
[0011]優(yōu)選地,該裝置還包括:magic字段填充模塊,用于在超級(jí)塊的magic字段中填充塊文件所在條帶包含的磁盤(pán)總數(shù)和該塊文件所在磁盤(pán)在該條帶中的位置;所述塊文件存儲(chǔ)在每個(gè)條帶內(nèi)的單個(gè)磁盤(pán)上,所述超級(jí)塊位于塊文件中。
[0012]優(yōu)選地,該magic字段填充模塊還用于,當(dāng)所述包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán)時(shí),對(duì)新增的m2塊磁盤(pán)的所有超級(jí)塊的magic字段寫(xiě)入預(yù)設(shè)值,所述預(yù)設(shè)的值用來(lái)表示該m2塊磁盤(pán)當(dāng)前數(shù)據(jù)無(wú)效。
[0013]優(yōu)選地,該裝置還包括RAID5陣列管理模塊,該模塊用于設(shè)備啟動(dòng)時(shí),掃描RAID5陣列下的所有條帶的magic值,并為每個(gè)條帶建立一個(gè)控制塊,該控制塊包含每個(gè)條帶磁盤(pán)數(shù)量、各磁盤(pán)在子RAID5中對(duì)應(yīng)的磁盤(pán)位置及校驗(yàn)盤(pán)位置;當(dāng)視頻錄像數(shù)據(jù)每次覆蓋某個(gè)條帶時(shí),刷新該條帶控制塊的信息;當(dāng)需要訪(fǎng)問(wèn)某個(gè)條帶數(shù)據(jù)時(shí),從該條帶對(duì)應(yīng)的控制塊中獲取該條帶信息。
[0014]相較于現(xiàn)有技術(shù),本發(fā)明方案在RAID5陣列中的磁盤(pán)出現(xiàn)損壞時(shí),可以讓原η盤(pán)的RAID5向新的n-m盤(pán)的RAID5轉(zhuǎn)換,從而繼續(xù)為新的錄像數(shù)據(jù)提供冗余數(shù)據(jù)能力;當(dāng)RAID5陣列中新增加磁盤(pán)時(shí),可以將原η個(gè)盤(pán)的RAID5向新的n+m盤(pán)的RAID5平滑轉(zhuǎn)換,不影響整個(gè)系統(tǒng)的錄像存儲(chǔ)性能。
【附圖說(shuō)明】
[0015]圖1是現(xiàn)有的RAID5陣列存儲(chǔ)結(jié)構(gòu)圖。
[0016]圖2是本發(fā)明實(shí)施例陣列收縮圖。
[0017]圖3是本發(fā)明實(shí)施例條帶塊文件分布圖。
[0018]圖4是本發(fā)明實(shí)施例陣列伸展圖。
[0019]圖5是本發(fā)明實(shí)施例包含magic字段的塊文件圖。
[0020]圖6是本發(fā)明實(shí)施例裝置邏輯結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0021]本發(fā)明將利用視頻監(jiān)控中視頻錄像順序存儲(chǔ)的特點(diǎn),采用超大條帶(如256MB)方式,將每個(gè)條帶作為獨(dú)立RAID5子盤(pán)進(jìn)行管理。當(dāng)RAID5陣列磁盤(pán)損壞或增加新的磁盤(pán)進(jìn)行容量擴(kuò)充時(shí),利用視頻錄像順序存儲(chǔ)以及按條帶回收的特性,新分配用于錄像存儲(chǔ)的條帶;按照該新分配條帶上可用盤(pán)數(shù)據(jù)組成RAID5子盤(pán)進(jìn)行管理,從而在視頻監(jiān)控錄像存儲(chǔ)時(shí),保證RAID5的高可伸縮性。
[0022]圖1所示為現(xiàn)有的RAID5陣列存儲(chǔ)結(jié)構(gòu)。RAID5陣列一般由η(n> = 3)塊磁盤(pán)組成,并要求RAID5陣列內(nèi)的每塊磁盤(pán)容量相等,RAID5陣列會(huì)對(duì)每塊磁盤(pán)以固定大小的空間劃分區(qū)間,每個(gè)磁盤(pán)的相同位置區(qū)間組成一個(gè)條帶,每個(gè)條帶由η-1個(gè)磁盤(pán)數(shù)據(jù)區(qū)間與一個(gè)校驗(yàn)區(qū)間組成。
[0023]本發(fā)明的RAID5陣列的伸縮性包括兩種情況:第一種情況是RAID5陣列中的磁盤(pán)故障,導(dǎo)致RAID5陣列中的磁盤(pán)數(shù)量減少;第二種情況是RAID5擴(kuò)充容量,新插入一塊或幾塊磁盤(pán)。每種情況的處理如下:
[0024]若包含η塊磁盤(pán)的RAID5陣列中的ml塊磁盤(pán)發(fā)生了故障,則對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n_ml塊磁盤(pán);其中,n-ml> = 3 ;將待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入該新的子RAID5陣列。
[0025]若包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán),則對(duì)該RAID5陣列中回收并進(jìn)行覆蓋寫(xiě)的條帶構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n+m2塊磁盤(pán);將待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入每一個(gè)新的子RAID5陣列。
[0026]請(qǐng)參圖2的一個(gè)例子。該例的RAID5陣列包括5塊磁盤(pán),包括條帶O?條帶999共1000個(gè)條帶。在進(jìn)行視頻監(jiān)控錄像存儲(chǔ)時(shí),順序地、循環(huán)地將視頻監(jiān)控錄像存儲(chǔ)到陣列中,即將前端監(jiān)控?cái)z像機(jī)傳來(lái)的錄像先寫(xiě)入條帶0,條帶O寫(xiě)滿(mǎn)后再開(kāi)始寫(xiě)條帶1,條帶2……,直到條帶999。當(dāng)條帶999也被寫(xiě)滿(mǎn)后,又從條帶O開(kāi)始,逐個(gè)條帶順序地覆蓋地寫(xiě)入新的視頻監(jiān)控?cái)?shù)據(jù)。
[0027]有的時(shí)候,對(duì)于一些重要的視頻監(jiān)控錄像在存入陣列后,會(huì)進(jìn)行一定時(shí)間的鎖定。還是以圖2為例,如果存入該RAID5陣列條帶26和條帶27的視頻監(jiān)控錄像包含了異常事件,對(duì)于這些視頻監(jiān)控錄像需要進(jìn)行鎖定,那么下次在覆蓋寫(xiě)到這些條帶的時(shí)候,會(huì)跳過(guò)這些條帶而寫(xiě)入條帶28中。這種特殊的情況是順序存儲(chǔ)基礎(chǔ)上的一種例外。
[0028](一 )、對(duì)于完全順序地按照條帶進(jìn)行回收、覆蓋寫(xiě)的情況,在實(shí)施本發(fā)明方案的時(shí)候,可以按照如下方式進(jìn)行:
[0029]若當(dāng)前視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入條帶&時(shí),包含η塊磁盤(pán)的RAID5陣列出現(xiàn)ml塊磁盤(pán)故障,則對(duì)條帶Xfl開(kāi)始的每個(gè)條帶依次構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n-ml塊磁盤(pán),待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)依次寫(xiě)入每一個(gè)新的子RAID5陣列。若當(dāng)前視頻監(jiān)控?cái)?shù)據(jù)寫(xiě)入條帶,包含η塊磁盤(pán)的RAID5陣列新增m2塊磁盤(pán),對(duì)條帶χ !+I開(kāi)始的每個(gè)條帶依次構(gòu)建新的子RAID5陣列,該新的子RAID5陣列包含n+m2塊磁盤(pán),待存儲(chǔ)的視頻監(jiān)控?cái)?shù)據(jù)依次寫(xiě)入每一個(gè)子RAID5陣列。
[0030]本發(fā)明實(shí)施例視頻監(jiān)控錄像需要存儲(chǔ)到RAID陣列某條帶的時(shí)候,需要對(duì)該條帶整個(gè)進(jìn)行回收然后再進(jìn)行覆蓋寫(xiě)