一、GlusterFS概述
GlusterFS是一個開源的分布式檔案系統,同時也是Scale-Out存盤解決方案Gluster的核心,在存盤資料方面有強大的橫向擴展能力,通過擴展不同的節點可以支持PB級別的存盤容量,GlusterFS借助TCP/IP或InfiniBand RDMA網路將分散的存盤資源匯聚在一起,同一提供存盤服務,并使用單一全域命令空間來管理資料,GlusterFS基于可堆疊的用戶空間以及無元的設計,可為各種不同的資料負載提供優異的性能,
GlusterFS主要由存盤服務器、客戶端及NFS/Samba存盤網關(可選,根據需要選擇使用)組成,GlusterFS架構中最大的設計特點就是沒有元資料服務器組件,這有助于提升整個系統的性能、可靠性和穩定性,傳統的分布式檔案系統大多通過元服務器來存盤元資料,元資料包含存盤節點上的目錄資訊、目錄結構等,這樣的設計在瀏覽目錄時效率非常高,但是也存在一些缺陷,如單點故障,一旦元資料服務器出現故障,即使節點具備再高的冗余性,整個存盤系統也將崩潰,而GlusterFS分布式檔案系統是基于無元服務器的設計,資料橫向擴展能力強,具備較高的可靠性及存盤效率, GlusterFS支持TCP/IP和InfiniBand RDMA高速網路互聯,客戶端可通過原聲GlusterFS協議訪問資料,其他沒有運行GlusterFS客戶端的終端可通過NFS/CIFS標準協議通過存盤網關訪問資料,如下圖:
1、GlusterFS的特點
擴展性和高性能;
高可用性;
全域統一命名空間;
基于標準協議;
- 彈性卷管理;
2、GlusterFS術語
Brick(存盤塊):指可信主機池中由主機提供的用于物理存盤的專用磁區,是GlusterFS中的基本存盤單元,同時也是可信存盤池中服務器上對外提供的存盤目錄,存盤目錄的格式由服務器和目錄的絕對路徑構成,表示方法為SERVER:EXPORT ,比如:192.168.1.4/date/mydir/;
Volume(邏輯卷):一個邏輯卷是一組Brick的集合,卷是資料存盤的邏輯設備,類似于LVM中的邏輯卷,大部分Gluster管理操作是在卷上進行的;
FUSE:是一個內核模塊,允許用戶創建自己的檔案系統,無須修改內核代碼;
VFS:內核空間對用戶空間提供吧的訪問磁盤的介面;
- Glusterd(后臺管理行程):在存盤群集中的每個節點上都要運行;
3、模塊化堆疊式架構
如下圖所示,GlusterFS采用模塊化、堆疊式的架構,可以根據需求配置定制化的應用環境,如大檔案存盤、海量小檔案存盤、云存盤、多傳輸協議應用等,通過對模塊進行各種組合,即可實作復雜的功能,例如,Replicate模塊可實作RAID1,Stripe模塊可實作RAID0,通過兩者的組合可實作RAID10和RAID01,同時獲得更高的性能及可靠性,
GlusterFS是模塊化堆疊式的架構設計,模塊成為Translator,是GlusterFS提供的一種強大的機制,借助這種良好定義的介面可以高效簡便地擴展檔案系統的功能,
1)服務器與客戶端的設計高度模塊化的同事模塊介面是兼容的,同一個transtator可同事在客戶端和服務器加載;
2)GlusterFS中所有的功能都是通過transtator實作的,其中客戶端要比服務器更復雜,所以功能的重點主要集中在客戶端上;
二、GlusterFS的作業原理
1、GlusterFS的作業流程

圖中所示只是GlusterFS資料訪問的一個概要圖,
1)客戶端或應用程式通過GlusterFS的掛在點訪問資料;
2)Linux系統內核通過VFS API收到請求并處理;
3)VFS將資料遞交給FUSE內核檔案系統,并向系統注冊了一個實際的檔案系統FUSE,而FUSE檔案系統則是將資料過/dev/fuse設備檔案遞交給GlusterFS client端,可以將FUSE檔案系統理解為一個代理;
4)GlusterFS client收到資料后,client根據組態檔對資料進行處理;
5)經過GlusterFS client處理后,通過網路將資料傳遞至遠端的GlusterFS Server,并且將資料寫入服務器存盤設備;
2、彈性HASH演算法
彈性HASH演算法使用Davies-Meyer演算法,通過HASH演算法得到一個32位的整數范圍,假設邏輯卷中有N個存盤單位Brick,則32位的整數范圍被劃分為N個連續的子空間,每個空間對應一個Brick,當用戶或應用程式訪問某一個命名空間時,通過對該命名空間計算HASH值,根據該HASH值對應的32位整數空間定位資料所在的Brick,優點如下:
保證資料平均分布在每個Brick中;
- 解決了對元資料服務器的依賴,進而解決了單點故障及訪問瓶頸;
三、GlusterFS的卷型別
GlusterFS支持七種卷,即分布式卷、條帶卷、復制卷、分布式條帶卷、分布式復制卷、條帶復制卷和分布式條帶復制卷,這七種卷可以滿足不同應用對高性能、高可用的需求,
分布式卷(Distribute volume):檔案通過HASH演算法分布到所有Brick Server上,這種卷是Glusterf的基礎;以檔案為單位根據HASH演算法散列到不同的Brick,其實只是擴大了磁盤空間,如果有一個磁盤損壞,資料也將丟失,屬于檔案級的RAID0,不具備容錯能力;
條帶卷(Stripe volume):類似于RAID0,檔案被分為資料塊并以輪詢的方式分布到多個Brick Server上,檔案存盤以資料塊為單位,支持大檔案存盤,檔案越大,讀取效率越高;
復制卷(Replica volume):將檔案同步到多個Brick上,使其具備多個檔案副本,屬于檔案級RAID1,具有容錯能力,因為資料分散到多個Brick中,所以讀性能得到了很大提升,但寫性能下降;
分布式條帶卷(Distribute Stripe volume):Brick Server數量是條帶數(資料塊分布的Brick數量)的倍數,兼備分布式卷和條帶卷的特點;
分布式復制卷(Distribute Replica volume):Brick Server數量是鏡像數(資料副本數量)的倍數,具有分布式卷和復制卷的特點;
條帶復制卷(Stripe Replica volume):類似于RAID10,同時具有條帶卷和復制卷的特點;
- 分布式條帶復制卷(Distribute Stripe Replica volume):三種基本卷的復合卷,通常用于類Map Reduce應用;
1、分布式卷
分布式卷是GlusterFS的默認卷,在創建卷時,默認選項就是創建分布式卷,在該模式下,并沒有對檔案進行分塊處理,檔案直接存盤在某個Server節點上,直接使用本地檔案系統進行檔案存盤,大部分Linux命令和工具可以繼續正常使用,需要通過擴展檔案屬性保存HASH值,目前支持的底層檔案系統有ext3、ext4、ZFS、XFS等,
由于使用本地檔案系統,所以存取效率并沒有提高,反而會因為網路通信的原因而有所降低;另外支持超大型檔案也會有一定的難度,因為分布式卷不會對檔案進行分塊處理,雖然ext4已經可以支持最大16TB的單個檔案,但是本地存盤設備的容量實在有限,
如圖所示,File1和File2存放在Server1,而File3存放在Server2,檔案都是隨機存盤,一個檔案要么在Server1上,要么在Server2上,不能分塊同時存放在Server1和Server2上,
分布式卷具有如下特點:
檔案分布在不同的服務器,布局別冗余性;
更容易廉價地擴展卷的大小;
單點故障會造成資料丟失;
- 依賴于底層的資料保護;
創建分布式卷:
[root@cecentos01 ~]# gluster volume create dis-volume server1:/dir1 server2:/dir2<!--創建一個名為dis-volume的分布卷,檔案將根據HASH分布在 server1:/dir1、server2:/dir2中-->Creation of dis-volume has been successful Please start the volume to access data
2、條帶卷
Stripe模式相當于RAID0,在該模式下,根據偏移量將檔案分成N塊(N個條帶節點),輪詢地存盤在每個Brick Server節點,節點把每個資料塊都作為普通檔案存入本地檔案系統中,通過擴展屬性記錄總塊數和每塊的序號,在配置時指定的條帶數必須等于卷中Brick所包含的存盤服務器數,在存盤大檔案時,性能尤為突出,但是不具備冗余性,
如下圖所示,將檔案存放在不同服務器里,File被分割為6段,1、3、5放在server1,2、4、6放在server2,
條帶卷具有如下特點:
資料被分割成更小塊分布到塊服務器群中的不同條帶區;
分布減少了負載且更小的檔案加速了存取的速度;
- 沒有資料冗余;
創建條帶卷:
[root@centos01 ~]# gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2<!--創建一個名為Stripe-volume的條帶卷,檔案將分塊輪詢地存盤在 server1:/dir1 、server2:/dir2兩個Brick中-->Creation of rep-volume has been successful Please start the volume to access data
3、復制卷
復制模式,也稱為AFR,相當于RAID1,即同一檔案保存一份或多份副本,每個節點保存相同的內容和目錄結構,復制模式因為要保存副本,所以磁盤利用率較低,如果多個節點上的存盤空間不一致,那么將按照木桶效應取最低節點的容量作為該卷的總容量,在配置復制卷時,復制數必須等于卷中Brick所包含的存盤服務器數,復制卷具備冗余性,即使一個節點損壞,也不影響資料的正常使用,
如下圖所示,將檔案存放在服務器里,File1和File2同時存放在Server1和Server2上,相當于Server2中的檔案是Server1中檔案的副本,
復制卷具有以下特點:
卷中所有的服務器均保存一個完整的副本;
卷的副本數量可由客戶創建的時候決定;
至少有兩個塊服務器或者更多的服務器;
- 具有冗余性;
創建復制卷:
[root@centos01 ~]# gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2<!--創建名為rep-volume的復制卷,檔案將同時存盤兩個副本, 分別在Server1:/dir1和Server2:/dir2兩個Brick中-->Creation of rep-volume has been successful Please start the volume to access data
4、分布式條帶卷
分布式條帶卷兼顧分布式和條帶卷的功能,主要用于大檔案訪問處理,創建一個分布式條帶卷最少需要4臺服務器,
如下圖所示,File1和File2通過分布式卷的功能分別定位到Server1和Server2,在Server1中,File1被分割成4段,其中1、3在Server1中exp1目錄中;2、4在Server1中的exp2目錄中,在Server2中,File2也被分割成4段,其中1、3在Server2中的exp3目錄中,2、4在Server2中的exp4目錄中,
創建分布式條帶卷:
[root@centos01 ~]# gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4<!--創建了一個名為dis-stripe的分布式條帶卷,配置分布式的條帶卷時, 卷中Brick所包含的存盤服務器數必須是條帶數的倍數(>=2倍)-->Creation of rep-volume has been successful Please start the volume to access data
創建卷時,存盤服務器的數量如果等于條帶或復制數,那么創建的是條帶卷或復制卷;如果存盤服務器的數量是條帶卷或復制卷的2倍甚至更多,那么將創建分布式條帶卷或分布式復制卷,
5、分布式復制卷
分布式復制卷兼顧分布式卷和復制卷的功能,主要用于需要冗余的情況下,
如下圖所示,File1和File2通過分布式卷的功能分別定位到Server1和Server2,在存放File1時,File1根據復制卷的特性,將存在兩個相同的副本,分別是Server1中的exp1目錄和Server2中的exp2目錄,在存放File2時,File2根據復制卷的特性,也將存在兩個相同的副本,分別是Server3中的exp3目錄和Server4中的exp4目錄,
創建分布式復制卷:
[root@centos01 ~]# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4<!--創建了一個名為dis-rep的分布式條帶卷,配置分布式的復制卷時, 卷中Brick所包含的存盤服務器數必須是條帶數的倍數(>=2倍)-->Creation of rep-volume has been successful Please start the volume to access data
假如存在8臺服務器,當復制副本為2時,按照服務器串列的順序,服務器1和2作為一個復制,服務器3和4作為一個復制,服務器5和6作為一個復制,服務器7和8作為一個復制;當復制副本為4時,按照服務器串列的順序,服務器1/2/3./4作為一個復制,服務器5/6/7/8作為一個復制,
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/96463.html
標籤:其他
