centos7下glusterFs 分散式檔案系統環境搭建
1、GlusterFS簡介:
GlusterFS是一個開源的分散式檔案系統 相關術語如下:
- Brick:GFS中的儲存單元,通過是一個受信儲存池中的伺服器的一個匯出目錄。可以通過主機名和目錄名來標識,如’SERVER:EXPORT’
- Client: 掛載了GFS卷的裝置
- Extended Attributes:xattr是一個檔案系統的特性,其支援使用者或程式關聯檔案/目錄和元資料。
- FUSE:Filesystem Userspace是一個可載入的核心模組,其支援非特權使用者建立自己的檔案系統而不需要修改核心程式碼。通過在使用者空-
間執行檔案系統的程式碼通過FUSE程式碼與核心進行橋接。
- GFID:GFS卷中的每個檔案或目錄都有一個唯一的128位的資料相關聯,其用於模擬inode
- Namespace:每個Gluster卷都匯出單個ns作為POSIX的掛載點
- Node:一個擁有若干brick的裝置
- RDMA:遠端直接記憶體訪問,支援不通過雙方的OS進行直接記憶體訪問。
- RRDNS:round robin DNS是一種通過DNS輪轉返回不同的裝置以進行負載均衡的方法
- Self-heal:用於後臺執行檢測複本卷中檔案和目錄的不一致性並解決這些不一致。
- Split-brain:腦裂
- Volfile:glusterfs程序的配置檔案,通常位於/var/lib/glusterd/vols/volname
- Volume:一組bricks的邏輯集合
2、準備工作:
用三個節點搭建一個glusterfs叢集,一個節點作為客戶端使用
glusterfs伺服器節點: 172.29.41.229 tmaster centos7 172.29.41.231 tslave1 centos7 172.29.41.232 tslave2 centos7 client節點: 172.29.41.163 phn centos7
修改每臺機器的hostname(vi /etc/hostname)和hosts檔案(vi /etc/hosts),新增主機名到ip的對映
最終的hosts檔案應該如下圖所示:
使用ping命令檢驗各個節點是否能夠ping通
配置yum源為阿里源(在每個節點中都執行)
//下載阿里原始檔
wget http://mirrors.aliyun.com/repo/Centos-7.repo
//備份並替換系統的repo檔案
cp Centos-7.repo /etc/yum.repo.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
//執行yum源更新命令
yum clean all
yum makecache
3、安裝glusterfs
在tmaster、tslave1、tslave2節點安裝glusterfs
yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
啟動 glusterFS (每個節點上都執行)
systemctl start glusterd.service
systemctl enable glusterd.service
關閉每臺機器上的防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
在 tmaster節點上配置,將兩個slave節點加入到gluster叢集中。
gluster peer probe tmaster
gluster peer probe tslave1
gluster peer probe tslave2
檢視叢集狀態:
gluster peer status
建立資料儲存目錄(在三個節點上都執行):
mkdir -p /opt/gluster/data
檢視volume 狀態:
gluster volume info
由於還沒有建立volume所以顯示的是暫無資訊
建立GlusterFS磁碟gtest:
gluster volume create models replica 3 tmaster:/opt/gluster/data tslave1:/opt/gluster/data tslave2:/opt/gluster/data force
replica 3表明儲存3個備份,後面指定伺服器的儲存目錄
再次檢視volume資訊
gluster volume info
啟動 models
gluster volume start models
gluster 效能調優:
開啟 指定 volume 的配額: (models 為 volume 名稱)
gluster volume quota models enable
限制 models 中 / (既總目錄) 最大使用 80GB 空間
gluster volume quota models limit-usage / 80GB
設定 cache 大小(此處要根據實際情況,如果設定太大可能導致後面客戶端掛載失敗)
gluster volume set models performance.cache-size 512MB
開啟 非同步,後臺操作
gluster volume set models performance.flush-behind on
設定 io 執行緒 32
gluster volume set models performance.io-thread-count 32
設定 回寫 (寫資料時間,先寫入快取內,再寫入硬碟)
gluster volume set models performance.write-behind on
調優之後的volume資訊
gluster volume info
部署GlusterFS客戶端並mount GlusterFS檔案系統(在客戶端節點phn上執行)
yum install -y glusterfs glusterfs-fuse
建立掛載點:
mkdir -p /opt/gfsmount
mount命令:mount -t glusterfs tmaster:models /opt/gfsmount/
df 命令檢查:df -h
往該目錄寫入檔案,隨後檢視gluster伺服器的儲存情況
time dd if=/dev/zero of=/opt/gfsmount/hello bs=100M count=1
檢視phn機器上/opt/gfsmount 目錄
檢視tmaster機器上/opt/gluster/data目錄
檢視tslave1機器上/opt/gluster/data目錄
檢視tslave2機器上/opt/gluster/data目錄
可以看到gluster伺服器的每個節點上都有備份,符合之前設定的3個備份的原則
4、其他命令
檢視GlusterFS中所有的volume:
gluster volume list
刪除GlusterFS磁碟:
gluster volume stop models
//停止名字為 models 的磁碟
gluster volume delete models
//刪除名字為 models 的磁碟