【應(yīng)用】撩開(kāi)分布式存儲(chǔ)神秘面紗
VBS是計(jì)算數(shù)據(jù)塊存儲(chǔ)位置的重要網(wǎng)元。一個(gè)VBS就是一個(gè)“機(jī)頭”。VBS部署很靈活,有很多種部署方法,可以根據(jù)不同的需求進(jìn)行選擇。比如,在VMWARE虛擬機(jī)中,可以在物理機(jī)上開(kāi)設(shè)一臺(tái)虛擬機(jī)部署VBS,在XEN/KVM部署在domain0上;或者部署在每臺(tái)OSD服務(wù)器上,或?qū)iT(mén)設(shè)置VBS服務(wù)器群。
VBS采取一致性哈希算法,如圖3,將數(shù)據(jù)塊的邏輯地址計(jì)算出KEY值。并將計(jì)算出來(lái)的KEY映射到哈希環(huán)上,在哈希環(huán)上劃分了N段(Partition),每個(gè)Partition對(duì)應(yīng)一個(gè)硬盤(pán),并根據(jù)出partition主和osd節(jié)點(diǎn)的映射關(guān)系ioview,和partitio主備對(duì)應(yīng)的osd關(guān)系,得到該數(shù)據(jù)塊的路由,如圖4。在寫(xiě)入的時(shí)候,采用強(qiáng)一致性,即當(dāng)主和備副本都返回寫(xiě)成功后,才認(rèn)為這個(gè)IO寫(xiě)成功了。讀IO時(shí)只讀主副本,當(dāng)主副本故障的時(shí)候,會(huì)在備副本中選舉出主副本。目前,一個(gè)資源池可以支持2000塊硬盤(pán)。
操作系統(tǒng)看到的連續(xù)的數(shù)據(jù)邏輯地址(LBA),實(shí)際上被打散到資源池內(nèi)所有硬盤(pán)上了,類(lèi)似所有硬盤(pán)都做了raid0,這樣就利用了所有磁盤(pán)的性能,提高了存儲(chǔ)的性能。操作系統(tǒng)實(shí)際是直接讀寫(xiě)物理磁盤(pán)的塊,并沒(méi)有封裝額外的文件系統(tǒng),是一個(gè)raw設(shè)備。
OSD是一臺(tái)插了較多硬盤(pán)的X86服務(wù)器,我們采用的是12塊SATA3T的硬盤(pán)作為數(shù)據(jù)的持久化存儲(chǔ)介質(zhì)。如果VBS不承載在OSD上,那么OSD服務(wù)器的計(jì)算壓力實(shí)際上很小,也沒(méi)有必要配置計(jì)算能力很強(qiáng)、內(nèi)存配置很高的服務(wù)器。上一篇文章計(jì)算過(guò),12塊SATA盤(pán)提供的iops或吞吐量其實(shí)很有限,需要配置SSD作為緩存,加速存儲(chǔ)的性能。由此看來(lái),分布式存儲(chǔ)的性能是由SSD的性能和熱點(diǎn)數(shù)據(jù)計(jì)算算法決定的。和一般存儲(chǔ)不同,一般分布式存儲(chǔ)的寫(xiě)性能會(huì)好于讀性能。主要是主和備副本寫(xiě)入SSD就返回成功了,而SSD什么時(shí)候?qū)懭胗脖P(pán),怎么寫(xiě)入硬盤(pán),客戶(hù)端是不知道的。而讀數(shù)據(jù)的時(shí)候,如果數(shù)據(jù)是熱點(diǎn)數(shù)據(jù),已經(jīng)在緩存在SSD上,性能會(huì)很好,如果沒(méi)有在緩存中,就需要到硬盤(pán)中直接讀取,那性能就很差了。這也是當(dāng)分布式存儲(chǔ)在初始化的時(shí)候,測(cè)試性能指標(biāo)不如運(yùn)行一段時(shí)間后的指標(biāo)。所以測(cè)試分布式存儲(chǔ)有很多陷阱,大家要注意。
為了提高存儲(chǔ)的安全性,達(dá)到6個(gè)9以上的安全性,我們采取的是通行的3副本(2副本在96塊盤(pán)以下,可以達(dá)到6個(gè)9)。副本可以根據(jù)實(shí)際情況設(shè)置成為在不同機(jī)架、不同服務(wù)器、不同硬盤(pán)的安全級(jí)別。當(dāng)磁盤(pán)或主機(jī)故障,會(huì)被MDC監(jiān)控到,會(huì)選舉主副本、踢出故障點(diǎn)、重構(gòu)副本等操作。為了確保數(shù)據(jù)的安全,副本重構(gòu)的時(shí)間很關(guān)鍵,我們要求,每T數(shù)據(jù)重構(gòu)時(shí)間不超過(guò)30分鐘。
為了確保數(shù)據(jù)重構(gòu)流量不影響正常存儲(chǔ)IO訪(fǎng)問(wèn)流量,實(shí)現(xiàn)快速數(shù)據(jù)重構(gòu)。我們沒(méi)有采取華為推薦的網(wǎng)絡(luò)方案,而是采用環(huán)形虛擬化堆疊的方案,交換機(jī)間的堆疊鏈路采用40G光路,如圖5。將存儲(chǔ)的重構(gòu)流量都?jí)褐圃诖鎯?chǔ)環(huán)形網(wǎng)絡(luò)中。交換機(jī)到服務(wù)器采用2*10G連接,可以根據(jù)情況采用主備或分擔(dān)的模式。
說(shuō)過(guò)了“塊”存儲(chǔ),再簡(jiǎn)單了解一下“對(duì)象存儲(chǔ)”。對(duì)象存儲(chǔ)是在同樣容量下提供的存儲(chǔ)性能比文件存儲(chǔ)更好,又能像文件存儲(chǔ)一樣有很好的共享性。實(shí)際使用中,性能不是對(duì)象存儲(chǔ)最關(guān)注的問(wèn)題,需要高性能可以用塊存儲(chǔ),容量才是對(duì)象存儲(chǔ)最關(guān)注的問(wèn)題。所以對(duì)象存儲(chǔ)的持久化層的硬盤(pán)數(shù)量更多,單盤(pán)的容量也更大。對(duì)象存儲(chǔ)的數(shù)據(jù)的安全性保障也各式各樣,可以是單機(jī)raid或網(wǎng)絡(luò)raid,也可以副本。對(duì)性能要求不高,可以直接用普通磁盤(pán),或利用raid卡的緩存,也可以配些SSD作為緩存。我們現(xiàn)在使用單機(jī)35塊7200轉(zhuǎn)4TSATA盤(pán)+raid卡緩存加速的自研對(duì)象存儲(chǔ),并計(jì)劃在今年使用60塊7200轉(zhuǎn)8TSATA盤(pán)。即每臺(tái)服務(wù)器提供480T的裸容量。Ceph和google基于GFS的存儲(chǔ)就是典型的對(duì)象存儲(chǔ)。
Ceph是目前最為熱門(mén)的存儲(chǔ),可以支持多種接口。Ceph存儲(chǔ)的架構(gòu)和華為的FusionStorage異曲同工,都是靠“算”而不是“查”。一種是為數(shù)眾多的、負(fù)責(zé)完成數(shù)據(jù)存儲(chǔ)和維護(hù)功能的OSD,另一種則是若干個(gè)負(fù)責(zé)完成系統(tǒng)狀態(tài)檢測(cè)和維護(hù)的monitor。OSD和monitor之間相互傳輸節(jié)點(diǎn)狀態(tài)信息,共同得出系統(tǒng)的總體工作狀態(tài),并形成一個(gè)全局系統(tǒng)狀態(tài)記錄數(shù)據(jù)結(jié)構(gòu),即所謂的clustermap。這個(gè)數(shù)據(jù)結(jié)構(gòu)與特定算法相配合,便實(shí)現(xiàn)了Ceph“無(wú)需查表,算算就好”的核心機(jī)制以及若干優(yōu)秀特性。
但數(shù)據(jù)的的組織方法是不同的。首先ceph的核心是一個(gè)對(duì)象存儲(chǔ),是以對(duì)象為最小組織單位。1、首先文件是被映射成為一個(gè)或多個(gè)對(duì)象。2、然后每個(gè)對(duì)象再被映射到PG(PlacementGroup)上,PG和對(duì)象之間是“一對(duì)多”映射關(guān)系。3、而PG會(huì)映射到n個(gè)OSD上,n就是副本數(shù),OSD和PG是“多對(duì)多”的關(guān)系。
由若干個(gè)monitor共同負(fù)責(zé)整個(gè)Ceph集群中所有OSD狀態(tài)的發(fā)現(xiàn)與記錄,并且共同形成clustermap的master版本,然后擴(kuò)散至全體OSD以及客戶(hù)端。OSD使用clustermap進(jìn)行數(shù)據(jù)的維護(hù),而客戶(hù)端使用clustermap進(jìn)行數(shù)據(jù)的尋址。
Google三大寶之一的“GFS”是google對(duì)象存儲(chǔ)的基礎(chǔ)。
核心不同是數(shù)據(jù)的組織架構(gòu):master服務(wù)器(即元數(shù)據(jù)服務(wù)器)保存了文件名和塊的名字空間、從文件到塊的映射、副本位置,由客戶(hù)端來(lái)查詢(xún)。是一個(gè)典型的信令和媒體分開(kāi)的架構(gòu)。
分布式存儲(chǔ)一般情況下都是靠“副本”來(lái)確保數(shù)據(jù)的安全性和完整性。每塊盤(pán)記錄的數(shù)據(jù)內(nèi)容都不一樣,當(dāng)某一塊盤(pán)出現(xiàn)問(wèn)題,都需要從其他不同盤(pán)內(nèi)的數(shù)據(jù)塊中進(jìn)行快速的數(shù)據(jù)重構(gòu)。數(shù)據(jù)重構(gòu)是需要時(shí)間的,如果大量盤(pán)同時(shí)故障,將會(huì)發(fā)生什么?另外,OSD的擴(kuò)容,也會(huì)導(dǎo)致數(shù)據(jù)的遷移,也會(huì)影響存儲(chǔ)。下一篇,我將最終揭開(kāi)分布式存儲(chǔ)存在的隱患。
責(zé)任編輯:蔣桂云
-
亞坦新能:技術(shù)驅(qū)動(dòng)光伏
2018-04-13光伏 -
【戶(hù)外必備】Biolite隨時(shí)能充電的太陽(yáng)能板
-
超級(jí)電容器在分布式微電網(wǎng)中的應(yīng)用
-
中電聯(lián)公布沿海電煤采購(gòu)指數(shù)CECI第19期:電煤價(jià)格跌破500元
-
把核電帶到人群中 中國(guó)核電核科普步步生花
-
超低排放機(jī)組脫硫漿液循環(huán)泵運(yùn)行方式優(yōu)化
2018-04-13超低排放
-
中國(guó)風(fēng)電新增裝機(jī)容量開(kāi)始走向下行
-
解密低風(fēng)速風(fēng)電開(kāi)發(fā)
-
印度重啟風(fēng)電開(kāi)發(fā)項(xiàng)目 企業(yè)如何把握這一輪復(fù)蘇