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