GlusterFS 以去中心化、線性擴展、POSIX 兼容著稱,適合日誌聚合、媒體存儲、虛擬機鏡像等海量非結構化數據場景。本文以 CentOS 6.4 為例,完整記錄 4 節點複製卷部署流程,含客戶端掛載、性能調優與運維命令。

| 角色 | 主機名 | IP | 數據磁盤 | 備註 |
|---|---|---|---|---|
| Server/Client | sc2-log1 | 10.0.1.11 | /dev/sdb (100G) | 管理節點 |
| Server | sc2-log2 | 10.0.1.12 | /dev/sdb (100G) | |
| Server | sc2-log3 | 10.0.1.13 | /dev/sdb (100G) | |
| Server | sc2-log4 | 10.0.1.14 | /dev/sdb (100G) | |
| Client | sc2-ads15 | 10.0.1.15 | - | 應用節點 |
# 1. 配置官方 YUM 源
wget -P /etc/yum.repos.d https://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
# 2. 安裝核心包 (客戶端需 fuse)
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
# 3. 啟動並設開機自啟
service glusterd start
chkconfig glusterd on
# 4. 防火牆放行 (24007-24008, 49152+)
iptables -I INPUT -p tcp -m multiport --dports 24007:24008,49152:49251 -j ACCEPT
service iptables save
# 在管理節點 (sc2-log1) 操作
gluster peer probe sc2-log2
gluster peer probe sc2-log3
gluster peer probe sc2-log4
# 驗證 peer 狀態
gluster peer status
# 輸出應顯示 3 個 Peer in Cluster (Connected)
# 1. 所有節點創建磚目錄
mkdir -p /data/brick/gv0
# 2. 創建 3 副本卷 (replica 3 需 3 的倍數節點,此處 4 節點取 3 副本)
gluster volume create gv0 replica 3 transport tcp \
sc2-log1:/data/brick/gv0 \
sc2-log2:/data/brick/gv0 \
sc2-log3:/data/brick/gv0 \
force
# 3. 啟動卷
gluster volume start gv0
# 4. 驗證卷信息
gluster volume info gv0
# 安裝客戶端
yum install -y glusterfs-fuse
# 掛載
mount -t glusterfs sc2-log1:/gv0 /mnt/glusterfs
# 寫入測試
echo "test $(date)" > /mnt/glusterfs/test.txt
cat /mnt/glusterfs/test.txt
# 永久掛載 /etc/fstab
sc2-log1:/gv0 /mnt/glusterfs glusterfs defaults,_netdev,backupvolfile-server=sc2-log2 0 0
# 服務端啟用 NFS
gluster volume set gv0 nfs.disable off
# 客戶端
mount -t nfs sc2-log1:/gv0 /mnt/glusterfs_nfs
| 參數 | 建議值 | 說明 |
|---|---|---|
| performance.cache-size | 128MB | 客戶端讀緩存 |
| performance.write-behind-window-size | 1024KB | 寫緩存窗口 |
| performance.io-thread-count | 16 | IO 線程數 |
| network.ping-timeout | 10 | 節點心跳超時(秒) |
| cluster.self-heal-daemon | on | 自動修復 |
| cluster.quorum-type | auto | 防腦裂 |
# 批量設置
gluster volume set gv0 performance.cache-size 128MB
gluster volume set gv0 performance.write-behind-window-size 1024KB
gluster volume set gv0 performance.io-thread-count 16
gluster volume set gv0 network.ping-timeout 10
gluster volume set gv0 cluster.self-heal-daemon on
# 卷狀態
gluster volume status gv0
gluster volume status gv0 detail
# 節點狀態
gluster peer status
# 磚狀態
gluster volume heal gv0 info
gluster volume heal gv0 full
# 擴容:添加節點並擴容卷
gluster peer probe new-node
gluster volume add-brick gv0 replica 3 new-node:/data/brick/gv0
gluster volume rebalance gv0 start
# 縮容:移除磚
gluster volume remove-brick gv0 replica 2 sc2-log4:/data/brick/gv0 start
gluster volume remove-brick gv0 replica 2 sc2-log4:/data/brick/gv0 status
gluster volume remove-brick gv0 replica 2 sc2-log4:/data/brick/gv0 commit
# 配額管理
gluster volume quota gv0 enable
gluster volume quota gv0 limit-usage /project_a 100GB
GlusterFS 部署核心流程:**安裝 → Peer Probe → 創建磚目錄 → 創建卷 (replica N) → 啟動卷 → 客戶端掛載**。《關鍵細節:防火牆放行 24007/49152+、_netdev 掛載參數、backupvolfile-server 多路徑、自動修復啟用》。對於 CentOS 6 這類 EOL 系統,**強烈建議遷移至 Rocky Linux 9 / Ubuntu 22.04 + GlusterFS 10+**,獲得擬碼碼、更好的擴展性與安全更新。