天天看點

GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

目錄

  • 一、GlusterFS簡介
    • 1、GlusterFS的概念
    • 2、GlusterFS特點
    • 3、GlusterFS術語
    • 4、GFS的結構
    • 5、後端存儲如何定位檔案
    • 6、工作原理
    • 7、GFS支援的七種卷
      • 分布式卷
      • 條帶卷
      • 複制卷
      • 分布式條帶卷
      • 分布式複制卷
      • 條帶複制卷
      • 分布式條帶複制卷
  • 二、GFS部署
    • 1、環境
    • 2、節點進行磁盤分區、挂載
    • 3、配置/etc/hosts檔案
    • 4、安裝、啟動GlusterFS
    • 5、添加節點建立叢集
    • 6、根據規劃建立卷
      • 1)建立分布式卷
      • 2)建立條帶卷
      • 3)建立複制卷
      • 4)建立分布式條帶卷
      • 5)建立分布式複制卷
    • 7、部署gluster用戶端
      • 1)安裝用戶端軟體
      • 2)配置 /etc/hosts 檔案
      • 3)建立挂載目錄
      • 4)挂載 Gluster 檔案系統
    • 8、測試 Gluster 檔案系統
    • 9、檢視檔案分布
      • 1)檢視分布式檔案分布
      • 2)檢視條帶卷檔案分布
      • 3)檢視複制卷檔案分布
      • 4)檢視分布式條帶卷分布
      • 5)檢視分布式複制卷分布
  • 三、備援測試
    • 1、分布式卷
    • 2、條帶卷
    • 3、分布式條帶卷
    • 4、分布式複制卷
    • 5、複制卷(在node3和node4中選一個關閉)
  • 四、相關維護指令
    • 1、檢視GlusterFS卷
    • 2、檢視所有卷的資訊
    • 3、檢視所有卷的狀态
    • 4、停止一個卷
    • 5、删除一個卷
    • 6.設定卷的通路控制
  • 總結

一、GlusterFS簡介

1、GlusterFS的概念

  • Gluster File System,開源的分布式檔案系統,是Scale存儲的核心,能夠處理千數量級的用戶端。在傳統的解決方案中,Glusterfs能夠靈活的結合實體的,虛拟的和雲資源去展現高可用和企業級的性能存儲。
  • 由存儲伺服器(Brick Server)、用戶端以及NFS/Samba 存儲網關組成
  • 無中繼資料伺服器(資料分散存儲

    可避免出現單點故障)

2、GlusterFS特點

擴充性和高性能

高可用性

全局統一命名空間

彈性卷管理

基于标準協定

3、GlusterFS術語

1、Brick:GFS中的存儲單元,通過是一個受信存儲池中的伺服器的一個導出目錄。可以通過主機名和目錄名來辨別,如’SERVER:EXPORT’

2、Volume:卷

3、FUSE:核心檔案系統,Filesystem Userspace是一個可加載的核心子產品,其支援非特權使用者建立自己的檔案系統而不需要修改核心代碼。通過在使用者空間運作檔案系統的代碼通過FUSE代碼與核心進行橋接。

4、VFS:虛拟檔案系統

5、Glusterd:Gluster management daemon,要在trusted storage pool中所有的伺服器上運作。

4、GFS的結構

子產品化堆棧式架構

子產品化、堆棧式的架構

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

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

彈性 HASH 算法是 Davies-Meyer 算法的具體實作,通過 HASH 算法可以得到一個 32 位的整數範圍的 hash 值,假設邏輯卷中有 N 個存儲機關 Brick,則 32 位的整數範圍将被劃分為 N 個連續的子空間,每個空間對應一個 Brick。

當使用者或應用程式通路某一個命名空間時,通過對該命名空間計算 HASH值,根據該HASH值所對應的32位整數空間定位資料所在的 Brick。

6、工作原理

1、用戶端或應用程式通過GlusterFS的挂載點通路資料

2、linux系統核心通過VFS API收到請求并處理

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

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

5、通過網絡将資料傳遞至遠端的GlusterFS Server,并且将資料寫入到伺服器儲存設備上

7、GFS支援的七種卷

分布式卷

  • 檔案分布在不同的伺服器,不具備備援性
  • 更容易和廉價地擴充卷的大小
  • 單點故障會造成資料丢失
  • 依賴底層的資料保護

條帶卷

  • 資料被分割成更小塊分布到塊伺服器群中的不同條帶區
  • 分布減少了負載且更小的檔案加速了存取的速度
  • 沒有資料備援

複制卷

  • 卷中所有的伺服器均儲存一個完整的副本
  • 卷的副本數量可由客戶建立的時候決定
  • 至少由兩個塊伺服器或更多伺服器
  • 具備備援性

分布式條帶卷

兼顧分布式卷和條帶卷的功能

主要用于大檔案通路處理

至少最少需要 4 台伺服器

分布式複制卷

兼顧分布式卷和複制卷的功能

用于需要備援的情況下

條帶複制卷

類似RAID 10,同時具有條帶卷和複制卷的特點

分布式條帶複制卷

三種基本卷的複合卷通常用于類Map Reduce應用

二、GFS部署

1、環境

節點名稱 ip位址 磁盤 挂載點
Node1節點 192.168.109.12

/dev/sdb1

/dev/sdc1

/dev/sdd1

/dev/sde1

/data/sdb1

/data/sdc1

/data/sdd1

/data/sde1

Node2節點 192.168.109.22

/dev/sdb1

/dev/sdc1

/dev/sdd1

/dev/sde1

/data/sdb1

/data/sdc1

/data/sdd1

/data/sde1

Node3節點 192.168.109.32

/dev/sdb1

/dev/sdc1

/dev/sdd1

/dev/sde1

/data/sdb1

/data/sdc1

/data/sdd1

/data/sde1

Node4節點 192.168.109.42

/dev/sdb1

/dev/sdc1

/dev/sdd1

/dev/sde1

/data/sdb1

/data/sdc1

/data/sdd1

/data/sde1

用戶端 192.168.109.52
  • 所有節點更改名稱,友善識别,關防火牆(所有節點和用戶端)
systemctl stop firewalld
setenforce 0
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

2、節點進行磁盤分區、挂載

Node1節點

Node2節點

Node3節點

Node4節點

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
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
chmod +x fdisk.sh
./fdisk.sh
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

3、配置/etc/hosts檔案

Node1節點

Node2節點

Node3節點

Node4節點

echo "192.168.109.12 node1" >> /etc/hosts
echo "192.168.109.22 node2" >> /etc/hosts
echo "192.168.109.32 node3" >> /etc/hosts
echo "192.168.109.42 node4" >> /etc/hosts
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

4、安裝、啟動GlusterFS

Node1節點

Node2節點

Node3節點

Node4節點

gfsrepo

提取碼:zqzq

#将軟體包放入opt目錄下
cd /opt
unzip gfsrepo.zip 
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
cd /etc/yum.repos.d/
mkdir repos.bak
mv *.repo repos.bak/

vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1

yum clean all && yum makecache
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

5、添加節點建立叢集

Node1節點(僅需在一台節點上設定)

gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4

#檢視群集狀态(可以在每個節點上使用)
gluster peer status
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

6、根據規劃建立卷

建立卷隻需要在一台節點上建立即可

卷名稱 卷類型 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簡介二、GFS部署三、備援測試四、相關維護指令總結

2)建立條帶卷

#建立條帶卷,指定類型為 stripe,數值為 2,且後面跟了 2 個 Brick Server,是以建立的是條帶卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force

#啟動建立條帶卷
gluster volume start stripe-volume

#檢視建立條帶卷資訊
gluster volume info stripe-volume
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

3)建立複制卷

#建立複制卷,指定類型為 replica,數值為 2,且後面跟了 2 個 Brick Server,是以建立的是複制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force

#啟動建立複制卷
gluster volume start rep-volume

#檢視建立複制卷資訊
gluster volume info rep-volume
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

4)建立分布式條帶卷

#建立分布式條帶卷,指定類型為 stripe,數值為 2,而且後面跟了 4 個 Brick Server,是 2 的兩倍,是以建立的是分布式條帶卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force

#啟動建立分布式條帶卷
gluster volume start dis-stripe

#檢視建立分布式條帶卷資訊
gluster volume info dis-stripe
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

5)建立分布式複制卷

#建立分布式複制卷,指定類型為 replica,數值為 2,而且後面跟了 4 個 Brick Server,是 2 的兩倍,是以建立的是分布式複制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force

#啟動建立分布式複制卷
gluster volume start dis-rep

#檢視建立分布式複制卷資訊
gluster volume info dis-rep 
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
#檢視卷清單
gluster volume list
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

7、部署gluster用戶端

用戶端

1)安裝用戶端軟體

cd /opt
unzip gfsrepo.zip 
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
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簡介二、GFS部署三、備援測試四、相關維護指令總結
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

2)配置 /etc/hosts 檔案

echo "192.168.109.12 node1" >> /etc/hosts
echo "192.168.109.22 node2" >> /etc/hosts
echo "192.168.109.32 node3" >> /etc/hosts
echo "192.168.109.42 node4" >> /etc/hosts
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

3)建立挂載目錄

GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

4)挂載 Gluster 檔案系統

#臨時挂載
mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/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簡介二、GFS部署三、備援測試四、相關維護指令總結
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

8、測試 Gluster 檔案系統

用戶端

#在opt中建立5個大小是40M檔案
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
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結
cp demo* /test/dis
cp demo* /test/stripe/
cp demo* /test/rep/
cp demo* /test/dis_stripe/
cp demo* /test/dis_rep/
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

9、檢視檔案分布

1)檢視分布式檔案分布

Node1

ll -h /data/sdb1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node2

ll -h /data/sdb1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

分布式隻會将demo檔案分開存儲(5個檔案不在同一磁盤分區上),不會将資料分片和備份

2)檢視條帶卷檔案分布

Node1

ll -h /data/sdc1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node2

ll -h /data/sdc1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

條帶卷會将每個demo檔案中的資料分片存儲(兩個分區各有20M的檔案),沒有備份

3)檢視複制卷檔案分布

Node3

ll -h /data/sdb1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node4

ll -h /data/sdb1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

複制卷會将每個檔案放入卷中的磁盤分區中(兩分區的檔案一樣)

4)檢視分布式條帶卷分布

Node1

ll -h /data/sdd1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node2

ll -h /data/sdd1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node3

ll -h /data/sdd1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node4

ll -h /data/sdd1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

分布式條帶卷中,帶有分布式和條帶卷的特點,即将資料分片,又将檔案分開存儲,沒有備份

5)檢視分布式複制卷分布

Node1

ll -h /data/sde1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node2

ll -h /data/sde1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node3

ll -h /data/sde1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

Node4

ll -h /data/sde1
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

分布式複制卷中,帶有分布式和複制卷的特點,即将檔案分開存儲,又複制一遍檔案(備份)

三、備援測試

挂起 node2 節點或者關閉glusterd服務來模拟故障

systemctl stop glusterd.service
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

用戶端

1、分布式卷

ls -lh /test/dis
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

資料檢視,缺少demo5,檔案demo5是存儲在node2上的,是以分布式卷不具備備援

2、條帶卷

ls -lh /test/stripe/
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

檔案中沒有資料,說明資料全部丢失,是以條帶卷不具備備援

3、分布式條帶卷

ls -lh /test/dis_stripe/
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

存儲在node1和node2上的4個檔案不見了(資料是分片存儲的),是以分布式條帶卷不具備備援

4、分布式複制卷

ls -lh /test/dis_rep/
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

檔案和資料都在,是以分布式複制卷具有備援

5、複制卷(在node3和node4中選一個關閉)

ls -lh /test/rep/
           
GFS分布式檔案系統一、GlusterFS簡介二、GFS部署三、備援測試四、相關維護指令總結

檔案和資料都在,是以複制卷具有備援

四、相關維護指令

1、檢視GlusterFS卷

gluster volume list 
           

2、檢視所有卷的資訊

gluster volume info
           

3、檢視所有卷的狀态

gluster volume status
           

4、停止一個卷

gluster volume stop dis-stripe
           

5、删除一個卷

删除卷時,需要先停止卷,且信任池中不能有主機處于當機狀态,否則删除不成功

gluster volume delete dis-stripe
           

6.設定卷的通路控制

#僅拒絕
gluster volume set dis-rep auth.allow 192.168.109.3
           
#僅允許
gluster volume set dis-rep auth.allow 192.168.109.*	  #設定192.168.109.0網段的所有IP位址都能通路dis-rep卷(分布式複制卷)

           

總結

1、GlusterFS采用子產品化、堆棧式的架構,可通過靈活的配置支援高度定制化的應用環境,比方大檔案存儲、海量小檔案存儲、雲存儲、多傳輸協定應用等。

2、每一個功能以子產品形式實作,然後以積木方式進行簡單的組合,就可以實作複雜的功能。比方,Replicate子產品可實作RAID1,Stripe子產品可實作RAID0,通過兩者的組合可實作RAID10和RAID01,同一時候獲得高性能和高可靠性。

3、然後以請求的方式與用戶端進行互動,用戶端與服務端進行互動時,通過posix來解決出現的系統相容性問題,讓用戶端的指令通過posix過濾後可以在服務端執行

gfs

繼續閱讀