楓林 發(fā)表于:13年09月13日 00:34 [原創(chuàng)] DOIT.com.cn
Flash Drive閃存盤,作為代替使用了幾十年的機(jī)械硬盤,它與機(jī)械硬盤相比有著絕對(duì)的性能優(yōu)勢(shì),架構(gòu)上也與機(jī)械硬盤有著很大的區(qū)別。本文以摘要的形式梳理了閃存盤的內(nèi)部結(jié)構(gòu)Page、Block、Channel的作用以及使用閃存盤上的一些性能考慮和使用范圍。
閃存盤就像一個(gè)小型的存儲(chǔ)系統(tǒng),它包括一下的組件:
•緩存區(qū)(Buffer): 緩存里存著所有區(qū)域的索引信息,正在寫入的數(shù)據(jù)、并且使用專用的電容器(Power capacitors)在系統(tǒng)掉電的時(shí)候?yàn)榫彺婀╇,然后把?shù)據(jù)寫入到持久存儲(chǔ)NAND單元。
•頁(yè)面(Pages):閃存盤內(nèi)部的芯片通過(guò)頁(yè)面為單位來(lái)尋址,73GB和200GB的閃存盤頁(yè)面大小為4KB,400GB的閃存盤頁(yè)面大小16KB。頁(yè)面內(nèi)容組成連續(xù)的尋址空間,就像存儲(chǔ)系統(tǒng)中的緩存一樣。寫入過(guò)程中,對(duì)于兩個(gè)2KB的IO在閃存頁(yè)面中必須寫入兩個(gè)連續(xù)的LBA(Logical Block Address),也就是占用兩個(gè)頁(yè)面。
•扇區(qū)(Blocks):NAND類型的閃存盤的映射關(guān)系和文件系統(tǒng)類似,多個(gè)Pages組成為Block,但是區(qū)域中的頁(yè)面并不是連續(xù)的,這個(gè)block和SCSI以及文件系統(tǒng)中的block還是有所區(qū)別。NAND類型的閃存盤寫入都是在Block級(jí)別。Block的鏡像存儲(chǔ)在閃存盤的緩存中,知道一個(gè)區(qū)域?qū)憹M了,然后再寫入到閃存盤存儲(chǔ)單元的Block內(nèi)。
•通道(Channels):閃存盤中芯片處理數(shù)據(jù)的通路,閃存盤擁有多個(gè)通道,保證存儲(chǔ)單元可以同時(shí)進(jìn)行讀和寫的操作,對(duì)于大IO,會(huì)在多個(gè)通道上分段處理。
閃存盤中的頁(yè)面通過(guò)幾種狀態(tài)來(lái)管理數(shù)據(jù)狀態(tài):
•Valid State:包含可用數(shù)據(jù)
•Invalid State: 包含過(guò)期數(shù)據(jù)
•Erased State:沒(méi)有被使用區(qū)域
頁(yè)面狀態(tài)會(huì)受到負(fù)載的影響,頁(yè)面狀態(tài)也會(huì)影響到可用的區(qū)域?捎玫膮^(qū)域(已經(jīng)釋放的區(qū)域)會(huì)決定寫入的性能。由于隨機(jī)寫入頁(yè)面變得隨機(jī)分布,閃存盤使用元數(shù)據(jù)來(lái)定位Valid和Invalid的數(shù)據(jù),比如一個(gè)占兩個(gè)Block文件更新寫入,第一個(gè)block寫入到緩存,那么它所對(duì)應(yīng)的NAND上的兩個(gè)block都會(huì)變成invalid。
閃存盤中還有一部預(yù)留空間,存儲(chǔ)通常意義上的元數(shù)據(jù),預(yù)留空間會(huì)為寫入數(shù)據(jù)提供可用的block位置。
持續(xù)的數(shù)據(jù)寫入會(huì)使閃存盤飽和,然后閃存盤會(huì)在空閑的時(shí)間進(jìn)行擦除(Erase)操作。在擦除之前,為了保證Block中的頁(yè)面必須都是invalid狀態(tài),會(huì)將每個(gè)block中的valid頁(yè)面寫入到其他block,這個(gè)過(guò)程類似于硬盤碎片整理,主要分為幾個(gè)步驟:
•將Valid的頁(yè)面讀取到緩存中
•擦除NAND中舊的區(qū)域
•將Valid頁(yè)面寫入NAND的到其他Block中
使用閃存盤時(shí)的一些性能考慮與應(yīng)用場(chǎng)景:
是否閃存盤在使用久了以后會(huì)變慢?答案是,的確會(huì)有一些影響。閃存盤的剩余空間會(huì)是主要因素之一,因?yàn)槭S嗫臻g的減少會(huì)導(dǎo)致碎片的增加,影響到閃存盤對(duì)于持續(xù)寫入的相應(yīng)時(shí)間,較高的空間利用率會(huì)導(dǎo)致在每個(gè)block中有更多的valid頁(yè)面。隨著時(shí)間增加,這種valid頁(yè)面的分布會(huì)變得更加隨機(jī)分布而且空間利用率增加。如果block中包含比較高的比例的valid頁(yè)面,擦除的過(guò)程中就需要調(diào)整更多的頁(yè)面。閃存盤就需要更多的時(shí)間進(jìn)行碎片整理。
閃存盤的大小是否影響性能?這里需要描述一個(gè)概念,叫做小IO和寫入頁(yè)面填充的概念,因?yàn)樵陂W存盤處理寫入IO的情況中,如果寫入的IO小于一個(gè)頁(yè)面的大小,則閃存盤需要進(jìn)行Read-Modify-Write操作。因此對(duì)于閃存盤來(lái)說(shuō)的負(fù)載加倍。所以就閃存盤性能來(lái)說(shuō),73GB和200GB使用的4KB頁(yè)面大小會(huì)好于400GB的16KB頁(yè)面大小。
最后還要簡(jiǎn)要提一下閃存盤的應(yīng)用場(chǎng)景。其實(shí)處于成本效益的考慮,閃存盤的使用還是需要有的放矢。根據(jù)適合的應(yīng)用選擇,而且結(jié)合存儲(chǔ)陣列的情況進(jìn)行綜合考慮,作者認(rèn)為可以從以下幾個(gè)方面考慮:
•閃存盤通常還適用于高比例的隨機(jī)讀取和小IO的應(yīng)用。
•如果隨機(jī)寫入的比例大于20%,則是閃存盤最好發(fā)揮作用的情況。
•閃存盤和存儲(chǔ)陣列的緩存相結(jié)合。閃存盤很多情況下會(huì)加速存儲(chǔ)陣列的數(shù)據(jù)刷新效率,比較典型的就是高負(fù)債寫入的應(yīng)用,存儲(chǔ)陣列的緩存可以提供更短的前端響應(yīng)時(shí)間,減少?gòu)拇鎯?chǔ)陣列緩存中載入和寫入后端磁盤速度。但當(dāng)某些極大的數(shù)據(jù)庫(kù)情況下也有可能相反,存儲(chǔ)陣列緩存對(duì)于大量的寫入可能會(huì)響應(yīng)不及,而這種情況,根據(jù)使用存儲(chǔ)陣列實(shí)際情況,可以選擇性的跳過(guò)存儲(chǔ)陣列的寫緩存,而直接在后端使用大量(超過(guò)30個(gè)閃存盤)提供高帶寬,當(dāng)然也要考慮存儲(chǔ)陣列是否支持關(guān)閉寫緩存。
•對(duì)于數(shù)據(jù)庫(kù)應(yīng)用,閃存盤適用于存放索引、比較繁忙的表、臨時(shí)空間,而Redo Log和Archive log之類則不適合于存儲(chǔ)在閃存盤。
•對(duì)于消息系統(tǒng)(Exchange、Notes),閃存盤適用于存放用戶數(shù)據(jù)庫(kù)。
本文作者為EMC中文技術(shù)社區(qū)(https://community.emc.com/go/chinese)技術(shù)版主。如果您對(duì)本文有任何疑問(wèn)和不同見(jiàn)解,也歡迎到EMC中文支持論壇參與討論。
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語(yǔ) | DOIT歷程 | 誠(chéng)聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.