大家好,今天為大家準備了閃存技術(shù)大餐,內(nèi)容涉及閃存架構(gòu)、關(guān)鍵技術(shù)、顆粒、接口和可靠性等方方面面。部分內(nèi)容之前在本號上發(fā)布過,但內(nèi)容不系統(tǒng)、技術(shù)不全面,今天我專門花時間進行梳理和總結(jié)。內(nèi)容豐富且基本全是原創(chuàng),請耐心往下看,希望對大家理解閃存有所幫助。
閃存最明顯特點就是穩(wěn)定性能,低時延和高隨機IOPS。對于閃存,在評估性能時,我們一般主要關(guān)注90% IO落入規(guī)定的時延范圍(性能是一個線性范圍,而不是某一個點)。數(shù)據(jù)保護等追求所有軟件特性都基于Inline實現(xiàn),如Inline重刪、壓縮、Thin-Provisioning(尤其是重刪,一方面SSD價格還是偏高,重刪壓縮可以節(jié)約投入成本;另一方面也減少了IO下盤次數(shù)提高SSD壽命)。但對于閃存,我們所關(guān)注的特性和技術(shù)指標遠遠不止這些。
閃存架構(gòu)
閃存的Scale out能力: 橫向擴展能力是應對并發(fā)訪問和提升性能容量的最基本特性,所以閃存是必須具備的功能。目前XtremIO支持16控,solidfire已經(jīng)支持但100個控制器節(jié)點。
控制器對稱A/A 能力: 閃存的主要應用場景如OLTP等,傳統(tǒng)的A/P、ALUA陣列在主控制器故障切換時都需要時間切換,并導致IO歸零;并且在閃存陣列下,一般系統(tǒng)CPU是瓶頸,所以只有無歸屬、性能均衡的A/A對稱架構(gòu)才能更好應對。目前傳統(tǒng)存儲(如EMC VMAX/VNX,HP 3PAR, HDS USP/VSP)都已經(jīng)支持,但是閃存陣列還沒看見宣傳;好多閃存產(chǎn)品,如 PureStorage還是 A/P模式。
元數(shù)據(jù)管理
閃存的設(shè)計主要是考慮如何發(fā)揮出SSD的隨機訪問性能,不像HDD那樣,需要通過預取、IO聚合技術(shù)來提高下盤的順序性,減少對機械盤的操作來提升性能。所以閃存在設(shè)計上要考慮如何優(yōu)化元數(shù)據(jù)(系統(tǒng)元數(shù)據(jù)、重刪壓縮指紋、FTL映射等)管理,IO調(diào)度策略,垃圾回收和磨損均衡等設(shè)計。
兩層元數(shù)據(jù)管理架構(gòu)是實現(xiàn)元數(shù)據(jù)管理的趨勢,其基本思想是元數(shù)據(jù)映射基于LBA->塊ID->Block位置的Map形式,卷的數(shù)據(jù)LBA映射到塊ID,而不是磁盤上的物理Block地址;數(shù)據(jù)變化后只需改變對應塊ID映射關(guān)系,塊ID就可以映射到新的物理空間,這樣相比單層方式就簡化重刪壓縮實現(xiàn)和效率。
SolidFire采用兩層元數(shù)據(jù)管理架構(gòu)實現(xiàn)元數(shù)管理,元數(shù)據(jù)管理采用Key-Value方式;元數(shù)據(jù)映射基于LBA->塊ID->位置的Map形式,卷的數(shù)據(jù)LBA對應塊ID,而不是磁盤上的物理地址;所以數(shù)據(jù)變化后計算指紋只需改變對應塊ID映射關(guān)系,天然就支持重刪。在垃圾回收時,是采用塊標記法實現(xiàn)對未使用塊的清除。
GFTL功能
GFTL稱作Global FTL,閃存陣列可以配合SSD控制器(需要SSD開放內(nèi)部接口給陣列),通過陣列完成一些如ROW寫滿條帶下盤,全局負載均衡,整塊對齊擦除、垃圾回收等高級優(yōu)化功能。另外,GFLT也可記錄重刪壓縮數(shù)據(jù)庫,指紋元數(shù)據(jù)管理,實現(xiàn)RAID功能,進行IO聚合,通過元數(shù)據(jù)記錄實現(xiàn)RAID滿條帶下盤,從而規(guī)避讀、修改、寫放大操作,解決Write-Hole問題等。
SSD自身的FTL只能完成數(shù)據(jù)LAB/重刪后數(shù)據(jù)塊、到真實顆粒塊(block)的影射,只能實現(xiàn)簡單的垃圾回收和ROW數(shù)據(jù)寫,內(nèi)部把不同Block組織在一起組成RAID。很多外購SSD磁盤的閃存廠商都還不支持GFTL技術(shù),但是該技術(shù)是提高閃存效率和競爭力的有力武器。
重刪特性
重刪是閃存最基本特性之一,分為Inline和Postline,但對閃存Inline才能體現(xiàn)真正價值。重刪一般分為HASH指紋算法(以SHA-1為例說明,存在碰撞問題)和按字節(jié)對比法兩種,逐字節(jié)對比可靠性高,但會嚴重影響閃存性能,所以很少使用,只在數(shù)據(jù)一致性要求非常嚴格的場景下使用。
SHA-1算法會有Hash沖突的概率,Hash輸出長度一般為160字節(jié)的數(shù)字,對不同數(shù)據(jù)塊(大小可設(shè)置)其輸出是隨機的,在0-2^(160-1)間分布,不同數(shù)據(jù)產(chǎn)生相同Hash值的概率2^(-160),只有數(shù)據(jù)量(固定數(shù)據(jù)塊大小)超過這些數(shù)字能表示的值時,才會發(fā)生Hash沖突,但到目前位置,所有產(chǎn)生的數(shù)據(jù)量總和都不至于產(chǎn)生Hash沖突。
所以Hash方式在產(chǎn)品中最為常見。場見的強Hash算法有SHA-1, SHA-256等;常見的弱Hash算法有Murmur3, CRC, MD5等;強Hash發(fā)生沖突的概率低。
但是在某些場景,如在8K業(yè)務數(shù)據(jù)塊大小的數(shù)據(jù)庫場景下,Key值基本上是唯一的,如果重刪粒度也是8K則根本起不到重刪的效果,可以讓客戶選擇關(guān)閉該功能(XtremIO的Inline重刪功能是無法關(guān)閉的),只開啟壓縮。
IO基本流程
數(shù)據(jù)從主機下發(fā)到閃存陣列控制器,對于非A/A架構(gòu)的閃存來說,首先盤判斷IO對應LUN的歸屬,如果LUN歸屬在在本地控制器,IO就寫到到對應Cache并鏡像,否則轉(zhuǎn)發(fā)給LUN歸屬控制器處理。Cache到水位時再切分塊LBA為相應大小后,交給增值模塊(如重刪壓縮模塊)處理,計算出指紋后,將指紋和數(shù)據(jù)(重復數(shù)據(jù)只保留指紋)交給歸屬控制器來完成下盤,相關(guān)模塊下盤時分配分條,湊滿條帶后順序?qū)懭氪疟P,記錄真實地址和指紋關(guān)系,保存指紋到指紋數(shù)據(jù)庫。
Block磨損均衡
Block磨損均衡是為了讓數(shù)據(jù)均勻分布在SSD的所有Block中,從而能達到冷熱點均勻分布提高SSD壽命的目的。閃存必須提供磨損均衡來實現(xiàn),磨損均衡分為動態(tài)磨損均衡和靜態(tài)磨損均衡;動態(tài)磨損均衡是由主機更新數(shù)據(jù)觸發(fā)的,通過主機讀寫保證數(shù)據(jù)的擦寫平均分布到所有的Block上,因為每種應用都有冷熱數(shù)據(jù),所以靜態(tài)磨損均衡并不能保證冷熱度均勻分布。
靜態(tài)磨損均衡是由SSD內(nèi)部機制實現(xiàn),將冷Block上的數(shù)據(jù)進行轉(zhuǎn)移(不同于垃圾回收),擦寫冷Block上面的數(shù)據(jù)來接受經(jīng)常變化的熱點數(shù)據(jù),使冷Block有機會成為熱Block,從而使SSD中所有Block的冷熱度達到平衡。
SSD掉電保護
為了防止SSD磁盤中緩存數(shù)據(jù)由于掉電丟失,SSD還需要提供掉電保護功能。一般SSD會設(shè)計電壓檢測模塊來實時檢測電壓值,當電壓低于設(shè)置閾值時,SSD電壓檢測模塊會通知SSD控制器進入掉電數(shù)據(jù)刷寫流程,此時會有超級電容作為備電源供電,把磁盤緩存數(shù)據(jù)刷到Flash顆粒中,防止數(shù)據(jù)丟失。
另一方面,閃存陣列也應該提供一種機制,當陣列主動下電或升級維護時,下發(fā)命令給SSD,讓SSD進入掉電緩存數(shù)據(jù)刷新流程,保證數(shù)據(jù)一致性。
閃存(Flash)是相對于HDD而言的一種非易失性存儲器,F(xiàn)lash分為NOR Flash和NANDFlash,NOR Flash可以當作內(nèi)存使用直接執(zhí)行程序,相比DDR 、 SDRAM 或者 RDRAM具有掉電數(shù)據(jù)不丟失等特點,所以在嵌入式設(shè)備(ARM/MIPS等體系架構(gòu))中,一般采用NOR Flash存儲BootLoader和OS程序。但今天我們的重點是NAND Flash。
Flash顆粒解析
學習過模擬電路的同學都知道,在模電原理里三極管分兩種,一種是雙極性三極管,主要基于載流子用來做電流放大,另一種叫做CMOS場效應三極管,通過電場控制的金屬氧化物半導體。NAND Flash就是基于場效應P/N溝道和漏極、柵極技術(shù)通過浮柵Mosfet對柵極充電實現(xiàn)數(shù)非易失據(jù)儲存的。一個晶體單元稱作一個Cell,向Cell中充電就是編程或?qū)懭霐?shù)據(jù),通過電平的高低來判斷數(shù)據(jù)是0還是1。在SLC顆粒類型的Flash中,沖入電荷讀取到閾值電平為高電平,一般表示數(shù)據(jù)0。
NAND Flash SSD和HDD的最大區(qū)別,其一是SSD通過Flash控制電路選通原理來讀/寫對應地址數(shù)據(jù),不必采用笨拙的機械磁頭定位數(shù)據(jù)外;其二是SSD在充電寫入數(shù)據(jù)前,必需要擦除原有的數(shù)據(jù),每次充電和放電稱為一次P/E(編程/擦出),一塊SSD的壽命和可以執(zhí)行P/E操作的次數(shù)強相關(guān)。每種Flash顆粒的P/E操作次數(shù)是不同的,P/E操作次數(shù)越多,對應Flash顆粒的SSD壽命越長,可靠性越好,價格也越高。
NAND Flash顆粒分類
NAND Flash可根據(jù)Cell儲存bit數(shù)據(jù)位的不同分為SLC,MLC,TLC,其中MLC還分為eMLC,MLC和cMLC。由于不同類型顆粒結(jié)構(gòu)不同,所有導致了不同顆粒間數(shù)據(jù)儲存能力,性能和可靠性存在差異。
SLC(single level Cell) 是單層存儲單元,一個Cell中只存儲1bit數(shù)據(jù)(0/1),在寫入數(shù)據(jù)后就高低2為電平,由于判定寫入數(shù)據(jù)值電壓的區(qū)間小,所以可擦寫次數(shù)和可靠性也是最好的,一般在5W-10W之間,但是存儲容量相對較少,成本也最高。
MLC(multi-level Cell) 多層式儲存單元,存儲密度較大,一個Cell中可以存儲2bit數(shù)據(jù)(00/01/10/11),相比SLC,判定寫入Cell中電壓值區(qū)間比2bit數(shù)據(jù)就比較復雜了,由于NAND Flash的物理屬性(擦寫會對顆粒的絕緣層造成損壞),也使得隨著擦寫次數(shù)增多,很難判斷出寫入的數(shù)據(jù)具體代表的bit位。其擦寫次數(shù)一般3K左右,另外,2bit數(shù)據(jù)讀寫使得MLC速度比SLC慢,但容量較大,價格比較便宜。
eMLC(ent
ERPrise MLC)和cMLC(consumer MLC)都是采用MLC技術(shù),主要差別就是NAND Flash顆粒篩選參數(shù),制作工藝和測試方法不同。通過不同標準來界定顆粒,eMLC是經(jīng)過嚴格測試和企業(yè)級標準篩選,所以可靠性和壽命最高;MLC次之;把挑選完eMLC/MLC之后顆粒成為 cMLC,可靠性和壽命都要稍差一些,但成本低,一般總在個人消費和企業(yè)非關(guān)鍵應用中。
TLC(Triple level Cell)三層式存儲單元,一個Cell中存放3bit數(shù)據(jù)(000-111),數(shù)據(jù)密度更大,通過判定電壓確定寫入Cell數(shù)據(jù)的難度更大,所以SLC的擦寫次數(shù)(P/E)操作只有幾百次到上千次;可靠性和性能很低,具有成本優(yōu)勢,一般用在個人消費產(chǎn)品中(不能滿足企業(yè)產(chǎn)品要求)。
SSD的可靠性問題
為了進一步提高SSD磁盤的壽命,一方面,存儲(SSD/HDD)廠商還會在顆粒之上通過ECC(隨用戶數(shù)據(jù)生成一起寫入磁盤)糾錯技術(shù)糾正靜默錯誤。在數(shù)據(jù)寫入時采用ECC編碼寫入檢驗位,當數(shù)據(jù)由于位翻轉(zhuǎn)導致靜默錯誤,讀取數(shù)據(jù)時可以利用ECC檢驗位校正數(shù)據(jù),并把正確數(shù)據(jù)返回主機。常用的ECC校正機制有8bit/512bit, 32bit/2KB,分別可以實現(xiàn)512bit中8bit數(shù)據(jù)檢驗和2KB中32bit數(shù)據(jù)錯誤的檢驗,如果錯誤的bit位數(shù)超過8/32bit(稱為Uncorrectable bit error),ECC是無法檢驗恢復的,必須采用RIAD機制來恢復。
另一方面,SSD廠商采用Over-provisioning技術(shù)提高閃存壽命。SSD的寫入單位是Page, 擦除單位是Block,對某一塊Block擦寫達到一定次數(shù)就會導致Block失效(寫入的數(shù)據(jù)無法判定識別)作廢,所以SSD也提供了額外的容量(稱為 Over- provisioning),以便替換壞塊提高整個SSD壽命,當失效Block的容量超過Over-provisioning容量(MLC的Over-provisioning一般為SSD總?cè)萘康?8%,不同介質(zhì)和廠商有所不同),使得整個SSD容量小于其宣稱容量時,該SSD就失效了。
顆粒的發(fā)展和未來
雖然NAND Flash目前處于絕對的王者地位,但是傳統(tǒng)的NAND Flash是一種線性串列的Mosfet存儲結(jié)構(gòu),這種結(jié)果限制其容量很難做大。一個可行的方式就是增加存儲密度,目前NAND Flash的存儲密度已經(jīng)可以做到微米、甚至到納米級別;但是隨著密度增高,存儲單元Cell的浮柵周圍產(chǎn)生電容耦合,存儲數(shù)據(jù)能力和可靠性極速降低。
所以,3D Flash技術(shù)的出現(xiàn)給閃存的發(fā)展指明了方向,3D-Flash技術(shù)主要有下面三個方向。
憶阻Memristor存儲技術(shù)
憶阻器本質(zhì)上是一種有記憶功能的非線性電阻,通過控制電流的變化可改變其阻值,如果把高阻值定義為“1”,低阻值定義為“0”,通過這種電阻變化實現(xiàn)存儲數(shù)據(jù)的功能。
美光/英特爾聯(lián)合推出3D XPoint憶阻器存儲技術(shù),SanDisk/惠普也達成合作協(xié)議,此次合作以惠普憶阻器技術(shù)和SanDisk的非易失性存儲器技術(shù)創(chuàng)造一個新的企業(yè)級憶阻器存儲方案。憶阻器存儲在訪問速度上Flash存儲快1000倍。
3D XPoint是一種立體化的存儲技術(shù),它看起來與同為3D設(shè)計的NAND技術(shù)相似,但本質(zhì)卻不同,3D XPoint并不單純是NAND,而是一種新的非易失性存儲技術(shù)。3D XPoint技術(shù)還允許存儲單元被堆疊到多個層中,這樣就可以有效提升存儲介質(zhì)的容量。
3D-水平NAND Flash堆疊技術(shù)
基本思路實現(xiàn)對現(xiàn)有的NAND浮柵結(jié)構(gòu)進行堆疊,獲得與普通 NAND 浮柵相同的橫向可擴展性和存儲密度,另外采用氮化硅串接技術(shù)來代替浮柵的電荷捕獲閃存方法。
串聯(lián)存儲器的存取可通過在低級非存儲器中形成一個反型溝道來避免Cell的浮柵電容耦合。這種反型溝道及其相關(guān)耗盡區(qū)為存儲介質(zhì)中所捕獲的電荷提供了高水平電荷保護,免受應用于這些底部存取器的傳輸電壓的干擾。
此外,這種雙柵結(jié)構(gòu)是公認的良好橫向可微縮性方法,它通過使頂部和底部設(shè)備之間實現(xiàn)密切的靜電相互作用來消除短通道效應。
3D-垂直NAND Flash堆疊技術(shù)
三星電子推出獨家專利3D V-NAND閃存技術(shù),提升了產(chǎn)品的容量、速度和可靠性。3D V-NAND不是使用新工藝來縮小Cell單元和提供存儲密度,而是選擇了堆疊更多層數(shù)。
傳統(tǒng)NAND Flash使用的是浮柵極Mosfet技術(shù),充電/放電容易損壞柵極;三星采用控制柵極和絕緣層將Mosfet環(huán)形包裹起來提升了儲存電荷的的物理區(qū)域,從而提高性能和可靠性。
3D V-NAND技術(shù)把Cell3D化,使得在垂直方向無限堆疊擴展,三星放棄了傳統(tǒng)的浮柵極Mosfet,降低了寫入時的電荷消耗,閃存壽命得到大幅提升,為未來SSD的發(fā)展開辟非常廣闊的空間。
SSD接口技術(shù)
我們知道閃存磁盤是在HDD以后出現(xiàn)的,由于SSD優(yōu)異的隨機性能、越來越大的容量和越來越低的成本等優(yōu)勢,使得閃存熱度上升、乃至替換HDD的趨勢。由于歷史繼承性等原因,SSD在設(shè)計是也是借鑒了部分HDD技術(shù),包含接口技術(shù),現(xiàn)在絕大多數(shù)SSD都是采用SATA/SAS接口。SATA接口和AHCI(基于SATA接口和ATA數(shù)據(jù)指令)已是存儲的性能瓶頸凸顯,SCSI/SAS/FC接口(SCSI數(shù)據(jù)指令)組合在閃存中也是昨日黃花, NVMe指令和PCIe的組合將是未來趨勢。
PCIe SSD存儲接口
到目前為止,大部分存儲廠商都推出了對應的PCIe閃存卡(如 EMC XtremSF PCIe SSD卡 )和磁盤。
Fusion-io開發(fā)的專利PCIe閃存卡(IO-Drive),可以加入到服務器中進而實現(xiàn)對應用的加速,并達到微秒級的低訪問延遲。SATA/SAS則無論如何無法達到這個水平。因此,閃存浪潮下接口規(guī)范的重大變革勢所難免。
NVM Express標準
NVM Express是硬盤的新傳輸標準,是來取代為機械盤設(shè)計AHCI(高級主機控制器接口)的接口標準,AHCI無法發(fā)揮固態(tài)磁盤的優(yōu)勢,每條指令都需要讀取4次寄存器,而VNMe不需要讀取。從下面圖上可以看出NVM Express的優(yōu)勢。
NVM Express是一個針對使用PCI Express SSD的企業(yè)和普通客戶端系統(tǒng)開發(fā)的可擴展的主機控制芯片接口標準。該標準針對PCIe SSD定義了最優(yōu)化的寄存器接口、指令集和功能集,并提供可擴展接口以實現(xiàn)SSD 技術(shù)現(xiàn)在和將來的性能潛力。NVMe走的是PCIE通道性能高,并且是統(tǒng)一的通信規(guī)范,只要服務器和PCIE接口卡都遵循NVMe規(guī)范, PCIE接口卡可以安裝在任何服務器上而不用擔心兼容性問題。
NVMe標準的也解決了不同PCIe SSD之間的驅(qū)動適用性問題。此前的PCIe SSD,均需要安裝驅(qū)動程序后才能正常使用,而不同的廠商又各自為政,每個廠商產(chǎn)品都有自己的驅(qū)動,SSD也不能作為引導使用。但支持NVMe標準之后,PCIe SSD就可適用于多個不同平臺,也不需要廠商獨立提供驅(qū)動支持。目前Windows、Linux、Solaris、Unix、VMware、UEFI等都加入了對NVMe SSD的支持。
針對PCIe接口提出了NVMe標準(但NVMe的使用不僅限于PCIe)。該標準由包括IDT、Dell、Intel、EMC、NetApp、Oracle以及Cisco在內(nèi)的13家發(fā)起企業(yè)主導,并由80余家業(yè)界領(lǐng)軍公司合作開發(fā)。NVM Express是一個針對使用PCI Express SSD的企業(yè)和普通客戶端系統(tǒng)開發(fā)的可擴展的主機控制芯片接口標準。該標準針對PCIe SSD定義了最優(yōu)化的寄存器接口、指令集和功能集,并提供可擴展接口以實現(xiàn)SSD 技術(shù)現(xiàn)在和將來的性能潛力。這讓原始設(shè)備制造商無需標準化多個SSD驅(qū)動器,從而加速PCIe SSD 的推廣使用。
但是NVMe作為針對下一代存儲設(shè)備提出的指令和協(xié)議規(guī)范,除了支持PCIe接口,VNMe規(guī)范可以應用到不同的硬件接口規(guī)范上。如支持U.2接口(即SFF-8639接口,包含4組PCIeLanes和2組SAS/SATA Lanes),SATA Express和M.2接口等等。另外,PCIe SSD并不一定支持NVMe規(guī)范,但是NVMe PCIe 是需要考慮符合NVMe規(guī)范。
東芝集團下存儲解決方案提供商OCZ,推出了全新的基于NVMe技術(shù)的Z-Drive 6000系列SSD,結(jié)合了第三代PCIe和非易失性存儲器專用(NVMe)技術(shù),提供給系統(tǒng)集成商和存儲供應商一個流線型的存儲器接口、命令集、隊列設(shè)計,用于快速訪問關(guān)鍵性數(shù)據(jù)和獲取高彈性的能力。
OCZ推出的Z-Drive 6000 SSD的產(chǎn)品有三種型號。它們包括帶有2.5英寸的機箱大小和高達3.2TB的可用容量的Z-Drive 6000 SFF系列、性能略低但是可用容量高達6.4TB的Z-Drive 6300 SFF系列和帶有半高、半長的插卡式外形,同時可用容量可以達到6.4TB的Z-Drive 6300 AIC系列。
NOR flash接口技術(shù)
傳統(tǒng)NOR閃存帶有SRAM接口(相比NAND Flash并行接口管腳多、需要統(tǒng)一編址,支持代碼本地執(zhí)行XIP,但容量比較小),可以在隨意地址存入任意字節(jié)數(shù)據(jù)。
美光也開始探索串行NOR閃存接口。美光技術(shù)公司對傳統(tǒng)NOR 閃存進行優(yōu)化,推出全新XTREMFlash 串行NOR Flash存儲器方案,具有每秒3.2 Gb的強大的數(shù)據(jù)讀寫能力,而且能夠兼容目前所廣泛使用的串行NOR閃存接口。在性能表現(xiàn)上超越除超大規(guī)模NAND閃存陣列之外的全部閃存存儲方案類型。
XTRMFlash將提供并行、串行以及Quad-SPI型NOR閃存產(chǎn)品,且其針腳數(shù)量較現(xiàn)有并行NOR閃存將下降75%。兼容目前串行NOR閃存所普遍使用的Quad SPI閃存針腳設(shè)計。XTRMFlash能夠以針腳兼容形式運行,而且只需對電路板稍加調(diào)整即可達成上述性能參數(shù)。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:閃存技術(shù)最全面解析
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121520092.html