深度解析SSD在ceph中的幾種應(yīng)用場(chǎng)景
在云計(jì)算和大數(shù)據(jù)趨勢(shì)下,企業(yè)數(shù)據(jù)存儲(chǔ)和虛擬化應(yīng)用需求海量增長(zhǎng)。基于業(yè)界標(biāo)準(zhǔn)X86服務(wù)器,采用全分布式無(wú)共享(Share Nothing)架構(gòu)的分布式存儲(chǔ)系統(tǒng),憑借其自身高可靠、高擴(kuò)展、低成本的優(yōu)勢(shì),得到了越來(lái)越廣泛的應(yīng)用。其中,Ceph因其自身先進(jìn)的架構(gòu),活躍的社區(qū)成為了Server SAN領(lǐng)域的翹楚。但低成本并不是Server SAN唯一的發(fā)展方向,市場(chǎng)上也同樣亟需高性能的Server SAN產(chǎn)品。
另一方面,近幾年來(lái)SSD發(fā)展迅速,技術(shù)不斷地成熟,容量及密度越來(lái)越大,價(jià)格越來(lái)越低,但其“容量?jī)r(jià)格比”相較于HDD仍有一定差距,SSD全面取代HDD仍需時(shí)日。
基于以上現(xiàn)狀,討論SSD與Ceph的融合應(yīng)用,使用高速但少量的SSD來(lái)滿(mǎn)足關(guān)鍵性業(yè)務(wù)或IO敏感型業(yè)務(wù)對(duì)性能的需求,達(dá)到成本與性能的平衡,對(duì)生產(chǎn)實(shí)踐有著重要的意義。
本文總結(jié)了Ceph集群中使用SSD的幾種典型場(chǎng)景,作出了比較,并給出了推薦的使用方式:
1.作為Ceph-osd的日志盤(pán)使用
假設(shè)磁盤(pán)正在執(zhí)行一個(gè)寫(xiě)操作,此時(shí)由于發(fā)生磁盤(pán)錯(cuò)誤,或者系統(tǒng)宕機(jī)、斷電等其他原因,導(dǎo)致只有部分?jǐn)?shù)據(jù)寫(xiě)入成功。這種情況就會(huì)出現(xiàn)磁盤(pán)上的數(shù)據(jù)有一部分是舊數(shù)據(jù),另一部分是新寫(xiě)入的數(shù)據(jù),使得磁盤(pán)數(shù)據(jù)不一致。
Ceph引入事務(wù)與日志,來(lái)實(shí)現(xiàn)數(shù)據(jù)寫(xiě)盤(pán)操作的原子性,并解決數(shù)據(jù)不一致的問(wèn)題。即所謂的“ceph數(shù)據(jù)雙寫(xiě)”:先把數(shù)據(jù)全部封裝成一個(gè)事務(wù),將其整體作為一條日志,寫(xiě)入ceph-osd journal,然后再把數(shù)據(jù)定時(shí)回刷寫(xiě)入對(duì)象文件,將其持久化到ceph-osd filestore中。
基于以上過(guò)程,可以將SSD作為ceph-osd journal的底層存儲(chǔ)設(shè)備,來(lái)加速寫(xiě)入性能。同時(shí),由于SSD設(shè)備IO性能較高,可以將SSD劃分成多個(gè)分區(qū),以配比多個(gè)HDD設(shè)備使用。
該方案的優(yōu)點(diǎn)
該方案的優(yōu)點(diǎn)為使用高速的SSD設(shè)備加速ceph-osd journal的寫(xiě)入性能,尤其是對(duì)小塊數(shù)據(jù)隨機(jī)IO的場(chǎng)景,加速效果尤為明顯。
該方案的缺點(diǎn)
該方案的缺點(diǎn)為由于ceph-osd journal在實(shí)現(xiàn)邏輯上具有循環(huán)寫(xiě)入、定期回刷的特性,其對(duì)SSD設(shè)備容量空間的利用率很低。典型場(chǎng)景下,SSD設(shè)備與HDD設(shè)備的配比為1:4,而每塊HDD設(shè)備一般只使用10GB的SSD設(shè)備分區(qū),造成了SSD設(shè)備容量空間的浪費(fèi)。
2.作為Ceph數(shù)據(jù)多副本中的主副本存儲(chǔ)介質(zhì)使用
Ceph使用多副本機(jī)制來(lái)保證數(shù)據(jù)的安全性。
針對(duì)于寫(xiě)操作,在多份副本之間,ceph使用強(qiáng)一致性寫(xiě)策略,來(lái)保證數(shù)據(jù)的一致性。Ceph的PG(Placement Group)依據(jù)Crush偽隨機(jī)算法,選擇出副本數(shù)個(gè)數(shù)的ceph-osd存放數(shù)據(jù),其中PG中的第一個(gè)osd為主osd,其他osd為從osd。Ceph先在主osd寫(xiě)入數(shù)據(jù)主副本,再由主osd將數(shù)據(jù)同時(shí)分發(fā)至其他多個(gè)從osd,進(jìn)行數(shù)據(jù)從副本的寫(xiě)入。
針對(duì)于讀操作,ceph的讀取請(qǐng)求只在主副本所在osd進(jìn)行。
基于以上過(guò)程,可以將SSD作為數(shù)據(jù)多份副本中的主副本底層存儲(chǔ)介質(zhì)使用,來(lái)加速I(mǎi)O讀寫(xiě)性能。
該方案的優(yōu)點(diǎn)
該方案的優(yōu)點(diǎn)為利用SSD設(shè)備高性能優(yōu)勢(shì),對(duì)于寫(xiě)操作,縮短了數(shù)據(jù)第一份副本的寫(xiě)入執(zhí)行時(shí)間;對(duì)于讀操作,全部請(qǐng)求操作SSD設(shè)備,讀請(qǐng)求能夠快速處理并返回。
該方案的缺點(diǎn)
該方案的缺點(diǎn)為由于集群副本數(shù)的限制,SSD設(shè)備的容量空間必須與HDD設(shè)備容量空間有嚴(yán)格的配比關(guān)系。否則,由于木桶原理,一方先被寫(xiě)滿(mǎn),另外一方剩余的存儲(chǔ)空間就無(wú)法再被ceph使用,從而出現(xiàn)存儲(chǔ)容量空間的浪費(fèi)。
3.構(gòu)建小規(guī)模全SSD邏輯池單獨(dú)使用
該方案的優(yōu)點(diǎn)
該方案的優(yōu)點(diǎn)為充分利用SSD設(shè)備高性能的優(yōu)勢(shì),將關(guān)鍵性業(yè)務(wù)或者IO敏感型業(yè)務(wù)全部放入高性能存儲(chǔ)池,為客戶(hù)提供性能優(yōu)越的存儲(chǔ)服務(wù)。
該方案的缺點(diǎn)
該方案的缺點(diǎn)為受到成本限制,高性能存儲(chǔ)池存儲(chǔ)容量規(guī)模會(huì)比較小,只能針對(duì)性地對(duì)少數(shù)關(guān)鍵性業(yè)務(wù)或者IO敏感型業(yè)務(wù)進(jìn)行服務(wù)質(zhì)量保障,且業(yè)務(wù)一經(jīng)規(guī)劃部署至某個(gè)存儲(chǔ)池后,不能在兩個(gè)存儲(chǔ)池之間進(jìn)行自動(dòng)轉(zhuǎn)換,后期進(jìn)行調(diào)整開(kāi)銷(xiāo)較大。
4.作為Cache層使用
可以將SSD作為Cache層,自動(dòng)地對(duì)冷、熱數(shù)據(jù)進(jìn)行分層存儲(chǔ),來(lái)達(dá)到對(duì)業(yè)務(wù)智能服務(wù)的目的。
在數(shù)據(jù)的不同生命周期里,其訪(fǎng)問(wèn)的頻度截然不同,即使是在同一生命周期的不同類(lèi)型的數(shù)據(jù),其訪(fǎng)問(wèn)的頻率也會(huì)不同。因此,在“信息生命周期管理”的基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)一步進(jìn)行分層存儲(chǔ)十分必要。
自動(dòng)分層存儲(chǔ)技術(shù)的目標(biāo)在于把用戶(hù)訪(fǎng)問(wèn)頻率高的數(shù)據(jù)放置在高性能、小容量的存儲(chǔ)介質(zhì)中,把大量低頻訪(fǎng)問(wèn)的數(shù)據(jù)放置在大容量、性能相對(duì)較低的存儲(chǔ)介質(zhì)中。在提供熱點(diǎn)數(shù)據(jù)存儲(chǔ)性能的同時(shí),降低存儲(chǔ)成本:首先,冷數(shù)據(jù)可以自由安全地遷移到更低層的存儲(chǔ)介質(zhì)中,這樣可以節(jié)約存儲(chǔ)成本;其次,熱點(diǎn)數(shù)據(jù)可以自動(dòng)的從低層存儲(chǔ)層遷移到高層存儲(chǔ)層,提高訪(fǎng)問(wèn)熱點(diǎn)數(shù)據(jù)的性能。
在ceph中,有以下兩種實(shí)現(xiàn)方案:
(1)作為Ceph Cache Tiering技術(shù)中的Cache層
在Ceph里,Cache Tiering模塊在邏輯存儲(chǔ)池層面進(jìn)行設(shè)置??梢詫⒁粋€(gè)邏輯存儲(chǔ)池設(shè)置為另一個(gè)邏輯存儲(chǔ)池的cache層。據(jù)此,可以用SSD設(shè)備組建熱數(shù)據(jù)存儲(chǔ)池作為緩存層,用HDD設(shè)備組建冷數(shù)據(jù)存儲(chǔ)池作為存儲(chǔ)層,來(lái)達(dá)到冷、熱數(shù)據(jù)分離的目的,Cache Tiering模塊處理緩存層和存儲(chǔ)層之間數(shù)據(jù)的自動(dòng)遷移,對(duì)應(yīng)用而言,遷移操作透明、無(wú)感知。
該方案的優(yōu)點(diǎn)
該方案的優(yōu)點(diǎn)為可以充分地利用SSD設(shè)備高性能以及HDD設(shè)備大容量的優(yōu)勢(shì),智能地對(duì)冷、熱數(shù)據(jù)進(jìn)行分層存放。
該方案的缺點(diǎn)
該方案的缺點(diǎn)為ceph在cache tiering模塊的邏輯實(shí)現(xiàn)尚在驗(yàn)證階段,暫時(shí)不建議生產(chǎn)環(huán)境使用。
(2)與HDD設(shè)備綁定作為混合盤(pán)的Cache層
在通用塊層將SSD設(shè)備與HDD設(shè)備進(jìn)行綁定,提供一個(gè)邏輯上的device-mapper層塊設(shè)備,該邏輯設(shè)備的數(shù)據(jù)IO首先發(fā)生在SSD設(shè)備上,再定期回刷至HDD設(shè)備中。邏輯設(shè)備內(nèi)部維護(hù)冷、熱數(shù)據(jù)在緩存層與存儲(chǔ)層之間的自動(dòng)遷移,且對(duì)應(yīng)用透明、無(wú)感知。使用這些邏輯上的混合盤(pán)作為ceph-osd的底層存儲(chǔ)設(shè)備,構(gòu)建存儲(chǔ)集群,同樣可以達(dá)到集群層面數(shù)據(jù)自動(dòng)分層存儲(chǔ)的效果。
該方案的優(yōu)點(diǎn)
該方案的優(yōu)點(diǎn)同樣為可以充分地利用SSD設(shè)備高性能以及HDD設(shè)備大容量的優(yōu)勢(shì),智能地對(duì)冷、熱數(shù)據(jù)進(jìn)行分層存放,且不涉及ceph代碼邏輯的修改,底層邏輯設(shè)備的組建及數(shù)據(jù)處理過(guò)程對(duì)ceph而言完全透明。
該方案的缺點(diǎn)
該方案的缺點(diǎn)為架構(gòu)稍顯復(fù)雜,需要更多的管理、維護(hù)開(kāi)銷(xiāo)。
推薦使用方式
綜上,當(dāng)前階段較為推薦的使用方式為結(jié)合方案1與方案4,即將SSD設(shè)備同時(shí)用作日志緩存與數(shù)據(jù)緩存使用。
以典型的SATA 3.0的SSD設(shè)備為例,先將SSD設(shè)備進(jìn)行多個(gè)分區(qū),配比多塊HDD設(shè)備,其中SSD的部分分區(qū)先與HDD設(shè)備進(jìn)行混合存儲(chǔ)邏輯塊設(shè)備的構(gòu)建,生成的混合盤(pán)再與SSD的剩余分區(qū)進(jìn)行配對(duì),共同構(gòu)成ceph-osd的file store以及file journal。
這種使用方式,可以最大化地利用SSD設(shè)備的性能與容量,為ceph集群的全部業(yè)務(wù)應(yīng)用提供普適性、智能化的存儲(chǔ)服務(wù),達(dá)到性能與成本的平衡。