一種基于網絡的數據存儲方法
【技術領域】
[0001] 本發明涉及網絡存儲,特別涉及一種視頻數據存儲方法。
【背景技術】
[0002] 近年來,隨著視頻壓縮技術的不斷發展以及網絡帶寬的提升,視頻監控系統以其 體積小、一體化、可操作性強、可定制、易維護、可接入的特點,受到了安防監控領域的極大 歡迎。除了可以對現場情況進行實時監控,還可以將無人監視時段的前端現場或者突發報 警事件等進行實時視頻,供事后進行讀取和分析評價。目前已有多種存儲體系來支持視頻 監控系統。其中DAS適合服務器在地理分布上很分散的狀況,將存儲設備通過SCSI接口或 光纖通道直接連接到服務器上。SAN將數據塊通過光纖通道傳輸至存儲網絡,NAS是通過IP 通道將文件進行多協議共享,適用于文件服務器的整合,CAS適用于長時間的完整性保存固 定數據。以上各種架構均對視頻監控提供了較好的系統支持,然而視頻存儲的穩定性和清 晰度是監控質量的重要保證,目前視頻監控系統的存儲通常具有以下不足:編碼格式較為 固定;傳統文件系統采用基于多級指針的數據存儲模式,在存儲幀數據時具有I/O操作量 大和易產生存儲碎片等問題,從而導致視頻存儲效率低和檢索性能差,成為系統性能及規 模提升的瓶頸。
【發明內容】
[0003] 為解決上述現有技術所存在的問題,本發明提出了一種基于網絡的數據存儲方 法,包括:
[0004] 將視頻幀編碼和視頻幀存儲過程設計為兩個進程,按兩個進程預定義的路徑建立 兩個內存共享區用于緩存;
[0005] 創建由指定大小的初始空白文件組成的文件池,并在創建每個文件時,分配一組 連續物理空間上的固定大小的簇,在多個存儲設備之間基于被訪問頻率和存儲設備剩余空 間大小進行存儲調度;
[0006] 利用文件索引方式,以預定時間單位記錄每個文件信息的文件索引表,以對視頻 文件進行檢索。
[0007] 優選地,所述將視頻幀編碼和視頻幀存儲過程設計為兩個進程,按兩個進程預定 義的路徑建立兩個內存共享區用于緩存,進一步包括:
[0008] 分別按上述兩個進程預定義的路徑開辟2塊內存共享區CACHE1和CACHE2,編碼 過程每次把1幀數據寫入CACHE1時,將CACHE1施加排他鎖,存儲過程此時只能讀CACHE2 的1幀數據,并同時將CACHE2施加共享鎖;每當編碼過程寫完CACHE1時將其解鎖,轉而寫 CACHE2,此時,若檢測到CACHE2已加上共享鎖,則空閑等待,直至CACHE2被存儲過程解除共 享鎖后再寫入數據并加上排他鎖;編碼過程交替寫入CACHE1和CACHE2,存儲過程交替讀出 CACHE2和CACHE1,從而使存儲過程讀取編碼過程輸出的所有視頻幀流數據。
[0009] 優選地,創建由指定大小的初始空白文件組成的文件池,并在創建每個文件時,分 配一組連續物理空間上的固定大小的簇,在多個存儲設備之間基于被訪問頻率和存儲設備 剩余空間大小進行存儲調度,進一步包括:
[0010] 監控系統在上電后,創建初始空白文件池,按需從該文件池中獲取句柄完成數據 的寫入,定義第一結構數組記錄初始空白文件池的信息,該結構數組設置三個屬性字段:初 始空白文件完整性標志,初始空白文件序列號,初始空白文件所占空間;
[0011] 定義第二結構數組記錄當前存儲設備的信息,包括以下字段:存儲設備名稱,存儲 設備有效性標志,文件存在標志,存儲設備剩余空間和總空間,當前訪問線程數,按照以下 步驟進行多通道調度:
[0012] 1)計算各存儲設備所剩空間百分比k,即設備剩余空間和總空間的比值;
[0013] 2)計算各存儲設備最大訪問線程數量Vn=kXThreadSm,其中,ThreadSm為當前 需要存儲視頻的通道數;
[0014] 3)按剩余空間的大小對上述第二結構數組元素由大到小排序;
[0015] 4)根據步驟3)的排序結果,把當前線程訪問數量未達到Vn/2的結構數組元素 中的第一個存儲設備,即最大剩余空間的設備分配給當前存儲線程,如果訪問數量已達到 Vn/2,選擇其余剩余空間最大而且訪問線程數沒有達到Vn/2的存儲設備,分配給此存儲設 備最近的存儲線程訪問請求;
[0016] 5)當所有存儲設備的線程訪問數都已經達到Vn/2時,把剩余空間大并且訪問線 程數量未達到Vn的存儲設備分配給最新存儲線程訪問請求;
[0017] 6)如果第二結構數組中排序的最后一個存儲設備已經達到Vn,則返回無存儲設 備可用的信息,此時則開始應用覆蓋策略,將時間最久的視頻文件刪除,獲得更多的存儲設 備空間。
[0018] 優選地,所述利用文件索引方式,以預定時間單位記錄每個文件信息的文件索引 表,以對視頻文件進行檢索,進一步包括:
[0019] 為視頻建立文件夾,每個文件夾里包含一個用于記錄當天每個文件信息的文件索 引表,所述文件信息包括視頻的類型、起止時間、索引ID、數據位置及長度,第三結構數組定 義文件索引結構,以記錄所存儲的全部視頻幀文件信息,該數組記錄以下屬性字段:文件有 效性標志,文件的起始和結束時間,數據段起始和結束位置,圖像格式,視頻通道號,視頻類 型。
[0020] 本發明相比現有技術,具有以下優點:
[0021] 本發明提出了一種基于網絡的存儲方法,在較高的數據量下實現了穩定存儲以及 快速準確的檢索,具有實用性和可靠性。
【附圖說明】
[0022] 圖1是根據本發明實施例的基于網絡的數據存儲方法的流程圖。
【具體實施方式】
[0023] 下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描 述。結合這樣的實施例描述本發明,但是本發明不限于任何實施例。本發明的范圍僅由權 利要求書限定,并且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節 以便提供對本發明的透徹理解。出于示例的目的而提供這些細節,并且無這些具體細節中 的一些或者所有細節也可以根據權利要求書實現本發明。
[0024] 本發明的一方面提供了一種基于網絡的數據存儲方法。圖1是根據本發明實施例 的基于網絡的數據存儲方法流程圖。
[0025] 本發明的視頻監控系統由視頻幀編碼、視頻幀存儲、實時傳輸、人機接口模塊構 成。視頻幀編碼過程獲得幀數據進行編碼后需要將這些數據傳送給視頻幀存儲過程,本發 明提出了一種雙緩存內存共享方法,將視頻幀編碼過程和視頻幀存儲過程被設計為兩個 進程,CACHE1和CACHE2分別是按兩個進程預定義的路徑而開辟的2塊內存共享區。編碼 過程每次把1幀數據寫入CACHE1時,將CACHE1施加排他鎖,存儲過程此時只能讀CACHE2 的1幀數據,并同時將CACHE2施加共享鎖;每當編碼過程寫完CACHE1時將其解鎖,轉而寫 CACHE2,此時,若檢測到CACHE2已加上共享鎖,則空閑等待直至CACHE2被存儲過程解除共 享鎖后再寫入數據并加上排他鎖。于是,編碼過程交替寫入CACHE1和CACHE2,存儲過程交 替讀出CACHE2和CACHE1,如此循環,從而保證了存儲過程能夠讀取到編碼過程輸出的所有 視頻幀流數據,避免發生丟幀現象。
[0026] 監控系統在上電后,創建一個由多個指定大小初始空白文件組成的初始空白文件 池。按需從該初始空白文件池中獲取句柄完成數據的寫入,在寫入數據前每個初始空白文 件的簇鏈表是已知的。所以寫存儲設備只會改寫簇鏈表中的內容而不會影響到其本身的結 構。當發生像斷電這樣的異常時,丟失的只是當前正在寫入的數據,并沒有造成文件本身的 損壞。
[0027] 設計預分配空數據文件數據結構如下,定義一個結構數組記錄初始空白文件池的 信息,設置三個屬性字段:初始空白文件完整性標志,初始空白文件序列號,一個初始空白 文件所占空間。
[0028] 創建每個文件時,為其分配一組連續的物理空間上的固定大小的簇,這會具有防 止存儲碎片產生、縮短存儲設備尋道時間、提高存儲設備讀寫速度等優點。防止存儲碎片的 產生是因為其在物理空間的連續性,而相鄰時間具有相同性質的幀數據的聚類存儲可以提 高存儲設備讀寫的效率并降低檢索數據的響應時間。此外,應該在存儲設備初始化時進行 固定大小且連續的文件的創建以提高效率。
[0029] 本發明改進了存儲調度方法,可以提高多通道存儲訪問的效率。結合考慮被訪問 頻率和存儲設備剩余空間大小進行存儲調度,盡量保證存儲設備當前剩余空間在維持在一 個預定的閾值,避免多通道視頻流集中存儲在某一個存儲設備而造成存儲設備I/O訪問的 瓶頸,盡可能地將多通道視頻流均勻存儲至每個存儲設備中。
[0030] 首先定義一個結構數組記錄當前存儲設備的信息:包括以下字段,存儲設備名稱, 存儲設備有效性標志,文件存在標志,存儲設備剩余空間和總空間,當前訪問線程數。
[0031] 多通道視頻流的具體調度方法步驟為:
[0032] 1)計算各存儲設備所剩空間百分比k,即設備剩余空間和總空間的比值;
[0033] 2)計算各存儲設備最大訪問線程數量Vn =kXThreadSm,其中,ThreadSm為當前 需要存儲視頻的通道數;
[0034] 3)按剩余空間的大小對上述結構數組元素由大到小排序;
[0035] 4)根據步驟3)的排序結果,把當前線程訪問數量未達到Vn/2的結構數組元素 中的第一個存儲設備,即最大剩余空間的設備分配給當前存儲線程。如果訪問數量已達到Vn/2,選擇其余剩余空間最大而且訪問線程數沒有達到Vn/2的存儲設備,分配給此存儲設 備最近的存儲線程訪問請求。
[0036] 5)當所有存儲設備的線程訪問數都已經達到Vn/2時,把剩余空間大并且訪問線 程數量未達到Vn的存儲設備分配給最新存儲線程訪問請求;
[0037] 6)如果結構數組中排序的最后一個存儲設備已經達到Vn,則返回無存儲設備可 用的信息。此時則開始應用覆蓋策略,將時間最久的視頻文件刪除,從而節省出更多的存儲 設備空間。采用多通道存儲調度策略,使視頻流較均勻地存儲在各個存儲設備,提高了存儲 設備I/O訪問的效率,并且提高了存儲設備的利用率。
[0038] 在索引構建方面,本發明的優選的實施例采用文件索引方式,對應于每一天,建立 一個以年月日為名稱的文件夾,每個文件夾里包含一個用于記錄當天每個文件信息(如視 頻的類型、起止時間、索引ID、數據位置及長度等)的文件索引表,這