新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 全面解析閃存技術(shù)大餐 架構(gòu)/顆粒/接口/可靠性

全面解析閃存技術(shù)大餐 架構(gòu)/顆粒/接口/可靠性

作者: 時(shí)間:2018-08-01 來(lái)源:網(wǎng)絡(luò) 收藏

閃存最明顯特點(diǎn)就是穩(wěn)定性能,低時(shí)延和高隨機(jī)IOPS。對(duì)于閃存,在評(píng)估性能時(shí),我們一般主要關(guān)注90% IO落入規(guī)定的時(shí)延范圍(性能是一個(gè)線性范圍,而不是某一個(gè)點(diǎn))。數(shù)據(jù)保護(hù)等追求所有軟件特性都基于Inline實(shí)現(xiàn),如Inline重刪、壓縮、Thin-Provisioning(尤其是重刪,一方面SSD價(jià)格還是偏高,重刪壓縮可以節(jié)約投入成本;另一方面也減少了IO下盤次數(shù)提高SSD壽命)。但對(duì)于閃存,我們所關(guān)注的特性和技術(shù)指標(biāo)遠(yuǎn)遠(yuǎn)不止這些。

本文引用地址:http://www.butianyuan.cn/article/201808/384905.htm

閃存

閃存的Scale out能力:橫向擴(kuò)展能力是應(yīng)對(duì)并發(fā)訪問(wèn)和提升性能容量的最基本特性,所以閃存是必須具備的功能。目前XtremIO支持16控,solidfire已經(jīng)支持但100個(gè)控制器節(jié)點(diǎn)。

控制器對(duì)稱A/A 能力:閃存的主要應(yīng)用場(chǎng)景如OLTP等,傳統(tǒng)的A/P、ALUA陣列在主控制器故障切換時(shí)都需要時(shí)間切換,并導(dǎo)致IO歸零;并且在閃存陣列下,一般系統(tǒng)CPU是瓶頸,所以只有無(wú)歸屬、性能均衡的A/A對(duì)稱才能更好應(yīng)對(duì)。目前傳統(tǒng)存儲(chǔ)(如EMC VMAX/VNX,HP 3PAR, HDS USP/VSP)都已經(jīng)支持,但是閃存陣列還沒(méi)看見宣傳;好多閃存產(chǎn)品,如 PureStorage還是 A/P模式。

元數(shù)據(jù)管理

閃存的設(shè)計(jì)主要是考慮如何發(fā)揮出SSD的隨機(jī)訪問(wèn)性能,不像HDD那樣,需要通過(guò)預(yù)取、IO聚合技術(shù)來(lái)提高下盤的順序性,減少對(duì)機(jī)械盤的操作來(lái)提升性能。所以閃存在設(shè)計(jì)上要考慮如何優(yōu)化元數(shù)據(jù)(系統(tǒng)元數(shù)據(jù)、重刪壓縮指紋、FTL映射等)管理,IO調(diào)度策略,垃圾回收和磨損均衡等設(shè)計(jì)。

兩層元數(shù)據(jù)管理是實(shí)現(xiàn)元數(shù)據(jù)管理的趨勢(shì),其基本思想是元數(shù)據(jù)映射基于LBA->塊ID->Block位置的Map形式,卷的數(shù)據(jù)LBA映射到塊ID,而不是磁盤上的物理Block地址;數(shù)據(jù)變化后只需改變對(duì)應(yīng)塊ID映射關(guān)系,塊ID就可以映射到新的物理空間,這樣相比單層方式就簡(jiǎn)化重刪壓縮實(shí)現(xiàn)和效率。

SolidFire采用兩層元數(shù)據(jù)管理架構(gòu)實(shí)現(xiàn)元數(shù)管理,元數(shù)據(jù)管理采用Key-Value方式;元數(shù)據(jù)映射基于LBA->塊ID->位置的Map形式,卷的數(shù)據(jù)LBA對(duì)應(yīng)塊ID,而不是磁盤上的物理地址;所以數(shù)據(jù)變化后計(jì)算指紋只需改變對(duì)應(yīng)塊ID映射關(guān)系,天然就支持重刪。在垃圾回收時(shí),是采用塊標(biāo)記法實(shí)現(xiàn)對(duì)未使用塊的清除。

GFTL功能

GFTL稱作Global FTL,閃存陣列可以配合SSD控制器(需要SSD開放內(nèi)部給陣列),通過(guò)陣列完成一些如ROW寫滿條帶下盤,全局負(fù)載均衡,整塊對(duì)齊擦除、垃圾回收等高級(jí)優(yōu)化功能。另外,GFLT也可記錄重刪壓縮數(shù)據(jù)庫(kù),指紋元數(shù)據(jù)管理,實(shí)現(xiàn)RAID功能,進(jìn)行IO聚合,通過(guò)元數(shù)據(jù)記錄實(shí)現(xiàn)RAID滿條帶下盤,從而規(guī)避讀、修改、寫放大操作,解決Write-Hole問(wèn)題等。

SSD自身的FTL只能完成數(shù)據(jù)LAB/重刪后數(shù)據(jù)塊、到真實(shí)顆粒塊(block)的影射,只能實(shí)現(xiàn)簡(jiǎn)單的垃圾回收和ROW數(shù)據(jù)寫,內(nèi)部把不同Block組織在一起組成RAID。很多外購(gòu)SSD磁盤的閃存廠商都還不支持GFTL技術(shù),但是該技術(shù)是提高閃存效率和競(jìng)爭(zhēng)力的有力武器。

重刪特性

重刪是閃存最基本特性之一,分為Inline和Postline,但對(duì)閃存Inline才能體現(xiàn)真正價(jià)值。重刪一般分為HASH指紋算法(以SHA-1為例說(shuō)明,存在碰撞問(wèn)題)和按字節(jié)對(duì)比法兩種,逐字節(jié)對(duì)比高,但會(huì)嚴(yán)重影響閃存性能,所以很少使用,只在數(shù)據(jù)一致性要求非常嚴(yán)格的場(chǎng)景下使用。

SHA-1算法會(huì)有Hash沖突的概率,Hash輸出長(zhǎng)度一般為160字節(jié)的數(shù)字,對(duì)不同數(shù)據(jù)塊(大小可設(shè)置)其輸出是隨機(jī)的,在0-2^(160-1)間分布,不同數(shù)據(jù)產(chǎn)生相同Hash值的概率2^(-160),只有數(shù)據(jù)量(固定數(shù)據(jù)塊大小)超過(guò)這些數(shù)字能表示的值時(shí),才會(huì)發(fā)生Hash沖突,但到目前位置,所有產(chǎn)生的數(shù)據(jù)量總和都不至于產(chǎn)生Hash沖突。

所以Hash方式在產(chǎn)品中最為常見。場(chǎng)見的強(qiáng)Hash算法有SHA-1, SHA-256等;常見的弱Hash算法有Murmur3, CRC, MD5等;強(qiáng)Hash發(fā)生沖突的概率低。

但是在某些場(chǎng)景,如在8K業(yè)務(wù)數(shù)據(jù)塊大小的數(shù)據(jù)庫(kù)場(chǎng)景下,Key值基本上是唯一的,如果重刪粒度也是8K則根本起不到重刪的效果,可以讓客戶選擇關(guān)閉該功能(XtremIO的Inline重刪功能是無(wú)法關(guān)閉的),只開啟壓縮。

IO基本流程

數(shù)據(jù)從主機(jī)下發(fā)到閃存陣列控制器,對(duì)于非A/A架構(gòu)的閃存來(lái)說(shuō),首先盤判斷IO對(duì)應(yīng)LUN的歸屬,如果LUN歸屬在在本地控制器,IO就寫到到對(duì)應(yīng)Cache并鏡像,否則轉(zhuǎn)發(fā)給LUN歸屬控制器處理。Cache到水位時(shí)再切分塊LBA為相應(yīng)大小后,交給增值模塊(如重刪壓縮模塊)處理,計(jì)算出指紋后,將指紋和數(shù)據(jù)(重復(fù)數(shù)據(jù)只保留指紋)交給歸屬控制器來(lái)完成下盤,相關(guān)模塊下盤時(shí)分配分條,湊滿條帶后順序?qū)懭氪疟P,記錄真實(shí)地址和指紋關(guān)系,保存指紋到指紋數(shù)據(jù)庫(kù)。

Block磨損均衡

Block磨損均衡是為了讓數(shù)據(jù)均勻分布在SSD的所有Block中,從而能達(dá)到冷熱點(diǎn)均勻分布提高SSD壽命的目的。閃存必須提供磨損均衡來(lái)實(shí)現(xiàn),磨損均衡分為動(dòng)態(tài)磨損均衡和靜態(tài)磨損均衡;動(dòng)態(tài)磨損均衡是由主機(jī)更新數(shù)據(jù)觸發(fā)的,通過(guò)主機(jī)讀寫保證數(shù)據(jù)的擦寫平均分布到所有的Block上,因?yàn)槊糠N應(yīng)用都有冷熱數(shù)據(jù),所以靜態(tài)磨損均衡并不能保證冷熱度均勻分布。

靜態(tài)磨損均衡是由SSD內(nèi)部機(jī)制實(shí)現(xiàn),將冷Block上的數(shù)據(jù)進(jìn)行轉(zhuǎn)移(不同于垃圾回收),擦寫冷Block上面的數(shù)據(jù)來(lái)接受經(jīng)常變化的熱點(diǎn)數(shù)據(jù),使冷Block有機(jī)會(huì)成為熱Block,從而使SSD中所有Block的冷熱度達(dá)到平衡。

SSD掉電保護(hù)

為了防止SSD磁盤中緩存數(shù)據(jù)由于掉電丟失,SSD還需要提供掉電保護(hù)功能。一般SSD會(huì)設(shè)計(jì)電壓檢測(cè)模塊來(lái)實(shí)時(shí)檢測(cè)電壓值,當(dāng)電壓低于設(shè)置閾值時(shí),SSD電壓檢測(cè)模塊會(huì)通知SSD控制器進(jìn)入掉電數(shù)據(jù)刷寫流程,此時(shí)會(huì)有超級(jí)電容作為備電源供電,把磁盤緩存數(shù)據(jù)刷到Flash顆粒中,防止數(shù)據(jù)丟失。

另一方面,閃存陣列也應(yīng)該提供一種機(jī)制,當(dāng)陣列主動(dòng)下電或升級(jí)維護(hù)時(shí),下發(fā)命令給SSD,讓SSD進(jìn)入掉電緩存數(shù)據(jù)刷新流程,保證數(shù)據(jù)一致性。

閃存(Flash)是相對(duì)于HDD而言的一種非易失性存儲(chǔ)器,F(xiàn)lash分為NOR Flash和NANDFlash,NOR Flash可以當(dāng)作內(nèi)存使用直接執(zhí)行程序,相比DDR 、 SDRAM 或者 RDRAM具有掉電數(shù)據(jù)不丟失等特點(diǎn),所以在嵌入式設(shè)備(ARM/MIPS等體系架構(gòu))中,一般采用NOR Flash存儲(chǔ)BootLoader和OS程序。但今天我們的重點(diǎn)是NAND Flash。

Flash顆粒解析

學(xué)習(xí)過(guò)模擬電路的同學(xué)都知道,在模電原理里三極管分兩種,一種是雙極性三極管,主要基于載流子用來(lái)做電流放大,另一種叫做CMOS場(chǎng)效應(yīng)三極管,通過(guò)電場(chǎng)控制的金屬氧化物半導(dǎo)體。NAND Flash就是基于場(chǎng)效應(yīng)P/N溝道和漏極、柵極技術(shù)通過(guò)浮柵Mosfet對(duì)柵極充電實(shí)現(xiàn)數(shù)非易失據(jù)儲(chǔ)存的。一個(gè)晶體單元稱作一個(gè)Cell,向Cell中充電就是編程或?qū)懭霐?shù)據(jù),通過(guò)電平的高低來(lái)判斷數(shù)據(jù)是0還是1。在SLC顆粒類型的Flash中,沖入電荷讀取到閾值電平為高電平,一般表示數(shù)據(jù)0。


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉