摘?要:隨著制造工藝的發(fā)展,NAND閃存顆粒的存儲(chǔ)容量越來(lái)越大,固態(tài)驅(qū)動(dòng)器(SSD)的價(jià)格得以降低,全閃存存儲(chǔ)逐漸成為主流。但在容量提升的同時(shí),閃存顆粒的性能越來(lái)越低,使用壽命也越來(lái)越短,存儲(chǔ)系統(tǒng)中的數(shù)據(jù)損壞風(fēng)險(xiǎn)直線上升。另一方面,新型的持久內(nèi)存(PMEM)介質(zhì)和設(shè)備不斷出現(xiàn),其擁有持久性、字節(jié)尋址、高性能、低延遲的特性,使用壽命和性能都遠(yuǎn)大于SSD。通過(guò)合理的系統(tǒng)設(shè)計(jì),可以充分發(fā)揮二者的優(yōu)勢(shì),利用PMEM優(yōu)化閃存的性能和壽命,構(gòu)建高性價(jià)比的全閃存存儲(chǔ)系統(tǒng)。
關(guān)鍵詞:SSD;PMEM;持久內(nèi)存;閃存;耐久度;性能
隨著技術(shù)的發(fā)展,主流固態(tài)驅(qū)動(dòng)器(SSD)使用的閃存顆粒從SLC、MLC、TLC逐步過(guò)渡到QLC,加之3D NAND堆疊工藝,使得閃存顆粒的容量越來(lái)越大,容量型SSD具有較高的性價(jià)比,可用于取代傳統(tǒng)機(jī)械硬盤(pán)(HDD),構(gòu)建全閃存存儲(chǔ)。但隨之而來(lái)的是,QLC閃存顆粒的性能和耐久度遠(yuǎn)低于TLC,主流的QLC只能擦除500~1000次,更適合用來(lái)構(gòu)建溫?cái)?shù)據(jù)或冷數(shù)據(jù)存儲(chǔ)。當(dāng)用于存儲(chǔ)需要頻繁修改的熱數(shù)據(jù)時(shí),閃存磨損過(guò)快,SSD損壞的風(fēng)險(xiǎn)直線上升。QLC的性能降低也導(dǎo)致數(shù)據(jù)訪問(wèn)延遲上升,故而無(wú)法承載諸如OLTP數(shù)據(jù)庫(kù)等對(duì)性能要求較高的在線業(yè)務(wù)。
與此同時(shí),以電阻式存儲(chǔ)器(ReRAM)、磁阻式存儲(chǔ)器(MRAM)、相變存儲(chǔ)器(PCM)等為代表的持久內(nèi)存(PMEM)技術(shù)近年來(lái)得到了大幅的發(fā)展,其擁有持久性、字節(jié)尋址、高性能、低延遲的特性。持久內(nèi)存的性能與易失性內(nèi)存(DRAM)接近,可擦寫(xiě)次數(shù)和延遲都大幅優(yōu)于TLC、QLC等閃存介質(zhì)。
Intel在2019年發(fā)布傲騰數(shù)據(jù)中心持久內(nèi)存Optane DCPMM,容量有128GB、256GB、512GB三種規(guī)格。雖然持久內(nèi)存具有很多的優(yōu)秀特性,但相比SSD來(lái)說(shuō),其價(jià)格仍然較高、容量也較小。
QLC SSD容量大,價(jià)格低,但壽命較短,PMEM性能高,壽命長(zhǎng),但容量偏小,二者具有較強(qiáng)的互補(bǔ)性。如何針對(duì)二者的特征,設(shè)計(jì)面向高負(fù)載場(chǎng)景的閃存存儲(chǔ),是本文要解決的問(wèn)題。
基于持久內(nèi)存的高性能和字節(jié)尋址特性,本文提出了一種面向PMEM優(yōu)化的閃存存儲(chǔ)系統(tǒng),通過(guò)將PMEM與閃存設(shè)備同時(shí)使用,優(yōu)化數(shù)據(jù)讀寫(xiě)的策略,極大地降低了閃存的讀寫(xiě)次數(shù),從而延長(zhǎng)其使用壽命;同時(shí),發(fā)揮PMEM的高性能特征,降低請(qǐng)求延遲,提升系統(tǒng)的并發(fā)IOPS。相比于使用TLC SSD搭建閃存存儲(chǔ),基于PMEM和QLC SSD搭建的閃存存儲(chǔ),在性能和成本上都具備較為明顯的優(yōu)勢(shì)。
1 系統(tǒng)設(shè)計(jì)
本系統(tǒng)基于PMEM和SSD搭建混合存儲(chǔ),通過(guò)識(shí)別頻繁讀寫(xiě)的熱點(diǎn)數(shù)據(jù),以及對(duì)SSD不友好的小粒度IO,將其存儲(chǔ)到PMEM中,從而優(yōu)化SSD壽命和系統(tǒng)整體性能。
基于QLC SSD搭建本系統(tǒng)時(shí),能達(dá)到最好的性價(jià)比。TLC SSD的壽命問(wèn)題沒(méi)有QLC SSD突出,但基于TLC SSD搭建本存儲(chǔ)系統(tǒng)時(shí)仍然可以獲得更好的系統(tǒng)性能表現(xiàn),降低滿足同等性能要求時(shí)所花費(fèi)的硬件成本。
系統(tǒng)整體架構(gòu)如圖1所示。一方面,本系統(tǒng)根據(jù)讀寫(xiě)請(qǐng)求的數(shù)據(jù)大小,確定其寫(xiě)入位置;另一方面,根據(jù)數(shù)據(jù)的讀寫(xiě)頻度識(shí)別熱點(diǎn)數(shù)據(jù),并按需將冷熱數(shù)據(jù)在持久內(nèi)存和SSD之間遷移,可以達(dá)到優(yōu)化性能和閃存壽命的目的。
1.1 小粒度IO寫(xiě)策略
小粒度IO指小于4KB的請(qǐng)求。SSD的page(更新操作的最小粒度)大小通常都是4KB,對(duì)于小于4KB的寫(xiě)請(qǐng)求將通過(guò)Read-Modify-Write完成寫(xiě)入,即首先讀取4KB的原始內(nèi)容設(shè)備的緩存中,然后將修改的數(shù)據(jù)合并到緩存,最后重新寫(xiě)入完整的4KB數(shù)據(jù)。此時(shí),更新操作的性能較低,寫(xiě)放大也較大。
由于PMEM是字節(jié)尋址的,當(dāng)小粒度IO寫(xiě)入PMEM時(shí),可以直接寫(xiě)入存儲(chǔ)介質(zhì),而無(wú)需執(zhí)行Read-Modify-Write過(guò)程。無(wú)論從性能還是耐久度方面考慮,將小粒度IO寫(xiě)入PMEM都是一個(gè)更優(yōu)的選擇??梢赃_(dá)到優(yōu)化性能和SSD壽命的雙重目的。
1.2 中等粒度IO寫(xiě)策略
中等粒度IO指介于4KB和2MB之間的請(qǐng)求。對(duì)于此類請(qǐng)求,同樣優(yōu)先寫(xiě)入PMEM。此策略主要是考慮到減少閃存中數(shù)據(jù)的移動(dòng)和擦除操作,以優(yōu)化閃存的壽命。
雖然SSD的更新操作以page為粒度,但FTL(Flash Translation Layer)層執(zhí)行擦除操作時(shí),需要以block為單位進(jìn)行。一個(gè)block中包含若干個(gè)page,典型的block大小為2MB。當(dāng)4KB-2MB大小的隨機(jī)數(shù)據(jù)寫(xiě)入閃存時(shí),會(huì)分配新的page進(jìn)行存儲(chǔ),同時(shí)將舊的page標(biāo)記為無(wú)效。此時(shí),無(wú)效數(shù)據(jù)在block的連續(xù)空間上形成空洞。隨著數(shù)據(jù)的不斷寫(xiě)入,F(xiàn)TL需要執(zhí)行垃圾收集(GC)操作,將有效數(shù)據(jù)塊進(jìn)行移動(dòng),然后擦除和回收完整的block空間。
本系統(tǒng)對(duì)于4KB-2MB大小的數(shù)據(jù)直接寫(xiě)入持久內(nèi)存中,并將邏輯上連續(xù)的數(shù)據(jù)不斷的合并成2MB大小的數(shù)據(jù)塊,然后按需將其遷移到SSD中。這樣既減少了SSD的數(shù)據(jù)寫(xiě)入,也減少了FTL層執(zhí)行垃圾收集時(shí)數(shù)據(jù)的移動(dòng)和擦除操作,從而減少了閃存的磨損。同時(shí),因?yàn)槌志脙?nèi)存優(yōu)秀的性能,將數(shù)據(jù)直接寫(xiě)入持久內(nèi)存也提高了系統(tǒng)的整體性能表現(xiàn)。
1.3 大粒度IO寫(xiě)策略
大粒度IO指2MB以上的IO,對(duì)于此類數(shù)據(jù)會(huì)直接寫(xiě)入閃存中。一方面,現(xiàn)有的PMEM設(shè)備在大粒度IO的吞吐率上優(yōu)勢(shì)不明顯;另一方面,由于中小粒度IO已寫(xiě)入PMEM,故此時(shí)數(shù)據(jù)寫(xiě)入閃存時(shí)大概率是順序存儲(chǔ)的,閃存block中出現(xiàn)空洞的概率較小,從而減輕了FTL層執(zhí)行垃圾收集的頻率和開(kāi)銷。
1.4 熱點(diǎn)數(shù)據(jù)
除了按照數(shù)據(jù)粒度進(jìn)行區(qū)分之外,本系統(tǒng)還針對(duì)數(shù)據(jù)讀寫(xiě)頻度進(jìn)行統(tǒng)計(jì),并將熱點(diǎn)數(shù)據(jù)優(yōu)先存儲(chǔ)到PMEM中。一方面,對(duì)于與頻繁讀取的數(shù)據(jù),將其存儲(chǔ)到PMEM中可以顯著降低讀取延遲,提升訪問(wèn)性能;另一方面,對(duì)于頻繁更新的數(shù)據(jù),將寫(xiě)操作轉(zhuǎn)移到PMEM,也可以進(jìn)一步優(yōu)化SSD的壽命。
2 數(shù)據(jù)放置策略
對(duì)于上述4類數(shù)據(jù),在寫(xiě)入時(shí)根據(jù)類型不同,優(yōu)先寫(xiě)入PMEM或SSD,并根據(jù)PMEM的空間容量,以及數(shù)據(jù)熱點(diǎn)的識(shí)別情況進(jìn)行遷移。
當(dāng)PMEM剩余空間不足時(shí),需要將數(shù)據(jù)刷寫(xiě)到SSD中,以釋放存儲(chǔ)空間。當(dāng)熱點(diǎn)數(shù)據(jù)變更時(shí),則需要將SSD中的數(shù)據(jù)緩存到PMEM,以提升訪問(wèn)性能。
2.1 中小粒度IO寫(xiě)流程
小粒度IO和中等粒度IO的寫(xiě)入流程相同,即優(yōu)先寫(xiě)入PMEM。具體步驟為:
(1)從索引獲取數(shù)據(jù)在持久內(nèi)存中的地址;
(2)若該地址有效,轉(zhuǎn)到步驟5;
(3)否則,在持久內(nèi)存中分配存儲(chǔ)空間;成功申請(qǐng)空間后,跳轉(zhuǎn)到步驟5;
(4)否則,觸發(fā)持久內(nèi)存空間回收機(jī)制;然后重新申請(qǐng)分配存儲(chǔ)空間,即跳轉(zhuǎn)回步驟3;
(5)將數(shù)據(jù)寫(xiě)入持久內(nèi)存;
(6)更新索引信息。
需要指出的是,隨著PMEM使用空間的增加,當(dāng)中小粒度IO再次寫(xiě)入時(shí),可能實(shí)際已遷移到SSD中。此時(shí),仍然可以通過(guò)上述流程將新數(shù)據(jù)寫(xiě)入PMEM,同時(shí)回收SSD存儲(chǔ)空間。
由于SSD實(shí)際總是執(zhí)行異地寫(xiě)入,故保留該SSD空間以用于后續(xù)可能的PMEM空間回收(此時(shí)該數(shù)據(jù)被再次遷移到SSD)并不會(huì)產(chǎn)生實(shí)際收益。立即回收該空間,同時(shí)向SSD發(fā)送TRIM或UNMAP指令反而更加有利于優(yōu)化SSD的垃圾收集。
2.2 大粒度IO寫(xiě)流程
大粒度IO優(yōu)先寫(xiě)入SSD,但仍然應(yīng)當(dāng)先在空間索引中查詢其是否存儲(chǔ)在PMEM中,因?yàn)榇罅6菼O可能被識(shí)別為熱點(diǎn)數(shù)據(jù)而遷移到PMEM中。
如果數(shù)據(jù)不在PMEM中,則按如下流程處理:
(1)獲取數(shù)據(jù)在SSD中的空間地址;
(2)若該地址已存在且有效,轉(zhuǎn)到步驟5;
(3)在SSD中分配存儲(chǔ)空間地址;
(4)將數(shù)據(jù)寫(xiě)入SSD地址對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)空間;
(5)更新索引信息。
與PMEM空間不同,當(dāng)無(wú)法分配SSD存儲(chǔ)空間時(shí),則意味著整個(gè)系統(tǒng)的可用容量不足,寫(xiě)流程將會(huì)返回失敗信息,提示用戶進(jìn)行清理或擴(kuò)容操作。
2.3 PMEM空間回收
隨著數(shù)據(jù)的寫(xiě)入,PMEM剩余空間逐步減少。當(dāng)達(dá)到設(shè)定的閾值時(shí),觸發(fā)持久內(nèi)存空間回收機(jī)制。根據(jù)數(shù)據(jù)放置的策略,持久內(nèi)存中的數(shù)據(jù)可能包括讀寫(xiě)熱點(diǎn)數(shù)據(jù)、中等粒度數(shù)據(jù),以及小粒度數(shù)據(jù)。其中,熱點(diǎn)數(shù)據(jù)可能是大粒度數(shù)據(jù),也可能是中小粒度數(shù)據(jù)。
執(zhí)行空間回收時(shí),需要按恰當(dāng)?shù)膬?yōu)先級(jí)處理上述各類數(shù)據(jù),以達(dá)到最佳效果。具體而言,按照熱點(diǎn)數(shù)據(jù)(大粒度)、中等粒度數(shù)據(jù)、小粒度數(shù)據(jù)、熱點(diǎn)數(shù)據(jù)(中小粒度)的順序進(jìn)行回收。這樣排序的目的是盡快釋放更多的持久內(nèi)存空間,此外,將更大粒度的數(shù)據(jù)寫(xiě)入SSD時(shí),寫(xiě)放大更低,對(duì)垃圾收集的影響也更小。
當(dāng)PMEM剩余空間滿足預(yù)定比例后,回收即告終止。
2.4 熱點(diǎn)數(shù)據(jù)遷移
對(duì)于頻繁訪問(wèn)的熱點(diǎn)數(shù)據(jù),可以將其從閃存空間遷移到持久內(nèi)存空間,即對(duì)數(shù)據(jù)按熱度進(jìn)行分級(jí)存儲(chǔ)。熱點(diǎn)數(shù)據(jù)從SSD遷移到PMEM的具體步驟如下:
(1)根據(jù)熱點(diǎn)數(shù)據(jù)識(shí)別算法識(shí)別閃存中的熱點(diǎn)數(shù)據(jù);
(2)申請(qǐng)熱點(diǎn)數(shù)據(jù)的持久內(nèi)存的空間地址;若持久內(nèi)存不足導(dǎo)致申請(qǐng)失敗,則直接結(jié)束;
(3)將熱點(diǎn)數(shù)據(jù)寫(xiě)入持久內(nèi)存中對(duì)應(yīng)的地址;
(4)更新熱點(diǎn)數(shù)據(jù)的索引信息,講閃存空間地址替換為持久內(nèi)存空間地址。
當(dāng)PMEM空間申請(qǐng)失敗時(shí),可以認(rèn)為PMEM空間回收操作正在進(jìn)行,故無(wú)須在本流程中實(shí)現(xiàn)額外的空間回收機(jī)制。
結(jié)語(yǔ)
通過(guò)在閃存存儲(chǔ)中引入持久內(nèi)存設(shè)備,并針對(duì)持久內(nèi)存和閃存的IO特征優(yōu)化數(shù)據(jù)讀寫(xiě)策略,本系統(tǒng)提升了閃存存儲(chǔ)的性能和壽命。尤其是QLC閃存介質(zhì)的SSD,其使用場(chǎng)景得到了擴(kuò)展,使得基于低成本的容量型SSD搭建高性能閃存存儲(chǔ)成為可能,有效地降低了系統(tǒng)的整體擁有成本。
大多數(shù)系統(tǒng)中的IO都是中小粒度的IO,故而,使用PMEM優(yōu)化閃存存儲(chǔ)的好處顯而易見(jiàn),在獲得極大的IOPS提升的同時(shí),SSD的寫(xiě)入次數(shù)也相應(yīng)降低,有效延長(zhǎng)了SSD的使用壽命。
隨著RDMA技術(shù)的普及,通過(guò)高速網(wǎng)絡(luò)訪問(wèn)持久內(nèi)存的技術(shù)和規(guī)范也日趨成熟,在低延遲網(wǎng)絡(luò)上搭建基于持久內(nèi)存和SSD的分布式閃存存儲(chǔ)也成為可能,大容量、高性能的分布式存儲(chǔ)有著廣泛的應(yīng)用前景,是未來(lái)主要的技術(shù)發(fā)展方向。
參考文獻(xiàn):
[1]陸游游,舒繼武.閃存存儲(chǔ)系統(tǒng)綜述[J].計(jì)算機(jī)研究與發(fā)展,2013,50(01):49-59.
[2]鄧傲松.閃存友好型文件系統(tǒng)性能優(yōu)化技術(shù)的設(shè)計(jì)[D].重慶大學(xué),2018.
[3]石亮.閃存存儲(chǔ)系統(tǒng)的性能優(yōu)化研究[D].中國(guó)科學(xué)技術(shù)大學(xué),2013.
[4]曾祥偉.基于閃存特性的固態(tài)盤(pán)緩存算法研究[D].暨南大學(xué),2020.
[5]李棋.基于閃存文件系統(tǒng)的存儲(chǔ)技術(shù)研究[D].重慶大學(xué),2019.
[6]韓書(shū)楷,熊子威,蔣德鈞,熊勁.基于持久化內(nèi)存的索引設(shè)計(jì)重新思考與優(yōu)化[J].計(jì)算機(jī)研究與發(fā)展,2021,58(02):356-370.
[7]徐遠(yuǎn)超.面向新型非易失存儲(chǔ)的文件系統(tǒng)研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2021,38(06):1601-1610.
[8]肖仁智,馮丹,胡燏翀,張曉祎,程良鋒.面向非易失內(nèi)存的數(shù)據(jù)一致性研究綜述[J].計(jì)算機(jī)研究與發(fā)展,2020,57(01):85-101.
[9]王佰平.基于新型非易失存儲(chǔ)的混合內(nèi)存數(shù)據(jù)頁(yè)交換算法研究[D].重慶大學(xué),2019.
基金項(xiàng)目:國(guó)家重點(diǎn)研發(fā)計(jì)劃(2018YFB1003302);廣東省科研事業(yè)單位重點(diǎn)領(lǐng)域研發(fā)計(jì)劃項(xiàng)目(2020B010139 0001)
作者簡(jiǎn)介:陳正華(1983—?),男,工程師,CCF會(huì)員,研究方向:分布式存儲(chǔ)、持久內(nèi)存、高性能網(wǎng)絡(luò)。