王 健,崔 永,趙樹林
(東北林業大學 信息與計算機工程學院,哈爾濱 150040)
隨著信息化在林業方面的推進,我國林業信息化建設取得了長足的進步。但面對全國范圍內的森林監測所產生的海量數據,以及越來越多的監測節點和整個監測系統的日趨復雜化我國林業信息監測面臨如下幾個典型問題:
(1)系統維護難度大。其中包括,負載均衡能力差、容錯能力低和故障自動恢復能力弱等。
(2)各級森林監測信息系統管理分散,導致計算資源利用不均衡,這就需要對松散的系統進行有效的整合,從而實現監測數據的共享和資源的優化配置。
(3)森林監測應用系統建設初期購置或更新的軟硬件基礎設施資源投入高,投資回報率低、信息資源利用率低,如果建設新的森林監測云平臺面臨著淘汰,并且購入新的設備對業務部門的資金消耗較大。
(4)海量的森林監測數據的高效存儲和管理模式優化的問題。自建國以來,我國在森林監測方面積累了豐富和寶貴的數據,并且這些數據正在每天以驚人的速度在增長。現有的森林監測數據存儲平臺無法滿足現代化林業數據存儲的需求。
因此,針對以上問題,有必要搭建一種新型的森林數據信息云存儲平臺,為森林監測中產生的海量數據提供高效、可靠的存儲服務。
當前,主流的分布式系統有Lustre[1]、MFS、NFS[2]、AFS、Gluster、hadoop等。這些文件系統均有其特長和不足。如Lustre文件系統性能成熟、規模強大,但是安裝復雜,且Lustre嚴重依賴內核,需要重新編譯內核[2]。同時,Lustre不支持數據均衡,尤其當處理大量小文件時,元數據問題突出。MooseFS雖然實施簡單,但存在單點故障和瓶頸;故障出現時,不能自動恢復,只能手動恢復。在擴展性方面,Moosefs雖然可以通過增加存儲服務器,來提高容量和文件操作性能,但是由于不能增加MDS,因此元數據操作不能提高,這是整個系統的瓶頸。Ceph集群中多個MDS雖不存在單點故障和瓶頸問題,但目前尚不穩定,還在實驗階段,不適合生產環境。
沒有缺點的文件系統是不存在的,但在眾多的文件系統中,終究會有一種整體性能優良又能滿足森林監測實際的需求。
經過長期實際操作和與其他分布式系統的對比,發現GlusterFS是一種能滿足森林監測數據存儲,綜合性能優越的分布式文件系統。
Gluster是近幾年非常流行的一種分布式系統,其擴展能力超強,可存儲海量數據。它在英特網上聚合多個存儲塊,或者是Infiniband RDMA在一個大的并行文件系統內相互連接。它主要由以太網、存儲服務器和無線網構成,屬于一種并行的文件存儲系統。同時提供一個全局命名空間,可以把物理上分割的文件聯系起來,使其在邏輯上成為統一的整體,這有利于文件的統一管理,另外文件系統中冗余機制的應用使其具有更好的安全性[4]。Gluster文件系統具有以下特征:
(1)可靠性高。
(2)彈性強,使用彈性哈希算法,不再使用元數據服務器;卷管理(可堆疊特征)方面更加靈活;可以彈性地增加、替換或轉移存儲塊。
(3)擴展性強,橫向擴展能力突出,可以擴展到數千節點,來存儲海量數據。
(4)自動化高。應用特殊排序/負載均衡,使系統整體更加均衡;通過循環機制,自動調節為最小使用,實現非均勻的文件訪問;可自動地實現文件響應、快照和恢復被刪除文件。
(5)操作便捷。基于fuse的客戶端,使其擁有完全一致的POSIX,以及統一標準的VFS;用戶空間的應用使系統更易于安裝、修改或故障排除。
Gluster 文件系統結構圖如圖1所示:

圖1 Gluster文件系統構造圖
Gluster文件系統中的優異性能主要表現在高可靠性(Reliability)、存儲更具彈性(Elasticity)和橫向擴展性(Linear Scale-Out)三個方面。
可靠性的高低是衡量一個系統是否成熟的重要指標。雖然Glusterfs的構建使用的是普通的服務器和廉價的存儲設備,但其可靠性依然很高。GlusterFS的設計師們運用了多種技術來確保整個文件系統的高可用性。第一,它具備自我復制和自我修復的能力,一旦出現磁盤、硬件或網絡的故障,以及操作不當造成的數據損毀,其都可自我修復,而無需人為干預;第二,最低層的EXT3/ZFS磁盤文件系統的日志功能也保證了其數據的可靠性;第三,無元數據服務器的獨特設計有效避免了元數據的一致性維護;同時也提高了系統的性能和可靠性。
Gluster文件系統中的數據存儲在邏輯卷中。而邏輯卷是通過虛擬化物理存儲池并進行邏輯劃分而得到的。在集群系統中,可根據需求實時地擴展或收縮數據存儲以及添刪存儲池中的對象,而無需
中斷集群系統運行。管理員動態地增刪數據卷、擴展或縮減數據卷、增刪存儲服務器等,不會影響集群系統的正常運行和業務服務[5]。
彈性哈希算法的應用,有效提高了系統的彈性,當需要進行數據存儲時,所有管理工作均無需中斷服務。虛擬化存儲技術和邏輯卷管理的應用,使其可以構建真正的云存儲服務系統。
另外,GlusterFS 3.1.X及以后的版本中,為了減輕客戶端的負擔,優化卷的管理,邏輯卷的配置信息自動從glusterd彈性卷管理服務獲取和更新。
在分布式存儲系統中,隨著系統規模的擴大,系統性能的提升呈Log對數曲線式的增長,而非直線式增長。其原因是規模擴展產生的負載影響了部分性能的提升。現在多數的分布式文件系統擴展能力都很強,例如luster,其規模可擴展至1 000個以上的存儲節點和2 500個以上客戶端。擁有如此強的擴展能力,但其依然不能實現真正的線性擴展。
分布式存儲系統的擴展方式大致有橫向和縱向兩種。所謂的橫向擴展,主要是通過增加存儲節點的數量來提升整個存儲系統的容量和性能,這種擴展能很大程度上解決系統容量小、性能低等問題。目前,橫向擴展的方法在多數的分布式文件系統中應用。而縱向擴展卻由于存在理論上和物理上的限制,在改善系統性能和提高單個節點存儲容量方面表現不足。
GlusterFS的擴展方式屬于線性的橫向擴展。它可通過增加存儲節點來提升系統性能和存儲容量。通常,Glusterfs的橫向和縱向擴展結合起來,可實現更優的擴展,這樣的系統相比單向的擴展有更大的存儲容量和更強的存儲節點性能。橫向和縱向擴展的結合使更多磁盤、內存、I/O資源聚集成容量更大、性能更優的虛擬存儲池[8-9]。GlusterFS主要是通過消除元數據服務技術、高效的數據分布技術和并行化技術實現非嚴格的線性橫向擴展。
GlusterFS測試的主要包括:可靠性、單客戶端R/W、多客戶端測試、壓力測試和元數據測試。
測試環境具體配置見表1、表2和表3:

表1 3個存儲服務器端配置表

表2 8個客戶端配置表

表3 網絡連接數據表
軟件版本:GlusterFS 3.3.1 fuse-2.9.0 測試工具:Iozone3_327 操作系統 CentOS 6.0
11月16日,由科技部基礎司、成果與區域創新司、國家科技基礎條件平臺中心指導,貴州省科技廳、貴安新區管委會主辦的第三屆長江經濟帶科技資源共享論壇在貴安新區東盟國際會議中心舉行,長江經濟帶沿線11省(市)及部分特邀省(市)科技部門、科研院所、高校和企業相關人員300余人參會。
系統組成圖如圖2所示。

圖2 系統組成示意圖
實驗環境主要由3臺存儲服務器,6臺客戶端和一個交換機組成。在安裝GlusterFS之前,必須先關閉selinux和iptables,以及設置所有節點的hosts文件。
由于GlusterFS的安裝非常簡單,在此僅大致敘述一下步驟。首先,下載源碼,并在服務器和客戶機上做相應配置。其次,應用tar命令解壓壓縮包,運用Linux命令,分別在server和client機上安裝Gluster文件系統。再次,修改/etc/hosts文件,添加主機名及IP的對應關系。即完成GlusterFS的安裝。
(1)首先確認server1、server2及serve3都啟動glusterd,然后從server1上添加server2和server3到Tursted Storage Pool,命令如下:
# gluster peer probe server2
# gluster peer probe server3
# gluster peer status
(2)創建新卷。在server1上建立目錄:
# mkdir /data01
# mkdir /data02
# mkdir /data08
同理,在server2和server3上依次建立目錄Server2:/data05、Serser2:/data06、Server3:/data06。
(3)在server1上創建新的卷組。
# gluster volume create test-volume
Server1:/data01
Server1:/data02
Server1:/data08
Server2:/data05
Serser2:/data06
Server3:/data06
(4)創建分布式條帶鏡像卷。
# gluster volume create test-volume stripe 2 replica 2 transport tcp
Server1:/data01/udata
Server1:/data02/gdata01
Server1:/data08/udata
Server2:/data05/gdata01
Serser2:/data06/gdata01
Server2:/data05/udata
Server3:/data06/gdata01
(5)啟動卷。
# gluster volume start test-volume
(6)客戶端掛載(各client端)。加載fuse模塊:
# modprobe fuse
# dmesg | grep-I fuse
(7)創建掛載點目錄:
# mkdir /mnt/glusterfs
(8)掛載glusterfs 存儲:
# mount-t glusterfs server1:/test-volume /mnt/glusterfs/.
(9)查看:#df-h
可靠性測試中涉及到卷的存儲容量的變化,因此在這里簡要介紹一下卷的配置。創建Gluster分布式條帶鏡像卷的具體語句如下:
# gluster volume create test-volume stripe 2 replica 2 transport tcp
Server1:/data01/udata
Server1:/data02/gdata01
Server1:/data08/udata
Server2:/data05/gdata01
Serser2:/data06/gdata01
Server2:/data05/udata
Server3:/data06/gdata01
測試環境中卷的具體配置信息見表4。

表4 3種卷的配置信息表
分兩種情況:
(1)在一段時間內,存儲服務器或網絡出現故障,稍后恢復正常;
(2)磁盤出現致命性損壞,且磁盤中所有數據永久性丟失。
在上面的兩種背景下,不同類型的卷(分布式,條帶式,鏡像卷)運行操作(讀,寫)表現出不同的結果。
當存儲服務器或網絡出故障時,運行操作意味著另一個正在讀或者寫文件。
測試的具體結果見表5:

表5 可靠性測試實驗結果表
此項實驗說明,系統在出現單點故障(短暫或長時間),整個系統都能正常運行,由此驗證了Gluster集群系統的高可靠性。
測試方法:先用1個線程在一個客戶端寫、讀一個10G大小的文件;然后再用2個線程讀同樣大小的文件。測試結果如圖3所示,具體語句如下:
語句: #./iozone -n 10g -g 16g -i 0 -i 1 -f /mnt/iozone -Rb ./iozone.xls

圖3 單客戶端測試圖
由實驗數據可看出,雙線程較單線程,讀的速率有很大提升,寫性能有所下降。由此證明Gluster文件系統提高了讀性能。
多個客戶端同時讀或寫多個不同的文件。
方法:12臺客戶機上每臺同時運行20個進程,由MATLAB獲得的仿真圖如圖4所示。
由圖4可以看出圖中曲線大致接近Log對數曲線,造成這種情況的原因是系統并行運行增加了整體負載,一定程度上消弱了性能的提升。此實驗證實了橫向擴展性,提升了系統性能。

圖4 多客戶端性能測試圖
測試方法:8個客戶機8個線程從連接著12個SATA磁盤的2個服務器上連續讀/寫10 h,測試結果如圖5所示。
用iozone 進行壓力測試
# cd /test/
# iozone -t 250 -i 0 -r 512k -s 500M -+n -w

圖5 壓力測試實驗圖
通過實驗圖可以看出,系統整體的讀速率平均為520M/s,寫速率平均為580M/s,完全滿足海量存儲的需求,說明系統的耐壓性很好。
# mpirun -n mdtest -d /data03/z -n 10000 -i 10 4tasks,40000 files/directories(10 iterations)
元數據測試結果如圖6所示:

圖6 多種文件系統元數據測試性能對比圖
通過各個文件系統元數據測試對比圖可以看出,和其它文件系統相比,Gluster文件系統在消除元數據方面表現尤為突出。證實了在無元數據設計上的優勢。
通過以上實驗,可以證實Gluster在可靠性、擴展性、彈性存儲及消除元數據方面表現突出,體現了Gluster文件系統在海量存儲方面的優勢,基本滿足森林監測中海量文件存儲的要求,為構建森林監測云平臺提供了一種新解決方法。
在實驗過程中,Gluster除表現出優異性能外,也暴露了一些不足。首先,元數據服務器的缺少增加了客戶端的負載,導致相當的CPU和內存被占用;其次,測試過程中,鎖問題多次出現;最后,在遍歷文件目錄時,需要搜索所有的存儲節點,實現較復雜和低效,不宜用較深的路徑。
總之,Gluster是一種先進的文件系統,有優于其它文件系統的性能,也有需優化改進的地方;有深入學習、研究的價值。
【參 考 文 獻】
[1]Wang F,Oral S,Shipman G,et al.Understanding lustre filesystem internals,ORNL/TM-2009 /117[R].National Center for Computational Sciences,2009.
[2]Noronha R,Panda D K.IMCa:A high performance caching front-end for glusterFS on infiniband,OSU-CISRC-3 /08-TR09[R].Columbus:The Ohio State University,2008.
[3]TTraeger A,Zadok E,Joukov N,et al.A nine year study of file system and storage benchmarking[J].ACM Transactions.2008,4(2):56.
[4]Dahlin M,Wang R Y,Anderson T E,et al.Cooperative caching:using remote client memory to improve file system performacne[A].Proceedings of the First Symposium on Operation Systems Design and Implementation[C],1994:267-280.
[5]劉愛貴.GlusterFS集群文件系統研究-劉愛貴的專欄-博客頻道-CSDN.NET[EB/OL].2011-03-28.http://blog.csdn.net/liuaigui/article/details/6284551.
[6]Jiang S,Ding X,Chen F,et al.Dulo:an effective buffer management scheme to exploit both temporal and spatial locality[A].Proceedings of the FAST ’05 Conference on File and Storage Technologies[C],2005:101-114.
[7]王紅艷,蔣金虎.基于 Glusterfs 的分布式快照功能設計與實現[J].高性能計算技術,2010(2) : 55-58.
[8]楊 勇.基于 GlusterFS 的分布式冗余存儲[J].西安文理學報(自然科學版),2010,13(4):67-70.
[9]楊雪清,徐澤鴻,李 超,等.境外林林資源合作信息庫管理信息系統研建[J].森林工程,2013,29(16):12-14.
[10]Lenk A,Klems M,Nimis J,et al.IEEE Cloud[A].Proceedings of the International Conference on Software Engineering Challenges of Cloud Computing[C],2009:23-31.