我們生活在一個數據增長不可預測的世界中,我們需要以有效的方式存儲這些數據,無論它是結構化還是非結構化的。分布式計算系統相對於集中式計算系統具有很多優勢。在這裡,數據以分布式方式存儲,使用多個節點作為伺服器。

在分佈式文件系統中,不再需要元數據服務器的概念。在分佈式文件系統中,它提供了對不同伺服器之間分開的所有文件的共同視點。存儲伺服器上的文件/目錄可以通常方式訪問。
例如,文件/目錄的權限可以按照常規系統權限模型進行設置,即擁有者、群組和其他人。對文件系統的訪問基本上取決於特定協議設計在同一運行上的方式。
什麼是GlusterFS?
GlusterFS是一個定義為在用戶空間中使用的分布式文件系統,即用戶空間文件系統(FUSE)。這是一個基於軟體的文件系統,擁有其靈活性特徵。
查看下面的圖,它以分層模型形式具體表示了GlusterFS的位置。默認情況下,GlusterFS將使用TCP協議。

GlusterFS的優勢
- 創新 – 它消除了元數據,可以顯著提高性能,幫助我們統一數據和對象。
- 彈性 – 適應數據大小的增長和減少。
- 線性擴展 – 可存取拍字節甚至更多數據。
- 簡單易用 – 容易管理,並且在用戶空間運行時獨立於內核。
Gluster在其他分佈式文件系統中的優勢是什麼?
- 可擴展 – 缺乏元數據服務器可提供更快的文件系統。
- 價格實惠 – 部署在商品硬件上。
- 靈活 – 正如我之前所說,GlusterFS是一種僅軟件的文件系統。這裡的數據存儲在原生文件系統上,如ext4,xfs等。
- 開源 – 目前,GlusterFS由紅帽公司維護,這是一家價值數十億美元的開源公司,作為紅帽存儲的一部分。
GlusterFS中的存儲概念
- 構建 – 構建基本上是指任何旨在在受信任的存儲池之間共享的目錄。
- 受信任的存儲池 – 這是一組基於設計的協議的共享文件/目錄集合。
- 塊存儲 – 這些設備通過以塊的形式在系統之間移動數據。
- 集群 – 在紅帽存儲中,集群和受信任的存儲池都表示基於定義的協議的存儲服務器之間的協作。
- 分散式文件系統 – 一種文件系統,其中數據分佈在不同節點上,用戶可以訪問該文件而不知道文件的實際位置。用戶沒有遠程訪問的感覺。
- FUSE – 它是一個可加載的內核模塊,允許用戶在不涉及任何內核代碼的情況下創建文件系統。
- glusterd – glusterd是GlusterFS管理守護程序,是文件系統的支柱,在服務器處於活動狀態時將一直運行。
- POSIX – 可移植操作系統介面(POSIX)是IEEE定義的一系列標準,作為Unix變種之間兼容性的解決方案,以應用程序可編程接口(API)的形式呈現。
- RAID – 獨立磁盤冗餘陣列(RAID)是通過冗餘提高存儲可靠性的技術。
- 子卷 – 在至少由一個轉換器處理後的一塊磁塊。
- 轉換器 – 轉換器是執行由用戶從掛載點啟動的基本操作的代碼塊。它連接一個或多個子卷。
- 卷 – 卷是磚的邏輯集合。所有操作都是基於用戶創建的不同類型的卷進行的。
不同類型的卷
顯示了不同類型的卷和這些基本卷類型之間的組合的表示。



分散複製卷
分散複製卷的表示。

在RHEL/CentOS和Fedora中安裝GlusterFS
在這篇文章中,我們將首次安裝並配置GlusterFS,以實現存儲的高可用性。為此,我們將使用兩台伺服器來創建卷並在它們之間複製數據。
步驟:1至少有兩個節點
- 在兩個節點上安裝CentOS 6.5(或任何其他作業系統)。
- 將主機名設置為“server1”和“server2“。
- A working network connection.
- 在兩個節點上將存儲磁碟命名為“/data/brick“。
步驟2:啟用EPEL和GlusterFS存儲庫
在兩個伺服器上安裝GlusterFS之前,我們需要啟用EPEL和GlusterFS存儲庫以滿足外部依賴性。使用以下鏈接在兩個系統下安裝並啟用epel存儲庫。
接下來,我們需要在兩個伺服器上啟用GlusterFS存儲庫。
# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo
步驟3:安裝GlusterFS
在兩個伺服器上安裝軟體。
# yum install glusterfs-server
啟動GlusterFS管理守護程式。
# service glusterd start
現在檢查守護程式的狀態。
# service glusterd status
範例輸出
service glusterd start service glusterd status glusterd.service - LSB: glusterfs server Loaded: loaded (/etc/rc.d/init.d/glusterd) Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/glusterd.service ├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid ├ 19304 /usr/sbin/glusterfsd --xlator-option georep-server.listen-port=24009 -s localhost... └ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/...
步驟4:配置SELinux和iptables
打開‘/etc/sysconfig/selinux‘並在兩個伺服器上將SELinux更改為“permissive”或“disabled”模式。保存並關閉文件。
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
接下來,在兩個節點中刷新iptables或通過iptables允許訪問另一節點。
# iptables -F
步驟5:配置可信池
在‘Server1‘上運行以下命令。
gluster peer probe server2
在‘Server2‘上運行以下命令。
gluster peer probe server1
注意:一旦連接了這個池,只有受信任的使用者才能將新的伺服器納入這個池。
步驟6:設置GlusterFS卷
在server1和server2上。
# mkdir /data/brick/gv0
在任一單個伺服器上創建一個卷並啟動該卷。這裡,我選擇了‘Server1‘。
# gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0 # gluster volume start gv0
接下來,確認卷的狀態。
# gluster volume info
注意:如果卷未啟動,錯誤消息將記錄在‘/var/log/glusterfs‘中的一個或兩個伺服器上。
步驟7:驗證GlusterFS卷
將卷掛載到‘/mnt‘目錄下。
# mount -t glusterfs server1:/gv0 /mnt
現在您可以在掛載點上創建、編輯文件,作為檔案系統的單一視圖。
GlusterFS的功能
- 自我修復 – 如果複製區中的任何磚塊已關閉且使用者修改了其他磚塊中的文件,則自動自我修復守護程序將在下次啟動磚塊時立即生效,並將在關閉期間發生的交易進行同步。
- 重新平衡 – 如果我們將新的磚塊添加到現有卷中(之前存放大量數據),我們可以執行重新平衡操作以在所有磚塊中(包括新添加的磚塊)分佈數據。
- 地理複製 – 它為災難恢復提供數據備份。這裡涉及主卷和從卷的概念。因此,如果主卷關閉,整個數據可以通過從卷訪問。此功能用於在地理位置分隔的伺服器之間同步數據。初始化地理複製會話需要一系列的gluster指令。
這裡是顯示地理複製模塊的截圖。

參考連結
目前就這些!敬請關注我的即將推出的關於功能如自我修復和重新平衡、地理複製等的詳細描述。