Flash記憶體的兩種主要企業儲存應用:單純由Flash記憶體組成的固態磁碟陣列仍太過昂貴,因此目前主流的Flash記憶體企業儲存應用,都採用Flash記憶體搭配傳統硬碟的混合式架構,又分為充當分層儲存中的高速層,以及充當輔助DRAM的第二層快取等兩種主要應用形態。(資料來源:iThome整理,2011年7月)

隨著以NAND Flash記憶體為基礎的固態硬碟(SSD)價格逐漸降低,固態儲存裝置的應用範圍亦逐漸擴大,除了作為高階筆記型電腦或高階伺服器的內接磁碟外,亦開始被應用到企業級外接式儲存設備上。

由於個別廠商產品定位、架構等方面的差異,目前SSD在外接儲存設備上的應用形成了3種型態:

純粹的固態式磁碟陣列:以Flash記憶體作為儲存媒體,搭配DRAM快取記憶體組成純固態磁碟陣列,藉以擺脫傳統硬碟搜尋回應時間的瓶頸,供對IOPS效能有特殊需求的用戶使用。

分級儲存中的高速層:利用SSD取代過去的1.5萬轉硬碟,作為分級儲存機制中的高速存取層,用以存放存取頻率最高的「熱點」資料。

Flash快取記憶體:利用Flash記憶體作為第2層的快取記憶體,輔助DRAM構成的第1層快取記憶體。

許久以前,就已有廠商推出以DRAM為基礎的高速固態磁碟陣列,但為了將資料長期存放在屬於揮發性記憶體的DRAM上,必須搭配頗為複雜的電源供應與備援機制,而NAND Flash記憶體與SSD的速度雖然比不上DRAM,但能作為一種成本相對較低、且為非揮發性的固態儲存媒體,因此DRAM+ Flash記憶體的組合很快便成為純固態式磁碟陣列的主要型式。儘管如此,純固態磁碟陣列的成本仍非常高昂,而且為了確保足夠的效能,往往還需搭配使用非主流的主機端傳輸介面,如InfiniBand或PCI-e等,以致限制了應用領域。

在成本考量下,相比於純固態式的儲存系統,混合使用NAND Flash記憶體與傳統硬碟的混合儲存系統,顯然更為實用的多。因此當前Flash記憶體/SSD硬碟在企業儲存設備中的主流應用,便是另外兩種型態—即分層儲存與第2層快取記憶體,由此也形成了兩大陣營。

分層儲存中的SSD

分層儲存是個由來已久的作法,可按存取時間或存取頻率區分,將資料分別存放到不同存取速度/成本的儲存媒體上,從而在存取效能與成本間取得較佳的平衡。

分層作業可以手動方式執行,亦可以軟體程式自動執行,但考慮到企業儲存環境的複雜性、管理人員的作業負擔,以及因應存取行為變化、即時調整資料分布組態以達到最佳化分層效果的要求,任何非自動化的分層儲存管理,在實務上都是難以執行的,唯一的選擇就只有自動化分層儲存。

早期的自動化分層儲存產品多半是針對特定應用程式(最常見的是郵件),且採獨立部署的軟體形式,搭配不同的儲存裝置運作(如磁碟陣列與磁帶等)。不過Compellent、3PAR等廠商,在2005年前後推出了整合在磁碟陣列控制器中的自動分層儲存技術,把分層儲存整合在儲存設備底層,成為一種與前端應用程式無關、適用範圍更廣的分層儲存應用型態。

分層式儲存的目的,是利用不同效能/價格的儲存設備組成儲存系統,藉以適應前端不同應用的需求,讓關鍵應用使用高效能儲存裝置,非關鍵應用則使用效能較低但也較廉價的儲存裝置,以便在控制儲存成本的同時,又確保關鍵應用可獲得必要的效能。

在SSD普及之前,通常是以不同轉速的硬碟來構成儲存分層,典型如:

第1層:效能最高、但單位容量價格也最貴的1.5萬轉FC或SAS介面轉硬碟。

第2層:效能與單位容量價格中等的1萬轉FC或SAS介面硬碟。

第3層:效能最低、但單位容量價格也便宜的7,200轉SATA介面硬碟。

隨著固態硬碟的逐漸普及,也改變了傳統的儲存分層區分,由固態硬碟取代1.5萬轉硬碟的第1層地位,或是在原有第1層之上,增加一個效能更高的第0層。

作為磁碟快取的Flash記憶體

企業級磁碟陣列或RAID介面卡,都會配備以DRAM構成的快取記憶體,作為資料存取的緩衝區,藉以提高存取速度。理論上,快取記憶體越大,能保存的資料量越多,有助於提高快取命中的機率,然而DRAM的成本相對較為高昂,也限制了磁碟陣列所能配備的快取記憶體容量。

數十萬元價格等級的入門級磁碟陣列,頂多配備1~4GB的快取記憶體,上百萬元等級的中階磁碟陣列,通常也只配備16~32GB快取記憶體,唯有千萬元等級的高階磁碟設備,才能配備上百到數百GB等級的快取記憶體。

有限的快取記憶體容量,限制了快取命中率,從而也限制了存取效能。NAND Flash記憶體則為這個問題的解決,提供了另一種方式,單位容量價格較DRAM低了一個等級,還不到後者的十分之一,數百GB容量的NAND Flash記憶體價格也還在多數企業可接受範圍內,因此這便衍生出利用NAND Flash記憶體作為第2層快取記憶體、搭配DRAM構成2層快取的作法。

目前擁有這類Flash快取解決方案的廠商如NetApp,便可提供256GB到1TB容量的Flash快取記憶體介面卡,來加速儲存設備的讀取,讓中階儲存設備能擁有數百GB甚至TB等級的快取記憶體。雖然Flash記憶體速度不如DRAM,但可「以量取勝」,藉由比DRAM快取記憶體大上十倍、數十倍的容量,來提高快取命中率,從而提高效能。

兩種Flash記憶體應用形態的特性

與純粹的固態式磁碟陣列相比,將SSD用於分層儲存,或是以Flash記憶體作為儲存設備的第2層快取,兩種做法都是屬於混合應用傳統硬碟與NAND Flash記憶體的架構,也同樣是將Flash記憶體置於速度較慢的傳統硬碟與高速的DRAM快取之間,但由於存取方式上存在許多差異,從而產生不同的特性:

在資料存取中的角色不同

如名稱所示,Flash記憶體在分層儲存中扮演硬碟角色,在第2層快取應用中則扮演快取記憶體角色。

分層儲存中的SSD是作為一個永久存放資料的儲存裝置,透過分層技術,資料是被「搬移」到SSD中,除了存取速度較快外,SSD中的資料在邏輯上與傳統硬碟是一樣的;而當以Flash記憶體作為第2層快取時,Flash記憶體則是充當存取資料的緩衝區,資料是從底層磁碟區中「複製一份」到快取記憶體中(注意是複製而非搬移),讀入Flash快取中的資料只是暫存,而不是永久性保存。

運作機制差異

在自動化分層儲存架構中,自動化分層儲存技術會先按照預設政策將資料寫入各層級磁碟,並以Volume、LUN或一定的區塊大小為單位,持續或定期追蹤記錄資料的存取頻率(或者說是活躍程度),藉由統計不同儲存區域的存取頻率,辨別出存取頻率高的「熱點」與存取頻率低的「冷點」所在。然後便可依照追蹤與統計結果,按一定週期自動執行資料搬移工作,將存取頻率高的資料搬移到由SSD組成的磁碟區,存取頻率低的則搬移到傳統硬碟組成的磁碟區。

而Flash快取的運作方式,則與一般的快取記憶體大同小異,也就是把最近存取過的資料區塊,存放到作為緩衝區的Flash記憶體中,接下來的後續存取作業中,系統會比對快取中的資料,若命中快取中的資料,就直接從高速的記憶體中存取資料,而無須到硬碟上存取。

不過在實際產品實作中,又有讓Flash記憶體只充當讀取快取(如NetApp的FlashCache),以及讓Flash記憶體同時作為讀取與寫入快取(如EMC的FAST Cache)等不同作法。

影響存取最佳化效果的因素

無論資料快取或自動化分層儲存,最終目的都是設法實現存取的最佳化、改善存取效能,不過由於基本原理的差異,在達成存取最佳化的效果上各自受到不同限制。

● 影響自動分層儲存的因素

如前所述,會對各儲存區域的資料存取頻率進行追蹤統計,並定期按存取活躍程度,將資料分別搬移到不同層級的儲存裝置上。但執行的統計追蹤與資料搬移的I/O單位精細度(granularity),以及進行資料搬移的頻率,對於最佳化效果將有很大的影響。

首先,系統執行存取行為分析與資料搬移時,所採用的I/O精細度越小越有利,以幾百KB為單位的區塊來執行搬移作業,顯然比以數GB為單位的整個Volume或LUN更為理想,不僅消耗的資源較少,也能達到更高的儲存資源配置效率。

一般來說,在一個數十或數百GB的Volume或LUN中,經常被存取的大都只是其中一小部分的區塊,而非整個Volume,因此在執行資料分層遷移作業時,若自動分層儲存系統能以更小的區塊作為單位,便能將真正經常存取的那些區塊保留在高效能儲存區域上,其餘部分則遷移到低價的儲存區域保存,從而更有效率的使用儲存空間。但另一方面,若運作的精細度越小,則相對應須追蹤的區塊數目與相對應的metadata也越多,相對也更增加控制器的負荷。

其次,自動分層儲存技術所執行的資料搬移動作,顯然會消耗儲存設備相當程度的I/O效能,若搬移動作過於頻繁,將會影響到正常存取作業;但若資料搬移作業時程間隔過長,又無法即時反應儲存區域「熱點」的變化,以致無法讓儲存空間配置持續維持在最佳效率的組態上。

典型的自動分層儲存技術如IBM的EasyTier技術是預設以24小時為週期,每隔24小時執行一次資料搬移作業,換言之,系統必須每隔24小時運作後,才能將資料分層調節到最佳配置上(有某些自動分層技術可設定以更密集的週期來執行,如EMC的FAST VP)。

● 影響快取效率的因素

快取作業採用的最小單位,也就是所謂的Cache Page,通常只有幾KB大小(典型是2~16kB),這個單位與磁碟陣列控制器存取磁碟所採用的Sector(通常是512byte,有些廠商如EMC是520byte)或RAID的Strip大小有關,也與檔案系統磁碟的區塊或cluster大小有關(通常是4、8、16kB或更大)。

無論如何,快取作業的精細度要比自動分層儲存技術的精細度要更好。

而且資料只要被讀入快取記憶體中一次,就能發揮加速存取的效果(當快取命中時),不像自動分層儲存技術,得累積一段時間的資料追蹤分析,並等到執行資料搬移的時間到來以後,才能把資料分層的組態調整到最佳化。

但從另一方面來說,快取記憶體一般只對小區塊頻繁存取有較大幫助,只有這種存取型態才能形成較高的快取命中率;對於大型、連續資料區塊/檔案的存取,由於快取命中率很低,因此幫助不大。相較下,自動分層儲存技術的適用範圍便較廣一些,在多數存取型態下都能發揮存取最佳化的效果。

 

自動分層儲存技術 vs. Flash記憶體快取

 

DRAM快取 vs. Flash記憶體快取

 

自動化分層儲存的運作概念

目前最常見的「Sub-LUN」式自動化分層儲存技術,基本上可視為是三個功能的綜合:

(1) 儲存虛擬化:將分散在不同儲存層的磁碟區塊,組合成虛擬的Volume或LUN。也就是將Volume或LUN的區塊分散到不同儲存層上。

(2) 存取行為的追蹤統計與分析:持續追蹤與統計每個磁碟區塊的存取頻率,並透過定期分析,識別出存取頻率高的「熱」區塊,與存取頻率低的「冷」區塊。

(3) 資料遷移:以存取頻率為基礎,定期執行資料搬移,將熱點區塊資料搬移到高速儲存層,較不活躍的冷區塊資料則搬移到低速儲存層。

由於存取行為追蹤統計分析與資料遷移作業,都會消耗磁碟陣列控制器的效能,因此多數自動化分層儲存,都會提供排程功能,讓使用者設定允許系統執行追蹤統計分析與資料遷移作業的時間區段(或者說「窗口」),以便避開存取尖峰時段,如可設定為只允許在晚上7點以後、或週五晚上到週日凌晨等下班時段,執行分析與遷移作業。資料來源:iThome整理,2011年7月

 


相關報導請參考「SSD企業儲存應用新趨勢:自動分層儲存與快取


Advertisement

更多 iThome相關內容