自動分層存儲PK. SSD緩存
有人說Tier和Cache這兩種技術,有各自適合的場景,但我更傾向于認為它們解決的是同一類問題。在傳統單層磁盤陣列的基礎上,添加SSD緩存相對容易實現,而自動分層存儲要想把效果做好則是一件不太容易的事情。在本文中,我們將從幾個角度全面地比較自動分層存儲和SSD緩存,究竟有沒有一種相對完美的實現呢?
從目前看,固態混合陣列的出貨量仍遠超出新興的全閃存陣列市場。一方面7200轉硬盤的單位容量成本,與SSD相比仍有巨大優勢,對于想兼顧高IOPS和大容量存儲需求的用戶,選擇帶有自動分層存儲或者閃存緩存的陣列還是一個不錯的選擇。
對于傳統使用高轉速(特別是15K)硬盤的企業存儲市場,戴爾等廠商已經開始以硬盤的價格為用戶提供全閃存配置。當前全閃存陣列市場還處于發展階段,MLC(或者企業級MLC)閃存逐漸成為主流,盡管它的性價比更好,但一方面寫入性能比SLC相差不少,另外仍有人擔心MLC的壽命問題。因此,在SLC和MLC閃存之間的智能分層也不失為一個理想的解決方案。
在混合陣列的優化技術路線上,有些廠商選擇支持自動分層存儲(Tier),有些廠商則提供SSD緩存(Cache)功能,還有對兩種技術都支持的。我們曾遇到過一些用戶不知該如何選擇,也遇到過在項目采購招標中指定其中一種,從而使部分產品處于有利地位的。
今天,我們從以下7個維度來比較相關技術,前6項規定滿分為5分,由于站在每個特性對整體影響的角度來看,故最低得分設為3。最后一個附加考量項目,允許+2的加分。
1.只讀加速?還是讀寫加速?
對于SSD緩存技術而言,大部分只是Read Cache,也就是將熱數據的副本放到SSD中,只加速讀操作。這樣有一個好處,就是不用太擔心SSD或者閃存卡故障,最多是性能下降但不會丟數據。當然也有支持SSD寫緩存的,這種情況下一定會對閃存盤做RAID保護,因為在數據沒有寫入硬盤之前,它們在閃存write buffer中是唯一的。開始時,廠商為了減少性能損失選擇RAID 1多一些;也有希望容量利用率高的廠商支持了RAID 5。
存儲陣列上的SSD讀/寫緩存,可以理解為DRAM高速緩存的一個大容量補充
閃存與傳統機械硬盤的一個明顯區別,就是它的讀性能比寫性能好。如果將有限的SSD容量同時用于緩存加速讀和寫,有時候效果并不是很好。所以,盡管SSD讀寫緩存某種程度上類似于自動分層存儲,但它們之間的區別還是不小的。
相比之下,在這一點上自動分層存儲不怎么糾結,只要是位于SSD高性能分層的數據讀寫都一樣加速。不過我們認為,不同的分層技術對SSD和HDD之間的調度算法還是有許多不同之處。請繼續往下看…
本項評分
SSD緩存:3.5分
一般自動分層存儲:5分
戴爾Data Progression:5分
注:由于特點突出,在本文中我們將戴爾Data Progression與其它自動分層存儲分開對比。
2.只是“傻快”嗎?還有數據生命周期管理呢
SSD緩存無外乎是兩種用法:read cache和write buffer,都是用于加速,而且只區分2種性能等級的存儲介質——SSD添加到HDD存儲池,對于在硬盤上的數據來說,沒有進一步的數據管理功能。
對于自動分層存儲技術,有些只能支持2個分層,因為這樣的數據遷移規則和算法最簡單。當在SSD之外還配置高轉速和大容量兩種硬盤時,在一個層中混用將無法充分發揮它們的性能。
能夠支持3個或以上Tier的自動分層存儲一般是中高端產品,戴爾SC(Compellent)陣列的Data Progression便是其中的代表。而且戴爾SC還提供一些獨特的功能,可以將快照后的只讀數據在同一存儲層中由RAID 1轉換為RAID 5或6存放,一方面節約了存儲空間,同時還能保證讀寫性能不下降。
注:得益于底層原生塊級虛擬化技術,戴爾SC存儲支持將新數據永遠寫入到高速RAID 1中以保證寫性能,對已經遷移到RAID 5/6的數據塊也不會原地修改。
本項評分
SSD緩存:3分
一般自動分層存儲:4分
戴爾SC Data Progression:5分
3.閃存能hold住多大?數據移動精度如何
對于SSD緩存技術來說,它的容量不會累加到存儲池,也就是說實際可用空間還是HDD RAID的容量。自動分層存儲的總可用容量,則是來自多個分層,包括SSD RAID和HDD RAID之和。
SSD Cache只是把數據當做臨時空間,最終還是要寫進永久存儲層的,并不能減少IO,以及優化數據在磁盤上的位置。而自動分層存儲是把SSD當做真正數據的家。
也許有人會說這個影響不大,因為SSD緩存容量平均只有存儲池的3-5%。因為,SSD緩存管理的元數據,需要占用陣列控制器的內存資源,緩存頁面的粒度比較細,例如有的產品是4KB。因此,帶有閃存緩存的陣列能夠管理的SSD Cache容量上限,通常為數TB級別。
自動分層存儲對SSD的容量通常沒有限制,有些廠商SSD數量的限制通常是人為的,主要是超過這個數量無法得到應有的性能提升。
自動分層存儲可以分為LUN和sub-LUN遷移粒度。其中根據數據訪問頻率在硬盤和SSD之間遷移整個LUN是早期有的廠商比較初級的做法;目前主流的都是遷移LUN中的數據切片,一般廠商能做到16MB-1GB的水平,而戴爾Data Progression則能達到512KB-4M的遷移粒度。這個粒度影響到對閃存的利用率,而且遷移不必要的數據也會帶來額外的I/O。
戴爾SC陣列虛擬頁大小有512KB、2MB和4MB三種,即Data Progression自動分層存儲的遷移粒度。
下面這項的評分,是結合這一小節的兩點給出。
本項評分
SSD緩存:3.5分
一般自動分層存儲:3分
戴爾SC Data Progression:4分
4.反應快慢 數據迅移一觸即發?
對于需要高I/O性能的存儲訪問,我相信每個用戶都希望能盡快地被閃存“命中”,這是所有固態混合陣列都要面對的。
對于SSD讀緩存,有的算法是數據塊讀取一定次數(比如3次)之后被復制到閃存中,Cache使用達到一定比例再淘汰其中的不活躍數據,通常對熱數據的響應速度還是比較快的;SSD寫緩存則是先放到閃存,再根據一定規則后臺刷新到磁盤。
自動分層則不同了,有不少產品是將數據先寫到低性能分層,按照預定或者設定的周期統計它們的活躍度,再把熱數據遷移到SSD高速分層。這樣實現比較簡單,但是只要是寫入的數據塊還沒有被遷移到SSD,那它的性能就無法提升。
在這種情況下,數據移動的頻率就比較重要了。盡管有的產品支持1小時統計周期執行一次,但考慮到白天可能影響到生產存儲的性能,還是在每天夜間執行的更多。
對于另外一些自動分層存儲技術,則是將數據先寫入SSD高速分層以獲得最好的性能,再根據某種策略向“下”遷移,比如戴爾Data Progression。讀寫分離是戴爾SC(Compellent)的關鍵,默認每天一次執行Replay(快照)數據遷移不加重控制器的負擔,并最大程度減少對生產數據訪問的影響。
針對這種情況,統計周期和分層操作的頻率就顯得不太重要了,因為絕大多數應用環境都不會在較短時間內就把SSD分層的容量寫滿。而且戴爾SC陣列還支持在同一分層內,將快照數據由RAID 1轉化為RAID 5/6,在保證讀/寫性能的同時提高閃存利用率。
本項評分
SSD緩存:5分
一般自動分層存儲:3分
戴爾SC Data Progression:4分
5.區別對待 最大發揮SLC/MLC/TLC閃存價值
如果是同時支持讀和寫加速的SSD緩存,有的是按比例劃分容量;也有少數產品建議用SLC做寫緩存/MLC做讀緩存的,比如ZFS文件系統。但ZFS的寫緩存只是當作小容量日志來使用,更多目的是用來做緩存掉電保護。
絕大多數自動分層存儲技術,不會對SLC和MLC閃存做區別對待,所以通常只能使用一種類型的SSD。
而戴爾“閃存優化型”Data Progression分層還有一項“讀寫分離”技術。有些廠商的全閃存陣列(AFA)只是為了炒作而成的產品線,而戴爾則是真正扎扎實實做閃存優化的廠商,是業界唯一一個做SLC、eMLC分層,現在又第一個把TLC融入到存儲介質中。就像我們在前文中介紹的那樣,寫密集型(SLC)SSD中的數據會定期遷移至讀密集型(MLC或TLC)分層,這樣SLC專注于寫而MLC/TLC專注于讀,兩種操作都能獲得理想的性能,同時提供良好的性價比。
本項評分
SSD緩存:3.5分
一般自動分層存儲:3分
戴爾SC Data Progression:5分
6.貼近計算 服務器閃存如何打通?
至少有幾家供應商提供服務器端的SSD緩存類產品。盡管它們中的許多可以搭配SAN陣列使用——而感知不到后端有沒有閃存,所以是否在服務器和存儲端使用多級閃存是個需要仔細規劃的問題。
要問有沒有服務器端SSD緩存軟件能跟后端陣列協同的?戴爾Fulid Cache for SAN和SC陣列之間就有一個聯動機制,當后端創建快照時會觸發服務器閃存中的寫緩存數據刷新到陣列,以保證與主機端應用的一致性。需要注意的是,下面的評分并沒有將Fulid Cache for SAN與其它閃存緩存軟件的比較考慮在內,有興趣的朋友可以參考《性能與ILM的平衡:服務器閃存緩存的思考》一文延伸閱讀。
根據戴爾流動數據的理念,底層是無所謂各種存儲介質,確保數據可以無縫流動,不論是SLC、 eMLC、TLC閃存,15K、7200RPM硬盤甚至未來的各種介質,底層完全虛擬化包容。上層還可以通過Live Volume、Fluid Cache實現跨越存儲,和跨越存儲-網絡-服務器的數據流動才是戴爾的真諦。
本項評分
SSD緩存:3分
一般自動分層存儲:3分
戴爾SC Data Progression:4分
7.智者千慮 必有一失?
任何的自動化策略總有不適用的時候。比如每月固定1天結算,某個LUN需要最高的性能。這時,主流廠商的自動分層存儲大多提供了手動和計劃遷移的支持。
相比之下,SSD緩存在這方面就無能為力了,用戶基本上無法干預。
加分
一般自動分層存儲:+2分
戴爾SC Data Progression:+2分
綜合上述評分,結果如下:
SSD緩存:23.5分
一般自動分層存儲:23分
戴爾SC Data Progression:29分
看完本文之后,不知我們比較的是否全面,這樣的結果與您心目中是否一致?如果您是一名用戶,今后再遇到自動分層存儲和SSD緩存的選擇時,還會再猶豫嗎?