[摘 要] 本文首先提出了基于BoysFS集群技術的服務器群建設方案,然后對幾個相關的關鍵技術進行了研究,最后對本研究進行了總結。
[關鍵詞] linux集群 并行文件系統
目前,對分布式/并行文件系統的研究可以分為三類:商業用途的并行文件系統、公開的分布式并行文件系統、供研究的并行文件系統。由于技術需要,筆者提出了一種基于linux的并行文件系統結構—BoysFS。與其它系統相比,BoysFS具有如下優勢:(1)具有更高的可用性;(2)具有更好的可擴展性;(3)提供分布式的元數據管理;(4)提供了元數據的訪問速度;(5)配置簡單。
一、基于BoysFS的服務器群建設方案
1.BoysFS系統結構說明
在筆者研究的高可用并行文件系統中,每個服務器既是Metadata Server,又是IOD Server,它們一起構成一個邏輯環,形成對外服務的Server池,Server與Server之間能夠平衡負載,并且相互容錯。當有新的Server要加入或者離開時,整個系統無需進行重新配置,系統能夠自動適應這種動態變化。而且由于數據在其它節點均有備份,因此能夠實現數據的動態遷移與恢復。
2.系統模塊劃分
整個系統主要分為如下幾個功能模塊:(1)訪問接口模塊:提供了并行文件系統的訪問接口,以三種方式提供:用戶層的庫Lib.a、并行程序訪問接口RMI-IO、系統底層接口(VFS)。(2)Job管理模塊:每個請求將對應一個Job,由Job Manager去完成。(3)狀態機處理模塊:每種類型的請求對于一種狀態機,一個請求需要多個操作,由狀態機決定下一步該轉向那一步操作。(4)數據流管理模塊:負責管理I/O數據塊的傳輸。(5)BMI:基于消息的網絡傳輸模塊。(6)DHash:高可用的分布式存儲子系統。提供Key/Value對的存儲方式。(7)Chord:分布式查找協議。可以快速查找負責某個Key的Server。
二、關鍵技術研究
1.數據存取方式
本系統中,不管是文件數據還是元數據都是通過Handle值來存取的。每個handle對應一個Key值,每個Key對應一個相應的數據塊,運用DHash提供的put(Key,Block)存儲到Berkeley DB中。當客戶端要存儲k=6對應的數據塊時,首先去查本地的Global Key Range Table,查出該Key值k由節點Node3負責,于是將請求發到Node3。Node3送到請求后,調用Get或put接口來存取數據,由下層的DHash來提供數據的高可用性。
2.IDA算法
IDA算法是一種信息分散算法。它的功能是能將一個長度為L的文件F,分成n個分片Fi(l≤i≤n),每個分片的長度為L/m,在Fi中任取m個分片都能重組成原來的文件F。這種分片和分片重組在計算效率上是很高的。在空間上,可以看出n個分片Fi的總和是原來文件的n/m倍,n/m大于但可以趨近于1,所以數據冗余不會占用太多空間。
3.文件系統接口的實現
人們對任何數據的訪問都是通過Handle進行的,而且Handle被存放在塊中,記錄了各個對象之間的邏輯關系。人們只要知道文件系統超級塊Handle值,就可以順藤摸瓜地找到該文件系統中的任何對象。
4.動態可擴展性的實現
要實現系統動態可擴展性,系統必須能夠自動處理節點的任意加入和離開的事件,保證系統的穩定,而不用人為地重新進行配置。
(1)節點加入
當新節點加入時,會依次出現以下結果:(1)由自己的NodeIP哈希出在Key Space中的位子P = SHA-1(NodeIP);(2)對外組播自己加入的消息;(3)接管自己負責的Key Range【k2,k2’);(4)客戶端收到節點加入的消息后,更新自己的Global Key Range Table。
(2)節點離開
節點正常離開時,需要向其它節點發送組播消息,通知客戶端更新Global Key Range Table,釋放自己所管理的那部分Key range 【k2,k2’)。
(3)節點失效
節點的突然實現屬于無通知的節點離開行為,如何及時的檢測到沒個節點的失效,如何快速的達到新的穩定狀態將是本系統的關鍵。筆者初步采取的是用ping的方式對各個節點進行周期性檢測,其間隔時間有待研究。
(4)進行故障屏蔽
當有節點加入或離開時,系統會有一段時間處于不穩定狀態,客戶端如果訪問已失效節點就會無響應,筆者為每個操作設置超時時間,如果在該時間內仍無響應,客戶端就向該節點的前續節點重發請求。
三、總 結
本系統大大降低了硬件系統損壞對集群的影響;一次寫入,永不改變,大大降低了程序的復雜度;同時增大了block的長度,效率更高;且具有高冗余和高性能的特性,為數據中心的發展奠定了基礎。
參考文獻:
Yifeng Zhu, Hong Jiang, Xiao Qin, Dan Feng. Improved read performance in a Cost-Effective, Fault-Tolerant Parallel Virtual File System, in Proceeding of IEEE/ACM Workshop on Parallel I/O in Cluster Computing and Computational Grids,Tokyo,Japan,May 2003.