视频存储服务器 存储性能,面向海量高清视频数据的高性能分布式存储系统
隨著城市項目的推進(jìn), 城市視頻監(jiān)控系統(tǒng)的規(guī)模不斷擴(kuò)大, 視頻監(jiān)控系統(tǒng)朝著“數(shù)字化、網(wǎng)絡(luò)化、高清化、智能化”的方向不斷前進(jìn).不斷增長的監(jiān)控點(diǎn)設(shè)備數(shù)量、更高清的攝像頭和更長的視頻留存時間, 對視頻監(jiān)控數(shù)據(jù)存儲系統(tǒng)提出了更高的要求.
傳統(tǒng)的基于IP-SAN(Internet protocol storage area network(IP存儲網(wǎng)絡(luò)))存儲方案通過iSCSI(Internet small computer system interface(Internet小型計算機(jī)系統(tǒng)接口))協(xié)議將磁盤陣列掛載給流媒體服務(wù)器做標(biāo)準(zhǔn)磁盤, 采用文件方式進(jìn)行視頻數(shù)據(jù)的集中存儲.在這種模式下, 數(shù)據(jù)流要經(jīng)過流媒體轉(zhuǎn)存服務(wù)器才能寫入磁盤陣列, 存在著單點(diǎn)故障和性能瓶頸等問題.視頻監(jiān)控系統(tǒng)通常要求7x24小時持續(xù)運(yùn)行, 面對多路視頻流的并發(fā)持續(xù)寫入, 基于通用文件系統(tǒng)構(gòu)建的存儲系統(tǒng)將會產(chǎn)生大量的文件碎片, 導(dǎo)致隨著時間的推移, 存儲效率不斷下降.因此, 傳統(tǒng)模式不能滿足視頻監(jiān)控系統(tǒng)規(guī)模上升時對存儲系統(tǒng)的高可靠性、高性能、可擴(kuò)展性和易管理等方面的需求.隨著技術(shù)的發(fā)展, 分布式云存儲[變得越來越重要, 一些中等規(guī)模的視頻監(jiān)控系統(tǒng)采用了分布式云存儲方案.
視頻監(jiān)控的數(shù)據(jù)和傳統(tǒng)數(shù)據(jù), 如郵件、文件、圖片、數(shù)據(jù)表等相比, 有以下特點(diǎn).
(1) 數(shù)據(jù)量大.視頻監(jiān)控朝著高清化方向發(fā)展, 隨著攝像頭數(shù)量的不斷增加, 一個中等規(guī)模的城市一天就能產(chǎn)生PB級數(shù)據(jù)量.監(jiān)控視頻的保存周期為30天~90天, 視頻監(jiān)控的存儲系統(tǒng)必須滿足視頻數(shù)據(jù)的長時間大容量存儲需求, 且要具有線性擴(kuò)展的能力.
(2) 寫密集.傳統(tǒng)數(shù)據(jù)的讀寫符合二八定律, 即20%的時間寫數(shù)據(jù), 80%的時間讀數(shù)據(jù).而視頻監(jiān)控數(shù)據(jù)完全相反, 寫操作幾乎占到了100%, 只有在回放和檢索視頻時才讀取視頻數(shù)據(jù).視頻監(jiān)控的存儲系統(tǒng)在設(shè)計和實(shí)現(xiàn)上需要優(yōu)先考慮如何提高寫入帶寬.
(3) 碼率恒定.傳統(tǒng)數(shù)據(jù)的碼率比較隨機(jī), 而視頻監(jiān)控數(shù)據(jù)的碼率比較恒定, 因為監(jiān)控視頻的分辨率和格式一般不會發(fā)生變化.
(4) 7×24小時持續(xù)服務(wù).傳統(tǒng)數(shù)據(jù)一般遵循訪問周期, 可在訪問量很少的情況下將系統(tǒng)停機(jī)下線進(jìn)行維護(hù)和升級而不影響正常的商業(yè)活動.視頻監(jiān)控數(shù)據(jù)不存在這樣的周期, 視頻數(shù)據(jù)流持續(xù)不間斷地涌向存儲系統(tǒng), 任何升級維護(hù)操作都不能影響輸入視頻流的存儲, 必須動態(tài)地進(jìn)行.
本文針對上述問題和視頻監(jiān)控數(shù)據(jù)的特點(diǎn), 提出一種面向海量高清視頻監(jiān)控數(shù)據(jù)的高性能分布式存儲系統(tǒng)——DVSS(distributed video surveillance storage).本文的主要貢獻(xiàn)如下.
(1) 首先, 設(shè)計了一種基于RAW磁盤設(shè)備的邏輯卷結(jié)構(gòu)來組織并存儲非結(jié)構(gòu)化視頻數(shù)據(jù), 將大量并發(fā)數(shù)據(jù)流隨機(jī)寫轉(zhuǎn)化成大段的連續(xù)寫, 極大地提升了磁盤寫入帶寬, 支撐大規(guī)模高清視頻流的并發(fā)寫入.
(2) 其次, 設(shè)計了兩級索引結(jié)構(gòu)來管理視頻元數(shù)據(jù).兩級索引結(jié)構(gòu)設(shè)計極大地減少了狀態(tài)管理器需要管理的元數(shù)據(jù)數(shù)量, 消除了性能瓶頸, 且可實(shí)現(xiàn)錄像段的秒級檢索.
(3) 最后, 實(shí)現(xiàn)了DVSS系統(tǒng)原型, 并對磁盤寫入速度和支持的并發(fā)視頻路數(shù)等關(guān)鍵指標(biāo)進(jìn)行測試, 證明了DVSS系統(tǒng)的高效的存儲性能.測試結(jié)果表明, DVSS系統(tǒng)在單臺廉價PC服務(wù)器上能夠同時記錄400路1080P視頻流數(shù)據(jù), 寫入速度達(dá)本地文件系統(tǒng)的2.5倍.
1 相關(guān)工作
針對傳統(tǒng)文件系統(tǒng)存儲方案的問題, 研究人員根據(jù)視頻監(jiān)控數(shù)據(jù)的特點(diǎn), 提出了直寫裸磁盤設(shè)備的流式存儲策略, 即設(shè)計一種磁盤邏輯結(jié)構(gòu), 將錄像段的數(shù)據(jù)和索引信息以此結(jié)構(gòu)組織并直接寫入裸磁盤設(shè)備中[.文獻(xiàn)[
文獻(xiàn)[
2 DVSS設(shè)計與實(shí)現(xiàn)
視頻監(jiān)控數(shù)據(jù)具有高并發(fā)、大容量、有序的特點(diǎn).通用文件系統(tǒng)如NTFS和Ext4等并非針對視頻監(jiān)控數(shù)據(jù)而設(shè)計, 傳統(tǒng)存儲方案以文件來組織并存儲視頻流數(shù)據(jù), 存在以下兩個問題.
(1) 以文件方式存儲視頻流數(shù)據(jù)不能保證數(shù)據(jù)在磁盤上的存放是連續(xù)的, 同時, 在記錄多路高清視頻流時, 系統(tǒng)需要維護(hù)大量打開的文件描述符, 并在這些文件描述符之間來回切換.隨著系統(tǒng)長時間運(yùn)行, 文件被頻繁地創(chuàng)建和刪除, 勢必產(chǎn)生大量的磁盤碎片, 使得在寫連續(xù)的視頻流時磁頭需要頻繁地移動, 造成磁盤訪問性能下降.
(2) 文件分片的長度決定了視頻檢索的精度:分片太小會產(chǎn)生海量的小文件, 造成inode號不夠用; 分片太大, 造成檢索精度不高.
2.1 DVSS系統(tǒng)結(jié)構(gòu)
DVSS系統(tǒng)由一個狀態(tài)管理器(state manager)、多個存儲服務(wù)器(storage
server)和多個客戶端(client)組成.系統(tǒng)結(jié)構(gòu)如
圖 1
Fig. 1
Fig. 1 Architecture of DVSS
圖 1 DVSS系統(tǒng)結(jié)構(gòu)
狀態(tài)管理器主要做調(diào)度工作, 起負(fù)載均衡的作用.狀態(tài)管理器除了需要在內(nèi)存中記錄集群中所有存儲組和存儲服務(wù)器的狀態(tài)信息以外, 還需要記錄錄像段的起止時間和對應(yīng)的存儲組.存儲服務(wù)器采用分組的組織方式, 一個存儲組由1臺或多臺存儲服務(wù)器組成, 同組內(nèi)的存儲服務(wù)器互相備份, 一個組的存儲容量由該組內(nèi)存儲容量最小的存儲服務(wù)器決定, 存儲集群總?cè)萘繛榧褐兴薪M的存儲容量之和.HDFS等主流的副本實(shí)現(xiàn)方式通常采用動態(tài)分配的方式, 一個文件實(shí)際存儲節(jié)點(diǎn)位置是不確定的, 通常是3個備份.DVSS系統(tǒng)采用的分組存儲方式更加靈活, 可操作性更強(qiáng).例如, 對于重點(diǎn)監(jiān)控點(diǎn)的視頻數(shù)據(jù), 可以由管理員指定存儲分組.當(dāng)一個分組的存儲服務(wù)器訪問壓力較大時, 可以在該組添加存儲服務(wù)器來提升服務(wù)能力; 當(dāng)視頻監(jiān)控規(guī)模擴(kuò)大時, 可以增加存儲組來擴(kuò)充存儲容量, 實(shí)現(xiàn)系統(tǒng)線性擴(kuò)展.存儲服務(wù)器保存視頻流數(shù)據(jù)和其索引信息.客戶端擁有全局唯一識別號(命名為SID), 通常為網(wǎng)絡(luò)攝像頭的IP地址.
2.2 視頻數(shù)據(jù)組織
為了提高存儲性能, 方便對視頻進(jìn)行檢索和管理, DVSS采用了將視頻流和其元數(shù)據(jù)分開存儲的設(shè)計思想.元數(shù)據(jù)和視頻數(shù)據(jù)存儲在不同的磁盤驅(qū)動器上, 保證元數(shù)據(jù)的讀寫請求不會影響對視頻流數(shù)據(jù)的讀寫, 同時方便在視頻錄像段過期后對其進(jìn)行空間回收.
2.2.1 視頻流數(shù)據(jù)管理
考慮到視頻流編碼格式的特點(diǎn), DVSS以GOP為單位組織數(shù)據(jù)并建立索引, 提供精確到秒級的高效檢索.為了便于視頻流數(shù)據(jù)的管理, 定義如
圖 2
Fig. 2
Fig. 2 Logical volume architecture design
圖 2 邏輯卷結(jié)構(gòu)設(shè)計
(1) 邏輯卷
邏輯卷將多個磁盤或磁盤分區(qū)在邏輯上聚合, 提供大小一致的存儲空間, 無需擔(dān)心不同磁盤分區(qū)大小不一致的情況, 方便實(shí)現(xiàn)存儲空間動態(tài)擴(kuò)容.
用LVM(logical volume manager(邏輯卷管理器))創(chuàng)建邏輯卷之后, 按如
(2) 數(shù)據(jù)塊
數(shù)據(jù)塊是存儲空間分配和回收管理的基本單位.系統(tǒng)每次分配一個數(shù)據(jù)塊給某一視頻流, 并將對應(yīng)的位圖bit表示置1.一個數(shù)據(jù)塊上存儲的是同一路視頻流的數(shù)據(jù), 方便進(jìn)行順序讀寫, 提高讀寫帶寬.空間回收時, 因為數(shù)據(jù)塊里的數(shù)據(jù)是按時有序的, 只要此數(shù)據(jù)塊存放的最后一個圖像數(shù)據(jù)過期就回收此數(shù)據(jù)塊.數(shù)據(jù)塊的大小一般設(shè)置為512MB, 具體的討論見第3.2節(jié).
(3) 圖像組GOP
當(dāng)前廣泛采用的視頻編解碼標(biāo)準(zhǔn)H.264/AVC將I幀、P幀、B幀組成圖像組來編碼圖像序列, 一個GOP通常存放1s的視頻數(shù)據(jù).
DVSS利用視頻數(shù)據(jù)流的編碼特征, 以GOP為單位讀寫數(shù)據(jù), 同一個視頻流的GOP在數(shù)據(jù)塊中連續(xù)存放, 直到數(shù)據(jù)塊剩下的空間不足以存放一個GOP為止.
2.2.2 元數(shù)據(jù)管理
為了方便實(shí)現(xiàn)負(fù)載均衡和精確到秒級的檢索, DVSS設(shè)計了兩級索引結(jié)構(gòu), 并使用基于內(nèi)存的鍵值對數(shù)據(jù)庫Redis作為元數(shù)據(jù)管理引擎.
(1) 一級索引
一級索引存放在狀態(tài)管理器上, 用來存儲錄像段索引.如Key值, 按起始時間排序的錄像段記錄列表作為對應(yīng)的Value值.由于監(jiān)控視頻流本身按時有序, 所以錄像段記錄的插入也是有序的, 可以實(shí)現(xiàn)O(1) 的插入時間復(fù)雜度.
圖 3
Fig. 3
Fig. 3 First-Level index structure
圖 3 一級索引結(jié)構(gòu)
錄像段是從客戶端發(fā)起視頻寫請求開始, 到客戶端主動停止寫入或者因為存儲服務(wù)器空間不足拒絕繼續(xù)寫入為止的一段連續(xù)視頻.
(2) 二級索引
二級索引存放在存儲服務(wù)器上, 結(jié)構(gòu)上類似于一級索引, 其基本索引單元為GOP, 用于對視頻流的GOP進(jìn)行描述.一個GOP的描述信息包括該GOP對應(yīng)的起始時間戳、存放的邏輯卷號、對應(yīng)的數(shù)據(jù)塊、塊內(nèi)偏移和長度等信息.視頻流標(biāo)識為Key值, 按時間戳有序的GOP描述信息列表作為對應(yīng)的Value值.同樣, GOP描述信息的插入也是有序的, 可以實(shí)現(xiàn)O(1) 的插入時間復(fù)雜度.
2.3 視頻流上傳和檢索
2.3.1 視頻流上傳
視頻流上傳操作由客戶端主動發(fā)起, 客戶端在上傳固定時長的視頻流后結(jié)束寫操作, 再發(fā)起新的上傳操作.通常, 一個視頻段的時長為1個小時.視頻段時長太短, 會增大狀態(tài)管理器管理的元數(shù)據(jù)的負(fù)擔(dān); 時長太長, 則不利于系統(tǒng)的負(fù)載均衡和動態(tài)擴(kuò)容.
上傳步驟如下.
(1) 客戶端向狀態(tài)管理器發(fā)送上傳請求, 包括視頻流標(biāo)識、視頻段起始時間、預(yù)計時長和碼流大小.
(2) 狀態(tài)管理器根據(jù)負(fù)載均衡策略查詢可用的存儲服務(wù)器, 在一級索引里增加一條視頻段記錄, 將分配的存儲服務(wù)器的IP地址和端口號返回給客戶端.
(3) 客戶端向分配的存儲服務(wù)器發(fā)起寫操作, 包括視頻流標(biāo)識、起始時間和視頻流數(shù)據(jù).
(4) 存儲服務(wù)器的視頻流編解碼模塊解析出GOP, 按需給此視頻流分配數(shù)據(jù)塊, 將GOP連續(xù)地寫入數(shù)據(jù)塊, 并在二級索引里增加對應(yīng)的GOP描述信息記錄.
(5) 在客戶端完成此視頻段的上傳后, 存儲服務(wù)器返回狀態(tài)信息.
2.3.2 視頻流檢索
監(jiān)控視頻回放以視頻流檢索為基礎(chǔ), 當(dāng)用戶需要查看某一段視頻時, 客戶端發(fā)起視頻流檢索操作.精確到秒級的檢索精度, 減少了不必要數(shù)據(jù)的傳輸, 極大地提高了視頻回放的效率.
檢索步驟如下.
(1) 客戶端向狀態(tài)管理器發(fā)送檢索請求, 包括視頻流標(biāo)識、視頻段起始時間和回放時長.
(2) 狀態(tài)管理器以視頻流標(biāo)識為Key在鍵值對數(shù)據(jù)庫中查詢對應(yīng)的視頻段信息列表, 在有序的視頻段信息列表中定位對應(yīng)的起始時間和時長的視頻段, 得到此視頻段的存儲服務(wù)器組編號.狀態(tài)管理器再根據(jù)存儲服務(wù)器組內(nèi)的負(fù)載情況和視頻數(shù)據(jù)同步情況選擇一個可用的存儲服務(wù)器, 并返回其IP地址和端口.
(3) 客戶端向定位的存儲服務(wù)器發(fā)起數(shù)據(jù)讀請求, 包括視頻流標(biāo)識, 起始時間和時長.
(4) 存儲服務(wù)器根據(jù)客戶端的讀請求, 通過二級索引找到視頻段的視頻數(shù)據(jù)存儲所在的數(shù)據(jù)塊區(qū)間, 以GOP為單位連續(xù)讀出視頻數(shù)據(jù).
(5) 存儲服務(wù)器讀取的視頻段數(shù)據(jù)返回給客戶端.
2.4 高并發(fā)寫優(yōu)化
DVSS支持大規(guī)模視頻流的高并發(fā)寫操作.狀態(tài)管理器會根據(jù)存儲服務(wù)器的負(fù)載情況, 將寫請求分配給合適的存儲服務(wù)器.對于單個存儲服務(wù)器, 在同時寫入的視頻路數(shù)較高的情況下, 因不同的視頻流寫的數(shù)據(jù)塊不同, 多視頻流高并發(fā)的寫入會導(dǎo)致磁頭的頻繁移動, 使得磁盤存取性能降低.
為了解決這個問題, 存儲服務(wù)器采用單線程處理多路視頻流的并發(fā)寫入, 并為每個視頻流分配一個緩沖區(qū), 在緩沖區(qū)滿時將數(shù)據(jù)寫入到對應(yīng)的數(shù)據(jù)塊.同時, 根據(jù)數(shù)據(jù)塊的分配特性, 多個視頻流的數(shù)據(jù)塊編號呈遞增關(guān)系, 對應(yīng)地, 在磁盤上的物理位置也呈遞增關(guān)系, 故可對待寫入的數(shù)據(jù)按數(shù)據(jù)塊編號排隊.這種機(jī)制將無序的小段數(shù)據(jù)高并發(fā)寫入轉(zhuǎn)變成了有序的大段連續(xù)數(shù)據(jù)寫入, 在增加磁頭有效連續(xù)寫入時間的同時, 減少了磁頭的頻繁移動, 提高了磁盤存取性能, 可以支持更多的并發(fā)視頻路數(shù).
2.5 存儲空間管理
2.5.1 空間回收
監(jiān)控視頻的保存時間從1個月到3個月不等, 除了需要永久保存的錄像段外, 其他視頻數(shù)據(jù)隨著時間的推移, 其重要性逐步降低.由于磁盤存儲空間有限, 為了充分利用存儲資源, 需要對達(dá)到存儲周期的視頻數(shù)據(jù)進(jìn)行空間回收.
DVSS采用循環(huán)覆蓋的回收策略.空間回收由狀態(tài)管理器控制.狀態(tài)管理器根據(jù)用戶設(shè)定的存儲周期, 周期性地刪除一級索引里的過期的錄像段記錄信息, 并通知相應(yīng)的存儲服務(wù)器刪除對應(yīng)的二級索引.存儲服務(wù)器刪除過期的二級索引信息, 并將對應(yīng)的數(shù)據(jù)塊的位圖表示置0, 無需擦除數(shù)據(jù)塊里的實(shí)際視頻數(shù)據(jù), 回收效率較高.
得益于數(shù)據(jù)塊的分配策略, 連續(xù)數(shù)據(jù)塊存放的視頻流數(shù)據(jù)在時間上有序, 回收的空間也是連續(xù)的.當(dāng)回收的空間再次分配給數(shù)據(jù)流時, 并發(fā)寫入的數(shù)據(jù)流分得的數(shù)據(jù)塊也是連續(xù)的, 可以減少磁頭的移動.相鄰的數(shù)據(jù)塊總是被連續(xù)分配, 又被連續(xù)回收, 使存儲系統(tǒng)不會因為長時間運(yùn)轉(zhuǎn)而導(dǎo)致存取性能下降.
2.5.2 擴(kuò)容
為了應(yīng)對攝像頭路數(shù)增加以及攝像頭分辨率提高的挑戰(zhàn), 需要及時地對DVSS進(jìn)行擴(kuò)容.
(1) 組內(nèi)擴(kuò)容
同組內(nèi)的多臺存儲服務(wù)器互為備份, 類似于木桶短板效應(yīng), 一個組的存儲容量為該組服務(wù)器中最小的存儲容量.擴(kuò)充組內(nèi)容量時, 需要給組內(nèi)的每臺服務(wù)器增加相同的磁盤空間.
追加磁盤空間后, 用LVM創(chuàng)建新的邏輯卷, 并按邏輯卷結(jié)構(gòu)格式化, 分配邏輯卷號, 與裸設(shè)備(/dev/raw/raw[N])綁定后, 即可提供服務(wù).
(2) 系統(tǒng)擴(kuò)容
當(dāng)系統(tǒng)容量不足時, 可以增加存儲組組來擴(kuò)展系統(tǒng)存儲集群的總?cè)萘?新增的存儲服務(wù)器啟動后主動向狀態(tài)管理器匯報自己的狀態(tài), 狀態(tài)管理器對比自己內(nèi)存里記錄的所有存儲服務(wù)器狀態(tài)后就會發(fā)現(xiàn)此存儲組是新增的, 將此存儲器組加入活動存儲服務(wù)器隊列, 負(fù)載均衡機(jī)制會將新到來的上傳視頻請求導(dǎo)向給新增的存儲服務(wù)器組, 此新增服務(wù)器組就開始提供服務(wù), 正常工作, 實(shí)現(xiàn)了系統(tǒng)的動態(tài)擴(kuò)容.
2.6 高可用
DVSS由成本低廉的PC服務(wù)器組成, 在降低視頻監(jiān)控存儲系統(tǒng)成本的同時, 需要提高可靠性, 保證系統(tǒng)7×24小時持續(xù)服務(wù)的能力.DVSS的高可用主要體現(xiàn)在如下幾個方面.
(1) 狀態(tài)管理器高可用
類似于HDFS NameNode, DVSS的狀態(tài)管理器存在單點(diǎn)故障.在Hadoop
2.0中, HDFS NameNode單點(diǎn)故障問題已經(jīng)解決.DVSS參照了HDFS HA[的實(shí)現(xiàn), 狀態(tài)管理器由主狀態(tài)管理器和備狀態(tài)管理器構(gòu)成, 主備狀態(tài)管理器共享存儲.正常情況下, 只有主狀態(tài)管理器對外提供服務(wù).當(dāng)主備切換控制器檢測到主狀態(tài)管理器故障時, 進(jìn)行主備切換, 由備狀態(tài)管理器對外提供服務(wù).當(dāng)主狀態(tài)管理器恢復(fù)后, 再切換回來.狀態(tài)管理器高可用架構(gòu)消除了單點(diǎn)故障, 可持續(xù)對外提供服務(wù).
(2) 組內(nèi)互備
一個視頻錄像段的備份個數(shù)為所在存儲服務(wù)器組內(nèi)的服務(wù)器個數(shù).DVSS分組存儲的方式可以根據(jù)視頻流的重要程度靈活控制視頻段的副本個數(shù).將存儲服務(wù)器組按重要程度, 配置不同數(shù)量的組內(nèi)服務(wù)器.狀態(tài)管理器根據(jù)視頻流標(biāo)識將重要的視頻流導(dǎo)向到互備服務(wù)器較多的存儲組.
若一臺存儲服務(wù)器失效, 狀態(tài)管理器通過和存儲服務(wù)器之間周期性的心跳機(jī)制檢測出存儲服務(wù)器斷線, 狀態(tài)管理器會將此存儲服務(wù)器剔除服務(wù)隊列直到其重新上線.由于同一組內(nèi)的服務(wù)器是對等關(guān)系, 同組的其他服務(wù)器可以繼續(xù)提供服務(wù), 對此存儲服務(wù)器的讀數(shù)據(jù)請求, 會被分派給同組的其他存儲服務(wù)器.
(3) 斷點(diǎn)續(xù)傳
針對攝像頭可能出現(xiàn)的網(wǎng)絡(luò)故障問題, 前端設(shè)備需配有小容量的本地存儲, 如SD卡等.當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時, 視頻錄像會被存儲在本地存儲上; 在網(wǎng)絡(luò)恢復(fù)之后, 再將暫存在本地存儲的未上傳的視頻錄像補(bǔ)錄到DVSS中, 以保證不會因為網(wǎng)絡(luò)故障而發(fā)生數(shù)據(jù)丟失.
同時, 當(dāng)DVSS系統(tǒng)通過周期性的心跳機(jī)制發(fā)現(xiàn)攝像頭斷開連接時, 需通過發(fā)送報警信息等方式通知維護(hù)人員及時處理.
3 實(shí)現(xiàn)與評估
3.1 測試環(huán)境
DVSS原型系統(tǒng)由一臺狀態(tài)管理器和40臺存儲服務(wù)器組成.存儲服務(wù)器采用Intel Xeon 2.4GHz×2 CPU, 4GB內(nèi)存, 6塊1TB 15000RPM SATA Disks和Mellanox
InfiniBand QDR 40Gb/s網(wǎng)卡.操作系統(tǒng)為Ubuntu Server 14.04LTS, 鍵值對數(shù)據(jù)庫Redis采用V3.2版本.
3.2 參數(shù)測試
數(shù)據(jù)塊和緩沖區(qū)的大小將直接影響磁盤的寫性能.通過改變數(shù)據(jù)塊大小和為每路數(shù)據(jù)流分配的緩沖區(qū)大小來測試和分析這兩個參數(shù)對磁盤寫性能的影響.對單臺存儲服務(wù)器發(fā)起100路數(shù)據(jù)流并發(fā)寫入, 為了測試最大吞吐率, 不限定數(shù)據(jù)流的比特率大小.測試結(jié)果如
圖 4
Fig. 4
Fig. 4 Effect of data block and buffer size on disk write performance
圖 4 數(shù)據(jù)塊和緩沖區(qū)大小對磁盤寫性能的影響
測試數(shù)據(jù)顯示:64MB~512MB大小的數(shù)據(jù)塊, 在緩沖區(qū)大小為64KB時, 相對于32MB大小的數(shù)據(jù)塊, 寫入速度有顯著的提升.在數(shù)據(jù)塊大小為64MB~600MB時, 100路數(shù)據(jù)流并發(fā)寫入速度先隨著緩沖區(qū)大小的增大而提升, 隨后下降.對測試結(jié)果的分析如下:記數(shù)據(jù)塊大小為blocksize, 緩沖區(qū)大小為bufsize.在將bufsize大小的一路數(shù)據(jù)流寫入磁盤后, 需要調(diào)用lseek()將寫位置指向下一路數(shù)據(jù)流對應(yīng)的數(shù)據(jù)塊位置, 偏移量offset為$blocksi\mathop {ze}\limits^\tilde{\ } $ bufsize.在offset比較小的情況下, 上一次write()調(diào)用結(jié)束到下一次write()調(diào)用時, 磁盤已轉(zhuǎn)過要寫的位置, 需要多轉(zhuǎn)一圈才能接著寫, 使得寫性能下降.這解釋了數(shù)據(jù)塊增大時寫性能提高的原因, 同時, 隨著bufsize的繼續(xù)增大, 使得offset減小, 寫性能也會下降.數(shù)據(jù)塊也不是越大越好, 當(dāng)數(shù)據(jù)塊大小增大到600MB時, 由此帶來的尋道時間開銷使得寫性能顯著下降.
根據(jù)以上的測試結(jié)果, DVSS原型系統(tǒng)將數(shù)據(jù)塊和緩沖區(qū)大小分別設(shè)置為512MB和1MB.
3.3 單機(jī)性能測試
為了證明DVSS系統(tǒng)的視頻數(shù)據(jù)組織結(jié)構(gòu)在多路視頻流高并發(fā)寫入時的性能優(yōu)勢, 將50路~500路分辨率為1 080P的視頻流分別并發(fā)寫入DVSS單臺存儲服務(wù)器和Ext4文件系統(tǒng)中, 每一路視頻流的碼率恒定為4Mbit/s, 測得的平均寫入速度如
圖 5
Fig. 5
Fig. 5 DVSS single storage server and Ext4 performance comparison evaluation
圖 5 DVSS單臺存儲服務(wù)器與Ext4性能對比測試
當(dāng)視頻路數(shù)為50和100時, 總的輸入帶寬分別為25MB/s和50MB/s, Ext4和DVSS的寫入速度和輸入總帶寬一致.但是當(dāng)視頻路數(shù)為200時, 輸入帶寬為100MB/s, DVSS能夠順利地實(shí)時寫入, 而Ext4的寫入速度只有85.69MB/s, 低于輸入帶寬, 造成較大的寫入延遲.視頻路數(shù)上升到300時, 輸入總帶寬達(dá)到150MB/s, DVSS依然能夠?qū)崟r地將視頻數(shù)據(jù)寫入磁盤, 而Ext4的寫入速度稍微下降到了85.05MB/s.隨著視頻路數(shù)的繼續(xù)上升, DVSS的寫入速度持續(xù)穩(wěn)定增長, Ext4的寫入速度卻顯著下降.視頻路數(shù)上升, 用Ext4存儲大量并發(fā)的視頻流數(shù)據(jù)時, 系統(tǒng)需要維護(hù)打開的文件表項增多, 內(nèi)存開銷變大, 且需要來回切換要寫入的文件描述符, 磁頭移動更加頻繁, 導(dǎo)致其寫入性能顯著下降.
由此可見, DVSS單臺存儲服務(wù)器的寫入速度比基于文件系統(tǒng)的存儲方案要穩(wěn)定, 能夠支持400路分辨率為1 080P的視頻流的并發(fā)寫入.
3.4 整體性能測試
上述的實(shí)驗只測試了DVSS單臺存儲服務(wù)器在多路數(shù)據(jù)流同時寫入時的性能, 為了進(jìn)一步觀察DVSS系統(tǒng)作為一個整體對外提供服務(wù)的能力, 需要對其進(jìn)行大規(guī)模數(shù)據(jù)流并發(fā)寫入測試.將40臺存儲服務(wù)器分成20個存儲組, 每組2臺存儲服務(wù)器.我們用恒定碼流生成器(constant-bit-rate traffic generator)模擬2
000路、4 000路、6 000路、8 000路、9
000路、10 000路、11 000路、12 000路數(shù)據(jù)流, 每路數(shù)據(jù)流的比特率均為4Mbit/s.測試結(jié)果如
圖 6
Fig. 6
Fig. 6 DVSS overall performance evaluation
圖 6 DVSS整體性能測試
3.5 相關(guān)工作比較
為了說明DVSS系統(tǒng)的優(yōu)勢, 將DVSS系統(tǒng)與已有工作進(jìn)行對比分析, 分析結(jié)果見
表 1(Table 1)
Table 1 Comparison of DVSS with exisiting schemes
表 1 DVSS與已有工作的比較
現(xiàn)有/本文工作
存儲模型
容錯能力
性能瓶頸
檢索精度
寫性能
讀性能
性能描述
THNVR[
SQLite+定長文件
較弱
無
低
高
高
普通SATA硬盤上可同時記錄256路碼率為1~2Mbit/s的視頻數(shù)據(jù)
DSFS[
連續(xù)存儲模型CSM
單點(diǎn)故障
存在
低
高
低
單臺存儲服務(wù)器可同時記錄300路碼碼率為4Mbit/s的視頻數(shù)據(jù)
DVSS
Redis+邏輯卷結(jié)構(gòu)
高可用
無
高, 秒級
高
高
單臺存儲服務(wù)器可同時記錄400路碼率為4Mbit/s的視頻數(shù)據(jù)
Table 1 Comparison of DVSS with exisiting schemes
表 1 DVSS與已有工作的比較
THNVR采用定長文件存儲視頻數(shù)據(jù), 使用SQLite維護(hù)視頻文件的元數(shù)據(jù).THNVR檢索精度與文件大小和視頻碼率有關(guān), 精度較低.THNVR只有1份存儲的視頻數(shù)據(jù), 當(dāng)THNVR節(jié)點(diǎn)發(fā)生故障時, 與該節(jié)點(diǎn)連接的攝像頭的視頻數(shù)據(jù)將面臨丟失的風(fēng)險, 容錯能力較弱.DSFS設(shè)計了一種連續(xù)存儲模型(CSM), 將對磁盤的隨機(jī)高并發(fā)寫轉(zhuǎn)化為順序?qū)? 有較高的寫性能.但CSM模型中, 同一路視頻數(shù)據(jù)存儲較為分散, 讀操作需要頻繁移動磁頭, 導(dǎo)致DSFS的讀性能較低.DSFS的元數(shù)據(jù)全部由MetaServer管理, 元數(shù)據(jù)量較大, 存在著性能瓶頸和單點(diǎn)故障問題.DVSS以GOP為單位組織視頻數(shù)據(jù), 檢索精度能達(dá)到秒級.DVSS采用根據(jù)視頻監(jiān)控數(shù)據(jù)特征設(shè)計的邏輯卷結(jié)構(gòu), 并結(jié)合多數(shù)據(jù)流并發(fā)寫入優(yōu)化方法, 將無序隨機(jī)的小寫轉(zhuǎn)化成有序的大段連續(xù)寫, 提供較高的寫性能, 并且同一路視頻流的數(shù)據(jù)存儲在同一數(shù)據(jù)塊中, 能夠支持較高的讀性能.同時, DVSS針對分布式存儲的特點(diǎn), 設(shè)計了元數(shù)據(jù)服務(wù)和視頻數(shù)據(jù)的可用機(jī)制, 提高了系統(tǒng)的容錯能力和可用性.
4 結(jié)束語
本文針對傳統(tǒng)基于IP-SAN視頻監(jiān)控存儲系統(tǒng)在規(guī)模上升時難以線性擴(kuò)展的問題, 提出了面向視頻監(jiān)控數(shù)據(jù)的分布式視頻流直存系統(tǒng)DVSS.DVSS將非結(jié)構(gòu)化視頻數(shù)據(jù)以GOP為單位組織直存入裸磁盤設(shè)備, 摒棄了傳統(tǒng)基于文件的存儲方式, 單臺存儲服務(wù)器在400路1 080P視頻流數(shù)據(jù)并發(fā)寫入時的速度達(dá)到本地文件系統(tǒng)的2.5倍左右.DVSS采用的兩級索引檢索結(jié)構(gòu)只需要狀態(tài)管理器存儲少量的元數(shù)據(jù), 極大地減少了狀態(tài)管理器的負(fù)擔(dān), 消除了性能瓶頸.同時, 兩級索引結(jié)構(gòu)提供了精確到秒級的檢索精度, 能夠更好地服務(wù)于上層應(yīng)用.此外, DVSS靈活的存儲服務(wù)器分組方式和組內(nèi)服務(wù)器互相備份的關(guān)系, 讓其能夠更好地支持視頻監(jiān)控系統(tǒng)的擴(kuò)展和容錯需求.在DVSS系統(tǒng)的后續(xù)工作中, 將考慮用新型存儲設(shè)備, 如SSD(solid state disk(固態(tài)盤))等作為緩存盤, 進(jìn)一步提升系統(tǒng)對高并發(fā)高清視頻的存儲能力.另一方面, 系統(tǒng)將會采用糾刪碼(erasure code)技術(shù)對存儲時間超過1個月的和需要永久保存的錄像段進(jìn)行離線處理, 進(jìn)而用糾刪碼的技術(shù)提高設(shè)備的存儲效率.
總結(jié)
以上是生活随笔為你收集整理的视频存储服务器 存储性能,面向海量高清视频数据的高性能分布式存储系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java独步寻花,小班语言《江畔独步寻花
- 下一篇: 城管威逼交警“让老百姓笑话”