1. 程式人生 > >centos7下glusterFs 分散式檔案系統環境搭建

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 的磁碟

至此。glusterfs的分散式環境搭建完成