本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)領(lǐng)域,特別涉及一種緩存下刷方法及系統(tǒng)。
背景技術(shù):
現(xiàn)在隨著國家大數(shù)據(jù)戰(zhàn)略的推進(jìn),存儲(chǔ)系統(tǒng)承載的數(shù)據(jù)量會(huì)越來越大。緩存下刷是io流里面的一個(gè)主要部分,如何做好緩存下刷的處理,對(duì)系統(tǒng)性能提高有著至關(guān)重要的影響。
現(xiàn)有技術(shù)中,緩存下刷過程中,每下刷完一整個(gè)mdisk(硬盤),才繼續(xù)下刷下一個(gè)mdisk,難以充分利用mdisk的性能和緩存的性能,下刷速度隨著難以保證,導(dǎo)致下刷效率低。
為此,需要研發(fā)一種緩存下刷方法以充分利用mdisk的性能和緩存的性能,提高下刷速度和下刷效率。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種緩存下刷方法及系統(tǒng),以充分利用mdisk的性能和緩存的性能,提高下刷速度和下刷效率。其具體方案如下:
一種緩存下刷方法,包括:
接收lowercache利用io的屬性發(fā)送的相應(yīng)的所述io;
利用所述io的屬性,確定與所述io相應(yīng)的midsk集中的mdisk子集;
利用所述midsk集中各mdisk的剩余空間,將所述io下刷至所述mdisk子集的各個(gè)mdisk中,以使所述mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值。
可選的,所述利用midsk集中各mdisk的剩余空間,將所述io下刷至所述mdisk子集的各個(gè)mdisk中的過程,包括:
利用mdisk利用率表,將所述io下刷至所述mdisk子集的各個(gè)mdisk中;其中,所述mdisk利用率表記錄有當(dāng)前可用的mdisk和各個(gè)mdisk的剩余空間。
可選的,所述接收lowercache利用io的屬性確定的與midsk集中mdisk相對(duì)應(yīng)的io的過程,包括:
接收lowercache通過uppercache下刷得到的,并利用io的屬性發(fā)送的相應(yīng)的io。
可選的,所述接收lowercache利用io的屬性發(fā)送的相應(yīng)的io的過程,包括:
接收lowercache利用io的屬性發(fā)送的滿足預(yù)設(shè)大小的相應(yīng)的io。
可選的,還包括:
利用所述io的大小,按照預(yù)設(shè)規(guī)則,將所述io以預(yù)設(shè)的不同下刷力度下刷至多個(gè)mdisk集中。
可選的,所述利用所述io的屬性,確定與所述io相應(yīng)的midsk集中的mdisk子集的過程,包括:
利用所述io的屬性,在下刷熱度列表中依序查找與所述io相應(yīng)的vdisk;
如果在所述下刷熱度列表中未查找到與所述io相應(yīng)的vdisk,則在midsk集中查找出與所述io相應(yīng)的vdisk;
其中,所述下刷熱度列表中保存有利用歷史io下刷次數(shù),從高到低排序的vdisk順序,其中,所述vdisk與所述midsk集中的所述mdisk子集相對(duì)應(yīng)。
本發(fā)明還公開了一種緩存下刷系統(tǒng),包括:
接收模塊,用于接收lowercache利用io的屬性發(fā)送的相應(yīng)的所述io;
確定模塊,用于利用所述io的屬性,確定與所述io相應(yīng)的midsk集中的mdisk子集;
下刷模塊,用于利用所述midsk集中各mdisk的剩余空間,將所述io下刷至所述mdisk子集的各個(gè)mdisk中,以使所述mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值。
可選的,所述下刷模塊,具體用于利用mdisk利用率表,將所述io下刷至所述mdisk子集的各個(gè)mdisk中,以使所述mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值;其中,所述mdisk利用率表記錄有當(dāng)前可用的mdisk和各個(gè)mdisk的剩余空間。
可選的,還包括:
下刷力度模塊,用于利用所述io的大小,按照預(yù)設(shè)規(guī)則,將所述io以預(yù)設(shè)的不同下刷力度下刷至多個(gè)mdisk集中。
可選的,所述確定模塊,包括:
列表查找單元,用于利用所述io的屬性,在下刷熱度列表中依序查找與所述io相應(yīng)的vdisk;
確定單元,用于如果在所述下刷熱度列表中未查找到與所述io相應(yīng)的vdisk,則在midsk集中查找出與所述io相應(yīng)的vdisk;
其中,所述下刷熱度列表中保存有利用歷史io下刷次數(shù),從高到低排序的vdisk順序,其中,所述vdisk與所述midsk集中的所述mdisk子集相對(duì)應(yīng)。
本發(fā)明中,緩存下刷方法,包括:接收lowercache利用io的屬性發(fā)送的相應(yīng)的io;利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集;利用midsk集中各mdisk的剩余空間,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值。本發(fā)明partition接收lowercache發(fā)送的相應(yīng)的io,并利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集,最后partition獲取并利用midsk集中各mdisk的剩余空間,將io根據(jù)mdisk子集的各個(gè)mdisk的剩余空間的動(dòng)態(tài)變化,下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值,以此提高mdisk性能利用率、緩存利用率和緩存下刷效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例公開的一種緩存下刷方法流程示意圖;
圖2為本發(fā)明實(shí)施例公開的mdisk利用率表示意圖;
圖3為本發(fā)明實(shí)施例公開的一種緩存下刷系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例公開了緩存下刷方法,參見圖1所示,該方法包括:
步驟s11:接收lowercache利用io的屬性發(fā)送的相應(yīng)的io;
本發(fā)明實(shí)施例中,緩存被分為兩層,即,uppercache(上緩存)和lowercache(下緩存),uppercache層接收io并下刷至lowercache層,其中,uppercache層下刷io至lowercache層,中間需要經(jīng)過flashcopy(快照)層、mirroring(鏡像)層和thinprovisioning(自動(dòng)精簡配置)層,ca(緩存)端的partition接收lowercache利用io的屬性識(shí)別出io對(duì)應(yīng)的mdisk子集,partition對(duì)應(yīng)有相應(yīng)的mdisk集,因此,lowercache利用與io對(duì)應(yīng)的mdisk子集,查找到包括mdisk子集的mdisk集,從而進(jìn)一步的確定與io相應(yīng)的partition,lowercache將io發(fā)送至相應(yīng)的partition。
步驟s12:利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集;
具體的,partition接收到lowercache發(fā)送的io,利用io的屬性,獲取與io相應(yīng)的midsk集中的mdisk子集。
可以理解的是,雖然lowercache在發(fā)送io時(shí)獲取了與io對(duì)應(yīng)的mdisk子集,但在發(fā)送至partition后,partition并未獲取到與io對(duì)應(yīng)的mdisk子集,因此,partition需要再次利用io的屬性,獲取與io對(duì)應(yīng)的mdisk子集。
步驟s13:利用midsk集中各mdisk的剩余空間,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值。
具體的,利用partition記載的midsk集中各mdisk的剩余空間,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值,例如,預(yù)設(shè)差值為3,mdisk子集包括3個(gè)mdisk,分別為第一mdisk、第二mdisk和第三mdisk,各自剩余空間為55、25和15,io大小為60,可以先向第一mdisk寫入40個(gè)io,第一mdisk剩余空間為15,再向第二mdisk寫入10個(gè)io,第二mdisk剩余空間為15,向第三mdisk寫入3個(gè)io,第三剩余空間為12,向第一mdisk寫入3個(gè)io,第一mdisk剩余空間為12,最后向第二mdisk寫入4個(gè)io,第二mdisk剩余空間為11,3個(gè)mdisk剩余空間差值為1,滿足預(yù)設(shè)差值3。
可見,本發(fā)明實(shí)施例partition接收lowercache發(fā)送的相應(yīng)的io,并利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集,最后partition獲取并利用midsk集中各mdisk的剩余空間,將io根據(jù)mdisk子集的各個(gè)mdisk的剩余空間的動(dòng)態(tài)變化,下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值,以此提高mdisk性能利用率、緩存利用率和緩存下刷效率。
本發(fā)明實(shí)施例公開了一種具體的緩存下刷方法,相對(duì)于上一實(shí)施例,本實(shí)施例對(duì)技術(shù)方案作了進(jìn)一步的說明和優(yōu)化。具體的:
本發(fā)明實(shí)施例中,上述利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集的過程,包括:
步驟s21:利用io的屬性,在下刷熱度列表中依序查找到與io相應(yīng)的vdisk。
其中,下刷熱度列表中保存有利用歷史io下刷次數(shù),從高到低排序的vdisk(虛擬磁盤)順序,。
具體的,由于io的下刷具有一定的連續(xù)性,因此,被下刷次數(shù)最多的vdisk,是被下一次下刷幾率最大的vdisk,因此,為了進(jìn)一步的加快下刷速度,建立下刷熱度列表,保存有利用歷史io下刷次數(shù),從高到低排序的vdisk順序,以使partition獲取io的屬性后能夠快速的查找到相應(yīng)的vdisk,從而加快下刷速度。
例如,有三個(gè)vdisk,分別為第一vdisk、第二vdisk和第三vdisk,三個(gè)vdisk歷史io下刷次數(shù)分別為10次、15次和12次,按照歷史io下刷次數(shù)從高到低的排列順序?qū)⒌诙disk放置第一位,第三vdisk為第二位,第一vdisk排最后第三位,則下次io下刷,partition獲取io的屬性后,先判斷第二vdisk是否與io相對(duì)應(yīng),如果不對(duì)應(yīng),則依序查找與io相對(duì)應(yīng)的vdisk,查找第三vdisk和第一vdisk。
步驟s22:如果在下刷熱度列表中未查找到與io相應(yīng)的vdisk,則在midsk集中查找出與io相應(yīng)的vdisk。
可以理解的是,部分vdisk可能還未被歷史io下刷過,又或因下刷熱度不滿足預(yù)設(shè)下刷條件,而未保存在下刷熱度列表中,因此,如果只在下刷熱度列表中查找io,則可能無法查找到相應(yīng)的vdisk,為此,當(dāng)未在下刷熱度列表中到與io相應(yīng)的vdisk,則在midsk集中查找出與io相應(yīng)的vdisk,從而保證下刷的順利完成。
例如,midsk集中共有第一vdisk至第四vdisk,4個(gè)vdisk,第一vdisk至第三vdisk保存在下刷熱度列表中,而當(dāng)前io相應(yīng)的vdisk為第四vdisk,第四vdisk可以因?yàn)槲幢籭o下刷過所以未保存在下刷熱度列表中,或第四vdisk歷史下刷次數(shù)不滿足預(yù)設(shè)下刷條件,如,第四vdisk歷史下刷次數(shù)為3,預(yù)設(shè)下刷條件為10次,則第四vdisk歷史下刷次數(shù)不滿足預(yù)設(shè)下刷條件,不被保存在下刷熱度列表中,此時(shí)在下刷熱度列表中partition無法查找到與io相應(yīng)的vdisk,則在midsk集中查找,從而查找到第四vdisk,保證下刷的順利完成。
需要說明的是,vdisk包括多個(gè)mdisk部分空間,因此,vdisk與midsk集中的mdisk子集相對(duì)應(yīng),查找到vdisk即查找到mdisk子集,vdisk也可以在midsk集中直接查找到。
上一實(shí)施例中,partition利用midsk集中各mdisk的剩余空間,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值,本發(fā)明實(shí)施例中,partition利用mdisk利用率表,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值;其中,mdisk利用率表記錄有當(dāng)前可用的mdisk和各個(gè)mdisk的剩余空間。
具體的,partition建立mdisk利用率表,時(shí)刻記錄當(dāng)前可用的mdisk,和各個(gè)可用的mdisk的可寫入io的剩余空間,進(jìn)一步的,為了便于對(duì)midsk集中的mdisk進(jìn)行管理和便于瀏覽mdisk利用率表,則可以將mdisk利用率表中的mdisk進(jìn)行分區(qū)管理,例如,參見圖2所示,將mdisk利用率表按照mdisk剩余空間分為1-4、5-9、10-19、20-49、50+五個(gè)區(qū)間,每個(gè)區(qū)間對(duì)應(yīng)有多個(gè)mdisk,列表中會(huì)顯示mdisk內(nèi)部每個(gè)extent還可以寫多少個(gè)io。
可以理解的是,為了避免大量瑣碎的io持續(xù)不斷的下刷至partition,占用緩存資源,因此,partition接收lowercache利用io的屬性發(fā)送的滿足預(yù)設(shè)大小的相應(yīng)的io。
具體的,lowercache在接收到io后,判斷io的大小是否滿足預(yù)設(shè)大小,如果滿足則,lowercache下刷io至partition,例如,預(yù)設(shè)大小為partition容量的25%,則lowercache判斷當(dāng)前io大小是否滿足partition容量的25%,如果滿足則下刷io至partition。
進(jìn)一步的,partition對(duì)應(yīng)有多個(gè)mdisk集,每個(gè)mdisk集可能同時(shí)收到不同io的下刷任務(wù),為了進(jìn)一步的保證下刷速率,提高緩存利用率,根據(jù)每個(gè)mdisk集下刷的io大小,partition動(dòng)態(tài)的調(diào)整分配給各mdisk集的緩存大小,以提高緩存利用率,提高下刷效率。
具體的,利用io的大小,按照預(yù)設(shè)規(guī)則,將io以預(yù)設(shè)的不同下刷力度下刷至多個(gè)mdisk集中,例如,預(yù)設(shè)規(guī)則包括當(dāng)io大小在partition容量的75%以內(nèi),則以默認(rèn)力度下刷至多個(gè)mdisk集中,當(dāng)io大小在partition容量的75%至85%之間,則以動(dòng)態(tài)力度下刷至多個(gè)mdisk集中,當(dāng)io大小超過partition容量的85%,則以全力力度下刷至多個(gè)mdisk集中;其中,默認(rèn)力度為將partition的緩存平均分配給各mdisk集,動(dòng)態(tài)力度為利用各mdisk集對(duì)應(yīng)的io大小的比例分配partition的緩存,全力力度為partition的緩存全部分配給io大小超過partition容量的85%的mdisk集。
例如,partition的緩存為100m,partition共有兩個(gè)mdisk集,第一mdisk集和第二mdisk集,與第一mdisk集對(duì)應(yīng)的第一io大小為25m,第二mdisk集對(duì)應(yīng)的第二io大小為50m,第一io大小和第二io大小均低于partition容量的75%,則partition以默認(rèn)力度下刷第一io和第二io,第一mdisk集和第二mdisk集各自分配到50m的緩存,當(dāng)?shù)谝籭o大小為25m,第二io大小為80m,則第一io大小與第二io大小的比值為5:16,因此,partition按照5:16將緩存分別分配給第一mdisk集和第二mdisk集,分別為23.8m和76.2m,當(dāng)?shù)谝籭o大小為25m,第二io大小為90m,第二io大小超過partition容量的85%,則以全力力度下刷第二io至第二mdisk集,第二mdisk集分配得到的緩存為100m,第一mdisk集分配得到的緩存為0m。
本發(fā)明實(shí)施例中,利用全條寫的方式,以每個(gè)stripe大小為256k發(fā)送io到后端磁盤,與磁盤存儲(chǔ)單位保持一致,加快下刷速度。
需要說明的是,本發(fā)明中的lowercache為主節(jié)點(diǎn)即ownernode的lowercache,因?yàn)橹鞴?jié)點(diǎn)與從節(jié)點(diǎn)即partnernode之間有鏡像操作,所以當(dāng)主節(jié)點(diǎn)下刷完成時(shí),主節(jié)點(diǎn)發(fā)送下刷完成信息至從節(jié)點(diǎn),以使從節(jié)點(diǎn)釋放其中的io信息。
相應(yīng)的,本發(fā)明實(shí)施例還公開了一種緩存下刷系統(tǒng),參見圖3所示,該系統(tǒng)包括:
接收模塊11,用于接收lowercache利用io的屬性發(fā)送的相應(yīng)的io;
確定模塊12,用于利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集;
下刷模塊13,用于利用midsk集中各mdisk的剩余空間,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值。
可見,本發(fā)明實(shí)施例partition接收lowercache發(fā)送的相應(yīng)的io,并利用io的屬性,確定與io相應(yīng)的midsk集中的mdisk子集,最后partition獲取并利用midsk集中各mdisk的剩余空間,將io根據(jù)mdisk子集的各個(gè)mdisk的剩余空間的動(dòng)態(tài)變化,下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值,以此提高mdisk性能利用率、緩存利用率和緩存下刷效率。
本發(fā)明實(shí)施例中,上述下刷模塊13,可以具體用于利用mdisk利用率表,將io下刷至mdisk子集的各個(gè)mdisk中,以使mdisk子集的各個(gè)mdisk剩余空間滿足預(yù)設(shè)差值;其中,mdisk利用率表記錄有當(dāng)前可用的mdisk和各個(gè)mdisk的剩余空間。
上述接收模塊11,具體用于接收lowercache通過uppercache下刷得到的,并利用io的屬性發(fā)送的相應(yīng)的io。
其中,接收模塊11接收的io為滿足預(yù)設(shè)大小的io。
上述確定模塊12,可以包括列表查找單元和確定單元;其中,
列表查找單元,用于利用io的屬性,在下刷熱度列表中依序查找與io相應(yīng)的vdisk;
確定單元,用于如果在下刷熱度列表中未查找到與io相應(yīng)的vdisk,則在midsk集中查找出與io相應(yīng)的vdisk;
其中,下刷熱度列表中保存有利用歷史io下刷次數(shù),從高到低排序的vdisk順序,其中,vdisk與midsk集中的mdisk子集相對(duì)應(yīng)。
本發(fā)明實(shí)施例中,還可以包括下刷力度模塊;其中,
下刷力度模塊,用于利用io的大小,按照預(yù)設(shè)規(guī)則,將io以預(yù)設(shè)的不同下刷力度下刷至多個(gè)mdisk集中。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種緩存下刷方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。