本工作發(fā)表于ATC 2021。當(dāng)前基于閃存的 SSD 保留了幾十年前的塊接口,這使得在容量過(guò)度配置、用于頁(yè)面映射表的DRAM、垃圾回收開(kāi)銷(xiāo)以及試圖減輕垃圾回收的主機(jī)軟件復(fù)雜性等方面付出了巨大的代價(jià)。分區(qū)命名空間 (ZNS) 接口為這種不斷增加的塊接口稅提供了庇護(hù)。ZNS使基于閃存的SSD具有更高的性能和更低的每字節(jié)成本。通過(guò)將管理擦除塊內(nèi)數(shù)據(jù)組織的責(zé)任從FTL層轉(zhuǎn)移到主機(jī)軟件,ZNS消除了設(shè)備內(nèi)LBA到頁(yè)的映射、垃圾回收和OP空間。
01?背景
目前基于閃存的固態(tài)硬盤(pán)保持著幾十年前的塊層接口,這在容量超額配置、頁(yè)面映射表的DRAM、垃圾回收開(kāi)銷(xiāo)以及試圖減輕垃圾回收的主機(jī)軟件復(fù)雜性等方面帶來(lái)了巨大的代價(jià)。塊層接口向其上層展現(xiàn)出來(lái)的是一個(gè)一維的LBA數(shù)組,每個(gè)LBA都可以被讀寫(xiě),其最初的引用是為了隱藏存儲(chǔ)介質(zhì)的不同。然而隨著存儲(chǔ)介質(zhì)的迭代,為flash based存儲(chǔ)設(shè)備維護(hù)塊層接口語(yǔ)義代價(jià)越來(lái)越大,如flash based SSDs中FTL的運(yùn)轉(zhuǎn)需要大量DRAM,GC需要OP空間,并且設(shè)備請(qǐng)求命令延遲被GC干擾后有抖動(dòng)。
02?問(wèn)題
塊接口稅
現(xiàn)代存儲(chǔ)設(shè)備,如SSD和SMR HDD,采取的是與塊層接口不匹配的記錄技術(shù)。這種不匹配導(dǎo)致了性能和操作成本的降低。在基于閃存的固態(tài)硬盤(pán)上,一個(gè)空的閃存頁(yè)可以在寫(xiě)入時(shí)被編程,但覆蓋它需要一個(gè)擦除操作,這個(gè)操作只能在擦除塊(一組一個(gè)或多個(gè)閃存塊,每個(gè)塊包括多個(gè)頁(yè)面)的粒度上發(fā)生。對(duì)于固態(tài)硬盤(pán)暴露出的塊層接口,F(xiàn)TL必須管理一些功能,如使用隨處寫(xiě)的方法進(jìn)行就地更新,將主機(jī)邏輯塊地址(LBA)映射到物理設(shè)備頁(yè)面,垃圾回收陳舊數(shù)據(jù),并確保擦除塊的均衡磨損。
但是,F(xiàn)TL對(duì)性能和操作成本有很大影響。為了避免就地更新的媒介限制,每個(gè)LBA寫(xiě)入都被引導(dǎo)到下一個(gè)可用的位置。因此,主機(jī)放棄了對(duì)物理數(shù)據(jù)放置的控制,而由FTL執(zhí)行。此外,舊的、陳舊的數(shù)據(jù)版本必須被垃圾回收,導(dǎo)致正在進(jìn)行的操作的性能不可預(yù)測(cè)性。由于需要進(jìn)行垃圾回收,必須在設(shè)備上分配物理資源。這就要求媒體超額配置總?cè)萘康?8%,以便在物理地址之間移動(dòng)數(shù)據(jù)。還需要額外的DRAM來(lái)維持邏輯和物理地址之間的易失性映射。容量超額配置和DRAM是固態(tài)硬盤(pán)中最昂貴的部件,導(dǎo)致每千兆字節(jié)可用容量的成本更高。
圖1 多線程寫(xiě)入工作負(fù)載的吞吐量
現(xiàn)有的減稅策略可能是低效的
降低塊層接口稅主要包含兩種方法:支持流的SSD (Stream SSD) 和開(kāi)放通道SSD (OCSSD)。
Stream SSD允許主機(jī)用流提示來(lái)標(biāo)記其寫(xiě)入命令。流提示由Stream SSD解釋?zhuān)试S它將傳入的數(shù)據(jù)區(qū)分到不同的擦除塊上,從而提高固態(tài)硬盤(pán)的整體性能和介質(zhì)壽命。流式固態(tài)硬盤(pán)要求主機(jī)仔細(xì)標(biāo)記具有相似壽命的數(shù)據(jù),以減少垃圾回收。如果主機(jī)將不同壽命的數(shù)據(jù)混合到同一個(gè)數(shù)據(jù)流中,Stream SSD的行為與塊層接口固態(tài)硬盤(pán)類(lèi)似。Stream SSD必須攜帶資源來(lái)管理這樣的事件,所以Stream SSD不會(huì)舍棄塊層接口固態(tài)硬盤(pán)的額外介質(zhì)超額配置和DRAM的成本。
OCSSD允許主機(jī)和固態(tài)硬盤(pán)通過(guò)一組連續(xù)的LBA塊進(jìn)行合作。OCSSD可以將這些塊暴露出來(lái),使其與媒體的物理擦除塊邊界一致。這消除了設(shè)備內(nèi)的垃圾收集開(kāi)銷(xiāo),并減少了媒體超額配置和DRAM的成本。在OCSSD中,主機(jī)負(fù)責(zé)數(shù)據(jù)放置。這包括底層介質(zhì)的可靠性管理,如磨損平衡,以及特定的介質(zhì)故障特征(取決于OCSSD類(lèi)型)。這有可能提高固態(tài)硬盤(pán)的性能和介質(zhì)壽命,但主機(jī)必須管理不同的固態(tài)硬盤(pán)實(shí)現(xiàn)的差異,以保證耐用性,使接口難以采用,并需要不斷的軟件維護(hù)。
03?方法
NVMe分區(qū)命名空間命令集規(guī)范,簡(jiǎn)稱(chēng)為ZNS,最近被引入作為基于閃存的SSD的新接口標(biāo)準(zhǔn)。ZNS接口代表了主機(jī)軟件和基于閃存的SSD之間的新功能劃分。ZNS提供了對(duì)這種不斷增長(zhǎng)的塊層接口稅的庇護(hù)。
Zoned存儲(chǔ)模型
Zoned Storage model,最初的思想來(lái)源于SMR HDDs和OCSSDs,誕生于無(wú)需兼容塊接口同時(shí)又滿足存儲(chǔ)設(shè)備的需要。ZNS接口提供了與媒介無(wú)關(guān)的下一代存儲(chǔ)接口。
Zoned Storage model中存儲(chǔ)設(shè)備的管理單位為zone,zone是一組連續(xù)LBA的集合。在zone中,支持random read,但是write必須是順序的,對(duì)zone的over write需要對(duì)整塊zone進(jìn)行reset。
每個(gè)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放棄了對(duì)隨機(jī)寫(xiě)的支持,隨之而來(lái)的使由host端負(fù)責(zé)GC工作。在ZNS SSDs' FTL的設(shè)計(jì)需要考慮以下的權(quán)衡。
Zone Sizing:Zone Size不同產(chǎn)生的效果也不同。Size小的則host有更多的數(shù)據(jù)放置自由度,代價(jià)是zone可能無(wú)法橫跨所有die而對(duì)單個(gè)zone的讀寫(xiě)達(dá)不到flash的滿帶寬。而Size大的則host放置數(shù)據(jù)自由度低,而帶來(lái)的結(jié)果是單個(gè)zone的讀寫(xiě)帶寬很高。
Mapping Table:塊層接口SSDs中的FTL維護(hù)著lba粒度的全相聯(lián)mapping table,1TB的存儲(chǔ)介質(zhì)大約需要1GB的mapping table。在ZNS SSDs中可以考慮將更改mapping table的粒度,如到zone粒度,以減少DRAM的使用。
Device Resources:每個(gè)opened zone都需要一定的設(shè)備資源來(lái)維護(hù)元數(shù)據(jù)。同時(shí)SSDs內(nèi)部資源有限,如DRAM、Channel等。ZNS SSDs中所有的zones共享這些資源,所以SSDs進(jìn)行了active zones的數(shù)量限制。通??上拗仆瑫r(shí)活動(dòng)的zones的數(shù)量為8-32個(gè)。
2. 軟件方面:
目前討論三種使主機(jī)軟件適配于ZNS interface的方法,分別是主機(jī)端FTL、文件系統(tǒng)和端到端數(shù)據(jù)放置。
Host-side FTL:主機(jī)端FTL充當(dāng)應(yīng)用端隨機(jī)寫(xiě)、in-place update與ZNS SSDs端順序?qū)懻Z(yǔ)義的橋梁。主機(jī)端FTL在主機(jī)端控制數(shù)據(jù)放置和垃圾回收,暴漏給應(yīng)用傳統(tǒng)的塊層接口。
File Systems:目前的文件系統(tǒng)大部分都是in-place writes,并不適應(yīng)Zoned存儲(chǔ)模型。一些LFS文件系統(tǒng)如f2fs、btrfs和zfs已經(jīng)添加了對(duì)Zones的支持。但如f2fs和btrfs對(duì)zone model的支持僅限于在SCSI中的ZAC/ZBC,本文是對(duì)f2fs進(jìn)行修改以對(duì)ZNS's zone model進(jìn)行支持。
End-to-End Data Placement:理想情況下zone-write語(yǔ)義應(yīng)該與應(yīng)用中的數(shù)據(jù)結(jié)構(gòu)完全匹配,以達(dá)到最小的寫(xiě)放大、最高的帶寬和最低的延遲。此類(lèi)應(yīng)用的合適候選者為RocksDB、CacheLib等。本文展示了ZenFS作為RocksDB的存儲(chǔ)后端的性能。
圖3 ZenFS架構(gòu)圖
04?實(shí)驗(yàn)結(jié)果
評(píng)估實(shí)驗(yàn)是基于一個(gè)生產(chǎn)型固態(tài)硬盤(pán)硬件平臺(tái)上進(jìn)行的,該平臺(tái)該平臺(tái)可以將自己暴露為塊狀接口固態(tài)硬盤(pán)或ZNS固態(tài)硬盤(pán)。硬件平臺(tái)的配置如下:
表1 實(shí)驗(yàn)平臺(tái)設(shè)置
實(shí)驗(yàn)性能對(duì)比包含三個(gè)方面,分別為原始設(shè)備I/O性能、端到端的應(yīng)用性能和與ZNS SSD vs Stream SSD。
原始設(shè)備I/O性能:該實(shí)驗(yàn)主要對(duì)ZNS SSD和傳統(tǒng)塊層接口SSD的吞吐量進(jìn)行評(píng)估。ZNS SSD由于最大化減小了塊層接口稅,所以體現(xiàn)出更優(yōu)秀的吞吐量。塊層接口SSD的目標(biāo)寫(xiě)入速度高達(dá)300MiB/s(0% OP)和500MiB/s(28% OP),而ZNS固態(tài)硬盤(pán)的寫(xiě)入速度為1GiB/s。實(shí)驗(yàn)結(jié)果驗(yàn)證了ZNS SSD可以很好的避免塊層接口稅開(kāi)銷(xiāo)問(wèn)題。
圖4 吞吐量?jī)?yōu)化實(shí)驗(yàn)結(jié)果
????端到端的應(yīng)用性能:該實(shí)驗(yàn)主要對(duì)RocksDB在不同的文件系統(tǒng)作為存儲(chǔ)后端的性能評(píng)估。通過(guò)修改文件系統(tǒng)為ZNS SSD管理提供支持,從而獲取更優(yōu)的吞吐量。兩個(gè)基準(zhǔn)測(cè)試都顯示XFS和F2fs設(shè)置的性能低于F2fs(ZNS)和ZenFS。最重要的影響出現(xiàn)在overwrite基準(zhǔn)中,其中垃圾收集的開(kāi)銷(xiāo)嚴(yán)重影響了整體性能。ZenFS比XFS快183%,而f2fs(ZNS)的表現(xiàn) 比XFS好42%,比f(wàn)2fs好33%。
圖5 IOPS優(yōu)化實(shí)驗(yàn)結(jié)果
ZNS SSD vs Stream SSD:該實(shí)驗(yàn)主要對(duì)ZNS SSD和Stream SSD的性能評(píng)估。在具有 7% OP并且在 XFS 和 f2fs 之上啟用或禁用流的塊層接口 SSD上執(zhí)行的fillrandom和overwrite基準(zhǔn)測(cè)試的吞吐量。在啟用流的 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性能對(duì)比實(shí)驗(yàn)結(jié)果
05?總結(jié)
ZNS使基于閃存的固態(tài)硬盤(pán)具有更高的性能和更低的每字節(jié)成本。通過(guò)將管理擦除塊內(nèi)數(shù)據(jù)組織的責(zé)任從FTL轉(zhuǎn)移到主機(jī)軟件,ZNS消除了設(shè)備內(nèi)LBA到頁(yè)的映射、垃圾回收和OP空間。文章對(duì)ZNS專(zhuān)用的F2FS和RocksDB實(shí)施的實(shí)驗(yàn)表明,與在相同的SSD硬件上運(yùn)行的傳統(tǒng)FTL相比,在寫(xiě)吞吐量、讀尾部延遲和寫(xiě)放大方面有很大的改進(jìn)。
致謝
感謝本次論文解讀者,來(lái)自華東師范大學(xué)的準(zhǔn)博士生宋云鵬,主要研究方向?yàn)檐浻布f(xié)同設(shè)計(jì)。
編輯:黃飛
?
評(píng)論