高端IT系統(tǒng)的緩存管理一直是個(gè)極具挑戰(zhàn)性的課題,從計(jì)算領(lǐng)域到存儲領(lǐng)域,該問題普遍存在。
比如,多核心多CPU體系中的分布式L1/2/3緩存的一致性管理,而隨著從SMP到NUMA的演進(jìn),NUMA架構(gòu)下的分布式緩存管理更是增加了CPU內(nèi)硬件的復(fù)雜度。在存儲領(lǐng)域,全對稱多活多控制器存儲系統(tǒng)從一開始便普遍使用集中式的數(shù)據(jù)緩存來保證緩存一致性。
本文對幾種多控高端存儲下的緩存一致性管理、緩存鏡像管理等方面做簡要分析,并以浪潮AS18000高端存儲系統(tǒng)為例來實(shí)際分析。
1. 多控高端存儲系統(tǒng)的緩存管理的幾種方式
1.1 集中式緩存管理
在這種緩存管理模式下,集群中所有節(jié)點(diǎn)均不維護(hù)本地緩存,而是所有節(jié)點(diǎn)共享訪問一個(gè)集中存放的緩存,數(shù)據(jù)在緩存中只有一份副本,不會也不可以出現(xiàn)多份副本。在計(jì)算領(lǐng)域,典型例子比如單顆CPU芯片內(nèi)的多個(gè)核心共享的LLC(LastLevel Cache)。在存儲領(lǐng)域,典型例子則是某些廠商的高端存儲系統(tǒng)中所使用的集中式緩存,比如下圖架構(gòu)所示:
集中式緩存一致性管理
該緩存管理架構(gòu)的優(yōu)點(diǎn)是天然的緩存一致性,因?yàn)椴淮嬖诙鄠€(gè)副本,不需要特殊過程來維護(hù)緩存一致性。對于高端存儲系統(tǒng)而言,該設(shè)計(jì)的劣勢則是需要緩存集中放置,需要使用某種外部網(wǎng)絡(luò)來連接集中的緩存,而且提供異步化的類似IO的訪問方式,編程復(fù)雜,難以掌控和優(yōu)化,需要投入大量成本。
1.2 任意關(guān)聯(lián)對稱式分布式緩存
所謂分布式緩存,指的是集群中的每個(gè)節(jié)點(diǎn)都有自己獨(dú)享的緩存,這種情況會給緩存一致性管理上帶來極大的復(fù)雜性,當(dāng)然,所獲得的收益便是一旦命中則性能會非常好。所謂對稱式指的是集群中所有節(jié)點(diǎn)在緩存管理的地位上是均等的,都可以自行控制管理各自的緩存。所謂任意關(guān)聯(lián),則是指任意節(jié)點(diǎn)均可以緩存任意數(shù)據(jù)塊,數(shù)據(jù)塊大小視不同產(chǎn)品設(shè)計(jì)而定,比如多CPU集群的緩存數(shù)據(jù)塊大小為一個(gè)緩存行,Cache Line,一般為64Byte大小。而對于高端存儲系統(tǒng),則一般以4K及其整數(shù)倍為粒度。
因?yàn)榭梢匀我饩彺?,所以會?dǎo)致多個(gè)集群節(jié)點(diǎn)同時(shí)緩存有同一個(gè)數(shù)據(jù)塊的多個(gè)不同版本的副本,從而導(dǎo)致一致性問題。解決的辦法則是效仿多CPU緩存一致性管理方面的思路,采用MESI一致性基本協(xié)議及其變種,可以在盡量減少廣播通信的前提下實(shí)現(xiàn)任意關(guān)聯(lián)分布式緩存一致性。
該設(shè)計(jì)的優(yōu)點(diǎn)則是可以充分利用緩存空間,且學(xué)院派高逼格凸顯。劣勢則是成本高,因?yàn)樾枰粋€(gè)低時(shí)延的網(wǎng)絡(luò)來實(shí)現(xiàn)MESI協(xié)議流量,否則性能將很差;另外,需要一個(gè)高速搜索算法來搜索對應(yīng)目標(biāo)數(shù)據(jù)塊在緩存中的位置,必要時(shí)引入硬加速比如TCAM等,成本再次增加。
1.3 固定關(guān)聯(lián)對稱式分布式緩存
相比上一種實(shí)現(xiàn)方式,固定關(guān)聯(lián)的思想則是通過犧牲緩存利用率來降低廣播流量,換取性能。固定關(guān)聯(lián)指的是集群中的節(jié)點(diǎn)不能緩存任意數(shù)據(jù)塊,而是每個(gè)節(jié)點(diǎn)只能緩存部分?jǐn)?shù)據(jù)塊,比如,可以按照對應(yīng)Lun ID+LBA地址段的hash值來索引集群節(jié)點(diǎn),索引到誰就緩存在誰那里,并且只有單一的副本。其他節(jié)點(diǎn)如果接收到訪問該LBA段的讀IO請求,則需要通過網(wǎng)絡(luò)向用用該LBA段緩存的節(jié)點(diǎn)發(fā)出請求,獲取數(shù)據(jù);對于寫,也是一樣,必須將數(shù)據(jù)轉(zhuǎn)發(fā)到有權(quán)限緩存該段LBA的節(jié)點(diǎn),自己不能緩存。
固定關(guān)聯(lián)對稱式分布式緩存
這樣做的優(yōu)勢在于能夠避免緩存一致性問題,因?yàn)橹挥幸环莞北?。劣勢在于極端條件下可能導(dǎo)致緩存利用不均衡,因?yàn)閿?shù)據(jù)塊與其緩存位置是一一對應(yīng)的,可能導(dǎo)致某些節(jié)點(diǎn)緩存空余很多,而某些則近滿。
2. 浪潮AS18000高端存儲的緩存管理技術(shù)
AS18000是浪潮的一款高端存儲系統(tǒng),其在架構(gòu)上與北美廠商的高端存儲產(chǎn)品有著本質(zhì)區(qū)別,也正是這種架構(gòu)成就了該系統(tǒng)相對更高的可靠性。
AS18000架構(gòu)
AS18000最大支持16個(gè)控制器,每個(gè)控制器可以支持12-144GB的本地緩存。在AS18000中,雖然緩存物理依附于本地控制器,但是存儲系統(tǒng)啟動之后,各個(gè)控制器的本地內(nèi)存將組合為一個(gè)全局的緩存邏輯視圖。也就是說每個(gè)控制器都可以“看到”整個(gè)邏輯視圖。
全局的邏輯視圖可以讓每個(gè)控制器站在全局的高度來“審視”存儲中的LUNOwener、路由鏈路等資源信息,減少決策和仲裁耗時(shí)。
2.1 AS18000緩存一致性管理
AS18000并沒有將數(shù)據(jù)緩存分拆且集中存放,本地CPU訪問本地RAM依然使用DDR接口高速率訪問,同時(shí)本地CPU也可以訪問其他節(jié)點(diǎn)的RAM,此時(shí)則通過PCIE Switch的NTB橋方式,將各個(gè)節(jié)點(diǎn)的一部分內(nèi)存相互映射到本地,本地控制器將需要同步給遠(yuǎn)端的消息、數(shù)據(jù)寫入本地的這塊內(nèi)存空間,底層硬件就會自動將這些消息向目標(biāo)端傳遞。
經(jīng)過這樣的設(shè)計(jì),其訪問效率就不會向集中緩存方式的高端存儲那樣低下。AS18000采用的是固定關(guān)聯(lián)方式,其關(guān)聯(lián)粒度為一個(gè)Raid Group,也就是說,某個(gè)Raid Group中的全部數(shù)據(jù)只能緩存在某個(gè)節(jié)點(diǎn),這樣做的目的是充分保證緩存的局部性,避免跨網(wǎng)絡(luò)交換數(shù)據(jù),從而保證系統(tǒng)的性能。對于高端存儲系統(tǒng)所處的應(yīng)用環(huán)境,都是少量核心關(guān)鍵業(yè)務(wù),所以,緩存的整體利用率并不是問題,此時(shí)保證性能的穩(wěn)定無抖動,不跨網(wǎng)絡(luò)保證時(shí)延最低,才是最關(guān)鍵的考量點(diǎn)。
除了在緩存一致性方面的優(yōu)良設(shè)計(jì)之外,浪潮AS18000在后端的存儲介質(zhì)管理方面采用的則是全對稱式后端共享架構(gòu),能夠在保證性能的前提下,極大提升系統(tǒng)的可靠性及擴(kuò)展性。這也是為何該架構(gòu)如今仍然生命力頑強(qiáng),而其他的架構(gòu)已經(jīng)隕落的原因之一。
浪潮AS18000
2.2 AS18000寫緩存管理
在AS18000系統(tǒng)中,緩存是全局的,但緩存的讀、寫操作都只能被各自的控制器所控制,也就是說,其它的控制器需要讀、寫非Owner 的LUN數(shù)據(jù),只能通過前端路由(BRT)發(fā)出指令給相應(yīng)具有Owner的控制器,由具有Owner權(quán)限的控制器處理完成讀、寫操作之后,將數(shù)據(jù)或者ACK返回給發(fā)起端控制器。
如前文所述,每個(gè)控制器都具有本地的物理緩存,存儲系統(tǒng)啟動后,緩存空間將被初始化為多個(gè)page,當(dāng)控制器發(fā)起讀操作后,數(shù)據(jù)將從磁盤load到page中,如果此page中的數(shù)據(jù)發(fā)生了變化,此page將會標(biāo)記為dirty page(只有標(biāo)記為dirty page的緩存區(qū)間才會被寫入)。dirty page并不會馬上寫入到硬盤中,而是會加入dirty chain表中,chain表會根據(jù)先進(jìn)先出原則發(fā)出寫指令,也就是說多個(gè)dirty page會一同被寫入到磁盤。
2.3 AS18000緩存鏡像管理
寫緩存鏡像是任何傳統(tǒng)存儲系統(tǒng)必須實(shí)現(xiàn)的功能。為了防止某節(jié)點(diǎn)突然宕機(jī)且由于各種原因無法成功重啟,寫入任何節(jié)點(diǎn)緩存的數(shù)據(jù)必須被鏡像一份到其他節(jié)點(diǎn)作為臨時(shí)備份,當(dāng)數(shù)據(jù)被寫盤后,便將臨時(shí)備份刪除。
AS18000存儲緩存中的dirty page將自動鏡像到相鄰的控制器緩存中。其工作流程如下:具有Owner權(quán)限的控制器的緩存空間發(fā)生變化,變?yōu)榱薲irty page,此時(shí)控制器將發(fā)起copy dirty page進(jìn)程,通過前端路由(BRT)將此dirty page復(fù)制到相鄰的控制器緩存中,此時(shí)兩個(gè)控制器中的dirty page完成mirror,相鄰控制器返回ACK應(yīng)答后,主控器中的dirty page將page index連接到dirty chain表中,然后由dirty chain表發(fā)出write操作,落入磁盤的dirty page并不會馬上刪除,而是會標(biāo)記為clean page,可承載后續(xù)的讀操作。
隔離鏈?zhǔn)江h(huán)形緩存鏡像技術(shù)
AS18000采用隔離鏈?zhǔn)江h(huán)形緩存鏡像技術(shù),如上圖所示,假設(shè)系統(tǒng)有4個(gè)節(jié)點(diǎn)(Control Module)組成,CM0的寫緩存會被鏡像到CM1,CM1則到CM2,CM2到CM3,然后CM3的寫緩存再被環(huán)回鏡像到CM0。
(審核編輯: 滄海一土)
分享