亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法

文檔序號(hào):6558532閱讀:164來源:國(guó)知局

專利名稱::采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種存儲(chǔ)設(shè)備的快照處理方法,特別是涉及一種采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法。
背景技術(shù)
:為滿足當(dāng)前人們存儲(chǔ)大量數(shù)據(jù)的需要,存儲(chǔ)設(shè)備的數(shù)據(jù)容量越來越大,而且對(duì)數(shù)據(jù)安全的要求也越來越高。針對(duì)在某一時(shí)刻在線備份大量數(shù)據(jù)或在線保護(hù)數(shù)據(jù)的需要,出現(xiàn)了設(shè)備快照的技術(shù)??煺占夹g(shù)為一種針對(duì)包括硬盤、邏輯磁盤等區(qū)塊設(shè)備的備份方式,創(chuàng)建快照的設(shè)備稱作原區(qū)域設(shè)備,創(chuàng)建出的快照是與原區(qū)塊設(shè)備相關(guān)聯(lián)的區(qū)塊設(shè)備,稱作快照設(shè)備。原區(qū)塊設(shè)備可以有多個(gè)快照設(shè)備,每個(gè)快照設(shè)備都記錄在原區(qū)塊設(shè)備的結(jié)構(gòu)中。原區(qū)塊設(shè)備和快照設(shè)備的描述結(jié)構(gòu)都保存在系統(tǒng)隨機(jī)存取內(nèi)存(Random-accessmemory,簡(jiǎn)稱RAM)中,快照設(shè)備本身也需要使用一定的實(shí)體存儲(chǔ)空間。一般創(chuàng)建快照時(shí)需要指定原區(qū)塊設(shè)備、快照實(shí)際容量大小以及快照設(shè)備本身使用的存儲(chǔ)設(shè)備,快照設(shè)備的邏輯存儲(chǔ)容量為原區(qū)塊設(shè)備的大小??煺赵O(shè)備上存儲(chǔ)數(shù)據(jù)并劃分空間的最小單位為數(shù)據(jù)塊,一般大小為64k。創(chuàng)建快照設(shè)備時(shí)需計(jì)算出所有可以用來存儲(chǔ)原區(qū)塊設(shè)備上數(shù)據(jù)的數(shù)據(jù)塊數(shù),并使用以下結(jié)構(gòu)描述每個(gè)數(shù)據(jù)塊[原區(qū)塊設(shè)備(org_dev),原區(qū)塊設(shè)備的偏移位置(org_offset),快照設(shè)備(snap_dev),快照的偏移位置(snap_offset)],我們稱為數(shù)據(jù)塊描述chunk_des??煺赵O(shè)備已經(jīng)使用的數(shù)據(jù)塊個(gè)數(shù)標(biāo)記為當(dāng)前數(shù)據(jù)塊數(shù)cur_chunk,所有的數(shù)據(jù)塊個(gè)數(shù)標(biāo)記為總數(shù)據(jù)塊數(shù)total_chunk,并標(biāo)記快照設(shè)備關(guān)于所有數(shù)據(jù)塊的描述表為chunk_table。在寫入數(shù)據(jù)至原區(qū)塊設(shè)備時(shí),需要判斷原區(qū)塊設(shè)備上數(shù)據(jù)是否應(yīng)該先讀出并寫入至快照設(shè)備中,并在所有快照設(shè)備處理完成之后,才將數(shù)據(jù)寫入原區(qū)塊設(shè)備,進(jìn)而通過此種方式可以將快照創(chuàng)建前原區(qū)塊設(shè)備上的數(shù)據(jù)保留在快照設(shè)備中。對(duì)于上述原區(qū)塊設(shè)備上數(shù)據(jù)是否應(yīng)該先讀出并寫入至快照設(shè)備中的判斷,目前現(xiàn)有技術(shù)一般采用以下方式1、為了便于查詢,每個(gè)數(shù)據(jù)塊的描述修改為[鏈表指針,chunk_des],稱為數(shù)據(jù)塊描述修改chunk_des_new。2、創(chuàng)建快照設(shè)備時(shí)計(jì)算出可用于保存原區(qū)塊設(shè)備上數(shù)據(jù)的數(shù)據(jù)塊個(gè)數(shù),創(chuàng)建出數(shù)據(jù)塊描述表chunk_table,初始化chunk_des,將每個(gè)chunk_des_new中的鏈表指針賦值為空。3、采用哈希(hash)算法,將所有快照上已經(jīng)保存有原區(qū)塊設(shè)備上數(shù)據(jù)的chunk_des_new加入哈希表中。4、寫入數(shù)據(jù)至原區(qū)塊設(shè)備時(shí),從哈希表中查找是否原區(qū)塊設(shè)備上此位置的數(shù)據(jù)已經(jīng)寫入快照設(shè)備上(通過在哈希表中查找chunk_table中是否有原區(qū)塊設(shè)備對(duì)應(yīng)的org_dev和org_offset的chunk_des_new存在而實(shí)現(xiàn));如果已經(jīng)寫入,則不用從原區(qū)塊設(shè)備上讀出對(duì)應(yīng)位置的數(shù)據(jù)寫入至快照設(shè)備上;否則需要從原區(qū)塊設(shè)備上讀出對(duì)應(yīng)位置的數(shù)據(jù)寫入快照設(shè)備上,并將快照設(shè)備當(dāng)前的chunk_des寫入快照設(shè)備相應(yīng)位置;最后將chunk_des_new加入到哈希表中并將快照設(shè)備當(dāng)前的數(shù)據(jù)塊使用數(shù)加1。因此現(xiàn)有技術(shù)的主要缺點(diǎn)如下1、每個(gè)chunk_des_new結(jié)構(gòu)需要至少16個(gè)字節(jié),這樣對(duì)一個(gè)稍大規(guī)模的快照設(shè)備需要消耗的系統(tǒng)RAM過多,如果快照可以自動(dòng)擴(kuò)容,具有較大容量的快照設(shè)備中用以描述數(shù)據(jù)塊的chunk_table很大,進(jìn)而占用的RAM將會(huì)很大。2、對(duì)于較大的快照設(shè)備,需要的chunk_des_new的個(gè)數(shù)較多,對(duì)其按照哈希算法的查找效率并不高,即每次查找原區(qū)塊設(shè)備的數(shù)據(jù)是否存在于快照的chunk_table中時(shí)會(huì)耗費(fèi)較多時(shí)間,進(jìn)而查找速度比較慢,效率不高。3、由于RAM的限制,快照設(shè)備的個(gè)數(shù)不能太多,并且每個(gè)快照設(shè)備的規(guī)模不能太大。4、此外,因以上限制,數(shù)據(jù)塊大小不能太小,進(jìn)而導(dǎo)致每次寫入數(shù)據(jù)至原區(qū)塊設(shè)備時(shí),需要從原區(qū)塊設(shè)備上讀出數(shù)據(jù)塊大小的數(shù)據(jù)寫入到快照設(shè)備上,這樣降低了快照設(shè)備的有效使用率。
發(fā)明內(nèi)容本發(fā)明所要解決的問題與缺陷在于,提供一種采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,通過一個(gè)多級(jí)動(dòng)態(tài)位映像(bitmap)表算法處理一個(gè)原區(qū)塊設(shè)備與一個(gè)快照設(shè)備之間數(shù)據(jù)的對(duì)應(yīng)關(guān)系。本發(fā)明所提供的一種采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,包括以下步驟a)創(chuàng)建快照設(shè)備,并從操作系統(tǒng)獲取系統(tǒng)頁(yè)的大小作為快照設(shè)備存儲(chǔ)數(shù)據(jù)并劃分空間的最小單位的數(shù)據(jù)區(qū)塊大??;b)啟始化包含狀態(tài)數(shù)據(jù)變量、總數(shù)數(shù)據(jù)變量、當(dāng)前數(shù)數(shù)據(jù)變量以及起始位置數(shù)據(jù)變量的第一級(jí)位映像表結(jié)構(gòu),并添加第一級(jí)位映像表結(jié)構(gòu)的指針至快照設(shè)備的描述結(jié)構(gòu)中,其中,狀態(tài)數(shù)據(jù)變量為列舉數(shù)據(jù)型態(tài),此列舉數(shù)據(jù)型態(tài)包含未分配數(shù)據(jù)變量、未寫滿數(shù)據(jù)變量以及已寫滿數(shù)據(jù)變量,總數(shù)數(shù)據(jù)變量為原區(qū)塊設(shè)備的大小除以原區(qū)塊設(shè)備計(jì)數(shù)的基本單位的值,起始位置數(shù)據(jù)變量為指針數(shù)據(jù)型態(tài);c)當(dāng)需要將數(shù)據(jù)寫入原區(qū)塊設(shè)備時(shí),判斷指針?biāo)赶虻漠?dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值;d)當(dāng)狀態(tài)數(shù)據(jù)變量的值為未分配時(shí),依照級(jí)數(shù)確定原則判斷當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu);e)當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),為當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配與當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值相等數(shù)目位的內(nèi)存空間,將每個(gè)內(nèi)存空間賦值為0,將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿,并執(zhí)行步驟j);f)當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),按以下公式為當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配內(nèi)存空間該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值×本級(jí)每一位映像表結(jié)構(gòu)的大小,并將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿;g)依照級(jí)數(shù)確定原則計(jì)算出當(dāng)前位映像表結(jié)構(gòu)的下一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,并依照數(shù)據(jù)寫入到該原區(qū)塊設(shè)備的位置確定當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu),并執(zhí)行步驟c);h)當(dāng)狀態(tài)數(shù)據(jù)變量的值為未寫滿時(shí),判斷當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu),當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),執(zhí)行步驟j);i)當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),依照數(shù)據(jù)寫入到原區(qū)塊設(shè)備的位置確定當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu),并執(zhí)行步驟c);j)判斷當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量對(duì)應(yīng)的位是否為1,當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為1時(shí),則將數(shù)據(jù)寫入原區(qū)塊設(shè)備;k)當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為0時(shí),從原區(qū)塊設(shè)備的對(duì)應(yīng)位置讀取數(shù)據(jù)并將讀取的數(shù)據(jù)寫入快照設(shè)備的對(duì)應(yīng)位置,并將當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位賦值為1,且將當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,并執(zhí)行步驟1);l)判斷當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值是否等于當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值不等于當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值時(shí),將數(shù)據(jù)寫入原區(qū)塊設(shè)備,否則,執(zhí)行步驟m);m)釋放當(dāng)前位映像表結(jié)構(gòu)所占用的內(nèi)存空間,將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值賦值為已寫滿,將指針指向上一級(jí)位映像表結(jié)構(gòu),并將上一級(jí)位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,執(zhí)行步驟1);以及n)當(dāng)狀態(tài)數(shù)據(jù)變量的值為已寫滿時(shí),將數(shù)據(jù)寫入原區(qū)塊設(shè)備。所述的方法還包括輸入該原區(qū)塊設(shè)備的名稱、該快照設(shè)備使用的實(shí)體區(qū)塊設(shè)備的名稱以及該快照設(shè)備的大小的參數(shù);以及檢查該輸入?yún)?shù)的合法性并取整的步驟。所述級(jí)數(shù)確定原則包含以下步驟確定最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值滿足以下條件總數(shù)數(shù)據(jù)變量的值>2×本級(jí)位映像表結(jié)構(gòu)的大小,且總數(shù)數(shù)據(jù)變量的值可以被中央處理單元的機(jī)器位整除;以及確定第一級(jí)位映像表結(jié)構(gòu)以外的每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值為按照以下公式計(jì)算所得值中的最大值本級(jí)位映像表結(jié)構(gòu)的大小×總數(shù)數(shù)據(jù)變量的值<每一位映像表結(jié)構(gòu)所代表的該原區(qū)塊設(shè)備的存儲(chǔ)數(shù)據(jù)的大小÷總數(shù)數(shù)據(jù)變量的值÷該系統(tǒng)頁(yè)的大小。綜上所述,本發(fā)明利用多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)算法處理原區(qū)塊設(shè)備與快照設(shè)備之間的數(shù)據(jù)對(duì)應(yīng)關(guān)系,可以減少占用的系統(tǒng)內(nèi)存空間,大大提高了查找效率,且以系統(tǒng)頁(yè)的大小為基本單位,可以提高快照設(shè)備的有效使用效率。圖1為本發(fā)明的采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法的方法流程圖;以及圖2和圖3為本發(fā)明的通過多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)處理原區(qū)塊設(shè)備與快照設(shè)備的數(shù)據(jù)對(duì)應(yīng)關(guān)系的方法流程圖。其中,附圖標(biāo)記步驟100輸入原區(qū)塊設(shè)備的名稱、快照設(shè)備使用的實(shí)體區(qū)塊設(shè)備的名稱、快照設(shè)備的大小的參數(shù)步驟120檢查輸入?yún)?shù)的合法性并取整步驟140創(chuàng)建快照設(shè)備,并獲取系統(tǒng)頁(yè)的大小作為快照設(shè)備存儲(chǔ)數(shù)據(jù)并劃分空間的最小單位的數(shù)據(jù)區(qū)塊大小步驟160啟始化第一級(jí)位映像表結(jié)構(gòu),并添加第一級(jí)位映像表結(jié)構(gòu)的指針至快照設(shè)備的描述結(jié)構(gòu)中步驟180當(dāng)需要寫入數(shù)據(jù)至原區(qū)塊設(shè)備時(shí),依照原區(qū)塊設(shè)備的大小和級(jí)數(shù)確定原則創(chuàng)建多級(jí)動(dòng)態(tài)位映像表,并通過多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)處理原區(qū)塊設(shè)備與快照設(shè)備的數(shù)據(jù)的對(duì)應(yīng)關(guān)系步驟200讀取指針?biāo)赶虻奈挥诚癖斫Y(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值步驟210判斷狀態(tài)數(shù)據(jù)變量的值步驟220是否為最后一級(jí)步驟230為起始位置數(shù)據(jù)變量分配相應(yīng)的內(nèi)存空間,并對(duì)狀態(tài)數(shù)據(jù)變量賦值為未寫滿步驟240為起始位置數(shù)據(jù)變量分配相應(yīng)的內(nèi)存空間,并對(duì)狀態(tài)數(shù)據(jù)變量賦值為未寫滿步驟250計(jì)算下一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,計(jì)算起始位置數(shù)據(jù)變量的值,并將指針指向相應(yīng)的位映像表結(jié)構(gòu)步驟260是否為最后一級(jí)步驟270計(jì)算起始位置數(shù)據(jù)變量的值,并將指針指向相應(yīng)的位映像表結(jié)構(gòu)步驟280將數(shù)據(jù)寫入原區(qū)塊設(shè)備步驟300起始位置數(shù)據(jù)變量對(duì)應(yīng)的位是否為1步驟310將數(shù)據(jù)寫入原區(qū)塊設(shè)備步驟320從原區(qū)塊設(shè)備讀出對(duì)應(yīng)位置的數(shù)據(jù)并寫入快照設(shè)備的對(duì)應(yīng)位置,將起始位置數(shù)據(jù)變量對(duì)應(yīng)的位賦值為1,將當(dāng)前數(shù)數(shù)據(jù)變量的值加1步驟330當(dāng)前數(shù)數(shù)據(jù)變量的值是否大于或等于總數(shù)數(shù)據(jù)變量的值步驟340釋放起始位置數(shù)據(jù)變量對(duì)應(yīng)的位映像表結(jié)構(gòu)所占用的內(nèi)存空間,將狀態(tài)數(shù)據(jù)變量的值賦值為已寫滿,將指針指向上一級(jí)位映像表結(jié)構(gòu),并將上一級(jí)位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加具體實(shí)施方式以下,將結(jié)合附圖部份對(duì)本發(fā)明的較佳實(shí)施方式作詳細(xì)說明。圖1所示為本發(fā)明的采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法的方法流程圖,如圖所示,此方法包含以下步驟首先,輸入原區(qū)塊設(shè)備的名稱、快照設(shè)備使用的實(shí)體區(qū)塊設(shè)備的名稱、快照設(shè)備的大小的參數(shù)(步驟100);接著,檢查輸入?yún)?shù)的合法性并取整(步驟120);依照輸入的合法參數(shù)創(chuàng)建快照設(shè)備,并從操作系統(tǒng)獲取系統(tǒng)頁(yè)的大小作為快照設(shè)備存儲(chǔ)數(shù)據(jù)并劃分空間的最小單位的數(shù)據(jù)區(qū)塊大小(步驟140);啟始化第一級(jí)位映像表結(jié)構(gòu),并添加第一級(jí)位映像表結(jié)構(gòu)的指針至快照設(shè)備的描述結(jié)構(gòu)中(步驟160),第一級(jí)位映像表結(jié)構(gòu)包括狀態(tài)數(shù)據(jù)變量、總數(shù)數(shù)據(jù)變量、當(dāng)前數(shù)數(shù)據(jù)變量以及起始位置數(shù)據(jù)變量。例如,采用以下描述的結(jié)構(gòu)#typedefstructorg_lv_bitmap{bitmap_status_tstatus;inttotal_count;intcurrent_count;void*items;}org_lv_bitmap_t其中,狀態(tài)數(shù)據(jù)變量為列舉數(shù)據(jù)型態(tài),此列舉數(shù)據(jù)型態(tài)包含未分配數(shù)據(jù)變量、未寫滿數(shù)據(jù)變量以及已寫滿數(shù)據(jù)變量,未分配數(shù)據(jù)變量表示下一級(jí)位映像表結(jié)構(gòu)尚未分配內(nèi)存空間,未寫滿數(shù)據(jù)變量表示下一級(jí)位映像表結(jié)構(gòu)尚未寫滿,已寫滿數(shù)據(jù)變量表示下一級(jí)位映像表結(jié)構(gòu)已經(jīng)寫滿并釋放所占用的內(nèi)存空間。例如,采用以下描述的列舉結(jié)構(gòu)typedefenum{NO_ALLOC,NO_FULL,F(xiàn)ULL}bitmap_status_t狀態(tài)數(shù)據(jù)變量表示下一級(jí)位映像表結(jié)構(gòu)的狀態(tài),啟始化后的值為未分配,即,org_lv_bitmap_t->status=NO_ALLOC;總數(shù)數(shù)據(jù)變量為整數(shù)數(shù)據(jù)型態(tài),其表示下一級(jí)位映像表結(jié)構(gòu)的數(shù)組元素的總數(shù),啟始化后的值為原區(qū)塊設(shè)備的大小除以原區(qū)塊設(shè)備的計(jì)數(shù)基本單元的值,即,org_lv_bitmap_t->total_count=原區(qū)塊設(shè)備的大小÷原區(qū)塊設(shè)備的計(jì)數(shù)基本單元;當(dāng)前數(shù)數(shù)據(jù)變量為整數(shù)數(shù)據(jù)型態(tài),其表示下一級(jí)位映像表結(jié)構(gòu)中已寫滿并釋放所占用的內(nèi)存空間的元素個(gè)數(shù),啟始化后的值為0,即,org_lv_bitmap_t->current_count=0;起始位置數(shù)據(jù)變量為指針數(shù)據(jù)型態(tài),其指向下一級(jí)位映像表結(jié)構(gòu)的起始位置,啟始化后的值為0,即,org_lv_bitmap_t->items=0。當(dāng)需要寫入數(shù)據(jù)至原區(qū)塊設(shè)備時(shí),依照原區(qū)塊設(shè)備的大小和級(jí)數(shù)確定原則創(chuàng)建多級(jí)動(dòng)態(tài)位映像表,并通過多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)處理原區(qū)塊設(shè)備與快照設(shè)備的數(shù)據(jù)對(duì)應(yīng)關(guān)系(步驟180)。其中,每一級(jí)位映像表的結(jié)構(gòu)與第一級(jí)位映像表的結(jié)構(gòu)相同,級(jí)數(shù)確定原則包含以下步驟確定最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值滿足以下條件總數(shù)數(shù)據(jù)變量的值>2×本級(jí)位映像表結(jié)構(gòu)的大小(即,total_count>2×sizeof(org_lv_bitmap_t)),且總數(shù)數(shù)據(jù)變量的值可以被中央處理單元的機(jī)器位整除;以及確定第一級(jí)位映像表結(jié)構(gòu)以外的每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值為按照以下公式計(jì)算所得值中的最大值本級(jí)位映像表結(jié)構(gòu)的大小×總數(shù)數(shù)據(jù)變量的值<每一位映像表結(jié)構(gòu)所代表的該原區(qū)塊設(shè)備的存儲(chǔ)數(shù)據(jù)的大小÷總數(shù)數(shù)據(jù)變量的值÷系統(tǒng)頁(yè)的大小。在實(shí)施例中,以current_entry_size表示每一位映像表結(jié)構(gòu)所代表的原區(qū)塊設(shè)備的存儲(chǔ)數(shù)據(jù)的大小,chunk_size表示系統(tǒng)頁(yè)的大小,則上述公式可描述為sizeof(org_lv_bitmap_t)×total_co<current_entry_size÷total_count÷chunk_size。請(qǐng)參考圖2和圖3,其所示為通過多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)處理原區(qū)塊設(shè)備與快照設(shè)備的數(shù)據(jù)對(duì)應(yīng)關(guān)系的方法流程圖。如圖所示,首先讀取指針(P)所指向的當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值(步驟200);接著,判斷狀態(tài)數(shù)據(jù)變量的值(步驟210)。當(dāng)狀態(tài)數(shù)據(jù)變量的值為未分配時(shí),依照級(jí)數(shù)確定原則判斷當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu)(步驟220)。如果當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),為當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配與當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值相等數(shù)目位的內(nèi)存空間,即,為P->items分配P->total_count個(gè)位的內(nèi)存空間,將每個(gè)內(nèi)存空間賦值為0,并將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿,即,P->status=NO_FULL(步驟230),并執(zhí)行步驟300。如果當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),則按以下公式為當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配內(nèi)存空間該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值×本級(jí)每一位映像表結(jié)構(gòu)的大小,即,為P->items分配P->total_count×sizeof(org_lv_bitmap_t)大小的內(nèi)存空間,并將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿,即,P->status=NO_FULL(步驟240)。接著,依照級(jí)數(shù)確定原則計(jì)算出當(dāng)前位映像表結(jié)構(gòu)的下一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,啟始化下一級(jí)位映像表結(jié)構(gòu),并依照數(shù)據(jù)寫入到該原區(qū)塊設(shè)備的位置確定當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu)(步驟250),并執(zhí)行步驟210。在實(shí)施例中,依照級(jí)數(shù)確定原則計(jì)算出來的下一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值為M,X表示指針指向的下一級(jí)位映像表結(jié)構(gòu),則啟始化后的下一級(jí)位映像表結(jié)構(gòu)為X=P->items(n)(0<=n<P->total_count),X->status=NO_ALLOC,X->current_count=0,X->items=NULL,X->total_count=M。依照數(shù)據(jù)寫入原區(qū)塊設(shè)備的位置,計(jì)算出寫入n的序號(hào)為k,即,當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值為k,則P=P->items(k)。當(dāng)狀態(tài)數(shù)據(jù)變量的值為未寫滿時(shí),判斷當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu)(步驟260)。如果當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),執(zhí)行步驟300。如果當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),依照數(shù)據(jù)寫入到原區(qū)塊設(shè)備的位置確定當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu)(步驟270),并執(zhí)行步驟210。在實(shí)施例中,依照寫入原區(qū)塊設(shè)備的位置,計(jì)算出本次寫入數(shù)據(jù)在P->items(P->total_count)的序號(hào)為k,則P=P->items(k)。如上所述,如果當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),首先判斷當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量對(duì)應(yīng)的位是否為1(步驟300)。當(dāng)起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為1時(shí),則將數(shù)據(jù)寫入原區(qū)塊設(shè)備(步驟310)。當(dāng)起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為0時(shí),從原區(qū)塊設(shè)備的對(duì)應(yīng)位置讀取數(shù)據(jù)并將讀取的數(shù)據(jù)寫入快照設(shè)備的對(duì)應(yīng)位置,并將當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位賦值為1,且將當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,即,P->current_count+1(步驟320)。接著,判斷當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值是否大于或等于當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,即,P->current_count是否大于或等于P->total_count(步驟330)。當(dāng)P->current_count小于P->total_count時(shí),將數(shù)據(jù)寫入原區(qū)塊設(shè)備(步驟310)。否則,釋放當(dāng)前位映像表結(jié)構(gòu)所占用的內(nèi)存空間,將當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值賦值為已寫滿,即,P->status=FULL,將指針指向上一級(jí)位映像表結(jié)構(gòu),并將上一級(jí)位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,即,P->current_count+1(步驟340),然后返回步驟330。當(dāng)狀態(tài)數(shù)據(jù)變量的值為已寫滿時(shí),將數(shù)據(jù)寫入原區(qū)塊設(shè)備(步驟280)。雖然本發(fā)明以前述的較佳實(shí)施方式公開如上,但并非用以限定本發(fā)明。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)意識(shí)到在不脫離本發(fā)明所附的權(quán)利要求所涵蓋的范圍和精神的情況下,所做的更動(dòng)與潤(rùn)飾,均屬本發(fā)明的專利保護(hù)范圍。關(guān)于本發(fā)明所界定的保護(hù)范圍請(qǐng)參考所附的權(quán)利要求書。權(quán)利要求1.一種采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,通過一多級(jí)動(dòng)態(tài)位映像表算法處理一原區(qū)塊設(shè)備與一快照設(shè)備之間數(shù)據(jù)的對(duì)應(yīng)關(guān)系,其特征在于,該方法包含以下步驟a)創(chuàng)建一快照設(shè)備,并從操作系統(tǒng)獲取系統(tǒng)頁(yè)的大小作為該快照設(shè)備存儲(chǔ)數(shù)據(jù)并劃分空間的最小單位的數(shù)據(jù)區(qū)塊大?。籦)啟始化一包含一狀態(tài)數(shù)據(jù)變量、一總數(shù)數(shù)據(jù)變量、一當(dāng)前數(shù)數(shù)據(jù)變量以及一起始位置數(shù)據(jù)變量的第一級(jí)位映像表結(jié)構(gòu),并添加該第一級(jí)位映像表結(jié)構(gòu)的指針至該快照設(shè)備的描述結(jié)構(gòu)中,其中,該狀態(tài)數(shù)據(jù)變量為一列舉數(shù)據(jù)型態(tài),該列舉數(shù)據(jù)型態(tài)包含一未分配數(shù)據(jù)變量、一未寫滿數(shù)據(jù)變量以及一已寫滿數(shù)據(jù)變量,該總數(shù)數(shù)據(jù)變量為該原區(qū)塊設(shè)備的大小除以該原區(qū)塊設(shè)備計(jì)數(shù)的基本單位的值,該起始位置數(shù)據(jù)變量為一指針數(shù)據(jù)型態(tài);c)當(dāng)需要將一數(shù)據(jù)寫入該原區(qū)塊設(shè)備時(shí),判斷指針?biāo)赶虻囊划?dāng)前位映像表結(jié)構(gòu)的該狀態(tài)數(shù)據(jù)變量的值;d)當(dāng)該狀態(tài)數(shù)據(jù)變量的值為未分配時(shí),依照一級(jí)數(shù)確定原則判斷該當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu);e)當(dāng)該當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),為該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配與該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值相等數(shù)目位的內(nèi)存空間,將每個(gè)內(nèi)存空間賦值為0,將該當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿,并執(zhí)行步驟j);f)當(dāng)該當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),按以下公式為該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量分配內(nèi)存空間該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值×本級(jí)每一位映像表結(jié)構(gòu)的大小,并將該當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量賦值為未寫滿;g)依照該級(jí)數(shù)確定原則計(jì)算出該當(dāng)前位映像表結(jié)構(gòu)的下一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,并依照該數(shù)據(jù)寫入到該原區(qū)塊設(shè)備的位置確定該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu),并執(zhí)行步驟c);h)當(dāng)該狀態(tài)數(shù)據(jù)變量的值為未寫滿時(shí),判斷該當(dāng)前位映像表結(jié)構(gòu)是否為最后一級(jí)位映像表結(jié)構(gòu),當(dāng)該當(dāng)前位映像表結(jié)構(gòu)為最后一級(jí)位映像表結(jié)構(gòu)時(shí),執(zhí)行步驟j);i)當(dāng)該當(dāng)前位映像表結(jié)構(gòu)不為最后一級(jí)位映像表結(jié)構(gòu)時(shí),依照該數(shù)據(jù)寫入到該原區(qū)塊設(shè)備的位置確定該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值,將指針指向該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值所對(duì)應(yīng)的位映像表結(jié)構(gòu),并執(zhí)行步驟c);j)判斷該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量對(duì)應(yīng)的位是否為1,當(dāng)該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為1時(shí),則將該數(shù)據(jù)寫入該原區(qū)塊設(shè)備;k)當(dāng)該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位為0時(shí),從該原區(qū)塊設(shè)備的對(duì)應(yīng)位置讀取數(shù)據(jù)并將該讀取的數(shù)據(jù)寫入該快照設(shè)備的對(duì)應(yīng)位置,并將該當(dāng)前位映像表結(jié)構(gòu)的起始位置數(shù)據(jù)變量的值對(duì)應(yīng)的位賦值為1,且將該當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,并執(zhí)行步驟1);l)判斷該當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值是否等于該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,當(dāng)該當(dāng)前位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值不等于該當(dāng)前位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值時(shí),將該數(shù)據(jù)寫入該原區(qū)塊設(shè)備,否則,執(zhí)行步驟m);m)釋放該當(dāng)前位映像表結(jié)構(gòu)所占用的內(nèi)存空間,將該當(dāng)前位映像表結(jié)構(gòu)的狀態(tài)數(shù)據(jù)變量的值賦值為已寫滿,將指針指向上一級(jí)位映像表結(jié)構(gòu),并將上一級(jí)位映像表結(jié)構(gòu)的當(dāng)前數(shù)數(shù)據(jù)變量的值加1,執(zhí)行步驟1);以及n)當(dāng)該狀態(tài)數(shù)據(jù)變量的值為已寫滿時(shí),將該數(shù)據(jù)寫入該原區(qū)塊設(shè)備。2.如權(quán)利要求1所述的采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,其特征在于,創(chuàng)建一快照設(shè)備,并從操作系統(tǒng)獲取系統(tǒng)頁(yè)的大小的步驟進(jìn)一步包含如下步驟輸入該原區(qū)塊設(shè)備的名稱、該快照設(shè)備使用的實(shí)體區(qū)塊設(shè)備的名稱以及該快照設(shè)備的大小的參數(shù);以及檢查該輸入?yún)?shù)的合法性并取整。3.如權(quán)利要求1所述的采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,其特征在于,該級(jí)數(shù)確定原則包含以下步驟確定最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,最后一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值滿足以下條件總數(shù)數(shù)據(jù)變量的值>2×本級(jí)位映像表結(jié)構(gòu)的大小,且總數(shù)數(shù)據(jù)變量的值可以被中央處理單元的機(jī)器位整除;以及確定第一級(jí)位映像表結(jié)構(gòu)以外的每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值,其中,每一級(jí)位映像表結(jié)構(gòu)的總數(shù)數(shù)據(jù)變量的值為按照以下公式計(jì)算所得值中的最大值本級(jí)位映像表結(jié)構(gòu)的大小×總數(shù)數(shù)據(jù)變量的值<每一位映像表結(jié)構(gòu)所代表的該原區(qū)塊設(shè)備的存儲(chǔ)數(shù)據(jù)的大小÷總數(shù)數(shù)據(jù)變量的值÷該系統(tǒng)頁(yè)的大小。全文摘要本發(fā)明涉及一種采用位映像表算法處理存儲(chǔ)設(shè)備快照的方法,通過多級(jí)動(dòng)態(tài)位映像表算法處理原區(qū)塊設(shè)備與快照設(shè)備之間數(shù)據(jù)的對(duì)應(yīng)關(guān)系。位映像表結(jié)構(gòu)包含狀態(tài)數(shù)據(jù)變量、總數(shù)數(shù)據(jù)變量、當(dāng)前數(shù)數(shù)據(jù)變量以及起始位置數(shù)據(jù)變量。多級(jí)動(dòng)態(tài)位映像表結(jié)構(gòu)的級(jí)數(shù)依照原區(qū)塊設(shè)備的大小和級(jí)數(shù)確定原則計(jì)算出來,通過讀取位映像表結(jié)構(gòu)對(duì)應(yīng)的位記錄的信息可以確定原區(qū)塊設(shè)備和快照設(shè)備之間數(shù)據(jù)的對(duì)應(yīng)關(guān)系。采用位映像表結(jié)構(gòu)可以減少占用的系統(tǒng)內(nèi)存空間,大大提高查找效率。文檔編號(hào)G06F11/14GK101063951SQ20061007900公開日2007年10月31日申請(qǐng)日期2006年4月28日優(yōu)先權(quán)日2006年4月28日發(fā)明者郭建鋒,陳玄同,劉文涵申請(qǐng)人:英業(yè)達(dá)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1