您好,登錄后才能下訂單哦!
一、Gluster介紹
GlusterFS 是Scale-Out存儲解決方案Gluster的核心,它是一個開源的分布式文件系統,具有強大的橫向擴展能力,通過擴展能夠支持數PB存儲容量和處理數千客戶端。GlusterFS借助TCP/IP或InfiniBand RDMA(一種支持多并發鏈接的“轉換線纜”技術)網絡將物理分布的存儲資源聚集在一起,使用單一全局命名空間來管理數據。GlusterFS基于可堆疊的用戶空間設計,可為各種不同的數據負載提供優異的性能,工作原理圖:
GlusterFS支持運行在任何標準IP網絡上標準應用程序的標準客戶端,如圖2所示,用戶可以在全局統一的命名空間中使用NFS/CIFS等標準協議來訪問應用數據。GlusterFS使得用戶可擺脫原有的獨立、高成本的封閉存儲系統,能夠利用普通廉價的存儲設備來部署可集中管理、橫向擴展、虛擬化的存儲池,存儲容量可擴展至TB/PB級。
GlusterFS主要特征如下:
1、擴展性和高性能
GlusterFS利用雙重特性來提供幾TB至數PB的高擴展存儲解決方案。Scale-Out架構允許通過簡單地增加資源來提高存儲容量和性能,磁盤、計算和I/O資源都可以獨立增加,支持10GbE和InfiniBand等高速網絡互聯。Gluster彈性哈希(Elastic Hash)解除了GlusterFS對元數據服務器的需求,消除了單點故障和性能瓶頸,真正實現了并行化數據訪問。
2、高可用性
GlusterFS可以對文件進行自動復制,如鏡像或多次復制,從而確保數據總是可以訪問,甚至是在硬件故障的情況下也能正常訪問。自我修復功能能夠把數據恢復到正確的狀態,而且修復是以增量的方式在后臺執行,幾乎不會產生性能負載。GlusterFS沒有設計自己的私有數據文件格式,而是采用操作系統中主流標準的磁盤文件系統(如EXT3、ZFS)來存儲文件,因此數據可以使用各種標準工具進行復制和訪問。
3、全局統一命名空間
全局統一命名空間將磁盤和內存資源聚集成一個單一的虛擬存儲池,對上層用戶和應用屏蔽了底層的物理硬件。存儲資源可以根據需要在虛擬存儲池中進行彈性擴展, 比如擴容或收縮。當存儲虛擬機映像時,存儲的虛擬映像文件沒有數量限制,成千虛擬機均通過單一掛載點進行數據共享。虛擬機I/O可在命名空間內的所有服務器上自動進行負載均衡,消除了SAN環境中經常發生的訪問熱點和性能瓶頸問題。
4、彈性哈希算法
GlusterFS采用彈性哈希算法在存儲池中定位數據,而不是采用集中式或分布式元數據服務器索引。在其他的Scale-Out存儲系統中,元數據服務器通常會導致I/O性能瓶頸和單點故障問題。GlusterFS中,所有在Scale-Out存儲配置中的存儲系統都可以智能地定位任意數據分片,不需要查看索引或者向其他服務器查詢。這種設計機制完全并行化了數據訪問,實現了真正的線性性能擴展。
5、彈性卷管理
數 據儲存在邏輯卷中,邏輯卷可以從虛擬化的物理存儲池進行獨立邏輯劃分而得到。存儲服務器可以在線進行增加和移除,不會導致應用中斷。邏輯卷可以在所有配置 服務器中增長和縮減,可以在不同服務器遷移進行容量均衡,或者增加和移除系統,這些操作都可在線進行。文件系統配置更改也可以實時在線進行并應用,從而可 以適應工作負載條件變化或在線性能調優。
6、基于標準協議
Gluster存儲服務支持NFS, CIFS, HTTP, FTP以及Gluster原生協議,完全與POSIX標準兼容。現有應用程序不需要作任何修改或使用專用API,就可以對Gluster中的數據進行訪問。這在公有云環境中部署Gluster時非常有用,Gluster對云服務提供商專用API進行抽象,然后提供標準POSIX接口。
參考鏈接
http://www.tuicool.com/articles/AbE7Vr
GlusterFS術語解釋:
Brick:GFS中的存儲單元,通過是一個受信存儲池中的服務器的一個導出目錄。可以通過主機名和目錄名來標識,如’SERVER:EXPORT’
Client:掛載了GFS卷的設備
Extended Attributes:xattr是一個文件系統的特性,其支持用戶或程序關聯文件/目錄和元數據。
FUSE:FilesystemUserspace是一個可加載的內核模塊,其支持非特權用戶創建自己的文件系統而不需要修改內核代碼。通過在用戶空間運行文件系統的代碼通過FUSE代碼與內核進行橋接。
Geo-Replication
GFID:GFS卷中的每個文件或目錄都有一個唯一的128位的數據相關聯,其用于模擬inode
Namespace:每個Gluster卷都導出單個ns作為POSIX的掛載點
Node:一個擁有若干brick的設備
RDMA:遠程直接內存訪問,支持不通過雙方的OS進行直接內存訪問。
RRDNS:round robin DNS是一種通過DNS輪轉返回不同的設備以進行負載均衡的方法
Self-heal:用于后臺運行檢測復本卷中文件和目錄的不一致性并解決這些不一致。
Split-brain:腦裂
Translator:
Volfile:glusterfs進程的配置文件,通常位于/var/lib/glusterd/vols/volname
Volume:一組bricks的邏輯集合
二、安裝配置
1、集群架構
系統:Centos 6.7 x86_64 服務端: 192.168.159.128 192.168.159.129 客戶端: 192.168.159.130
2、在服務端安裝
首先安裝Gluster的yum源 #yum install centos-release-gluster38 -y 安裝Glusterfs #yum install glusterfs-server -y 安裝完成之后,查看版本 #glusterfs -V glusterfs 3.8.12 built on May 11 2017 18:24:27 Repository revision: git://git.gluster.com/glusterfs.git Copyright (c) 2006-2013 Red Hat, Inc. <http://www.redhat.com/> GlusterFS comes with ABSOLUTELY NO WARRANTY. It is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or the GNU General Public License, version 2 (GPLv2), in all cases as published by the Free Software Foundation. 啟動gluster #service glusterd start Starting glusterd:[ OK ] 設置開機自啟動 #chkconfig --add glusterd #chkconfig glusterd on 查看監聽的端口 #netstat -tunlp tcp 0 0 0.0.0.0:24007 0.0.0.0:* LISTEN 65940/glusterd
3、在客戶端安裝
首先安裝Gluster的yum源 #yum install centos-release-gluster38 -y 安裝客戶端glusterfs #yum install glusterfs glusterfs-fuse glusterfs-client glusterfs-libs -y
4、在服務端配置
說明:配置glusterfs集群一般都會在服務器掛載新的磁盤,分區格式化,將整塊磁盤掛載到一個目錄 專門用來存放數據,這樣在一定程度上提高了數據的可用性,當系統出現問題的時候,數據不丟失。 參考官網:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/ 配置glusterfs集群必須滿足以下條件: 1、最少要2個節點 2、一個網絡(節點之間互通) 2、節點需要有2個虛擬硬盤,一個是安裝os,一個是配置glusterfs集群,否則會報錯如下: volume create: gfs01: failed: The brick 192.168.159.128:/data/gluster is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want to override this behavior. 但是官網說要把磁盤格式化為xfs格式,我看有些朋友是格式化為ext4格式,然后加入/etc/fstab /dev/sdb1 /opt ext4 defaults 0 0 所以在2臺服務端添加新的磁盤,然后分區格式化,并掛載到/data目錄! #mkdir /data #fdisk /dev/sdb #分一個區,執行n , p ,1 然后回車2次,執行w #mkfs.ext4 /dev/sdb1 #mount /dev/sdb1 /data 添加到/etc/fstab /dev/sdb1 /data ext4 defaults 0 0 ##################################### 開始配置,在服務端哪一臺機器操作都可以: 添加節點: #gluster peer probe 192.168.159.128 #提示不需要添加本機 peer probe: success. Probe on localhost not needed #gluster peer probe 192.168.159.129 peer probe: success. 查看狀態: #gluster peer status Number of Peers: 1 Hostname: 192.168.159.129 Uuid: 1aed6e01-c497-4890-9447-c3bd548dd37f State: Peer in Cluster (Connected) 在另一臺服務端查看狀態 # gluster peer status Number of Peers: 1 Hostname: 192.168.159.128 Uuid: 851be337-84b2-460d-9a73-4eee6ad95e95 State: Peer in Cluster (Connected) ################################################## 創建gluster共享目錄(在128和129服務器上都需要創建共享目錄) #mkdir /data/gluster 創建名為gfs01的卷: #gluster volume create gfs01 replica 2 192.168.159.128:/data/gluster 192.168.159.129:/data/gluster volume create: gfs01: success: please start the volume to access data 啟動卷 #gluster volume start gfs01 volume start: gfs01: success 查看卷信息: #gluster volume info Volume Name: gfs01 Type: Replicate Volume ID: 1cdefebd-5831-4857-b1f9-f522fc868c60 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 192.168.159.128:/data/gluster Brick2: 192.168.159.129:/data/gluster Options Reconfigured: transport.address-family: inet performance.readdir-ahead: on nfs.disable: on 查看卷狀態: #gluster volume status Status of volume: gfs01 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 192.168.159.128:/data/gluster 49152 0 Y 2319 Brick 192.168.159.129:/data/gluster 49152 0 Y 4659 Self-heal Daemon on localhost N/A N/A Y 2339 Self-heal Daemon on 192.168.159.129 N/A N/A Y 4683 Task Status of Volume gfs01 ------------------------------------------------------------------------------ There are no active volume tasks 其他的用法 gluster volume stop gfs01 #停止卷 gluster volume delete gfs01 #刪除卷
5、在客戶端配置掛載
創建一個掛載點 #mkdir /opt/test_gluster #mount -t glusterfs 192.168.159.128:/gfs01 /opt/test_gluster/ [root@client ~]# ll /opt/test_gluster/ total 0 [root@client ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 822M 16G 5% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 27M 154M 15% /boot 192.168.159.128:/gfs01 4.8G 11M 4.6G 1% /opt/test_gluster 注意:128和129是一個集群,掛載哪一臺都可以,如果客戶端比較多注意負載即可。 加入開機自動掛載 #cat /etc/rc.local mount -t glusterfs 192.168.159.128:/gfs01 /opt/test_gluster/
6、測試文件
在客戶端130服務器創建一個測試文件testfile.txt,寫入內容并用md5sum測試其哈希值 #ll /opt/test_gluster/ total 3 -rw-r--r-- 1 root root 2262 Jun 1 00:10 testfile.txt [root@client test_gluster]# md5sum testfile.txt 6263c0489d0567985c28d7692bde624c testfile.txt ############################################################ 到2臺服務端查看情況 在128上 [root@server1 ~]# ll /data/gluster/ total 8 -rw-r--r-- 2 root root 2262 Jun 1 00:10 testfile.txt [root@server1 ~]# md5sum /data/gluster/testfile.txt 6263c0489d0567985c28d7692bde624c /data/gluster/testfile.txt 在129上 [root@server2 ~]# ll /data/gluster/ total 8 -rw-r--r-- 2 root root 2262 Jun 1 00:10 testfile.txt [root@server2 ~]# md5sum /data/gluster/testfile.txt 6263c0489d0567985c28d7692bde624c /data/gluster/testfile.txt 可以看到md5sum哈希值是一致的。
7、測試集群數據一致性
之所以使用集群一個是可以分攤負載,一個是可以實現高可用,下面就測試下: 直接將129這臺服務端服務器關機!!! 然后在128查看集群狀態,如下: [root@server1 ~]#gluster volume status Status of volume: gfs01 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 192.168.159.128:/data/gluster 49152 0 Y 2319 Self-heal Daemon on localhost N/A N/A Y 2589 Task Status of Volume gfs01 ------------------------------------------------------------------------------ There are no active volume tasks 可以看到129集群已經不存在了! ######################################################################## 此時刪除客戶端130的testfile.txt文件 #rm -f /opt/test_gluster/testfile.txt 然后會發現服務端128/data/gluster目錄下,testfile.txt文件也消失了。 這個時候重新啟動129服務器 #service glusterd status #因為配置了開機自啟動,所以是啟動的。 glusterd (pid 1368) is running... [root@server2 ~]# ll /data/gluster/ #此時再查看文件是存在的,因為在刪除客戶端文件之前次服務器關機了! total 8 -rw-r--r-- 2 root root 2262 Jun 1 00:10 testfile.txt [root@server2 ~]#md5sum /data/gluster/testfile.txt 6263c0489d0567985c28d7692bde624c /data/gluster/testfile.txt #md5sum驗證哈希值也是一樣。 過了大概10秒左右,在129服務器的testfile.txt文件也消失了,說明gluster集群是保持數據一致性的!
說明:glusterfs集群,不能在服務端寫入數據,要在客戶端寫入數據,會自動同步到服務端!
三、gluster集群常用的一些命令
#刪除卷 gluster volume stop gfs01 gluster volume delete gfs01 #將機器移出集群 gluster peer detach 192.168.1.100 #只允許172.28.0.0的網絡訪問glusterfs gluster volume set gfs01 auth.allow 172.28.26.* gluster volume set gfs01 auth.allow 192.168.222.1,192.168.*.* #加入新的機器并添加到卷里(由于副本數設置為2,至少要添加2(4、6、8..)臺機器) gluster peer probe 192.168.222.134 gluster peer probe 192.168.222.135 #新加卷 gluster volume add-brick gfs01 repl 2 192.168.222.134:/data/gluster 192.168.222.135:/data/gluster force #刪除卷 gluster volume remove-brick gfs01 repl 2 192.168.222.134:/opt/gfs 192.168.222.135:/opt/gfs start gluster volume remove-brick gfs01 repl 2 192.168.222.134:/opt/gfs 192.168.222.135:/opt/gfs status gluster volume remove-brick gfs01 repl 2 192.168.222.134:/opt/gfs 192.168.222.135:/opt/gfs commit 注意:擴展或收縮卷時,也要按照卷的類型,加入或減少的brick個數必須滿足相應的要求。 #當對卷進行了擴展或收縮后,需要對卷的數據進行重新均衡。 gluster volume rebalance mamm-volume start|stop|status ########################################################### 遷移卷---主要完成數據在卷之間的在線遷移 #啟動遷移過程 gluster volume replace-brick gfs01 192.168.222.134:/opt/gfs 192.168.222.134:/opt/test start force #查看遷移狀態 gluster volume replace-brick gfs01 192.168.222.134:/opt/gfs 192.168.222.134:/opt/test status #遷移完成后提交完成 gluster volume replace-brick gfs01 192.168.222.134:/opt/gfs 192.168.222.134:/opt/test commit #機器出現故障,執行強制提交 gluster volume replace-brick gfs01 192.168.222.134:/opt/gfs 192.168.222.134:/opt/test commit force ########################################################### 觸發副本自愈 gluster volume heal mamm-volume #只修復有問題的文件 gluster volume heal mamm-volume full #修復所有文件 gluster volume heal mamm-volume info #查看自愈詳情 ##################################################### data-self-heal, metadata-self-heal and entry-self-heal 啟用或禁用文件內容、文件元數據和目錄項的自我修復功能,默認情況下三個全部是“on”。 #將其中的一個設置為off的范例: gluster volume set gfs01 entry-self-heal off 四、glusterfs的缺點分析 參考學習連接:https://www.cnblogs.com/langren1992/p/5316328.html 不足之處,請多多指出!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。