一儡羔、概述
1冯勉、GlusterFS是集群式NAS存儲(chǔ)系統(tǒng)纷妆,分布式文件系統(tǒng)(POSIX兼容)场梆,Tcp/Ip方式互聯(lián)的一個(gè)并行的網(wǎng)絡(luò)文件系統(tǒng)墅冷,通過原生 GlusterFS 協(xié)議訪問數(shù)據(jù),也可以通過 NFS/CIFS 協(xié)議訪問數(shù)據(jù)或油,沒有元數(shù)據(jù)服務(wù)器寞忿,實(shí)現(xiàn)整個(gè)系統(tǒng)的性能、可靠性和穩(wěn)定性。
2蚊伞、GlusterFS 常見術(shù)語
名稱 | 解釋 |
---|---|
Brick | 最基本的存儲(chǔ)單元,表示為trusted storage pool中輸出的目錄缨恒,供客戶端掛載用霹抛。 |
Volume | 一個(gè)卷搓逾。在邏輯上由N個(gè)bricks組成。 |
FUSE | Unix-like OS上的可動(dòng)態(tài)加載的模塊杯拐,允許用戶不用修改內(nèi)核即可創(chuàng)建自己的文件系統(tǒng)霞篡。 |
Glusterd | Gluster management daemon,要在trusted storage pool中所有的服務(wù)器上運(yùn)行端逼。 |
POSIX | 一個(gè)標(biāo)準(zhǔn)朗兵,GlusterFS兼容。 |
3顶滩、GlusterFS卷類型
基本卷:
(1) distribute volume:分布式卷
(2) stripe volume:條帶卷
(3) replica volume:復(fù)制卷
復(fù)合卷:
(4) distribute stripe volume:分布式條帶卷
(5) distribute replica volume:分布式復(fù)制卷
(6) stripe replica volume:條帶復(fù)制卷
(7) distribute stripe replicavolume:分布式條帶復(fù)制卷
基本卷:
哈希卷(distributed volume余掖,文件通過hash算法在所有brick上分布,文件級(jí)raid0诲祸,不具有容錯(cuò)能力)浊吏;
復(fù)制卷(replicated volume而昨,生產(chǎn)常用救氯,文件同步復(fù)制到多個(gè)brick上,文件級(jí)raid1歌憨,具有容錯(cuò)能力着憨,w性能下降r性能提升);
條帶卷(striped volume务嫡,不建議使用甲抖,單個(gè)文件分布到多個(gè)brick上,支持超大文件心铃,類似raid0准谚,rr方式round-robin,通常用于HPC(high performance compute)中的超大文件(>10G的單個(gè)文件)及高并發(fā)環(huán)境(多人同時(shí)訪問同一個(gè)文件))去扣;
復(fù)合卷:
哈希復(fù)制卷(distributed replicated volume柱衔,生產(chǎn)常用,同時(shí)具有哈希卷和復(fù)制卷的特點(diǎn))愉棱;
哈希條帶卷(distributed striped volume)唆铐;
復(fù)制條帶卷(replicated striped vlume);
哈希復(fù)制條帶卷(distributed replicated striped volume)奔滑;
4艾岂、開源并行FS比較(glusterfs VS moosefs VS lustre VS ceph):
比較維度
比較緯度 | Glusterfs | Moosefs | Lustre | Ceph |
---|---|---|---|---|
成熟度 | 2003發(fā)布第一個(gè)版本lustre1.0,2013年發(fā)布v2.4.0朋其,相當(dāng)成熟王浴,在HPC領(lǐng)域占有絕大比例 | 2008年發(fā)布第一個(gè)開源版本v1.5脆炎,13年發(fā)布GA版v1.6.27,穩(wěn)定叼耙,比較成熟的開源DFS | 2003發(fā)布第一個(gè)版本lustre1.0腕窥,2013年發(fā)布v2.4.0,相當(dāng)成熟筛婉,在HPC領(lǐng)域占有絕大比例 | 2013年發(fā)布v0.71簇爆,并已添加到linux kernel中作實(shí)驗(yàn)內(nèi)核,目前不成熟有較多bug爽撒,更新穩(wěn)定都是實(shí)驗(yàn)版 |
穩(wěn)定性 | 較穩(wěn)定入蛆,無重大bug,已有較多組織或機(jī)構(gòu)應(yīng)用于生產(chǎn)環(huán)境 | 較穩(wěn)定硕勿,無重大bug | 很穩(wěn)定哨毁,在HPC領(lǐng)域應(yīng)用很多 | 核心組件RADOS較穩(wěn)定,每3個(gè)月更新一次穩(wěn)定版源武,有部分企業(yè)用于生產(chǎn)環(huán)境 |
復(fù)雜度 | 簡單扼褪,無元數(shù)據(jù)服務(wù),用戶空間實(shí)現(xiàn)粱栖,架構(gòu)清晰话浇,xlator樹形結(jié)構(gòu) | 簡單,用戶空間實(shí)現(xiàn)闹究,代碼規(guī)模較小幔崖,高度模塊化 | 復(fù)雜度較高,依賴內(nèi)核實(shí)現(xiàn) | 較復(fù)雜渣淤,c++實(shí)現(xiàn)赏寇,功能較多 |
高性能 | 解除元數(shù)據(jù)瓶頸,并行化數(shù)據(jù)訪問 | 元數(shù)據(jù)單點(diǎn)瓶頸 | 高性能价认,HPC領(lǐng)域表現(xiàn)卓越 | 數(shù)據(jù)分布均衡嗅定,并行化度高 |
擴(kuò)展性 | 彈性hash代替元數(shù)據(jù)服務(wù),線性擴(kuò)展用踩,可輕松擴(kuò)展到數(shù)百PB量級(jí)渠退,支持動(dòng)態(tài)擴(kuò)容 | 可增加存儲(chǔ)server,不能增加MDS | 高擴(kuò)展性捶箱,容量可達(dá)數(shù)百PB智什,可在不打斷任何操作的情況下,通過增加新的OSS來實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展 | 高擴(kuò)展性丁屎,支持10-1000臺(tái)server荠锭,支持TB到PB的擴(kuò)展,當(dāng)組件發(fā)生變化時(shí)(添加或刪除)晨川,自動(dòng)進(jìn)行數(shù)據(jù)的重分布 |
可用性 | 多元數(shù)據(jù)服務(wù)設(shè)計(jì)证九,數(shù)據(jù)分布提供三種方式的分割:AFR删豺、DHT、stripe愧怜,支持自動(dòng)復(fù)制和自動(dòng)修復(fù) | 元數(shù)據(jù)+日志服務(wù)器呀页,保障元數(shù)據(jù)server,運(yùn)行時(shí)元數(shù)據(jù)放內(nèi)存拥坛,可設(shè)置副本 | 元數(shù)據(jù)集群蓬蝶,可部署主備切換工作方式,無副本設(shè)計(jì)猜惋,OSS之間可利用共享存儲(chǔ)實(shí)現(xiàn)自動(dòng)故障恢復(fù) | 元數(shù)據(jù)集群丸氛,沒有單點(diǎn)故障,多數(shù)據(jù)副本著摔,自動(dòng)管理缓窜、自動(dòng)修復(fù),monitor監(jiān)控集群中所有節(jié)點(diǎn)狀態(tài)谍咆,且可有多個(gè)monitor保證可靠性 |
可管理性 | 部署簡單禾锤,易于管理和維護(hù),使用底層FS摹察,ext3/zfs恩掷,客戶端負(fù)載增加;提供管理工具港粱,如卷的擴(kuò)容螃成、數(shù)據(jù)LB旦签、目錄配額及相關(guān)監(jiān)控等 | 部署簡單查坪,提供web gui監(jiān)控界面,元數(shù)據(jù)恢復(fù)宁炫,文件恢復(fù)偿曙,回收站功能,快照 | 部署復(fù)雜羔巢,需升級(jí)kernel等望忆,提供管理工具,如設(shè)置目錄stripe | 部署較復(fù)雜竿秆,提供工具對(duì)集群進(jìn)行監(jiān)控管理启摄,包括集群狀態(tài),各組件狀態(tài)等 |
研發(fā)成本 | 用戶空間實(shí)現(xiàn)幽钢,模塊化堆棧式架構(gòu) | 用戶空間實(shí)現(xiàn)歉备,小規(guī)模 | 高,內(nèi)核空間實(shí)現(xiàn)匪燕,且代碼規(guī)模大 | 較高蕾羊,代碼規(guī)模大喧笔,功能多 |
適用性 | 適用以文件為對(duì)象的存儲(chǔ)體系,適合大文件存儲(chǔ) | 小規(guī)模集群龟再,元數(shù)據(jù)瓶頸书闸,內(nèi)存消耗大 | 大文件,HPC領(lǐng)域 | Ceph |
NAS兼容 | 支持NFS利凑、CIFS浆劲、HTTP、FTP哀澈、gluster原生協(xié)議梳侨,與POSIX標(biāo)準(zhǔn)兼容 | 支持CIFS、NFS日丹,支持標(biāo)準(zhǔn)POSIX接口 | 支持CIFS走哺、NFS,支持標(biāo)準(zhǔn)POSIX接口 | 支持CIFS哲虾、NFS丙躏,支持標(biāo)準(zhǔn)POSIX接口 |
采用指數(shù) | ☆☆☆☆ | ☆☆☆ | ☆☆☆ | ☆☆ |
二、配置安裝
1束凑、環(huán)境
192.168.1.11 gluster-1-1
192.168.1.12 gluster-1-2
192.168.1.13 gluster-1-3
注意:hosts文件添加解析晒旅,時(shí)間同步,關(guān)閉iptables和SELinux汪诉,三臺(tái)各加10G硬盤做存儲(chǔ)數(shù)據(jù)废恋。
2、下載gluster相關(guān)軟件包
vim /etc/yum.repos.d/gfs.repo
http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64
依賴包:rpcbind libaio lvm2-devel
服務(wù)端:yum install glusterfs-server glusterfs glusterfs-cli glusterfs-fuse glusterfs-libs glusterfs-api
客戶端:yum install glusterfs glusterfs-fuse glusterfs-libs
磁盤分區(qū):mkfs.ext4 -L /brick1 /dev/sdb 分區(qū)扒寄、標(biāo)簽鱼鼓、格式化
3、部署
1)創(chuàng)建目錄并啟動(dòng)服務(wù)
mkdir /brick1
/etc/init.d/glusterd start
2)添加gluster節(jié)點(diǎn)服務(wù)器
gluster peer probe gluster-1-2
gluster peer probe gluster-1-3
3)查看節(jié)點(diǎn)服務(wù)器
gluster peer status
4该编、創(chuàng)建卷
1)創(chuàng)建testvol卷(默認(rèn)是哈希卷)
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 復(fù)制卷
2)啟動(dòng)卷
gluster volume start testvol
3)查看卷
gluster volume info
4)刪除卷
gluster volume remove-brick testvol gluster-1-2:/brick1/b2
5迄本、客戶端測(cè)試
1)客戶端掛載卷
mount -t glusterfs gluster-1-1:/testvol /mnt
2)測(cè)試
df -h mount 等
touch {1..9}.txt
rm 4.txt
6、節(jié)點(diǎn)操作
1)刪除節(jié)點(diǎn)服務(wù)器
gluster peer detach gluster-1-2 不能刪除自己
2)添加節(jié)點(diǎn)服務(wù)器
gluster peer probe gluster-1-2
gluster volume add-brick testvol gluster-1-2:/brick1/b2 (b2下面不能有文件)
3)重新LB课竣,要在閑時(shí)做嘉赎,分兩步,先fix-layout將hash算法重分配于樟,再將數(shù)據(jù)重分配
gluster volume rebalance testvol fix-layout start
gluster volume rebalance testvol start
4)查看rebalance平衡狀態(tài)
gluster volume rebalance testvol status
7公条、刪除卷
1)卸載掛載點(diǎn)
umount /mnt -lf
2)刪除卷
gluster volume stop testvol
gluster volume delete testvol (卷刪除后,內(nèi)容還在)
rm -rf /brick1/b1
8迂曲、恢復(fù)卷信息
1)卷信息的目錄
ll /var/lib/glusterd/vols/testvol/
2)恢復(fù)命令
gluster volume sync gluster-1-1 all
9靶橱、其他
1)允許可信任客戶端IP
gluster volume set testvol auth.allow 192.168.1.*
2)關(guān)閉gluster的nfs功能
ps -ef | grep nfs
gluster volume set testvol nfs.disable on
10、故障
1)復(fù)制卷數(shù)據(jù)不一致
故障現(xiàn)象:雙副本卷數(shù)據(jù)出現(xiàn)不一致
故障模擬:刪除其中一個(gè)brick數(shù)據(jù)
修復(fù)方法
cat 文件
觸發(fā)自修復(fù):遍歷并訪問文件
find /mnt -type f -print0 | xargs -0 head -c1
2)glusterfs集群節(jié)點(diǎn)配置信息不正確
恢復(fù)復(fù)制卷 brick
故障現(xiàn)象:雙副本卷中一個(gè)brick損壞
恢復(fù)流程
a、重新建立故障brick目錄
mkdir b2
b抓韩、設(shè)置擴(kuò)展屬性(參考另一個(gè)復(fù)制 brick)
getfattr -d -m . -e hex b1/ 獲取擴(kuò)展屬性
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服務(wù)
/etc/init.d/glusterd restart
gluster volume stop testvol
gluster volume start testvol
d、觸發(fā)數(shù)據(jù)自修復(fù)
find /mntpoint -type f -print0 | xargs -0 head -c1 >/dev/null
3)修復(fù)磁盤數(shù)據(jù)(在使用server1時(shí)宕機(jī)谒拴,使用server2替換尝江,執(zhí)行數(shù)據(jù)同步)
gluster volume replace-brick testvol server1:/brick1/b1 server2:/brick1/b1 commit force
gluster volume heal testvol full
GlusterFS 客戶端常用命令
命令 | 功能 |
---|---|
gluster peer probe | 添加節(jié)點(diǎn) |
gluster peer detach | 移除節(jié)點(diǎn) |
gluster volume create | 創(chuàng)建卷 |
gluster volume start | 啟動(dòng)卷 |
gluster volume stop | 停止卷 |
gluster volume delete | 刪除卷 |
gluster volume quota enable | 開啟卷配額 |
gluster volume quota enable | 關(guān)閉卷配額 |
gluster volume quota limit-usage | 設(shè)定卷配額 |
創(chuàng)建卷
1、創(chuàng)建分布卷
gluster volume create dis_vol gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
2英上、創(chuàng)建復(fù)制卷
gluster volume create rep_vol replica 2 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
3炭序、創(chuàng)建條帶卷
gluster volume create str_vol stripe 3 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
4、創(chuàng)建分布條帶卷
gluster volume create dir_str_vol stripe 4 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
5苍日、創(chuàng)建分布復(fù)制卷
gluster volume create dir_rep_vol replica 2 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
6惭聂、創(chuàng)建分布條帶復(fù)制
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、創(chuàng)建條帶復(fù)制卷
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相恃、創(chuàng)建分散卷(不常用)
gluster volume create disperse_vol disperse 4 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2 gluster-1-3:/brick1/b3
資源定義
Brick: 存儲(chǔ)的基本單元辜纲,表現(xiàn)為服務(wù)器上可信存儲(chǔ)池的導(dǎo)出目錄
Volume: 卷是bricks的邏輯集合
Cluster: 一組計(jì)算機(jī)組成的集群
Distributed File System: 允許多個(gè)客戶端通過網(wǎng)絡(luò)并發(fā)訪問的文件系統(tǒng)
GFID: 每個(gè)GlusterFs中的文件或者目錄都有一個(gè)128bit的數(shù)字標(biāo)識(shí)稱為GFID
glusterd: 管理守護(hù)進(jìn)程需要運(yùn)行在所有的提供授信存儲(chǔ)池的服務(wù)器上
Namespace: 名稱空間是被創(chuàng)建的一個(gè)抽象容器或環(huán)境用來保存唯一標(biāo)識(shí)符號(hào)
Quorum: 設(shè)置一個(gè)可信的存儲(chǔ)池中最多失效的主機(jī)節(jié)點(diǎn)數(shù)量
Quota: 允許通過目錄或者卷設(shè)置對(duì)磁盤空間使用的限制
Posix: 可移植操作系統(tǒng)接口是IEEE定義的一系列相關(guān)api標(biāo)準(zhǔn)
Vol File: Vol文件是glusterfs進(jìn)程使用的配置文件
Distributed: 分布卷
Replicated: 復(fù)本卷
Distributed Replicated: 分布式復(fù)制卷
Geo-Replication: 異地備份為站點(diǎn)通過局域網(wǎng)、廣域網(wǎng)拦耐、互聯(lián)網(wǎng)提供一個(gè)連續(xù)的異步的和增量復(fù)制服務(wù)
Metedata: 元數(shù)據(jù)定義為關(guān)于數(shù)據(jù)的數(shù)據(jù)描述信息耕腾,在GlusterFs沒有專用的元數(shù)據(jù)存儲(chǔ)內(nèi)容
Extended Attributes: 擴(kuò)展屬性是文件系統(tǒng)的一個(gè)特性
FUSE: 用戶空間的文件系統(tǒng)是一個(gè)用于類Unix操作系統(tǒng)的可加載內(nèi)核模塊,以允許非特權(quán)用戶在適用內(nèi)核代碼的情況下創(chuàng)建自己的文件系統(tǒng)杀糯。實(shí)現(xiàn)了在用戶空間下運(yùn)行文件系統(tǒng)代碼
創(chuàng)建volume
Distributed:分布式卷扫俺,文件通過hash算法隨機(jī)的分布到由bricks組成的卷上。
Replicated:復(fù)制式卷固翰,類似raid1狼纬,replica數(shù)必須等于volume中brick所包含的存儲(chǔ)服務(wù)器數(shù),可用性高骂际。
Striped:條帶式卷疗琉,類似與raid0,stripe數(shù)必須等于volume中brick所包含的存儲(chǔ)服務(wù)器數(shù)方援,文件被分成數(shù)據(jù)塊没炒,以Round Robin的方式存儲(chǔ)在bricks中涛癌,并發(fā)粒度是數(shù)據(jù)塊犯戏,大文件性能好。
Distributed Striped:分布式的條帶卷拳话,volume中brick所包含的存儲(chǔ)服務(wù)器數(shù)必須是stripe的倍數(shù)(>=2倍)先匪,兼顧分布式和條帶式的功能。
Distributed Replicated:分布式的復(fù)制卷弃衍,volume中brick所包含的存儲(chǔ)服務(wù)器數(shù)必須是 replica 的倍數(shù)(>=2倍)呀非,兼顧分布式和復(fù)制式的功能。