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