1、GlusterFS簡介html
PB級容量、高可用、讀寫性能、基於文件系統級別共享、分佈式、無metadata(元數據)的存儲方式。node
GlusterFS(GNU ClusterFile System)是一種全對稱的開源分佈式文件系統,所謂全對稱是指GlusterFS採用彈性哈希算法,沒有中心節點,全部節點所有平等。GlusterFS配置方便,穩定性好,可輕鬆達到PB級容量,數千個節點。mysql
2011年被紅帽收購,以後推出了基於GlusterFS的Red Hat Storage Server,增長了針對KVM的許多特性,可用做爲KVM存儲image存儲集羣,也能夠爲LB或HA提供存儲。linux
全對稱架構、支持多種卷類型(相似RAID0/1/5/10/01)、支持卷級別的壓縮、支持FUSE、支持NFS、支持SMB、支持Hadoop、支持OpenStack、與oVirt深度整合(對應RHEL紅帽企業級虛擬化)算法
birck:GlusterFS的基本元素,以節點服務器目錄形式展示;sql
volume:多個brick的邏輯集合;vim
metadata:元數據,用於描述文件、目錄等的信息;centos
self-heal:用於後臺運行檢測副本卷中文件和目錄的不一致性並解決這些不一致;服務器
FUSE:Filesystem Userspace是一個可加載的內核模塊,其支持非特權用戶建立本身的文件系統而不須要修改內核代碼經過在用戶空間運行文件系統的代碼經過FUSE代碼與內核進行橋接;網絡
Gluster Server:數據存儲服務器,即組成GlusterFS存儲集羣的節點;
Gluster Client:使用GlusterFS存儲服務的服務器,如KVM、OpenStack、LB RealServer、HA node。
GlusterFS是模塊化堆棧式的架構設計,如上圖所示。模塊稱爲Translator是GlusterFS提供的一種強大機制,藉助這種良好定義的接口能夠高效簡便地擴展文件系統的功能。
一、服務端與客戶端模塊接口是兼容的,同一個translator可同時在兩邊加載。
二、GlusterFS中全部的功能都是經過translator實現,如Cluster, Storage,Performance, Protocol, Features等。
三、重點是GlusterFSClient端。
操做系統: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
...
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse
客戶端只須要
glusterfs
glusterfs-fuse
分別啓動glusterd服務(並添加開機自啓動):
systemctl start glusterd
systemctl enable glusterd
建立集羣(任意節點上執行一下操做,向集羣中添加節點):
gluster peer probe node2
gluster peer probe node5
從集羣中去除節點(該節點中不能存在卷中正在使用的brick)
gluster peer detach node5
不須要添加本身,只須要添加其餘節點便可
查看集羣狀態:
gluster peer status
分佈式卷也成爲哈希卷,多個文件以文件爲單位在多個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
多個文件在多個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
將文件分紅條帶,存放在多個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
多個文件在多個節點哈希存儲,每一個文件再多分條帶在多個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數量分配
多個文件在多個節點上哈希存儲,在多個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數量分配
一個大文件存儲的時候劃分條帶,而且保存多份
應用場景:超大文件,而且對可靠性要求高
優勢:大文件存儲,可靠性高
缺點:犧牲空間寫性能差
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
多個大文件在多個節點哈希存儲,存儲是分紅條帶,而且保存多份
應用場景:大量大文件而且對可靠性要求高的場景
優勢:讀/寫/可靠性比較均勻
缺點:犧牲存儲空間,寫性能相對差
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
將卷掛載到本地的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
您能夠根據須要擴展卷,而集羣是聯機和可用的。例如,你可能想添加一個磚的分佈量,從而增長了分配和增長的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縮小分佈式複製卷,則須要以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
(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