一篇文章告诉你什么是GFS(分布式文件系统)
目錄
- 引言
- 一、文件系統簡介
- 1. 組成
- 2. 作用
- 3. 文件系統的掛載使用
- 二、GFS 分布式文件系統概述
- 1. GFS 簡介
- 2. GFS 的特點
- 3. GFS 專業術語
- 4. 模塊化堆棧式架構
- 5. GFS 工作流程
- 6. 各服務器詳解
- 三、GFS 卷類型
- 1. 分布式卷(Distribute volume)
- 1.2 分布式卷示例原理
- 1.3 分布式卷特點
- 1.4 創建分布式卷
- 2. 條帶卷 (Stripe volume)
- 2.1 條帶卷示例原理
- 2.2 條帶卷特點
- 2.3 創建條帶卷
- 3. 復制卷(Replica volume)
- 3.1 復制卷示例原理
- 3.2 復制卷特點
- 3.3 創建復制卷
- 4. 分布式條帶卷(Distribute Stripe volume)
- 4.1 分布式條帶卷示例原理
- 4.2 創建分布式條帶卷
- 5. 分布式復制卷(Distribute Replica volume)
- 5.1 分布式條帶卷的示例原理
- 5.2 創建分布式復制卷
- 6. 條帶復制卷(Stripe Replica volume)和分布式條帶復制卷(Distribute Stripe Replicavolume)
引言
當數據集的大小超過一臺獨立物理計算機的存儲能力時,就有必要對它進行分區(partition)并存儲到若干臺單獨的計算機上。管理網絡中夸多臺計算機存儲的文件系統。這種系統構架于網絡之上,肯定會引入網絡編程的復雜性,因此它比普通的磁盤文件系統更為復雜。
一、文件系統簡介
1. 組成
- 接口:文件系統接口
- 功能模塊(管理、存儲的工具):對對像管理的軟件集合
- 對象及屬性:(使用此文件系統的消費者)
2. 作用
- 從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統
- 主要負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取
3. 文件系統的掛載使用
- 除跟文件系統以外的文件系統創建后要使用需要先掛載至掛載點后才可以被訪問
- 掛載點即分區設備文件關聯的某個目錄文件
- 類比 NFS(外部的文件系統),使用掛載的方式才可以讓本地系統來使用外部的文件系統的功能
- 例如:配置永久掛載時,我們會寫入掛載點與掛載目錄,還有文件系統的名稱(xfs),文件類型格式等。我們在遠程跨服務器使用 GFS 分布式文件系統,掛載時也需要指定其文件格式(GlusterFS)
二、GFS 分布式文件系統概述
1. GFS 簡介
- GFS(Gluster File System) 是一個可擴展、開源的分布式文件系統(可以很好的體現出彈性伸縮的特點),用于大型的、分布式的、對大量數據進行訪問的應用,在傳統的解決方案中,GFS 能夠靈活的結合物理的,虛擬的和云資源去體現高可用和企業級的性能存儲
- GFS 由三個組件組成:
① 存儲服務器(Brick Server)
② 客戶端(不在本地)(且,有客戶端,也會有服務端,這點類似于 NFS,但是更為復雜)
③ 存儲網關(NFS/Samaba)
無元數據服務器:
元數據是核心,描述對象的信息,影響其屬性;
例如NFS,存放數據本身,是一個典型的元數據服務器可能存在單點故障,故要求服務器性能較高,服務器一旦出現故障就會導致數據丟失;
反過來看,所以無元數據服務不會有單點故障。
那么數據存放在哪里呢?會借用分布式的原則,分散存儲,不會有一個統一的數據服務器
2. GFS 的特點
- 擴展性和高性能:可擴展性,擴展節點,通過多節點提高性能
- 高可用性:不存在單點故障,有備份機制,類似 Raid 的容災機制
- 全局統一命名空間:集中化管理,類比 API 的性質/概念,系統里根據他命名所定義的隔離區域,是一個獨立空間;統一的名稱空間,與客戶端交互,把請求存放至后端的塊數據服務器
- 彈性卷管理:方便擴容及對后端存儲集群的管理與維護,較為復雜
- 基于標準協議:基于標準化的文件使用協議,讓 CentOS 兼容 GFS
3. GFS 專業術語
- Brick 存儲服務器:實際存儲用戶數據的服務器
- Volume:本地文件系統的"分區”
- FUSE:用戶 空間的文件系統(類比EXT4),“這是一個偽文件系統”;以本地文件系統為例,用戶想要讀寫一個文件,會借助于EXT4文件系統,然后把數據寫在磁盤上;而如果是遠端的GFS,客戶端的請求則應該交給FUSE(為文件系統),就可以實現跨界點存儲在GFS上
- VFS(虛擬端口) :內核態的虛擬文件系統,用戶是先提交請求交給VFS然后VFS交給FUSE,再交給GFS客戶端,最后由客戶端交給遠端的存儲
- Glusterd(服務):是允許在存儲節點的進程
4. 模塊化堆棧式架構
- 模塊化的設計,即把功能封裝在一起,最后一起調用
- 同時啟用多個模塊,多個功能的組合,這種提供功能的方式叫做堆棧式的結構
- 通過對模塊的組合,可以實現復雜的功能
模塊化:類似linux 編譯安裝,很多功能都可以做定制的,通常都是通過軟件開發的方式封裝為模塊,按需使用/不適用
GlusterFs也是這個思想:把功能封裝為一個個模塊,通過加載/調用/啟用的方式就可以對應的功能堆棧式架構設計通過對模塊不同功能的組合來實現復雜功能
5. GFS 工作流程
- ① 客戶端或應用程序通過 GlusterFS 的掛載點訪問數據
- ② linux系統內核通過 VFS API 收到請求并處理
- ③ VFS 將數據遞交給 FUSE 內核文件系統,并向系統注冊一個實際的文件系統 FUSE,而 FUSE 文件系統則是將數據通過 /dev/fuse 設備文件遞交給了 GlusterFS client 端。可以將 FUSE 文件系統理解為一個代理
- ④ GlusterFS client 收到數據后,client 根據配置文件的配置對數據進行處理
- ⑤ 經過 GlusterFS client 處理后,通過網絡將數據傳遞至遠端的 GlusterFS Server,并且將數據寫入到服務器存儲設備上
簡單來說:應用程序訪問本地掛載的目錄進行查看修改等操作,服務器會通過內核交給文件系統進行處理,并且處理后的數據會通過網絡傳遞給該掛載目錄實際所在的源服務器中,源服務器會對數據進行存儲
-
GFS-server 端功能模塊的劃分:
① 卷的類型(使用分布式、復制、條帶)
② 存儲管理(卷的創建、啟用、關閉)
③ I/O調用(存儲后,讀取數據,如何讀取)
④ 與GFS-client 端對接 -
GFS-client 端
① 用戶通過用戶態模式下,存儲數據(寫入數據)
② 寫入的數據,使用GFS掛載的形式完成(網絡掛載samba/NFS)
③數據的寫入會由GFS-client轉存到GFS-server端(對應的卷中) -
網絡通訊
① Infinlband ——— IB
② RDMA——— 面向連接傳輸協議—— 數據完整性(丟包率低)
③ TCP/IP
④ RDMA———》以后的服務中可以做為跨節點共享內存資源的協議
6. 各服務器詳解
- Application:客戶端或應用程序通過GlusterFSync的掛載點訪問數據
- VFS:linux系統內核通過VFS的API 收到請求并處理
- FUSE:VFS將數據遞交給FUSE內核文件系統,fuse文件系統則是將數據通過/dev/fuse設備文件遞交給了GlusterFS
- GlusterFS Client :通過網絡將數據傳遞至遠端的GlusterFS Server, 并且寫入到服務器存儲設備上
三、GFS 卷類型
- 為了解決分布式文件數據索引、定位的復雜程度,而使用了HASH算法來輔助
- 分布式(平均分配)的好處:
① 當數據量越來越大的時候,相對每個存儲節點的數據量(幾率)是相等的
② 而如果考慮到單點故障問題,當數據存儲再c存儲節點,對此GFS是會有備份機制的,默認3備份,所以GFS本身的機制會對數據產生冗余,以此解決單點故障
GlusterFS支持七種卷,即分布式卷、條帶卷、復制卷、分布式條帶卷、分布式復制卷、條帶復制卷和分布式條帶復制卷
1. 分布式卷(Distribute volume)
文件通過 HASH 算法分布到所有 Brick Server 上,這種卷是 GlusterFS 的默認卷;以文件為單位根據 HASH 算法散列到不同的 Brick,其實只是擴大了磁盤空間,如果有一塊磁盤損壞,數據也將丟失,屬于文件級的 RAID0, 不具有容錯能力。在該模式下,并沒有對文件進行分塊處理,文件直接存儲在某個 Server 節點上。 由于直接使用本地文件系統進行文件存儲,所以存取效率并沒有提高,反而會因為網絡通信的原因而有所降低。
1.2 分布式卷示例原理
File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是隨機存儲,一個文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分塊同時存放在 Server1和 Server2 上。
1.3 分布式卷特點
文件分布在不同的服務器,不具備冗余性更容易和廉價地擴展卷的大小單點故障會造成數據丟失依賴底層的數據保護
1.4 創建分布式卷
創建一個名為dis-volume的分布式卷,文件將根據HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
2. 條帶卷 (Stripe volume)
類似 RAID0,文件被分成數據塊并以輪詢的方式分布到多個 Brick Server 上,文件存儲以數據塊為單位,支持大文件存儲, 文件越大,讀取效率越高,但是不具備冗余性。
2.1 條帶卷示例原理
File 被分割為 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2。
2.2 條帶卷特點
根據偏移量將文件分成N塊(N個條帶點),輪詢的存儲在每個Brick Serve 節點.分布減少了負載,在存儲大文件時,性能尤為突出.沒有數據冗余,類似于Raid 0
2.3 創建條帶卷
創建了一個名為stripe-volume的條帶卷,文件將被分塊輪詢的存儲在Server1:/dir1和Server2:/dir2兩個Brick中gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
3. 復制卷(Replica volume)
將文件同步到多個 Brick 上,使其具備多個文件副本,屬于文件級 RAID 1,具有容錯能力。因為數據分散在多個 Brick 中,所以讀性能得到很大提升,但寫性能下降。復制卷具備冗余性,即使一個節點損壞,也不影響數據的正常使用。但因為要保存副本,所以磁盤利用率較低。
3.1 復制卷示例原理
File1 同時存在 Server1 和 Server2,File2 也是如此,相當于 Server2 中的文件是 Server1 中文件的副本。
3.2 復制卷特點
卷中所有的服務器均保存一個完整的副本。具備冗余性.卷的副本數量可由客戶創建的時候決定,但復制數必須等于卷中 Brick 所包含的存儲服務器數。至少由兩個塊服務器或更多服務器。若多個節點上的存儲空間不一致,將按照木桶效應取最低節點的容量作為改卷的總容量。
3.3 創建復制卷
創建名為rep-volume的復制卷,文件將同時存儲兩個副本,分別在Server1:/dir1和Server2:/dir2兩個Brick中gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
4. 分布式條帶卷(Distribute Stripe volume)
Brick Server 數量是條帶數(數據塊分布的 Brick 數量)的倍數,兼具分布式卷和條帶卷的特點。 主要用于大文件訪問處理**,創建一個分布式條帶卷最少需要 4 臺服務器。**
4.1 分布式條帶卷示例原理
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 目錄中。
4.2 創建分布式條帶卷
創建一個名為dis-stripe的分布式條帶卷,配置分布式的條帶卷時,卷中Brick所包含的存儲服務器數必須是條帶數的倍數(>=2倍)。Brick 的數量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),條帶數為 2(stripe 2)gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
創建卷時,存儲服務器的數量如果等于條帶或復制數,那么創建的是條帶卷或者復制卷;如果存儲服務器的數量是條帶或復制數的 2 倍甚至更多,那么將創建的是分布式條帶卷或分布式復制卷。
5. 分布式復制卷(Distribute Replica volume)
分布式復制卷(Distribute Replica volume):Brick Server 數量是鏡像數(數據副本數量)的倍數,兼具分布式卷和復制卷的特點,主要用于需要冗余的情況下。
5.1 分布式條帶卷的示例原理
File1 和 File2 通過分布式卷的功能分別定位到 Server1 和 Server2。在存放 File1 時,File1 根據復制卷的特性,將存在兩個相同的副本,分別是 Server1 中的exp1 目錄和 Server2 中的 exp2 目錄。在存放 File2 時,File2 根據復制卷的特性,也將存在兩個相同的副本,分別是 Server3 中的 exp3 目錄和 Server4 中的 exp4 目錄。
5.2 創建分布式復制卷
建一個名為dis-rep的分布式復制卷,配置分布式的復制卷時,卷中Brick所包含的存儲服務器數必須是復制數的倍數(>=2倍)。Brick 的數量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),復制數為 2(replica 2)gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
6. 條帶復制卷(Stripe Replica volume)和分布式條帶復制卷(Distribute Stripe Replicavolume)
- 條帶復制卷(Stripe Replica volume)類似 RAID 1 0,同時具有條帶卷和復制卷的特點。
- 分布式條帶復制卷(Distribute Stripe Replicavolume)三種基本卷的復合卷,通常用于類 Map Reduce 應用
總結
以上是生活随笔為你收集整理的一篇文章告诉你什么是GFS(分布式文件系统)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NAT模式实现虚拟机共享主机网络
- 下一篇: java信息管理系统总结_java实现科