本工作發(fā)表于ATC 2021。當(dāng)前基于閃存的 SSD 保留了幾十年前的塊接口,這使得在容量過度配置、用于頁面映射表的DRAM、垃圾回收開銷以及試圖減輕垃圾回收的主機(jī)軟件復(fù)雜性等方面付出了巨大的代價。分區(qū)命名空間 (ZNS) 接口為這種不斷增加的塊接口稅提供了庇護(hù)。ZNS使基于閃存的SSD具有更高的性能和更低的每字節(jié)成本。通過將管理擦除塊內(nèi)數(shù)據(jù)組織的責(zé)任從FTL層轉(zhuǎn)移到主機(jī)軟件,ZNS消除了設(shè)備內(nèi)LBA到頁的映射、垃圾回收和OP空間。

01?背景
目前基于閃存的固態(tài)硬盤保持著幾十年前的塊層接口,這在容量超額配置、頁面映射表的DRAM、垃圾回收開銷以及試圖減輕垃圾回收的主機(jī)軟件復(fù)雜性等方面帶來了巨大的代價。塊層接口向其上層展現(xiàn)出來的是一個一維的LBA數(shù)組,每個LBA都可以被讀寫,其最初的引用是為了隱藏存儲介質(zhì)的不同。然而隨著存儲介質(zhì)的迭代,為flash based存儲設(shè)備維護(hù)塊層接口語義代價越來越大,如flash based SSDs中FTL的運(yùn)轉(zhuǎn)需要大量DRAM,GC需要OP空間,并且設(shè)備請求命令延遲被GC干擾后有抖動。
02?問題
塊接口稅
現(xiàn)代存儲設(shè)備,如SSD和SMR HDD,采取的是與塊層接口不匹配的記錄技術(shù)。這種不匹配導(dǎo)致了性能和操作成本的降低。在基于閃存的固態(tài)硬盤上,一個空的閃存頁可以在寫入時被編程,但覆蓋它需要一個擦除操作,這個操作只能在擦除塊(一組一個或多個閃存塊,每個塊包括多個頁面)的粒度上發(fā)生。對于固態(tài)硬盤暴露出的塊層接口,F(xiàn)TL必須管理一些功能,如使用隨處寫的方法進(jìn)行就地更新,將主機(jī)邏輯塊地址(LBA)映射到物理設(shè)備頁面,垃圾回收陳舊數(shù)據(jù),并確保擦除塊的均衡磨損。
但是,F(xiàn)TL對性能和操作成本有很大影響。為了避免就地更新的媒介限制,每個LBA寫入都被引導(dǎo)到下一個可用的位置。因此,主機(jī)放棄了對物理數(shù)據(jù)放置的控制,而由FTL執(zhí)行。此外,舊的、陳舊的數(shù)據(jù)版本必須被垃圾回收,導(dǎo)致正在進(jìn)行的操作的性能不可預(yù)測性。由于需要進(jìn)行垃圾回收,必須在設(shè)備上分配物理資源。這就要求媒體超額配置總?cè)萘康?8%,以便在物理地址之間移動數(shù)據(jù)。還需要額外的DRAM來維持邏輯和物理地址之間的易失性映射。容量超額配置和DRAM是固態(tài)硬盤中最昂貴的部件,導(dǎo)致每千兆字節(jié)可用容量的成本更高。

圖1 多線程寫入工作負(fù)載的吞吐量
現(xiàn)有的減稅策略可能是低效的
降低塊層接口稅主要包含兩種方法:支持流的SSD (Stream SSD) 和開放通道SSD (OCSSD)。
Stream SSD允許主機(jī)用流提示來標(biāo)記其寫入命令。流提示由Stream SSD解釋,允許它將傳入的數(shù)據(jù)區(qū)分到不同的擦除塊上,從而提高固態(tài)硬盤的整體性能和介質(zhì)壽命。流式固態(tài)硬盤要求主機(jī)仔細(xì)標(biāo)記具有相似壽命的數(shù)據(jù),以減少垃圾回收。如果主機(jī)將不同壽命的數(shù)據(jù)混合到同一個數(shù)據(jù)流中,Stream SSD的行為與塊層接口固態(tài)硬盤類似。Stream SSD必須攜帶資源來管理這樣的事件,所以Stream SSD不會舍棄塊層接口固態(tài)硬盤的額外介質(zhì)超額配置和DRAM的成本。
OCSSD允許主機(jī)和固態(tài)硬盤通過一組連續(xù)的LBA塊進(jìn)行合作。OCSSD可以將這些塊暴露出來,使其與媒體的物理擦除塊邊界一致。這消除了設(shè)備內(nèi)的垃圾收集開銷,并減少了媒體超額配置和DRAM的成本。在OCSSD中,主機(jī)負(fù)責(zé)數(shù)據(jù)放置。這包括底層介質(zhì)的可靠性管理,如磨損平衡,以及特定的介質(zhì)故障特征(取決于OCSSD類型)。這有可能提高固態(tài)硬盤的性能和介質(zhì)壽命,但主機(jī)必須管理不同的固態(tài)硬盤實(shí)現(xiàn)的差異,以保證耐用性,使接口難以采用,并需要不斷的軟件維護(hù)。
03?方法
NVMe分區(qū)命名空間命令集規(guī)范,簡稱為ZNS,最近被引入作為基于閃存的SSD的新接口標(biāo)準(zhǔn)。ZNS接口代表了主機(jī)軟件和基于閃存的SSD之間的新功能劃分。ZNS提供了對這種不斷增長的塊層接口稅的庇護(hù)。
Zoned存儲模型
Zoned Storage model,最初的思想來源于SMR HDDs和OCSSDs,誕生于無需兼容塊接口同時又滿足存儲設(shè)備的需要。ZNS接口提供了與媒介無關(guān)的下一代存儲接口。
Zoned Storage model中存儲設(shè)備的管理單位為zone,zone是一組連續(xù)LBA的集合。在zone中,支持random read,但是write必須是順序的,對zone的over write需要對整塊zone進(jìn)行reset。
每個zone有其各自的狀態(tài),如empty、full、opened、closed,zone的狀態(tài)表達(dá)了其在該zone中的操作限制。且由于資源的限制,處于opened狀態(tài)的zones的數(shù)量受到設(shè)備限制。

圖2 zone邏輯概念圖
ZNS SSD設(shè)計(jì)架構(gòu)
ZNS SSDs的設(shè)計(jì)主要考慮兩方面,一是硬件方面,二是使應(yīng)用適應(yīng)ZNS接口方面。
1. 硬件方面:
ZNS SSDs放棄了對隨機(jī)寫的支持,隨之而來的使由host端負(fù)責(zé)GC工作。在ZNS SSDs' FTL的設(shè)計(jì)需要考慮以下的權(quán)衡。
Zone Sizing:Zone Size不同產(chǎn)生的效果也不同。Size小的則host有更多的數(shù)據(jù)放置自由度,代價是zone可能無法橫跨所有die而對單個zone的讀寫達(dá)不到flash的滿帶寬。而Size大的則host放置數(shù)據(jù)自由度低,而帶來的結(jié)果是單個zone的讀寫帶寬很高。
Mapping Table:塊層接口SSDs中的FTL維護(hù)著lba粒度的全相聯(lián)mapping table,1TB的存儲介質(zhì)大約需要1GB的mapping table。在ZNS SSDs中可以考慮將更改mapping table的粒度,如到zone粒度,以減少DRAM的使用。
Device Resources:每個opened zone都需要一定的設(shè)備資源來維護(hù)元數(shù)據(jù)。同時SSDs內(nèi)部資源有限,如DRAM、Channel等。ZNS SSDs中所有的zones共享這些資源,所以SSDs進(jìn)行了active zones的數(shù)量限制。通??上拗仆瑫r活動的zones的數(shù)量為8-32個。
2. 軟件方面:
目前討論三種使主機(jī)軟件適配于ZNS interface的方法,分別是主機(jī)端FTL、文件系統(tǒng)和端到端數(shù)據(jù)放置。
Host-side FTL:主機(jī)端FTL充當(dāng)應(yīng)用端隨機(jī)寫、in-place update與ZNS SSDs端順序?qū)懻Z義的橋梁。主機(jī)端FTL在主機(jī)端控制數(shù)據(jù)放置和垃圾回收,暴漏給應(yīng)用傳統(tǒng)的塊層接口。
File Systems:目前的文件系統(tǒng)大部分都是in-place writes,并不適應(yīng)Zoned存儲模型。一些LFS文件系統(tǒng)如f2fs、btrfs和zfs已經(jīng)添加了對Zones的支持。但如f2fs和btrfs對zone model的支持僅限于在SCSI中的ZAC/ZBC,本文是對f2fs進(jìn)行修改以對ZNS's zone model進(jìn)行支持。
End-to-End Data Placement:理想情況下zone-write語義應(yīng)該與應(yīng)用中的數(shù)據(jù)結(jié)構(gòu)完全匹配,以達(dá)到最小的寫放大、最高的帶寬和最低的延遲。此類應(yīng)用的合適候選者為RocksDB、CacheLib等。本文展示了ZenFS作為RocksDB的存儲后端的性能。

圖3 ZenFS架構(gòu)圖
04?實(shí)驗(yàn)結(jié)果
評估實(shí)驗(yàn)是基于一個生產(chǎn)型固態(tài)硬盤硬件平臺上進(jìn)行的,該平臺該平臺可以將自己暴露為塊狀接口固態(tài)硬盤或ZNS固態(tài)硬盤。硬件平臺的配置如下:

表1 實(shí)驗(yàn)平臺設(shè)置
實(shí)驗(yàn)性能對比包含三個方面,分別為原始設(shè)備I/O性能、端到端的應(yīng)用性能和與ZNS SSD vs Stream SSD。
原始設(shè)備I/O性能:該實(shí)驗(yàn)主要對ZNS SSD和傳統(tǒng)塊層接口SSD的吞吐量進(jìn)行評估。ZNS SSD由于最大化減小了塊層接口稅,所以體現(xiàn)出更優(yōu)秀的吞吐量。塊層接口SSD的目標(biāo)寫入速度高達(dá)300MiB/s(0% OP)和500MiB/s(28% OP),而ZNS固態(tài)硬盤的寫入速度為1GiB/s。實(shí)驗(yàn)結(jié)果驗(yàn)證了ZNS SSD可以很好的避免塊層接口稅開銷問題。

圖4 吞吐量優(yōu)化實(shí)驗(yàn)結(jié)果
????端到端的應(yīng)用性能:該實(shí)驗(yàn)主要對RocksDB在不同的文件系統(tǒng)作為存儲后端的性能評估。通過修改文件系統(tǒng)為ZNS SSD管理提供支持,從而獲取更優(yōu)的吞吐量。兩個基準(zhǔn)測試都顯示XFS和F2fs設(shè)置的性能低于F2fs(ZNS)和ZenFS。最重要的影響出現(xiàn)在overwrite基準(zhǔn)中,其中垃圾收集的開銷嚴(yán)重影響了整體性能。ZenFS比XFS快183%,而f2fs(ZNS)的表現(xiàn) 比XFS好42%,比f2fs好33%。

圖5 IOPS優(yōu)化實(shí)驗(yàn)結(jié)果
ZNS SSD vs Stream SSD:該實(shí)驗(yàn)主要對ZNS SSD和Stream SSD的性能評估。在具有 7% OP并且在 XFS 和 f2fs 之上啟用或禁用流的塊層接口 SSD上執(zhí)行的fillrandom和overwrite基準(zhǔn)測試的吞吐量。在啟用流的 SSD 上,XFS上的RocksDB在fillrandom和overwrite上分別提高了11%和16%的吞吐量。在啟用流的 SSD 上,f2fs上的RocksDB在fillrandom和overwrite分別提高了24%和4%的吞吐量。與f2fs(Streams)相比,f2fs (ZNS)的吞吐量分別提高了 17% 和 44%。

圖6 ZNS SSD vs Stream SSD性能對比實(shí)驗(yàn)結(jié)果
05?總結(jié)
ZNS使基于閃存的固態(tài)硬盤具有更高的性能和更低的每字節(jié)成本。通過將管理擦除塊內(nèi)數(shù)據(jù)組織的責(zé)任從FTL轉(zhuǎn)移到主機(jī)軟件,ZNS消除了設(shè)備內(nèi)LBA到頁的映射、垃圾回收和OP空間。文章對ZNS專用的F2FS和RocksDB實(shí)施的實(shí)驗(yàn)表明,與在相同的SSD硬件上運(yùn)行的傳統(tǒng)FTL相比,在寫吞吐量、讀尾部延遲和寫放大方面有很大的改進(jìn)。
致謝
感謝本次論文解讀者,來自華東師范大學(xué)的準(zhǔn)博士生宋云鵬,主要研究方向?yàn)檐浻布f(xié)同設(shè)計(jì)。
編輯:黃飛
?
電子發(fā)燒友App























評論