

摘 要:本文從企業面臨的實際痛點、需求出發,通過闡述光伏制造企業現有備份方案下存在的風險和面對的問題,根據阿里云推出的阿里云對象存儲oss服務,設計出一種linux系統環境下基于云存儲本地掛載技術以及Rsync算法的文件備份方案。通過現有開源工具如inotify、Rsync、ossfs以及基于現有MES系統查詢追溯功能二次開發,實現了數據的實時增量備份,長期備份,按需購買存儲空間,以及海量數據快速查詢檢索。利用ossfs工具將云端存儲池掛載為一塊可讀、可寫、可執行的本地存儲目錄,利用Rsync算法實現文件自動同步備份,增量備份,減少傳輸數據,節省帶寬。項目的順利實施,節約了企業投入成本的同時進一步提高了數據的安全性。
關鍵詞:對象存儲;備份;ossfs;阿里云
1 背景
隨著信息系統在企業生產、經營過程中發揮著越來越重要的作用,信息系統的數據安全變得至關重要,系統運行以及數據保存是否安全直接決定了企業業務的正常運行。隨著企業的發展,會產生大量離散的電子文件數據,種類繁多并且需要長時間保存。通常企業會通過搭建文件服務器的方式,進行關鍵數據的備份,在系統或數據庫層面雖然可以借助于一些成熟的技術如raid磁盤陣列、雙活冗余、虛擬化、RAC、dataguard等方式,保障服務器、數據庫的數據安全,但是,依然面臨著如硬件損壞、設備過保、更新換代成本過高、火災或自然災害等問題和風險。本著數據存儲安全性高、投入成本較低的目的,晶澳太陽能科技股份有限公司將目光投向了云端存儲的方向,結合公司實際需求,取得了良好的成效。
光伏組件太陽能在生產過程中需要對每一塊電池板進行EL檢測,每一塊電池板會生成一張EL測試圖片如圖1所示,該圖片通過施加反向電壓后用專用相機拍攝,可以清晰的呈現出電池板內部缺陷,比如隱裂、斷柵、黑心等問題,生產過程中質量、工藝等人員需要通過EL圖片對產品抽檢分析,產品發到客戶手中,客戶也會要求導出該圖片與實物進行比對。該圖片每個大小在1MB作用,根據產能,數據日增量達到數十GB,根據晶澳對于產品質保25年的承諾,意味著這些圖片數據需要保存25年之久,并且可以隨時導出。這就給IT造成了一定壓力,一方面,25年時間里如何保證這些數據的存儲安全;另一方面,圖片數據增量龐大,現有的存儲設備存滿后怎么辦,更換新的存儲設備需要多少容量,新舊存儲設備更替周期需要幾年,如何快速地將歷史數據復制到新存儲設備中,面對海量數據如何能快速檢索出需要的那一張圖片。鑒于以上幾個問題,我首次向公司提出了圖片數據遷移上云的設想,經過反復實踐,解決了這一棘手的問題,節約了投入成本、維護成本的同時也保障了數據的安全性。
2 相關技術及原理
2.1 對象存儲OSS
對象存儲OSS是阿里云提供的云存儲產品。支持按需購買,自動擴容。簡單的說,就是阿里開通的一個文件存儲的服務。使用阿里云存儲需要注冊一個賬號,注冊后需要創建Bucket存儲桶即存儲空間的意思,其空間理論上是按需分配的,只要定期支付費用就可以隨著使用量自動擴展,這一方面就解決了企業內部存儲需要不斷加盤柜擴容的問題。要使用這塊存儲空間需要AccessId和AccessKey進行授權。獲取到AccessId和AccessKey后,將其加入配置文件,就可以使用掛載工具掛載這塊存儲空間了,從而可以使本地的Linux服務器多出一塊像本地目錄一樣的空間。
2.2 OSSFS掛載工具
OSSFS就是基于阿里云對象存儲的fuse客戶端,且OSSFS只支持Linux系統。Fuse即filesystem in userspace,是Linux系統中用于掛載某些網絡存儲到本地的模塊。OSSFS安裝成功以后,通過掛載命令就能使用了。
2.3 Rsync同步工具
RSYNC是Linux系統下常用的文件備份工具,其與CP命令的不同之處在于只復制發生變化的部分而不是整體遍歷覆蓋,并且可以保持文件的原有屬性權限,從而保持源目錄和目標目錄數據的完全一致。而實現這種功能是因為其獨有的算法。基于這一特性,我們很容易實現源目錄和目標目錄兩個固定目錄下的數據備份需求,只需要定期運行RSYNC命令就可以實現兩個目錄的數據同步,[1]同時RSYNC加上inotify工具就可以實現監聽備份的功能,源目錄一單發生數據的增加、刪除、修改等操作,通過inotify的監聽就可以觸發RSYNC進行數據同步。[2]
3 項目實施的主要內容
3.1 在Linux服務器上安裝OSSFS工具
ossfs安裝過程中報錯,系統存在老版本的fuse與ossfs軟件包中的沖突。卸載本機自帶的fuse軟件包,具體如下:
rpm-qa| grep fuse //查看rpm
rpm-ev--nodeps fuse-libs-2.8.3-4.el6.x86_64 //卸載
yum localinstall ossfs_1.80.5_centos6.5_x86_64.rpm--nogpgcheck //安裝軟件包
3.2 掛載存儲
ossfs在成功安裝后掛載存儲報錯,ossfs:/usr/lib64/libcrypto.so.10:no version information available(required by ossfs)。仍然是系統內核版本過低,軟件包版本低導致的問題,官方要求需要centos7內核版本以上,公司服務器使用redhat6.5系統。因此需要通過yum更新一下依賴包。
yum update openssl //通過yum更新系統openssl軟件包及依賴包
3.2.1 通過ossfs掛載云存儲到本地
echobucketid:secret key > /etc/passwd-ossfs //生成密碼文件
chmod 640 /etc/passwd-ossfs //修改權限
mkdir /wocloud //建立掛載目錄
ossfsbucketid /wocloud-ourl=http://oss-cn-beijing.aliyuncs.com-o allow_other //掛載云存儲并允許其他用戶訪問掛載目錄
3.2.2 設置開機自動掛載
Vi /etc/fstab
ossfs#bucketid /wocloud fuse _netdev,url=http://oss-cn-beijing.aliyuncs.com,allow_other 0 0
正常掛載云存儲后如圖所示:
至此服務器多出一塊256TB實際可按需擴展的存儲空間,如圖2所示。
4 圖片數據的自動同步和檢索導出
在云存儲創建備份目錄,編寫shell腳本,加入計劃任務。結合inotify實時監控指定目錄下文件變化,當檢測到有新增文件變化時將發生變化的文件路徑交給rsync進行拷貝,減少rsync循環遍歷整個目錄的過程,while do循環執行,達到實時同步的目的。
海量圖片如何能夠快速檢索出需要的那一張?如果采用遍歷查找的方式將會極大地消耗服務器的資源,我們研發了圖片上傳程序,即每向服務器上傳一張圖片,自動向數據庫中追加一條數據,記錄下圖片在服務器的保存位置信息。每張EL圖片都有唯一ID命名,當需要查詢某一塊EL圖片時,輸入該組件ID,后臺通過數據庫查找到該圖片的保存路徑信息,并將該路徑信息字符串取出,通過文本替換方式,獲取到其對應在云端的保存路徑,最后通過調用SMB服務實現在線預覽和批量導出。[3]
5 結語
關于EL圖片備份的問題,即面對數據量的不斷遞增,以及數據保存25年以上的需求,如何既能保證數據存儲的安全性,又能將硬件投入成本降到最低。此前公司有的基地采用了購買大容量存儲服務器的方式,存儲容量達到100TB左右,一次性投入幾十到上百萬元;該做法雖然暫時免去了數據備份遷移的操作,足夠的空間余量可滿足日益增長的數據量需求,但是設備運行三年以后,官方售后過保,如何保障后續設備運轉正常,如何保障歷史數據的安全,仍然沒有妥善解決。
因此,通過引入阿里云存儲的做法成為解決該問題的最終方案,一方面將硬件投入、維護成本轉移到阿里云,無須考慮空間不足或硬件老化等問題,阿里云具備完善的備份冗余技術,可保障數據的安全性。另一方面,實現按需投入,每月定期支付增量數據對應的費用即可,免去了一次性高投入。
通過ossfs技術,實現服務器本地掛載阿里云存儲,即服務器多出一塊沒有空間限制的磁盤,且可以像操作本地硬盤一樣操作遠程云存儲。該技術的意義在于,車間客戶端在無法連接外網的情況下依然可以從云端拉取數據,按原有的方式導出任意一塊組件的圖片數據。
參考文獻:
[1]彭勇,劉曉潔,鄧洪敏.基于差異的遠程文件備份與恢復方法[J].四川大學學報,2009(02):348-352.
[2]李夷苒,李濤,胡曉勤,馬曉旭.基于事件的文件備份方法研究與實現[J].計算機工程與設計,2010(18):3957-3959.
[3]林國慶,王靜,陳汝偉.基于索引的文件備份方案[J].電子設計工程,2011(19):165-167.
作者簡介:董若旭(1992— ),男,河北邢臺人,本科,制造業MES系統工程師。