存儲極客談“為什么說VSAN與Dell SC漸行漸近?”
最近業內有本很火的書《軟件定義存儲:原理、實踐與生態》,其主要作者葉毓睿(Peter Ye)先生現任VMware存儲架構師,曾任職于EMC、Compellent和戴爾公司,在書中撰寫了包括VSAN在內的多個VMware相關章節,以及“內存虛擬化與SDS及Dell Fluid Cache”。
從這個技術背景來看,我覺得書中或許可以做些進一步的分析?比如VSAN與Dell SC(Compellent)之間有沒有共通之處?軟件定義存儲與傳統陣列之間有哪些互相借鑒等。而恰好我之前對這方面有過一點思考,在此整理下自己的心得,希望能拋磚引玉吧。
去年我們曾經撰寫過《存儲極客:自動分層存儲 PK. SSD緩存》一文,算是個初步的討論。前不久又看到有同行朋友在評價孰優孰劣,當然技術只是一方面,有時也會存在商業立場的因素。本文我想更多從設計取舍的角度來談,每種技術都有其不足或者說代價,只看對具體的用戶環境哪種更合適罷了。
首先以VSAN為例,在它的SSD+HDD混合存儲配置中,默認的讀/寫緩存比例為7:3。其中SSD寫緩存也被稱為日志,進入的數據除了被覆蓋寫入所合并的那些,最終都是要落到HDD層的。
自動分層存儲則會有個優先寫入位置,比如像Dell SC為了保證寫性能,會一直寫入高性能Tire1分層的RAID 10區域,然后再生成Replay(快照)后臺定期將數據轉存為RAID 5/6或者移動到Tier2/3容量分層。
這里還是先討論SSD+HDD自動分層,Dell SC是個讀寫分離的設計,一旦數據“下沉”移動到Tier2/3,再有讀操作訪問就要依賴所在分層的磁盤性能。為了進一步實現冷熱數據自動調度的智能,它還包含一個數據回遷的策略,也就是會長期統計頁面(數據塊)的活躍度。
表面上看SSD緩存的機制相對簡單,但也有不足之處——比如閃存容量不計入用戶總存儲空間,并且通常不能配置太大。自動分層存儲在這些方面要好一些,而用戶在實踐中也有需要注意之處,特別是初次做配置應該聽從專業人員的建議,這里也體現出存儲顧問經驗的重要性。
而到了全閃存時代,有人說不再需要分層存儲了,而我卻看到自動分層的設計也可以因為All-Flash而變得更加簡單高效。
也許有讀者朋友會問:一個是軟件定義的分布式存儲,一個仍屬于傳統雙控陣列,它們之間有可比性嗎?
從前我也不這樣認為,而在去年撰寫的《vForum隨筆:全閃存VSAN和Nimble CASL的創新》一文中,可以看出有些變化了。
VSAN的第一個版本隨同vSphere 5.5發布,從vSphere 6.0開始,新的VSAN正式支持全閃存配置。所有寫入數據一律進入寫性能/壽命相對較高的緩存層SSD,然后逐漸“下沉”至相對廉價的容量層SSD;由于兩種SSD的讀性能并沒有明顯的差距,因此不再需要專門設計讀緩存,容量層的數據直接讀就好了。
講到這里,如果是對Dell SC系列存儲比較熟悉的朋友,估計也會有和我一樣的感覺,是不是比較相似呢?
上面這張圖,冬瓜哥在《淺析固態介質在存儲系統中的應用方式》一文中也曾引用,我在這里不做過多講述,有興趣的讀者可以點擊上述文章鏈接。
Compellent數據分級的精髓在于和Replay(快照)技術緊密集成。當然Dell SC不只支持2個分層,在寫密集型 + 讀密集型SSD基礎上還可以加入磁盤來存儲更“冷”的數據。
根據上圖中的5種配置文件,在同一臺SC陣列當中也可以混合使用不同的自動分層存儲策略。比如第三種是比較常用的全閃存SLC+MLC(資料有點老了,現在的寫密集型SSD不一定都用SLC);而像Oracle redo log這樣的寫密集型數據采用第二種配置(或者全硬盤RAID 10)不做數據調度顯然更合適一些。
至于VSAN呢,我覺得更多考慮的是簡單易用,支持虛擬化環境中的大多數應用即可,因此目前全閃存還只能分層。不過也有同行朋友看了我當初寫的這些之后,認為將來VSAN也可能支持“單一分層”的全閃存配置。
類似的情況還出現在Peter在《軟件定義存儲:原理、實踐與生態》一書185頁所寫:“全閃存配置中的持久化層是SSD,被頻繁寫的數據(也即熱數據)仍然停留在緩存層,而那些較少訪問的數據才會被刷進持久化層(也即提供容量的SSD)。”
而就像我在《為什么說全閃存VMAX替代不了XtremIO?》一文中寫的,Dell SC全閃存分層的建議是每天業務不繁忙時段執行一次數據遷移(時間和頻率可調),將寫密集型SSD分層中的數據盡量轉移到讀密集型SSD,從而保證第二天新的寫入獲得最好的性能。
這里我們可以看到全閃存陣列與大多數Server SAN/超融合存儲之間的設計理念有些不同。同樣是數據在不同存儲介質之間的“刷盤”動作,VSAN等的執行策略不算積極,這樣在長時間持續寫入壓力后容易出現與后臺調度任務的性能爭用;而Dell SC則會盡可能避免這種情況,可以說各有側重吧。
隨著時間的發展,在《全閃存專享:VSAN 6.2重復數據刪除、糾刪碼淺析》一文中,我介紹過VSAN 6.2的“近線”重刪和壓縮設置在disk group這一級別,只在全閃存配置VSAN從緩存分層“下沉”數據到容量分層時執行,并在重復數據刪除之后進行壓縮。
這一點,又讓我想起了Dell SC存儲的數據壓縮和重刪功能。
作為一款“軟件定義”的雙控存儲陣列。戴爾在SCOS存儲軟件——Storage Center 6.7版本中引入數據壓縮:除了單層、RI(讀密集型)/ WI(寫密集型)SSD分層全閃存陣列之外,在全HDD陣列和混合陣列配置上也可以打開壓縮功能,如上圖。
而到了前幾個月推出的SCOS 7.0軟件版本,重復數據刪除也成為一個選項。即打開重刪時一定有壓縮,而壓縮則可以單獨開啟。
除了“智能重復數據刪除之外”,SCOS 7的增強特性中還包括Live Migrate – Federation(可以理解為建立在Live Volume雙活基礎上的存儲聯邦)、QoS和VVoLs;另外Dell Storage Manager統一管理平臺加入了SC(Compellent)和PS(EqualLogic)之間跨產品家族的雙向存儲復制,而不只是一次性遷移。
VSAN 6.2中的數據縮減特性,和戴爾SC陣列的增強型壓縮有些類似,都是通過與自動分層存儲(Tier)/緩存分層(Cache)機制相結合,其重刪/壓縮動作成為定期執行的后臺任務,從而有效避免了數據寫入高性能分層時的性能影響。
VSAN 6.2為什么只在全閃存配置上支持重刪和壓縮?除了閃存更需要提高利用率之外,我覺得這個問題從技術原理上不難回答:因為傳統SSD+HDD的VSAN配置中閃存和硬盤的容量配比官方建議1:10,由于讀寫性能都比較依賴SSD,緩存中讀/寫緩存默認比例又是7:3,此時SSD寫緩存只有大約卷容量的3%。一旦占滿導致數據向后落硬盤時,如果加入重刪/壓縮很可能會影響到性能體驗。
相比之下,Dell SC存儲的配置靈活性要大許多,不同分層的盤數、容量比例可以按需設計,而且Tier1也是優先保證寫入數據的。正如我以前表達過的,這些是產品定位和設計理念上的不同,沒有絕對的好壞之分。
總之,傳統集中式存儲也罷,分布式的軟件定義存儲也罷,為了應對需求而采用類似的技術是很正常的。站在這個角度來就會發現它們之間存在一些有意思的聯系。