發布時間:2022-05-08 來源:本站
4月14日,中國計算機學會信息存儲專委會主任委員、清華大學計算機科學與技術系教授、廈門大學信息學院院長舒繼武在“2022分布式存儲線上論壇”開場發表《存儲系統發展趨勢的思考》主題演講,分享存儲系統發展的最新趨勢,以及基于這些趨勢對存儲系統與技術發展的方向思考。
存儲系統發展的三大趨勢
1、存儲金字塔架構層級逐漸模糊
傳統存儲系統硬件從硬盤到NVMe SSD,再到上面的DRAM甚至緩存的存儲金字塔架構,不同層級之間容量和性能都存在數量級差異。但隨著一些新型硬件的產生和應用,如英特爾AEP等使得這些層級逐漸模糊,傳統金字塔架構改變為類似大雁塔架構。
2、數據中心進一步的極致追求
第二個問題是數據中心,從前追求吞吐量,現在追求極致,包括性價比、能耗、用戶體驗等,在這種情況下傳統機架式數據中心資源利用率低下,擴展不靈活、調度不靈活等缺點暴露無遺。
數據中心業務有高扇出的特點,導致很多服務器延遲高于均值,因此尾延遲越來越受重視。例如天貓購物,一個請求發出需要后端上千臺服務器響應,必然涉及尾延遲。傳統CPU有流水線能做一些延遲隱藏,可以達到微納秒級延遲,操作系統現在來說還是微毫秒級延遲,想讓整個系統維持微秒量級的延遲還很困難,目前沒有很好的解決機制。
3、計算任務從主機端卸載到設備端
第三是新型硬件的出現為整個系統設計帶來的問題。例如可編程SSD,里面包含ARM/FPGA,能夠處理專用數據,可編程交換機里包含ASIC,能處理專用數據包,還有智能網卡等,新的器件/設備的產生能很好地應對數據密集型和計算密集型應用。與此同時,新設備的產生也使得我們在設計軟硬件時要考慮協同關系,包括IO棧如何重新設計,分布式協議如何重構等問題。
存儲系統與技術發展帶來的思考
1、低延遲高吞吐的軟件設計思考
基于以上三個發展趨勢,再談談這些存儲系統技術發展所帶來的思考。由于時間關系主要講兩點。第一就是多級存儲介質下的存儲軟件要如何考慮——新器件的到來讓存儲器變成多級架構,還有傳統數據中心變成了硬件池化架構,其軟件系統需要考慮哪些問題。
首先,隨著NVMe SSD的產生,帶寬變化很大,傳統HDD帶寬約為80MB到100MB/s,現在傲騰SSD能達到7GB/s,延遲也有數量級變化。硬件性能激增的同時也要求穩定性,因此請求帶寬和延遲抖動相對來說較小。另一方面硬件并發度增加,讓你能同時處理更多請求數,以上是硬件變化。
還有接口變化,像傳統閃存系統提供軟硬件交互,支持4KB塊接口訪問,是普通的單接口SSD,軟件性能相對效率較低,優化也比較難。然后像英特爾又推出了一種雙接口SSD,里面除了提供塊接口外還同時提供直訪字節接口,這樣在軟件和可靠性上有所提升,我們也曾經在這方面做了相關一套軟件,確實性能比傳統要高的多。
還有像三星推出一種專門針對鍵值接口的SSD,能進行定向優化鍵值存儲,因為是定向專用,所以只支持鍵值存儲,無法支持文件系統。
從硬件變化到接口變化再看架構變化。傳統軟硬件分層設備有一個FTL(Flash Translation Layer)轉換層,存在比如性能問題——功能冗余、語義隔離(包括里面存在的寫放大),還有耐久性問題,但它是標準硬件。
之后還有開放通道SSD,我們在軟硬件協同設計方面做了十多年的工作,主要克服普通SSD的性能和可靠性系列問題,尤其在云/數據中心里面得到很多應用,能進行性能隔離和定向優化,其存在問題在于硬件改動較大。
近兩年,西部數據還推出了一種分區SSD,基于Open-channel SSD開放架構,主要是把Zone分出來做一個抽象,緩解普通SSD的可靠性,其性能介于前面第一類和第二類之間,優勢是硬件改動相比開放通道SSD較少。
硬件接口和架構產生變化之后還要考慮系統設計,旨在實現低延遲高吞吐軟件設計。這種設計用于內核態、用戶態,或者兩者優勢兼具的新操作系統,在業界還一直有爭論,內核態提供標準化抽象和封裝,但里面有很多場景切換,性能相對較低,還存在內核開銷等問題,優勢是兼容性強,安全性高。
用戶態支持直訪,性能較高但存在安全和兼容性問題。還有一種內核態和用戶態協同,包括清華等很多單位在這方面都在做探索。
另外,隨著硬件變快以及CPU核數的增加,很多傳統串行技術,現在變為采用并行技術降低延遲,提高吞吐率。比如Linux的NVMe,軟件和硬件串行操作,延遲較高,如清華采用ccNVMe,通過軟硬件操作并行來降低延遲。在吞吐率方面,通過做多任務/應用聚合吞吐來彌補傳統像三星F2FS在擴展性上的不足。
2、高速存儲和網絡協同設計
另一個是高速存儲和網絡協同設計。存儲介質要與網絡介質匹配,存儲介質性能才會發揮到最大,因此像NVMe SSD,基本上是與RDMA網絡構建系統,NVMe over RDMA在業內比較熱門。我們在NVMe over RDMA方面有很多研究,特別是輕量存儲池化軟件的設計,其核心是繞開服務器網絡棧,節省網絡棧開銷,尤其是能讓數據從智能網卡直達SSD,提供高吞吐和低延遲便利。
除此之蛙,如斯坦福大學還提出硬件輔助虛擬化來加速IO路徑,華盛頓大學通過智能網卡卸載存儲功能以便提升硬件性能。
硬件資源池化下的系統軟件
傳統數據中心的架構缺陷
大家知道傳統數據中心是由很多的單一服務器互聯起來,處理器和內存按照不同趨勢發展,也就有了右圖的剪刀差,導致數據中心內存不足就要加服務器,CPU也跟著增加,其實我們只想增加內存,計算能力是足夠的,同理,CPU不足,增加服務器也就增加了多余的內存,這樣會導致資源利用率低下,部署不夠靈活。
當然還有采用一些分布式技術讓多個服務器進行協同處理,但目前基本上這種計算存儲任務執行還是局限于單個服務器,分布式技術還解決不了這些問題。
解耦數據中心架構
解耦數據中心的架構,即做硬件資源池化是一個理想化的想法,也是一種趨勢。硬件資源池化就是在數據中心里構建不同池子,CPU計算池,內存池,存儲池,這些資源池用高速網絡連接起來,現在英特爾、惠普都有這方面一些研究。
當然這些池子通過高速互聯網連接,對網絡存在很大的挑戰。但這樣的部署設計,CPU計算能力不足就擴展CPU池,內存不足就擴展內存池子,升級簡單,硬件資源利用率更高。
當然理想很豐滿,最大的問題是高速網絡,網絡傳輸性能會對Rack-Scale落地有制約,當然現在有很多公司在這方面進行努力研究。還有一個全新的開放協議——CXL,近年來發展勢頭很猛,也成為解耦互聯的主流協議,國內很多企業也加入其中。英特爾去年成立CXL聯盟,發布了從1.0到1.1,到現在2.0的CXL規范,正在努力緩解解耦數據中心的網絡。
CXL科普
CXL不同于無線網及數據中心網絡的連接模式,是全新的網絡協議,支持三種模式——訪問外存設備、處理器訪問內存、設備訪問內存,在物理層和協議層做了很多重新設計,能提供高吞吐和低延遲。
系統設計對應要考慮如何使用,這里涉及到操作系統和運行時系統,資源池化的操作系統設計要考慮怎么將操作系統里的任務切分給不同硬件組件去做,組件還要去中心化,還要做好局部性,讓網絡有更好的支持。另外需要提供這種虛擬機抽象給應用層兼容現有軟件,這是操作系統層要考慮的。
運行時系統則要首先考慮支持高級語言比如java,還要應對傳統垃圾回收效率低的問題,進行分布式動態內存垃圾回收,還有一些公司在把垃圾回收卸載到內存節點上去做。
純硬件方面由于網絡問題無法快速落地。清華團隊是基于軟件、邏輯的角度來構建一個分布式持久性內存存儲系統TH-DPMS,通過RDMA把持久性內存統一進行互連,構建具有全局地址空間的內存共享池,對外可以提供內存訪問接口,對象接口等服務,具有高性能和擴展性,編程簡單易管理,安全性也比較高。
總結
隨著新硬件的產生,存儲不再是從前的存儲金字塔架構,而是類似大雁塔架構,另外一個數據中心原來追求規模到吞吐力,現在追求資源利用率到尾延遲的方向,而在這個方面思考了多級存儲介質下存儲軟件設計,以及硬件資源池化下的系統軟件發展方向。