既有的主要Flash記憶體快取產品
相比於自動分層儲存技術領域,以Flash記憶體作為磁碟陣列快取技術領域相對沒那麼多采多姿,相關產品較少。
EMC
繼發表第2代自動分層儲存技術FAST VP之後,EMC也在2010年8月發表了另一款搭配CLARiiON CX4與Celerra、稱為FAST Cache的產品,可透過SSD的空間充作快取記憶體,加速磁碟存取。
最新版的FAST Cache是搭配VNX系列整合儲存設備,可支援使用2~42臺、總容量100GB~2.1TB的SSD,將這些空間作為輔助DRAM的額外快取記憶體,從而提高快取命中率。
FAST Cache包含政策引擎(Policy Engine)與記憶體映射地圖(Memory Map)兩項元件。FAST Cache政策引擎負責管理經過FAST Cache區域的I/O,以及與底層硬碟之間的資料搬移。當底層磁碟LUN中的特定區塊(chunk)被頻繁存取時,政策引擎會將這些區塊的資料複製到FAST Cache區域,以加速存取;當出現其他存取更頻繁的區塊時,前述區塊會被清出FAST Cache區域並複製回底層磁碟,代以存取負載更大的區塊。FAST記憶體映射地圖則以64KB的資料區塊(Chunk)粒度,追蹤與維持FAST Cache區域的資料。
啟用FAST Cache後,當前端主機發出讀取需求時,若需要的區塊位於FAST Cache區域,政策引擎會將讀取需求重新導向到FAST Cache區域;當前端主機發出寫入需求,而需寫入的區塊位於FAST Cache區域時,則先寫入DRAM的寫入快取區域,並向前端主機回應已寫入,然後寫入的資料再移出DRAM快取,轉到FAST Cache區域。
NetApp
NetApp現有的Flash記憶體快取技術產品Flash Cache,是早先效能加速模組(Performance Accelerator Module,PAM)的後繼者。
PAM與Flash Cache都是一種搭配NetApp FAS或V系列儲存系統控制器的PCIe模組介面卡,目的都是透過模組內搭載的記憶體,充當輔助WAFL緩衝快取(位於DRAM構成的控制器系統記憶體之中)的第2層快取記憶體。
不過2008年下半年推出的PAM採用的是DDR2 DRAM,受限於DRAM價格,每片只能搭載16GB容量記憶體,FAS或V系列控制器最多只能安裝總容量16~80GB的PAM(視控制器型號而定)。
2010年推出的第二代產品Flash Cache(最初命名為PAM II),則捨棄昂貴的DRAM,改用便宜許多的NAND Flash記憶體,因此容量大增,有256GB、512GB與1TB三種模組可選,視FAS/V系列控制器型號不同,可安裝總容量多達512GB~16TB的Flash Cache模組。
雖然採用的記憶體類型不同,不過Flash Cache與PAM運作原理基本上是相同的。PAM/Flash Cache與WAFL緩衝快取一樣,都是一種讀取用快取,只針對讀取I/O作快取,而不支援寫入I/O。
NetApp獨特的WAFL(Write Anywhere File Layout)檔案系統寫入機制,原本就採用了透過高速、且為非揮發性的NVRAM記憶體來加速寫入I/O,前端應用程式發出的寫入要求,會同時進入儲存設備控制器的快取與NVRAM,當NVRAM記錄了寫入I/O的log資料後,系統即可向前端回應寫入完成,讓前端應用程式繼續進行下一個I/O作業,而無須等到資料實際寫入硬碟中。接下來待滿足一定條件後,WAFL檔案系統才會依據NVRAM中的log與快取記憶體中的資料,計算出需實際寫入硬碟的區塊,然後將資料寫入硬碟。
透過前述這種利用NVRAM執行的NVLOG機制,NetApp儲存設備便不再需要其他的快取機制來協助寫入I/O作業,所以PAM/Flash Cache便只需針對讀取I/O的部分作強化即可;另一方面,這也可減少Flash記憶體的寫入次數壽命問題(對Flash Cache而言)。
當未使用PAM/FlashCache時,若系統發出讀取I/O需求,但要讀取的資料區塊卻已被清出WAFL快取緩衝區,那就只能從慢速的磁碟中讀取。
而加入PAM/ FlashCache形成雙層快取記憶體架構後,當快取資料區塊被清出WAFL快取緩衝區時,會先轉移到PAM/Flash Cache中保存(Flash Cache有一個優先排序與分類的機制,來決定是否接受這些被清出WAFL快取緩衝區的資料),因此系統可再到PAM/Flash Cache中讀取所要讀取資料區塊。
DataONTAP作業系統會在系統記憶體中,存放PAM/Flash Cache中保存的快取資料tag,用以提供查詢快取資料是否符合讀取指令的要求,若快取命中,只需一次DMA操作就能讀出資料,從而減少I/O延遲。
如同上一代的PAM,Flash Cache也有3種運作模式可供選擇——預設metadata快取、與低優先資料快取,預設模式可同時針對使用者資料與metadata作快取,metadata快取模式只針對metadata作快取,低優先資料快取模式除了對使用者資料與metadata作快取外,也會對一些通常被排除在快取之外的資料作快取。Flash Cache還可搭配使用FlexShare管理工具,來調節特定LUN的效能。
NetApp的Flash Cache還有一個特點: Flash Cache本身是一種採用PCIe匯流排的介面卡,與儲存系統控制器之間是以高速的PCIe x8匯流排連接。相較下,其他廠商的Flash記憶體快取技術都是使用安裝在磁碟櫃中、或透過磁碟介面安裝的SSD,與磁碟控制器之間是透過SAS或SATA介面連接,傳輸頻寬要比Flash Cache的PCIe小了許多。
Oracle
早在2008年,Oracle的ZFS檔案系統便擁有透過混合磁碟架構,利用系統內的SSD加速讀寫作業的功能。針對讀取與寫入I/O,ZFS分別採取不同運作機制。
針對讀取I/O,ZFS原本就擁有利用DRAM的自適應更替快取(Adaptive Replacement Cache,ARC)功能,可利用伺服器主記憶體(DRAM)中的部份區域充當快取緩衝區,保存最常與最近存取過的資料區塊。不過系統記憶體容量有限,以致限制了快取命中率。
為解決這個問題,ZFS提供了L2ARC功能,可利用主記憶體外的高速儲存裝置空間(如SSD),充當第2層的ARC快取緩衝區,透過增大可用的ARC快取緩衝區容量,來提高快取命中率。
針對寫入I/O,ZFS利用ZIL(ZFS Intend Log)機制來確保寫入作業的可靠性與效能,ZIL是預設配置在ZFS磁碟儲存池中的一個區域,對於小資料量的寫入I/O,資料會直接寫入ZIL,然後系統就會向用戶端應用程式回報寫入完成、可進行下一個I/O作業。但實際上此時資料仍位於記憶體與ZIL中,尚未真正寫入儲存池,接下來ZFS會以背景作業方式陸續將資料從記憶體寫到儲存池。對於大資料量的寫入I/O,ZIL則只保留Transaction Log資料。
當因斷電、系統崩潰導致寫入I/O失敗時,系統將可從ZIL的日誌資料中設法回復寫入作業。
由於ZFS的資料寫入流程是透過ZIL進行,因此資料寫入ZIL區域的速度將會直接影響寫入效能,一般情況下ZIL是動態配置在ZFS磁碟儲存池中,顯然的,若有其他應用程式嚴重耗用儲存池I/O效能,連帶也會影響到ZIL的運作。
為避免前述問題,ZFS提供了將ZIL存放到指定的獨立儲存裝置上的功能,因此用戶可選擇將ZIL設定存放在高速儲存裝置如SSD上,成為log專用儲存裝置,如此便能加速寫入作業(但並非總是有效)。
自動化分層儲存技術的三種類型
按運作的層級,自動分層儲存技術可區分為區塊(Block)與檔案兩種類型,前者是在區塊或Volume、LUN這類Raw磁碟裝置層級上執行,以區塊或LUN為單位運作;後者則是在檔案系統上執行,以檔案為單位運作。
而區塊類型的自動化分層儲存,又分為LUN與Sub-LUN兩種類型,前者以整個LUN或Volume為追蹤統計與資料遷移的單位,後者則以比LUN更小的區塊為追蹤統計與資料遷移單位。
一般說來,系統執行存取行為分析與資料搬移時採用越小的粒度越有利,以幾百KB到數MB大小的區塊為單位來執行搬移作業,顯然比以數GB為單位的Volume或LUN,或以可能大到數百MB的檔案為單位更為理想,不僅消耗的資源較少,也能達到更高的儲存資源配置效率。因此粒度更精細的Sub-LUN類型自動化分層儲存技術,便成為當前的主流。資料來源:iThome整理,2011年7月
既有自動分層儲存產品的分類
既有Flash記憶體快取技術概覽
快取應用中不同Flash記憶體的區別
兩種主要的NAND Flash記憶體——SLC(Single Level Cell)與MLC(Multi Level Cell)——應用在快取時,由於基本構造上的差異,帶來的效果也不同。
SLC類型的Flash記憶體寫入速度更快(存取時間與吞吐量較MLC快了2~3倍以上),壽命更長(允許的寫入/刪除循環次數更多),也更可靠,更能勝任寫入快取的角色,也能用於讀取快取。缺點是單位容量成本較高(與MLC相差2~5倍)。
相對的,MLC類型Flash記憶體的寫入速度明顯慢於SLC,可靠性亦較差,而且若某個記憶體單元(Cell)寫入失敗時,可能造成的影響也更大,甚至會影響到先前寫入的資料,所以不適合用作寫入快取。不過MLC Flash記憶體的讀取效能相當好,單位容量成本明顯較SLC更低,十分適合擔任讀取快取的角色。
相關報導請參考「SSD企業儲存應用新趨勢:自動分層儲存與快取」
熱門新聞
2024-12-03
2024-11-29
2024-12-02
2024-12-02
2024-12-03