- 寫給架構(gòu)師的Linux實踐:設(shè)計并實現(xiàn)基于Linux的IT解決方案
- (哥斯)丹尼斯·薩拉曼卡 埃斯特班·弗洛雷斯
- 2637字
- 2020-06-15 18:40:56
2.5 為什么選擇GlusterFS
了解到SDS的核心概念、存儲集群,以及塊存儲、文件存儲與對象存儲之間的區(qū)別后,現(xiàn)在談?wù)勂髽I(yè)客戶為什么喜歡用GlusterFS來滿足存儲需求。
前面說過,GlusterFS是一種SDS,也就是覆蓋在傳統(tǒng)的本地存儲掛載點上的一種抽象層,它可以把多個節(jié)點中的存儲空間合成一個存儲實體或存儲集群。GlusterFS既可以運行在現(xiàn)成的硬件上,也可以運行在私有云、公共云或混合云等云端平臺。它主要與文件存儲(file storage)搭配使用的,可以通過gluster-block插件作為塊存儲的后端,或通過gluster-swift插件作為對象存儲來使用。
GlusterFS的主要特性有:
?可以部署在商用硬件。
?可以部署在私有云、公共云或混合云。
?沒有故障單點。
?易于擴展。
?支持異步的地域復(fù)制。
?性能較高。
?能夠自我修復(fù)。
?較為靈活。
2.5.1 GlusterFS的特性
現(xiàn)在講解上述特征,告訴大家GlusterFS為什么很受企業(yè)客戶歡迎。
1.幾乎可以運行在任何一種商用硬件上面
ARM(Advanced RISC Machine)架構(gòu)與x86架構(gòu)的硬件,以及Raspberry Pi等設(shè)備,都可以運行Gluster,因為它只是把這些硬件當(dāng)成放置存儲卷的基礎(chǔ)來使用,不要求有某項特殊的功能。
按照最基礎(chǔ)的配置方法,凡是格式化成XFS的磁盤,都可以視為一個節(jié)點。盡管這并不是最好的配置方法,但可以稍后給該節(jié)點配備更多的資源,或是添加更多的節(jié)點。
2.可以部署在私有云、公共云或混合云上面
GlusterFS既能夠以容器鏡像(container image)的形式使用,也可以安排到專用的VM中。云平臺的用戶喜歡它的主要原因在于,GlusterFS僅僅是以軟件實現(xiàn)而成的,可以部署在私有云、公共云或混合云中。由于它不受制于特定的廠商,所以可以讓存儲卷跨越多個云平臺,并進行鎖定。我們可以結(jié)合多家云平臺所提供的存儲卷,打造可用性較高的配置方案;即便其中某一個云平臺出現(xiàn)問題,該方案也可以把要求訪問存儲卷的流量引導(dǎo)至別的云平臺,從而縮短停機時間,甚至不停機。
3.沒有故障單點
通過對存儲卷進行配置,可以把數(shù)據(jù)分布在集群中的多個節(jié)點上,從而避免出現(xiàn)故障單點;因為不需要哪個節(jié)點充當(dāng)head或master控制整個集群。
4.易于擴展
我們可以縱向擴展GlusterFS給某個節(jié)點添加更多資源,也可以橫向擴展GlusterFS給集群添加更多節(jié)點。
這些擴展操作都可以在線完成,而且不會妨礙集群給客戶端提供數(shù)據(jù),因此,客戶端與集群之間的通信是不會中斷的。
5.支持異步的地域復(fù)制
由于GlusterFS不存在故障單點問題,可以實現(xiàn)地域復(fù)制(geo-replication),也就是將數(shù)據(jù)異步地復(fù)制到地理位置完全不同的數(shù)據(jù)中心。
圖2-10演示了多個站點之間的地域復(fù)制。
6.性能較高
由于數(shù)據(jù)分布在多個節(jié)點上,因此多個客戶端可以同時訪問該集群。這種同時從多個源頭發(fā)出數(shù)據(jù)訪問請求的情況叫并行(parallelism)。為了提升并行效率,GlusterFS會把客戶端發(fā)來的請求分派到不同的節(jié)點。還可以通過添加資源或節(jié)點(也就是通過垂直擴展與水平擴展)的辦法提升性能。

圖2-10
7.能夠自我修復(fù)
在遭遇突發(fā)的停機狀況時,保持正常運作的節(jié)點依然能夠?qū)α髁孔龀鎏幚怼4藭r,如果有新的數(shù)據(jù)添加到了集群中,那么等故障節(jié)點重新上線后,必須將這些數(shù)據(jù)同步過去。
GlusterFS會在客戶訪問新文件時,自動進行自我修復(fù),從而將故障后重新上線的節(jié)點所缺失的數(shù)據(jù),給復(fù)制過去。這對用戶及客戶端來說是透明的。
8.較為靈活
GlusterFS既可以部署在企業(yè)內(nèi)部的實體硬件上,也可以部署在已有的虛擬基礎(chǔ)設(shè)施中,還可以作為VM部署在云端或當(dāng)成容器使用。它不要求客戶用某種固定的方式部署,允許客戶根據(jù)需求去決定。
9.能夠?qū)崿F(xiàn)遠(yuǎn)程直接內(nèi)存訪問(RDMA)
RDMA(Remote Direct Memory Access)技術(shù)讓Gluster服務(wù)器與Gluster客戶端之間能夠進行延遲極低、性能極高的網(wǎng)絡(luò)通信。GlusterFS可以利用RDMA實現(xiàn)HPC(High-Performance Computing,高性能計算)應(yīng)用,或處理并發(fā)度較高的工作。
2.5.2 Gluster存儲卷的類型
了解GlusterFS的核心特性后,現(xiàn)在來看它支持哪幾類存儲卷。可以幫助我們在下一章設(shè)計實際的GlusterFS解決方案。
GlusterFS允許自行選擇與工作最為契合的卷類型。例如,如果對可用性的要求比較高,可以使用replicated類型的卷;這種卷會在兩個或多個節(jié)點之間復(fù)制數(shù)據(jù),讓節(jié)點上面的數(shù)據(jù)完全相同。
下面先把這幾種類型羅列出來,然后分別討論每一種類型的優(yōu)點與缺點:
?分布式卷
?復(fù)制卷
?分布式復(fù)制卷
?分散卷
?分布式分散卷
1.分布式卷
分布式卷是把數(shù)據(jù)分布到各節(jié)點中,可以通過較低的開銷平滑地擴充可用空間。其主要缺點在于沒有數(shù)據(jù)冗余,因為所有的文件都分布在同一節(jié)點或多個節(jié)點的某個brick中,并沒有在其他的brick上面留存復(fù)本。分布式卷主要用于對存儲量要求比較高的并發(fā)應(yīng)用程序。
分布式卷只是一批磁盤(Just A Bunch Of Disks,JBOD)或一個線性的邏輯卷管理器(Logical Volume Manager,LVM),它僅僅把空間簡單地聚合起來,而不會包含數(shù)據(jù)分段或奇偶校驗機制。
圖2-11描述了分布式卷的工作原理。

圖2-11
2.復(fù)制卷
復(fù)制卷是把數(shù)據(jù)拷貝到不同節(jié)點的不同brick中。對復(fù)制卷進行擴充時,必須增加相同數(shù)量的復(fù)本。例如,如果對含有兩份復(fù)本的復(fù)制卷做擴充,那么擴充后有4份復(fù)本。
復(fù)制卷有點像RAID1,后者會把數(shù)據(jù)鏡像到所有可用的節(jié)點上。復(fù)制卷的缺點是擴展性相對有限,優(yōu)點是可用性比較高,即便出現(xiàn)了突發(fā)的停機狀況,依然有復(fù)本能夠提供客戶所需的數(shù)據(jù)。
使用復(fù)制卷時,必須采用某種機制來防止裂腦(split-brain)問題。裂腦問題指的是不同的客戶端可能要求寫入同一份數(shù)據(jù),從而導(dǎo)致其中某一批節(jié)點上面的值,可能會與另一批節(jié)點上面的值不符。為此,需要引入server quorum這樣的機制,以防止產(chǎn)生數(shù)據(jù)沖突的情況。
圖2-12演示了復(fù)制卷的工作原理。

圖2-12
3.分布式復(fù)制卷
分布式復(fù)制卷與普通的復(fù)制卷類似,主要區(qū)別在于分布式復(fù)制卷本身是以分布的形式存在的。例如,有兩個不同的復(fù)制卷均帶有10TB空間,如果把這兩個卷合起來,那么可以構(gòu)成一套總?cè)萘繛?0TB的分布式復(fù)制卷。
分布式復(fù)制卷主要用在對可用性與冗余要求都比較高的場合,當(dāng)其中某些節(jié)點發(fā)生故障時,整個集群依然能夠正常運作。
圖2-13演示了復(fù)制卷的工作原理。

圖2-13
4.分散卷
分散卷具備分布式卷與復(fù)制卷的優(yōu)勢,它把數(shù)據(jù)散布在所有可用的brick上面,同時提供冗余機制。這些brick的大小相同,否則,當(dāng)最小的brick寫滿后,整個卷就無法繼續(xù)處理寫入操作。分散卷可以想象成RAID 5或RAID 6磁盤陣列,把數(shù)據(jù)分段存放到每塊磁盤中并創(chuàng)建奇偶校驗信息,以便在數(shù)據(jù)出錯時,能夠根據(jù)這些信息把正確的數(shù)據(jù)重新構(gòu)造起來。上述類比可以幫我們理解分散卷的好處,但分散卷的實際運作過程卻與那兩種磁盤陣列完全不同,因為分散卷是根據(jù)糾錯碼(erasure code)給數(shù)據(jù)分段的。分散卷能夠合理地顧及性能、空間與可用性等因素。
5.分布式分散卷
在分布式分散卷中,數(shù)據(jù)會分布在其中每一個小的分散卷里。這可以在分散卷的層面實現(xiàn)冗余,優(yōu)勢與分布式復(fù)制卷類似。
可以把分布式分散卷想象成兩組RAID 5磁盤陣列,它們以JBOD形式拼接。雖然每個小分散卷的尺寸未必相同,但為了避免某些復(fù)雜的問題,最好是能夠令其一致。
- 網(wǎng)絡(luò)操作系統(tǒng):Windows Server 2003管理與應(yīng)用
- Arch Linux Environment Setup How-to
- 奔跑吧 Linux內(nèi)核(入門篇)
- Windows Server 2019 Administration Fundamentals
- 移動應(yīng)用UI設(shè)計模式(第2版)
- 嵌入式實時操作系統(tǒng):RT-Thread設(shè)計與實現(xiàn)
- Dreamweaver CS5.5 Mobile and Web Development with HTML5,CSS3,and jQuery
- Windows 7案例教程
- Linux內(nèi)核觀測技術(shù)BPF
- 一學(xué)就會:Windows Vista應(yīng)用完全自學(xué)手冊
- VMware Horizon View Essentials
- 從實踐中學(xué)習(xí)Windows滲透測試
- Linux軟件管理平臺設(shè)計與實現(xiàn)
- Responsive Web Design by Example:Beginner's Guide(Second Edition)
- PrimeFaces Beginner's Guide