存儲緩存 201



原文:http://chucksblog.emc.com/chucks_blog/2013/11/storage-caching-201.htmlhtml

註明:本文內容基於 VMware VSAN beta 版本撰寫,請訪問http://www.vmware.com/products/virtual-san/得到有關正式版本的更新信息。算法



      三年前,我寫過一篇題爲存儲緩存 101的熱門文章。因爲某種緣由,該文章在我所寫的十佳博文中佔據了一席之地。

      但 3 年多的時間可能已經發生了不少改變,所以我認爲如今是時候對這篇文章進行更新和改進了,當意識到咱們如今有了大量新服務器端緩存選項時,該想法變得尤其堅決。

      萬事都處在快速的變化之中,所以保持最新要費些功夫。我認爲在這方面我已經盡力而爲了。

      一如以往,若是您認爲我遺漏了某些內容,敬請添加評論... 數據庫



      內存的速度比磁盤快緩存

      簡言之,這是一次關於速度的討論。

世界上絕大多數的數據都位於旋轉磁盤內。經過內存技術(閃存、DRAM 等)而非旋轉的鏽鐵塊訪問相同的數據,從性能的角度看,您將更勝一籌安全

      CPU 的速度愈來愈快,旋轉磁盤的速度提高則相對緩慢 -- 這已成爲一個愈來愈重要的議題。服務器

      但內存技術比磁盤技術成本要高得多,所以關於如何以最低的成本得到最佳結果的詳細信息纔是問題的癥結所在。

      將內存技術用於存儲緩存與將其用於永久存儲並不相同,儘管後者也變得流行起來。全閃存陣列能夠將全部相關數據存儲在內存設備(而不只僅是工做子集)中,從而最大限度下降對緩存的需求。但在許多使用情形中,採用全閃存還是相對昂貴的選擇。

網絡

wKiom1NzJrTTsRSSAALXIyTdRt8934.jpg


      在本討論中,咱們仍舊不得不考慮混合使用永久 SSD 和傳統磁盤進行存儲的混合陣列。想法很簡單:經過以智能方式將正確的數據集放在正確的設備上,將能以更適中的成本(相對於全閃存替代方案)顯著提高性能。但要再說一遍的是,細節決定成敗。

      在此咱們要驗證不一樣的存儲緩存方法,而不會對全閃存陣列或混合陣列發表過多見解。
架構

      讓事情變得更加有趣的是,爲了實現最佳的性價比,咱們一般會結合使用這些方法(尤爲是存儲緩存與混合陣列)。


      讓咱們瞭解一些基礎知識
      關於 IO 配置文件,有四個主要方面須要注意:讀取(隨機和連續)和寫入(隨機和連續)。大多數應用實例都由這四個元素以不一樣的方式組合而成,真實世界中不多有純配置文件的狀況。例如,正常使用期間,數據庫可能會展現一個隨機配置文件,例外狀況包括完成完整備份時(連續讀取)或匆忙完成還原時(連續寫入)。

從技術上講,存儲緩存可能出如今四個不一樣的地方:磁盤驅動器自身上、存儲陣列中、存儲網絡中或服務器內部。分佈式

      磁盤驅動器中包含少許用於優化性能的嵌入式緩存;在此咱們不會討論這些緩存,由於它們的運行方式很大程度上是透明的。可使用存儲網絡中(尤爲是較大的分佈式文件環境中)的讀取緩存,但尚未確切證據證實此類緩存的普及度足夠廣。

      存儲陣列中的緩存已存在了至關長的一段時間:這很好理解。因爲 PCIE 閃存卡和 SSD 的出現,服務器端緩存最近正在經歷復興,但這在架構方面也沒什麼新意 -- 使用大型服務器進行存儲緩存的歷史已有幾十年。

      最後,咱們不得不將緩存分爲永久性緩存和可變緩存兩類。ide

      能夠安全無憂地使用永久性緩存持續寫入重要的數據。此類緩存包含防組件故障(一般出如今鏡像過程當中)和電源故障(若是使用 DRAM 或相似存儲)保護。能夠安全無憂地使用可變緩存讀取或寫入容易從新建立的瞬態數據(例如交換設備等)。

      特別聲明:不能使用可變存儲緩存寫入但願往後讀回的數據。



      不一樣配置文件下的緩存效率

      適用於隨機讀取的讀取緩存效率可能高得驚人,尤爲是在 IO 模式展示出訪問局部性(簡稱爲 LoR)時。簡言之,LoR意味着在數據塊被趕去存儲任何其餘內容以前,您有很好的機會從新讀取該數據塊。

wKiom1NzJ0SyWVBnAABAAVoEEuU835.jpg

      若是此狀況發生,從性能的角度看,您將是勝利者。根據過往經驗,大量實際應用程序會展示出很是良好的訪問局部性:數據庫、電子郵件系統、VDI、軟件開發等。所以,一些形式的存儲讀取緩存有其存在的道理。

     讀取緩存越大(所以成本也越高),您看到訪問局部性優點的機會越大。純粹的連續讀取流(例如 HDFS)沒法從讀取緩存中得到太多好處,除非它們足夠容下多個讀者感興趣的完整數據集 -- 這可能代價很是高昂。

     寫入永久性緩存是一個徹底不一樣的狀況。大多數寫入本質上每每是隨機寫入,即便少許永久性寫入緩存也能吸取大量 IO 並將其轉換爲相對高效的、連續的取消磁盤暫存。固然,若是寫入操做到達緩存的速度比磁盤可以取消暫存的速度快,緩存將被填滿,今後刻開始性能將以很快的速度降低 -- 直至寫入操做減退。


      陣列緩存與服務器緩存
      位於存儲陣列上的任何存儲緩存本質上都是共享的合用資源:它爲全部鏈接的主機提供服務。陣列上的幾乎全部存儲緩存都設計爲永久性緩存,這表示它們對讀取和寫入均適用,而且能夠安全地從各類危險中恢復。


      管理這些緩存的算法中包含大量神祕因素。這些算法的功效可能與如下因素相關:即便不一樣供應商使用的硬件資源表面上相同,但它們的陣列表現可能相差不少,這很大程度上取決於使用的算法。

      陣列緩存的劣勢是讀取性能 -- 至少與基於服務器的存儲緩存相比處於劣勢。要訪問基於陣列的緩存,須要調用主機總線適配器、遍歷存儲網絡、與另外一端的控制器通訊並等待回覆。

      當使用服務器端緩存時,全部這些都以服務器總線的速度發生。若是與基於陣列的讀取緩存相比較,這常常能夠致使一些使人瞠目的基準分析結果。

wKiom1NzJ4nRegatAAMTTZ84eIg265.jpg

     這表示服務器端緩存永遠都更勝一籌?不,並不是如此。

      對新手而言,做爲共享資源管理服務器端緩存的難度可能會比較大:這對在同一主機上運行(與在虛擬化環境中運行相同)或跨多個服務器羣集運行的多個應用程序均適用。如今,仍有一些配置須要手動進行,有幾種例外狀況稍後再討論。

      更爲重要的是,使用服務器端緩存寫入外部存儲陣列的操做可能致使特別糟糕的狀況發生(稱爲固定寫入)。此狀況值得更詳細地檢查。

      假設您有一對服務器,每一個服務器都配備用做存儲緩存的閃存卡,爲防止組件故障,您在服務器之間鏡像寫入操做,此過程當中出現了小幅的性能降低。

      一個服務器發生故障在理論容許的範圍內,您寫入的一個副本將安全地存儲在鏡像服務器組件上。到目前爲止,一切順利。

但若是存儲網絡或陣列發生故障,而且該狀況發生在閃存卡將其寫入操做驅趕到陣列以前,

      那麼您就會遇到固定寫入的狀況:寫入操做被認爲已經安全地存迴應用程序和/或操做系統,但它們還未到達存儲陣列。

      在這種狀況下,您必須先將服務歸還網絡或陣列,而後使用字節鑷子將每一個已寫入數據塊手動取消暫存至徹底正確的位置。此狀況下數據損壞的可能性接近 100%確實,這種狀況可能不常常發生,但一旦發生就會是您的噩夢。

      換句話說,當使用服務器端閃存將緩存持續寫入外部存儲時,它將變爲陣列自己的一部分:整個子系統負責安全地存儲寫入的數據。若是您願意:當出現網絡和/或陣列故障時,與外部陣列和網絡一塊兒使用的服務器端緩存能夠視爲可變緩存。

      這發生在咱們使用快照和遠程複製等陣列數據服務時出現問題以前...


      合併服務器端緩存與服務器端永久存儲
      您知道還能夠從 VMware 的角度解決此問題嗎?

wKiom1NzJ9XxwT95AAIbz_iOzW0097.jpg

      我不想讓您失望,因此特此說明:VMware VSAN 能夠執行高效的服務器端讀取、寫入緩存,具體方法是使用合用資源模式並避免與外部存儲相同的固定寫入狀況發生。

      我認爲它在這方面很是不同凡響。

      基礎 VSAN 架構使用多個商用服務器,每一個服務器配備至少一個用於讀取/寫入緩存的閃存設備,每一個閃存設備後面有多個磁盤。全部緩存和磁盤資源都由 VSAN 做爲一個池進行管理,除低延遲網絡躍點以外沒有任何運行不順暢的狀況。

      在被確認返回應用程序以前,寫入操做被寫入最少兩個節點。若是服務器或組件發生故障,它的羣集夥伴會保留該數據。與將服務器緩存與外部存儲一塊兒使用不一樣,您根本無需考慮存儲網絡或外部陣列可能發生故障的問題,所以不會有固定數據的情形出現。

      具有常見陣列式緩存的全部優點,以及服務器端緩存的性能和經濟性。棒極了。


      概要
      閃存的一切都圍繞着性能,沒有什麼的執行速度比閃存或位於服務器內部的其餘內存技術速度更快。

      位於服務器內部的閃存是讀取操做的理想選擇,但它難以高效共享,除非您清楚本身在幹什麼,不然不該將閃存實際用於與外部陣列一塊兒持續寫入。

      可是,隨着 VSAN 等產品的出現,這種狀況可能已經開始改變。

      誰知道將來咱們會看到什麼?

      歡迎在微博上關注我,這樣在我發佈博客文章後您就會收到通知,並可讓您瞭解更多有關 VMware 存儲的信息:@VMware中國


--------------------------------------------------------------------------------------------------------------------------------------------------


做者: Chuck Hollis

近日,ChuckHollis 加入了 VMware,擔任存儲與高可用性部門首席策略專家。在 Chuck Hollis 的領導下,VMware成功發佈了一款領先的軟件定義的存儲解決方案-VSAN。期間,他將其在存儲行業和 IT 生態系統方面的真知灼見引入了VMware。加入 VMware 以前,Chuck Hollis 曾經在 EMC 任職 18 年,擔任 EMC 全球營銷首席技術官。他喜歡與客戶和業內人士探討各種技術話題。固然,也酷愛寫博客。Chuck 與妻子和孩子們共同居住在馬薩諸塞州的霍利斯頓。

相關文章
相關標籤/搜索