李新鵬,王 勇,葉 苗
(1.桂林電子科技大學(xué) 計(jì)算機(jī)與信息安全學(xué)院,廣西 桂林 541004;2.桂林電子科技大學(xué) 廣西云計(jì)算與復(fù)雜系統(tǒng)高校重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004;3.桂林電子科技大學(xué) 信息與通信學(xué)院,廣西 桂林 541004)
隨著全球數(shù)據(jù)總量的迅速增長(zhǎng)[1],人類(lèi)已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,為了可靠的存儲(chǔ)這些海量數(shù)據(jù),云存儲(chǔ)應(yīng)運(yùn)而生,其專(zhuān)注于解決海量數(shù)據(jù)的存儲(chǔ)和處理,且隨著云存儲(chǔ)的廣泛應(yīng)用,如何提高云存儲(chǔ)系統(tǒng)的服務(wù)質(zhì)量QoS(quality of service)性能已成為一個(gè)研究熱點(diǎn)[2,3]。
在設(shè)計(jì)一個(gè)云存儲(chǔ)系統(tǒng)時(shí),面臨的首要問(wèn)題就是如何將海量的數(shù)據(jù)分布在不同的存儲(chǔ)節(jié)點(diǎn)上,且盡可能分布均衡,解決這個(gè)問(wèn)題的關(guān)鍵就是要設(shè)計(jì)一個(gè)好的數(shù)據(jù)分布策略,其對(duì)云存儲(chǔ)系統(tǒng)的QoS性能起著至關(guān)重要的作用。以一個(gè)具體的云存儲(chǔ)系統(tǒng)為基礎(chǔ)展開(kāi)研究,Ceph作為最近幾年熱門(mén)研究的云存儲(chǔ)系統(tǒng),不僅具有高擴(kuò)展性、高性能和高可靠性的特點(diǎn),而且實(shí)現(xiàn)了集群真正意義上的無(wú)中心節(jié)點(diǎn)。但是,Ceph的數(shù)據(jù)分布算法CRUSH(controlled replication under scalable hashing)存在數(shù)據(jù)在設(shè)備空間上分布的不均衡問(wèn)題,從而影響分布式存儲(chǔ)系統(tǒng)的讀寫(xiě)QoS性能。針對(duì)此問(wèn)題,從算法的數(shù)據(jù)分布過(guò)程著手進(jìn)行研究、實(shí)驗(yàn),得出放置組PG(placement group)在存儲(chǔ)節(jié)點(diǎn)OSD(object storage daemon)間分布不夠均衡,會(huì)造成用戶(hù)數(shù)據(jù)在各存儲(chǔ)設(shè)備上分布不均衡。在此基礎(chǔ)上,首先將PG在OSD上分布不均衡問(wèn)題建模為分布的PG數(shù)量標(biāo)準(zhǔn)差的優(yōu)化問(wèn)題;然后利用強(qiáng)化學(xué)習(xí)與環(huán)境不斷交互、反饋、自動(dòng)決策及優(yōu)化目標(biāo)的能力,建立強(qiáng)化學(xué)習(xí)模型,訓(xùn)練調(diào)整PG在分布過(guò)程中的OSD權(quán)重,從而在不改變?cè)蠧RUSH算法邏輯的基礎(chǔ)上,使得數(shù)據(jù)在各設(shè)備上分布更加均衡,提高分布式存儲(chǔ)系統(tǒng)的資源利用率和QoS性能。
如何提高云存儲(chǔ)系統(tǒng)的QoS性能已成為一個(gè)研究熱點(diǎn)。研究者從各個(gè)方面嘗試提高存儲(chǔ)系統(tǒng)的QoS性能,方法包括:使用多副本與糾刪碼方法提高系統(tǒng)的可靠性[4,5];使用網(wǎng)絡(luò)編碼與數(shù)據(jù)索引方法降低系統(tǒng)的開(kāi)銷(xiāo)[6,7];以及使用數(shù)據(jù)分布與數(shù)據(jù)遷移方法提高分布式存儲(chǔ)系統(tǒng)負(fù)載的均衡性[8,9]。以下從數(shù)據(jù)分布的角度來(lái)介紹其是如何影響存儲(chǔ)系統(tǒng)的QoS性能,以及對(duì)當(dāng)前的研究現(xiàn)狀、問(wèn)題和改進(jìn)方案展開(kāi)描述。
分布式云存儲(chǔ)系統(tǒng)都有自己的數(shù)據(jù)分布算法, Niu SQ、Wu WG、Zhang XJ等在哈希算法的基礎(chǔ)上提出一種跳躍Hash算法[10],利用二維矩陣來(lái)定位目標(biāo)存儲(chǔ)節(jié)點(diǎn),但是該算法通用性比較受限,在集群中節(jié)點(diǎn)失效的情況下,容易造成集群中同一行內(nèi)的其它節(jié)點(diǎn)負(fù)載過(guò)重,使集群負(fù)載不均衡。針對(duì)Ceph數(shù)分布算法CRUSH偽隨機(jī)性導(dǎo)致的數(shù)據(jù)分布不均衡問(wèn)題,賀昱潔由CRUSH算法改進(jìn)提出了一種B-CRUSH算法,該算法通過(guò)設(shè)計(jì)新的哈希算法、新的Bucket類(lèi)型并設(shè)計(jì)一種自適應(yīng)模型來(lái)優(yōu)化數(shù)據(jù)分布不均衡的問(wèn)題[11],但是該算法對(duì)原有算法的邏輯改動(dòng)較大,破壞了原有算法在集群擴(kuò)容時(shí)數(shù)據(jù)遷移量小的優(yōu)點(diǎn)。穆彥良等提出一種Ceph存儲(chǔ)中基于溫度因子的CRUSH算法改進(jìn)方案[12],所提的算法通過(guò)計(jì)算用戶(hù)寫(xiě)請(qǐng)求訪問(wèn)集群中某個(gè)節(jié)點(diǎn)的頻率,動(dòng)態(tài)增加該節(jié)點(diǎn)的溫度因子,利用溫度因子對(duì)原始CRUSH算法進(jìn)行加權(quán)計(jì)算,得出更適合的存儲(chǔ)節(jié)點(diǎn),但該算法的實(shí)驗(yàn)數(shù)據(jù)不足以說(shuō)明對(duì)多副本數(shù)據(jù)的分布具有同樣的效果。Ceph的新版本Luminous針對(duì)數(shù)據(jù)分布算法CRUSH存在的PG分布不夠均勻的問(wèn)題,在集群上線(xiàn)之前,利用新增的balancer模塊對(duì)PG分布進(jìn)行優(yōu)化,但優(yōu)化效果有限且需要手工配置參數(shù)。
針對(duì)Ceph中數(shù)據(jù)分布算法CRUSH在數(shù)據(jù)分布均衡性方面的不足,在深入研究CRUSH算法的基礎(chǔ)上,結(jié)合強(qiáng)化學(xué)習(xí)提出RL-CRUSH算法,該算法嘗試通過(guò)利用強(qiáng)化學(xué)習(xí)與環(huán)境不斷交互、反饋、自動(dòng)決策及優(yōu)化目標(biāo)的能力,改進(jìn)原有CRUSH算法PG在OSD上的分布不均衡問(wèn)題。
在Ceph云存儲(chǔ)中,對(duì)象是數(shù)據(jù)存儲(chǔ)的基本單元。數(shù)據(jù)存儲(chǔ)的過(guò)程主要是通過(guò)兩次映射完成:首先客戶(hù)端按要求將用戶(hù)文件切分成一個(gè)個(gè)固定大小的對(duì)象,然后在對(duì)象之上添加一個(gè)邏輯層PG,對(duì)象都會(huì)被唯一映射到一個(gè)PG中,最后通過(guò)CRUSH算法按照設(shè)置好的副本規(guī)則把每一個(gè)PG映射到一組OSD節(jié)點(diǎn)中。分析上述過(guò)程可知,造成用戶(hù)數(shù)據(jù)在各個(gè)設(shè)備節(jié)點(diǎn)上分布不均衡的原因可能有兩方面:一方面是對(duì)象的數(shù)量在各PG中分布不均衡,另一方面是PG數(shù)量在各個(gè)OSD節(jié)點(diǎn)上分布不均衡。已有文獻(xiàn)說(shuō)明對(duì)象可以被均衡地映射到各PG中,下面將通過(guò)實(shí)驗(yàn)分析驗(yàn)證PG數(shù)量在各個(gè)OSD間分布不均衡是造成集群中數(shù)據(jù)分布不均衡的原因,從而導(dǎo)致系統(tǒng)瓶頸的產(chǎn)生,影響集群整體QoS性能,本節(jié)將通過(guò)實(shí)驗(yàn)驗(yàn)證數(shù)據(jù)分布不均衡對(duì)集群性能和磁盤(pán)利用率的影響。搭建如圖1所示的Ceph集群拓?fù)浣Y(jié)構(gòu)。
圖1 Ceph集群拓?fù)浣Y(jié)構(gòu)
在上述搭建的Ceph集群中,利用FIO對(duì)Ceph云存儲(chǔ)系統(tǒng)進(jìn)行小、大規(guī)模的讀寫(xiě)性能測(cè)試。在小規(guī)模場(chǎng)景下,對(duì)5000個(gè)大小均為10 MB的對(duì)象進(jìn)行隨機(jī)讀操作,此時(shí),集群的吞吐率可以達(dá)到節(jié)點(diǎn)間最大網(wǎng)卡帶寬;在大規(guī)模場(chǎng)景下(其它測(cè)試參數(shù)與小規(guī)模測(cè)試保持一致),對(duì)9000個(gè)大小均為10 MB的對(duì)象進(jìn)行隨機(jī)讀操作,此時(shí),與小規(guī)模場(chǎng)景下相比,集群的吞吐率下降了25%,如圖2所示。
圖2 小、大規(guī)模隨機(jī)讀性能的測(cè)試
另外,統(tǒng)計(jì)上述測(cè)試過(guò)程中各個(gè)OSD上的PG數(shù)量和磁盤(pán)使用率的關(guān)系,橫坐標(biāo)表示OSD設(shè)備節(jié)點(diǎn)編號(hào),第一縱坐標(biāo)表示PG數(shù)量,第二縱坐標(biāo)表示OSD節(jié)點(diǎn)磁盤(pán)使用率。結(jié)果如圖3所示。
圖3 OSD上的PG數(shù)目與數(shù)據(jù)量的正比關(guān)系
分析圖3可知,首先可以看出各個(gè)OSD上的PG數(shù)量分布很不均勻。例如,OSD4上的PG數(shù)目最多有119個(gè),使用率為94.04%;而OSD2上的PG數(shù)目最少,只有88個(gè),使用率為70.54%。根據(jù)Ceph官方文檔所推薦的經(jīng)驗(yàn)式(1)所示
(1)
可以計(jì)算出上述搭建的Ceph集群的PG總數(shù)量應(yīng)設(shè)置為10*100/2=500,考慮到PG數(shù)目最好為2的整數(shù)次冪,故取值512??梢杂?jì)算出,每個(gè)OSD節(jié)點(diǎn)經(jīng)過(guò)CRUSH算法分配后的平均PG總數(shù)量應(yīng)為512*2/10=102.4,從圖3中分析可知,與每個(gè)OSD的平均PG數(shù)量相比,平均值的變化范圍從-15%到18%,PG分布的標(biāo)準(zhǔn)差為8.85,可以看出,PG在OSD節(jié)點(diǎn)分布很不均勻。其次,圖3中的兩條折線(xiàn)基本重合,這表明OSD節(jié)點(diǎn)上的PG總數(shù)量和節(jié)點(diǎn)使用率兩者之間有直接關(guān)聯(lián),基本成正比關(guān)系。因此可以將數(shù)據(jù)在集群中的分布不均衡問(wèn)題轉(zhuǎn)化為PG在各OSD節(jié)點(diǎn)間的分布不均衡問(wèn)題,也就是說(shuō),各個(gè)OSD節(jié)點(diǎn)間PG數(shù)量分布不均衡直接導(dǎo)致了用戶(hù)數(shù)據(jù)在各設(shè)備上分布不均衡。
為了進(jìn)一步探究在進(jìn)行大規(guī)模隨機(jī)讀測(cè)試時(shí),集群吞吐量下降的原因,統(tǒng)計(jì)了PG數(shù)量最多的OSD4和PG數(shù)量最少的OSD2節(jié)點(diǎn)在測(cè)試期間的利用率,如圖4所示。
圖4 OSD的利用率對(duì)比
分析圖4可知,在大規(guī)模隨即讀測(cè)試的場(chǎng)景下,PG數(shù)量最多的OSD4節(jié)點(diǎn)的利用率一直處于超負(fù)荷狀態(tài),說(shuō)明該OSD負(fù)載過(guò)重,達(dá)到了瓶頸;而PG數(shù)量最少的OSD2節(jié)點(diǎn)的利用率一直處于較低的水平,說(shuō)明該OSD節(jié)點(diǎn)未得到充分利用??梢钥闯?,集群在讀寫(xiě)過(guò)程中,數(shù)據(jù)量較多的OSD節(jié)點(diǎn)必然將承受過(guò)重的負(fù)載,很容易成為系統(tǒng)性能瓶;而另一方面對(duì)數(shù)據(jù)量少的OSD節(jié)點(diǎn),又是一種資源的浪費(fèi),降低系統(tǒng)的QoS性能。
綜合上述實(shí)驗(yàn)分析以及Ceph的存儲(chǔ)過(guò)程,可以得出PG數(shù)量在各個(gè)OSD間分布不均衡是造成集群中數(shù)據(jù)分布不均衡的原因,從而導(dǎo)致磁盤(pán)使用率不均衡、系統(tǒng)瓶頸的產(chǎn)生和降低集群吞吐量。
一個(gè)優(yōu)秀的數(shù)據(jù)分布算法應(yīng)當(dāng)考慮的因素包括:時(shí)間復(fù)雜度、數(shù)據(jù)分布均衡性和數(shù)據(jù)遷移量。時(shí)間復(fù)雜度方面,在集群上線(xiàn)之前,通過(guò)CRUSH算法將PG分布在各個(gè)OSD上,此時(shí),PG和OSD的映射關(guān)系就確定下來(lái),只有在添加、刪除OSD節(jié)點(diǎn)的情況下,才需要重新計(jì)算PG在OSD上的映射,因此服務(wù)端對(duì)時(shí)間要求不嚴(yán)格,并且這種模式不會(huì)影響到客戶(hù)端訪問(wèn)Ceph集群時(shí)計(jì)算OSD的過(guò)程,這就為使用強(qiáng)化學(xué)習(xí)來(lái)改進(jìn)CRUSH算法奠定了基礎(chǔ)。數(shù)據(jù)遷移量方面,Ceph提供了多種選擇一個(gè)item的算法,這些算法統(tǒng)稱(chēng)bucket算法,CRUSH默認(rèn)使用的bucket算法為straw,straw算法可以做到新增和刪除OSD時(shí),只有少量PG產(chǎn)生遷移,從而保證了數(shù)據(jù)遷移量較小。因此,在Ceph集群上線(xiàn)之初時(shí),使用下面提出的RL-CRUSH算法通過(guò)利用強(qiáng)化學(xué)習(xí)與環(huán)境不斷交互、反饋、自動(dòng)決策及優(yōu)化目標(biāo)的能力,改進(jìn)原有CRUSH算法PG在OSD上的分布不均衡問(wèn)題,并保留了原有CRUSH算法數(shù)據(jù)遷移量小的優(yōu)勢(shì)。
基于Q-learning的數(shù)據(jù)分布算法的模型建立包括兩部分:首先將PG數(shù)量在各個(gè)OSD間分布不均衡的問(wèn)題規(guī)劃為標(biāo)準(zhǔn)差的優(yōu)化問(wèn)題;然后將標(biāo)準(zhǔn)差優(yōu)化問(wèn)題轉(zhuǎn)化為可以使用Q-learning算法解決的RL問(wèn)題。
首先介紹第一個(gè)問(wèn)題,將PG數(shù)量在各個(gè)OSD間分布不均衡的問(wèn)題規(guī)劃為求較小標(biāo)準(zhǔn)差的問(wèn)題。假設(shè)Ceph集群中共有:m個(gè)OSD存儲(chǔ)節(jié)點(diǎn)表示為:OSD_Number=(OSD0,OSD1,…,OSDm-1),n個(gè)PG表示為:PG_Number=(PG0,PG1,…,PGn-1),每個(gè)OSD節(jié)點(diǎn)最大的不同就是它們的容量,根據(jù)容量大小每個(gè)OSD有各自的權(quán)重,m個(gè)OSD的權(quán)重集合表示為:Weight=(W0,W1,…,Wm-1)。
CRUSH算法要解決的目標(biāo)就是如何將n個(gè)PG映射到有各自權(quán)重的OSD上,為了便于理解后續(xù)問(wèn)題的建模,這里簡(jiǎn)單介紹一下CRUSH算法的流程。當(dāng)集群中有了上述m個(gè)OSD、n個(gè)PG和m個(gè)OSD的權(quán)重集合,使用CRUSH算法為每一個(gè)PG選擇一組OSD的過(guò)程如下:
第一步:給定一個(gè)PGi,作為CRUSH_HASH的輸入,CRUSH_HASH(PGi,OSDir)得出一個(gè)隨機(jī)數(shù)。第二步:對(duì)于所有的OSD用它們各自的權(quán)重乘以O(shè)SDi對(duì)應(yīng)的隨機(jī)數(shù),得到乘積。第三步:選出乘積最大的OSD節(jié)點(diǎn),這個(gè)PG就會(huì)保存到這個(gè)OSD上。
在計(jì)算第i個(gè)PG的OSD映射位置時(shí),當(dāng)前每個(gè)OSD中的PG數(shù)量分別為
(2)
(3)
CRUSH_PG_Number=(t0,t1,…tm-1)
(4)
下面介紹第二個(gè)問(wèn)題,將標(biāo)準(zhǔn)差優(yōu)化問(wèn)題轉(zhuǎn)化為可以使用Q-learning算法解決的RL問(wèn)題。
Ceph集群中的bucket類(lèi)型均指定為默認(rèn)的straw類(lèi)型,CRUSH默認(rèn)使用的straw算法流程如下,首先給定一個(gè)PGi作為CRUSH_HASH的輸入,利用crush_hash32_rjenkins(PGi,OSDi,r)函數(shù)進(jìn)行哈希得到一個(gè)隨機(jī)數(shù);然后,對(duì)于所有的OSD,用每個(gè)OSD的隨機(jī)數(shù)乘以其對(duì)應(yīng)的權(quán)重,得到乘積并進(jìn)行比較,選出乘積最大的OSD,最終得出PGi映射到該OSD上,上述兩個(gè)過(guò)程均會(huì)導(dǎo)致PG在OSD上的分布不均衡。接著依據(jù)3.1的標(biāo)準(zhǔn)差問(wèn)題模型設(shè)計(jì)Q-learning算法,從而改進(jìn)CRUSH算法的PG在OSD上的分布不均衡問(wèn)題,命名改進(jìn)的算法為RL-CRUSH。結(jié)合上述所提的PG數(shù)量在各個(gè)OSD間分布均衡問(wèn)題,設(shè)計(jì)Q-learning算法模型的狀態(tài)空間、動(dòng)作集合和收益函數(shù),可分別將其定義如下。
定義2 動(dòng)作集合A??紤]到要在上述權(quán)重列表的基礎(chǔ)上,并結(jié)合CRUSH算法計(jì)算OSD的過(guò)程中要利用RL動(dòng)態(tài)調(diào)整各個(gè)OSD的權(quán)重值,設(shè)計(jì)如下兩組動(dòng)作集合
left,right分別表示狀態(tài)s向左、右移動(dòng);left_up,left_down,right_up,right_down分別表示狀態(tài)s向左、右移動(dòng)后選擇的OSD節(jié)點(diǎn)的權(quán)重值向上、下按照步長(zhǎng)調(diào)整權(quán)重。
(5)
圖5 RL-CRUSH算法流程
RL-CRUSH算法中Q值函數(shù)是狀態(tài)和行為的評(píng)價(jià)值,計(jì)算公式為
Q(st,at)=R(st,at)+gmax{(st+1,at+1)}
(6)
其中,st和at表示時(shí)刻t的下一個(gè)狀態(tài)和行為,衰減因子g是滿(mǎn)足0 Qt+1(st,at)=(1-g)Qt(st,at)+g[R(st,at)+gmaxQ(st+1,at+1)] (7) 有了Q值就可以進(jìn)行學(xué)習(xí),然后根據(jù)Q值來(lái)選取能夠獲得最大收益的動(dòng)作。 為全面評(píng)估提出的基于Q-learning的RL-CRUSH算法的有效性,以下將從3個(gè)方面進(jìn)行詳細(xì)的仿真實(shí)驗(yàn)。 (1)在不同規(guī)模OSD的情況下,分別對(duì)比RL-CRUSH算法及CURSH算法的PG數(shù)量分布、PG數(shù)量標(biāo)準(zhǔn)差。 (2)在不同規(guī)模OSD的情況下,分別對(duì)比RL-CRUSH算法及CURSH算法的PG分布訓(xùn)練時(shí)間、PG計(jì)算時(shí)間。 (3)在雙副本、不同規(guī)模OSD的情況下,模擬客戶(hù)端讀取過(guò)程中,計(jì)算PG在OSD上的映射位置,驗(yàn)證同一個(gè)PG映射的OSD集合是否固定。 為了驗(yàn)證本文設(shè)計(jì)的數(shù)據(jù)分布方法的性能和效果,在配置為Windows 10 64位操作系統(tǒng)的Intel Core i3-2330M @2.20 GHz、8 GB內(nèi)存的PC機(jī)上進(jìn)行仿真實(shí)驗(yàn)。使用Python 語(yǔ)言編寫(xiě)算法RL-CRUSH及CRUSH算法中PG到OSD映射機(jī)制的功能,并利用PyCharm工具運(yùn)行算法及對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行收集、分析。 4.2.1 不同規(guī)模OSD,PG數(shù)量及PG數(shù)量標(biāo)準(zhǔn)差對(duì)比 圖6是在3副本的場(chǎng)景下,執(zhí)行CRUSH算法、RL-CRUSH算法分別計(jì)算5、10、15個(gè)OSD上的PG分布,圖6(a)、圖6(b)、圖6(c)每個(gè)OSD上的平均PG數(shù)量分別應(yīng)該為153.6、153.6和102.4??梢钥闯鯟RUSH算法PG在各個(gè)OSD上的分布很不均勻,圖6(a)、圖6(b)、圖6(c)各OSD上的PG數(shù)目相對(duì)平均值的變化范圍分別為:-6.6%到5.4%、-19.6%到17.4%、-14.4%到11.6%,PG分布的標(biāo)準(zhǔn)差分別為4.17、9.23、6.1;分析RL-CRUSH算法的PG分布結(jié)果,從圖6(a)、圖6(b)、圖6(c)計(jì)算可得各OSD上的PG數(shù)目相對(duì)平均值的變化范圍分別為:-1.4%到1.6%、-2.6%到2.4%、-1.4%到3.6%,PG分布的標(biāo)準(zhǔn)差分別為1.02、2、1.5。 圖6 不同規(guī)模OSD的PG數(shù)量分布對(duì)比 4.2.2 不同規(guī)模OSD,PG分布時(shí)間及計(jì)算時(shí)間對(duì)比 表1是在3副本、不同數(shù)量的OSD的場(chǎng)景下,分別執(zhí)行CRUSH算法、RL-CRUSH算法時(shí),PG在OSD上的分布訓(xùn)練時(shí)間以及客戶(hù)端讀取Ceph集群時(shí),計(jì)算PG在OSD節(jié)點(diǎn)映射位置的平均時(shí)間。CRUSH算法沒(méi)有訓(xùn)練過(guò)程,這里只統(tǒng)計(jì)RL-CRUSH算法的分布訓(xùn)練時(shí)間。從表中可以得出相比CRUSH算法,提出的RL-CRUSH算法由于PG在OSD分布過(guò)程中加入了強(qiáng)化學(xué)習(xí)訓(xùn)練的過(guò)程,導(dǎo)致PG在OSD上分布的訓(xùn)練時(shí)間較長(zhǎng)。PG在OSD節(jié)點(diǎn)的分布時(shí)間和均勻性,后者對(duì)Ceph集群使用的作用更為重要。原因有兩點(diǎn):第一,PG在OSD上的分布操作,是在創(chuàng)建Ceph集群時(shí)一次性完成的,此時(shí),集群中還沒(méi)有存儲(chǔ)對(duì)象,對(duì)PG分布進(jìn)行優(yōu)化收益最大,且對(duì)創(chuàng)建集群時(shí)間要求不嚴(yán)格(借鑒Ceph的新版本Luminous新增的balancer模塊對(duì)PG分布進(jìn)行優(yōu)化);第二,當(dāng)客戶(hù)端讀取Ceph集群時(shí),RL-CRUSH算法收斂后,保存最佳OSD權(quán)重值,從而不影響計(jì)算PG在OSD節(jié)點(diǎn)映射位置的時(shí)間,從表中可以看出這一點(diǎn),CRUSH算法和提出的算法讀取時(shí)計(jì)算一個(gè)PG映射位置的平均時(shí)間都是0.9 ms。 表1 OSD上的PG分布訓(xùn)練時(shí)間、計(jì)算時(shí)間比較 4.2.3 不同規(guī)模OSD,計(jì)算PG的OSD映射位置 圖7(a)、圖7(b)是在2副本的場(chǎng)景下,模擬客戶(hù)端讀取Ceph集群時(shí),RL-CRUSH算法計(jì)算PG在OSD上映射位置的過(guò)程。分別在5個(gè)OSD、10個(gè)OSD的情況下,隨機(jī)選取10個(gè)PG進(jìn)行計(jì)算OSD映射位置的尋址操作,例如,圖7(a)中,副本1和副本2的散點(diǎn)分別表示PG.6的第一、第二個(gè)副本存在OSD.0、OSD.2;尋址副本1和尋址副本2的散點(diǎn)分別表示客戶(hù)端訪問(wèn)Ceph集群時(shí),計(jì)算PG.6兩個(gè)副本的映射位置為OSD.0、OSD.2。從圖7中可以看出經(jīng)過(guò)RL-CRUSH算法分布到各個(gè)OSD上的PG,在客戶(hù)端進(jìn)行訪問(wèn)操作時(shí),都可以準(zhǔn)確計(jì)算出PG在OSD上的映射位置,驗(yàn)證了RL-CRUSH算法的有效性。 圖7 不同規(guī)模OSD、2副本下,計(jì)算PG的OSD位置 針對(duì)CRUSH算法存在PG映射到OSD分布不均勻的問(wèn)題,利用強(qiáng)化學(xué)習(xí)改進(jìn)CRUSH算法,提出RL-CRUSH算法來(lái)優(yōu)化PG分布不均勻的問(wèn)題。該算法首先將PG數(shù)量在各個(gè)OSD間分布不均衡的問(wèn)題規(guī)劃為PG數(shù)量標(biāo)準(zhǔn)差的優(yōu)化問(wèn)題,建立問(wèn)題模型;然后依據(jù)問(wèn)題建立強(qiáng)化學(xué)習(xí)模型,包括狀態(tài)空間、動(dòng)作空間和獎(jiǎng)勵(lì)函數(shù)的設(shè)計(jì);最后依據(jù)上述設(shè)計(jì)的RL模型,使用Q-learning算法來(lái)解決問(wèn)題。通過(guò)實(shí)驗(yàn)與結(jié)果分析可知,提出的RL-CRUSH算法在不影響客戶(hù)端訪問(wèn)Ceph集群時(shí),計(jì)算PG到OSD映射時(shí)間的前提下,較好解決了PG分布不均勻的問(wèn)題,使得PG可以近似均勻的分配到各個(gè)OSD上,消除了數(shù)據(jù)分布不均衡帶來(lái)的系統(tǒng)瓶頸,提高OSD磁盤(pán)使用率和云存儲(chǔ)負(fù)載均衡QoS性能。4 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果分析
4.1 實(shí)驗(yàn)環(huán)境
4.2 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果分析
5 結(jié)束語(yǔ)