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