Linux:搭建GlusterFS文件系統


GlusterFS簡介

官網地址:https://www.gluster.org

GlusterFS 是近年興起的一個高性能開源分布式文件系統,其目標是全局命名空間、分布式前端的高性能文件系統,目前已被 RedHat 看中,GlusterFS 具有高擴展、高可性、高性能、可橫向擴展等特點,並且 GlusterFS 沒有元數據服務器的設計,使其沒有單點故障問題。

重要概念

下面是關於GlusterFS的一些重要概念:

  • birck:最基本的存儲單元,表示為trusted storage pool中輸出的目錄,供客戶端掛載用。
  • volume:一個卷。在邏輯上由N個bricks組成。
  • metadata:元數據,用於描述文件、目錄等的信息;
  • self-heal:用於后台運行檢測副本卷中文件和目錄的不一致性並解決這些不一致;
  • FUSE:Unix-like OS上的可動態加載的模塊,允許用戶不用修改內核即可創建自己的文件系統。
  • Gluster Server:數據存儲服務器,即組成GlusterFS存儲集群的節點;
  • Gluster Client:使用GlusterFS存儲服務的服務器,如KVM、OpenStack、LB RealServer、HA node。
  • POSIX: 一個標准,GlusterFS兼容。

總體架構

image-20211009145256828

GlusterFS 的卷類型

為了滿足不同應用對高性能、高可用的需求,GlusterFS 支持多種卷,詳細信息可見官方文檔:https://docs.gluster.org/en/latest/Administrator-Guide/Setting-Up-Volumes/#creating-dispersed-volumes。

下面簡單介紹幾種。

distribute volume分布式卷(類似raid 0但是數據不分片)默認

基於Hash算法將文件分布到所有的brick server上,只是單純的擴大了磁盤空間,不具備冗余能力,數據丟了就丟了,由於distribute volume使用本地文件系統,因此存取效率並沒有提高,相反會應為中間又加上了一層網絡傳輸,效率反而降低了.另外本地存儲設備的容量有限制,因此支持超大型文件會有一定的難度。

image-20211009150630917

Replicated Volumes 復制卷(類似Raid 1)

類似於Raid1,文件同步的復制到多個brick上,具有容錯能力,寫性能下降,讀性能提升(待測),Replicated模式,也稱作AFR(Auto File Replicated),同一個文件在多個鏡像存儲節點上保存多份,每個節點上都具有相應的目錄結構和文件。replica volume是容器存儲中較為推崇的一種。

image-20211009150823616

Distributed Replicated Volumes分布式復制卷

Brick server是鏡像數的倍數,先組合分布式在組合成復制卷,也是最少需要4台服務器,這個多少組成分布和多少個副本數是自己創建的時候定義的。

image-20211009151131308

GlusterFS客戶端常用命令

命令 功能
gluster peer probe 添加節點
gluster peer detach 移除節點
gluster volume create 創建卷
gluster volume start $VOLUME_NAME 啟動卷
gluster volume stop $VOLUME_NAME 停止卷
gluster volume delete $VOlUME_NAME 刪除卷
gluster volume quota enable 開啟卷配額
gluster volume quota disable 關閉卷配額
gluster volume quota limitusage 設定卷配額

搭建

本文使用復制卷作為存儲卷。如需要其他存儲卷類型,請參考官方文檔!!

環境准備

我這里准備三台Centos7服務器。

ip hostname 作用
192.168.1.100 node-100 Server
192.168.1.101 node-101 Server
192.168.1.102 node-102 Client

關閉防火牆(三台服務器都要執行):

systemctl stop firewalld
systemctl disable firewalld

設置主機名:

hostnamectl set-hostname node-100  #192.168.1.100主機執行
hostnamectl set-hostname node-101  #192.168.1.101主機執行
hostnamectl set-hostname node-102  #192.168.1.102主機執行

配置/etc/hosts:

vi /etc/hosts

#文件末尾添加如下內容
192.168.1.100 node-100
192.168.1.101 node-101
192.168.1.102 node-102

保存退出后,確保三台服務器互相ping hostname,都能ping通。

image-20211009151841935

Gluster Server端搭建

node-100和node-101服務器執行:

#軟件安裝
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse

server端啟動gluster服務:

systemctl start glusterd
systemctl enable glusterd
systemctl enable glusterd

image-20211009152127046

創建集群:

我這里在node-100上執行,把node-101添加到集群中:

gluster peer probe node-101

這里如果報錯:peer probe: failed: Probe returned with Transport endpoint is not connected

檢查防火牆有沒有關;能不能ping通hostname

image-20211009152344183

如果想從集群中去除節點,可以執行如下命令,但該節點中不能存在卷中正在使用的brick。

gluster peer detach 節點名稱

查看集群狀態:

gluster peer status

image-20211009152435822

創建復制卷,命令格式如下:

gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1
  • volumn_name:卷名
  • node1:節點名
  • replica:文件保存的份數
  • /data/br1:可以理解為節點上的目錄,這個目錄最好是一個單獨的分區(分區類型最好為邏輯卷的方式,這樣易於操作系統級別的存儲空間擴展),默認不能使用root分區進行創建卷,如需要root分區創建卷添加force參數

作為示例,我這里使用/opt/brick目錄做為單獨分區的掛載目錄。

#兩台服務器執行
mkdir -p /opt/brick

創建2副本的復制卷:

gluster volume create app-data replica 2 node-100:/opt/brick node-101:/opt/brick force

image-20211009152931931

列出卷:

gluster volume list

image-20211009153003478

啟動這個卷:

gluster volume start app-data

image-20211009153036549

查看卷信息:

gluster volume info app-data

image-20211009153109389

打開GlusterFs磁盤限額,此處限制大小是10G,也可以不用設置

gluster volume quota app-data enable
gluster volume quota app-data limit-usage / 10GB

查看這個卷的狀態:

gluster volume status

image-20211009153235001

Gluster Client端搭建

Glusterfs client端有三種客戶端使用方式:Native mountNFSSamba

此處使用Native mount掛載gluster volume到node-100和node-101節點的本地目錄/gfs-share下:

node-102服務器執行:

yum install glusterfs glusterfs-fuse attr -y
mkdir -p /gfs-share
mount -t glusterfs node-100:app-data /gfs-share

查看掛載情況:

df -h

image-20211009153613030

設置開機自動掛載:

vi /etc/fstab

#增加如下內容
node-100:/app-data  /gfs-share glusterfs  defaults 0 0

測試

Gluster Client端執行:

cd /gfs-share
touch file{1..9}.txt

創建了9個文件:

image-20211009153855145

去服務端查看:

ll /opt/brick/

image-20211009153942244

有幾點說明

  • 服務端也可以將本地目錄掛載到gluster的存儲卷上。
  • 不能直接對birck修改,client端不會生效
  • 任意client端修改,其他client端和brick會自動修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM