呂啟尤,陸庭輝,吳毅良
(江門供電局,廣東 江門 529000)
無論是直升機巡檢還是無人機巡檢,在巡檢過程中都會產(chǎn)生大量的視頻圖像等數(shù)據(jù),這些非結構化數(shù)據(jù)不能以二進制格式存儲在關系數(shù)據(jù)庫中,因為這樣的讀寫效率和性能極為低下。最初較為普遍的做法是直接以原始視頻圖片形式存于服務器磁盤,保存在文件系統(tǒng)中,但是隨著時間的推移,數(shù)據(jù)文件變得越來越多后(隨著智能化設備接入和無人機行業(yè)的發(fā)展,正由TB級向PB級轉(zhuǎn)變),查找和瀏覽某個文件將會逐漸變得效率越來越低,不利于歷史問題的追溯和查看。當一個文件目錄下保存了大量的文件數(shù)據(jù)后,打開這個目錄通常都會耗費一定時間,更不要說在這些文件中查找到想要訪問和讀取的文件。因此,設計一種合理的存儲方式便成為了一個亟待解決的問題。
無人機使用吊艙或云臺來搭載照相機和攝像機,一般有可見光照相機、可見光攝像機、紅外攝像機等幾種類型的設備。
(1)巡檢產(chǎn)生的數(shù)據(jù)一般是大文件的視頻和小文件的圖片,傳統(tǒng)的文件系統(tǒng)存儲方式不適合保存海量的這種歷史數(shù)據(jù),會造成磁盤的碎片過多,累計導致空間利用率不高以及訪問效率低下等問題。
(2)巡檢產(chǎn)生的視頻和圖像數(shù)據(jù)都依照國際標準格式設計,因此巡檢數(shù)據(jù)的數(shù)據(jù)通用性較好,能夠為后續(xù)的數(shù)據(jù)分析和訪問提供相對統(tǒng)一的處理方式。
(3)巡檢數(shù)據(jù)更新相對不頻繁。巡檢數(shù)據(jù)的更新在巡檢任務完成后才發(fā)生,巡檢部門會定期定制巡檢計劃,周期性的開展無人機巡檢作業(yè)任務。每次巡檢結束后,及時將任務設備的巡檢數(shù)據(jù)導出,匯總整理巡檢結果并提交。
巡檢數(shù)據(jù)需要有完善合理的存儲方式,能夠方便的進行歷史記錄追溯查看和版本管理等操作。
作者簡介:呂啟尤(1979-),男,廣東鶴山人,碩士,中級工程師,主要研究方向:數(shù)據(jù)分析,大數(shù)據(jù),云計算,物聯(lián)網(wǎng)技術。
分布式文件系統(tǒng)是實現(xiàn)非結構化數(shù)據(jù)存儲的主要技術。分布式存儲技術與傳統(tǒng)的集中式存儲技術不同,并不是將數(shù)據(jù)存儲在某個特定的節(jié)點上,而是通過網(wǎng)絡使用網(wǎng)絡中多臺機器上的磁盤空間,并將這些分散的存儲資源構成一個虛擬的存儲設備。具有可擴展性、高可用性、高可靠性、高性能、數(shù)據(jù)一致性等特點。
根據(jù)無人機巡檢產(chǎn)生的海量非結構化數(shù)據(jù)的特點,可以選擇采用Ceph分布式存儲技術來解決在當前大量視頻圖像存儲上帶來的問題。
Ceph是一個開源的分布式存儲系統(tǒng),最早是一個致力于開發(fā)下一代高性能分布式文件系統(tǒng)的項目。近些年,云存儲技術發(fā)展迅速,Open Stack做為云計算平臺支持幾乎所有類型的云環(huán)境,而Ceph對Open Stack的完美適應,使其在云時代的背景下快速更新迭代,發(fā)展迅速。
Ceph可供成千用戶訪問PB乃至EB級的數(shù)據(jù)。Ceph節(jié)點以普通硬件和智能守護進程作為支撐點,Ceph存儲集群組織大量節(jié)點,節(jié)點之間靠相互通訊來復制數(shù)據(jù)、并動態(tài)地重分布數(shù)據(jù)。
Ceph的數(shù)據(jù)存儲過程如圖1所示。
圖1 Ceph數(shù)據(jù)的存儲過程
圖1說明了在Ceph中,文件數(shù)據(jù)是如何被存儲到系統(tǒng)中。觀察圖1上面的那張圖,待存儲的視頻或圖片文件(File)會被切分成一個或多個對象(Objects),每個對象的大小可以由管理員設定,通常為2M或4M,每個對象都會有一個自己的唯一對象ID(oid),oid由文件FileID(ino)和分片編號(ono)組成??梢钥吹剑瑢ο蟮膐id不僅僅是可以唯一標示每個不同的對象,并且存儲了對象與文件的從屬關系。由于ceph的所有數(shù)據(jù)都虛擬成了整齊劃一的對象集合,讀寫效率會比較高。
被分隔成的對象也是文件系統(tǒng)中的一個具體文件,他們被存儲在對象存儲設備上(OSD),如圖1的下面那張圖所示。然而,每個對象是不會直接存儲進對象存儲設備中,而是映射到歸置組(PG)中,歸置組是一個邏輯概念,我們可以在Ceph系統(tǒng)中直接看到被分隔成的對象,但是不會直接看到歸置組。Ceph客戶端要存對象時,CRUSH將把各對象映射到某個歸置組。把對象映射到歸置組在OSD和客戶端間創(chuàng)建了一個間接層。由于Ceph集群必須能增大或縮小、并動態(tài)地重均衡。如果讓客戶端“知道”哪個OSD有哪個對象,就會導致客戶端和OSD緊耦合;相反,CRUSH算法把對象映射到歸置組、然后再把各歸置組映射到一或多個OSD,這一間接層可以讓Ceph在OSD守護進程和底層設備上線時動態(tài)地重均衡。
Ceph的OSD是強一致性的分布式存儲。它的讀寫流程如下:
圖2 OSD讀寫流程
客戶端把對象寫入目標歸置組的主OSD,然后這個主OSD再用它的CRUSH圖副本找出用于放對象副本的第二、第三個OSD,并把數(shù)據(jù)復制到適當?shù)臍w置組所對應的第二、第三OSD(要多少副本就有多少OSD),最終,確認數(shù)據(jù)成功存儲后反饋給客戶端。
基于上面描述的存儲過程,Ceph提供了一個可無線伸縮的Ceph存儲集群,集群中的OSD節(jié)點可以隨時輕松的添加或移除,一個OSD節(jié)點可以是一臺服務器的整塊磁盤,也可以是磁盤的某部分目錄結構。
Ceph存儲集群包含兩種類型的守護進程:Ceph監(jiān)視器(Monitors)和CephOSD守護進程(OSDs)。Ceph監(jiān)視器維護著集群運行圖的主副本。一個監(jiān)視器集群確保了當某個監(jiān)視器失效時的高可用性。存儲集群客戶端向Ceph監(jiān)視器索取集群運行圖的最新副本;CephOSD守護進程檢查自身狀態(tài)、以及其它OSD的狀態(tài),并報告給監(jiān)視器們。存儲集群的客戶端和各個CephOSD守護進程使用CRUSH算法高效地計算數(shù)據(jù)位置,而不是依賴于一個中心化的查詢表,因此避免了因查詢中心出問題時導致的整個系統(tǒng)尋址不可用。
綜上所述,無論是監(jiān)視器節(jié)點還是對象存儲節(jié)點,在系統(tǒng)中都是以集群形式存在的,因此整個系統(tǒng)的可靠性非常高;每個節(jié)點都可以非常方便的增加和移除,使得系統(tǒng)靈活性非常高;每個數(shù)據(jù)文件都會以對象以及對象副本形式存儲在多個對象存儲節(jié)點中,使得數(shù)據(jù)的安全性和系統(tǒng)的可用性高;取消了其他分布式系統(tǒng)中的中心查詢節(jié)點,存儲集群客戶端直接和各個OSD守護進程通信,通過CRUSH算法獲取數(shù)據(jù)位置,查找數(shù)據(jù)的效率更高。
常規(guī)的文件系統(tǒng)存儲輸電線路中的巡檢數(shù)據(jù)方式,隨著視頻圖像數(shù)據(jù)的累積會變得越來越不可用?;谶@種需求場景,結合當前云存儲技術的發(fā)展趨勢,分析當前流行的Ceph開源分布式存儲技術,從文件類型、文件大小和數(shù)量、系統(tǒng)穩(wěn)定性、可擴展性、數(shù)據(jù)容災性等多方面進行考慮和研究,從Ceph存儲集群的存儲過程、后臺進程管理方式等方面進行闡述,最終定義了適用于輸電線路巡檢數(shù)據(jù)存儲的應用模式,也對今后電力系統(tǒng)中類似海量非結構化數(shù)據(jù)的存儲方案選擇具有較高的參考價值。