陳斐 李銳 王成?!±鋾?/p>

摘要:隨著鐵路信息化技術快速發展,對分布式存儲的可靠性和魯棒性要求越來越高。文章設計一種分布式文件存儲備份系統,能夠實現應用層塊級(文件級)重刪、快照、克隆,細粒度下連續數據保護功能。該系統采用分布式高可用高可靠架構,并能實現快速在線動態擴容。與主流分布式文件系統相比,能快速實現適合鐵路信息化場景下大規模分布式存儲并取得更好的性價比。
關鍵詞:分布式文件系統;重刪;快照;克隆;連續數據保護
1.概述
隨著鐵路信息化技術的飛速發展,鐵路IT系統產生的數據越來越多,對存儲的容量和可靠性要求越來越高。鐵路信息化系統中,存儲的文件多為小文件(小于64 M),寫入后無需修改,并且數量繁多,需要低延時訪問。目前優秀的開源分布式系統,比如(Hadoop Distributed File System,HDFS)等,雖然能夠很好地滿足分布式可靠存儲的需要,但并不適合低延遲數據訪問,也無法高效存儲海量小文件,不支持多用戶寫入及修改文件,并且不支持快照和重復數據刪除技術。而且,雖然Hadoop屬于開源技術,但軟件的安裝和部署并不廉價。由于其管理工具和支持服務方面的不足,使用過程中容易產生額外費用。為了更好地存儲數據并分析數據,針對鐵路信息系統的需求和特點,設計一種分布式文件系統,以滿足鐵路各系統的需求。
2.系統架構與運行原理
系統采取cs架構,基于應用層文件級的備份恢復系統。分為客戶端,配置服務器,元數據服務器集群,存儲服務器集群4部分。集群中,所有服務器本地文件系統采用ZFS,ZFS是一款128 bit文件系統,可有效利用大容量廉價的SATA磁盤,具有端到端安全性,存儲池自動可伸縮特性,同時還擁有自優化,自動校驗數據完整性,存儲池/卷系統易管理等很多優點,同時避免RAID5著名的“WRITE-HOLE”缺陷,并較ext3系統運行速率提高約30%-40%。
2.1Meta Svr和配置服務器核心數據結構
Meta Svr采用數據庫方式持久存儲數據,以表結構的方式存儲元數據。系統初始化運行時,元數據全部load到內存中。系統采用一致性Hash算法,將數據和負載均衡到多臺機器中。對每一臺機器,又采用主備雙機備份方式,提高可靠性,形成一致性HASH環+主備的混合架構。任意一臺機器宕機,slave機器能夠馬上切換成Master狀態提供服務。
MetaSvr中還運行ZOOKEEPER服務,處理全局的數據存儲服務器集群的塊ID生成,塊分配,回收,以及和數據服務器的心跳交互和數據校驗。ZOOKEEPER是APACHE軟件中類似GOOGLE CHUBBY的分布式協調服務,采用FastPaxos協議,實現了去中心化的高可用分布式鎖服務。
Metasvr中存儲信息主要分為文件HASH信息表、塊HASH信息表、文件塊映射信息表、塊存儲信息表,數據服務器空間使用情況表等。
2.2快照/克隆的實現
整個系統的快照/克隆分為存儲集群的快照/克隆和MetaSvr和配置服務器的快照/克隆。
存儲集群底層采用ZFS文件系統,可以方便地實現無限制的快照數量,隨時進行數據備份。同時,也可以基于快照方便地實現存儲集群中的底層文件系統克隆。
MetaSvr數據服務器和配置服務器生成快照時,只需做一次checkpoint操作,對cache中的數據刷入數據庫保存;然后底層zfs執行一次快照/克隆操作即可完成。
系統執行快照動作時,首先執行MetaSvr上和配置服務器上的快照動作,再執行存儲服務器上的快照動作。元數據服務器執行快照時短暫緩存寫動作,讀不影響。影響時間由底層ZFS執行速度決定。由于zfs快照開銷特別小,屬于0(1)常量時間級別,所以影響很小。如果對整個系統實行間隔較小的連續快照,則可以實現一定粒度下的CDP連續數據保護。
3.并行擴展與關鍵算法
3.1Meta Svr的分布式并行擴展
整個Meta Svr是系統的關鍵部分。如果宕機或不可用,則整個系統不可用。而且,隨著數據量的增大,當內存容量不能滿足HASH表計算要求,或后端存儲不能滿足元數據存儲要求,則Meta Svr集群需要能夠快速并行擴展。
在Meta Svr集群中,所有元數據服務器共享命名空間,采用一致性HASH算法自動分配和遷移數據。其相比普通hash的主要優勢在于在添加或移除節點時,保證盡量少的cache失效(數據遷移及均衡)。在一致性哈希算法中,每個節點都有隨機分配的ID。在將內容映射到節點時,使用內容的關鍵字和節點的ID進行一致性哈希運算并獲得鍵值。缺點是客戶端查詢元數據策略要進行更改??梢圆扇“姹旧壏绞竭M行,每次備份恢復前Meta Svr查詢配置版本是否更新,若更新則自動拉取和更新配置策略數據。
3.2文件名字和ID生成算法
文件名字和ID在Meta Svr生成。由于文件名字在服務器端生成,因而可用采用比較特殊的生成算法,可以將文件名字直接解析為文件ID??蛻舳俗x取解析ID后就可用直接去MetaSvr服務器查詢數據,減少了和配置服務器的交互,從而也提高了文件的訪問速度。由于鐵路信息系統中很多小文件并不需要自己命名文件名,因此,這種將數據塊位置隱含在ID的方式,可以極大地提高了小文件的訪問效率。
只有對于那些需要自己命名的客戶端文件,才需要在讀取時讀配置服務器獲取文件ID。
3.3存儲服務器分布式并行擴辰
存儲服務器可采用SSD設備作最終的存儲服務器本地文件系統的二級緩存,提高系統的讀寫速率。
當存儲服務器集群容量需要擴展時,只需要簡單地增加機器,并將狀態上報給所有MetaSvr即可。MetaSvr集群會立即將新增加的空間分配給寫請求。當存儲服務器宕機時,會失去和MetaSvr的心跳,MetaSvr服務器會將此機器所有的數據副本均衡分布到其他機器中去。
3.4小文件優化算法
對于小文件的寫,有兩種優化算法。一種是將多個小文件打包成大文件,減少MetaSvr元數據的數量;另一種就是采用特殊的文件名生成算法,文件名中就蘊含著文件ID,減少和配置服務器的交互。
4.系統原型
構建了一個30左右臺普通服務器(2.6 GHz賽揚雙核,2G內存),存儲容量在百TB級別的分布式存儲集群。使用自研的測試工具,在塊大小為4 K,16 K,10個客戶端同時讀寫情況下(75%讀,25%寫),其性能參數如表1所示。
目前應用中鐵路信息化系統存儲中,獲得了用戶的好評。
5.結語
本文實現了一種帶快照,重刪技術的分布式文件系統,能夠有效的避免單點故障,并實現快速在線動態擴容。針對海量的小文件,優化了寫入性能。服務器底層文件系統采用先進的ZFS系統,使單機存儲容量極大提高,并保證了數據的端到端一致性,使單機數據可靠性和讀寫速度都得到了極大提高。同時,單機存儲容量可在線動態擴展,集群容量也可以在線動態擴展,極大地簡化了運維的復雜度。