1、從ZNS說(shuō)起
Zone Namespace(ZNS)在2020年開(kāi)始廣泛討論,2021年在NVMe協(xié)議組織基本定稿發(fā)布。ZNS對于存儲系統或者云系統,在系統側可控制IO在SSD內的具體寫(xiě)入位置,通過(guò)系統側的主動(dòng)垃圾回收(Garbage Collection,簡(jiǎn)稱(chēng)GC),將SSD內的GC削減到0。一方面,可以減少系統和SSD兩層GC帶來(lái)的寫(xiě)放大和讀寫(xiě)沖突,延長(cháng)盤(pán)片使用壽命,也保證系統帶寬和QoS。另一方面,由于SSD內基本不需要GC,可以減少SSD內的冗余空間(Over-Provisioning,簡(jiǎn)稱(chēng)OP),使OP基本減到零,對于SSD內部管理表項也帶來(lái)簡(jiǎn)化,從而削減企業(yè)級SSD的DRAM。
對于系統應用來(lái)說(shuō),一邊能保性能,一邊能降成本增壽命,這么兩全其美的好處,立即得到了Flash Memory Summit(FMS)、Open Compute Project(OCP)等組織和技術(shù)社區熱議。但是,技術(shù)上只談好處,不談開(kāi)銷(xiāo)是不合理的。筆者認為,ZNS主要的開(kāi)銷(xiāo)是在系統側“做得太多”。
ZNS要求單個(gè)Zone之內的LBA地址,必須是嚴格順序追加寫(xiě)的,與SSD寫(xiě)Flash的方式相對應。系統應用的管理粒度需要與Zone大小對齊,按Zone粒度進(jìn)行寫(xiě)入和回收。這樣,使得系統對SSD的操作方式,與SSD操作NAND的方式相符,SSD將Zone粒度映射到NAND的Block粒度,即可達成零GC的操作。
那么問(wèn)題來(lái)了,嚴格順序追加寫(xiě)對系統應用帶來(lái)的約束太大。如果按ZNS定義的傳統寫(xiě)方式,系統對單個(gè)Zone操作的Queue Depth只能是1,即對一個(gè)Zone只能做串行寫(xiě),這對系統處理的約束很大。后來(lái)ZNS增加Append方式和ZRWA方式作為補充,改善了對追加寫(xiě)的約束,系統用起來(lái)還是會(huì )有些別扭。此外,對于SSD寫(xiě)異常,由于是嚴格順序追加,系統也需要與SSD同步出錯Zone的寫(xiě)位置,Zone能否繼續追加等信息,才能進(jìn)行后續的策略處理。
SSD要獲得零GC收益,必須將Zone粒度和NAND的Block粒度對齊。NAND廠(chǎng)家基于工藝和成本考慮,不同廠(chǎng)家、不同代次的NAND Flash,Block大小均不相同。隨著(zhù)NAND廠(chǎng)家工藝疊層的增加,NAND Block大小持續增大,目前Block大小已基本超過(guò)100MB。這已經(jīng)比系統應用一般的文件或者塊管理粒度要大得多。如果系統應用只通過(guò)Zone跟單Block對齊,要跑滿(mǎn)SSD性能,系統應用還需知道Zone和NAND通道、Die的物理拓撲關(guān)系,才能用滿(mǎn)NAND并發(fā)。如果系統應用希望單Zone能跑滿(mǎn)SSD性能,SSD實(shí)現需要將多個(gè)通道/Die的Block綁定成一個(gè)Zone,這樣單Zone容量都到達GB級別了。此外,SSD盤(pán)內的靜態(tài)Wear Leveling、NAND Data Retention/Disturb等場(chǎng)景,都需要通知系統進(jìn)行搬移。
對消費級的單盤(pán)系統(如手機、筆記本電腦等),本身存儲性能和QoS要求不高,在系統應用算力有剩余情況下,這些約束都可以接受。譬如蘋(píng)果手機通過(guò)類(lèi)ZNS方式獲得了令人驚訝的用戶(hù)體驗。但對于企業(yè)級或者云場(chǎng)景的多盤(pán)存儲系統,情況會(huì )更為復雜。存儲系統需要考慮多供應、壞盤(pán)替換、利舊等場(chǎng)景,很難保證一個(gè)存儲池內都是同NAND廠(chǎng)家同代次的SSD。這樣系統側就會(huì )面對多種Zone粒度的管理,對存儲系統進(jìn)行多備份、EC條帶選擇、垃圾回收等方面設計考慮,都會(huì )變得更為困難。
2、由多流演進(jìn)而來(lái)
2021年,Google帶著(zhù)Flexible Data Placement(FDP)的概念和自研的Smart FTL應用進(jìn)行宣講,并聯(lián)合Meta在2022年逐步把FDP推入到NVMe標準協(xié)議。近期,FDP議題在OCP進(jìn)行了多次演進(jìn)和討論,逐步得到業(yè)界的重視。同樣是為了追求削減SSD GC,降低寫(xiě)放大為目標。FDP和ZNS走的倒是不同的路線(xiàn)。
ZNS沿著(zhù)Open Channel的路線(xiàn)演進(jìn),Open Channel方式本身是把NAND Flash操作向系統應用呈現,通過(guò)系統直接控制NAND Flash操作來(lái)極大化利用NAND。這樣的問(wèn)題是,系統應用需要知道SSD上的NAND具體操作方式和物理拓撲,NAND代次演進(jìn)和廠(chǎng)家差異,系統應用也需要進(jìn)行適配。ZNS是在這基礎上進(jìn)行一層抽象,抽象成Zone粒度和追加寫(xiě)方式,把NAND Flash具體操作和粒度進(jìn)行了一層屏蔽。
Multi-Stream多流則是在標準命令接口上,添加數據的冷熱度標識,由SSD對數據進(jìn)行分類(lèi)存放和GC,來(lái)減少SSD的寫(xiě)放大,這對系統就容易適配多了。SSD在支持多流情況下,也是需要做GC的,這樣只能一定程度的削減OP,譬如從3DWPD盤(pán)改為1DWPD盤(pán)就能符合系統應用;另外,系統應用層面的GC和SSD層面GC沖突,會(huì )帶來(lái)QoS不利影響。后來(lái)IO Determinism主要在于通過(guò)NVM Set對SSD空間進(jìn)行劃分和性能隔離,通過(guò)Deterministic Window (DTWIN)和Non-Deterministic Window (NDWIN)的機制交互,讓系統應用知道SSD的NVM Set的QoS狀態(tài),系統按一定規則可以得到確定性時(shí)延。與Open Channel路線(xiàn)相比,多流路線(xiàn)更看重系統和SSD盤(pán)片的解耦,以及系統應用的向下兼容。由此也更容易獲得系統應用的支持和落地。FDP就是在此路線(xiàn)上做進(jìn)一步精細化演進(jìn)。
3、FDP是什么
從FDP的操作模型來(lái)看,FDP是在IO寫(xiě)命令上,使用Directive Specific (DSPEC)字段(也是stream標識字段),來(lái)標識Reclaim Group和Placement Handle。Placement Handle在SSD內映射到Reclaim Unit Handle。這協(xié)議一下子就整了很多名詞,實(shí)際上,FDP在SSD內就是圍繞Reclaim Group和Reclaim Unit進(jìn)行操作。
SSD可以將并發(fā)NAND拓撲劃分為多個(gè)Reclaim Group,做成Reclaim Group間性能隔離。將SSD內的NAND物理block(或者Super block),劃為Reclaim Unit。那么,Reclaim Unit Handle指向不同的Reclaim Unit,可以理解成寫(xiě)入不同的NAND物理block的寫(xiě)指針。從系統應用看來(lái),就是在標準IO寫(xiě)時(shí),通過(guò)DSPEC標識,指定寫(xiě)入到特定性能隔離區域Reclaim Group里面,放置到按類(lèi)別(不同業(yè)務(wù)類(lèi)型或者冷熱度)區分的Reclaim Unit(即NAND block)。
與ZNS不同,FDP的寫(xiě)方式并沒(méi)有與Reclaim Unit對齊,而且FDP是允許SSD盤(pán)內GC的。這樣,SSD盤(pán)片在NAND異常處理的主動(dòng)權就大得多。FPD定義Reclaim Unit Open時(shí)間,超過(guò)時(shí)間會(huì )造成Reclaim Unit切換。而且,SSD盤(pán)內由于異常處理等原因造成的Reclaim Unit切換都要事件上報。這樣看,FPD就是要求更嚴格的多流或者IOD模式。
但是,FDP通過(guò)一些機制,避免與系統應用GC沖突,盡量減少SSD盤(pán)內GC。FDP定義Estimated Reclaim Unit Time Limit (ERUTL),用于表示Reclaim Unit寫(xiě)入后到被SSD盤(pán)內主動(dòng)回收的時(shí)間。在未到時(shí)間前,系統應用主動(dòng)回收,就不會(huì )觸發(fā)SSD盤(pán)內GC。事實(shí)上,對系統應用中的熱數據或者前臺寫(xiě)入數據,在一定時(shí)間內系統應用進(jìn)行整理回收。而系統中的冷數據,系統應用不會(huì )搬移,SSD內部會(huì )根據NAND特性主動(dòng)進(jìn)行GC和Wear Leveling。對于SSD應用能力較強的系統,可以通過(guò)感知Reclaim Unit粒度,根據Reclaim Unit制定系統GC策略,從而獲得更好的效果。FDP通過(guò)與系統間的模糊策略交互,使SSD盤(pán)只有弱GC,減少寫(xiě)放大,降低SSD盤(pán)的OP。同時(shí)也減少系統和SSD兩層GC沖突,保障系統側的時(shí)延和QoS。
OCP的會(huì )議觀(guān)點(diǎn)中認為,FDP具有比較好的向后兼容能力:1)FDP可以在標準設備中激活;2)應用在不理解FDP的情況下也可獲得收益;3)理解FDP的應用可以獲得更多收益。不修改應用情況下,將不同應用或者不同Namespace分配到不同Reclaim Unit Handle即可獲得收益。
FDP的提案TP4146已經(jīng)在2022年底通過(guò)NVMe正式批準。FDP也在逐步合入Linux Kernel、xNVMe等各大開(kāi)源平臺中(如下圖),接下來(lái)就看應用軟件對接的發(fā)展了。
4、結語(yǔ)
西部數據專(zhuān)家Dave Landsman在OCP會(huì )議研討中,給出的FDP和ZNS的比較如下:
如何獲得系統最大收益,系統和SSD盤(pán)間如何解耦。在系統和SSD盤(pán)片垂直整合發(fā)展過(guò)程中,這兩個(gè)問(wèn)題如何權衡,如何獲得一個(gè)更好的平衡點(diǎn)。在技術(shù)界會(huì )伴隨FDP和ZNS的演進(jìn),繼續討論下去。
5、參考文獻
TP4146a Flexible Data Placement, NVMe
NVM Express Zoned Namespace Command Set Specification, NVMe
SmartFTL SSDs, OCP Global Summit 2021
Flash Innovation: Flexible Data Placement, OCP Global Summit 2022
Flexible Data Placement using NVM Express Implementation Perspective, OCP Global Summit 2022
Flexible Data Placement from the NVM Express Perspective, OCP Global Summit 2022
Flexible Data Placement, 2023 OCP Storage Tech Talks
地址:深圳市南山區記憶科技后海中心B座19樓
電話(huà):0755-2681 3300
郵箱:support@unionmem.com