免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
glusterfs架構(gòu)和原理
分布式存儲已經(jīng)研究很多年,但直到近年來,伴隨著谷歌、亞馬遜和阿里等互聯(lián)網(wǎng)公司云計算和大數(shù)據(jù)應(yīng)用的興起,它才大規(guī)模應(yīng)用到工程實踐中。如谷歌的分布式文件系統(tǒng)GFS、分布式表格系統(tǒng)google Bigtable,亞馬遜的對象存儲AWS,阿里的TFS等都是很好的代表,同時也催生了一大批優(yōu)秀的開源分布式存儲系統(tǒng),包括ceph、swift、Lustre和glusterfs等。
分布式存儲系統(tǒng)
分布式存儲按其存儲接口分為三種:文件存儲、塊存儲和對象存儲。
文件存儲
通常支持POSIX接口(如glusterfs,但GFS、HDFS是非POSIX接口的),可以像普通文件系統(tǒng)(如ext4)那樣訪問,但又比普通文件系統(tǒng)多了并行化訪問的能力和冗余機制。主要的分布式文件存儲系統(tǒng)有TFS、cephfs、glusterfs和HDFS等。主要存儲非結(jié)構(gòu)化數(shù)據(jù),如普通文件、圖片、音視頻等??梢圆捎肗FS和CIFS等協(xié)議訪問,共享方便。NAS是文件存儲類型。
塊存儲
這種接口通常以QEMU Driver或者Kernel Module的方式存在,主要通過qemu或iscsi協(xié)議訪問。主要的塊存儲系統(tǒng)有ceph塊存儲、sheepdog等。主要用來存儲結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫數(shù)據(jù)。數(shù)據(jù)共享不方便。DAS和SAN都是塊存儲類型。
對象存儲
對象存儲系統(tǒng)綜合了NAS和SAN的優(yōu)點,同時具有SAN的高速直接訪問和NAS的數(shù)據(jù)共享等優(yōu)勢。以對象作為基本的存儲單元,向外提供RESTful數(shù)據(jù)讀寫接口,常以網(wǎng)絡(luò)服務(wù)的形式提供數(shù)據(jù)訪問。主要的對象存儲系統(tǒng)有AWS、swift和ceph對象存儲。主要用來存儲非結(jié)構(gòu)化數(shù)據(jù)。
Glusterfs
Glusterfs是一個開源分布式文件系統(tǒng),具有強大的橫向擴展能力,可支持數(shù)PB存儲容量和數(shù)千客戶端,通過Infiniband RDMA 或Tcp/Ip 方式將許多廉價的x86 主機,通過網(wǎng)絡(luò)互聯(lián)成一個并行的網(wǎng)絡(luò)文件系統(tǒng)。具有可擴展性、高性能、高可用性等特點。
GlusterFS采用可堆疊的用戶空間設(shè)計,如圖所示:
image
glusterfs堆棧式結(jié)構(gòu)
Glusterfs是根據(jù)fuse提供的接口實現(xiàn)的一個用戶態(tài)的文件系統(tǒng),主要包括gluster、glusterd、glusterfs和glusterfsd四大模塊組成:
gluster:是cli命令執(zhí)行工具,主要功能是解析命令行參數(shù),然后把命令發(fā)送給glusterd模塊執(zhí)行。
glusterd:是一個管理模塊,處理gluster發(fā)過來的命令,處理集群管理、存儲池管理、brick管理、負載均衡、快照管理等。集群信息、存儲池信息和快照信息等都是以配置文件的形式存放在服務(wù)器中,當客戶端掛載存儲時,glusterd會把存儲池的配置文件發(fā)送給客戶端。
glusterfsd:是服務(wù)端模塊,存儲池中的每個brick都會啟動一個glusterfsd進程。此模塊主要是處理客戶端的讀寫請求,從關(guān)聯(lián)的brick所在磁盤中讀寫數(shù)據(jù),然后返回給客戶端。
glusterfs:是客戶端模塊,負責(zé)通過mount掛載集群中某臺服務(wù)器的存儲池,以目錄的形式呈現(xiàn)給用戶。當用戶從此目錄讀寫數(shù)據(jù)時,客戶端根據(jù)從glusterd模塊獲取的存儲池的配置文件信息,通過DHT算法計算文件所在服務(wù)器的brick位置,然后通過Infiniband RDMA 或Tcp/Ip 方式把數(shù)據(jù)發(fā)送給brick,等brick處理完,給用戶返回結(jié)果。存儲池的副本、條帶、hash、EC等邏輯都在客戶端處理。
在使用glusterfs提供的存儲服務(wù)之前,需要先掛載存儲池,向掛載點寫數(shù)據(jù),會經(jīng)過fuse內(nèi)核模塊傳給客戶端,客戶端檢查存儲池的類型,然后計算數(shù)據(jù)所在服務(wù)器 ,最后通過socket或rdma與服務(wù)器通信,如圖2所示:
glusterfs模塊關(guān)系圖
Glusterfs作為一款開源的分布式文件系統(tǒng),在開源社區(qū)的活躍度很高,目前已經(jīng)被紅帽收購,國內(nèi)外也有大量的用戶在研究和應(yīng)用,相關(guān)技術(shù)文檔很豐富。它并不完美,為了支持線性擴展和高性能,而在小文件性能和元數(shù)據(jù)性能上做了讓步,但卻可以滿足一定的場景,如大數(shù)據(jù)應(yīng)用和視頻存儲等。
接下來會從優(yōu)點和缺點兩方面入手來介紹glusterfs。
優(yōu)點
無元數(shù)據(jù)節(jié)點性能瓶頸
采用無中心對稱式架構(gòu),沒有專用的元數(shù)據(jù)服務(wù)器,也就不存在元數(shù)據(jù)服務(wù)器瓶頸。元數(shù)據(jù)存在于文件的屬性和擴展屬性中。當需要訪問某文件時,客戶端使用DHT算法,根據(jù)文件的路徑和文件名計算出文件所在brick,然后由客戶端從此brick獲取數(shù)據(jù),省去了同元數(shù)據(jù)服務(wù)器通信的過程。
良好的可擴展性
使用彈性hash算法代替?zhèn)鹘y(tǒng)的有元數(shù)據(jù)節(jié)點服務(wù),獲得了接近線性的高擴展性。
高可用
采用副本、EC等冗余設(shè)計,保證在冗余范圍內(nèi)的節(jié)點掉線時,仍然可以從其它服務(wù)節(jié)點獲取數(shù)據(jù),保證高可用性。采用弱一致性的設(shè)計,當向副本中文件寫入數(shù)據(jù)時,客戶端計算出文件所在brick,然后通過網(wǎng)絡(luò)把數(shù)據(jù)傳給所在brick,當其中有一個成功返回,就認為數(shù)據(jù)成功寫入,不必等待其它brick返回,就會避免當某個節(jié)點網(wǎng)絡(luò)異?;虼疟P損壞時因為一個brick沒有成功寫入而導(dǎo)致寫操作等待。
服務(wù)器端還會隨著存儲池的啟動,而開啟一個glustershd進程,這個進程會定期檢查副本和EC卷中各個brick之間數(shù)據(jù)的一致性,并恢復(fù)。
存儲池類型
豐富包括粗粒度、條帶、副本、條帶副本和EC,可以根據(jù)用戶的需求,滿足不同程度的冗余。粗粒度卷不帶任何冗余,文件不進行切片,是完整的存放在某個brick上。
條帶卷不帶任何冗余,文件會切片存儲(默認大小為128kB)在不同的brick上。這些切片可以并發(fā)讀寫(并發(fā)粒度是條帶塊),可以明顯提高讀寫性能。該模式一般只適合用于處理超大型文件和多節(jié)點性能要求高的情況。
副本卷冗余度高,副本數(shù)量可以靈活配置,可以保證數(shù)據(jù)的安全性。
條帶副本卷是條帶卷和副本卷的結(jié)合。
EC卷使用EC校驗算法,提供了低于副本卷的冗余度,冗余度小于100%,滿足比較低的數(shù)據(jù)安全性,例如可以使2+1(冗余度為50%)、5+3(冗余度為60%)等。這個可以滿足安全性要求不高的數(shù)據(jù)。
高性能
采用弱一致性的設(shè)計,向副本中寫數(shù)據(jù)時,只要有一個brick成功返回,就認為寫入成功,不必等待其它brick返回,這樣的方式比強一致性要快。
還提供了I/O并發(fā)、write-behind、read-ahead、io-cache、條帶等提高讀寫性能的技術(shù)。并且這些都還可以根據(jù)實際需求進行開啟/關(guān)閉,i/o并發(fā)數(shù)量,cache大小都可以調(diào)整。
缺點
擴容、縮容時影響的服務(wù)器較多
Glusterfs對邏輯卷中的存儲單元brick劃分hash分布空間(會以brick所在磁盤大小作為權(quán)重,空間總范圍為0至232-1),一個brick占一份空間,當訪問某文件時,使用Davies-Meyer算法根據(jù)文件名計算出hash值,比較hash值落在哪個范圍內(nèi),即可確定文件所在的brick,這樣定位文件會很快。但是在向邏輯卷中添加或移除brick時,hash分布空間會重新計算,每個brick的hash范圍都會變化,文件定位就會失敗,因此需要遍歷文件,把文件移動到正確的hash分布范圍對應(yīng)的brick上,移動的文件可能會很多,加重系統(tǒng)負載,影響到正常的文件訪問操作。
遍歷目錄下文件耗時
1.Glusterfs沒有元數(shù)據(jù)節(jié)點,而是根據(jù)hash算法來確定文件的分布,目錄利用擴展屬性記錄子卷的中brick的hash分布范圍,每個brick的范圍均不重疊。遍歷目錄時,需要readdir子卷中每個brick中的目錄,獲取每個文件的屬性和擴展屬性,然后進行聚合,相對于有專門元數(shù)據(jù)節(jié)點的分布式存儲,遍歷效率會差很多,當目錄下有大量文件時,遍歷會非常緩慢。
2.刪除目錄也會遇到同樣的問題。
3.目前提供的解決方法是合理組織目錄結(jié)構(gòu),目錄層級不要太深,目錄下文件數(shù)量不要太多,增大glusterfs目錄緩存。另外,還可以設(shè)計把元數(shù)據(jù)和數(shù)據(jù)分離,把元數(shù)據(jù)放到內(nèi)存數(shù)據(jù)庫中(如redis、memcache),并在ssd上持久保存。
小文件性能較差
1.Glusterfs主要是為大文件設(shè)計,如io-cache、read-ahead、write-behind和條帶等都是為優(yōu)化大文件訪問,對小文件的優(yōu)化很少。
2.Glusterfs采用無元數(shù)據(jù)節(jié)點的設(shè)計,文件的元數(shù)據(jù)和數(shù)據(jù)一起保存在文件中,訪問元數(shù)據(jù)和數(shù)據(jù)的速率相同,訪問元數(shù)據(jù)的時間與訪問數(shù)據(jù)的時間比例會較大,而有元數(shù)據(jù)中心的分布式存儲系統(tǒng),對元數(shù)據(jù)服務(wù)器可以采用更快速的ssd盤,可以采用更大的元數(shù)據(jù)緩存等優(yōu)化措施來減小訪問元數(shù)據(jù)時間與訪問數(shù)據(jù)時間的比值,來提高小文件性能。
3.Glusterfs在客戶端采用了元數(shù)據(jù)緩存md-cache來提高小文件性能,但是md-cache大小有限,但在海量小文件場景下,緩存命中率會嚴重下降,優(yōu)化效果會減小,這就需要增大元數(shù)據(jù)緩存。
4.針對小文件性能差的問題,也可以參考TFS的做法, TFS會將大量的小文件合并成一個大文件,這個大文件稱為Block,每個Block擁有在集群內(nèi)唯一的編號(Block Id),Block Id在NameServer創(chuàng)建Block時分配,NameServer維護block與DataServer(存儲Block的實際數(shù)據(jù))的關(guān)系。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
GlusterFS集群文件系統(tǒng)研究
GFS分布式文件系統(tǒng)
GlusterFS分布式存儲
開源分布式存儲系統(tǒng)筆記
分布式存儲元數(shù)據(jù)主流設(shè)計方法剖析
分布式文件系統(tǒng)glusterfs學(xué)習(xí)筆記(一)安裝
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服