【视频块文件系统不得不说的故事】VBFS文件系统简介
在視頻監(jiān)控項(xiàng)目中,錄像是必須且至關(guān)重要的一個(gè)基本功能,可以說(shuō)錄像質(zhì)量及穩(wěn)定性在很大程度上就反映了一個(gè)監(jiān)控產(chǎn)品的好壞。
傳統(tǒng)的文件系統(tǒng)在長(zhǎng)時(shí)間大容量的錄像并發(fā)生覆蓋時(shí)往往存在以下三方面的問(wèn)題:
??? 1)文件碎片越來(lái)越多、錄像效率逐漸下降,無(wú)法滿足規(guī)劃時(shí)的系統(tǒng)要求;
2)文件的刪除效率極低,導(dǎo)致覆蓋時(shí)的碼流錄像能力低于開(kāi)始的規(guī)劃要求從而出現(xiàn)錄像異常停止或者碼流數(shù)據(jù)的丟失;
??? 3)文件系統(tǒng)復(fù)雜、龐大,系統(tǒng)異常情況下的問(wèn)題查處相當(dāng)困難,幾乎束手無(wú)策。
基于以上考慮,特提出VBFS文件系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn);本文簡(jiǎn)單介紹VBFS文件系統(tǒng)構(gòu)成、覆蓋機(jī)制以及存在的短板。
1???????VBFS文件系統(tǒng)中的關(guān)鍵字
VBFS:? Video Block File System,?視頻塊文件系統(tǒng)
SBR: ? System Boot Record,?? ???文件系統(tǒng)引導(dǎo)記錄
RAT: ?? Record Allocation Table,??錄像記錄分配表
RIA: ?? Record Index Area,???? ???記錄索引區(qū)
?
2???????VBFS文件系統(tǒng)簡(jiǎn)介
2.1?????VBFS文件系統(tǒng)總體結(jié)構(gòu)組織圖
| SBR | 備份SBR | RAT | 備份RAT | RIA | 備份RIA | 數(shù)據(jù)區(qū) |
在VBFS文件系統(tǒng)中,主要包括六個(gè)區(qū)域,SBR,RAT,備份RAT,RIA,備份RIA和數(shù)據(jù)區(qū)。
VBFS支持O_direct(無(wú)緩沖的輸入、輸出)的磁盤(pán)寫(xiě)方式,因此所有區(qū)域的起始位置都以磁盤(pán)扇區(qū)大小進(jìn)行對(duì)齊;
除了數(shù)據(jù)區(qū),其他五個(gè)區(qū)域的最小分配單元為磁盤(pán)的扇區(qū)大小,而磁盤(pán)的數(shù)據(jù)區(qū)則被劃分為一塊塊大小固定的數(shù)據(jù)簇,因此數(shù)據(jù)簇成為數(shù)據(jù)區(qū)的最小分配單元。
2.2?????SBR
SBR作為文件系統(tǒng)引導(dǎo)區(qū),主要記錄了一個(gè)分區(qū)的總體信息,幫助上層應(yīng)用可以正確識(shí)別并訪問(wèn)該磁盤(pán)分區(qū)。主要內(nèi)容包括:
| 字段 | 長(zhǎng)度 (字節(jié)) | 默認(rèn)值 | 說(shuō)明 |
| FS | 4 | VBFS | 文件系統(tǒng)標(biāo)識(shí),固定不變。 |
| PV | 8 | KEDA ? 1.0 | 廠商及版本 |
| UUID | 36 | 變量 | 分區(qū)唯一標(biāo)識(shí) |
| Label | 16 | 變量 | 卷標(biāo),暫時(shí)未用 |
| BPS | 4 | 變量 | 每個(gè)扇區(qū)字節(jié)數(shù)(Bytes ? per Sector),在磁盤(pán)格式化時(shí)根據(jù)實(shí)際磁盤(pán)扇區(qū)大小填寫(xiě) |
| SPC | 4 | 1024 ? * 1024 / BPS | 每個(gè)簇包含的扇區(qū)數(shù)(Sectors ? per Clustor) 注:簇大小固定為1M字節(jié)?? |
| RSS | 4 | 63 | 保留扇區(qū)數(shù)(Reserved ? Sectors),整個(gè)SBR空間 |
| SPT | 4 | 63 | 每個(gè)磁道扇區(qū)數(shù)(Setors ? per Track) |
| TSS | 8 | 變量 | 磁盤(pán)分區(qū)總扇區(qū)數(shù)(Total ? Sectors) |
| BBS | 4 | 6 | 備份SBR的起始扇區(qū)號(hào)(Backup boot Sector),固定不變 |
| NORA | 4 | 2 | RAT個(gè)數(shù)(Number of RATs) |
| NORI | 4 | 2 | RIA個(gè)數(shù)(Number of RIAs) |
| SPR | 4 | 變量 | 每個(gè)RAT包含的扇區(qū)數(shù)(Setors per RAT) |
| BPR | 4 | 512 | 每個(gè)記錄索引占用的字節(jié)數(shù)(Bytes per record) |
| SOR | 4 | MaxRecNum*BPR/BPS | 每個(gè)RIA占用扇區(qū)數(shù)(Setors of RIA) 注:?MaxRecNum的默認(rèn)值為500000,可以在格式化時(shí)通過(guò)格式化參數(shù)進(jìn)行調(diào)整 |
| CRC | 4 | 變量 | SBR的CRC校驗(yàn)碼 |
?
2.3?????RAT
RAT為錄像記錄分配表,記錄了每個(gè)錄像文件占用的簇的信息。
RAT中的每一記錄項(xiàng)使用4字節(jié)來(lái)保存簇號(hào),簇號(hào)編號(hào)從數(shù)據(jù)區(qū)開(kāi)始,第0簇和第1簇保留,
因此有效的簇號(hào)必然大于等于2。
RAT中的第0記錄項(xiàng)保存的值固定為0x52415400,第1記錄項(xiàng)保存當(dāng)前可使用的簇號(hào),即整
個(gè)磁盤(pán)分區(qū)的當(dāng)前寫(xiě)位置。
也可以這么來(lái)形容RAT,RAT其實(shí)就是一個(gè)u32的數(shù)組,數(shù)組的容量就是數(shù)據(jù)區(qū)包含的簇總
數(shù),而數(shù)組下標(biāo)就是簇號(hào),數(shù)組項(xiàng)保存的u32值就是一條錄像記錄所使用的下一個(gè)簇的編號(hào)或者其他有意義的值,其中數(shù)組項(xiàng)的可能值如下:
| RAT記錄項(xiàng)值 | 對(duì)應(yīng)簇情況 |
| 0 | 未分配 |
| 2~0xFFFFFFEF | 已分配簇,數(shù)值代表下一簇號(hào) |
| 0xFFFFFFF0~ ? xFFFFFFF6 | 文件系統(tǒng)保留 |
| 0xFFFFFFF7 | 壞簇 |
| 0xFFFFFFF8~0xFFFFFFFF | 記錄結(jié)束符 |
?
示例:
???????假設(shè)RAT保存的信息如下:
| 0x52415400 | 0x08 | 0x04 | 0x06 | 0x05 | 0x07 | 0xffffffff | 0xffffffff | 0 |
這就表示當(dāng)前簇為第8簇,其中第2,3,4,5簇?cái)?shù)據(jù)有效,第6,7簇為結(jié)束簇,第8簇尚未分配。
根據(jù)RAT中記錄項(xiàng)保存的值的意義,我們可以得到如下兩條錄像記錄占用簇的情況:
???????第一條錄像記錄使用的簇為:2?à?4?à?5?à?7
???????第二條錄像記錄使用的簇為:3?à?6
2.4?????RIA
RIA為錄像記錄索引區(qū),每條記錄索引對(duì)應(yīng)一條錄像記錄,其記錄的錄像信息如下:
?
| 字段名 | 長(zhǎng)度 (字節(jié)) | 默認(rèn)值 | 說(shuō)明 |
| RN | 256 | 字符變量 | 錄像記錄名稱,第一字節(jié)為0xE5則代表記錄已刪除 |
| SS | 4 | U32 | 錄像記錄占用的起始簇號(hào) |
| ST | 4 | U32 | 錄像開(kāi)始時(shí)間 |
| ET | 4 | U32 | 錄像結(jié)束時(shí)間 |
| CID | 36 | 字符變量 | 編碼器通道ID,32位設(shè)備號(hào)+4位通道號(hào)(未使用) |
| CNM | 32 | 字符變量 | 編碼器通道別名(未使用) |
| NI | 4 | U32 | 相同CID的下一條錄像記錄的索引項(xiàng)位置,從RIA區(qū)開(kāi)始偏移的記錄數(shù)(未使用) |
| TBS | 8 | U64 | 錄像數(shù)據(jù)的總字節(jié)數(shù) |
| PDT | 8 | 字符變量 | 編碼器制造商信息 |
| RFM | 4 | 字符變量 | 錄像數(shù)據(jù)格式(MP4、H264) |
| RSD | 148 | 字符變量 | 保留數(shù)據(jù) |
| CRC | 4 | U32 | 校驗(yàn)碼,0為不校驗(yàn) |
?
2.5?????VBFS文件系統(tǒng)錄像規(guī)則
1.??為了提高寫(xiě)的效率,在VBFS中寫(xiě)磁盤(pán)采用嚴(yán)格的順序?qū)?#xff0c;即從磁盤(pán)頭順序?qū)懙酱疟P(pán)結(jié)束,然后再?gòu)拇疟P(pán)頭開(kāi)始,因此從磁盤(pán)開(kāi)始位置到當(dāng)前寫(xiě)位置之間的某塊被釋放的磁盤(pán)空間,不會(huì)立即被使用,即如果第n簇及第n+6簇被占用,即使第n+1到n+5簇已經(jīng)被釋放,這時(shí)如果錄像再需要分配磁盤(pán)空間,則會(huì)分配第n+7簇。
2.??數(shù)據(jù)區(qū)中的每一個(gè)數(shù)據(jù)簇只屬于一個(gè)錄像文件,即如果一個(gè)錄像文件只用了一個(gè)簇的一部分,該簇的未使用部分也不能再分配給其他錄像文件使用
2.6?????VBFS文件覆蓋
1.???????由于VBFS采用嚴(yán)格順序?qū)懙姆绞?#xff0c;因此VBFS的文件覆蓋則是發(fā)生在錄像文件占用的第一個(gè)簇被再次分配時(shí)。
2.?????????當(dāng)錄像文件被覆蓋時(shí),在VBFS中只是將該錄像記錄的錄像索引中錄像名的第一個(gè)字節(jié)置為0xE5,而不會(huì)真正的將該錄像文件所占用的簇全部清空,因此這樣也大大提高了錄像記錄的覆蓋效率。
3.?????????由于VBFS采用嚴(yán)格順序?qū)懙姆绞?#xff0c;因此在磁盤(pán)寫(xiě)到結(jié)束后,必然從磁盤(pán)頭開(kāi)始寫(xiě),因此不管此時(shí)磁盤(pán)的中間位置是否有空閑的空間,都會(huì)將位于磁盤(pán)頭的錄像記錄覆蓋。
3???????VBFS文件系統(tǒng)的短板
俗話說(shuō):有利必有弊,VBFS文件系統(tǒng)一方面給我們的產(chǎn)品帶來(lái)了諸多好處的同時(shí),比如錄像效率穩(wěn)定、覆蓋效率高,解決定位問(wèn)題容易,另一方面又存在著一些問(wèn)題:
首先,由于VBFS執(zhí)行的是嚴(yán)格順序?qū)懕P(pán),因此在覆蓋時(shí)無(wú)法有選擇的進(jìn)行錄像覆蓋,而且不會(huì)跳過(guò)某條錄像記錄而使用后續(xù)已經(jīng)被釋放的空間,也就是磁盤(pán)空間利用率不高。
其次,由于VBFS在加載磁盤(pán)分區(qū)時(shí),會(huì)將RAT及RIA中的有效索引全部加載到內(nèi)存中,而RAT占用的大小又取決于磁盤(pán)分區(qū)的大小,因此如果磁盤(pán)分區(qū)大,則RAT加載到內(nèi)存中占用的內(nèi)存就多,而隨著錄像記錄數(shù)的增加,索引也在增加,占用的內(nèi)存也會(huì)越多,因此每個(gè)VBFS磁盤(pán)分區(qū)占用的內(nèi)存大小就取決于該磁盤(pán)分區(qū)的大小及磁盤(pán)分區(qū)上錄像記錄數(shù)的多少,而整個(gè)NRU占用的內(nèi)存則會(huì)受到所有VBFS磁盤(pán)分區(qū)占用的內(nèi)存之和的影響,也就是說(shuō)VBFS磁盤(pán)分區(qū)越多,NRU占用的內(nèi)存也就會(huì)越多。
總結(jié)
以上是生活随笔為你收集整理的【视频块文件系统不得不说的故事】VBFS文件系统简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 搞了这么久的产品,终于看清了真相
- 下一篇: 2020下半年软考-系统架构设计师-惜败