專利名稱:一種磁盤空間管理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)領(lǐng)域,尤其涉及對(duì)磁盤空間進(jìn)行管理的方法及系統(tǒng)。
背景技術(shù):
伙伴(Buddy)算法是Linux下的一種內(nèi)存管理算法,只能分配2n字節(jié)的空間塊,n≥12(即至少是4kb)。空間塊之間的關(guān)系可由圖1的二叉樹表示,除了葉子,每塊都可以拆半分裂成兩塊以供分配,回收的兩塊相鄰兄弟空閑塊可以合并成其父結(jié)點(diǎn)-更大的空閑塊。由于塊與地址空間有一一對(duì)應(yīng)關(guān)系,所以其相鄰結(jié)點(diǎn)的位置確定而且唯一,父結(jié)點(diǎn)也確定而唯一。例如512MB塊的地址一定是0、512M、1024M,1536M,其中0與512M是相鄰結(jié)點(diǎn),其父結(jié)點(diǎn)的地址是0?;锇樗惴ǖ膬?yōu)點(diǎn)是由于空閑結(jié)點(diǎn)可以很方便的合并成更大的空閑塊,所以不會(huì)產(chǎn)生不可回收碎片。
在利用伙伴算法進(jìn)行內(nèi)存空間管理時(shí),由兩部分結(jié)構(gòu)來保存分配回收信息,這兩部分都是內(nèi)存結(jié)構(gòu)。參見圖1,空閑隊(duì)列用于將空閑塊分類組織起來,便于分配空間,當(dāng)所需的長(zhǎng)度沒有時(shí),則向下查找更大的空閑塊以分裂出所需空間。右邊的二叉樹表示了所有結(jié)點(diǎn)的占用關(guān)系與鄰接關(guān)系,由其可方便的查找一個(gè)回收空閑塊其相鄰結(jié)點(diǎn)的占用情況,便于遞歸向上合并空閑結(jié)點(diǎn),產(chǎn)生更大的空閑塊-父結(jié)點(diǎn)。
磁盤數(shù)據(jù)文件通常有兩種,一種是格式固定,不能動(dòng)態(tài)改變或是改變時(shí)不能回收空閑的空間,不具備磁盤空間管理能力。另一種有分配回收的普通空間管理能力。
如圖2所示,普通空間管理通常的做法是將未占用空間分配成固定大小的塊和同類大小的塊,回收時(shí)通過鏈?zhǔn)酱饋沓蔀閷?duì)應(yīng)塊長(zhǎng)度的空閑隊(duì)列。但通常為了更好的使用空間,可以支持若干種大小的分配,每種大小都形成一個(gè)空閑隊(duì)列,空閑隊(duì)列用光,則從未占用空間分配對(duì)應(yīng)大小。由于結(jié)點(diǎn)不分裂,故不可能有非常大的結(jié)點(diǎn)類型,對(duì)某些數(shù)據(jù)流的保存(比如長(zhǎng)度達(dá)到某級(jí)別),通常只能以物理上鏈?zhǔn)街羔榿肀4姹磉_(dá)。
在上述普通磁盤空間管理方案中,由于考慮到磁盤讀取效率,不能合并回收的空閑塊,所以每種回收隊(duì)列的長(zhǎng)度都與歷史峰值有關(guān),即使大小支持的種類分得細(xì),也不能有效提高利用率。同時(shí),對(duì)于某些數(shù)據(jù)流的鏈?zhǔn)浇Y(jié)構(gòu)表達(dá),由于其不連續(xù),在I/O(輸入/輸出)時(shí)需要開銷額外的時(shí)間用于磁頭重定位。操作系統(tǒng)對(duì)簇進(jìn)行操作時(shí)需要讀取比較多的無用信息,或是由于結(jié)點(diǎn)跨簇,從而開銷更多的簇操作單位,降低了磁盤的I/O性能。另外,由于每塊的位置都不一致,無法支持?jǐn)?shù)據(jù)的災(zāi)難恢復(fù),需要對(duì)數(shù)據(jù)進(jìn)行額外備份。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的在于提供一種磁盤空間管理方法,旨在解決現(xiàn)有技術(shù)中存在的在磁盤管理過程中空閑塊無法回收,I/O性能較低且需要額外的資源進(jìn)行災(zāi)難恢復(fù)的問題。
本發(fā)明的另一個(gè)目的在于提供一種磁盤空間管理系統(tǒng)。
本發(fā)明是這樣實(shí)現(xiàn)的一種磁盤空間管理方法,所述方法包括下述步驟A.設(shè)置位圖二叉樹表,用于記錄空間塊的地址、使用狀態(tài)及空間塊之間的父子關(guān)系;B.利用所述位圖二叉樹表對(duì)空間塊進(jìn)行分配和回收。
所述步驟B進(jìn)一步包括當(dāng)數(shù)據(jù)輸入磁盤時(shí),查找所述位圖二叉樹表,分配與存儲(chǔ)所述數(shù)據(jù)的空間塊;當(dāng)數(shù)據(jù)輸出磁盤時(shí),回收對(duì)應(yīng)的空閑空間塊;根據(jù)空間塊的分配或者回收狀態(tài)更新所述位圖二叉樹表,保持所述位圖二叉樹表的結(jié)構(gòu)與磁盤空間的使用狀態(tài)一致。
所述方法進(jìn)一步包括C.將所述位圖二叉樹表映射到內(nèi)存,將空間管理的磁盤操作轉(zhuǎn)換為內(nèi)存操作。
所述方法進(jìn)一步包括D.在發(fā)生災(zāi)難時(shí),恢復(fù)所述位圖二叉樹表。
所述步驟D進(jìn)一步包括D1.設(shè)置磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志;D2.根據(jù)所述磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志是否同步判斷是否發(fā)生災(zāi)難,當(dāng)判斷發(fā)生災(zāi)難時(shí),掃描磁盤空間,根據(jù)磁盤空間的實(shí)際使用狀態(tài)遍歷所述位圖二叉樹表,對(duì)所述位圖二叉樹表進(jìn)行結(jié)構(gòu)更新。
一種磁盤空間管理系統(tǒng),所述系統(tǒng)包括對(duì)外接口模塊,用于接收外部輸入的數(shù)據(jù),或者將磁盤保存的數(shù)據(jù)對(duì)外輸出;數(shù)據(jù)讀寫模塊,用于將所述對(duì)外接口模塊接收的數(shù)據(jù)寫入磁盤,或者將磁盤保存的數(shù)據(jù)通過所述對(duì)外接口模塊輸出;位圖二叉樹表管理模塊,用于設(shè)置位圖二叉樹表,并利用所述位圖二叉樹表對(duì)空間塊進(jìn)行分配和回收;所述位圖二叉樹表用于記錄空間塊的地址、使用狀態(tài)及空間塊之間的父子關(guān)系。
所述系統(tǒng)進(jìn)一步包括內(nèi)存鏡像映射模塊,用于將所述位圖二叉樹表映射到內(nèi)存,將空間管理的磁盤操作轉(zhuǎn)換為內(nèi)存操作。
所述系統(tǒng)進(jìn)一步包括災(zāi)難標(biāo)志管理模塊,用于設(shè)置磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志;災(zāi)難恢復(fù)管理模塊,用于根據(jù)所述磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志是否同步判斷是否發(fā)生災(zāi)難,當(dāng)判斷發(fā)生災(zāi)難時(shí),掃描磁盤空間,根據(jù)磁盤空間的實(shí)際使用狀態(tài)遍歷所述位圖二叉樹表,對(duì)所述位圖二叉樹表進(jìn)行結(jié)構(gòu)更新。
采用本發(fā)明進(jìn)行磁盤空間管理時(shí),除正常的分配回收能力外,具有最佳的磁盤I/O性能。同時(shí),空間可快速合并,形成大的可閑塊,利用率高,不會(huì)產(chǎn)生碎片。另外,具有良好的數(shù)據(jù)災(zāi)難恢復(fù)能力,且不需要占用額外的資源。
圖1是伙伴(Buddy)算法中的二叉樹結(jié)構(gòu)示意圖;圖2是現(xiàn)有技術(shù)中提供的普通磁盤空間管理的實(shí)現(xiàn)示意圖;圖3是本發(fā)明提供的磁盤管理文件的結(jié)構(gòu)圖;圖4是本發(fā)明提供的位圖二叉樹表的結(jié)構(gòu)示意圖;圖5是本發(fā)明提供的磁盤空間分裂和回收的實(shí)現(xiàn)示意圖;圖6是在本發(fā)明中的簇組成示意圖;圖7是本發(fā)明提供的初始化過程中的災(zāi)難恢復(fù)的實(shí)現(xiàn)流程圖;圖8是本發(fā)明中磁盤運(yùn)行期的動(dòng)態(tài)輸入輸出時(shí)的位圖二叉樹表更新示意圖;圖9是本發(fā)明提供的磁盤管理系統(tǒng)的組成結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明將伙伴算法對(duì)于內(nèi)存空間管理應(yīng)用于磁盤空間管理,在解決其引入磁盤空間管理帶來的問題基礎(chǔ)上,利用其特點(diǎn)提供了性能良好、安全而有災(zāi)難恢復(fù)能力的磁盤空間管理方案,由于結(jié)點(diǎn)位置固定,而且其中沒有鏈?zhǔn)街羔?,不全因指針?shù)據(jù)不同步而產(chǎn)生結(jié)構(gòu)錯(cuò)誤。
在本發(fā)明中,首先將磁盤管理文件寫入到磁盤中,圖3示出了磁盤管理文件的結(jié)構(gòu),包括災(zāi)難標(biāo)志、位圖二叉樹表以及正文,災(zāi)難標(biāo)志、位圖二叉樹表為磁盤管理文件的Header(頭部)部分。其中,位圖二叉樹表用來記錄磁盤空間中結(jié)點(diǎn)(空間塊)的大小以及使用情況,當(dāng)數(shù)據(jù)寫入磁盤或者數(shù)據(jù)被刪除時(shí),相應(yīng)結(jié)點(diǎn)被分配或者回收,位圖二叉樹表的結(jié)構(gòu)將發(fā)生更新。正文是用來分配裝載數(shù)據(jù)的磁盤空間。災(zāi)難標(biāo)志用來標(biāo)識(shí)磁盤管理文件是否處于災(zāi)難狀態(tài),以判斷是否進(jìn)行災(zāi)難恢復(fù)。
本發(fā)明使用位圖二叉樹表來同時(shí)表達(dá)伙伴算法中的空閑回收隊(duì)列與二叉樹結(jié)構(gòu),如圖4所示。位圖的下標(biāo)之間的關(guān)系反映了如同二叉樹的結(jié)點(diǎn)父子關(guān)系,以位圖的值的0與1表示結(jié)點(diǎn)的占用狀態(tài),該位圖二叉樹表占用磁盤空間的前64KB。由位圖二叉樹表的位圖下標(biāo),可得知某結(jié)點(diǎn)的相鄰結(jié)點(diǎn)的位置與使用情況,也可知某種長(zhǎng)度的結(jié)點(diǎn)所對(duì)應(yīng)的位圖下標(biāo)上下限。因此,當(dāng)數(shù)據(jù)寫入磁盤需要分配空間時(shí),可先于該范圍內(nèi)查找空閑結(jié)點(diǎn),如果找不到則遞歸向更大結(jié)點(diǎn)的位圖下標(biāo)上下限內(nèi)查找空閑塊,以分裂產(chǎn)生所需的空間塊。當(dāng)需要對(duì)空閑結(jié)點(diǎn)進(jìn)行回收時(shí),由位圖可以確定相鄰結(jié)點(diǎn)的占用狀態(tài),并遞歸向上合并結(jié)點(diǎn),如圖5所示。
如果直接操作磁盤上的位圖二叉樹表,會(huì)由于磁盤I/O造成性能下降,本發(fā)明將該位圖二叉樹表映射到內(nèi)存成為一個(gè)鏡像,由于磁盤管理文件映射同步到磁盤的操作,會(huì)自動(dòng)發(fā)生在磁盤管理文件映射關(guān)閉時(shí)由操作系統(tǒng)處理,所以使用時(shí)只需操作內(nèi)存鏡像,相當(dāng)于純內(nèi)存操作,參見圖4。
上述方案除了具有伙伴算法在磁盤空間管理上無碎片的優(yōu)點(diǎn)外,還具有如下優(yōu)點(diǎn)第一、每塊空間都是連續(xù)的,對(duì)任意長(zhǎng)度的數(shù)據(jù),理論上只需開銷一次磁頭定位,有物理磁盤級(jí)最高的I/O性能,實(shí)際上與數(shù)據(jù)在物理磁盤上是否連續(xù)有關(guān),但依然有最低的磁頭定位次數(shù);第二、伙伴算法的空間分裂方式與機(jī)器的二進(jìn)制相同,所以很容易可以做到所有塊都簇對(duì)齊。操作系統(tǒng)通常以簇I/O最小操作單元(NTFS的簇為4KB,F(xiàn)AT32為2KB的倍數(shù),Linux下稱為塊,默認(rèn)大小是1KB)來管理文件,簇(塊)大小通常為2n,對(duì)于文件會(huì)分配若干個(gè)簇用于存放其數(shù)據(jù),又由于伙伴算法中的空間塊都是這些簇(塊)的倍數(shù),不影響簇對(duì)齊關(guān)系,所以可以斷言,所有塊的起始地址都位于某簇的起始位置,因此每次操作都只作用于最少的操作系統(tǒng)操作單位(簇),如圖6所示,這樣就會(huì)具有最高的磁盤與操作系統(tǒng)操作性能。
在本發(fā)明中,由于通過位圖二叉樹表來實(shí)現(xiàn)磁盤空間的管理,因此位圖二叉樹表的數(shù)據(jù)安全必須的,包括數(shù)據(jù)安全訪問驗(yàn)證與數(shù)據(jù)災(zāi)難恢復(fù)。
實(shí)現(xiàn)數(shù)據(jù)安全訪問驗(yàn)證時(shí)可以在使用的結(jié)點(diǎn)前部預(yù)留若干字節(jié),用于保存驗(yàn)證信息以區(qū)別于空閑結(jié)點(diǎn)。在訪問時(shí),可以通過驗(yàn)證信息確定該結(jié)點(diǎn)狀態(tài)是否正常、是否可以正常使用,避免分配已使用的結(jié)點(diǎn)或是回收本來就空閑的結(jié)點(diǎn)。在本發(fā)明中,驗(yàn)證信息除了表示結(jié)點(diǎn)的使用狀態(tài)外,還表示此結(jié)點(diǎn)的大小,實(shí)現(xiàn)可由結(jié)點(diǎn)大小與結(jié)點(diǎn)地址等信息來產(chǎn)生唯一的安全訪問驗(yàn)證碼。
在本發(fā)明中,除了位圖二叉數(shù)表是緩存性質(zhì)外,所有操作都作用于物理磁盤,所以災(zāi)難只會(huì)影響到該位圖二叉樹表,只可能產(chǎn)生位圖二叉數(shù)表的不正確,因此數(shù)據(jù)災(zāi)難恢復(fù)可以只針對(duì)位圖二叉樹表來做。
對(duì)于因程序異常關(guān)閉引起的災(zāi)難,由于位圖二叉數(shù)表使用了磁盤文件映射,操作系統(tǒng)維持鏡像與磁盤文件的對(duì)應(yīng)關(guān)系,即使程序異常關(guān)閉,也會(huì)由操作系統(tǒng)來保持維護(hù)位圖二叉樹表的同步,因此對(duì)于該種災(zāi)難無需恢復(fù)。
對(duì)于因系統(tǒng)崩潰或磁盤物理崩潰引起的災(zāi)難,在本發(fā)明的一個(gè)實(shí)施例中,通過如下方式解決在磁盤管理文件頭部設(shè)置災(zāi)難標(biāo)志,系統(tǒng)啟動(dòng)時(shí)將該災(zāi)難標(biāo)志連同位圖二叉樹表一起通過磁盤管理文件映射加載到內(nèi)存,然后通過磁盤管理文件映射,將磁盤上的磁盤管理文件的災(zāi)難標(biāo)志設(shè)置為“災(zāi)難發(fā)生”,而將其內(nèi)存鏡像的災(zāi)難標(biāo)志設(shè)置為“無災(zāi)難”,人為產(chǎn)生不同步,這樣就可通過兩者是否同步來辨認(rèn)災(zāi)難是否發(fā)生。當(dāng)?shù)谝环N災(zāi)難發(fā)生時(shí),操作系統(tǒng)會(huì)維持兩者同步,所以磁盤管理文件的災(zāi)難標(biāo)志會(huì)更新為“無災(zāi)難”,故對(duì)該種災(zāi)難不會(huì)產(chǎn)生誤判。當(dāng)?shù)诙N災(zāi)難發(fā)生時(shí),此時(shí)鏡像無法被同步回磁盤,由于數(shù)據(jù)安全訪問驗(yàn)證時(shí),結(jié)點(diǎn)的驗(yàn)證信息除了表明結(jié)點(diǎn)是否使用的狀態(tài)外,還表達(dá)了其大小,而且伙伴算法中每種類型的結(jié)點(diǎn)的地址都固定,只需以最小結(jié)點(diǎn)的長(zhǎng)度4K為掃描間隔,對(duì)磁盤空間進(jìn)行一次掃描,就可以遍歷二叉樹的所有結(jié)點(diǎn),以糾正位圖二叉樹的值(所有結(jié)點(diǎn)的起始位置都簇對(duì)齊,而且在4K的倍數(shù)位置上),更新位圖二叉樹表的結(jié)構(gòu),使得位圖二叉樹表與實(shí)際的磁盤空間分配使用情況相符,達(dá)到災(zāi)難恢復(fù)的目的。
圖7示出了在本發(fā)明提供的初始化過程中的災(zāi)難恢復(fù)的實(shí)現(xiàn)流程,詳述如下在步驟S601中,將磁盤管理文件加載到磁盤;在步驟S602中,判斷該磁盤管理文件是不是新文件,如果磁盤上沒有該文件,表明該文件為新文件,執(zhí)行步驟S603,如果磁盤上已經(jīng)存在該文件,則執(zhí)行步驟S604;在步驟S603中,對(duì)該文件的Header部分進(jìn)行初始化,設(shè)置災(zāi)難標(biāo)志,建立位圖二叉樹表;在步驟S604中,將Header部分映射到內(nèi)存,建立鏡像;在步驟S605中,檢查磁盤管理文件的災(zāi)難標(biāo)志,如果根據(jù)災(zāi)難標(biāo)志發(fā)現(xiàn)已經(jīng)發(fā)生過災(zāi)難,則執(zhí)行步驟S606,否則執(zhí)行步驟S607;在步驟S606中,對(duì)位圖二叉樹表進(jìn)行如上所述的災(zāi)難恢復(fù);在步驟S607中,設(shè)置災(zāi)難標(biāo)志,使得磁盤管理文件的災(zāi)難標(biāo)志與內(nèi)存鏡像的災(zāi)難標(biāo)志不同步。
當(dāng)磁盤運(yùn)行期間,發(fā)生數(shù)據(jù)的動(dòng)態(tài)輸入輸出時(shí),需要即時(shí)調(diào)整結(jié)點(diǎn)信息,更新位圖二叉樹表,如圖8所示當(dāng)有數(shù)據(jù)流輸入到磁盤時(shí),需要查找位圖二叉樹表分配結(jié)點(diǎn)以便存儲(chǔ)數(shù)據(jù),并對(duì)位圖二叉樹表的結(jié)構(gòu)進(jìn)行更新,同時(shí)設(shè)置結(jié)點(diǎn)的頭部信息,包括結(jié)點(diǎn)大小以及結(jié)點(diǎn)地址,建立結(jié)點(diǎn)地址索引。
當(dāng)需要使用結(jié)點(diǎn)中的數(shù)據(jù),例如數(shù)據(jù)輸出或者被刪除時(shí),程序?qū)⒏鶕?jù)結(jié)點(diǎn)地址索引,檢查結(jié)點(diǎn)地址,找到需要使用數(shù)據(jù)的對(duì)應(yīng)結(jié)點(diǎn)。數(shù)據(jù)使用后,結(jié)點(diǎn)變?yōu)榭臻e,需要同步更新位圖二叉樹表,以實(shí)時(shí)記錄磁盤的使用狀態(tài)。
圖9示出了本發(fā)明提供的磁盤空間管理系統(tǒng)的組成結(jié)構(gòu),為了使得描述更加簡(jiǎn)便,上面已經(jīng)描述的內(nèi)容不再贅述。
應(yīng)用程序或者操作系統(tǒng)的調(diào)用對(duì)外接口模塊901,向磁盤寫入或者讀出數(shù)據(jù),數(shù)據(jù)讀寫模塊902將數(shù)據(jù)寫入磁盤或者將磁盤中的數(shù)據(jù)讀出。
位圖二叉樹表管理模塊903負(fù)責(zé)維護(hù)更新位圖二叉樹表,從而使得位圖二叉樹表與磁盤的實(shí)際使用狀態(tài)保持一致,當(dāng)數(shù)據(jù)寫入磁盤時(shí),查找位圖二叉樹表,為數(shù)據(jù)寫入分配相應(yīng)的結(jié)點(diǎn),當(dāng)數(shù)據(jù)從磁盤讀出時(shí),回收對(duì)應(yīng)的空閑結(jié)點(diǎn)。
災(zāi)難標(biāo)志管理模塊904用于設(shè)置磁盤管理文件以及內(nèi)存鏡像的災(zāi)難標(biāo)志。災(zāi)難恢復(fù)管理模塊905根據(jù)災(zāi)難標(biāo)志管理模塊904設(shè)置的災(zāi)難標(biāo)志,在判斷發(fā)生災(zāi)難時(shí)對(duì)位圖二叉樹表進(jìn)行災(zāi)難恢復(fù)。
內(nèi)存鏡像映射模塊906負(fù)責(zé)將位圖二叉樹表和災(zāi)難標(biāo)志映射到內(nèi)存,作為內(nèi)存鏡像操作,以提高磁盤空間管理的I/O性能。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種磁盤空間管理方法,其特征在于,所述方法包括下述步驟A.設(shè)置位圖二叉樹表,用于記錄空間塊的地址、使用狀態(tài)及空間塊之間的父子關(guān)系;B.利用所述位圖二叉樹表對(duì)空間塊進(jìn)行分配和回收。
2.如權(quán)利要求1所述的磁盤空間管理方法,其特征在于,所述步驟B進(jìn)一步包括當(dāng)數(shù)據(jù)輸入磁盤時(shí),查找所述位圖二叉樹表,分配與存儲(chǔ)所述數(shù)據(jù)的空間塊;當(dāng)數(shù)據(jù)輸出磁盤時(shí),回收對(duì)應(yīng)的空閑空間塊;根據(jù)空間塊的分配或者回收狀態(tài)更新所述位圖二叉樹表,保持所述位圖二叉樹表的結(jié)構(gòu)與磁盤空間的使用狀態(tài)一致。
3.如權(quán)利要求1所述的磁盤空間管理方法,其特征在于,所述方法進(jìn)一步包括C.將所述位圖二叉樹表映射到內(nèi)存,將空間管理的磁盤操作轉(zhuǎn)換為內(nèi)存操作。
4.如權(quán)利要求3所述的磁盤空間管理方法,其特征在于,所述方法進(jìn)一步包括D.在發(fā)生災(zāi)難時(shí),恢復(fù)所述位圖二叉樹表。
5如權(quán)利要求4所述的磁盤空間管理方法,其特征在于,所述步驟D進(jìn)一步包括D1.設(shè)置磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志;D2.根據(jù)所述磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志是否同步判斷是否發(fā)生災(zāi)難,當(dāng)判斷發(fā)生災(zāi)難時(shí),掃描磁盤空間,根據(jù)磁盤空間的實(shí)際使用狀態(tài)遍歷所述位圖二叉樹表,對(duì)所述位圖二叉樹表進(jìn)行結(jié)構(gòu)更新。
6.一種磁盤空間管理系統(tǒng),其特征在于,所述系統(tǒng)包括對(duì)外接口模塊,用于接收外部輸入的數(shù)據(jù),或者將磁盤保存的數(shù)據(jù)對(duì)外輸出;數(shù)據(jù)讀寫模塊,用于將所述對(duì)外接口模塊接收的數(shù)據(jù)寫入磁盤,或者將磁盤保存的數(shù)據(jù)通過所述對(duì)外接口模塊輸出;位圖二叉樹表管理模塊,用于設(shè)置位圖二叉樹表,并利用所述位圖二叉樹表對(duì)空間塊進(jìn)行分配和回收;所述位圖二叉樹表用于記錄空間塊的地址、使用狀態(tài)及空間塊之間的父子關(guān)系。
7.如權(quán)利要求6所述的磁盤空間管理系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括內(nèi)存鏡像映射模塊,用于將所述位圖二叉樹表映射到內(nèi)存,將空間管理的磁盤操作轉(zhuǎn)換為內(nèi)存操作。
8.如權(quán)利要求6所述的磁盤空間管理系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括災(zāi)難標(biāo)志管理模塊,用于設(shè)置磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志;災(zāi)難恢復(fù)管理模塊,用于根據(jù)所述磁盤災(zāi)難標(biāo)志和內(nèi)存災(zāi)難標(biāo)志是否同步判斷是否發(fā)生災(zāi)難,當(dāng)判斷發(fā)生災(zāi)難時(shí),掃描磁盤空間,根據(jù)磁盤空間的實(shí)際使用狀態(tài)遍歷所述位圖二叉樹表,對(duì)所述位圖二叉樹表進(jìn)行結(jié)構(gòu)更新。
全文摘要
本發(fā)明適用于計(jì)算機(jī)領(lǐng)域,提供了一種磁盤空間管理方法及系統(tǒng),所述方法包括下述步驟A.設(shè)置位圖二叉樹表,用于記錄空間塊的地址、使用狀態(tài)及空間塊之間的父子關(guān)系;B.利用所述位圖二叉樹表對(duì)空間塊進(jìn)行分配和回收。采用本發(fā)明進(jìn)行磁盤空間管理時(shí),除正常的分配回收能力外,具有最佳的磁盤I/O性能。同時(shí),空間可快速合并,形成大的可閑塊,利用率高,不會(huì)產(chǎn)生碎片。另外,具有良好的數(shù)據(jù)災(zāi)難恢復(fù)能力,且不需要占用額外的資源。
文檔編號(hào)G06F17/30GK101030165SQ20061003411
公開日2007年9月5日 申請(qǐng)日期2006年3月2日 優(yōu)先權(quán)日2006年3月2日
發(fā)明者謝尚成 申請(qǐng)人:騰訊科技(深圳)有限公司