[摘 要]為了提升私有云環(huán)境下文件存儲系統(tǒng)的可用性,降低擁有成本,通過對比分析提出了基于開源軟件MooseFS(MFS)設(shè)計的分布式文件存儲系統(tǒng)的解決方案。在獨立二層網(wǎng)絡(luò)內(nèi),部署六臺普通配置的X86機架式服務(wù)器,把服務(wù)器本地小容量硬盤聚合成一個存儲容量為1.7TB的網(wǎng)絡(luò)硬盤。通過實例驗證,該方案能提供優(yōu)于傳統(tǒng)集中式存儲的讀寫性能。通過創(chuàng)新的部署實踐,進一步提升了系統(tǒng)的容錯能力和易用性。加之利舊企業(yè)存量服務(wù)器大幅降低了建設(shè)運維成本,證明了這一選型能夠滿足云環(huán)境下對文件存儲系統(tǒng)高可用、低成本的需求。
[關(guān)鍵詞]MooseFS;分布式存儲;云計算;文件存儲;虛擬化
[DOI]10.13939/j.cnki.zgsc.2017.12.036
當前,企業(yè)數(shù)據(jù)中心仍主要采用以FC-SAN為代表的集中式存儲設(shè)備。但隨著云技術(shù)的快速落地,特別是在企業(yè)私有云建設(shè)中,集中式存儲陣列的疲態(tài)明顯。
(1)性能提升代價大。處理性能的提升與容量的增長非線性關(guān)系。
(2)擴容成本高。專用存儲設(shè)備換代快,且綁定硬件廠商,只能進行存儲的scale-up,擴容費用高。
(3)維護成本高。專用存儲運維需要設(shè)備制造商專門的服務(wù),年維保費用往往很高,設(shè)備生命周期總體擁有成本高。
(4)單點故障。本文將探索一種類似Google分布式文件系統(tǒng)GFS[1]的分布式存儲系統(tǒng),通過橫向分析對比同類技術(shù)后擇優(yōu)選型,然后在特定場景部署實例,驗證其替代傳統(tǒng)集中式文件存儲的可行性,解決上述問題。
1 分布式文件存儲概述及對比
“分布式存儲系統(tǒng)是大量普通PC服務(wù)器通過Internet互聯(lián),對外作為一個整體提供存儲服務(wù)?!盵2]
2 MFS分布式文件存儲概述
2.1 MFS功能架構(gòu)
MFS整體架構(gòu)有四種角色[3]:Managing servers(master servers)、Data servers(chunk servers)、Metadata backup server(s)(metalogger server)、Client。
2.2 MFS讀寫原理
3 安裝部署MFS實例
3.1 集群規(guī)劃及拓撲
在獨立二層網(wǎng)絡(luò)內(nèi),部署六臺普通配置的X86機架式服務(wù)器,服務(wù)器本地硬盤在100~400GB。所有服務(wù)器通過一臺低端二層以太網(wǎng)交換機單鏈路互聯(lián),組合成一個總?cè)萘?.7TB的邏輯存儲。提供網(wǎng)絡(luò)文件系統(tǒng)服務(wù),如圖1所示。
3.2 MFS集群安裝
有兩種安裝方式可供選擇:官方軟件庫安裝、源碼編譯安裝。本文采用軟件庫安裝方式。集群軟硬件配置如表2所示。
安裝步驟:
(1)添加yum key:curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
(2)下載軟件庫配置文件:
curl "http://ppa.moosefs.com/MooseFS-3-el6.repo" > /etc/yum.repos.d/MooseFS.repo
(3)分別在不同節(jié)點安裝所需軟件包:
yum install moosefs-master moosefs-cgi moosefs-chunkserver moosefs-client moosefs-cgiserv
(4)啟動服務(wù):
service moosefs-*** start
3.3 集群配置使用
(1)修改Chunkserver節(jié)點的mfshdd.cfg文件。加入本地文件系統(tǒng)目錄作為集群的一個獨立的存儲空間,如:/data_volumn1、/data_volumn2……MFS會把所有Chunkserver的本地文件目錄整合起來,提供統(tǒng)一的存儲空間對外服務(wù),容量是所有目錄的總和。
(2)在Master添加對外服務(wù)的存儲路徑。即設(shè)置共享目錄。修改mfsexports.cf:
* /accesspath rw,alldirs,admin,maproot=0:0,/accesspath為MFS系統(tǒng)中實際存在的數(shù)據(jù)目錄。
(3)客戶端。MFS提供原生Linux客戶端。由于MFS需要工作在用戶級的文件系統(tǒng)上,所以需要安裝FUSE模塊。通過Linux的系統(tǒng)軟件庫安裝即可,yum-y install fuse fuse-libs。然后,加載fuse模塊,modprobe fuse。至此,可以掛載MFS存儲了,mfsmount /mnt/clientmountpoint/-H 10.10.2.201-S /accesspath。
MFS不提供Windows客戶端,不支持Windows環(huán)境,以成為其擴大影響力的一大短板。通過深入探索測試,通過Total Commander及mfs4tcdbg兩個第三方軟件組合的形式,成功實現(xiàn)在Windows里通過Total Commander管理界面直接訪問MFS存儲。使用方式類似FTP。圖3 MFS集群讀數(shù)據(jù)原理
4 實例驗證
4.1 目標驗證
(1)讀寫性能好。數(shù)據(jù)多副本使讀性能比單臺服務(wù)器提升顯著,且隨數(shù)據(jù)節(jié)點增加基本實現(xiàn)線性提升。如圖5所示。
在相同環(huán)境下測試,傳統(tǒng)集中式存儲讀速度一般在100MB/S左右。可見,MFS分布式存儲只需要低端千兆以太網(wǎng)絡(luò)就可以達到比集中式光纖網(wǎng)絡(luò)存儲更高的速度,且寫速度基本與之持平,方案的性價比明顯。
(2)擴容成本低。MFS各組件的大部分版本可組合使用。原理上可以用較低版本的集群組件匹配較老舊的服務(wù)器。因此,可以使用任何品牌、任何年代的標準X86機架服務(wù)器加上標準以太網(wǎng)二層交換機就可以方便地進行集群在線橫向擴展。
(3)維護成本大幅降低。當前主流集中存儲運維價格不低于500/T/年,組網(wǎng)至少需要兩臺FC-SAN交換機,還需專門的存儲運維人員。本文實例所用6臺服務(wù)器都均已使用超過6年,硬件成本忽略不計。低端二層交換機1臺,價值約1000元。軟件均為開源版本,無費用。系統(tǒng)配置確定后,運行基本無須人工干預(yù),后續(xù)運維費用的產(chǎn)生僅來源于在網(wǎng)硬件的損耗。
(4)多節(jié)點冗余容錯架構(gòu)。進行多種暴力破壞測試,通過Metalogger的元數(shù)據(jù)副本及集群配置信息副本恢復(fù)集群后,數(shù)據(jù)始終不丟失,架構(gòu)始終保持完整,預(yù)期RTO為15分鐘。同時,通過回收站、快照功能還可以保存數(shù)據(jù)最近的多個版本,避免人為誤操作導(dǎo)致的數(shù)據(jù)丟失。
4.2 創(chuàng)新實踐及后續(xù)工作
在MFS標準部署模式基礎(chǔ)上提出探索性的部署方式。
(1)一個MFS集群中部署多個Metalogger元數(shù)據(jù)日志服務(wù)器,通過Linux Bash腳本實現(xiàn)元數(shù)據(jù)的自動備份及自動向集群內(nèi)其他多個服務(wù)器的拷貝,確保了集群最重要信息的安全。
(2)Metalogger備份服務(wù)與數(shù)據(jù)服務(wù)Chunkserver、客戶端Client、時間同步服務(wù)NTP等混合部署于一臺服務(wù)器,提升了服務(wù)器資源利用率及集群總存儲容量。
(3)合理配置服務(wù)器本地硬盤。由于集群能管理到各服務(wù)器本地單個硬盤,建議添加到集群存儲池的硬盤無須做本地RAID,把每塊物理硬盤作成單獨的存儲卷直接加入集群。一來可避免RAID后硬盤可用容量的損失及RAID卡性能(如:更換硬盤后重做RAID效率等)、故障問題;二來能夠更直觀高效地進行所有硬盤的負載管理及維護。同時更好發(fā)揮所有硬盤同時獨立讀寫的高性能。但集群包含大量硬盤,手工逐個硬盤去維護維護工作量很大且效率低。需要編寫Linux Bash腳本實現(xiàn)各主機所有硬盤的自動格式化,自動掛載文件目錄,大大簡化了運維工作,避免手工誤操作,提升集群管理效率和可用性。因此,建議所有數(shù)據(jù)存儲服務(wù)器配置容量大、數(shù)量多的硬盤,至少3TB×10塊SATA硬盤。再輔以SSD加速設(shè)備,實現(xiàn)較高性價比。
同時我們也看到一些有待改進的問題。比如,集群自帶管理門戶使用方便,但無鑒權(quán),后續(xù)將通過Tomcat、IIS等中間件部署管理程序,增加鑒權(quán)頁面,用戶輸入正確的驗證信息才能跳轉(zhuǎn)到管理系統(tǒng)頁面,實現(xiàn)鑒權(quán)功能。
5 結(jié) 論
通過橫向?qū)Ρ燃皩嵗炞C,選擇一個具有比較優(yōu)勢的分布式文件存儲系統(tǒng);現(xiàn)有MFS、GFS等有中心節(jié)點[5]設(shè)計的分布式文件存儲的問題在于,盡管管理節(jié)點主備部署實現(xiàn)了元數(shù)據(jù)保護,但集群配置文件無保護,容錯機制不夠完善。本文通過實例驗證了“1個管理服務(wù)器+N個元數(shù)據(jù)日志服務(wù)器”的部署模式,使元數(shù)據(jù)更安全。同時借助腳本技術(shù)實現(xiàn)集群配置數(shù)據(jù)的自動備份和在多個節(jié)點服務(wù)器上的保存。增強了集群故障恢復(fù)能力和效率;實現(xiàn)Windows環(huán)境里對MFS存儲數(shù)據(jù)的直接訪問,解決了主流分布式文件存儲都不支持Windows客戶端的問題。
通過分布式文件存儲系統(tǒng)的部署,實現(xiàn)了筆者單位當前云環(huán)境下文件存儲系統(tǒng)可用性的提升及擁有成本的大幅降低,將逐步在文件存儲的應(yīng)用上推廣使用。
參考文獻:
[1]楊傳輝.大規(guī)模分布式存儲系統(tǒng)原理解析與架構(gòu)實戰(zhàn)[M].北京:機械工業(yè)出版社,2013.
[2]楊傳輝.大規(guī)模分布式存儲系統(tǒng)原理解析與架構(gòu)實戰(zhàn)[M].北京:機械工業(yè)出版社,2013.
[3]Core Technology Development & Support Team.MooseFS 2.0 Users Manual[EB/OL].https://moosefs.com/Content/Downloads.
[4]Core Technology Development & Support Team.MooseFS 3.0 Users Manual[EB/OL].https://moosefs.com/Content/Downloads.
[5]葉毓睿.軟件定義存儲原理、實踐與生態(tài)[M].北京:機械工業(yè)出版社,2016:211.
[作者簡介]陳正舉(1982—),男,漢族,北京人,碩士研究生,工程師。研究方向:基礎(chǔ)應(yīng)用系統(tǒng)及云計算ICT基礎(chǔ)設(shè)施架構(gòu)。