分布式存儲(chǔ)已經(jīng)研究很多年,但直到近年來(lái),伴隨著谷歌、亞馬遜和阿里等互聯(lián)網(wǎng)公司云計(jì)算和大數(shù)據(jù)應(yīng)用的興起,它才大規(guī)模應(yīng)用到工程實(shí)踐中。如谷歌的分布式文件系統(tǒng)GFS、分布式表格系統(tǒng)google Bigtable,亞馬遜的對(duì)象存儲(chǔ)AWS,阿里的TFS等都是很好的代表,同時(shí)也催生了一大批優(yōu)秀的開(kāi)源分布式存儲(chǔ)系統(tǒng),包括ceph、swift、Lustre和glusterfs等。
?
?
分布式存儲(chǔ)系統(tǒng)
分布式存儲(chǔ)按其存儲(chǔ)接口分為三種:文件存儲(chǔ)、塊存儲(chǔ)和對(duì)象存儲(chǔ)。
?
文件存儲(chǔ)
通常支持POSIX接口(如glusterfs,但GFS、HDFS是非POSIX接口的),可以像普通文件系統(tǒng)(如ext4)那樣訪問(wèn),但又比普通文件系統(tǒng)多了并行化訪問(wèn)的能力和冗余機(jī)制。主要的分布式文件存儲(chǔ)系統(tǒng)有TFS、cephfs、glusterfs和HDFS等。主要存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),如普通文件、圖片、音視頻等。可以采用NFS和CIFS等協(xié)議訪問(wèn),共享方便。NAS是文件存儲(chǔ)類(lèi)型。
?
塊存儲(chǔ)
這種接口通常以QEMU Driver或者Kernel Module的方式存在,主要通過(guò)qemu或iscsi協(xié)議訪問(wèn)。主要的塊存儲(chǔ)系統(tǒng)有ceph塊存儲(chǔ)、sheepdog等。主要用來(lái)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)數(shù)據(jù)。數(shù)據(jù)共享不方便。DAS和SAN都是塊存儲(chǔ)類(lèi)型。
?
對(duì)象存儲(chǔ)
對(duì)象存儲(chǔ)系統(tǒng)綜合了NAS和SAN的優(yōu)點(diǎn),同時(shí)具有SAN的高速直接訪問(wèn)和NAS的數(shù)據(jù)共享等優(yōu)勢(shì)。以對(duì)象作為基本的存儲(chǔ)單元,向外提供RESTful數(shù)據(jù)讀寫(xiě)接口,常以網(wǎng)絡(luò)服務(wù)的形式提供數(shù)據(jù)訪問(wèn)。主要的對(duì)象存儲(chǔ)系統(tǒng)有AWS、swift和ceph對(duì)象存儲(chǔ)。主要用來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)
?
Glusterfs
Glusterfs是一個(gè)開(kāi)源分布式文件系統(tǒng),具有強(qiáng)大的橫向擴(kuò)展能力,可支持?jǐn)?shù)PB存儲(chǔ)容量和數(shù)千客戶端,通過(guò)Infiniband RDMA 或Tcp/Ip 方式將許多廉價(jià)的x86 主機(jī),通過(guò)網(wǎng)絡(luò)互聯(lián)成一個(gè)并行的網(wǎng)絡(luò)文件系統(tǒng)。具有可擴(kuò)展性、高性能、高可用性等特點(diǎn)。
?
GlusterFS概述
? ? GlusterFS系統(tǒng)是一個(gè)可擴(kuò)展的網(wǎng)絡(luò)文件系統(tǒng),相比其他分布式文件系統(tǒng),GlusterFS具有高擴(kuò)展性、高可用性、高性能、可橫向擴(kuò)展等特點(diǎn),并且其沒(méi)有元數(shù)據(jù)服務(wù)器的設(shè)計(jì),讓整個(gè)服務(wù)沒(méi)有單點(diǎn)故障的隱患。
術(shù)語(yǔ):
?Brick:GFS中的存儲(chǔ)單元,通過(guò)是一個(gè)受信存儲(chǔ)池中的服務(wù)器的一個(gè)導(dǎo)出目錄。可以通過(guò)主機(jī)名和目錄名來(lái)標(biāo)識(shí),如‘SERVER:EXPORT‘
?Client:掛載了GFS卷的設(shè)備
?Extended Attributes:xattr是一個(gè)文件系統(tǒng)的特性,其支持用戶或程序關(guān)聯(lián)文件/目錄和元數(shù)據(jù)。
?FUSE:Filesystem Userspace是一個(gè)可加載的內(nèi)核模塊,其支持非特權(quán)用戶創(chuàng)建自己的文件系統(tǒng)而不需要修改內(nèi)核代碼。通過(guò)在用戶空間運(yùn)行文件系統(tǒng)的代碼通過(guò)FUSE代碼與內(nèi)核進(jìn)行橋接。
?Geo-Replication
?GFID:GFS卷中的每個(gè)文件或目錄都有一個(gè)唯一的128位的數(shù)據(jù)相關(guān)聯(lián),其用于模擬inode
?Namespace:每個(gè)Gluster卷都導(dǎo)出單個(gè)ns作為POSIX的掛載點(diǎn)
?Node:一個(gè)擁有若干brick的設(shè)備
?RDMA:遠(yuǎn)程直接內(nèi)存訪問(wèn),支持不通過(guò)雙方的OS進(jìn)行直接內(nèi)存訪問(wèn)。
?RRDNS:round robin DNS是一種通過(guò)DNS輪轉(zhuǎn)返回不同的設(shè)備以進(jìn)行負(fù)載均衡的方法
?Self-heal:用于后臺(tái)運(yùn)行檢測(cè)復(fù)本卷中文件和目錄的不一致性并解決這些不一致。
?Split-brain:腦裂
?Translator:
?Volfile:glusterfs進(jìn)程的配置文件,通常位于/var/lib/glusterd/vols/volname
?Volume:一組bricks的邏輯集合
?
1、無(wú)元數(shù)據(jù)設(shè)計(jì)
? ? 元數(shù)據(jù)是用來(lái)描述一個(gè)文件或給定區(qū)塊在分布式文件系統(tǒng)中所在的位置,簡(jiǎn)而言之就是某個(gè)文件或某個(gè)區(qū)塊存儲(chǔ)的位置。傳統(tǒng)分布式文件系統(tǒng)大都會(huì)設(shè)置元數(shù)據(jù)服務(wù)器或者功能相近的管理服務(wù)器,主要作用就是用來(lái)管理文件與數(shù)據(jù)區(qū)塊之間的存儲(chǔ)位置關(guān)系。相較其他分布式文件系統(tǒng)而言,GlusterFS并沒(méi)有集中或者分布式的元數(shù)據(jù)的概念,取而代之的是彈性哈希算法。集群中的任何服務(wù)器和客戶端都可以利用哈希算法、路徑及文件名進(jìn)行計(jì)算,就可以對(duì)數(shù)據(jù)進(jìn)行定位,并執(zhí)行讀寫(xiě)訪問(wèn)操作。
? ? 這種設(shè)計(jì)帶來(lái)的好處是極大的提高了擴(kuò)展性,同時(shí)也提高了系統(tǒng)的性能和可靠性;另一顯著的特點(diǎn)是如果給定確定的文件名,查找文件位置會(huì)非常快。但是如果要列出文件或者目錄,性能會(huì)大幅下降,因?yàn)榱谐鑫募蛘吣夸洉r(shí),需要查詢(xún)所在節(jié)點(diǎn)并對(duì)各節(jié)點(diǎn)中的信息進(jìn)行聚合。此時(shí)有元數(shù)據(jù)服務(wù)的分布式文件系統(tǒng)的查詢(xún)效率反而會(huì)提高許多。
?
2、服務(wù)器間的部署
? ? 在之前的版本中服務(wù)器間的關(guān)系是對(duì)等的,也就是說(shuō)每個(gè)節(jié)點(diǎn)服務(wù)器都掌握了集群的配置信息,這樣做的好處是每個(gè)節(jié)點(diǎn)度擁有節(jié)點(diǎn)的配置信息,高度自治,所有信息都可以在本地查詢(xún)。每個(gè)節(jié)點(diǎn)的信息更新都會(huì)向其他節(jié)點(diǎn)通告,保證節(jié)點(diǎn)間信息的一致性。但如果集群規(guī)模較大,節(jié)點(diǎn)眾多時(shí),信息同步的效率就會(huì)下降,節(jié)點(diǎn)信息的非一致性概率就會(huì)大大提高。因此GlusterFS未來(lái)的版本有向集中式管理變化的趨勢(shì)。
?
3、客戶端訪問(wèn)流程
? ? 當(dāng)客戶端訪問(wèn)GlusterFS存儲(chǔ)時(shí),首先程序通過(guò)訪問(wèn)掛載點(diǎn)的形式讀寫(xiě)數(shù)據(jù),對(duì)于用戶和程序而言,集群文件系統(tǒng)是透明的,用戶和程序根本感覺(jué)不到文件系統(tǒng)是本地還是在遠(yuǎn)程服務(wù)器上。讀寫(xiě)操作將會(huì)被交給VFS(Virtual File System)來(lái)處理,VFS會(huì)將請(qǐng)求交給FUSE內(nèi)核模塊,而FUSE又會(huì)通過(guò)設(shè)備/dev/fuse將數(shù)據(jù)交給GlusterFS Client。最后經(jīng)過(guò)GlusterFS Client的計(jì)算,并最終經(jīng)過(guò)網(wǎng)絡(luò)將請(qǐng)求或數(shù)據(jù)發(fā)送到GlusterFS Server上。
三、GlusterFS集群的模式
? ??GlusterFS 集群的模式只數(shù)據(jù)在集群中的存放結(jié)構(gòu),類(lèi)似于磁盤(pán)陣列中的級(jí)別。
1、分布式卷(Distributed Volume)
? ? 又稱(chēng)哈希卷,近似于RAID0,文件沒(méi)有分片,文件根據(jù)hash算法寫(xiě)入各個(gè)節(jié)點(diǎn)的硬盤(pán)上,優(yōu)點(diǎn)是容量大,缺點(diǎn)是沒(méi)冗余。
2、復(fù)制卷(Replicated Volume)
? ? 相當(dāng)于raid1,復(fù)制的份數(shù),決定集群的大小,通常與分布式卷或者條帶卷組合使用,解決前兩種存儲(chǔ)卷的冗余缺陷。缺點(diǎn)是磁盤(pán)利用率低。
? ? 復(fù)本卷在創(chuàng)建時(shí)可指定復(fù)本的數(shù)量,通常為2或者3,復(fù)本在存儲(chǔ)時(shí)會(huì)在卷的不同brick上,因此有幾個(gè)復(fù)本就必須提供至少多個(gè)brick,當(dāng)其中一臺(tái)服務(wù)器失效后,可以從另一臺(tái)服務(wù)器讀取數(shù)據(jù),因此復(fù)制GlusterFS卷提高了數(shù)據(jù)可靠性的同事,還提供了數(shù)據(jù)冗余的功能。
3、分布式復(fù)制卷(Distributed Replicated?Volume)
? ?分布式復(fù)制GlusterFS卷結(jié)合了分布式和復(fù)制Gluster卷的特點(diǎn),看起來(lái)類(lèi)似RAID10,但其實(shí)不同,RAID10其實(shí)質(zhì)是條帶化,但分布式復(fù)制GlusterFS卷則沒(méi)有。
4、條帶卷(Striped Volume)
? ? 相當(dāng)于raid0,文件是分片均勻?qū)懺诟鱾€(gè)節(jié)點(diǎn)的硬盤(pán)上的,優(yōu)點(diǎn)是分布式讀寫(xiě),性能整體較好。缺點(diǎn)是沒(méi)冗余,分片隨機(jī)讀寫(xiě)可能會(huì)導(dǎo)致硬盤(pán)IOPS飽和。
5、分布式條帶卷(Distributed?Striped?Volume)
? ? 當(dāng)單個(gè)文件的體型十分巨大,客戶端數(shù)量更多時(shí),條帶卷已經(jīng)無(wú)法滿足需求,此時(shí)將分布式與條帶化結(jié)合起來(lái)是一個(gè)比較好的選擇。其性能與服務(wù)器數(shù)量有關(guān)。
?
?
?
用三個(gè)節(jié)點(diǎn)搭建一個(gè)glusterfs集群,再用一個(gè)作為客戶端使用
?
hostnamectl set-hostname node1.lq.com
每臺(tái)機(jī)子都要做
關(guān)閉防火墻及SElinux
systemctl stop firewalld
setenforce 0
vi /etc/hosts
?
192.168.80.100 master
192.168.80.101 slave1
192.168.80.102 slave2
192.168.80.103 client
?
在80.100上:
ssh-keygen -t rsa
ssh-copy-id -i slave1
ssh-copy-id -i slave2
ssh-copy-id -i client
?
?
配置yum源為阿里源(在每個(gè)節(jié)點(diǎn)中都執(zhí)行)
yum install wget -y
wget http://mirrors.aliyun.com/repo/Centos-7.repo
執(zhí)行yum源更新命令
yum clean all
yum makecache
?
安裝glusterfs
?
在master、slave1、slave2節(jié)點(diǎn)安裝glusterfs
yum install centos-release-gluster -y
?
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd
systemctl enable glusterd
?
?
?
在 master節(jié)點(diǎn)上配置,將兩個(gè)slave節(jié)點(diǎn)加入到gluster集群中。
?
gluster peer probe master
gluster peer probe slave1
gluster peer probe slave2
?
?
查看集群狀態(tài):在master上查看
gluster peer status
?
創(chuàng)建數(shù)據(jù)存儲(chǔ)目錄(在三個(gè)節(jié)點(diǎn)上都運(yùn)行):
mkdir -p /opt/gluster/data
查看volume 狀態(tài):
gluster volume info
?
創(chuàng)建GlusterFS磁盤(pán):
?
gluster volume create models replica 3 master:/opt/gluster/data slave1:/opt/gluster/data slave2:/opt/gluster/data force
?
replica 3表明存儲(chǔ)3個(gè)備份,后面指定服務(wù)器的存儲(chǔ)目錄
?
?
GlusterFS 幾種volume 模式指令:
?
一、 默認(rèn)模式,既DHT, 也叫 分布卷: 將文件已hash算法隨機(jī)分布到 一臺(tái)服務(wù)器節(jié)點(diǎn)中存儲(chǔ)。
?
命令:gluster volume create test-volume server1:/exp1 server2:/exp2
?
二、 復(fù)制模式,既AFR, 創(chuàng)建volume 時(shí)帶 replica x 數(shù)量: 將文件復(fù)制到 replica x 個(gè)節(jié)點(diǎn)中。
?
命令:gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
?
三、 條帶模式,既Striped, 創(chuàng)建volume 時(shí)帶 stripe x 數(shù)量: 將文件切割成數(shù)據(jù)塊,分別存儲(chǔ)到 stripe x 個(gè)節(jié)點(diǎn)中 ( 類(lèi)似raid 0 )。
?
命令:gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
?
四、 分布式條帶模式(組合型),最少需要4臺(tái)服務(wù)器才能創(chuàng)建。 創(chuàng)建volume 時(shí) stripe 2 server = 4 個(gè)節(jié)點(diǎn): 是DHT 與 Striped 的組合型。
?
命令:gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
五、 分布式復(fù)制模式(組合型), 最少需要4臺(tái)服務(wù)器才能創(chuàng)建。 創(chuàng)建volume 時(shí) replica 2 server = 4 個(gè)節(jié)點(diǎn):是DHT 與 AFR 的組合型。
?
命令:gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
六、 條帶復(fù)制卷模式(組合型), 最少需要4臺(tái)服務(wù)器才能創(chuàng)建。 創(chuàng)建volume 時(shí) stripe 2 replica 2 server = 4 個(gè)節(jié)點(diǎn): 是 Striped 與 AFR 的組合型。
?
命令:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
?
七、 三種模式混合, 至少需要8臺(tái) 服務(wù)器才能創(chuàng)建。 stripe 2 replica 2 , 每4個(gè)節(jié)點(diǎn) 組成一個(gè) 組。
?
命令:gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
?
?
再次查看volume信息
gluster volume info
?
?
啟動(dòng) models
gluster volume start models
?
gluster 性能調(diào)優(yōu):
?
開(kāi)啟 指定 volume 的配額: (models 為 volume 名稱(chēng))
gluster volume quota models enable
?
限制 models 中 / (既總目錄) 大使用 10M 空間
gluster volume quota models limit-usage / 10MB
?
設(shè)置 cache 大小(此處要根據(jù)實(shí)際情況,如果設(shè)置太大可能導(dǎo)致后面客戶端掛載失敗)
gluster volume set models performance.cache-size 512MB
?
開(kāi)啟 異步,后臺(tái)操作
gluster volume set models performance.flush-behind on
?
設(shè)置 io 線程 32
gluster volume set models performance.io-thread-count 32
?
設(shè)置 回寫(xiě) (寫(xiě)數(shù)據(jù)時(shí)間,先寫(xiě)入緩存內(nèi),再寫(xiě)入硬盤(pán))
gluster volume set models performance.write-behind on
?
調(diào)優(yōu)之后的volume信息
gluster volume info
?
?
?
在客戶端上:
部署GlusterFS客戶端并mount GlusterFS文件系統(tǒng)
?
yum install -y glusterfs glusterfs-fuse
?
建立掛載點(diǎn):
mkdir -p /opt/gfsmount
?
mount命令:
mount -t glusterfs 192.168.80.100:models /opt/gfsmount/
?
df 命令檢查:df -h
?
測(cè)試:
往該目錄寫(xiě)入文件,隨后查看gluster服務(wù)器的存儲(chǔ)情況
time dd if=/dev/zero of=/opt/gfsmount/hello bs=100M count=1
?
查看phn機(jī)器上/opt/gfsmount 目錄
?
查看master機(jī)器上/opt/gluster/data目錄
?
查看slave1機(jī)器上/opt/gluster/data目錄
?
查看slave2機(jī)器上/opt/gluster/data目錄
?
可以看到gluster服務(wù)器的每個(gè)節(jié)點(diǎn)上都有備份,符合之前設(shè)置的3個(gè)備份的原則
?
?
?
其他命令
?
查看GlusterFS中所有的volume:
gluster volume list
?
刪除GlusterFS磁盤(pán):
gluster volume stop models //停止名字為 models 的磁盤(pán)
gluster volume delete models //刪除名字為 models 的磁盤(pán)
?
注: 刪除 磁盤(pán) 以后,必須刪除 磁盤(pán)( /opt/gluster/data ) 中的 ( .glusterfs/ .trashcan/ )目錄。
否則創(chuàng)建新 volume 相同的 磁盤(pán) 會(huì)出現(xiàn)文件 不分布,或者 類(lèi)型 錯(cuò)亂 的問(wèn)題。
?
?
卸載某個(gè)節(jié)點(diǎn)GlusterFS磁盤(pán)
gluster peer detach swarm-node-2
?
設(shè)置訪問(wèn)限制,按照每個(gè)volume 來(lái)限制
gluster volume set models auth.allow 10.6.0.,10.7.0.
?
?
添加GlusterFS節(jié)點(diǎn):
gluster peer probe swarm-node-3
gluster volume add-brick models swarm-node-3:/opt/gluster/data
?
配置卷
gluster volume set
?
縮容volume:
先將數(shù)據(jù)遷移到其它可用的Brick,遷移結(jié)束后才將該Brick移除:
gluster volume remove-brick models slave1:/opt/gluster/data slave2:/opt/gluster/data start
?
在執(zhí)行了start之后,可以使用status命令查看移除進(jìn)度:
gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
?
不進(jìn)行數(shù)據(jù)遷移,直接刪除該Brick:
gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit
注意,如果是復(fù)制卷或者條帶卷,則每次移除的Brick數(shù)必須是replica或者stripe的整數(shù)倍。
?
擴(kuò)容:
?
gluster volume add-brick models swarm-node-2:/opt/gluster/data
?
修復(fù)命令:
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit -force
?
遷移volume:
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start
?
pause 為暫停遷移
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data pause
?
abort 為終止遷移
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data abort
?
status 查看遷移狀態(tài)
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status
?
遷移結(jié)束后使用commit 來(lái)生效
gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit
?
?
均衡volume:
gluster volume models lay-outstart
gluster volume models start
gluster volume models startforce
gluster volume models status
gluster volume models stop
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站名稱(chēng):GlusterFS-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.rwnh.cn/article28/dgsdjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容