GlusterFS部署


一、GlusterFS簡介

    PB級容量、高可用、讀寫性能、基於文件系統級別共享、分布式、無metadata(元數據)的存儲方式。

   GlusterFS(GNU ClusterFile System)是一種全對稱的開源分布式文件系統,所謂全對稱是指GlusterFS采用彈性哈希算法,沒有中心節點,所有節點全部平等。GlusterFS配置方便,穩定性好,可輕松達到PB級容量,數千個節點。

   2011年被紅帽收購,之后推出了基於GlusterFS的Red Hat Storage Server,增加了針對KVM的許多特性,可用作為KVM存儲image存儲集群,也可以為LB或HA提供存儲。

二、GlusterFS重要特性

    全對稱架構、支持多種卷類型(類似RAID0/1/5/10/01)、支持卷級別的壓縮、支持FUSE、支持NFS、支持SMB、支持Hadoop、支持OpenStack、與oVirt深度整合(對應RHEL紅帽企業級虛擬化)

三、GlusterFS重要概念

birck:GlusterFS的基本元素,以節點服務器目錄形式展現;

volume:多個brick的邏輯集合;

metadata:元數據,用於描述文件、目錄等的信息;

self-heal:用於后台運行檢測副本卷中文件和目錄的不一致性並解決這些不一致;

FUSE:Filesystem Userspace是一個可加載的內核模塊,其支持非特權用戶創建自己的文件系統而不需要修改內核代碼通過在用戶空間運行文件系統的代碼通過FUSE代碼與內核進行橋接;

Gluster Server:數據存儲服務器,即組成GlusterFS存儲集群的節點;

Gluster Client:使用GlusterFS存儲服務的服務器,如KVM、OpenStack、LB RealServer、HA node。

四、GlusterFS內部架構

GlusterFS是模塊化堆棧式的架構設計,如上圖所示。模塊稱為Translator是GlusterFS提供的一種強大機制,借助這種良好定義的接口可以高效簡便地擴展文件系統的功能。

   1、服務端與客戶端模塊接口是兼容的,同一個translator可同時在兩邊加載。

   2、GlusterFS中所有的功能都是通過translator實現,如Cluster, Storage,Performance, Protocol, Features等。

   3、重點是GlusterFSClient端。

五、GlusterFS部署

1、環境准備

操作系統:CentOS Linux release 7.4.1708 (Core)

內核版本:3.10.0-693.el7.x86_64

能互相解析,並且添加互信機制,防火牆的24007端口,selinux關閉

192.168.1.191 node1

192.168.1.192 node2

192.168.1.193 node3

192.168.1.194 node4

192.168.1.195 node5

...

2、軟件包准備

yum -y install centos-release-gluster

yum -y install glusterfs glusterfs-server glusterfs-fuse

客戶端只需要

glusterfs

glusterfs-fuse

3、創建集群

分別啟動glusterd服務(並添加開機自啟動):

systemctl start glusterd

systemctl enable glusterd

創建集群(任意節點上執行一下操作,向集群中添加節點):

gluster peer probe node2

gluster peer probe node5

從集群中去除節點(該節點中不能存在卷中正在使用的brick)

gluster peer detach node5

不需要添加自己,只需要添加其他節點即可

查看集群狀態:

gluster peer status

4、分布卷

分布式卷也成為哈希卷,多個文件以文件為單位在多個brick上,使用哈希算法隨機存儲。

應用場景:大量小文件

優點:讀/寫性能好

缺點:如果存儲或服務器故障,該brick上的數據將丟失

不指定卷類型,默認是分布式卷

brick數量沒有限制

創建分布式卷:

gluster volume create volume_name node1:/data/br1 node2:/data/br1

volumn_name:卷名

node1:節點名

/data/br1:可以理解為節點上的目錄,這個目錄最好是一個單獨的分區(分區類型最好為邏輯卷的方式,這樣易於操作系統級別的存儲空間擴展)

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

5、復制卷

 

多個文件在多個brick上復制多份,brick的數目要與需要復制的份數相等,建議brick分布在不同的服務器上。

應用場景:對可靠性高和讀寫性能要求高的場景

優點:讀寫性能好

缺點:寫性能差

replica = brick

創建復制卷:

gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1

replica:文件保存的份數

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

6、條帶卷

 

將文件分成條帶,存放在多個brick上,默認條帶大小128k

應用場景:大文件

優點:適用於大文件存儲

缺點:可靠性低,brick故障會導致數據全部丟失

stripe = birck

創建條帶卷:

gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1

stripe:條帶個數

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

7、分布式條帶卷

 

多個文件在多個節點哈希存儲,每個文件再多分條帶在多個brick上存儲

應用場景:讀/寫性能高的大量大文件場景

優點:高並發支持

缺點:沒有冗余,可靠性差

brick數是stripe的倍數

創建分布式條帶卷:

gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

創建時沒有具體的選項,來指定卷的類型,只根據stripe和brick數量分配

8、分布式復制卷

多個文件在多個節點上哈希存儲,在多個brick復制多份存儲。

應用場景:大量文件讀和可靠性要求高的場景

優點:高可靠,讀性能高

缺點:犧牲存儲空間,寫性能差

brick數量是replica的倍數

gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

創建時沒有具體的選項,來指定卷的類型,只根據replica和brick數量分配

9、條帶式復制卷

 

一個大文件存儲的時候划分條帶,並且保存多份

應用場景:超大文件,並且對可靠性要求高

優點:大文件存儲,可靠性高

缺點:犧牲空間寫性能差

brick數量是stripe、replica的乘積

gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

啟動這個卷:

gluster volume start volume_name

查看這個卷的信息:

gluster volume info volume_name

10、分布式條帶復制卷

多個大文件在多個節點哈希存儲,存儲是分成條帶,並且保存多份

應用場景:大量大文件並且對可靠性要求高的場景

優點:讀/寫/可靠性比較均勻

缺點:犧牲存儲空間,寫性能相對差

brick的數量是stripe、replica的乘積的倍數

gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1 node5:/data/br1 node6:/data/br1 node7:/data/br1 node8:/data/br1

11、配置客戶端使用卷

將卷掛載到本地的mysql目錄:

mount –t glusterfs node1:/volume_name /mysql

設置開機自動掛載

vim /etc/fstab加入:

node1:/volume_name  /mysql  glusterfs  defaults,_netdev 0 0

使用mount -a檢測並掛載測試

其他掛在方式(NFS、Samba)參考:

http://www.mamicode.com/info-detail-1925105.html

六、卷管理

1、擴容卷(Expanding Volumes)

您可以根據需要擴展卷,而集群是聯機和可用的。例如,你可能想添加一個磚的分布量,從而增加了分配和增加的GlusterFS卷的容量。

同樣,你可能想添加一組磚分布式復制量,增加的GlusterFS卷的容量。

注意:

在擴展分布式復制和分布式分散卷時,需要添加多個副本或離散計數的磚塊。例如,要使用復制計數為2擴展分布式復制卷,需要在2的倍數(例如4, 6, 8)中添加磚塊。

(1)、將節點添加到集群中

gluster peer probe node3

gluster peer probe node4

(2)、擴展volume

gluster volume add-brick volume_name node3:/data/br1 node4:/data/br1

(3)、檢查添加信息

gluster volume info volume_name

(4)、Rebalance(不要在業務繁忙的情況下進行)

gluster volume rebalance volume_name start

(5)、查看rebalance的狀態

gluster volume rebalance volume_name status

2、縮減卷(Shrinking Volumes)

您可以根據需要縮小卷,而集群是聯機和可用的。例如,您可能需要刪除由於硬件或網絡故障而在分布式卷中無法訪問的磚塊。

注意:

只有配置信息被刪除——您可以繼續從磚塊直接訪問數據。

當收縮分布式復制和分布式離散卷時,需要刪除多個副本或條形數的多個磚塊。例如,如果以復制計數2縮小分布式復制卷,則需要以2的倍數刪除磚塊(例如4, 6, 8)。另外,您要移除的磚塊必須來自相同的子卷(相同的副本或分散集)。

使用“開始選項”運行“移除磚塊”將自動觸發重新平衡操作,將數據從已移除的磚塊遷移到卷的其余部分。

(1)、移除brick

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 start

(2)、查看移除狀態

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 status

(3)、提交

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 commit

(4)、查看brick是否被移除

gluster volume info volume_name

(5)、Reblance(不要在業務繁忙的情況下進行)

gluster volume rebalance volume_name start

3、Replace brick

(1)、將節點添加到集群中

gluster peer probe node3

(2)、替換brick

gluster volume replace-brick volume_name node1:/data/br1 node5:/data/br1 commit force

(3)、查看卷的狀態

gluster volume info volume_name

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM