學習GlusterFS(一)


一、概述

1、GlusterFS是集群式NAS存儲系統,分布式文件系統(POSIX兼容),Tcp/Ip方式互聯的一個並行的網絡文件系統,通過原生 GlusterFS 協議訪問數據,也可以通過 NFS/CIFS 協議訪問數據,沒有元數據服務器,實現整個系統的性能、可靠性和穩定性。

2、GlusterFS 常見術語

3、GlusterFS卷類型

基本卷:

(1)  distribute volume:分布式卷

(2)  stripe volume:條帶卷

(3)  replica volume:復制卷

復合卷:

(4)  distribute stripe volume:分布式條帶卷

(5)  distribute replica volume:分布式復制卷

(6) stripe replica volume:條帶復制卷

(7) distribute stripe replicavolume:分布式條帶復制卷

基本卷:

哈希卷(distributed volume,文件通過hash算法在所有brick上分布,文件級raid0,不具有容錯能力);

wKioL1fSIDKRNDlSAABjmzAmCOU103.jpg

復制卷(replicated volume,生產常用,文件同步復制到多個brick上,文件級raid1,具有容錯能力,w性能下降r性能提升);

wKiom1fSIT_gl93yAABfm1QA8uw032.jpg

條帶卷(striped volume,不建議使用,單個文件分布到多個brick上,支持超大文件,類似raid0,rr方式round-robin,通常用於HPC(high performance compute)中的超大文件(>10G的單個文件)及高並發環境(多人同時訪問同一個文件));

wKioL1fSIVHD7nKbAABhvP0fQvM575.jpg

復合卷:

哈希復制卷(distributed replicated volume,生產常用,同時具有哈希卷和復制卷的特點);

wKiom1fSIV_QhvaBAAB9HyGzJ2U126.jpg

哈希條帶卷(distributed striped volume);

wKiom1fSIXTAnw12AAB8siauzu4848.jpg

復制條帶卷(replicated striped vlume);

wKioL1fSIY2iFsV3AAB4B03V1cg556.jpg

哈希復制條帶卷(distributed replicated striped volume);

wKiom1fSIZ-zTyj6AACZg3riPyE346.jpg

 4、開源並行FS比較(glusterfs VS moosefs VS lustre VS ceph):

比較維度

Glusterfs

Moosefs

Lustre

Ceph

成熟度

2005年發布第一個GA版1.2.3,2013年GA版3.3.2,具有成熟的系統架構和完整的工程代碼

2008年發布第一個開源版本v1.5,13年發布GA版v1.6.27,穩定,比較成熟的開源DFS

2003發布第一個版本lustre1.0,2013年發布v2.4.0,相當成熟,在HPC領域占有絕大比例

2013年發布v0.71,並已添加到linux kernel中作實驗內核,目前不成熟有較多bug,更新穩定都是實驗版

穩定性

較穩定,無重大bug,已有較多組織或機構應用於生產環境

較穩定,無重大bug

很穩定,在HPC領域應用很多

核心組件RADOS較穩定,每3個月更新一次穩定版,有部分企業用於生產環境

復雜度

簡單,無元數據服務,用戶空間實現,架構清晰,xlator樹形結構

簡單,用戶空間實現,代碼規模較小,高度模塊化

復雜度較高,依賴內核實現

較復雜,c++實現,功能較多

高性能

解除元數據瓶頸,並行化數據訪問

元數據單點瓶頸

高性能,HPC領域表現卓越

數據分布均衡,並行化度高

擴展性

彈性hash代替元數據服務,線性擴展,可輕松擴展到數百PB量級,支持動態擴容

可增加存儲server,不能增加MDS

高擴展性,容量可達數百PB,可在不打斷任何操作的情況下,通過增加新的OSS來實現動態擴展

高擴展性,支持10-1000台server,支持TB到PB的擴展,當組件發生變化時(添加或刪除),自動進行數據的重分布

可用性

多元數據服務設計,數據分布提供三種方式的分割:AFR、DHT、stripe,支持自動復制和自動修復

元數據+日志服務器,保障元數據server,運行時元數據放內存,可設置副本

元數據集群,可部署主備切換工作方式,無副本設計,OSS之間可利用共享存儲實現自動故障恢復

元數據集群,沒有單點故障,多數據副本,自動管理、自動修復,monitor監控集群中所有節點狀態,且可有多個monitor保證可靠性

可管理性

部署簡單,易於管理和維護,使用底層FS,ext3/zfs,客戶端負載增加;提供管理工具,如卷的擴容、數據LB、目錄配額及相關監控等

部署簡單,提供web gui監控界面,元數據恢復,文件恢復,回收站功能,快照

部署復雜,需升級kernel等,提供管理工具,如設置目錄stripe

部署較復雜,提供工具對集群進行監控管理,包括集群狀態,各組件狀態等

研發成本

用戶空間實現,模塊化堆棧式架構

用戶空間實現,小規模

高,內核空間實現,且代碼規模大

較高,代碼規模大,功能多

適用性

適用以文件為對象的存儲體系,適合大文件存儲

小規模集群,元數據瓶頸,內存消耗大

大文件,HPC領域

 

NAS兼容

支持NFS、CIFS、HTTP、FTP、gluster原生協議,與POSIX標准兼容

支持CIFS、NFS,支持標准POSIX接口

支持CIFS、NFS,支持標准POSIX接口

支持CIFS、NFS,支持標准POSIX接口

采用指數

☆☆☆☆

☆☆☆

☆☆☆

☆☆

二、配置安裝

1、環境

192.168.1.11     gluster-1-1

192.168.1.12     gluster-1-2

192.168.1.13     gluster-1-3

注意:hosts文件添加解析,時間同步,關閉iptables和SELinux,三台各加10G硬盤做存儲數據。

2、下載gluster相關軟件包

vim /etc/yum.repos.d/gfs.repo
http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64
依賴包:rpcbind libaio lvm2-devel 服務端:yum install glusterfs-server glusterfs glusterfs-cli glusterfs-fuse glusterfs-libs glusterfs-api 客戶端:yum install glusterfs glusterfs-fuse glusterfs-libs
磁盤分區:mkfs.ext4 -L /brick1 /dev/sdb 分區、標簽、格式化

3、部署

1)創建目錄並啟動服務
mkdir /brick1
/etc/init.d/glusterd start

2)添加gluster節點服務器
gluster peer probe gluster-1-2
gluster peer probe gluster-1-3

3)查看節點服務器
gluster  peer  status

4、創建卷

1)創建testvol卷(默認是哈希卷)
gluster volume create testvol gluster-1-1:/brick1/b1 哈希卷
gluster volume create gs2 replica 2 gluster-1-1:/brick1/b1  gluster-1-2:/brick1/b2 復制卷
2)啟動卷 gluster volume start testvol 3)查看卷 gluster volume info

4)刪除卷
gluster volume remove-brick testvol gluster-1-2:/brick1/b2

5、客戶端測試

1)客戶端掛載卷
mount -t glusterfs gluster-1-1:/testvol /mnt

2)測試
df -h   mount    等
touch  {1..9}.txt
rm 4.txt

6、節點操作

1)刪除節點服務器
gluster peer detach gluster-1-2 不能刪除自己

2)添加節點服務器
gluster peer probe gluster-1-2
gluster volume add-brick testvol gluster-1-2:/brick1/b2 (b2下面不能有文件)

3)重新LB,要在閑時做,分兩步,先fix-layout將hash算法重分配,再將數據重分配
gluster volume rebalance testvol fix-layout start
gluster volume rebalance testvol start

4)查看rebalance平衡狀態
gluster volume rebalance testvol status

7、刪除卷

1)卸載掛載點
umount /mnt -lf
2)刪除卷
gluster volume stop testvol
gluster volume delete testvol (卷刪除后,內容還在)
rm -rf /brick1/b1 

8、恢復卷信息

1)卷信息的目錄
ll /var/lib/glusterd/vols/testvol/

2)恢復命令
gluster volume sync gluster-1-1  all

9、其他

1)允許可信任客戶端IP
gluster volume set testvol auth.allow 192.168.1.*

2)關閉gluster的nfs功能
ps -ef | grep nfs
gluster volume set testvol nfs.disable on

10、故障

1)復制卷數據不一致
故障現象:雙副本卷數據出現不一致
故障模擬:刪除其中一個brick數據
修復方法
  cat 文件
 觸發自修復:遍歷並訪問文件
 find /mnt -type f -print0 | xargs -0 head -c1

2)glusterfs集群節點配置信息不正確
恢復復制卷 brick
 故障現象:雙副本卷中一個brick損壞
 恢復流程
a、重新建立故障brick目錄
  mkdir b2
b、設置擴展屬性(參考另一個復制 brick)
 getfattr -d -m . -e hex b1/  獲取擴展屬性
 setfattr -n trusted.glusterfs.volume-id -v 0x1fa96ed0a0624ccf9e4f07cb9d84296f b2
 setfattr -n trusted.gfid -v 0x00000000000000000000000000000001  b2
 setfattr -n trusted.glusterfs.dht -v 0x000000010000000000000000ffffffff b2
c、重啟 glusterd服務
 /etc/init.d/glusterd restart
 gluster volume stop testvol
 gluster volume start testvol
d、觸發數據自修復
 find /mntpoint -type f -print0 | xargs -0 head -c1 >/dev/null


3)修復磁盤數據(在使用server1時宕機,使用server2替換,執行數據同步)
gluster volume replace-brick testvol server1:/brick1/b1 server2:/brick1/b1 commit force
gluster volume heal testvol full

  GlusterFS 客戶端常用命令

 

創建卷

1、創建分布卷
 gluster volume create dis_vol  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2   gluster-1-3:/brick1/b3
 
2、創建復制卷
 gluster volume create rep_vol replica 2 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

3、創建條帶卷
 gluster volume create str_vol  stripe 3 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

4、創建分布條帶卷
 gluster volume create dir_str_vol stripe 4  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

5、創建分布復制卷
 gluster volume create dir_rep_vol replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

6、創建分布條帶復制
 gluster volume create dis_str_rep_vol stri  2 repl 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

7、創建條帶復制卷
 gluster volume create str_rep_vol stripe 2 replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

8、創建分散卷(不常用)
 gluster volume create disperse_vol disperse 4 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

資源定義

Brick: 存儲的基本單元,表現為服務器上可信存儲池的導出目錄
Volume: 卷是bricks的邏輯集合
Cluster: 一組計算機組成的集群
Distributed File System: 允許多個客戶端通過網絡並發訪問的文件系統
GFID: 每個GlusterFs中的文件或者目錄都有一個128bit的數字標識稱為GFID
glusterd: 管理守護進程需要運行在所有的提供授信存儲池的服務器上
Namespace: 名稱空間是被創建的一個抽象容器或環境用來保存唯一標識符號
Quorum: 設置一個可信的存儲池中最多失效的主機節點數量
Quota: 允許通過目錄或者卷設置對磁盤空間使用的限制
Posix: 可移植操作系統接口是IEEE定義的一系列相關api標准
Vol File: Vol文件是glusterfs進程使用的配置文件
Distributed: 分布卷
Replicated: 復本卷
Distributed Replicated: 分布式復制卷
Geo-Replication: 異地備份為站點通過局域網、廣域網、互聯網提供一個連續的異步的和增量復制服務
Metedata: 元數據定義為關於數據的數據描述信息,在GlusterFs沒有專用的元數據存儲內容
Extended Attributes: 擴展屬性是文件系統的一個特性 
FUSE: 用戶空間的文件系統是一個用於類Unix操作系統的可加載內核模塊,以允許非特權用戶在適用內核代碼的情況下創建自己的文件系統。實現了在用戶空間下運行文件系統代碼

創建volume

Distributed:分布式卷,文件通過hash算法隨機的分布到由bricks組成的卷上。 
Replicated:復制式卷,類似raid1,replica數必須等於volume中brick所包含的存儲服務器數,可用性高。 
Striped:條帶式卷,類似與raid0,stripe數必須等於volume中brick所包含的存儲服務器數,文件被分成數據塊,以Round Robin的方式存儲在bricks中,並發粒度是數據塊,大文件性能好。 
Distributed Striped:分布式的條帶卷,volume中brick所包含的存儲服務器數必須是stripe的倍數(>=2倍),兼顧分布式和條帶式的功能。 
Distributed Replicated:分布式的復制卷,volume中brick所包含的存儲服務器數必須是 replica 的倍數(>=2倍),兼顧分布式和復制式的功能。

 

 


免責聲明!

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



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