如何看待閃存特性與文件系統(tǒng)應(yīng)用?

責(zé)任編輯:editor006

作者:肖授

2015-04-23 17:31:09

摘自:it168網(wǎng)站

閃存存儲(chǔ)的性能與傳統(tǒng)磁盤的差異,是眾所周知的事情。磁盤存儲(chǔ)架構(gòu)下為了提高IO性能采用了緩存設(shè)計(jì),從而又增加了復(fù)雜的數(shù)據(jù)保護(hù)的處理機(jī)制。當(dāng)前有些研究機(jī)構(gòu)通過(guò)透明地繞過(guò)文件系統(tǒng)使用非易失性存儲(chǔ)器,在高并發(fā)的壓力下將閃存設(shè)備的性能提升7倍以上。

閃存存儲(chǔ)的性能與傳統(tǒng)磁盤的差異,是眾所周知的事情。但是,閃存顆粒在物理層面可靠性和穩(wěn)定性的問(wèn)題往往被有意或無(wú)意地忽視。那么,針對(duì)閃存存儲(chǔ)的性能優(yōu)勢(shì)和持久性劣勢(shì)應(yīng)該采取什么樣的解決機(jī)制?當(dāng)前文件系統(tǒng)設(shè)計(jì)與閃存存儲(chǔ)結(jié)合存在哪些問(wèn)題?同時(shí)閃存存儲(chǔ)在不同的文件系統(tǒng)中具備哪些應(yīng)用模式和特點(diǎn) ?這些問(wèn)題一直困擾著關(guān)注閃存與文件系統(tǒng)應(yīng)用的朋友。

作為DTCC本年度的白金贊助商之一,閃存領(lǐng)域領(lǐng)導(dǎo)性廠商Greenliant亞太營(yíng)銷副總裁李炫輝分析指出,在過(guò)去,閃存與文件系統(tǒng)這兩個(gè)方面是不搭界的事情。因?yàn)殚W存存儲(chǔ)更關(guān)注物理介質(zhì)以及集成電路與底層訪問(wèn)控制,文件系統(tǒng)更關(guān)注對(duì)上層的應(yīng)用提供存儲(chǔ)的功能和特性。但是,正如CPU多核技術(shù)帶來(lái)操作系統(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)在面臨的問(wèn)題。

你所知道的閃存特性和架構(gòu)是什么樣子?

在回答這個(gè)問(wèn)題之前,我們必須搞清楚一個(gè)常識(shí)問(wèn)題:現(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ù)庫(kù)加速、虛擬化、延時(shí)敏感型應(yīng)用、Server SAN或SDS、大數(shù)據(jù)處理等等方面,也是從2010年左右,閃存才開(kāi)始大規(guī)模應(yīng)用。

那么閃存物理特性的優(yōu)劣表現(xiàn)在哪些方面呢?

從閃存物理性來(lái)看,閃存談?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í)候,將電子通過(guò)引槽流出Cell,并產(chǎn)生變化。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

閃存為什么有擦寫次數(shù)限制呢?當(dāng)進(jìn)行數(shù)據(jù)擦寫,電子流出時(shí)候,物理隔離柵就會(huì)變薄,變薄到一定程度就沒(méi)有絕緣的機(jī)制了,電子進(jìn)入就會(huì)漏掉,那么就會(huì)壞掉,就出現(xiàn)閃存擦寫次數(shù)的問(wèn)題。

當(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)體廠商而言,在不斷降低制程,密度越來(lái)越高,工藝控制難度增加,造成NAND Flash可靠性隨制造工藝減小而降低,如擦寫次數(shù)降低,大容量閃存里面就更容易出現(xiàn)錯(cuò)誤。這也就是當(dāng)前閃存廠商開(kāi)始更專注 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ù)方面有限制,但磁盤沒(méi)有限制;在MTBF方面磁盤可以到200萬(wàn)小時(shí),而閃存則與擦寫次數(shù)密切相關(guān)。當(dāng)前阻礙閃存大規(guī)模應(yīng)用于企業(yè)級(jí)應(yīng)用的主要問(wèn)題不是性能,而是閃存設(shè)備的可靠性,如何在閃存產(chǎn)品的生命周期內(nèi)保證山村的可靠和性能無(wú)衰減是關(guān)鍵。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

如何提升閃存可靠性和保障性能無(wú)衰減,則需要在閃存設(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)中及使用過(guò)程中會(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í)候,可以通過(guò)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)。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

常見(jià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)碼不一致,則需要通過(guò)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ù)安全帶來(lái)影響。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

如何消除性能衰減和可靠性下降的問(wèn)題,這就需要在架構(gòu)設(shè)計(jì)方面進(jìn)行創(chuàng)新。Greenliant在閃存設(shè)備架構(gòu)上實(shí)現(xiàn)了分布式ECC 設(shè)計(jì)架構(gòu), 在每一個(gè)NAND Package中都封裝一個(gè)閃存控制器里面。這樣就避免了前面所講的性能衰減和可靠性下降的問(wèn)題。同時(shí)為了防止閃存顆粒故障造成數(shù)據(jù)丟失,在架構(gòu)上還實(shí)現(xiàn)了板載硬件RAID的功能。

還有一個(gè)需要注意的區(qū)別:閃存與磁盤系統(tǒng)的物理地址映射有很大不同。

在磁盤里面邏輯塊地址LBA和物理塊地址PBA是一一對(duì)應(yīng)的,磁盤只要寫的是這個(gè)LBA那么磁盤就一直會(huì)訪問(wèn)這個(gè)地址,那么就存在熱點(diǎn);對(duì)于閃存盤來(lái)說(shuō),由于存在擦寫次數(shù)的限制,則會(huì)通過(guò)磨損平衡算法,盡可能讓每個(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è)文件寫到閃存上就不很少被訪問(wèn),而其他塊被寫了幾十上百次,在這種情況下塊與塊的擦寫次數(shù)就不再一致,動(dòng)態(tài)磨損平衡算法就失效了,因此我們又采用靜態(tài)磨損平衡算法,就是當(dāng)一個(gè)塊擦寫次數(shù)和臨近塊次數(shù)超過(guò)一定閥值時(shí)我們就作一個(gè)數(shù)據(jù)存儲(chǔ)交換,這樣保證擦寫平衡。這樣有利于改善閃存耐久性,會(huì)優(yōu)化閃存的性能。另外我們?cè)陬w粒級(jí)別會(huì)有全局磨損平衡算法,這樣進(jìn)一步提升設(shè)備的可靠性。

可見(jiàn),閃存可靠性通過(guò)閃存算法、控制器管理可以來(lái)優(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è)備訪問(wèn)。從幾個(gè)文件系統(tǒng)特點(diǎn)來(lái)展開(kāi)分析,首先Linux Storage Stack Diagram version 3.17方面。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

從這個(gè)圖中,我們可以看到從文件系統(tǒng)到底層設(shè)備,路徑很長(zhǎng),可見(jiàn),文件系統(tǒng)是一個(gè)比較復(fù)雜的東西。這么長(zhǎng)的訪問(wèn)路徑會(huì)影響到閃存性能和延時(shí)優(yōu)勢(shì)的發(fā)揮。針對(duì)這個(gè)問(wèn)題,2012年英特爾提出NVMe標(biāo)準(zhǔn),可以縮短閃存設(shè)備的訪問(wèn)路徑,提升訪問(wèn)堆棧性能,更能發(fā)揮閃存高IO性能和低延時(shí)優(yōu)勢(shì)。

如何看待閃存特性與文件系統(tǒng)應(yīng)用?

而對(duì)于高并發(fā)的應(yīng)用而言,基于PCIe的NVMe協(xié)議更有明顯優(yōu)勢(shì)。對(duì)于采用AHCI協(xié)議的設(shè)備來(lái)說(shuō),每個(gè)PCIe卡的ssd訪問(wèn)都需要通過(guò)Core 0來(lái)管理,Core0成為該設(shè)備的控制核,這樣的控制機(jī)制就會(huì)降低性能和訪問(wèn)的可靠性,但NVMe協(xié)議支持每個(gè)CPU Core采用獨(dú)立的鏈路,可以提高并發(fā)性能。

Linux文件系統(tǒng)是基于日志的文件系統(tǒng),利用閃存提高Linux的文件系統(tǒng)性能可以采用以下幾種方式:1. 將Journal日志放置到閃存上,2. 對(duì)數(shù)據(jù)安全不要求的情況下可以禁用Journal,3.由于閃存不存在磁盤存儲(chǔ)的巡道和IO合并的需要,也可以禁用系統(tǒng)針對(duì)磁盤優(yōu)化的merge/rotational等參數(shù)提高性能,4. Linux最新的Btrfs文件系統(tǒng)基于閃存特性做了訪問(wèn)優(yōu)化,也可以考慮采用Btrfs文件系統(tǒng)。

ZFS文件系統(tǒng)是也是一個(gè)非常有特色的文件系統(tǒng),當(dāng)前一些商業(yè)化存儲(chǔ)系統(tǒng)就是基于ZFS文件系統(tǒng)。ZFS文件系統(tǒng)載在設(shè)計(jì)時(shí)就考慮了通過(guò)閃存進(jìn)行性能加速的方法。ZFS使用日志機(jī)制,ZFS intent log (ZIL) 處理同步寫,ZIL處理同步寫越快,系統(tǒng)性能越好。將閃存作為ZFS日志設(shè)備,可以大幅提升同步寫性能。ZFS的ARC(Adjustable Replacement Cache)讀緩存淘汰算法可以優(yōu)化系統(tǒng)的讀性能,而SSD可以作為二級(jí)緩存L2ARC設(shè)備提供更大的緩存空間,緩存命中是最大限度能提高性能的。但是

當(dāng)前比較熱門的Ceph文件系統(tǒng),相對(duì)于底層的文件系統(tǒng)而言,Ceph文件系統(tǒng)更像是在底層文件系統(tǒng)之上的文件服務(wù),在這里我們就不做過(guò)多介紹,但是Ceph文件系統(tǒng)也大量采用閃存進(jìn)行性能加速。

針對(duì)閃存特性和文件系統(tǒng)應(yīng)用的分析之后,那么當(dāng)前閃存存在哪些問(wèn)題呢?

問(wèn)題之一在于,大多數(shù)操作系統(tǒng)和應(yīng)用的存儲(chǔ)設(shè)計(jì)均是針對(duì)磁盤訪問(wèn)特性進(jìn)行優(yōu)化的。由于傳統(tǒng)磁盤的機(jī)械設(shè)計(jì),需要通過(guò)磁頭的旋轉(zhuǎn)進(jìn)行尋道和數(shù)據(jù)IO操作,限制了磁盤的性能,因此操作系統(tǒng)和應(yīng)用的底層算法大部分都是針對(duì)如何減少IO操作和尋道時(shí)間所設(shè)計(jì)的。

另外,磁盤存儲(chǔ)架構(gòu)下為了提高IO性能采用了緩存設(shè)計(jì),從而又增加了復(fù)雜的數(shù)據(jù)保護(hù)的處理機(jī)制。

還有就是,應(yīng)用的并發(fā)度也限制了利用了閃存。

當(dāng)前有些研究機(jī)構(gòu)通過(guò)透明地繞過(guò)文件系統(tǒng)使用非易失性存儲(chǔ)器,在高并發(fā)的壓力下將閃存設(shè)備的性能提升7倍以上。

來(lái)自SNIA最新的技術(shù)思路, 利用NVMe標(biāo)準(zhǔn)訪問(wèn)協(xié)議,針對(duì)閃存設(shè)備特性來(lái)設(shè)計(jì)存儲(chǔ)訪問(wèn)機(jī)制。例如利用基于閃存設(shè)備的對(duì)象存儲(chǔ)結(jié)構(gòu),讓應(yīng)用直接訪問(wèn)底層閃存設(shè)備;再有通過(guò)閃存優(yōu)化的文件系統(tǒng),提供上層的文件訪問(wèn);對(duì)于一些應(yīng)用提供核心層的閃存優(yōu)化的塊訪問(wèn)機(jī)制等等。

另外,出于成本的考慮,有些客戶將閃存設(shè)備作為磁盤的緩存,通過(guò)將SSD作為傳統(tǒng)磁盤的讀寫緩存以加速IO性能,這種使用方式其實(shí)會(huì)加速設(shè)備磨損,因?yàn)槔肔FU,LRU,MRU等緩存算法,會(huì)帶來(lái)大量的碎片IO操作,造成讀也是寫的情況,加速了SSD設(shè)備的磨損。

李炫輝根據(jù)業(yè)界趨勢(shì)包括Greenliant的發(fā)展情況,對(duì)閃存做了一個(gè)很有意思的展望,他指出,未來(lái)閃存隨著經(jīng)濟(jì)性越來(lái)越好,可靠性設(shè)計(jì)的逐步完善,那么面向NVMe閃存設(shè)備的訪問(wèn)機(jī)制將會(huì)成為閃存應(yīng)用的現(xiàn)實(shí),針對(duì)NVMe閃存設(shè)備會(huì)做成一體化的架構(gòu)。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)