天天看點

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

GFS

  • 一、GlusterFS
    • 1、概述
    • 2、特點
    • 3、GlusterFS術語
  • 二、GlusterFS架構
    • 1、子產品化、堆棧式的架構
    • 2、後端存儲如何定位檔案
    • 3、GFS支援的七種卷
  • 三、GFS部署
    • 叢集環境準備
    • 1、建立磁盤分區,并挂載
    • 2、更改節點名稱,配置hosts檔案
    • 3、安裝、啟動GlusterFS服務
    • 4、添加節點并建立叢集
    • 5、建立五種卷
    • 6、配置用戶端
    • 7、測試
    • 8、檢視
  • 四、備援測試
    • 1、node2節點模拟故障
    • 2、用戶端驗證
  • 六、其他相關維護指令

一、GlusterFS

1、概述

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

2、特點

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

3、GlusterFS術語

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

二、GlusterFS架構

1、子產品化、堆棧式的架構

子產品化:每個子產品可以提供不同的功能

堆棧式:同時啟用多個子產品,多個功能可以組合,實作複雜的功能

通過對子產品的組合,實作複雜的功能

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

解讀上圖:

上半部分為用戶端,中間為網絡層,下半部分為服務端

1、封裝多個功能子產品,組成堆棧式的結構,來實作複雜的功能

2、然後以請求的方式與用戶端進行互動,用戶端與服務端進行互動,由于可能會存在系統相容問題,需要通過posix來解決系統相容性問題,讓用戶端的指令通過posix過濾後可以在服務端執行

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

上圖

1、外來一個請求,例:使用者端申請建立一個檔案,用戶端或應用程式通過GFS的挂載點通路資料

2、linux系統内容通過VFSAPI收到請求并處理

3、VFS将資料遞交給FUSE核心檔案系統,fuse檔案系統則是将資料通過/dev/fuse裝置檔案遞交給了GlusterFS client端

4、GlusterFS client端收到資料後,會根據配置檔案的配置對資料進行處理

5、再通過網絡,将資料發送給遠端的ClusterFS server,并将資料寫入到伺服器儲存裝置上

6、server再将資料轉交給VFS僞檔案系統,再由VFS進行轉存處理,最後交給EXT3

2、後端存儲如何定位檔案

彈性HASH算法

通過HASH算法得到一個固定長度的資料(這裡是32位整數)

通常情況下,不同資料得到的結果是不同的

為了解決分布式檔案資料索引、定位的複雜程度,而使用了HASH算法來輔助

3、GFS支援的七種卷

1、分布式卷(預設):檔案通過HASH算法分布到所有Brick Server上,這種卷是GFS的基礎;以檔案為機關根據HASH算法散列到不同的Brick,其實隻是擴大了磁盤空間,并不具備容錯能力,屬于檔案級RAID 0

2、條帶卷(預設):類似RAID 0,檔案被分成資料庫并以輪詢的方式分布到多個Brick Server上,檔案存儲以資料塊為機關,支援大檔案存儲,檔案越大,讀取效率越高

3、複制卷(Replica volume):将檔案同步到多個Brick上,使其具備多個檔案副本,屬于檔案級RAID 1,具有容錯能力。因為資料分散在多個Brick中,是以讀性能得到很大提升,但寫性能下降

4、分布式條帶卷(Distribute Stripe volume):Brick Server數量是條帶數(資料塊分布的Brick數量)的倍數,兼具分布式卷和條帶的特點

5、分布式複制卷(Distribute Replica volume):Brick Server數量是鏡像數(資料副本 數量)的倍數,兼具分布式卷和複制卷的特點

6、條帶複制卷(Stripe Replca volume):類似RAID 10,同時具有條帶卷和複制卷的特點

7、分布式條帶複制卷(Distribute Stripe Replicavolume):三種基本卷的複合卷通常用于類Map Reduce應用

三、GFS部署

連結: gfs軟體包

提取碼: krhe

叢集環境準備

Node1節點:node1/192.168.221.20		  磁盤: /dev/sdb1			挂載點: /data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1
Node2節點:node2/192.168.221.30		  磁盤: /dev/sdb1			挂載點: /data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1
Node3節點:node3/192.168.221.70		  磁盤: /dev/sdb1			挂載點: /data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1
Node4節點:node4/192.168.221.80   	  磁盤: /dev/sdb1			挂載點: /data/sdb1
											/dev/sdc1					/data/sdc1
											/dev/sdd1					/data/sdd1
											/dev/sde1					/data/sde1
           

=用戶端節點:192.168.221.100=

1、建立磁盤分區,并挂載

Node1節點:192.168.221.20
Node2節點:192.168.221.30
Node3節點:192.168.221.70
Node4節點:192.168.221.80
所有節點都要劃分磁盤,這裡使用node1作為示範,用腳本對磁盤進行操作
vim fdisk.sh
#!/bin/bash
NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
for VAR in $NEWDEV
do
   echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
   mkfs.xfs /dev/${VAR}"1" &> /dev/null
   mkdir -p /data/${VAR}"1" &> /dev/null
   echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
mount -a &> /dev/null
chmod +x fdisk.sh
./fdisk.sh
df -h
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

2、更改節點名稱,配置hosts檔案

Node1節點:192.168.221.20
Node2節點:192.168.221.30
Node3節點:192.168.221.70
Node4節點:192.168.221.80
所有節點都要配置,這裡使用node1作為示範
hostname node1
su -
echo "192.168.221.20 node1" >> /etc/hosts
echo "192.168.221.30 node2" >> /etc/hosts
echo "192.168.221.70 node3" >> /etc/hosts
echo "192.168.221.80 node4" >> /etc/hosts
cat /etc/hosts
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

3、安裝、啟動GlusterFS服務

Node1節點:192.168.221.20
Node2節點:192.168.221.30
Node3節點:192.168.221.70
Node4節點:192.168.221.80
所有節點都要安裝,這裡使用node1作為示範
#将軟體包放入opt目錄下
cd /opt
unzip gfsrepo.zip 
cd /etc/yum.repos.d/
mkdir repos.bak
mv * repos.bak/
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

4、添加節點并建立叢集

Node1節點:192.168.221.20
添加節點到存儲信任池中
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
#檢視群集狀态(可以在每個節點上使用)
gluster peer status
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

5、建立五種卷

========根據以下規劃建立卷=========
卷名稱 				卷類型				Brick
dis-volume			分布式卷			node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume		條帶卷			node1(/data/sdc1)、node2(/data/sdc1)
rep-volume			複制卷			node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe			分布式條帶卷		node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep				分布式複制卷		node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)
           
(1)建立分布式卷
#建立分布式卷,沒有指定類型,預設建立的是分布式卷
建立分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force

檢視卷清單
gluster volume list

啟動建立分布式卷
gluster volume start dis-volume

檢視建立分布式卷資訊
gluster volume info dis-volume
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

6、配置用戶端

部署Gluster用戶端(192.168.221.100)
(1)安裝用戶端軟體
cd /opt
unzip gfsrepo.zip 
cd /etc/yum.repos.d/
mkdir repos.bak
mv * repos.bak/
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-fuse
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(2)配置/etc/hosts檔案
echo "192.168.221.20 node1" >> /etc/hosts
echo "192.168.221.30 node2" >> /etc/hosts
echo "192.168.221.70 node3" >> /etc/hosts
echo "192.168.221.80 node4" >> /etc/hosts
cat /etc/hosts
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(3)建立挂載目錄
mkdir -p /srs/{dis,stripe,rep,dis_stripe,dis_rep}
cd /srs
ls
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(4)挂載 Gluster 檔案系統
臨時挂載
mount.glusterfs node1:dis-volume /srs/dis
mount.glusterfs node1:stripe-volume /srs/stripe
mount.glusterfs node1:rep-volume /srs/rep
mount.glusterfs node1:dis-stripe /srs/dis_stripe
mount.glusterfs node1:dis-rep /srs/dis_rep
df -h
企業中最好用永久挂載,以防重新開機或伺服器當機(這裡不做示範)
vim /etc/fstab
node1:dis-volume		/test/dis				glusterfs		defaults,_netdev		0 0
node1:stripe-volume		/test/stripe			glusterfs		defaults,_netdev		0 0
node1:rep-volume		/test/rep				glusterfs		defaults,_netdev		0 0
node1:dis-stripe		/test/dis_stripe	    glusterfs		defaults,_netdev		0 0
node1:dis-rep			/test/dis_rep		    glusterfs       defaults,_netdev		0 0
mount -a
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

7、測試

部署Gluster用戶端(192.168.221.100)
向卷中寫入檔案
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
ls -lh /opt
cp demo* /srs/dis
cp demo* /srs/stripe/
cp demo* /srs/rep/
cp demo* /srs/dis_stripe/
cp demo* /srs/dis_rep/
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

8、檢視

檢視卷對應的磁盤分區中的檔案資料,驗證結果

(1)檢視分布式檔案分布
node1:/dev/sdb1
ll -h /data/sdb1
node2:/dev/sdb1
ll -h /data/sdb1
現象:分布式隻會将demo檔案分開存儲(5個檔案不在同一磁盤分區上),不會将資料分片和備份
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(2)檢視條帶卷檔案分布
node1:/dev/sdc1
ll -h /data/sdc1
node2:/dev/sdc1
ll -h /data/sdc1
現象:條帶卷會将每個demo檔案中的資料分片存儲(兩個分區各有20M的檔案),沒有備份
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(3)檢視複制卷檔案分布
node3:/dev/sdb1
ll -h /data/sdb1
node4:/dev/sdb1
ll -h /data/sdb1
現象:複制卷會将每個檔案放入卷中的磁盤分區中(兩分區的檔案一樣)
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(4)檢視分布式條帶卷分布
node1:/dev/sdd1
ll -h /data/sdd1
node2:/dev/sdd1
ll -h /data/sdd1
node3:/dev/sdd1
ll -h /data/sdd1
node4:/dev/sdd1
ll -h /data/sdd1
現象:分布式條帶卷中,帶有分布式和條帶卷的特點,即将資料分片,又将檔案分開存儲,沒有備份
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(5)檢視分布式複制卷分布
node1:/dev/sde1
ll -h /data/sde1
node2:/dev/sde1
ll -h /data/sde1
node3:/dev/sde1
ll -h /data/sde1
node4:/dev/sde1
ll -h /data/sde1
現象:分布式複制卷中,帶有分布式和複制卷的特點,即将檔案分開存儲,又複制一遍檔案(備份)
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

四、備援測試

1、node2節點模拟故障

systemctl stop glusterd.service
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

2、用戶端驗證

在用戶端(192.168.221.100)上檢視檔案是否正常

(1)分布式卷
ls -lh /srs/dis/
結論:資料檢視,缺少demo5,檔案demo5是存儲在node2上的,是以分布式卷不具備備援
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(2)條帶卷
ls -lh /srs/stripe/
結論:檔案中沒有資料,說明資料全部丢失,是以條帶卷不具備備援
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(3)複制卷
在node3和node4中選一個關閉的,關閉node4(192.168.163.14)進行測試,
具有備援
ls -lh /srs/rep/
結論:檔案和資料都在,是以複制卷具有備援
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(4)分布式條帶卷
ls -lh /srs/dis_stripe/
結論:存儲在node1和node2上的4個檔案不見了(資料是分片存儲的),是以分布式條帶卷不具備備援
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
(5)分布式複制卷
ls -lh /srs/dis_rep/
結論:檔案和資料都在,是以分布式複制卷具有備援
           
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令
GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

六、其他相關維護指令

GFS分布式檔案系統一、GlusterFS二、GlusterFS架構三、GFS部署四、備援測試六、其他相關維護指令

繼續閱讀