閃存存儲(chǔ)的性能與傳統(tǒng)磁盤的差異,是眾所周知的事情。但是,閃存顆粒在物理層面可靠性和穩(wěn)定性的問題往往被有意或無意地忽視。那么,針對(duì)閃存存儲(chǔ)的性能優(yōu)勢(shì)和持久性劣勢(shì)應(yīng)該采取什么樣的解決機(jī)制?當(dāng)前文件系統(tǒng)設(shè)計(jì)與閃存存儲(chǔ)結(jié)合存在哪些問題?同時(shí)閃存存儲(chǔ)在不同的文件系統(tǒng)中具備哪些應(yīng)用模式和特點(diǎn) ?這些問題一直困擾著關(guān)注閃存與文件系統(tǒng)應(yīng)用的朋友。
作為DTCC本年度的白金贊助商之一,閃存領(lǐng)域領(lǐng)導(dǎo)性廠商Greenliant亞太營(yíng)銷副總裁李炫輝分析指出,在過去,閃存與文件系統(tǒng)這兩個(gè)方面是不搭界的事情。因?yàn)殚W存存儲(chǔ)更關(guān)注物理介質(zhì)以及集成電路與底層訪問控制,文件系統(tǒng)更關(guān)注對(duì)上層的應(yīng)用提供存儲(chǔ)的功能和特性。但是,正如CPU多核技術(shù)帶來操作系統(tǒng)和應(yīng)用采用多線程/進(jìn)程并發(fā)機(jī)制提升性能一樣,閃存介質(zhì)的出現(xiàn)也對(duì)文件系統(tǒng)應(yīng)用有所影響和變化。因此,首先需要從了解閃存存儲(chǔ)的底層特性、實(shí)現(xiàn)機(jī)制以及優(yōu)劣勢(shì),揚(yáng)長(zhǎng)避短,利用現(xiàn)有文件系統(tǒng)和閃存優(yōu)化的文件系統(tǒng),充分發(fā)揮閃存存儲(chǔ)的優(yōu)點(diǎn),一步一步地解決現(xiàn)在面臨的問題。
你所知道的閃存特性和架構(gòu)是什么樣子?
在回答這個(gè)問題之前,我們必須搞清楚一個(gè)常識(shí)問題:現(xiàn)在談?wù)撻W存和固態(tài)硬盤的概念實(shí)際上不太一樣,凡是使用Flash Memory的都叫閃存,實(shí)際上后者只是一個(gè)封裝的狀態(tài),固態(tài)硬盤可以封裝Flash Memory也可以是非Flash Memory,目前大部分閃存廠商采用的都是Flash Memory的固態(tài)盤, 一般都把固態(tài)盤叫閃存,閃存也叫固態(tài)盤,所以也統(tǒng)稱閃存。
除了閃存以外,還有其它多種快速存儲(chǔ)技術(shù),如DRAM ,NVRAM, MRAM and Spin-Torque(自旋力矩磁阻式隨機(jī)存取內(nèi)存), Carbon Nanotube( 碳納米管 ), Phase Change Memory(相變內(nèi)存), Memristor ( 憶阻器 )等等。
決定快速存儲(chǔ)大規(guī)模應(yīng)用的主要因素是量產(chǎn)規(guī)模、穩(wěn)定性以及經(jīng)濟(jì)性,有量產(chǎn)規(guī)模才能提供可能,有了量產(chǎn)規(guī)模才能對(duì)閃存穩(wěn)定性和性能進(jìn)行驗(yàn)證, 再就是經(jīng)濟(jì)性如何體現(xiàn),這些因素決定了快速存儲(chǔ)大規(guī)模應(yīng)用。當(dāng)前,閃存主要用于IO性能加速環(huán)境,如數(shù)據(jù)庫加速、虛擬化、延時(shí)敏感型應(yīng)用、Server SAN或SDS、大數(shù)據(jù)處理等等方面,也是從2010年左右,閃存才開始大規(guī)模應(yīng)用。
那么閃存物理特性的優(yōu)劣表現(xiàn)在哪些方面呢?
從閃存物理性來看,閃存談?wù)撟疃嗟木褪荢LC,MLC,它們分別是Single-Level Cell 單層單元和Multi-Level Cell多層單元的縮寫,Cell就是一個(gè)物理單元,有固定隔離柵和浮動(dòng)隔離柵,進(jìn)行計(jì)數(shù)時(shí)候,是電子打到浮動(dòng)隔離柵產(chǎn)生電位,電位變化形成數(shù)據(jù)00、01、11、10等,當(dāng)進(jìn)行操作,就是要電子進(jìn)行擊穿,在進(jìn)行改變的時(shí)候,將電子通過引槽流出Cell,并產(chǎn)生變化。
閃存為什么有擦寫次數(shù)限制呢?當(dāng)進(jìn)行數(shù)據(jù)擦寫,電子流出時(shí)候,物理隔離柵就會(huì)變薄,變薄到一定程度就沒有絕緣的機(jī)制了,電子進(jìn)入就會(huì)漏掉,那么就會(huì)壞掉,就出現(xiàn)閃存擦寫次數(shù)的問題。
當(dāng)前NAND Flash面臨的挑戰(zhàn)主要是耐久性、數(shù)據(jù)保持性、讀寫干擾、制造工藝缺陷,耐久性受制于閃存顆粒的擦寫次數(shù),同時(shí)數(shù)據(jù)保持性是指閃存將數(shù)據(jù)存在一個(gè)Cell中,仍然存在電子泄漏和電子輻射造成數(shù)據(jù)丟失情況。讀寫干擾是指對(duì)一個(gè)Cell進(jìn)行讀寫操作時(shí)對(duì)臨近的Cell也會(huì)產(chǎn)生干擾。制造工藝也存在不同的品質(zhì)。另外,SLC比MLC品質(zhì)要好,Cell都一樣,但前者只有兩個(gè)狀態(tài)位,后者有4個(gè)狀態(tài)位,那么后者讀寫數(shù)據(jù)的擦寫次數(shù)要增加,壽命自然會(huì)縮短。
當(dāng)前SSD主要使用NAND Flash,屬于非易失性存儲(chǔ)介質(zhì),成本比較低。物理特性不容易改變,那么如何優(yōu)化顯得很重要。
有一個(gè)情況需要指出,對(duì)于半導(dǎo)體廠商而言,在不斷降低制程,密度越來越高,工藝控制難度增加,造成NAND Flash可靠性隨制造工藝減小而降低,如擦寫次數(shù)降低,大容量閃存里面就更容易出現(xiàn)錯(cuò)誤。這也就是當(dāng)前閃存廠商開始更專注 3D NAND 制程工藝的原因。
明白了閃存的物理特性之后,你們清楚閃存與磁盤到底存在哪些區(qū)別呢?
閃存的性能與磁盤系統(tǒng)的對(duì)比毋庸置疑,前者是電子驅(qū)動(dòng),后者是機(jī)械驅(qū)動(dòng),閃存的性能是磁盤的幾十倍到上百倍,但是在可靠性和穩(wěn)定性層面,閃存和磁盤卻有很大的差異,例如磁盤性能隨時(shí)間變化不會(huì)有變動(dòng),15000轉(zhuǎn)硬盤十年以后還是15000轉(zhuǎn),而閃存存儲(chǔ)則隨時(shí)間和數(shù)據(jù)擦寫量增長(zhǎng)存在波動(dòng)和衰減;閃存在擦寫次數(shù)方面有限制,但磁盤沒有限制;在MTBF方面磁盤可以到200萬小時(shí),而閃存則與擦寫次數(shù)密切相關(guān)。當(dāng)前阻礙閃存大規(guī)模應(yīng)用于企業(yè)級(jí)應(yīng)用的主要問題不是性能,而是閃存設(shè)備的可靠性,如何在閃存產(chǎn)品的生命周期內(nèi)保證山村的可靠和性能無衰減是關(guān)鍵。
如何提升閃存可靠性和保障性能無衰減,則需要在閃存設(shè)備的架構(gòu)設(shè)計(jì)方面下功夫。閃存控制器是閃存設(shè)備的核心,是聯(lián)系主機(jī)和NAND Flash的橋梁,閃存控制器的管理功能包括了: Error-correcting code (ECC校驗(yàn))、RAID保護(hù)機(jī)制、Wear leveling(磨損平衡)、Bad block mapping(壞塊管理)、Read/write disturb management(讀寫干擾管理)、Garbage collection(垃圾收集)等。
與此同時(shí),閃存控制器也有其它定制化功能,如加密、安全擦除或自毀、壓縮或去重方面。
由于NAND Flash的工藝不能保證NAND的Memory Array在其生命周期中的可靠性,因此在NAND的生產(chǎn)中及使用過程中會(huì)產(chǎn)生壞塊。為了檢測(cè)數(shù)據(jù)的可靠性,在應(yīng)用NAND Flash的系統(tǒng)中一般都會(huì)采用一定的壞區(qū)管理策略,而管理壞區(qū)的前提是能比較可靠的進(jìn)行壞區(qū)檢測(cè)。
NAND ECC校驗(yàn)機(jī)制比較復(fù)雜,由行校驗(yàn)、列校驗(yàn) 組合而成,當(dāng)出現(xiàn)多位錯(cuò)誤時(shí)候,可以通過ECC 校驗(yàn)恢復(fù)。常用的ECC算法有Hamming、Reed-Solomon碼、BCH、LDPC等,和使用顆粒類型相關(guān)。SLC一般采用Hamming校驗(yàn),MLC一般采用Reed-Solomon碼或BCH可以實(shí)現(xiàn)多位糾錯(cuò),LDPC一般針對(duì)3D NAND校驗(yàn)。
常見的閃存卡ECC模塊設(shè)計(jì),采用集中式ECC引擎設(shè)計(jì),即在板卡的閃存控制器中集成1個(gè)或2個(gè)ECC引擎處理ECC校驗(yàn)。當(dāng)數(shù)據(jù)寫入NAND Flash時(shí),會(huì)由ECC引擎生成ECC校驗(yàn)碼,然后和數(shù)據(jù)一起寫入后端的閃存顆粒。當(dāng)讀取時(shí)候,系統(tǒng)從顆粒里面讀出數(shù)據(jù)和ECC校驗(yàn)碼,如果驗(yàn)證一致就送出數(shù)據(jù),如果發(fā)現(xiàn)數(shù)據(jù)和ECC校驗(yàn)碼不一致,則需要通過ECC校驗(yàn)獲得正確數(shù)據(jù),然后寫回后送出數(shù)據(jù)。這種架構(gòu)設(shè)計(jì)比較簡(jiǎn)單,成本比較低,但是我們知道,當(dāng)Flash設(shè)備隨著使用時(shí)間和數(shù)據(jù)量的增長(zhǎng),壞塊會(huì)逐漸增加,會(huì)產(chǎn)生大量的ECC Error,這時(shí)候由于ECC引擎成為系統(tǒng)瓶頸,設(shè)備性能和可靠性會(huì)大幅度下降,對(duì)應(yīng)用性能和數(shù)據(jù)安全帶來影響。
如何消除性能衰減和可靠性下降的問題,這就需要在架構(gòu)設(shè)計(jì)方面進(jìn)行創(chuàng)新。Greenliant在閃存設(shè)備架構(gòu)上實(shí)現(xiàn)了分布式ECC 設(shè)計(jì)架構(gòu), 在每一個(gè)NAND Package中都封裝一個(gè)閃存控制器里面。這樣就避免了前面所講的性能衰減和可靠性下降的問題。同時(shí)為了防止閃存顆粒故障造成數(shù)據(jù)丟失,在架構(gòu)上還實(shí)現(xiàn)了板載硬件RAID的功能。
還有一個(gè)需要注意的區(qū)別:閃存與磁盤系統(tǒng)的物理地址映射有很大不同。
在磁盤里面邏輯塊地址LBA和物理塊地址PBA是一一對(duì)應(yīng)的,磁盤只要寫的是這個(gè)LBA那么磁盤就一直會(huì)訪問這個(gè)地址,那么就存在熱點(diǎn);對(duì)于閃存盤來說,由于存在擦寫次數(shù)的限制,則會(huì)通過磨損平衡算法,盡可能讓每個(gè)塊擦寫次數(shù)相同增加閃存設(shè)備的壽命,因此同一個(gè)LBA在不同的時(shí)間會(huì)指向不同的物理地址,因此文件系統(tǒng)需要閃存的這種特性做優(yōu)化。
磨損平衡如何改變邏輯塊地址和物理地址對(duì)應(yīng)?磨損平衡分為動(dòng)態(tài)和靜態(tài)磨損平衡以及全局磨損平衡。動(dòng)態(tài)磨損平衡寫一個(gè)文件時(shí)候,永遠(yuǎn)寫在一個(gè)空白塊,空白塊寫完之后再寫回到之前的那些數(shù)據(jù)被刪除塊上,這樣循環(huán)地寫。但是當(dāng)一個(gè)文件寫到閃存上就不很少被訪問,而其他塊被寫了幾十上百次,在這種情況下塊與塊的擦寫次數(shù)就不再一致,動(dòng)態(tài)磨損平衡算法就失效了,因此我們又采用靜態(tài)磨損平衡算法,就是當(dāng)一個(gè)塊擦寫次數(shù)和臨近塊次數(shù)超過一定閥值時(shí)我們就作一個(gè)數(shù)據(jù)存儲(chǔ)交換,這樣保證擦寫平衡。這樣有利于改善閃存耐久性,會(huì)優(yōu)化閃存的性能。另外我們?cè)陬w粒級(jí)別會(huì)有全局磨損平衡算法,這樣進(jìn)一步提升設(shè)備的可靠性。
可見,閃存可靠性通過閃存算法、控制器管理可以來優(yōu)化。那么如何采用閃存存儲(chǔ)優(yōu)化系統(tǒng)性能?
業(yè)界目前采用閃存存儲(chǔ)優(yōu)化系統(tǒng)性能的方式主要包括三種:一是所有數(shù)據(jù)都放閃存存儲(chǔ);二是混合模式一部分熱數(shù)據(jù)放閃存存儲(chǔ);三是緩存架構(gòu)如緩存熱數(shù)據(jù)在閃存存儲(chǔ),如分層存儲(chǔ)將冷熱數(shù)據(jù)進(jìn)行存儲(chǔ)分層。
這三種方式,都需要文件系統(tǒng)支持,由文件系統(tǒng)提供底層設(shè)備訪問。從幾個(gè)文件系統(tǒng)特點(diǎn)來展開分析,首先Linux Storage Stack Diagram version 3.17方面。
從這個(gè)圖中,我們可以看到從文件系統(tǒng)到底層設(shè)備,路徑很長(zhǎng),可見,文件系統(tǒng)是一個(gè)比較復(fù)雜的東西。這么長(zhǎng)的訪問路徑會(huì)影響到閃存性能和延時(shí)優(yōu)勢(shì)的發(fā)揮。針對(duì)這個(gè)問題,2012年英特
分享到微信 ×
打開微信,點(diǎn)擊底部的“發(fā)現(xiàn)”,
使用“掃一掃”即可將網(wǎng)頁分享至朋友圈。