通過使用固態(tài)閃存存儲作為緩存可以顯著的提升服務器和應用程序的性能,但是對于閃存高速緩存的選擇是至關重要的。
閃存存儲設備提供了一種可以解決數據存儲性能的方法,特別是在將閃存安裝在應用程序所在的服務器上時。使用閃存作為應用程序數據的緩存可以實現(xiàn)應用程序性能加速的自動化,這種加速既可以針對物理服務器本地的存儲進行加速,也可以針對服務器能夠訪問的共享存儲進行加速。當前 IT 專業(yè)人士所要面對的挑戰(zhàn)是如何選擇出最佳閃存高速緩存解決方案。
實現(xiàn)閃存高速緩存的三種途徑
當您在考慮提升存儲性能時,有三種主要類型的閃存高速緩存方案可供選擇:
- 文件級緩存解決方案
- 數據塊級緩存解決方案
- 聚合的緩存解決方案
每一個解決方案都有其優(yōu)點和缺點,本文將針對這三種主要解決方案分別進行描述,你可以就此選擇適用于您的環(huán)境的正確的緩存解決方案。
這些解決方案所涉及的產品通常都需要部署在可以訪問閃存存儲空間的物理服務器上,既可以是物理服務器本地內置的閃存盤,也可以是位于存儲網絡中的閃存空間。最常見的做法是將閃存盤安裝在物理服務器本地,這種做法通常也被稱為服務器端閃存。
上述提到的三種緩存解決方案都可以使用類似硬盤形狀的 SSD 磁盤,PCIe 接口閃存卡或者新興的安裝在服務器內存槽位上的 DIMM 閃存模塊。(關于這些硬件設備類型,參見本手冊中的“SSD, PCIe or DIMM flash: How to choose the right solid-state for your server”這篇文章)這些解決方案中的大部分都同時支持使用專用存儲網絡中的閃存存儲。一般來說,實現(xiàn)這些緩存解決方案的唯一前提就是這些 Flash 設備可以以一個塊設備的形式被緩存軟件所訪問。
文件級閃存高速緩存解決方案
顧名思義,文件級緩存軟件運行在操作系統(tǒng)或者應用程序的文件級別之中。這些產品可以自動的分析和評估特定的文件是否值得加入到緩存中。但是這種解決方案中的大多數的都只能實現(xiàn)整個文件的加速,而不能針對文件的一部分實現(xiàn)加速。
文件級緩存解決方案通常不能安裝在虛擬化環(huán)境中的虛擬機管理程序(hypervisor)中,所以單個實例的文件級緩存軟件不能同時對多個虛擬機提供緩存服務。相反,文件級緩存軟件需要安裝在每一個需要實現(xiàn)文件加速的虛擬機的操作系統(tǒng)中。文件級緩存軟件也可以安裝在裸設備或沒有虛擬化的服務器上。
文件級緩存解決方案的關鍵之處在于軟件的每個實例都必須對應由物理閃存構成的專用數據塊。
盡管文件級緩存解決方案的部署需要管理多個實例的緩存軟件,同時在虛擬化環(huán)境中還需要將物理服務器內部的 SSD 盤劃分成許多個獨立的塊設備,其帶來的好處是能夠實現(xiàn)非常高效的應用程序加速。緩存空間不會因為一些數據文件臨時滿足提升到 SSD 層的條件而被浪費掉。
文件級緩存產品往往被應用在特定的應用程序部署場景中,在這些場景中某些特定文件可以被篩選出來進行加速,譬如數據庫的日志和索引文件。這使得手工的選擇那些需要被緩存軟件分析的文件成為實施這種解決方案的非常常見的場景。
這種做法帶來的好處是文件級緩存解決方案可以為一些關鍵的數據文件提供高效的性能加速,同時又不會過多的占用寶貴的閃存空間。但是為了實現(xiàn)這種程度的高效,用戶需要在采購閃存設備和閃存軟件之前就深入的了解應用程序,了解具體哪一些文件是值得提升到緩存中的。
數據塊級的閃存高速緩存解決方案
數據塊級的閃存高速緩存解決方案運行在數據塊級別,也就是他們不會對或者不能做到針對數據文件或者產生 I/O 的應用程序的感知。相反,他們只是簡單的掃描最活躍的數據塊并對他們進行加速,而不管這些數據塊可能來自的哪個文件或者應用程序。
與文件級緩存解決方案不同的是,數據塊級緩存特別適用于服務器虛擬化環(huán)境,在虛擬化環(huán)境中只需要部署一套數據塊級緩存產品就可以對所有位于該物理服務器上的虛擬機實現(xiàn)性能加速。這種解決方案的優(yōu)點是在一臺物理服務器上只需要部署一套緩存軟件。相應的其缺點是在大多數場景下,這臺物理服務器上的所有數據都會被平等對待,也就是所有的活動數據都會被讀取到緩存中占用寶貴的閃存空間。
目前,有一些數據塊級緩存產品具有一些智能化功能,可以定位出指定虛擬機上的特定 I/O。通過這種功能,用戶可以通過設置緩存軟件只允許指定的虛擬機中的數據被緩存,也可以設定某些虛擬機中的數據不會被緩存。但是這種優(yōu)化方案是一種要么全有要么全無的方案,基于數據塊的緩存解決方案不能夠窺探虛擬機內部,不能設置只針對虛擬機的部分文件進行加速。
虛擬機遷移和服務器端緩存
無論是文件級還是數據塊級的緩存產品,在被應用在虛擬機遷移場景時都是一個挑戰(zhàn)。如果一個虛擬機從一個物理服務器遷移到另一臺物理服務器,緩存軟件必須在真實的遷移發(fā)生之前暫停遷移并且將當前緩存失效。(注:緩存失效是清空緩存中的內容的過程)
在最低限度下,當前市場上大多數的緩存產品在虛擬機遷移之前都需要確保緩存已經失效。
不過,用戶真正需要關心的是緩存是如何在虛擬機遷移到目標服務器之后完成重建的。在這個場景中,文件級緩存解決方案顯示出了其獨特的優(yōu)勢。因為緩存軟件是安裝在虛擬機自身的操作系統(tǒng)中的,基于特定文件的緩存策略和對應的文件會隨著虛擬機的遷移而很快的再次加載到緩存中。
數據塊級的緩存必須在虛擬機遷移到目標物理服務器后重建緩存的分析才能重建緩存。這也意味著可供緩存軟件使用的用于重新計算數據緩存價值的性能會受到硬盤驅動器速度的影響。在一些場合下,這也許要在新的服務器上花費數天的時間才能完成將相關的正確的數據再次加載到緩存中的過程。
有一些數據塊級的解決方案可以在虛擬機遷移時,將對緩存的分析傳輸到目標物理服務器上。很顯然,這意味著完全相同的緩存軟件必須安裝在相關的每一個物理主機上,這也是典型的做法。通過在虛擬機遷移的同時傳輸緩存的分析,部署在目標物理主機上的緩存軟件可以立刻的將遷移的虛擬機相關的數據塊加載到其緩存區(qū)域中。雖然在遷移中其性能仍然會受到磁盤的影響,但是整個遷移過程通常只會在分鐘級內快速的完成。
聚合的緩存解決方案
第三種Flash緩存的解決方案是一個聚合緩存的解決方案。采用這種解決方案的產品通過將物理服務器內部的緩存資源聚合在一起組成一個虛擬的但同時又共享的存儲資源池,這解決了虛擬機遷移的問題。這種解決方案同時提供了更好的彈性,其通過部署類似RAID的數據保護機制來實現(xiàn)。這種遷移友好同時具有彈性的特性使得這些聚合的緩存解決方案無論在讀緩存還是寫緩存方面都表現(xiàn)的非常理想。
這些產品需要在虛擬集群中的所有相關物理主機上安裝緩存聚合軟件,主要提供兩種功能:聚合閃存資源,同時為每一個相關的物理主機提供智能的使用聚合閃存資源作為緩存的最佳方法。這種智能方法類似于文件級和數據塊級緩存解決方案中使用的緩存使用算法。
組成聚合閃存的集群中至少需要三臺物理主機(通常會更多)將自帶的閃存加入到閃存資源中,這些閃存資源會聚合成一個虛擬的閃存資源池用于充當緩存層的角色,然后加入到傳統(tǒng)的存儲層中。雖然一般至少需要三臺物理服務器加入到閃存資源池中,但需要注意的是,并不是集群中的所有物理主機都需要將其自身的閃存加入到閃存資源池中供共享使用。大多數的緩存聚合軟件允許任何主機連接到共享集群,進而使用共享的閃存資源池。
在聚合的閃存資源池建立完成后,閃存聚合軟件可以為每一臺主機提供將使用最頻繁的數據遷移到閃存層的智能遷移方案,在許多場景中,可以做到先將寫 I/O 直接寫到閃存層中(這歸功于聚合緩存的較好的可用性)。但是和其他兩種緩存方案不同的是在虛擬機遷移時如果采用聚合的緩存解決方案,因為這種方案使用的是共享資源池,并不需要在目標物理主機上重建緩存的分析,目標物理主機只需簡單的將虛擬機從源物理主機上接管過來即可。
采用這種聚合的方法也存在一個不好的地方,就是使用這種方案時所有的對閃存層的數據訪問都會涉及到跨網絡的遷移數據??紤]到性能的一致性問題,提供這種產品的大多數的廠商都推薦使用專用的網絡用于緩存層使用。出于性能最大化考慮,這些聚合的緩存解決方案需要采用精心設計的服務器到服務器的網絡。
哪種解決方案是閃存高速緩存的最佳方案?
最佳的服務器緩存解決方案是適應您的 IT 環(huán)境的解決方案。打個比方,如果您的環(huán)境中服務器之間的網絡已經存在并且做了升級,那么聚合緩存解決方案更加適合您,這個方案可以為緩存數據提供更好的彈性。但是如果您的現(xiàn)有的服務器到服務器的網絡不能滿足這種類型的負載需求,那么文件級或者數據塊級的緩存等采用服務器本地閃存存儲的方案或許是更加好的選擇。許多存儲管理員并沒有權限去升級或者調整服務器端的網絡,本地閃存存儲方案可以在不改變現(xiàn)有網絡的情況下顯著的提升性能。