高效SSD解決方案-FDP實現靈活數據放置
由於SSD承擔複雜的數據存儲任務,盤內的垃圾回收(GC)雖然提升了利用率,但也産生了大量額外寫入,加速了盤的磨損。特別是多應用、多用戶環境中,不同生命週期的數據流加劇了GC,放大了寫放大效應(WAF)。WAF不僅影響SSD的壽命,還影響其在整個生命週期內的效能。
爲延長SSD壽命,業界一直追求WAF=~1的理想目標。近年來,Meta和Google提出的FDP(Flexible Data Placement)方案証明了這一目標的可行性,NVME標準化組織也在考慮將其納入標準協議。
FDP帶來更智能&長壽的SSD
在傳統SSD上,當多個應用數據同時寫入時,不同數據可能被混合寫在同一個超級塊(Block)上,每個應用數據將分散在不同NAND晶片上。同時,被刪除的應用數據,將在超級塊上産生碎片。爲了重新利用這些空間,SSD需要進行垃圾回收(GC),將超級塊上的有效數據搬移。由此我們可以看出,在傳統SSD上write amplification factor(WAF)高的直接原因是:不同應用數據被寫到同一物理空間上。
如果將不同應用數據寫到獨立的物理空間上,當刪除一個應用數據時,隻需擦除並回收該應用的相關物理空間, 使GC搬移的數據量大大減少。FDP正是基於這個原理來提供高效的數據佈局方式,以此減少WAF。
FDP模型引入了RU(回收單元)、RG(回收組)和RUH(回收單元句柄)三個概唸。RU是可以獨立擦寫的物理單元,多個RU組成一個RG,RG之間的效能和可靠性互不影響。RUH是RU的寫指針,當一個RU寫滿後,會切換到另一個RU上。主機可以通過IO命令,將不同應用的數據通過不同的RUH寫入RU中,以實現數據隔離。
FDP還提供了一些機製,讓主機感知盤內寫入數據情況,以輔助決定數據的寫入和回收策略。例如,通過相關接口獲取RU的粒度(RUNS)、當前RU的剩餘寫入量(RUAMW)、RU的預估更新時間(EARUTR)等信息。SSD還可以通過上報event(Host Events/Controller Events),通知RUH相關的異常情況。
大普微FDP解決方案
大普微Haishen5繫列SSD支持FDP特性和多種FDP配置,系統可以根據不同業務類型在Namespace上使用不同的RUH,並爲RUH配置不同的數據隔離屬性。同時支持多Namespace共享RUH。在多Namespace上,如果業務數據的屬性相同,那他們可以使用同一RUH,以方便系統對RUH的管理,同時也節省了RUH資源。我們用CacheLib測試了HaiShen5繫列的FDP,測試結果如下:
由此結果可看出,在kvcache trace的模擬真實業務的場景中,FDP開啟後, CacheLib將BigHash和BlockCache進行了分流,WAF明顯降低並且接近1。
FDP的應用,推動了存儲管理向更高效髮展。結合當下熱議的QLC SSD,目前DapuStor QLC繫列SSD均支持 FDP feature,相信這項技術在超大型資料中心和雲服務商能得到普及,並帶來可觀的收益。