GlusterFS分佈式文件系統概述

博文目錄
一、GlusterFS概述
1、GlusterFS的特點
2、GlusterFS術語
3、模塊化堆棧式架構
二、GlusterFS的工作原理
1、GlusterFS的工作流程
2、彈性HASH算法
三、GlusterFS的卷類型
1、分佈式卷
2、條帶卷
3、複製卷
4、分佈式條帶卷
5、分佈式複製卷

一、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標準協議通過存儲網關訪問數據。如下圖:
GlusterFS分佈式文件系統概述

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分佈式文件系統概述
GlusterFS是模塊化堆棧式的架構設計。模塊成爲Translator,是GlusterFS提供的一種強大的機制,藉助這種良好定義的接口可以高效簡便地擴展文件系統的功能。
1)服務器與客戶端的設計高度模塊化的同事模塊接口是兼容的,同一個transtator可同事在客戶端和服務器加載;

2)GlusterFS中所有的功能都是通過transtator實現的,其中客戶端要比服務器更復雜。所以功能的重點主要集中在客戶端上;

二、GlusterFS的工作原理

1、GlusterFS的工作流程

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上。
GlusterFS分佈式文件系統概述

分佈式卷具有如下特點:

  • 文件分佈在不同的服務器,佈局別冗餘性;

  • 更容易廉價地擴展卷的大小;

  • 單點故障會造成數據丟失;

  • 依賴於底層的數據保護;

創建分佈式卷:

[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。
GlusterFS分佈式文件系統概述

條帶卷具有如下特點:

  • 數據被分割成更小塊分佈到塊服務器羣中的不同條帶區;

  • 分佈減少了負載且更小的文件加速了存取的速度;

  • 沒有數據冗餘;

創建條帶卷:

[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中文件的副本。
GlusterFS分佈式文件系統概述

複製卷具有以下特點:

  • 卷中所有的服務器均保存一個完整的副本;

  • 卷的副本數量可由客戶創建的時候決定;

  • 至少有兩個塊服務器或者更多的服務器;

  • 具有冗餘性;

創建複製卷:

[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目錄中。
GlusterFS分佈式文件系統概述

創建分佈式條帶卷:

[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目錄。
GlusterFS分佈式文件系統概述

創建分佈式複製卷:

[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作爲一個複製。

關於搭建GlusterFS分佈式文件系統羣集將在下一篇博文詳細配置!!!

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章