近30年來,計算機系統(tǒng)的I/O性能與CPU處理性能的差距迅速擴大,而且隨著多核技術的快速發(fā)展,這種差距還將越來越大,與此同時,社交網絡、物聯(lián)網、移動互聯(lián)網等多種新型應用的出現,以及高性能計算趨于精細的處理要求,導致數據處理規(guī)模的急劇增長,頻繁的I/O請求制約了計算機系統(tǒng)所提供的應用處理能力,因而I/O能力正成為計算機系統(tǒng)中急需解決的問題。
傳統(tǒng)磁盤存儲系統(tǒng)為此作出了諸多努力,磁盤系統(tǒng)通過RAID技術發(fā)揮多磁盤的并行存取,I/O請求被分發(fā)到多個磁盤設備,通過多設備的并行T作提供聚合帶寬,在設備內部,磁盤系統(tǒng)通過數據分布以及I/O調度等多種手段順序化數據的訪問,減少尋道時間,以提高磁盤的吞吐率。
盡管磁盤存儲系統(tǒng)有效提升了帶寬,但訪問延遲難以得到有效解決,依然不能滿足延遲要求較高的應用,同時,由于需要提供多磁盤設備的并行訪問的性能,存儲系統(tǒng)往往部署了遠多于實際容量需求的磁盤數目,系統(tǒng)規(guī)模也隨之擴大,系統(tǒng)規(guī)模的擴大一方面提高了系統(tǒng)的復雜性,另一方面也提升了能耗。
近年來,隨著閃存芯片容量的增加和價格的下降,閃存芯片的部署正從移動設備中走到個人計算機以及大規(guī)模數據中心中去,閃存的低延遲、低能耗、體積小、重量輕、抗震等特點使得閃存在數據中心的應用正受到極大的關注。
1 閃存存儲現狀
閃存設備主要由閃存介質、閃存控制器兩部分構成,如圖1所示,閃存操作以閃存頁(page)為讀寫單元,以閃存塊(block)為擦除單元,設備內部的介質訪問提供了通道(channel)、顆粒封裝(package)、顆粒(die)、閃存片(plane)等多個級別的并行。設備內部以多通道方式組織閃存顆粒封裝,每個通道上可連接多個顆粒封裝,多顆粒封裝之間共享傳輸通道,但可獨立執(zhí)行指令,每個顆粒封裝內部包含兩個或多個閃存顆粒,每個顆?杀华毩⑦x中執(zhí)行指令,顆粒內部可分為多個閃存片,每個閃存片含有一個閃存頁大小的寄存器緩存,用于暫存讀寫數據,通過多個級別的指令并行執(zhí)行,閃存設備充分利用介質的存取性能,閃存控制器主要負責地址映射、垃圾回收和磨損均衡,閃存通過異地更新的方式緩解閃存單元寫前擦除的延遲,由于閃存單元的擦除次數有限,閃存控制器通過磨損均衡算法平衡設備內部閃存塊之間的擦除次數,同時垃圾回收算法盡量選取擦除效率較高的塊回收以控制寫放大(writeamplification),閃存控制器既要維護高效的數據地址映射查詢,也要均衡設備內部磨損,控制寫放大,以提高設備的整體壽命。
圖1 閃存內部結構圖
閃存存儲主要以固態(tài)盤(solid state drive,SSD)以及裸閃存兩種形式存在,固態(tài)盤的方式是在設備內部通過閃存轉換層(flash translation layer,FTL)的轉換可處理SATA命令,其外部的使用接口與傳統(tǒng)磁盤沒有差別,固態(tài)盤與傳統(tǒng)磁盤在外部使用上差異極小,固態(tài)盤可以簡單地替換磁盤,因而固態(tài)盤的形式為當前閃存存儲的主要形式,包括個人筆記本、服務器、存儲陣列等。
然而,固態(tài)盤的形式限制了閃存優(yōu)勢的有效發(fā)揮,在硬件接口上,由于閃存內部并發(fā)可以有效聚合訪問帶寬,SATA接口的標準已經遠不能滿足要求,硬件接口成為閃存存儲系統(tǒng)的瓶頸,在存儲子系統(tǒng)上,以文件系統(tǒng)為代表的系統(tǒng)軟件在存儲管理上大多以磁盤為假設進行優(yōu)化,較少考慮閃存特性,閃存優(yōu)勢難以得到充分利用,現有在固態(tài)盤上構建的軟件系統(tǒng)存在的不足主要體現在以下幾個方面:
1)冗余工作
文件系統(tǒng)對文件的管理既包括文件目錄樹的維護信息,也包括對于文件邏輯塊到存儲設備物理塊的映射,同時也包括存儲設備空間管理,閃存設備內部需要提供地址映射以實現數據塊的異地更新,文件系統(tǒng)中從文件邏輯塊到設備物理塊的映射,與閃存設備轉換層中邏輯地址到物理地址的映射,構成了閃存系統(tǒng)的雙層映射,雙層映射的出現既增加了元數據的管理與存儲開銷,也可能造成雙層的優(yōu)化之間存在沖突。
2)語義缺失
閃存設備轉換層封裝了對閃存介質的操作,向上層提供了統(tǒng)一的塊設備接口,設備內部接收到以頁面為單位的數據,卻不能理解數據頁面之間的關系,也就難以優(yōu)化數據頁面的讀寫順序與分布圈,除此之外,閃存設備也難以感知文件系統(tǒng)的操作,不能及時處理,以至于影響下次關聯(lián)操作困,例如,文件系統(tǒng)對于文件的擦除操作僅修改對應元數據,而數據的擦除操作直到下次寫操作才被閃存設備感知,影響閃存設備的垃圾回收效率。
3)特性錯失
閃存設備提供了異地更新的特性,數據的更新會寫人新分配的閃存頁,舊閃存頁一直保留到垃圾回收的時刻,而文件系統(tǒng)、數據庫管理系統(tǒng)或者其他上層應用為提供操作的原子性,通常使用WAL(writeahead logging)的方式,先申請新的存儲空間記錄數據更新作為redo日志,然后在原地進行數據的更新,這樣的原子性以兩次寫操作的代價保證,既增加了延遲,也損害了閃存壽命,同樣,文件系統(tǒng)為容錯而采用多版本信息也不能直接索引到舊的閃存頁。
4)分工欠妥
閃存設備的容量不斷增加,設備內部的處理能力以及內存的需求也在不斷增長,這既提升了存儲設備的制造成本,也提高了設備的能耗,影響閃存的優(yōu)勢,而主機在等待閃存設備讀寫時,主機CPU與內存有不少空閑,另外,多層的處理與緩存也造成訪問延遲與數據可靠性的問題,主機與閃存設備在數據處理與緩存以及數據存儲方面應尋求最佳的職能分工,以達到整體系統(tǒng)的最優(yōu)。
簡單地用固態(tài)盤替換磁盤的存儲系統(tǒng)不能充分發(fā)揮閃存的性能,因而閃存存儲系統(tǒng)傾向于直接管理閃存介質,重新設計或調整軟硬件結構,優(yōu)化存取路徑,豐富存儲語義,增強特性功能,以提升閃存存儲系統(tǒng)的整體性能。
2 閃存存儲系統(tǒng)
基于閃存介質直接構建閃存存儲系統(tǒng)是當前的研究熱點,構建形式多樣,包括閃存加速卡、閃存陣列以及近年來提出的基于閃存的分布式集群系統(tǒng)。
2. 1閃存加速卡
閃存加速卡用于服務器中,主要用于本地數據的緩存處理,相比于傳統(tǒng)的PCIe固態(tài)盤RAID卡,以FusionIO為代表的廠商推出了PCIe閃存卡,有效地降低了存儲訪問延遲,擴大了訪存帶寬。
磁盤陣列的訪問需要經過主機HBA、網絡交換、陣列控制器等訪問模塊,如圖2(a)所示;PCIe固態(tài)盤RAID卡也需要經過RAID控制器、元數據處理模塊后才能訪問數據,如圖2(b)所示;FusionIO采用裸閃存PCIe卡,主機直接訪問閃存芯片,縮減了I/O傳輸路徑,提供了極低的訪問延遲。
圖2磁盤陣列、PCIe固態(tài)RAID卡及FusioIO ioDrive的I/O路徑比較
FusionIO在主機端實現了閃存轉換層,稱為VSL(virtualized storage layer),VSL實現了閃存轉換層所需要的映射機制、磨損均衡、可靠性等多種功能,相比于傳統(tǒng)閃存固態(tài)盤在設備內部采用嵌人式處理器的處理方式相比,VSL能充分利用主機的冗余計算與緩存能力,大大提高了處理性能,此外,利用閃存異地更新的特性,依據VSL中映射轉換的日志機制,VSL實現了多閃存頁的原子寫(atomic write)操作,從而避免了上層應用為提供多數據頁更新所花費的重復寫,整體上延長閃存設備壽命,利用VSL中提供的空間管理和原子寫特性,DFS基于VSL重新設計閃存文件系統(tǒng),提供了很好的性能,降低了文件系統(tǒng)的復雜性。
基于閃存介質構建的閃存加速卡在軟件層實現閃存介質管理,并與軟件系統(tǒng)結合,提供靈活的機制,大大提升了單機存儲子系統(tǒng)的效率,這類加速卡引起業(yè)界關注,Intel及眾多存儲廠商制定了NVMe標準,以提供統(tǒng)一接口標準支持。
2. 2閃存陣列
閃存加速卡難以實現存儲容量的擴展及存儲共享,類似于傳統(tǒng)的磁盤陣列設計,多家存儲廠商推出了閃存陣列,其中包括采用固態(tài)盤與傳統(tǒng)陣列控制器的演進式設計,以及采用閃存芯片與全新陣列控制器的革新式設計。
Violin Memory與Toshiba合作設計閃存陣列,通過Violin閃存陣列控制器對閃存介質顆粒級別進行優(yōu)化,Pure Storage根據閃存特性完全重新設計控制器控制邏輯,充分發(fā)揮閃存的并行性,采用陣列內全局的磨損均衡算法,以提供全局更好的性能與壽命,剛被EMC收購的以色列閃存陣列公司XtremeIO認為傳統(tǒng)陣列控制器主要考慮磁盤特性的優(yōu)化,例如順序I/O等,針對這一問題,XtremeIO設計了新型閃存陣列控制器,發(fā)揮閃存較好的隨機訪問性能,并利用閃存異地更新特性在陣列內實現了刪冗、快照/鏡像、精簡配置等多項功能。
2. 3基于閃存的分布式集群系統(tǒng)
2.3.1 FAWN
FAWN(a fast array of wimpy nodes)是卡內基梅隆大學(Carnegie Mellon University, CMU)基于閃存介質構建的可擴展、低能耗、高性能的集群系統(tǒng),與閃存加速卡和閃存陣列僅關注于I/O子系統(tǒng)的性能和可靠性的設計不同,FAWN從集群整體設計的角度考慮閃存與處理器的匹配以降低系統(tǒng)整體能耗。
在數據密集型計算環(huán)境下,I/O速度遠不及CPU處理速度,CPU很多時候處于空閑等待狀態(tài),同時CPU的能耗隨著頻率的提高呈現超線性增長,FAWN采用低頻低能耗CPU與閃存存儲相匹配,提供數據密集型計算的集群系統(tǒng),提高系統(tǒng)各組成部分的利用率,降低能耗,FAWN實現了鍵值存儲系統(tǒng),以日志的方式進行更新,實現閃存的異地更新,FAWN可提供每焦耳高達364次查詢請求,相比于桌面硬盤系統(tǒng)的每焦耳1.96次查詢性能提升數百倍。
2.3.2 Gordon和Moneta/Onyx
Gordon系統(tǒng)是加州大學圣地亞哥分校(University of California, San Diego,UCSD)設計的,與FAWN類似的采用低頻處理器以構建低能耗數據中心的集群系統(tǒng),與FAWN關注鍵值存儲系統(tǒng)的高性能與低能耗不同,Gordon主要工作在于設計閃存轉換層與匹配處理器與閃存芯片的性能和能耗,Gordon閃存轉換層在發(fā)揮閃存芯片間的并發(fā)特性上采取了多種措施,包括地址動態(tài)映射、多物理頁組合成大物理頁、以及同時采用并發(fā)與流水機制,Gordon在單板上集成了256 GB的閃存和2.5GB的DRAM,一個16個單板的封裝節(jié)點可提供4TB的閃存存儲和高達14.4 GBps聚集帶寬,Gordon系統(tǒng)已經被用于San Diego超級計算中心,主要應用在天體物理、基因組測序等數據密集型計算領域,并將其部署在TeraGrid中,當完全配置和部署時,Cordon將擁有300TB閃存存儲容量,由1024塊英特爾710系列高性能固態(tài)存儲組成,將擁有16384個處理器內核,理論性能峰值達到340Tfps。
Moneta和Onyx是UCSD基于PCM構建的存儲系統(tǒng),Moneta認為軟件延遲占低延遲存儲介質整體訪問延遲的比例越來越大,因此軟件系統(tǒng)需要重新考慮以降低整體訪問延遲,Moneta采用DRAM模擬PCM,該系統(tǒng)繞開了操作系統(tǒng)中IO調度等操作過程,通過spin的等待而不是中斷調用等對系統(tǒng)的修改,能夠減少60%的訪問延遲,提升18倍的帶寬,Moneta是采用PCIe接口的模擬PCM存儲系統(tǒng),Onyx是對Moneta改進的第2代原型,Onyx替換PCIe接口為DIMM接口,并采用了定制的PCM模塊,進一步提升了系統(tǒng)性能。
2.3.3 RAMCIoud
在采用非易失性存儲器件構建存儲系統(tǒng)之外,加州大學伯克利分校(University of California,Berkeley,UC Berkeley)提出采用DRAM構建分布式存儲系統(tǒng)RAMCIoud,RAMCIoud利用服務器集群中服務器DRAM構建統(tǒng)一命名空間的存儲系統(tǒng),所有數據存儲在DRAM中,磁盤僅用作備份,相比于傳統(tǒng)的磁盤存儲系統(tǒng)網絡訪問遠端磁盤5~10ms的延遲,RAMCIoud的訪問延遲可達到5μs,提升100-1000倍的性能,盡管閃存存儲系統(tǒng)“FlashCloud”可提供略低于RAMCIoud,但在查詢吞吐量要求越高的情況下,RAMCIoud總體擁有成本越低。
持久性與可用性是RAMCIoud最為關心的問題,RAMCIoud采用磁盤作為備份存儲,在內存中維護日志記錄,記錄每次更新,通過聚集寫(bulkwrite)刷入磁盤,以提供持久性,在可用性上,RAMCIoud在不同的服務器上放置3個副本,且不同的數據副本分散到不同的服務器,在出現故障時,可以并行地從其他節(jié)點恢復,實驗原型可在1-2s的時間內恢復64GB的數據。
能耗是RAMCIoud另一個引起爭論的問題,RAMCIoud認為在以每操作焦耳數為衡量指標時,RAMCIoud因為性能的優(yōu)勢可以提供高吞吐量應用下的低能耗。
2.3.4 Mangix
清華大學的Mangix是基于固態(tài)存儲設計的分布式存儲系統(tǒng),Mangix分離了文件系統(tǒng)的目錄樹維護與空閑空間管理功能,將空閑空間管理與管理閃存的閃存轉換層相結合,重新優(yōu)化軟件層次,以減少冗余工作。
閃存轉換層在軟件層實現,通過感知文件系統(tǒng)的文件語義優(yōu)化對閃存的數據分布與垃圾回收策略,閃存轉換層直接管理閃存介質,減少I/O路徑冗余,通過數據分布發(fā)揮閃存的高效并發(fā)。
Mangix采用分布式對象文件系統(tǒng)管理,數據及元數據以對象形式存儲于集群中的閃存介質上,閃存轉換層以遠程過程調用的方式相互通信,實現分布式原子性操作以及多節(jié)點均衡等特性。
2.4小結
上述系統(tǒng)分別在低延遲、低能耗、多設備磨損均衡等多方面考慮對軟件重構或調整,基于存儲介質構建新型的閃存存儲系統(tǒng),其特點如表1所示,閃存加速卡、閃存陣列摒棄傳統(tǒng)固態(tài)盤的方式,根據閃存特性調整閃存管理模塊,提升了存儲子系統(tǒng)的效率,但擴展性不夠理想,FAWN與Gordon通過匹配I/O與CPU計算能力,從集群的角度構建分布式節(jié)能系統(tǒng),其在多節(jié)點間閃存特性協(xié)作上有進一步研究的可能,基于PCM的Moneta/Onyx同樣以重構軟件系統(tǒng)的方式實現了極低延遲的I/O訪問,RAMCIoud基于DRAM構建了分布式存儲系統(tǒng),降低存儲系統(tǒng)的I/O延遲,Mangix通過軟件直接管理閃存介質,通過軟硬件協(xié)作構建基于固態(tài)存儲的分布式集群存儲系統(tǒng)。
表1閃存存儲系統(tǒng)比較
總之,閃存的出現給原有針對磁盤優(yōu)化的軟件系統(tǒng)提出了挑戰(zhàn),為了充分發(fā)揮閃存低延遲、高并發(fā)、異地更新等特性,多數閃存系統(tǒng)重新設計或者修改了陣列控制器或軟件模塊,以充分發(fā)揮閃存優(yōu)勢。
3 閃存存儲系統(tǒng)關鍵技術
閃存介質訪問呈現低延遲、讀寫不對稱的特點,與磁盤介質訪問相比,隨機性能提升很多,傳統(tǒng)針對磁盤優(yōu)化設計的軟件系統(tǒng)直接用于閃存系統(tǒng)時,一方面帶來了軟件系統(tǒng)不必要冗余功能,另一方面隱藏了閃存可能帶來優(yōu)勢,閃存的可靠性與傳統(tǒng)磁盤設備不同,閃存單元的擦除次數有限,可靠性隨著擦除次數的增加而下降,閃存的可靠性與閃存設備負載相關,此外,閃存體積小、能耗低,給低能耗的系統(tǒng)設計帶來了機遇。
針對閃存的特性,當前的閃存存儲系統(tǒng)的研究主要集中在以下3個方面。
3.1基于I/O棧調整與重構的存儲性能優(yōu)化
在新型存儲系統(tǒng)中,存儲介質的訪問延遲越來越低,相對應的軟件開銷所占比例越來越高,報告指出,傳統(tǒng)磁盤存儲系統(tǒng)中軟件開銷占0.3%PCIe閃存卡系統(tǒng)中軟件開銷占比21.9%,而隨著非易失性器件的發(fā)展,預計軟件開銷所占比率將高達94.09%,如圖3所示:
圖3軟件開銷占比趨勢
軟件開銷一方面因軟件抽象的層次化設計所致,層次化設計中I/O存儲路徑較長;另一方面針對磁盤尋道所作的順序化的優(yōu)化設計也帶來了不必要的軟件開銷。
除了軟件開銷導致的時延之外,利用閃存特性提供特定的功能,通過感知上層文件語義更好地布局閃存數據等都是當前研究的熱點問題。
3.1.1硬件接口與通知機制
硬件接口的帶寬限制影響了閃存設備的性能,磁盤的從設備緩存到磁介質的數據讀寫需要經過磁頭的尋道與定位,機械部件的旋轉速度盡管可達15000轉,但讀寫帶寬仍不能顯著提升,如表2所示,目前希捷企業(yè)級磁盤15K.3的讀寫帶寬為202MBps,其使用SAS6.0Gbps的硬件接口,可見磁盤內部的讀寫是帶寬瓶頸,在閃存設備,掃,閃存并發(fā)性能可達到極高的數值,硬件接口成為瓶頸,閃存單芯片可提供330MBps讀帶寬、33MBps寫帶寬,閃存設備內部通過多通道并發(fā),以及芯片間流水指令執(zhí)行,可提供外部極高的并行訪問帶寬,如表2所示,IntelX25-E的讀帶寬達到250MBps,SATA3Gbps接口成為瓶頸,FusionIO采用PCIe的硬件接口,ioDriveOctal可達到6GBps的讀帶寬和4.4GBps的寫帶寬。
除帶寬之外,訪問延遲也需要新型高速的硬件接口,FusionIO通過PCIe接口直接使用DMA在閃存與內存之間傳輸數據,從而避免SAS/SATAHBA與RAID等模塊的處理延遲,如圖1所示,FusionIO可減少2-v8個模塊的處理延遲,UCSD在PCM原型系統(tǒng)中升級Moneta的PCIe接口到Onyx的DIMM接口,進一步降低了訪問延遲。
表2幾種主流高端存儲設備的硬件接口與讀寫性能
新存儲器件訪問延遲的降低使得傳統(tǒng)基于中斷的軟硬件通知機制開銷增大,在傳統(tǒng)方式中,數據讀寫命令發(fā)送給設備之后,可由DMA進行數據傳輸,主機可繼續(xù)執(zhí)行指令,而不必等待數據的完成,設備完成數據傳輸之后,通過中斷指令通知主機CPU以進行后續(xù)處理,在新存儲器件出現后,低延遲訪問會造成頻繁的中斷,上下文切換的代價已超出循環(huán)等待的代價,文獻[33]認為在新型存儲系統(tǒng)中I/O完成采用輪詢方式會優(yōu)于中斷方式,I/O請求可采用同步完成的機制,UCSD的Moneta原型系統(tǒng)也采用了spin等待的方式檢查I/O請求是否完成,以避免頻繁中斷帶來高昂的上下文切換代價。
3.1.2軟件存取路徑
在I/O路徑上,因軟件的模塊化需求,軟件系統(tǒng)對多層進行了抽象,包括虛擬文件系統(tǒng)層、塊設備層以及SCSI驅動層,在軟件的各層次中,由具體的文件系統(tǒng)、設備、驅動進行注冊以實現正確的數據傳輸,軟件層次屏蔽了多層異構特性,但也導致了不必要的處理與轉換。
在設備驅動上,FusionIO直接使用DMA通過PCIe接口在閃存和內存之間傳輸數據,從而避免了傳統(tǒng)SCSI的3層傳輸模型,SCSI的3層傳輸模型命令之間的轉換及處理既帶來了延遲開銷,也限制了命令集的擴展。
在塊設備層中,現有的IO調度策略都是基于磁盤存取順序性等問題,因而在固態(tài)盤的使用中,不少人提出使用noop的調度策略,即不進行I/O的調度,閃存訪問也有獨特的特征,讀寫性能不對稱會導致讀操作會被寫操作引人很大的延遲,而且讀寫請求不能充分利用閃存設備內部的并發(fā)特性將導致帶寬浪費,文獻[29〕提出閃存設備上的FIGS調度算法,該算法通過選取合適的時間片,并分離讀寫之間的干擾,既利用了閃存設備的并發(fā)特性,也保證了訪問請求的公平性。
在文件系統(tǒng)層,Princeton研究人員與FusionIO合作,在FusionIO設備上實現了新型閃存文件系統(tǒng),該文件系統(tǒng)利用了FusionIO的VSL管理閃存存儲空間的功能,從而避免了文件系統(tǒng)空間管理與閃存設備FTL管理的冗余管理開銷,Wisconsin大學的研究人員提出了nameless writes的做法,通過文件系統(tǒng)與閃存設備間新的軟件程序接口的方式,由閃存設備自主選擇數據寫的物理地址,然后通知文件系統(tǒng)進行地址的更新記錄, nameless writes的做法減少了重復的映射管理開銷,也提供了設備內部進行垃圾回收、磨損均衡等操作的靈活性。
在應用層,UCSD基于PCM原型系統(tǒng)Moneta實現了在用戶態(tài)直接進行數據存取的系統(tǒng)MonetaD,Moneta-D通過硬件實現了權限驗證,以及從設備通知應用程序機制的支持,實現了用戶程序與存儲設備間的直接IO請求,從而避免了用戶態(tài)與內核態(tài)切換開銷以及文件系統(tǒng)權限驗證的開銷。
3.1.3軟件程序接口
系統(tǒng)軟件與存儲設備的軟件程序接口僅有兩個基本操作接口:READ和WRITE,閃存介質的狀態(tài)更新不可逆,更新的物理頁必須在擦除完成之后才能進行,因而多數采用異地更新,異地更新后數據的舊版本通過垃圾回收進行空間的回收,垃圾回收時選擇擦除的單元是閃存塊,因為需要將閃存塊中有效閃存頁移動到新的閃存塊后才能進行閃存塊的擦除,垃圾回收時有效閃存頁的移動是寫放大最主要的來源,在文件刪除時,傳統(tǒng)文件系統(tǒng)通過修改元數據的方式刪除文件,并不對數據頁進行標識,閃存設備直到該邏輯頁被寫人新數據才能感知該閃存頁被置為無效,導致設備保持的有效頁的數量遠大于實際系統(tǒng)的有效頁(很多已刪除的數據頁在閃存設備內仍然被錯誤地認為有效),進而導致寫放大,閃存性能和壽命均受到影響,TRIM接口的引人提供了數據顯式刪除的語義,文件系統(tǒng)通過TRIM命令通知閃存設備已經刪除的數據頁的范圍,使得設備可以及時置無效位,除TRIM命令外,文獻[6}提出PTRIM和EXISTS的接口命令,由于TRIM命令僅在設備緩存中提示數據頁的無效,在掉電情況下顯式刪除命令不能確保完成,PTRIM采用持久性刪除的語義,解決TRIM在掉電情況下失效的問題,EXISTS命令用于檢查數據頁的存在性,通過PTRIM與EXISTS命令,文件系統(tǒng)可以通過FTL來管理存儲空間。
新的軟件程序接口不僅用于文件系統(tǒng)對閃存設備的信息通知,也用于閃存設備對上層系統(tǒng)提供新的增強功能,主要集中在用閃存支持原子寫的研究上,Atomic write FTL利用log block記錄多個物理頁的更新,在每個更新頁的元數據(spare area)區(qū)域記錄事務號,通過AtomicWriteStart)和AtomicWriteCommit()的調用實現原子操作的起始與提交操作,Atomic write FTL主要用于移動設備環(huán)境下,設備以裸Flash的形式接入系統(tǒng),由閃存文件系統(tǒng)直接管理,也就是閃存文件系統(tǒng)實現了FTL的功能,OSU的研究人員與FusionIO合作,提出了基于FusionIO VSL的atomic-write操作接口,FusionIOAtomic-write利用VSL中映射頁以日志形式追加的特點記錄映射頁的狀態(tài)改變,通過映射頁中標記位標記事務的完成,TxFlash[8]提出了較為通用的原子寫實現機制,在原子寫操作內各個物理頁的元數據區(qū)域記錄前繼頁面的頁地址,從而使原子寫內的多個物理頁構成環(huán),并通過環(huán)結構的檢測判斷該原子操作是否完整,Flag Commit與TxFlash類似,改進了TxFlash的環(huán)結構表示。
3.2系統(tǒng)可靠性
閃存單元的擦除會削弱閃存單元保存電子的能力,導致存儲的數據易被干擾,從而降低可靠性,閃存單元的擦除次數在10000-100000次之間,隨著閃存密度的增加,閃存單元可靠性變得更低,為延長閃存設備的使用壽命,FTL內實現了磨損均衡策略,與磁盤不同,上層系統(tǒng)的負載與閃存的壽命密切相關,減少上層應用的寫數據量也是延遲閃存壽命的一個重要途徑,因而,從系統(tǒng)角度實現負載優(yōu)化與磨損均衡對閃存系統(tǒng)的可靠性有著重要的意義。
3.2.1通道內可靠性
在單系統(tǒng)內部,通過I/O路徑內部上層應用與底層設備的優(yōu)化提高通道內可靠性,通道內可靠性主要包括兩個方面:系統(tǒng)數據的刪冗與壓縮、設備內部多版本機制。
CAFTL在FTL上通過雙層映射檢測冗余更新數據,對其進行重復數據刪除和合并,減少固態(tài)盤寫入數據量,CA-SSD將基于內容尋址(contentaddressable storage,CAS)的思想引入到固態(tài)盤中,數值局部性的存在減少了數據寫入量,延長了固態(tài)盤的壽命,在數據庫系統(tǒng)中,記錄更新的大小遠小于閃存物理頁的大小,頻繁的記錄更新會導致大量的閃存物理頁的更新,造成閃存壽命問題,針對這一問題,文獻提出了in-page logging(IPL)的機制,通過在閃存塊中保留8 KB大小的log區(qū)域,將記錄的更新追加到log區(qū)域,然后通過延遲合并機制更新數據,減少了閃存頁的整體更新,同一邏輯地址的頁面寫多數情況下是對原有數據的更新,因而重復率比較高,Delta FTL通過對同一邏輯地址的頁面的寫進行比較壓縮,記錄壓縮后的數據,合并多個寫操作的壓縮數據記錄到delta log區(qū)域,減少閃存頁的更新,同時,通過維護映射表的deltamapping table以提供最新數據的查詢,閃存陣列廠商Pure Storage和XtremeIO均通過重復數據刪除技術減少陣列的數據寫入量。
從設備內部多版本數據提供數據容錯從另一個角度提高了閃存系統(tǒng)的可靠性,閃存的異地更新未立刻擦除舊版本,文獻等提出在閃存文件系統(tǒng)中維護單個文件兩個一致性的版本,當最新的版本出錯時通過回退到上一個一致性版本的方式提供文件的容錯。
3.2.2跨設備可靠性
閃存系統(tǒng)中設備整體故障出錯率雖不及閃存單元磨損出錯率,但出于設備在線替換及數據可用性的考慮,在多設備間維護冗余數據以提高可靠性仍有必要,然而傳統(tǒng)RAID容錯的假設是磁盤之間出錯相互獨立,該條件在閃存存儲系統(tǒng)中不再成立,由于RAID盡可能均衡負載,這導致RAID各閃存設備以近似的速度磨損,當多個閃存設備同時接近壽命極限時,各設備出錯概率上升,也造成整體出錯概率的上升,Diff-RAID調整校驗值(parity)在不同閃存設備間的分布,差異化各設備的磨損速度,從而降低設備同時出錯的概率,也就提高了固態(tài)盤RAID的可靠性,存儲陣列廠商Pure Storage陣列內部實現了全局的磨損均衡,以提高陣列的整體壽命。
多設備的可靠性也體現在錯誤恢復的速度上,RAMCIoud采用了多副本的技術,將數據的副本分布于不同的服務器上,并且不同數據的數據副本均勻分布于集群中的所有服務器,這樣在出錯恢復時可以通過并發(fā)恢復降低錯誤恢復的時間開銷。
3.2.3混合系統(tǒng)可靠性
寫入數據量對磁盤可靠性影響微乎其微,在磁盤與固態(tài)盤的混合系統(tǒng)中將寫數據盡可能分布于磁盤介質上,可以有效減少閃存介質所承受的數據寫人量,文獻[42]把磁盤用作固態(tài)盤的緩存,通過以追加寫的形式順序地在磁盤上寫入更新的數據,由于數據的時間局部性,有很大一部分的數據存在覆蓋寫,通過延遲將數據更新到固態(tài)盤的做法可以減少大量的數據寫,I-CASH是利用固態(tài)盤作為磁盤緩存的混合存儲系統(tǒng),其將讀操作頻繁但寫操作很少發(fā)生的數據緩存在固態(tài)盤中,而將對固態(tài)盤中緩存數據的更新變化以delta的形式追加寫到磁盤中,以減少對固態(tài)盤的寫操作。
3.3體積與能耗
閃存的體積小、能耗低,為構建低能耗計算機系統(tǒng)或數據中心提供了機會,EXCES利用固態(tài)盤作為磁盤緩存,將磁盤的數據預取、緩存、緩沖在固態(tài)盤,從而減少磁盤訪問,以達到節(jié)能的目的。
在數據中心設計中,FAWN和Gordon都提出了匹配集群節(jié)點的計算處理能力與I/O能力,通過使用低頻率的CPU和低延遲的閃存芯片以減少計算處理與I/O之間的差距,CPU的能耗隨頻率超線性增長,相對于現有服務器的高頻CPU,低頻CPU所需能耗很低,由于閃存芯片體積小,可在單塊板子上集成大量的閃存芯片,去除服務器不需要的冗余功能,可實現單板的集群服務器,從而大大減少數據中心的占地面積,此外,在服務器中使用閃存盤或閃存卡也可降低系統(tǒng)對傳統(tǒng)磁盤陣列或服務器數目的需要,從而降低系統(tǒng)規(guī)模,以節(jié)省能耗。
3. 4小結
在以低延遲訪問介質構建的存儲系統(tǒng)中,軟件系統(tǒng)的開銷逐漸占據較大的比例,以FusionIO為代表的閃存加速卡以及UCSD基于PCM的Moneta/Onyx在I/O棧上減少了軟件處理模塊,以降低軟件開銷,當前不少研究工作在設備驅動、緩存調度、文件系統(tǒng)上分別提出了針對閃存介質的優(yōu)化,在軟件程序接口方面,TRIM指令已廣泛應用于固態(tài)盤系統(tǒng),但其他指令多為針對特定場景提出,如PTRIM/EXISTS指令用于文件系統(tǒng)借用閃存轉換層進行空間管理;Nameless write的多種接口實現將空間分配功能交由閃存轉換層完成;Atomic write用于閃存轉換層向上層系統(tǒng)導出原子寫功能,在硬件接口與通信機制上,SATA向PCIe接口過渡已得到大多數人的認可,硬件通信上頻繁中斷的效率不及輪詢機制也得到了關注,I/O棧的調整或重構對提升閃存存儲系統(tǒng)性能相對明顯,然而現有研究工作大多基于純軟件閃存轉換層的方式,或者純硬件的閃存轉換層的方式,對于軟硬件分工討論較少,而且現有研究僅針對閃存介質優(yōu)化,而忽略對傳統(tǒng)磁盤或未來其他新型存儲介質的支持,因而,如何進行軟硬件(系統(tǒng)軟件與設備內硬件控制)合理分工,并實現有效的接口語義,以及如何重構軟件系統(tǒng)以提供多種訪問介質的存儲系統(tǒng)的管理,都值得進一步研究。
在閃存存儲系統(tǒng)的可靠性上,存儲可靠性不僅取決于設備本身,而且與外部負載密切相關,現有的研究分別在系統(tǒng)通過對寫操作的刪冗壓縮、多設備間的磨損與恢復、混合存儲系統(tǒng)優(yōu)劣勢互補上開展工作,從系統(tǒng)緩存、文件系統(tǒng)組織方面對寫負載影響的研究工作還比較少。
在利用閃存構建低能耗計算機系統(tǒng)或數據中心方面,通過閃存的高性能以減少存儲規(guī)模,利用閃存緩存數據以較少磁盤使用或者直接利用閃存重構節(jié)能數據中心等幾個方面都有所研究,直接利用閃存重構節(jié)能數據中心的方式對未來數據中心的構建較有啟發(fā),但針對不同負載情形下計算與I/O比例不同,以及對網絡互聯(lián)與軟件系統(tǒng)等產生的影響,還需要進一步的研究。
4 總結與展望
本文介紹了當前集中典型的閃存存儲系統(tǒng),并從I/O棧調整與重構、閃存系統(tǒng)可靠性、體積與能耗3個角度對閃存系統(tǒng)構建中的關鍵技術和熱點問題進行了探討,閃存系統(tǒng)呈現與傳統(tǒng)磁盤系統(tǒng)迥然相異的特性,簡單的設備替換限制了閃存性能的發(fā)揮,難以克服閃存如磨損等劣勢,也不利于利用閃存提供原子寫等新功能。
如何充分利用閃存特性并通過修改或重構軟件系統(tǒng)以提供友好支持,是構建閃存系統(tǒng)的研究熱點,也是需要進一步研究的方向,首先,在軟件系統(tǒng)的I/O棧上,如何減少軟件冗余,以及緩存調度I/O請求以發(fā)揮閃存低延遲與并發(fā)特性仍是閃存存儲系統(tǒng)構建中的一大挑戰(zhàn),其次,閃存可靠性是與系統(tǒng)負載密切相關的,如何從負載及系統(tǒng)的角度設計閃存的可靠性也是值得研究的問題,閃存與傳統(tǒng)磁盤的可靠性模型發(fā)生變化,現有系統(tǒng)構建較少考慮閃存壽命,從系統(tǒng)構建的角度減少數據寫以提高閃存壽命也是系統(tǒng)構建時需要考慮的因素,最后,閃存系統(tǒng)的設計也應當考慮新型存儲器件可能對系統(tǒng)帶來的影響,以提高軟件系統(tǒng)在多種存儲器件下的普適性,現有文件系統(tǒng)多數優(yōu)化是基于磁盤特性的,而隨著閃存存儲以及PCM等新型存儲器件的出現,系統(tǒng)與存儲硬件之間的分工協(xié)作需要權衡,并且系統(tǒng)應盡可能提供多種存儲設備的管理。
閃存部署已較為廣泛,其可靠性與成本問題逐漸被人們接受,閃存存儲系統(tǒng)的構建還處在起步階段,但通過系統(tǒng)級提供對閃存的友好支持,可充分發(fā)揮閃存優(yōu)勢,也將會給計算機系統(tǒng)帶來重要的改變。
核心關注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務領域、行業(yè)應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業(yè)務領域的管理,全面涵蓋了企業(yè)關注ERP管理系統(tǒng)的核心領域,是眾多中小企業(yè)信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.ezxoed.cn/
本文標題:閃存存儲系統(tǒng)綜述