● Wear leveling磨損平衡
Flash Chip存在“寫(xiě)磨損”的問(wèn)題,當(dāng)某個(gè)單元長(zhǎng)時(shí)間被反復(fù)擦寫(xiě)時(shí)(比如Oracle Redo),不僅會(huì)造成寫(xiě)入的性能問(wèn)題,而且會(huì)大大縮短Flash memory的使用壽命。
Wear leveling依賴(lài)于SSD中的一部分保留空間,基本原理是在Flash Chip中設(shè)置了兩個(gè)block pool,一個(gè)是free block pool (空閑池) ,一個(gè)是數(shù)據(jù)池(data block pool )。
當(dāng)需要改寫(xiě)某個(gè)page時(shí)(如果寫(xiě)入原有位置,必須先擦除整個(gè)block,然后才能寫(xiě)入數(shù)據(jù)) ,并不寫(xiě)入原有位置(不需要擦除的動(dòng)作) ,而是從空閑池中取出新的block,將現(xiàn)有的數(shù)據(jù)和需要改寫(xiě)的數(shù)據(jù)合并為新的block,一起寫(xiě)入新的空白block,原有的block被標(biāo)識(shí)為invalid狀態(tài)(等待被擦除回收) ,新的block則進(jìn)入數(shù)據(jù)池。
后臺(tái)任務(wù)會(huì)定時(shí)從數(shù)據(jù)池中取出無(wú)效數(shù)據(jù)的block,擦除后回收到空閑池中。這樣做的好處在于,一是不會(huì)反復(fù)擦寫(xiě)同一個(gè)block,二是寫(xiě)入的速度會(huì)比較快(省略了擦除的動(dòng)作)。
● BBM(Bad Block Management)壞塊管理
不管WL算法如何高明,在使用中都會(huì)碰到一個(gè)頭痛的問(wèn)題,那就是壞塊,所以一個(gè)SSD必須要有壞塊管理機(jī)制。何謂壞塊?一個(gè)閃存塊里包含有不穩(wěn)定的地址,不能保證讀/寫(xiě)/擦?xí)r數(shù)據(jù)的準(zhǔn)確性。
一般來(lái)說(shuō)閃存出廠(chǎng)都包含壞塊,不過(guò)廠(chǎng)商有個(gè)最小有效塊值(NvB-minimum number of valid blocks),以Intel的34nm MLC L63B來(lái)說(shuō),1個(gè)die上4,096個(gè)塊里至少要有3,936個(gè)塊是好的。從這上面可以知道,雖然出廠(chǎng)的閃存可能有壞塊,但是廠(chǎng)商保證在正常的生命周期里,好塊數(shù)量不會(huì)低于3936個(gè)塊。而且每個(gè)die的第一個(gè)塊地址(00h)在出廠(chǎng)時(shí)是必須保證完好的。閃存出廠(chǎng)前都會(huì)被執(zhí)行擦除操作,廠(chǎng)商會(huì)在出貨前會(huì)把壞塊標(biāo)記出來(lái),這樣壞塊管理軟件就能靠監(jiān)測(cè)標(biāo)記來(lái)制作壞塊表。由于在使用中會(huì)產(chǎn)生壞塊,所以SSD的主控在每次寫(xiě)入/擦除/復(fù)制等操作后都要檢查塊的狀態(tài)以建立新的壞塊表。 當(dāng)壞塊表創(chuàng)建后,主控會(huì)把壞塊表保存在某個(gè)好的塊里,每次重啟后,主控會(huì)從那個(gè)塊里把表調(diào)用進(jìn)緩存(RAM)里。壞塊表中定義的地址是不能被訪(fǎng)問(wèn)的,所以當(dāng)系統(tǒng)想去訪(fǎng)問(wèn)這個(gè)塊的地址時(shí),F(xiàn)TL會(huì)重新把它映射到好的塊地址上去。
塊的替換: 在閃存的生命周期中,壞塊會(huì)逐漸增多。閃存設(shè)備上有個(gè)狀態(tài)寄存器,它的作用就是檢測(cè)操作是否正確完成。當(dāng)進(jìn)行寫(xiě)入或擦除操作,狀態(tài)寄存器檢測(cè)到錯(cuò)誤時(shí),即可判定當(dāng)前的塊為壞塊。鑒于閃存的寫(xiě)入是以頁(yè)為單位操作的,操作時(shí)可能影響到整個(gè)塊里其它頁(yè)的數(shù)據(jù),所以當(dāng)狀態(tài)寄存器發(fā)現(xiàn)寫(xiě)入出現(xiàn)錯(cuò)誤時(shí),壞塊管理程序就能夠用好的塊替換這個(gè)壞塊,重新在新的好塊里寫(xiě)入這個(gè)數(shù)據(jù),并把檢測(cè)到的壞塊里其余的有效頁(yè)數(shù)據(jù)全部復(fù)制到新的塊里去,標(biāo)記老的塊為壞塊,更新壞塊表里的地址,把原本壞塊的地址重新映射到新的好塊里。
SSD之全面保修
最后關(guān)于SSD磁盤(pán)的保修,一般硬盤(pán)廠(chǎng)商會(huì)提供3年或者5年的有限保修,但有些情況硬盤(pán)廠(chǎng)商是不予保修的,如物理?yè)p壞,盤(pán)體被拆除等,特別是強(qiáng)調(diào)SSD硬盤(pán)寫(xiě)入次數(shù)如果達(dá)到設(shè)計(jì)上限,也就是說(shuō)保修不涵蓋在設(shè)備達(dá)到其最大寫(xiě)壽命后所發(fā)生的問(wèn)題。但如果您使用DELL Compellent系列的存儲(chǔ)就不會(huì)為此擔(dān)心,DELL現(xiàn)在將Compellent系統(tǒng)中的SSD完全納入整個(gè)系統(tǒng)的保修期內(nèi),也就是說(shuō)不管CML里面的SSD硬盤(pán)是否達(dá)到寫(xiě)入次數(shù)限制,DELL都會(huì)提供保修,保修期跟隨整機(jī),DELL的此保修范圍還適用于已購(gòu)買(mǎi)DELL Compellent存儲(chǔ)陣列閃存的現(xiàn)有客戶(hù),包含SC4020、SC9000等的SC系列存儲(chǔ)。
經(jīng)過(guò)以上的介紹您是不是對(duì)SSD的使用越來(lái)越有信心,快去購(gòu)買(mǎi)SSD加速您的應(yīng)用吧!