存儲專欄:主流全閃存陣列架構對比

西瓜哥 發表于:14年09月25日 20:48 [原創] 存儲在線

  • 分享:
[導讀]今天,西瓜哥來分享一下SolidFire CEO Dave的一個演講。這哥們長得很帥,講得更棒,有很多的技術細節。

存儲在線專欄文章:今天,西瓜哥來分享一下SolidFire CEO Dave的一個演講。這哥們長得很帥,講得更棒,有很多的技術細節,英文比較好的可以點擊后面的{閱讀原文}觀看(建議用電腦看,因為iOS不支持flash,不過可下載vimeo客戶端觀看)。


這是他在今年4月份在Tech Filed Day的一個演講。首先是一個聲明,他說這些材料都是基于公開的內容,沒有設計為突出某種架構好,只是說明每一種方法的權衡,當然,他內心還是認為自己的架構最好。好誠實的小伙,O(∩_∩)O哈!當然,演講沒有包括市場上全部的AFA架構,因為很多和傳統的存儲架構一樣,很多沒有豐富的特性,有些還文檔缺乏。


這是AFA的競爭全景圖,我們看到大帥哥把IBM的TMS放在Flash Applicance分類里面了,因為它是以硬件為中心的設計方式。3PAR是傳統陣列的改良,而本質上專為全閃存系統全新設計的是Pure Storage(后面簡稱Pure)、XtremIO和SolidFire(后面簡稱SF)。這些產品的特點是采用商用硬件,以軟件為中心,提供豐富的數據服務,支持在線的數據縮減功能。


為什么傳統的架構不適合閃存?一是基于extent映射和固定塊對齊的方式很難支持重刪和壓縮,二是傳統的RAID方式帶來閃存的性能和磨損問題,三是控制器的資源和閃存的需要不匹配,因為閃存需要更多的原數據的存儲和管理。


每個架構主要從6個方面的設計來闡述他們的選擇。


  • 第一點,首先是系統的擴展性考慮。也就是這個架構如何支持容量和性能的擴展。


Pure采用的是縱向擴展的方式,和傳統的塊存儲架構一樣。需要更多性能,你只能升級到更強大的控制器,容量可以通過磁盤框來擴展,但性能受限于兩個控制器的能力。


而SF和XtremIO都采用橫向擴展的架構。性能和容量都可以線性增長。目前SF集群的節點可以是不同類型,而且性能可以動態均衡。


一般來說,縱向擴展的架構適合小型、固定可預測的負載,而橫向擴展架構適合大規模、不可預測和更需要彈性的場合。


  • 第二點,看一下系統冗余的設計,也就是如何保證高可用和進行數據保護的。


Pure和XtremIO都是采用雙控共享硬盤的架構,和傳統的塊存儲架構一樣。如果硬盤失效,在該硬盤框內重構,控制器失效,另外一個控制器接管。如果硬盤框壞了,系統就不能運行了,也就是磁盤框是SPOF(單點失效)。


而SF采用的是啥也不共享的架構。西瓜哥認為,其實就是現在云(對象)存儲,如華為的UDS常采用的架構。這種架構采用多副本技術,好像SF是2副本,可以承受最少一個節點故障。但與會嘉賓提出了“質疑”,說軟件成為了SPOF,O(∩_∩)O哈!因此,軟件的健壯性很重要。


這兩種架構的區別如下,共享硬盤架構比較適合小容量起步的場合,硬盤成本高,而啥也不共享架構比較適合大容量場景,控制器成本高。


  • 第三點,看數據的組織和IO路徑。數據是如何組織,放置和定位,這個對重刪的實現影響很大?,F代的閃存架構對比傳統的塊存儲就是采用大量的元數據。


Pure采用位置尋址技術。主要的元數據是一個KV倉庫(映射表)。另外,需要多個附加的元數據結構,包括鏈接表,重刪表和中間表(定向圖)。所有的元數據都保存在SSD里,采用內存做Cache。


這個是IO讀寫的路徑。


而SF和XtremIO采用的是內存尋址的方式。卷的元數據是一個KV倉庫,但key指向的地方不是塊的位置,而是指紋。塊的元數據是一個分布的KV倉庫,指向實際的塊數據。這個實際就是XtremIO經常說的兩階段元數據架構。所有的元數據都保存在SSD上,但全部在內存里運行。


這是他們的讀寫路徑。


這是兩種尋址方式的對比。位置尋址只是單層映射,即LBA->位置,因此位置和元數據是緊耦合的關系,數據移動需要更新元數據,重刪實現需要附加的表格和索引。而內容存儲方式采用兩層元數據映射LBA->塊ID->位置,物理位置和元數據是松耦合,靈活性更好,天然就支持重刪。位置尋址適合所有的控制器都可以全局訪問元數據的架構,而內容尋址適合大規模全局重刪和分布式架構。


  • 第四點是如何刪除不用的數據。即數據不用了,如何刪除?這個對于傳統的塊存儲不是問題,數據塊重寫就可以了,但對于全局重刪、快照優化的架構非常復雜,因為你不知道誰還在引用這個數據。


Pure采取的是引用驗證的方式。當回收空間的時候(垃圾收集),檢查各種表看是否還有人在引用這個數據,如果沒有就刪除。


而XtremIO采取的是引用計數的方式。原理其實很簡單,塊的元數據(塊ID->位置映射)包含一個引用計數,“寫”一次計數就加一,重寫時舊的塊(其實就是刪除)就減一。大家注意這個寫打引號了,不是真正去寫物理位置。如果是一個卷的刪除、克隆和XCOPY操作,由于需要大量修改引用計數,因此會觸發后臺進程去做這件事情。當引用為零,說明沒人用這個塊了,就可以被條帶更新時覆蓋寫了。(XtremIO不做系統級的垃圾收集,下面我們討論這個問題)


SF采用的方法是標記&掃除GC的方式。塊的元數據的每個入口都包含一個“在用”的標志,每隔一定的時間,所有的塊都標記為未使用。卷的元數據創建當前使用的塊ID的Bloom Filters(布隆濾波器,一種高效的數據結構,西瓜哥的數學是語文老師教的,大家可以百度學習),送到塊層,在布隆濾波器里面的塊就標志為“在用”,在GC結束后沒有在用的塊就刪除了。這樣周而復始。(西瓜哥認為這個設計的關鍵是找了一個高效的布隆濾波器,其特點是高效但可能有非常小的誤判,但誤判只是浪費一點點空間而已,即有些塊沒有用而標記為使用了。但這個誤判不影響數據的安全,但效率大大提高)。


這個三種方法的區別如下,引用驗證的方式需要存儲層和元數據層緊耦合,允許幾乎馬上就決定那個數據不在用,特別適合全局共享元數據場景;引用計數的方式在某些操作(克隆,XCOPY)需要大量更新計數器,計數要非常精確,不能有絲毫差錯,也可以幾乎立即決定哪些數據沒有用,非常適合單一信任源的元數據場景;而標記&掃除 GC的方式,需要GC掃除在后臺運行,系統的抗干擾性非常高,允許沒有改變塊元數據下對卷的元數據進行處理,非常適合松耦合的分布系統。


  • 第5點是關于閃存數據布局的設計。也就是數據如何組織和保存在各個固態硬盤里。傳統的基于extent/chunk的布局并不合適,因為有閃存性能和寫放大問題,快照和克隆的低效問題和固定的RAID幾何形狀和熱備盤問題。


XtremIO采用的是固定塊的方式。數據以一個RAID條帶(23+2)條帶寫入,一旦硬盤寫滿,部分條帶被新數據更新,一旦寫入,數據不再“移動”,數據塊固定為4K大?。ìF在XIOS 3.0已經改為8K,因此需要破壞升級,如昨天我們討論的那樣)。


而SF和Pure采用的是日志結構方式。SSD空間分成固定大小的段,進入的數據匯聚成段并順序寫入,一旦硬盤寫滿,部分的段被垃圾收集,并寫到新的位置,每個塊大小可以不同。


大帥哥還講了不同SSD不同讀寫模式下硬盤性能的對比。


如果是普通的cMLC的硬盤,由于其控制芯片處理能力差,超供也不高,因此,剛開始性能還不錯,但開始垃圾收集的時候,128K隨機讀性能馬上下降到2500 IOPS。


如果是1M的隨機讀,IOPS雖然可以到9000,但抖動厲害。


但1M的順序讀性能基本可以穩定在17000 IOPS。


這也是為啥XtremIO自己不做GC的原因。因為其寫是隨機寫。而日志架構的方式,可以做到順序的大塊聚合寫。因此系統可以做GC,也就是可以采用cMLC的SSD,降低介質成本。


而XtremIO必須采用eMLC SSD,因為需要SSD自己來做GC。這個Anobit的eMLC SSD,在GC的時候,128K隨機寫的性能是15000IOPS。性能還是不如上面的cMLC 1M順序寫。


因此,固定塊方法很難支持變長的塊,大塊的寫會分成多個4k(或8K)的寫,SSD控制器來做閃存的page管理,需要更多的SSD超供(28%),這種架構適合比較簡單的文件系統,采用eMLC SSD的場景。而日志結構的方法,很容易支持變長的塊,寫可以聯合,即多個小的寫聚合成一個大塊的寫,存儲系統幫助閃存做page管理,SSD的超供只需要7%,特別適合采用cMLC SSD,支持壓縮的場景。(不過,現在XtremIO XIOS 3.0也支持壓縮了)。


  • 第6點,也是最后一點,講一下掉電保護的方法。也就是掉電后如何保證數據的安全,這個和傳統的存儲一樣,不需要特別考慮,除了性能要求很高情形和盡量平衡閃存磨損方面。僅僅寫到SSD并不是一個好方法。


Pure采用鏡像SLC SSD的方式,所有的數據和元數據更新流化到一個持久的日志文件里,使用2個SLC SSD做鏡像,兩個SSD都放在第一個硬盤框里。這種方法使用小部分的SLC SSD空間,但可以增加壽命,提供更一致的寫延遲。


而XtremIO采用系統內存加UPS的方法。待寫的數據和元數據保存在2個控制器的內存里,臟數據在后臺聚合成RAID條帶寫,和VNX類似,所有的控制器需要外部UPS保護,只不過VNX2現在用的是內部的BBU。在掉電的時候,臟數據刷到磁盤框或者內部控制器的SSD。如果單個BBU故障如何處理不明(可能會繼續保持運行)。


SF采用PCIe NVRAM的方式,每一個節點都內置一個8G NVRAM卡,上面有超級電容和SLC閃存,所有的數據和元數據都同時提交給2個節點,掉電時,卡把數據刷到閃存,來電的時候恢復到內存里。(這個方法和華為FusionStorage的保護方式類似)


這三種方法的對比如下。SLC SSD的方式性能最差,PCIe NMRAM其次,DRAM w/UPS方式最快。SLC SSD方式磁盤框壞了數據就不可用了,而其他兩種則沒有SPOF。SLC SSD和PCIe NVRAM的方式都可以防止軟件崩潰,而DRAM w/UPS在雙kenel panic下有數據丟失的風險,維護性也差一些。SLC SSD的方法適合從控制器去除持久數據的場景(這個就是為啥Pure支持NDU的一個原因,因為使用了無狀態控制器),而DRAM w/UPS的方式實現簡單,性能好,但PCIe NVRAM方式提供最高級別的保護。


最后匯總了三個閃存產品架構在這6方面的實現方法,有些方法擴展性好,有些方法實現簡單,有些方法成本最優,有些方法可靠性最高。圖中用不同的顏色做了標記??偟膩碚f,Pure關注TTM,可用性和成本,而XtremIO關注TTM和擴展性,SF關注擴展性、可用性和成本。


而擴展性、可用性和成本正是下一代數據中心的關鍵屬性。哈,原來大帥哥還是有偏見的,O(∩_∩)O哈!


總結:西瓜哥認為,這三種架構,其實各有優缺點。今天學習以后,終于知道為啥XtremIO不用做垃圾收集了,也知道為啥它不用cMLC了,也更了解為啥它的性能為啥如此好,并且能夠保持一致的性能了,也了解大家對他元數據安全的擔心。因此,西瓜哥的觀點,如果追求性價比,我會采用Pure,如果追求極致性能,我重點考慮XtremIO,如果考慮大規模的擴展,SF是不二之選。

希望大家積極反饋你的意見和建議,微信掃描如下二維碼,關注微信公眾號“高端存儲知識”,與作者微信互動。通過掌上DOIT移動客戶端,您可以訂閱西瓜哥專欄,第一時間獲得知名專家和業界領袖的深度剖析與趨勢分析。

 

[責任編輯:西瓜哥]
西瓜哥
今天有點時間,去老地方轉了轉,發現在Pure Storage領頭的全閃存陣列初創公司的猛烈炮火下,大廠已經亂了陣腳,形勢一片混亂。
官方微信
weixin
精彩專題更多
華為OceanStor V3系列存儲系統是面向企業級應用的新一代統一存儲產品。在功能、性能、效率、可靠性和易用性上都達到業界領先水平,很好的滿足了大型數據庫OLTP/OLAP、文件共享、云計算等各種應用下的數據存儲需求。
12月15日,中國閃存聯盟成立,同時IBM Flash System卓越中心正式啟動
DOIT、DOSTOR、易會移動客戶端播報中國存儲峰會盛況。
 

公司簡介 | 媒體優勢 | 廣告服務 | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯系我們 | 會員注冊 | 訂閱中心

Copyright © 2013 DOIT Media, All rights Reserved.

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走