一種磁盤空間分配法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種磁盤空間分配法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有磁盤空間管理機(jī)制中,常見的分配策略是首先將磁盤空間劃分為定長的大塊空間(extent),再由分配器將extent切分為變長的小塊空間(grain)提供給使用者。
[0003]在長時間使用之后,磁盤空閑空間會逐漸碎片化,此時的空間分配機(jī)制,存在性能和管理效率無法兼顧的問題。
[0004]如優(yōu)先使用碎片空間,可以有效降低分配器需要管理的碎片空間數(shù)量,但會導(dǎo)致分配空間不連續(xù),從而出現(xiàn)寫盤不連續(xù)而影響讀寫性能;
[0005]如優(yōu)先使用連續(xù)空間,可以確保分配空間連續(xù),讀寫性能較好。但會導(dǎo)致碎片化情況嚴(yán)重,碎片空間的持久化及訪問成為性能瓶頸。特別的,如果即將湊成完整extent的空間被使用,會導(dǎo)致一直碎片空間無法合并為完整空間。
[0006]空閑磁盤空間的管理機(jī)制和分配策略,直接影響到對磁盤空間的高效訪問,進(jìn)而影響到整系統(tǒng)的性能。
[0007]在圖1所示的情況,現(xiàn)有技術(shù)中如果優(yōu)先使用該extent的碎片空間,會導(dǎo)致分配出的空間離散,對磁盤讀寫性能有較大影響;但如不使用這些空間,又會導(dǎo)致管理這些碎片的開銷變得極大甚至難以接受。
[0008]如圖1的P2所示的extent,該extent的碎片已經(jīng)較小了,如果此時將該extent的空間分配出去,是可以獲得較好的空間連續(xù)性,但是如果進(jìn)行分配,則會導(dǎo)致原本有較大概率能合并為完整extent歸還給extent管理模塊的空間,將沒有機(jī)會合并成完整extent。從而使得空間一直無法釋放,造成大量的碎片空間在分配器內(nèi)部長期堆積。
【發(fā)明內(nèi)容】
[0009]本發(fā)明實施例提供一種磁盤空間分配法及裝置,用以解決現(xiàn)有空閑磁盤空間的管理機(jī)制和分配策略直接影響到對磁盤空間的高效訪問,進(jìn)而影響到整系統(tǒng)性能的問題。
[0010]第一方面,提供一種磁盤空間分配方法,該方法包括:
[0011]當(dāng)接收到從磁盤中分配小塊空間grain的請求時,確定磁盤的空閑空間中沒有存儲數(shù)據(jù)的完整大塊空間extent的數(shù)量;
[0012]若所述完整大塊空間extent的數(shù)量不小于設(shè)定閾值,則從所述完整的大塊空間extent中分配grain給所述請求;否則,從所述空閑空間中的碎片化空間中分配grain給所述請求。
[0013]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,從所述空閑空間中的碎片化空間中分配grain給所述請求,包括:
[0014]確定每個extent的內(nèi)部離散值;其中,該內(nèi)部離散值用于表示每個extent內(nèi)部空閑空間的碎片化程度;
[0015]根據(jù)所述每個extent的內(nèi)部離散值確定目標(biāo)extent,從該目標(biāo)extent的碎片化空間中分配grain給所述請求。
[0016]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,根據(jù)所述每個extent的內(nèi)部離散值確定目標(biāo)extent,包括:
[0017]檢測所述每個extent中是否有第一 extent的內(nèi)部離散值在設(shè)定的閾值區(qū)間范圍內(nèi),如果有,則確定所述第一 extent為所述目標(biāo)extent ;
[0018]否則,檢測所述每個extent中是否有第二 extent的內(nèi)部離散值大于所述閾值區(qū)間的最大值,如果有,則確定所述第二 extent為所述目標(biāo)extent ;
[0019]如果沒有第一 extent和第二 extent,則檢測所述每個extent中是否有第三extent的內(nèi)部離散值大于所述閾值區(qū)間的最小值,如果有,則確定所述第三extent為所述目標(biāo) extent。
[0020]結(jié)合第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,每個extent的內(nèi)部離散值為:
[0021]每個extent內(nèi)空閑grain總空間大小與extent內(nèi)部空閑grain個數(shù)的比值;或者
[0022]每個extent內(nèi)部空閑grain的數(shù)量絕對值。
[0023]第二方面,提供一種磁盤空間分配裝置,該裝置包括:
[0024]統(tǒng)計模塊,用于當(dāng)接收到從磁盤中分配小塊空間grain的請求時,確定磁盤的空閑空間中沒有存儲數(shù)據(jù)的完整大塊空間extent的數(shù)量;
[0025]分配模塊,用于若所述完整大塊空間extent的數(shù)量不小于設(shè)定閾值,則從所述完整的大塊空間extent中分配grain給所述請求;否則,從所述空閑空間中的碎片化空間中分配grain給所述請求。
[0026]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,分配模塊具體用于確定每個extent的內(nèi)部離散值;其中,該內(nèi)部離散值用于表示每個extent內(nèi)部空閑空間的碎片化程度;根據(jù)所述每個extent的內(nèi)部離散值確定目標(biāo)extent,從該目標(biāo)extent的碎片化空間中分配grain給所述請求。
[0027]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,分配模塊具體用于檢測所述每個extent中是否有第一 extent的內(nèi)部離散值在設(shè)定的閾值區(qū)間范圍內(nèi),如果有,則確定所述第一 extent為所述目標(biāo)extent ;否則,檢測所述每個extent中是否有第二 extent的內(nèi)部離散值大于所述閾值區(qū)間的最大值,如果有,則確定所述第二extent為所述目標(biāo)extent ;如果沒有第一 extent和第二 extent,則檢測所述每個extent中是否有第三extent的內(nèi)部離散值大于所述閾值區(qū)間的最小值,如果有,則確定所述第三extent為所述目標(biāo)extent。
[0028]結(jié)合第二方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,分配模塊具體用于根據(jù)每個extent內(nèi)空閑grain總空間大小與extent內(nèi)部空閑grain個數(shù)的比值;或者每個extent內(nèi)部空閑grain的數(shù)量絕對值確定所述每個extent的內(nèi)部離散值。
[0029]第三方面,提供一種存儲設(shè)備,該存儲設(shè)備包括:
[0030]磁盤;
[0031]處理器,用于在接收到從所述磁盤中分配小塊空間grain的請求時,確定所述磁盤的空閑空間中沒有存儲數(shù)據(jù)的完整大塊空間extent的數(shù)量;若所述完整大塊空間extent的數(shù)量不小于設(shè)定閾值,則從所述完整的大塊空間extent中分配grain給所述請求;否則,從所述空閑空間中的碎片化空間中分配grain給所述請求。
[0032]結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,所述處理器具體用于確定每個extent的內(nèi)部離散值;其中,該內(nèi)部離散值用于表示每個extent內(nèi)部空閑空間的碎片化程度;根據(jù)所述每個extent的內(nèi)部離散值確定目標(biāo)extent,從該目標(biāo)extent的碎片化空間中分配grain給所述請求。
[0033]上述技術(shù)方案中的一個或兩個,至少具有如下技術(shù)效果:
[0034]本發(fā)明實施例所提供的方案,根據(jù)磁盤空間中完整extent的數(shù)量決定為空間分配請求分配完整的extent還是碎片化的空間,在空閑空間多時(即完整extent的數(shù)量足夠分配時),分配完整的extent可以確保分配空間連續(xù),讀寫性能較好;如果磁盤空間在使用一段時間后,碎片化的空間比較多(即完整extent的數(shù)量不足夠分配時),則可以選擇使用碎片空間,從而能夠有效降低分配器需要管理的碎片空間數(shù)量。所以利用該實施例所提供的方法能夠達(dá)到在空閑空間較多時,優(yōu)先使用連續(xù)空間,空閑空間少時,則使用碎片化的空間,則在確保讀寫性能的同時,兼顧到磁盤的讀寫均衡。
【附圖說明】
[0035]圖1為現(xiàn)有技術(shù)中具體場景中extent的使用情況示意圖;
[0036]圖2為本發(fā)明實施例提供的一種磁盤空間分配方法的流程示意圖;
[0037]圖3為本發(fā)明實施例中根據(jù)extent內(nèi)部的碎片化程度進(jìn)行磁盤空間分配的流程示意圖;
[0038]圖4為具體場景中extent的使用情況示意圖;
[0039]圖5為本發(fā)明實施例提供的一種磁盤空間分配裝置的結(jié)構(gòu)示意圖;
[0040]圖6為本發(fā)明實施例提供的另外一種存儲設(shè)備的結(jié)構(gòu)示意圖。
【具體實施方式】
[0041]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]下面結(jié)合附圖對本申請實施例技術(shù)方案的主要實現(xiàn)原理、【具體實施方式】及其對應(yīng)能夠達(dá)到的有益效果進(jìn)行詳