“分布式存儲系統(tǒng)是大量普通PC服務器通過Internet互聯(lián),對外作為一個整體提供存儲服務?!睂嵸|(zhì)是基于軟件實現(xiàn)的存儲服務,屬軟件定義存儲范疇。根據(jù)VMware定義“軟件定義的存儲是將工業(yè)標準服務器的存儲提供出來并通過軟件控制層面實現(xiàn)存儲的自動化和池化”。
不同的分布式存儲系統(tǒng)適合處理不同類型的數(shù)據(jù),可分為四類:分布式文件系統(tǒng)、分布式鍵值(Key-Value)系統(tǒng)、分布式表格系統(tǒng)和分布式數(shù)據(jù)庫。當前主流的分布式文件存儲產(chǎn)品以Hadoop、GlusterFS、Moosefs為代表。橫向?qū)Ρ确治銮闆r見表1所示。
綜合考量,本文選用MFS作為實例的技術實現(xiàn),并通過實踐中的優(yōu)化彌補其弱項。
在獨立二層網(wǎng)絡內(nèi),部署六臺普通配置的X86機架式服務器,服務器本地硬盤在100到400GB之間。所有服務器通過一臺低端二層以太網(wǎng)交換機單鏈路互聯(lián),組合成一個總容量1.7TB的邏輯存儲。提供網(wǎng)絡文件系統(tǒng)服務。示意圖如圖1所示。
圖1 實例網(wǎng)絡拓撲圖
集群所有節(jié)點服務器位于同一網(wǎng)段,便于管理及部署。Metalogger日志服務器同時作為時間同步服務器及數(shù)據(jù)存儲服務器。運行情況如圖2所示(不包含元數(shù)據(jù)節(jié)點)。
圖2 實例運行圖
有兩種安裝方式可供選擇:官方軟件庫安裝、源碼編譯安裝。本文采用軟件庫安裝方式。集群軟硬件配置如表2所示。具體安裝步驟為:
表1 分布式文件存儲對比
集群安裝成功后僅需修改少數(shù)必要配置文件即可運行,其它配置基本不用修改。
(1) 修 改 Chunkserver節(jié)點的mfshdd.cfg文件
在文件末尾加入本地文件系統(tǒng)目錄作為集群的一個獨立的存儲空間,如:/data_volumn1、/data_volumn2、...。MFS會 把 所有Chunkserver的本地文件目錄整合起來,提供統(tǒng)一的存儲空間對外服務,容量是所有目錄的總和。
(2) 在Master添加對外服務的存儲路徑
即設置共享目錄。修改mfsexports.cfg,在文件頭部添加
* /a c c e s s p a t h rw,alldirs,admin,maproot=0:0,/accesspath 為 MFS系統(tǒng)中實際存在的數(shù)據(jù)目錄,這一目錄需要從客戶端連接到集群根目錄后進行創(chuàng)建和維護,使集群形成自根“/”開始的樹形目錄結構。
(3) 客戶端
MFS提供原生Linux客戶端。由于MFS需要工作在用戶級的文件系統(tǒng)上,所以需要安裝FUSE模塊。通過Linux的系統(tǒng)軟件庫安裝即可,yum-y install fuse fuselibs。再加載fuse模塊,modprobe fuse。至此,可以掛載MFS存儲了,mfsmount/mnt/clientmountpoint/-H 10.10.2.201 -S /accesspath。
圖3 Windows環(huán)境訪問MFS數(shù)據(jù)
表2 集群實例軟硬件配置
MFS不提供Windows客戶端,不支持Windows環(huán)境,以成為其擴大影響力的一大短板。通過深入探索測試,通過Total Commander及mfs4tcdbg兩個第三方軟件組合的形式,成功實現(xiàn)在Windows里通 過T o t a l Commander管理界面直接訪問MFS存儲。使用方式對于用過FTP軟件的人不會陌生,如圖3所示。
(1) 讀寫性能好。
數(shù)據(jù)多副本使讀性能比單臺服務器提升顯著,且隨數(shù)據(jù)節(jié)點增加基本實現(xiàn)線性提升。如圖4所示。
在相同環(huán)境下測試,傳統(tǒng)集中式存儲讀速度一般在100MB/S左右??梢姡琈FS分布式存儲只需要低端千兆以太網(wǎng)絡就可以達到比集中式光纖網(wǎng)絡存儲更高的速度,且寫速度基本與之持平,方案的性價比明顯。
且本例數(shù)據(jù)存儲服務器配置低、數(shù)量少。利用集群彈性伸縮特性,通過在線增加數(shù)據(jù)存儲服務器數(shù)量、加裝閃存加速介質(zhì)等優(yōu)化措施后,集群的讀性能還會大大增加,給業(yè)務大規(guī)模并發(fā)I/O提供更好支持。
(2) 擴容成本低。
圖4 MFS實例讀速度
MFS各組件的大部分版本可組合使用。原理上可以用較低版本的集群組件匹配較老舊的服務器。因此,可以使用任何品牌、任何年代的標準X86機架服務器加上標準以太網(wǎng)二層交換機就可以方便地進行集群在線橫向擴展。
比集中存儲擴容簡單、高效,對應用幾乎透明??砂葱鑴討B(tài)地利舊下線服務器及集中式存儲(把其轉為X86服務器本地硬盤)組合成為性能更高,容量更大的存儲系統(tǒng),提供全新的存儲服務能力。
(3) 維護成本大幅減低。
當前主流集中存儲運維價格不低于500/T/年,組網(wǎng)至少需要兩臺FC-SAN交換機,還需專門的存儲運維人員。本文實例所用6臺服務器都均已使用超過6年,硬件成本忽略不計。低端二層交換機1臺,價值約1000元。軟件均為開源版本,無費用。系統(tǒng)配置確定后,運行基本無需人工干預,后續(xù)運維費用的產(chǎn)生僅來源于在網(wǎng)硬件的損耗。
(4)多節(jié)點冗余容錯架構。
進行多種暴力破壞測試,通過Metalogger的元數(shù)據(jù)副本及集群配置信息副本恢復集群后,數(shù)據(jù)始終不丟失,架構始終保持完整,預期RTO為15分鐘。同時,通過回收站、快照功能還可以保存數(shù)據(jù)最近的多個版本,避免人為誤操作導致的數(shù)據(jù)丟失。都充分驗證了系統(tǒng)整體可靠性、安全性及易用性。
經(jīng)過測試驗證,如圖1所示,在MFS標準部署模式基礎上提出如下探索性的部署方式:
(1) 一個MFS集群中部署多個Metalogger元數(shù)據(jù)日志服務器,通過Linux bash腳本實現(xiàn)元數(shù)據(jù)的自動備份及自動向集群內(nèi)其它多個服務器的拷貝。確保了集群最重要信息的安全。當元數(shù)據(jù)服務器無法運行時,只需重新部署新的元數(shù)據(jù)服務器,解壓任意一份元數(shù)據(jù)備份到指定目錄,即可恢復集群運行,整個過程在15分鐘之內(nèi)。
(2)Metalogger備份服務與數(shù)據(jù)服務Chunkserver、客戶端Client、時間同步服務NTP等混合部署于一臺服務器,提升了服務器資源利用率及集群總存儲容量。通過驗證,混合部署模式不會影響各服務之間的通信及運行,也不會影響集群正常運行。
圖5 硬盤負載圖
(3)合理配置服務器本地硬盤。由于集群能管理到各服務器本地單個硬盤,建議添加到集群存儲池的硬盤無需做本地RAID,把每塊物理硬盤作成單獨的存儲卷直接加入到集群。
一來可避免RAID后硬盤可用容量的損失及RAID卡性能(如:更換硬盤后重做raid效率等)、故障問題;二來能夠更直觀高效地進行所有硬盤的負載管理及維護。同時更好發(fā)揮所有硬盤同時獨立讀寫的高性能,如圖5所示。
但集群包含大量硬盤,手工逐個硬盤去維護維護工作量很大且效率低。需要編寫Linux bash腳本實現(xiàn)各主機所有硬盤的自動格式化,自動掛載文件目錄。大大簡化了運維工作,避免手工誤操作,提升集群管理效率和可用性。因此,建議所有數(shù)據(jù)存儲服務器配置容量大、數(shù)量多的硬盤,至少3TB×10塊SATA硬盤。再輔以SSD加速設備,實現(xiàn)較高性價比。
同時我們也看到一些有待改進的問題:
比如,集群自帶管理門戶使用方便,但無鑒權,后續(xù)將通過Tomcat、IIS等中間件部署管理程序,增加鑒權頁面,用戶輸入正確的驗證信息才能跳轉到管理系統(tǒng)頁面,實現(xiàn)鑒權功能;集群自身的QoS功能較弱,需探索軟件層面的解決方案,在與集群有效結合后來保證服務水平。
通過橫向?qū)Ρ燃皩嵗炞C,選擇一個具有比較優(yōu)勢的分布式文件存儲系統(tǒng);現(xiàn)有MFS、GFS等有中心節(jié)點設計的分布式文件存儲的問題在于,盡管管理節(jié)點主備部署實現(xiàn)了元數(shù)據(jù)保護,但集群配置文件無保護,容錯機制不夠完善,導致故障恢復窗口時間長,成功率無法保證。
本文通過實例驗證了“1個管理服務器+N個元數(shù)據(jù)日志服務器”的部署模式,使元數(shù)據(jù)更安全。同時借助腳本技術實現(xiàn)集群配置數(shù)據(jù)的自動備份和在多個節(jié)點服務器上的保存。
增強了集群故障恢復能力和效率,克服了此類有中心分布式存儲的單點問題;實現(xiàn)Windows環(huán)境里對MFS存儲數(shù)據(jù)的直接訪問,解決了主流分布式文件存儲都不支持Windows客戶端的問題。
通過分布式文件存儲系統(tǒng)的部署,實現(xiàn)了筆者單位當前云環(huán)境下文件存儲系統(tǒng)可用性的提升及擁有成本的大幅降低,將逐步在重文件存儲的應用上推廣使用。