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