用于回收存儲空間的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明的實施例涉及用于回收存儲空間的方法和系統(tǒng)。特別地,公開了一種用于回收存儲空間的方法,該存儲空間包含多個段。該方法包括:基于預(yù)定的回收需求而確定存儲空間中的目標(biāo)區(qū)域以使得滿足該回收需求的數(shù)據(jù)移動開銷最??;回收該目標(biāo)區(qū)域包含的段;以及更新與該存儲空間相關(guān)聯(lián)的地址映射以保持存儲空間的地址連續(xù)性。還公開了相應(yīng)的系統(tǒng)。根據(jù)本發(fā)明的實施例,允許根據(jù)待回收的存儲空間的當(dāng)前使用狀況來靈活確定回收其中的哪些段。以此方式,可以顯著降低回收操作所導(dǎo)致的數(shù)據(jù)移動開銷,提高存儲空間回收的靈活性和效率。
【專利說明】用于回收存儲空間的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實施例總體上涉及存儲管理,更具體地,涉及用于回收存儲空間的方法和系統(tǒng)。
【背景技術(shù)】
[0002]存儲管理是現(xiàn)代計算技術(shù)中的重要問題。在現(xiàn)代計算機(jī)系統(tǒng)中,存儲系統(tǒng)通常以層級式架構(gòu)實現(xiàn)。用戶數(shù)據(jù)與物理的存儲設(shè)備(例如,磁盤)之間存在一個或多個邏輯和/或物理的層。在層級式存儲架構(gòu)中,卷(volume)是一個重要概念。在此使用的術(shù)語“卷”是指在物理存儲盤上創(chuàng)建的連續(xù)存儲空間。每個物理存儲設(shè)備可以被劃分為多個卷,一個卷也可以跨越多個物理存儲設(shè)備。此外,卷通常被劃分為若干大小相等的單元,稱為“段” (chunk)。
[0003]卷之類的存儲空間的回收是存儲管理中的重要問題之一,它旨在將卷中目前未被使用或者說處于“空閑”狀態(tài)的段回收到系統(tǒng)存儲池中以供再次分配和使用,從而以較為有效的方式來使用存儲空間。以卷為例,在已知的存儲空間回收方案中,總是嘗試從卷的結(jié)尾處回收連續(xù)的段。這種方案可能導(dǎo)致不必要的數(shù)據(jù)移動操作。例如,假設(shè)需要回收卷中包含N個段的一段連續(xù)空間。然而,可以理解,在卷的結(jié)尾處未必具有N個連續(xù)的空閑段。此時,常規(guī)的處理方法是將最后N個段中非空閑的段所存儲的數(shù)據(jù)移動到卷中的其他空閑段,而后回收卷中的這最后N個段。
[0004]本領(lǐng)域技術(shù)人員能夠理解,上述方案在靈活性和性能方面都存在缺陷。例如,這種方法只能從卷尾部處回收空間,沒有實際考慮卷當(dāng)時的使用情況特別是空閑段的分布情況,這種局限性往往會導(dǎo)致過多的數(shù)據(jù)移動。例如,可能在卷的前部或中部存在連續(xù)的N個空閑段。此時,如果回收這N個空閑段,則根本無需進(jìn)行數(shù)據(jù)移動。另外,過多的數(shù)據(jù)搬移勢必帶來更大的磁盤I/O壓力,所以已知的方法通常是離線運行,無法滿足在線存儲系統(tǒng)的需求,而且也降低了系統(tǒng)可用性。
[0005]實際上,上文結(jié)合卷描述的情況不僅僅出現(xiàn)在卷的空間回收中,在很多其他邏輯存儲空間的管理和回收中也存在類似問題。因此,本領(lǐng)域中需要一種更為有效的存儲空間回收方案。
【發(fā)明內(nèi)容】
[0006]鑒于本領(lǐng)域中目前存在的上述問題,本發(fā)明提出一種用于回收存儲空間的方法和系統(tǒng)。
[0007]在本發(fā)明的第一方面,提供一種用于回收存儲空間的方法,其中所述存儲空間包含多個段。所述方法包括:基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最小;回收所述目標(biāo)區(qū)域包含的段;以及更新與所述存儲空間相關(guān)聯(lián)的地址映射以保持所述存儲空間的地址連續(xù)性。
[0008]在本發(fā)明的第二方面,提供一種用于回收存儲空間的系統(tǒng),其中所述存儲空間包含多個段。所述系統(tǒng)包括:確定裝置,配置為用于基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最??;回收裝置,配置為用于回收所述目標(biāo)區(qū)域包含的段;以及更新裝置,配置為用于更新與所述存儲空間相關(guān)聯(lián)的地址映射以保持所述存儲空間的地址連續(xù)性。
[0009]根據(jù)本發(fā)明的實施例,對于任何給定的存儲空間回收需求,允許根據(jù)待回收的存儲空間(例如,卷)的當(dāng)前使用狀況來靈活確定回收其中的哪些段。具體而言,本發(fā)明的實施例可以確保對存儲空間進(jìn)行回收所導(dǎo)致的數(shù)據(jù)移動開銷最小,從而顯著提高存儲空間回收的靈活性和效率。特別地,本發(fā)明的實施例可以利用地址映射機(jī)制確?;厥罩蟮拇鎯臻g的邏輯地址是連續(xù)的。
【專利附圖】
【附圖說明】
[0010]通過參考附圖閱讀下文的詳細(xì)描述,本發(fā)明實施例的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施例,其中:
[0011]圖1示出了根據(jù)本發(fā)明示例性實施例的用于回收存儲空間的方法100的流程圖;
[0012]圖2A和圖2B示出了根據(jù)本發(fā)明示例性實施例的確定目標(biāo)區(qū)域的示意圖;
[0013]圖3示出了根據(jù)本發(fā)明示例性實施例的用于移動目標(biāo)區(qū)域中的非空閑段中數(shù)據(jù)的方法300的流程圖;
[0014]圖4示出了根據(jù)本發(fā)明示例性實施例的在回收目標(biāo)區(qū)域之后的存儲空間的示意圖;
[0015]圖5示出了根據(jù)本發(fā)明示例性實施例的用于擴(kuò)充存儲空間容量的方法500的流程圖;
[0016]圖6示出了根據(jù)本發(fā)明示例性實施例的擴(kuò)充存儲空間容量的示意圖;
[0017]圖7示出了根據(jù)本發(fā)明示例性實施例的用于回收存儲空間的系統(tǒng)700的框圖;以及
[0018]圖8示出了可用來實現(xiàn)本發(fā)明實施例的計算機(jī)系統(tǒng)800的框圖。
[0019]在各個附圖中,相同或?qū)?yīng)的標(biāo)號表不相同或?qū)?yīng)的部分。
【具體實施方式】
[0020]下面將參考附圖中示出的若干示例性實施例來描述本發(fā)明的原理和精神。給出這些實施例僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。
[0021]首先參考圖1,其示出了根據(jù)本發(fā)明示例性實施例的用于回收存儲空間的方法100的流程圖。根據(jù)本發(fā)明的實施例,方法100的實例可以由負(fù)責(zé)管理存儲空間的一方來執(zhí)行,例如,存儲管理器或者存儲管理線程,等等。
[0022]方法100開始之后,在步驟S101,基于預(yù)定的回收需求而確定要回收的存儲空間中的一個目標(biāo)區(qū)域,使得滿足該回收需求的數(shù)據(jù)移動開銷最小。
[0023]根據(jù)本發(fā)明的實施例,要回收的存儲空間可以是卷,或者是任何其他在物理存儲設(shè)備上創(chuàng)建的邏輯存儲區(qū)域。特別地,卷的地址一般而言是連續(xù)的。根據(jù)本發(fā)明的實施例,在回收過程中允許卷的物理地址是不連續(xù)的,但是通過地址映射可以保證其邏輯上的地址連續(xù)性,這還將在下文詳述。
[0024]根據(jù)本發(fā)明的實施例,存儲空間在邏輯上被進(jìn)一步劃分為單元,其大小通常是相等的(在某些情況下這可以不是必須的)。存儲空間所包含的這些單元稱為“段”。每個段在存儲空間中都具有一個起始地址和一個結(jié)尾地址??梢岳斫?,在段的大小相等的情況下,只需要段的起始地址便可以在存儲空間中唯一地標(biāo)識一個段。
[0025]注意,在下文描述中將主要參考“卷”來闡釋本發(fā)明的思想。然而應(yīng)當(dāng)理解,這僅僅是示例性的而非限制性的??梢栽谖锢泶鎯υO(shè)備上創(chuàng)建的邏輯存儲結(jié)構(gòu)均適用于本發(fā)明的實施例。
[0026]根據(jù)本發(fā)明的實施例,“回收需求”可以指示回收的目標(biāo),S卩,要從存儲空間中回收的存儲量。例如,回收需求可以直接指示要回收的段的數(shù)目。備選地,回收需求也可以指示要回收的存儲容量,該存儲容量既可以是數(shù)值,也可以是占整個存儲空間存儲量的比例。此夕卜,根據(jù)本發(fā)明的實施例,回收需求可以由應(yīng)用或者用戶以交互的方式生成,也可以定期生成。本發(fā)明的范圍在這些方面不受限制。
[0027]本文中使用的術(shù)語“目標(biāo)區(qū)域”是存儲空間中所包含的一個子空間,由一個或多個段組成。可以理解,在步驟SlOl處確定的目標(biāo)區(qū)域中所包含的空閑段(即,當(dāng)前未被分配和使用的段)的總存儲容量應(yīng)當(dāng)大于或者等于回收需求中指示的將要回收的存儲容量。如果存儲空間中所有空閑段的存儲容量總和小于回收需求中指示的回收容量,方法100可以返回錯誤指示并且結(jié)束。
[0028]此外,在步驟SlOl處確定的目標(biāo)區(qū)域還應(yīng)當(dāng)使?jié)M足回收需求的數(shù)據(jù)移動開銷最小。這里所說的“數(shù)據(jù)移動開銷”主要是指移動目標(biāo)區(qū)域中的非空閑段(如果存在的話)中存儲的數(shù)據(jù)所產(chǎn)生的時間和資源上的開銷。根據(jù)本發(fā)明的實施例,對于一個確定的待回收目標(biāo)區(qū)域,數(shù)據(jù)移動開銷與諸多因素相關(guān)聯(lián)。一個示例性影響因素是目標(biāo)區(qū)域中包含的空閑段的數(shù)目。具體而言,一個區(qū)域中包含的空閑段越多,回收該區(qū)域的數(shù)據(jù)移動開銷可能越小。特別地,假設(shè)回收需求指示回收N個段(N是自然數(shù)),如果目標(biāo)區(qū)域由多于N個連續(xù)空閑段組成,則滿足回收需求的數(shù)據(jù)移動開銷為零。
[0029]備選地或附加地,影響數(shù)據(jù)移動開銷的另一個因素是目標(biāo)區(qū)域中包含的非空閑段在該目標(biāo)區(qū)域中的分布狀況。例如,本領(lǐng)域技術(shù)人員知道,移動連續(xù)段中存儲的數(shù)據(jù)的開銷通常小于移動不連續(xù)段中存儲的數(shù)據(jù)。因此,如果兩個候選區(qū)域中包含的空閑段數(shù)目相同,則可以選擇非空閑段分布比較連續(xù)或者集中的那個候選區(qū)域作為目標(biāo)區(qū)域。
[0030]應(yīng)當(dāng)理解,上文列舉的僅僅是與數(shù)據(jù)移動開銷相關(guān)的幾個示例性因素。任何其他因素均可以被納入考慮并且與本發(fā)明的實施例結(jié)合使用。本發(fā)明的范圍在此方面不受限制。
[0031]此外,根據(jù)本發(fā)明的某些實施例,可以通過對卷進(jìn)行實際的物理訪問來確定目標(biāo)區(qū)域。備選地,根據(jù)另一些實施例,可以通過訪問段位圖(chunk bitmap)來確定目標(biāo)區(qū)域。在這樣的實施例中,存儲空間(例如,卷)所包含的多個段的使用狀況可以由一個段位圖記錄。例如,段位圖中可以包含用于每個段的字段,用于指示對應(yīng)的段處于使用狀態(tài)(例如,標(biāo)記為邏輯“I”)還是空閑狀態(tài)(例如,標(biāo)記為邏輯“O”)。本領(lǐng)域技術(shù)人員知道,段位圖可以存儲在磁盤上,并且可以在運行時被調(diào)入存儲器以保存在存儲空間中的特定位置。例如,如果存儲空間是卷,則卷位圖可以保存在卷頭部中。術(shù)語“卷頭部”表示卷中用于存儲元數(shù)據(jù)的固定區(qū)域,它通常是位于卷首的固定區(qū)域。上層應(yīng)用通常不直接訪問或者分配卷頭部,而且卷頭部不會被回收。
[0032]此時,在步驟S102處,可以訪問段位圖以獲得存儲空間的空閑段分布狀況;并且基于回收需求和空閑段分布狀況來確定使數(shù)據(jù)移動開銷最小化的目標(biāo)區(qū)域。參考圖2A討論一個具體示例。在圖2A所示的示例中,假設(shè)要回收的卷總計包含20個段(編號1-20,其中“H”表示卷頭部,不用于存儲數(shù)據(jù)),并且空閑段為13個(位圖中相應(yīng)的位被設(shè)置為“O”)。當(dāng)回收需求只是要回收卷容量的25% (即,5個段)時,通過從卷的尾部開始訪問位圖,以確定至少包括5個段的目標(biāo)區(qū)域。首先掃描的候選區(qū)域可以是段16至20組成的區(qū)域,該區(qū)域的數(shù)據(jù)移動開銷為I。繼續(xù)掃描發(fā)現(xiàn):段14至18組成的區(qū)域的數(shù)據(jù)移動開銷最小(都是空閑段,無需移動數(shù)據(jù))。由此,可以將這個區(qū)域確定為目標(biāo)區(qū)域,如圖2A中的框所示。
[0033]可以想到,一種可能出現(xiàn)的情況是:存儲空間(例如,卷)中可能具有多個候選區(qū)域使?jié)M足回收需求的數(shù)據(jù)移動開銷最小化。在這種情況下,根據(jù)本發(fā)明的某些實施例,可以選擇結(jié)尾地址最接近存儲空間的結(jié)尾地址的那個候選區(qū)域作為要回收的目標(biāo)區(qū)域??梢岳斫猓@里所說的存儲空間的結(jié)尾地址是指該存儲空間中包含的最后一段的結(jié)尾地址。
[0034]考慮圖2B所示的示例,類似于圖2A,仍然假設(shè)要回收的卷總計包含20個段,其中空閑段為13個。當(dāng)回收需求中指示的回收目標(biāo)是卷容量的50% (S卩,10個段)時,至少存在兩個候選區(qū)間同時滿足最小數(shù)據(jù)移動開銷,即,由段10至19構(gòu)成的區(qū)域I以及由段11至20構(gòu)成的區(qū)域2。此時,因為區(qū)域2更接近整個存儲空間(卷)的結(jié)尾,因此選擇區(qū)域2作為目標(biāo)區(qū)域。
[0035]選擇盡量“靠后”的區(qū)域作為目標(biāo)區(qū)域是有益的。首先,如下文所述,為了保持回收后的存儲空間的地址連續(xù)性,需要對段的地址映射進(jìn)行更新,而這種更新通常只涉及目標(biāo)區(qū)域之后的段。因此,目標(biāo)區(qū)域越接近整個存儲空間的結(jié)尾,受到影響的段就越少。另一方面,這種選擇目標(biāo)區(qū)域的策略對于卷的容量擴(kuò)充也是有利的,這還將在下文詳述。
[0036]應(yīng)當(dāng)理解,當(dāng)具有使數(shù)據(jù)移動開銷最小化的不止一個候選區(qū)域時,可以備選地或附加地采用任何其他策略從中選擇一個作為目標(biāo)區(qū)域。例如,隨機(jī)選擇是一種可行的策略。本發(fā)明的范圍在此方面不受限制。
[0037]接下來,方法100進(jìn)行到步驟S102,在此回收在步驟SlOl處選定的目標(biāo)區(qū)域中包含的段。如上所述,目標(biāo)區(qū)域中可能只包含空閑段。在這種情況下,直接回收該目標(biāo)區(qū)域中包含的所有段即可。此時,與回收相關(guān)聯(lián)的數(shù)據(jù)移動開銷為零。在此使用的術(shù)語“回收”可以包括將空閑段返回給系統(tǒng)存儲池以便再次分配和使用。
[0038]另一方面,如果目標(biāo)區(qū)域中包含任何非空閑段,則在步驟S102,將目標(biāo)區(qū)域中的每個非空閑段中存儲的數(shù)據(jù)移動到存儲空間中位于目標(biāo)區(qū)域之外的空閑段中。特別地,根據(jù)某些實施例,可以首先嘗試將目標(biāo)區(qū)域中的非空閑段中存儲的數(shù)據(jù)移動到存儲空間中的、起始地址小于目標(biāo)區(qū)域的起始地址的空閑段,即,目標(biāo)區(qū)域“之前”的空閑段。當(dāng)這種嘗試失敗,說明目標(biāo)區(qū)域之前的空閑段已經(jīng)被填滿。響應(yīng)于此,可以將目標(biāo)區(qū)域中的剩余非空閑段中存儲的數(shù)據(jù)移動到目標(biāo)區(qū)域之后的空閑段中,即,起始地址大于目標(biāo)區(qū)域結(jié)尾地址的那些空閑段。[0039]參考圖3,其具體描述了根據(jù)此類實施例的用于移動目標(biāo)區(qū)域的非空閑段的方法300的框圖??梢岳斫?,方法300可以被認(rèn)為是方法100中的步驟S102的一種特定實現(xiàn)。
[0040]方法300開始之后,在步驟S301,根據(jù)訪問索引訪問目標(biāo)區(qū)域中的一個段。在方法300的初始迭代中,訪問索引可以指向目標(biāo)區(qū)域中的第一個段。
[0041]接下來,方法300進(jìn)行到步驟S302,判斷訪問的段是否為空閑段。如果是,則方法300進(jìn)行到步驟S303,在此判斷當(dāng)前段是否為目標(biāo)區(qū)域中的最后一個段。如果是,則方法300結(jié)束。否則,方法300進(jìn)行到步驟S304,在此遞增訪問索引以指向當(dāng)前段的下一段。方法300接下來返回到步驟S301以迭代執(zhí)行。
[0042]另一方面,如果在步驟S302判斷當(dāng)前訪問的段為非空閑段,則方法300進(jìn)行到步驟S305以確定在目標(biāo)區(qū)域之前是否存在空閑段。如果存在,則在步驟S306處,將目標(biāo)區(qū)域中當(dāng)前訪問的段中的數(shù)據(jù)移動到目標(biāo)區(qū)域之前的一個空閑段,并且方法300繼而進(jìn)行到步驟S303。反之,如果在步驟S305確定目標(biāo)區(qū)域之前已經(jīng)不存在空閑段,則方法300進(jìn)行到步驟S307,在此將目標(biāo)區(qū)域中當(dāng)前訪問的段中的數(shù)據(jù)移動到目標(biāo)區(qū)域之后的一個空閑段。方法300繼而進(jìn)行到步驟S303。
[0043]在迭代執(zhí)行以遍歷了目標(biāo)區(qū)域中包含的所有段之后,方法300結(jié)束。
[0044]方法300所示的實施例是有益的,因為目標(biāo)區(qū)域“之后”的段需要在回收之后變更地址映射。通過將目標(biāo)區(qū)域中的非空閑段中存儲的數(shù)據(jù)盡量移動到目標(biāo)區(qū)域之前的空閑段,可以簡化后續(xù)地址映射變更的操作。當(dāng)然,應(yīng)當(dāng)注意,這并不是必須的。也可以首先向目標(biāo)區(qū)域之后的空閑段移動數(shù)據(jù),或者隨機(jī)選擇空閑段。本發(fā)明的范圍在此方面不受限制。
[0045]返回圖1,在執(zhí)行步驟S102之后,目標(biāo)區(qū)域中包含的所有段被回收,不再屬于當(dāng)前存儲空間(例如,卷)。相應(yīng)地,存儲空間的容量被縮減。如圖4所示,在回收先前由段8-17構(gòu)成的目標(biāo)區(qū)域之后,該目標(biāo)區(qū)域先前所對應(yīng)的地址空間成為“空洞”。
[0046]注意,在步驟S102回收目標(biāo)區(qū)域之后,通常還需要更新與目標(biāo)區(qū)域中的段相對應(yīng)的元數(shù)據(jù)。例如,可以更新段的地址映射關(guān)系(例如由存儲管理進(jìn)程維護(hù)),以便及時反映出該數(shù)據(jù)塊的變化,從而保持?jǐn)?shù)據(jù)一致性。此外,還可以在日志中記錄重要數(shù)據(jù)的改變歷史,以便系統(tǒng)故障時恢復(fù)。而且,在步驟S102執(zhí)行過程中,可能需要暫時屏蔽或者掛起針對有關(guān)段的輸入/輸出(I/O)請求。這些都是本領(lǐng)域技術(shù)人員知道的,在此不再贅述。
[0047]接下來,方法100進(jìn)行到步驟S103,在此更新與存儲空間相關(guān)聯(lián)的地址映射,以保持存儲空間的地址連續(xù)性。對于卷之類的存儲空間,其物理地址通常是連續(xù)的。然而如上所述,根據(jù)本發(fā)明的實施例,當(dāng)回收目標(biāo)區(qū)域所導(dǎo)致的地址空間空洞不在存儲空間結(jié)尾處時,存儲空間的物理地址會變得不再連續(xù)。
[0048]在步驟S103處,采用地址映射更新機(jī)制對地址空間的空洞進(jìn)行補(bǔ)償。根據(jù)本發(fā)明的某些實施例,在步驟S103處,通過以下方式來實現(xiàn)地址映射更新。一方面,保持起始地址小于目標(biāo)區(qū)域起始地址的段的地址映射不變??梢岳斫?,這里所說的目標(biāo)區(qū)域的起始地址等于該目標(biāo)區(qū)域中的第一個段的起始地址。另一方面,對于那些起始地址大于目標(biāo)區(qū)域的結(jié)尾地址的段,則為其設(shè)置適當(dāng)?shù)牡刂酚成淦屏俊?br>
[0049]特別地,根據(jù)這樣的實施例,存儲空間可以與一個段映射表(Chunk Map Table,CMT)相關(guān)聯(lián),映射表的每個條目對應(yīng)于一個段,用于支持段的邏輯地址與物理地址之間的轉(zhuǎn)換。通過利用CMT,可以確保目標(biāo)區(qū)域回收所導(dǎo)致的地址空間空洞對于上層應(yīng)用是透明的。換言之,盡管存儲空間的物理地址不再連續(xù),但是從上層應(yīng)用的角度看,其邏輯地址仍然是連續(xù)的,從而確保上層應(yīng)用對存儲空間的使用不受影響。
[0050]參考表1示出的示例性CMT描述一個具體示例。CMT的每個條目具有“段編號”字段,用于表示段。特別地,卷首的段不用于存儲用戶數(shù)據(jù),因而編號特殊(例如,“H”)。CMT的每個條目還包括“偏移量”字段,用于指示相應(yīng)的段由于目標(biāo)區(qū)域回收操作的影響在尋址時所需的地址映射偏移。每個段的初始偏移量被設(shè)置為零。
[
【權(quán)利要求】
1.一種用于回收存儲空間的方法,所述存儲空間包含多個段,所述方法包括: 基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最?。? 回收所述目標(biāo)區(qū)域包含的段;以及 更新與所述存儲空間相關(guān)聯(lián)的地址映射以保持所述存儲空間的地址連續(xù)性。
2.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)移動開銷與以下至少一個相關(guān)聯(lián): 所述目標(biāo)區(qū)域中包含的空閑段的數(shù)目;以及 所述目標(biāo)區(qū)域中包含的非空閑段在所述目標(biāo)區(qū)域中的分布狀況。
3.根據(jù)權(quán)利要求1所述的方法,其中所述存儲空間中的所述多個段的使用狀況由段位圖記錄,并且其中基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最小包括: 訪問所述段位圖以獲得所述存儲空間的空閑段分布狀況;以及 基于所述回收需求和所述空閑段分布狀況來確定所述目標(biāo)區(qū)域。
4.根據(jù)權(quán)利要求1所述的方法,其中基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最小包括: 如果所述存儲空間中具有多個候選區(qū)域使得所述數(shù)據(jù)移動開銷最小,選擇結(jié)尾地址最接近所述存儲空間的結(jié)尾地址的候選區(qū)域作為所述目標(biāo)區(qū)域。
5.根據(jù)權(quán)利要求1所述的方法,其中回收所述目標(biāo)區(qū)域包含的段包括: 如果所述目標(biāo)區(qū)域中包含非空閑段,將所述目標(biāo)區(qū)域中的每個非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中位于所述目標(biāo)區(qū)域之外的空閑段。
6.根據(jù)權(quán)利要求5所述的方法,其中將所述目標(biāo)區(qū)域中的每個非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中位于所述目標(biāo)區(qū)域之外的空閑段包括: 將所述目標(biāo)區(qū)域中的非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中的、起始地址小于所述目標(biāo)區(qū)域的起始地址的空閑段;以及 如果所述目標(biāo)區(qū)域中存在剩余非空閑段,將所述剩余非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中的、起始地址大于所述目標(biāo)區(qū)域的結(jié)尾地址的空閑段。
7.根據(jù)權(quán)利要求1所述的方法,其中更新與所述存儲空間相關(guān)聯(lián)的地址映射以保持所述存儲空間的地址連續(xù)性包括: 保持起始地址小于所述目標(biāo)區(qū)域的起始地址的段的地址映射不變;以及 為起始地址大于所述目標(biāo)區(qū)域的結(jié)尾地址的段的設(shè)置地址映射偏移量。
8.根據(jù)權(quán)利要求1所述的方法,還包括通過向所述存儲空間分配附加段來擴(kuò)充所述存儲空間的容量,所述擴(kuò)充包括: 將所述附加段分配到所述存儲空間中與先前回收的所述目標(biāo)區(qū)域相對應(yīng)的地址空間;以及 如果存在未分配的剩余附加段,將所述剩余附加段分配到所述存儲空間的結(jié)尾地址之后的地址空間; 其中與所述存儲空間相關(guān)聯(lián)的所述地址映射響應(yīng)于所述擴(kuò)充而被更新。
9.根據(jù)權(quán)利要求8所述的方法,其中所述附加段作為單個存儲子空間而被維護(hù)。
10.根據(jù)權(quán)利要求1-9任一項所述的方法,其中所述存儲空間是卷。
11.一種用于回收存儲空間的系統(tǒng),所述存儲空間包含多個段,所述系統(tǒng)包括: 確定裝置,配置為用于基于預(yù)定的回收需求而確定所述存儲空間中的目標(biāo)區(qū)域以使得滿足所述回收需求的數(shù)據(jù)移動開銷最??; 回收裝置,配置為用于回收所述目標(biāo)區(qū)域包含的段;以及 更新裝置,配置為用于更新與所述存儲空間相關(guān)聯(lián)的地址映射以保持所述存儲空間的地址連續(xù)性。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述數(shù)據(jù)移動開銷與以下至少一個相關(guān)聯(lián): 所述目標(biāo)區(qū)域中包含的空閑段的數(shù)目;以及 所述目標(biāo)區(qū)域中包含的非空閑段在所述目標(biāo)區(qū)域中的分布狀況。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述存儲空間中的所述多個段的使用狀況由段位圖記錄,并且其中所述確定裝置包括: 位圖訪問裝置,配置為用于訪問所述段位圖以獲得所述存儲空間的空閑段分布狀況;以及 第一確定裝置,配置為用于基于所述回收需求和所述空閑段分布狀況來確定所述目標(biāo)區(qū)域。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述確定裝置包括:` 第二確定裝置,配置為用于在所述存儲空間中具有多個候選區(qū)域使得所述數(shù)據(jù)移動開銷最小的情況下,選擇結(jié)尾地址最接近所述存儲空間的結(jié)尾地址的候選區(qū)域作為所述目標(biāo)區(qū)域。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述回收裝置包括: 數(shù)據(jù)移動裝置,配置為用于在所述目標(biāo)區(qū)域中包含非空閑段的情況下,將所述目標(biāo)區(qū)域中的每個非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中位于所述目標(biāo)區(qū)域之外的空閑段。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述數(shù)據(jù)移動裝置包括: 第一移動裝置,配置為用于嘗試將所述目標(biāo)區(qū)域中的非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中的、起始地址小于所述目標(biāo)區(qū)域的起始地址的空閑段;以及 第二移動裝置,配置為用于在所述目標(biāo)區(qū)域中還存在剩余非空閑段的情況下,將所述剩余非空閑段中存儲的數(shù)據(jù)移動到所述存儲空間中的、起始地址大于所述目標(biāo)區(qū)域的結(jié)尾地址的空閑段。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述更新裝置包括: 第一更新裝置,配置為用于保持起始地址小于所述目標(biāo)區(qū)域的起始地址的段的地址映射不變;以及 第二更新裝置,配置為用于為起始地址大于所述目標(biāo)區(qū)域的結(jié)尾地址的段的設(shè)置地址映射偏移量。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括擴(kuò)充裝置,配置為用于通過向所述存儲空間分配附加段來擴(kuò)充所述存儲空間的容量,所述擴(kuò)充裝置包括: 第一分配裝置,配置為用于將所述附加段分配到所述存儲空間中與先前回收的所述目標(biāo)區(qū)域相對應(yīng)的地址空間;以及 第二分配裝置,配置為用于在存在未分配的剩余附加段的情況下,將所述剩余附加段分配到所述存儲空間的結(jié)尾地址之后的地址空間; 并且其中所述更新裝置配置為用于響應(yīng)于所述擴(kuò)充而更新與所述存儲空間相關(guān)聯(lián)的所述地址映射。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述附加段作為單個存儲子空間而被維護(hù)。
20.根據(jù)權(quán)利要求11-19任一項所述的`系統(tǒng),其中所述存儲空間是卷。
【文檔編號】G06F12/02GK103514098SQ201210236447
【公開日】2014年1月15日 申請日期:2012年6月29日 優(yōu)先權(quán)日:2012年6月29日
【發(fā)明者】趙軍平 申請人:伊姆西公司