楓林 發(fā)表于:13年10月16日 15:28 [原創(chuàng)] DOIT.com.cn
存儲系統(tǒng)的緩存作用是加速數(shù)據(jù)讀取與寫入的速度,從而提升整體的存儲性能。Symmetrix緩存機(jī)制,作為存儲陣列的核心技術(shù),對陣列的性能和高可用性起著至關(guān)重要的作用。本文對Symmetrix最新的兩代產(chǎn)品緩存中的數(shù)據(jù)類型進(jìn)行介紹。幫助存儲管理員更好的了解Symmetrix的緩存工作機(jī)制。
緩存中的數(shù)據(jù):
緩存主要的目的是用來緩沖磁盤上的I/O。Symmetrix的緩存分為兩個部分,用戶數(shù)據(jù)區(qū)域(User Data Slots)和系統(tǒng)數(shù)據(jù)區(qū)域(Global System Data)。
•用戶數(shù)據(jù)區(qū)域(User Data Slots): 用戶數(shù)據(jù)區(qū)域會被劃分成很多的Slots用來緩沖前端的I/O。一旦前端的讀寫要求緩存存放數(shù)據(jù),系統(tǒng)會分配相應(yīng)的Slot用作存儲數(shù)據(jù)。緩存會對于前端呈現(xiàn)相關(guān)的磁盤設(shè)備的的Track給前端主機(jī),直到該Slot被釋放或者被重用。并且對于DMX-3或者更高版本的陣列,User Data是以鏡像的方式存儲的(DMX是兩塊內(nèi)存卡,VMAX的話則是兩個Director)。
•系統(tǒng)數(shù)據(jù)區(qū)域(Global System Data):緩存中除了存放用戶數(shù)據(jù)以外,還會存放一些供Director使用的系統(tǒng)數(shù)據(jù),例如磁盤設(shè)備列表(Device Table)列出了每個Slot對應(yīng)的磁盤設(shè)備位置,可以讓Director在緩存中找到對應(yīng)的數(shù)據(jù)。Director Mailboxes存放了各個Director相互通訊的命令集。對于DMX陣列,Global System Data會以條帶的方式存放在每個物理內(nèi)存板中。
緩存區(qū)域大。
扇區(qū)(Sector),磁道(Track),柱面(Cylinder)是Symmetrix陣列中磁盤存儲的三個基礎(chǔ)數(shù)據(jù)大小。
•Sector: Sector是一磁盤上上最小的單元,后端的硬件不會傳輸小于一個Secotr大小的數(shù)據(jù)到緩存中。Symmetrix會對所有在陣列中傳輸?shù)臄?shù)據(jù)進(jìn)行CRC校驗,一旦校驗發(fā)現(xiàn)數(shù)據(jù)損壞,數(shù)據(jù)會被重新傳輸或者標(biāo)注相應(yīng)的物理磁盤區(qū)域為已損壞。DMX-3以后的Symmetrix中Sector的大小為8KB。DMX至DMX-2的版本中大小為4KB。
•Track: Track是由8個Sector所組成。當(dāng)磁盤數(shù)據(jù)中一個Track在緩存中呈現(xiàn),該緩存區(qū)域就會成為一個可用的Slot。DMX-3以后的Symmetrix中Track的大小為64KB。DMX至DMX-2的版本中大小為32KB 。這個改變也是為了增加緩存讀取擊中的比例。
•Cylinder:單個Cylinder由15個連續(xù)的Track組成,但是并非根據(jù)Symmetrix中所配置的物理磁盤所分布,是一個虛擬的概念,這連續(xù)的Track可能分布在不同的物理磁盤上。Cylinder的大小有時候也會用作計量磁盤設(shè)備Device和Meta Device的大小。DMX-3以后的Symmetrix中Cylinder的大小為960KB。DMX至DMX-2的版本中大小為480KB。
DMX和VMAX的緩存架構(gòu):
DMX存儲陣列中包含了2-8個緩存卡,每個緩存卡最大容量是64GB,每個Director都會有直連的Fibre Channel連接到每個緩存卡上面?偟倪B接數(shù)量取決于卡的數(shù)量。
VMAX中,緩存存儲在每個Director的緩存中。有Local Cache和Remote Cache之分。Director之間通過Virtual Matrix交換網(wǎng)絡(luò)相互訪問各自的緩存。
前端主機(jī)I/O請求在Symmetrix緩存中數(shù)據(jù)的訪問模式主機(jī)端發(fā)起了I/O操作以后,I/O讀取或者寫入請求傳送到Symmetrix前端口。根據(jù)數(shù)據(jù)存在于緩存與否,以及讀寫類型,Symmetrix會將I/O操作分為以下幾種情況:
1. 讀命中(Read Hit):在這種情況下,如下圖所示。當(dāng)主機(jī)端發(fā)送I/O請求到Symmetrix以后。如果所請求的數(shù)據(jù),已經(jīng)存在與緩存中(可能是之前的I/O已經(jīng)被數(shù)據(jù)加載到緩存中),Director會直接將緩存中的數(shù)據(jù)傳送回主機(jī)。雖然數(shù)據(jù)在緩存中已鏡像的方式存儲,但是任何讀取操作都只會讀取其中的一份鏡像。
2. 讀取未命中(Read Miss): 在這種情況下,如下圖所示,主機(jī)端I/O請求的數(shù)據(jù)沒有在緩存中。相關(guān)的Director會從后端的磁盤上獲取所需要的數(shù)據(jù)。一旦磁盤返回數(shù)據(jù),Director中的后端Disk Adaptor會將相應(yīng)的數(shù)據(jù)存放到緩存中,如果是緩存鏡像,則后端Disk Adaptor會在緩存中寫入兩份數(shù)據(jù)。最后Director會將數(shù)據(jù)再發(fā)送給主機(jī)。讀取未命中比讀取命中消耗更多的時間,因為主機(jī)端必須等待Symmetrix從后端磁盤中獲取數(shù)據(jù)。
因為從DMX-3開始的版本中,使用的緩存鏡像機(jī)制。Enginuity也對于這種鏡像緩存進(jìn)行了優(yōu)化算法。鏡像緩存選擇優(yōu)化主要的改進(jìn)是,Enginuity允許Director對于讀取請求同時定位兩個緩存Slot,但是只讀取其中的一個。從而減少后端的傳輸開銷。一旦緩存出現(xiàn)錯誤,也可以簡單的再從磁盤中重讀。這種優(yōu)化對于大I/O的讀取未命中會有30%的性能提升,
3. 順序讀和預(yù)讀:預(yù)讀機(jī)制用來產(chǎn)生額外的讀取命中。當(dāng)Symmetrix檢測到兩個數(shù)據(jù)讀請求是從連續(xù)的位置獲取的,則相應(yīng)的后端Director會啟動預(yù)讀任務(wù)。后端Director會嘗試先于前端主機(jī)的請求,從額外的Track中讀取數(shù)據(jù)到緩存中,隨著被存放在緩存中的數(shù)量增加,如果前端主機(jī)連續(xù)的讀取順序的數(shù)據(jù),就會發(fā)現(xiàn)數(shù)據(jù)已經(jīng)存在與緩存中了。當(dāng)然,后端Director不會知道到底主機(jī)的順序讀會在哪里停止,一些預(yù)讀工作可能會被浪費,不過鑒于讀取命中的速度會比讀取未命中來的高出血多,所以通過預(yù)讀進(jìn)性能提升還是非常顯著的。
4. 寫入命中(Write Hit):也叫快速寫入,寫入命中的情況發(fā)生在緩存中有足夠空間用來存儲需要寫入的數(shù)據(jù)。對于主機(jī)端的寫入請求,后端Director找到可用的緩存Slot,然后將數(shù)據(jù)傳輸?shù)骄彺嬷,然后立刻給主機(jī)寫入完成信號。主機(jī)端即認(rèn)為寫入已經(jīng)完成。對應(yīng)的緩存Slot會被標(biāo)記為寫入等待狀態(tài)(Write Pending),直到數(shù)據(jù)寫入到物理磁盤以后才能夠再被使用。如果緩存是鏡像的,Director需要在鏡像中分別寫入數(shù)據(jù)。寫入到后端磁盤(de-stage)是批量進(jìn)行的,通常會處于比較低的優(yōu)先級下進(jìn)行,但是如果當(dāng)寫入等待狀態(tài)的緩存使用率達(dá)到比較高的值的話(DMX默認(rèn)是50%,VMAX是75%),則Symmetrix會進(jìn)入優(yōu)先de-stage模式,加快寫入磁盤的速度。
5. 寫入未命中(Deplayed Fast Write):也叫延遲快速寫入,寫入未命中的情況發(fā)生在當(dāng)Symmetrix的緩存已經(jīng)達(dá)到了寫入等待上限的時候(VMAX是80%), 新的寫入請求無法進(jìn)行快速寫入,會觸發(fā)將現(xiàn)有的寫入等待數(shù)據(jù)立刻寫入到磁盤的操作,當(dāng)Director觀察到緩存中有空閑空間的時候,完成寫入命中操作,將數(shù)據(jù)寫入到緩存中。也就是說延遲快速寫入也就是有等待時間的快速寫入。
接下來解讀解讀影響Symmetrix性能的幾種緩存參數(shù),System Write Pending Limits、Device Write Pending Limits和DA Write Pending Limits。
System Write Pending Limits:
我們介紹了寫入等待Write Pending Limit的概念。Write Pending Limit緩存Slot是用來存放(對應(yīng)快速寫入)已經(jīng)在內(nèi)存中修改,但還未最后寫入到后端磁盤上的數(shù)據(jù)。當(dāng)Write Pending的Slot達(dá)到一定的數(shù)量,并且達(dá)到系統(tǒng)中的上限以后,會觸發(fā)Delay Fast Write,從而使整個陣列的性能有所降低。而Write Pending Limit就是Symmetrix存儲陣列中用作寫入等待的最大上限。VMAX Enginuity 5875以后是75%,之前的VMAX和DMX都是80%的總緩存比例:
Device Write Pending Limits:
除了System Write Pending Limits以外,緩存中還有針對Symmetrxi磁盤設(shè)備(邏輯卷)的Device Write Pending Limits。它的作用是保證單個磁盤設(shè)備的不會占用太多的Write Pending緩存Slot,從而影響到其他磁盤設(shè)備的性能。所有的磁盤設(shè)備都包含了一樣的上限值,而且所有磁盤設(shè)備的上限相加會大于整個緩存slot的數(shù)量。對于Symmetrix的Meta Device,組成它的Member都會包含有一個相應(yīng)的Device Write Pending值。
DA Write Pending Limits:
DA WritePending Limits默認(rèn)情況下等于50%的System Write Pending Limits。這個值通常是用來觸發(fā)緩存壓力事件的“Cache Stress“。 Cache Stress是Symmetrix用來定義是否有過多的Write Pending Slot,其中一個主要的指標(biāo)就是DA Write Pending Limits值。但整體的Write Pending的數(shù)量達(dá)到DA Write Pending Limits的時候,Symmetrix就會進(jìn)入Cache Stress模式。進(jìn)入Cache Stress模式以后symmetrix會改變緩存操作的模式。例如Director會進(jìn)入優(yōu)先Destatge模式,使用相同時間來處理destage數(shù)據(jù)和應(yīng)付Read Miss操作。這些活動都會短暫的降低系統(tǒng)性能,讀取和寫入都會受到影響。不過長期來看,當(dāng)緩存釋放以后,整體的性能將恢復(fù)。
達(dá)到Write Pending Limits的影響:
當(dāng)Symmetrix陣列達(dá)到Write Pending Limit的時候,會對整體的寫入性能有比較大的影響。如果寫入發(fā)生,Symmetrix陣列在接到寫入請求以后會嘗試分配Cache Slot,然后檢查Write Pending Limits是否已經(jīng)到達(dá),如果是,會直接觸發(fā)Write Miss。新的Cache Slot不會被分配,直至Write pending的slot destage到后端的磁盤上。雖然Director會進(jìn)入最高級別的destage模式,但是主機(jī)的寫入還是因為這種情況而變慢。但是如果,前端的寫入頻繁發(fā)生在一個磁盤區(qū)域中,同一個Cache Slot會被標(biāo)注成Write Pending模式,但是對于多次寫或者重復(fù)寫發(fā)生在一個Cache Slot中,因為不需要重新分配新的Cache Slot,則影響會相對小一些。
下圖給出了一個Symmetrix陣列達(dá)到Write Pending Limit后影響的例子。這個測試是在128個Device上進(jìn)心的,前端模擬了大量的寫入請求,以至于超過當(dāng)前陣列的承受范圍。最初,由于有足夠的緩存,則陣列處于告訴的Write Hit狀態(tài),下圖我們可以看到每秒可以有15000 IOPS,但是隨著時間的推移,當(dāng)40%的Cache Slot被Write pending所用的時候,Symmetrix進(jìn)入到cache stress模式。后端Director會使用更多的資源來進(jìn)心destage。磁盤本身也達(dá)到了自身的Write Pending Limit。這種情況下,我們可以看到整體的IOPS開始下降,寫入的反應(yīng)時間也開始隨之升高,IOPS達(dá)到了10000左右。40秒以后,System Write Pending達(dá)到了80%。雖然symmetrix加快了destage的速度,還是沒有來得及處理寫入請求。在某一個時間點會出現(xiàn)一個下降的峰值,隨后緩存將無法在加速寫入請求。寫入的反應(yīng)速度與后端destage的速度保持一致,IOPS下降到5000左右。
本文作者為EMC中文技術(shù)社區(qū)(https://community.emc.com/go/chinese)技術(shù)版主。如果您對本文有任何疑問和不同見解,也歡迎到EMC中文支持論壇參與討論。
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.