您好,登錄后才能下訂單哦!
博文目錄
一、GlusterFS概述
1、GlusterFS的特點(diǎn)
2、GlusterFS術(shù)語
3、模塊化堆棧式架構(gòu)
二、GlusterFS的工作原理
1、GlusterFS的工作流程
2、彈性HASH算法
三、GlusterFS的卷類型
1、分布式卷
2、條帶卷
3、復(fù)制卷
4、分布式條帶卷
5、分布式復(fù)制卷
GlusterFS是一個(gè)開源的分布式文件系統(tǒng),同時(shí)也是Scale-Out存儲(chǔ)解決方案Gluster的核心,在存儲(chǔ)數(shù)據(jù)方面有強(qiáng)大的橫向擴(kuò)展能力,通過擴(kuò)展不同的節(jié)點(diǎn)可以支持PB級(jí)別的存儲(chǔ)容量。GlusterFS借助TCP/IP或InfiniBand RDMA網(wǎng)絡(luò)將分散的存儲(chǔ)資源匯聚在一起,同一提供存儲(chǔ)服務(wù),并使用單一全局命令空間來管理數(shù)據(jù)。GlusterFS基于可堆疊的用戶空間以及無元的設(shè)計(jì),可為各種不同的數(shù)據(jù)負(fù)載提供優(yōu)異的性能。
GlusterFS主要由存儲(chǔ)服務(wù)器、客戶端及NFS/Samba存儲(chǔ)網(wǎng)關(guān)(可選,根據(jù)需要選擇使用)組成。GlusterFS架構(gòu)中最大的設(shè)計(jì)特點(diǎn)就是沒有元數(shù)據(jù)服務(wù)器組件,這有助于提升整個(gè)系統(tǒng)的性能、可靠性和穩(wěn)定性。傳統(tǒng)的分布式文件系統(tǒng)大多通過元服務(wù)器來存儲(chǔ)元數(shù)據(jù),元數(shù)據(jù)包含存儲(chǔ)節(jié)點(diǎn)上的目錄信息、目錄結(jié)構(gòu)等,這樣的設(shè)計(jì)在瀏覽目錄時(shí)效率非常高,但是也存在一些缺陷,如單點(diǎn)故障,一旦元數(shù)據(jù)服務(wù)器出現(xiàn)故障,即使節(jié)點(diǎn)具備再高的冗余性,整個(gè)存儲(chǔ)系統(tǒng)也將崩潰,而GlusterFS分布式文件系統(tǒng)是基于無元服務(wù)器的設(shè)計(jì),數(shù)據(jù)橫向擴(kuò)展能力強(qiáng),具備較高的可靠性及存儲(chǔ)效率。 GlusterFS支持TCP/IP和InfiniBand RDMA高速網(wǎng)絡(luò)互聯(lián),客戶端可通過原聲GlusterFS協(xié)議訪問數(shù)據(jù),其他沒有運(yùn)行GlusterFS客戶端的終端可通過NFS/CIFS標(biāo)準(zhǔn)協(xié)議通過存儲(chǔ)網(wǎng)關(guān)訪問數(shù)據(jù)。如下圖:
擴(kuò)展性和高性能;
高可用性;
全局統(tǒng)一命名空間;
基于標(biāo)準(zhǔn)協(xié)議;
- 彈性卷管理;
Brick(存儲(chǔ)塊):指可信主機(jī)池中由主機(jī)提供的用于物理存儲(chǔ)的專用分區(qū),是GlusterFS中的基本存儲(chǔ)單元,同時(shí)也是可信存儲(chǔ)池中服務(wù)器上對(duì)外提供的存儲(chǔ)目錄,存儲(chǔ)目錄的格式由服務(wù)器和目錄的絕對(duì)路徑構(gòu)成,表示方法為SERVER:EXPORT ,比如:192.168.1.4/date/mydir/;
Volume(邏輯卷):一個(gè)邏輯卷是一組Brick的集合。卷是數(shù)據(jù)存儲(chǔ)的邏輯設(shè)備,類似于LVM中的邏輯卷。大部分Gluster管理操作是在卷上進(jìn)行的;
FUSE:是一個(gè)內(nèi)核模塊,允許用戶創(chuàng)建自己的文件系統(tǒng),無須修改內(nèi)核代碼;
VFS:內(nèi)核空間對(duì)用戶空間提供吧的訪問磁盤的接口;
- Glusterd(后臺(tái)管理進(jìn)程):在存儲(chǔ)群集中的每個(gè)節(jié)點(diǎn)上都要運(yùn)行;
如下圖所示,GlusterFS采用模塊化、堆棧式的架構(gòu),可以根據(jù)需求配置定制化的應(yīng)用環(huán)境,如大文件存儲(chǔ)、海量小文件存儲(chǔ)、云存儲(chǔ)、多傳輸協(xié)議應(yīng)用等。通過對(duì)模塊進(jìn)行各種組合,即可實(shí)現(xiàn)復(fù)雜的功能。例如,Replicate模塊可實(shí)現(xiàn)RAID1,Stripe模塊可實(shí)現(xiàn)RAID0,通過兩者的組合可實(shí)現(xiàn)RAID10和RAID01,同時(shí)獲得更高的性能及可靠性。
GlusterFS是模塊化堆棧式的架構(gòu)設(shè)計(jì)。模塊成為Translator,是GlusterFS提供的一種強(qiáng)大的機(jī)制,借助這種良好定義的接口可以高效簡(jiǎn)便地?cái)U(kuò)展文件系統(tǒng)的功能。
1)服務(wù)器與客戶端的設(shè)計(jì)高度模塊化的同事模塊接口是兼容的,同一個(gè)transtator可同事在客戶端和服務(wù)器加載;
2)GlusterFS中所有的功能都是通過transtator實(shí)現(xiàn)的,其中客戶端要比服務(wù)器更復(fù)雜。所以功能的重點(diǎn)主要集中在客戶端上;
圖中所示只是GlusterFS數(shù)據(jù)訪問的一個(gè)概要圖。
1)客戶端或應(yīng)用程序通過GlusterFS的掛在點(diǎn)訪問數(shù)據(jù);
2)Linux系統(tǒng)內(nèi)核通過VFS API收到請(qǐng)求并處理;
3)VFS將數(shù)據(jù)遞交給FUSE內(nèi)核文件系統(tǒng),并向系統(tǒng)注冊(cè)了一個(gè)實(shí)際的文件系統(tǒng)FUSE,而FUSE文件系統(tǒng)則是將數(shù)據(jù)過/dev/fuse設(shè)備文件遞交給GlusterFS client端。可以將FUSE文件系統(tǒng)理解為一個(gè)代理;
4)GlusterFS client收到數(shù)據(jù)后。client根據(jù)配置文件對(duì)數(shù)據(jù)進(jìn)行處理;
5)經(jīng)過GlusterFS client處理后,通過網(wǎng)絡(luò)將數(shù)據(jù)傳遞至遠(yuǎn)端的GlusterFS Server,并且將數(shù)據(jù)寫入服務(wù)器存儲(chǔ)設(shè)備;
彈性HASH算法使用Davies-Meyer算法,通過HASH算法得到一個(gè)32位的整數(shù)范圍,假設(shè)邏輯卷中有N個(gè)存儲(chǔ)單位Brick,則32位的整數(shù)范圍被劃分為N個(gè)連續(xù)的子空間,每個(gè)空間對(duì)應(yīng)一個(gè)Brick。當(dāng)用戶或應(yīng)用程序訪問某一個(gè)命名空間時(shí),通過對(duì)該命名空間計(jì)算HASH值,根據(jù)該HASH值對(duì)應(yīng)的32位整數(shù)空間定位數(shù)據(jù)所在的Brick。優(yōu)點(diǎn)如下:
保證數(shù)據(jù)平均分布在每個(gè)Brick中;
- 解決了對(duì)元數(shù)據(jù)服務(wù)器的依賴,進(jìn)而解決了單點(diǎn)故障及訪問瓶頸;
GlusterFS支持七種卷,即分布式卷、條帶卷、復(fù)制卷、分布式條帶卷、分布式復(fù)制卷、條帶復(fù)制卷和分布式條帶復(fù)制卷,這七種卷可以滿足不同應(yīng)用對(duì)高性能、高可用的需求。
分布式卷(Distribute volume):文件通過HASH算法分布到所有Brick Server上,這種卷是Glusterf的基礎(chǔ);以文件為單位根據(jù)HASH算法散列到不同的Brick,其實(shí)只是擴(kuò)大了磁盤空間,如果有一個(gè)磁盤損壞,數(shù)據(jù)也將丟失,屬于文件級(jí)的RAID0,不具備容錯(cuò)能力;
條帶卷(Stripe volume):類似于RAID0,文件被分為數(shù)據(jù)塊并以輪詢的方式分布到多個(gè)Brick Server上,文件存儲(chǔ)以數(shù)據(jù)塊為單位,支持大文件存儲(chǔ),文件越大,讀取效率越高;
復(fù)制卷(Replica volume):將文件同步到多個(gè)Brick上,使其具備多個(gè)文件副本,屬于文件級(jí)RAID1,具有容錯(cuò)能力。因?yàn)閿?shù)據(jù)分散到多個(gè)Brick中,所以讀性能得到了很大提升,但寫性能下降;
分布式條帶卷(Distribute Stripe volume):Brick Server數(shù)量是條帶數(shù)(數(shù)據(jù)塊分布的Brick數(shù)量)的倍數(shù),兼?zhèn)浞植际骄砗蜅l帶卷的特點(diǎn);
分布式復(fù)制卷(Distribute Replica volume):Brick Server數(shù)量是鏡像數(shù)(數(shù)據(jù)副本數(shù)量)的倍數(shù),具有分布式卷和復(fù)制卷的特點(diǎn);
條帶復(fù)制卷(Stripe Replica volume):類似于RAID10,同時(shí)具有條帶卷和復(fù)制卷的特點(diǎn);
- 分布式條帶復(fù)制卷(Distribute Stripe Replica volume):三種基本卷的復(fù)合卷,通常用于類Map Reduce應(yīng)用;
分布式卷是GlusterFS的默認(rèn)卷,在創(chuàng)建卷時(shí),默認(rèn)選項(xiàng)就是創(chuàng)建分布式卷。在該模式下,并沒有對(duì)文件進(jìn)行分塊處理,文件直接存儲(chǔ)在某個(gè)Server節(jié)點(diǎn)上。直接使用本地文件系統(tǒng)進(jìn)行文件存儲(chǔ),大部分Linux命令和工具可以繼續(xù)正常使用。需要通過擴(kuò)展文件屬性保存HASH值,目前支持的底層文件系統(tǒng)有ext3、ext4、ZFS、XFS等。
由于使用本地文件系統(tǒng),所以存取效率并沒有提高,反而會(huì)因?yàn)榫W(wǎng)絡(luò)通信的原因而有所降低;另外支持超大型文件也會(huì)有一定的難度,因?yàn)榉植际骄聿粫?huì)對(duì)文件進(jìn)行分塊處理。雖然ext4已經(jīng)可以支持最大16TB的單個(gè)文件,但是本地存儲(chǔ)設(shè)備的容量實(shí)在有限。
如圖所示,F(xiàn)ile1和File2存放在Server1,而File3存放在Server2,文件都是隨機(jī)存儲(chǔ),一個(gè)文件要么在Server1上,要么在Server2上,不能分塊同時(shí)存放在Server1和Server2上。
分布式卷具有如下特點(diǎn):
文件分布在不同的服務(wù)器,布局別冗余性;
更容易廉價(jià)地?cái)U(kuò)展卷的大小;
單點(diǎn)故障會(huì)造成數(shù)據(jù)丟失;
- 依賴于底層的數(shù)據(jù)保護(hù);
創(chuàng)建分布式卷:
[root@cecentos01 ~]# gluster volume create dis-volume server1:/dir1 server2:/dir2
<!--創(chuàng)建一個(gè)名為dis-volume的分布卷,文件將根據(jù)HASH分布在
server1:/dir1、server2:/dir2中-->
Creation of dis-volume has been successful
Please start the volume to access data
Stripe模式相當(dāng)于RAID0,在該模式下,根據(jù)偏移量將文件分成N塊(N個(gè)條帶節(jié)點(diǎn)),輪詢地存儲(chǔ)在每個(gè)Brick Server節(jié)點(diǎn)。節(jié)點(diǎn)把每個(gè)數(shù)據(jù)塊都作為普通文件存入本地文件系統(tǒng)中,通過擴(kuò)展屬性記錄總塊數(shù)和每塊的序號(hào)。在配置時(shí)指定的條帶數(shù)必須等于卷中Brick所包含的存儲(chǔ)服務(wù)器數(shù),在存儲(chǔ)大文件時(shí),性能尤為突出,但是不具備冗余性。
如下圖所示,將文件存放在不同服務(wù)器里,F(xiàn)ile被分割為6段,1、3、5放在server1,2、4、6放在server2。
條帶卷具有如下特點(diǎn):
數(shù)據(jù)被分割成更小塊分布到塊服務(wù)器群中的不同條帶區(qū);
分布減少了負(fù)載且更小的文件加速了存取的速度;
- 沒有數(shù)據(jù)冗余;
創(chuàng)建條帶卷:
[root@centos01 ~]# gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
<!--創(chuàng)建一個(gè)名為Stripe-volume的條帶卷,文件將分塊輪詢地存儲(chǔ)在
server1:/dir1 、server2:/dir2兩個(gè)Brick中-->
Creation of rep-volume has been successful
Please start the volume to access data
復(fù)制模式,也稱為AFR,相當(dāng)于RAID1。即同一文件保存一份或多份副本,每個(gè)節(jié)點(diǎn)保存相同的內(nèi)容和目錄結(jié)構(gòu)。復(fù)制模式因?yàn)橐4娓北?,所以磁盤利用率較低。如果多個(gè)節(jié)點(diǎn)上的存儲(chǔ)空間不一致,那么將按照木桶效應(yīng)取最低節(jié)點(diǎn)的容量作為該卷的總?cè)萘俊T谂渲脧?fù)制卷時(shí),復(fù)制數(shù)必須等于卷中Brick所包含的存儲(chǔ)服務(wù)器數(shù),復(fù)制卷具備冗余性,即使一個(gè)節(jié)點(diǎn)損壞,也不影響數(shù)據(jù)的正常使用。
如下圖所示,將文件存放在服務(wù)器里,F(xiàn)ile1和File2同時(shí)存放在Server1和Server2上,相當(dāng)于Server2中的文件是Server1中文件的副本。
復(fù)制卷具有以下特點(diǎn):
卷中所有的服務(wù)器均保存一個(gè)完整的副本;
卷的副本數(shù)量可由客戶創(chuàng)建的時(shí)候決定;
至少有兩個(gè)塊服務(wù)器或者更多的服務(wù)器;
- 具有冗余性;
創(chuàng)建復(fù)制卷:
[root@centos01 ~]# gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
<!--創(chuàng)建名為rep-volume的復(fù)制卷,文件將同時(shí)存儲(chǔ)兩個(gè)副本,
分別在Server1:/dir1和Server2:/dir2兩個(gè)Brick中-->
Creation of rep-volume has been successful
Please start the volume to access data
分布式條帶卷兼顧分布式和條帶卷的功能,主要用于大文件訪問處理,創(chuàng)建一個(gè)分布式條帶卷最少需要4臺(tái)服務(wù)器。
如下圖所示,F(xiàn)ile1和File2通過分布式卷的功能分別定位到Server1和Server2。在Server1中,F(xiàn)ile1被分割成4段,其中1、3在Server1中exp1目錄中;2、4在Server1中的exp2目錄中。在Server2中,F(xiàn)ile2也被分割成4段,其中1、3在Server2中的exp3目錄中,2、4在Server2中的exp4目錄中。
創(chuàng)建分布式條帶卷:
[root@centos01 ~]# gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
<!--創(chuàng)建了一個(gè)名為dis-stripe的分布式條帶卷,配置分布式的條帶卷時(shí),
卷中Brick所包含的存儲(chǔ)服務(wù)器數(shù)必須是條帶數(shù)的倍數(shù)(>=2倍)-->
Creation of rep-volume has been successful
Please start the volume to access data
創(chuàng)建卷時(shí),存儲(chǔ)服務(wù)器的數(shù)量如果等于條帶或復(fù)制數(shù),那么創(chuàng)建的是條帶卷或復(fù)制卷;如果存儲(chǔ)服務(wù)器的數(shù)量是條帶卷或復(fù)制卷的2倍甚至更多,那么將創(chuàng)建分布式條帶卷或分布式復(fù)制卷。
分布式復(fù)制卷兼顧分布式卷和復(fù)制卷的功能,主要用于需要冗余的情況下。
如下圖所示,F(xiàn)ile1和File2通過分布式卷的功能分別定位到Server1和Server2。在存放File1時(shí),F(xiàn)ile1根據(jù)復(fù)制卷的特性,將存在兩個(gè)相同的副本,分別是Server1中的exp1目錄和Server2中的exp2目錄,在存放File2時(shí),F(xiàn)ile2根據(jù)復(fù)制卷的特性,也將存在兩個(gè)相同的副本,分別是Server3中的exp3目錄和Server4中的exp4目錄。
創(chuàng)建分布式復(fù)制卷:
[root@centos01 ~]# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
<!--創(chuàng)建了一個(gè)名為dis-rep的分布式條帶卷,配置分布式的復(fù)制卷時(shí),
卷中Brick所包含的存儲(chǔ)服務(wù)器數(shù)必須是條帶數(shù)的倍數(shù)(>=2倍)-->
Creation of rep-volume has been successful
Please start the volume to access data
假如存在8臺(tái)服務(wù)器,當(dāng)復(fù)制副本為2時(shí),按照服務(wù)器列表的順序,服務(wù)器1和2作為一個(gè)復(fù)制,服務(wù)器3和4作為一個(gè)復(fù)制,服務(wù)器5和6作為一個(gè)復(fù)制,服務(wù)器7和8作為一個(gè)復(fù)制;當(dāng)復(fù)制副本為4時(shí),按照服務(wù)器列表的順序,服務(wù)器1/2/3./4作為一個(gè)復(fù)制,服務(wù)器5/6/7/8作為一個(gè)復(fù)制。
關(guān)于搭建GlusterFS分布式文件系統(tǒng)群集將在下一篇博文詳細(xì)配置!?。?/strong>
———————— 本文至此結(jié)束,感謝閱讀 ————————
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。