專利名稱:元數(shù)據(jù)處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及快照領(lǐng)域,特別是涉及一種元數(shù)據(jù)處理方法及裝置。
背景技術(shù):
目前,隨著網(wǎng)絡(luò)存儲和數(shù)據(jù)存儲的迅速發(fā)展,數(shù)據(jù)管理以及數(shù)據(jù)安全變得尤為重 要。用戶數(shù)據(jù)量的激增不僅帶來了對在線存儲設(shè)備的大量需求,也對在線數(shù)據(jù)保護提出了 更高的要求??煺?Snapshot)就是防范在線存儲設(shè)備數(shù)據(jù)丟失的有效技術(shù)之一。在現(xiàn)有技術(shù)中,快照是對于指定數(shù)據(jù)集合的完全可用拷貝,該拷貝包括相應(yīng)數(shù)據(jù) 在某個時間點,即拷貝開始時間點的映像。快照可以是其所表示數(shù)據(jù)的副本,也可以是其所 表示數(shù)據(jù)的復(fù)制品。當(dāng)存儲設(shè)備發(fā)生應(yīng)用故障或者文件損壞時,可以利用快照功能及時進 行數(shù)據(jù)恢復(fù),將數(shù)據(jù)恢復(fù)為快照產(chǎn)生時間點的狀態(tài)。目前實現(xiàn)快照的方法按照技術(shù)不同劃分為三種全復(fù)制快照(Split Mirror)、寫 時拷貝(Copy-On-Write)、以及寫重定向(Redirect-On-Write)。寫時拷貝也可以成為第一次寫拷貝(COPY ON FIRST WRITE),主機對被映射的邏 輯單元號(Logical Unit Number, LUN)建立快照之后,當(dāng)磁盤空間的數(shù)據(jù)塊發(fā)生第一次寫 操作時,將該磁盤已有的數(shù)據(jù)塊讀取出來,并存入分配好的快照空間,同時建立該數(shù)據(jù)塊在 磁盤空間和快照空間的映射關(guān)系,最后再將要寫入的新數(shù)據(jù)塊存入該磁盤空間。為了保證 存儲設(shè)備在掉電重啟后仍然可以恢復(fù)到在線時的快照狀態(tài),除了基本的配置參數(shù)需要保存 到快照空間中,另外一個重要的數(shù)據(jù)由磁盤空間和快照空間組成的映射關(guān)系的元數(shù)據(jù),也 就是說,數(shù)據(jù)塊在原來磁盤空間的地址和備份到快照空間的保存地址,需要保存到快照空 間。目前,在快照空間同時保存數(shù)據(jù)塊和元數(shù)據(jù),并為每個快照都預(yù)先分配一個獨立 的快照空間,圖1是現(xiàn)有技術(shù)中獨立快照空間的結(jié)構(gòu)示意圖,如圖1所示,由保存元數(shù)據(jù)區(qū) 10和保存快照備份的數(shù)據(jù)塊區(qū)11組成。在快照空間分配上,元數(shù)據(jù)和備份數(shù)據(jù)塊均采取從 各自空間區(qū)域的起始地址開始按順序遞增的策略進行存儲,當(dāng)刪除一個快照時,將整個快 照空間回收,不同快照的快照空間互不相關(guān)。由于一個元數(shù)據(jù)所占空間非常小,一般為16 個字節(jié)。如果每次寫時拷貝操作都將元數(shù)據(jù)保存到硬盤上的元數(shù)據(jù)區(qū),會極大降低快照操 作的效率。因此采用預(yù)先分配緩存策略,分配一個固定大小的緩存(buffer),每次將元數(shù)據(jù) 保存在buffer中,由于元數(shù)據(jù)是按照遞增順序的分配策略進行保存,因此每次需要按照一 個一個的遞增排列將元數(shù)據(jù)保存在buffer的相應(yīng)順序位置上,當(dāng)buffer空間保存滿時一 次性的寫入元數(shù)據(jù)區(qū)。圖2是現(xiàn)有技術(shù)中元數(shù)據(jù)處理的流程圖,如圖2所示,元數(shù)據(jù)的處理具體包括如下步驟步驟201,主機向磁盤空間disk發(fā)起寫請求,其請求起始地址為addr,長度為
Size0步驟202,快照處理程序根據(jù)定義的塊長度(length)進行平均拆分主機的寫請求長度,艮口,等分為 split = (size/length)個塊寫請求,Datai= {data” data2,…,dataj , η = split,按順序依次對Clatai進行快照處理。步驟203,根據(jù)寫時拷貝原理,對第一次發(fā)生寫操作的數(shù)據(jù)塊進行寫時拷貝操作, 首先讀取原磁盤空間的數(shù)據(jù)塊,然后拷貝到快照空間備份數(shù)據(jù)區(qū)中。步驟204,將該數(shù)據(jù)塊在磁盤空間地址和快照空間地址保存在一個結(jié)構(gòu)體構(gòu)成一 個元數(shù)據(jù),將元數(shù)據(jù)按順序先保存在buffer中下一個遞增空閑位置上。步驟205,對存入buffer的元數(shù)據(jù)進行判斷,監(jiān)控該緩存是否存滿,如果存滿則繼 續(xù)步驟206,如果沒有存滿則繼續(xù)步驟207。步驟206,將緩存中的元數(shù)據(jù)一次性寫入快照空間的元數(shù)據(jù)區(qū),然后清零緩存,然 后繼續(xù)步驟207。步驟207,將Clatai寫入磁盤空間,然后回到步驟203,繼續(xù)下一個(Iatai的處理,直 到所有分解的數(shù)據(jù)塊都處理完畢。由于快照系統(tǒng)需要支持很多個快照,為了提高快照空間利用率,可以采用統(tǒng)一空 間按需分配的動態(tài)分配策略,多個快照卷共享同一快照空間,支持空間的回收利用,在此種 策略下,不同快照的元數(shù)據(jù)和數(shù)據(jù)塊是按需分配的。從圖2的處理流程可以看出,元數(shù)據(jù)的 寫操作是通過在按順序遞增的尋找空閑位置的方法而實現(xiàn)的。而動態(tài)分配策略則類似文件 系統(tǒng)中每個文件保存的數(shù)據(jù)塊,并非按順序排列的,這樣在多個快照反復(fù)建立和刪除的實 際應(yīng)用中,就使數(shù)據(jù)塊和元數(shù)據(jù)散落分布在統(tǒng)一的快照空間中。因此,現(xiàn)有技術(shù)中的元數(shù)據(jù) 寫操作無法滿足統(tǒng)一空間按需分配的動態(tài)分配的策略。此外,由于元數(shù)據(jù)所占空間很小,必 須累計到一定數(shù)量才能一次性的寫入快照元數(shù)據(jù)區(qū)中,否則會造成寫硬盤次數(shù)增多,從而 降低快照功能的整體性能。
發(fā)明內(nèi)容
本發(fā)明提供一種元數(shù)據(jù)處理方法及裝置,用以解決現(xiàn)有技術(shù)中元數(shù)據(jù)寫操作無法 滿足統(tǒng)一空間按需分配的動態(tài)分配的策略、以及寫硬盤次數(shù)頻繁的問題。根據(jù)本發(fā)明的實施例,提供了一種元數(shù)據(jù)處理方法,包括如下處理步驟1,根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到預(yù) 先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及快照備份數(shù)據(jù)區(qū)與保存元數(shù)據(jù) 的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,并根據(jù)位圖對應(yīng)關(guān)系計算元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的 首地址以及元數(shù)據(jù)在元數(shù)據(jù)位圖區(qū)的元數(shù)據(jù)位置索引,其中,元數(shù)據(jù)包括原磁盤空間與快 照空間的映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是否已經(jīng)分 配的位圖映射位;步驟2,判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同,獲取比較結(jié) 果,并設(shè)置位圖映射位,其中,分配標(biāo)志位或刪除標(biāo)志位為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址;步驟3,根據(jù)比較結(jié)果、元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索 弓丨,將元數(shù)據(jù)存儲在建立的分配控制緩存區(qū)或刪除控制緩存區(qū)的相應(yīng)位置索引上,或者根 據(jù)比較結(jié)果將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上或?qū)?刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。優(yōu)選地,根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中包括申請快照空間,并記錄該快照空間的地址; 讀取原磁盤空間中當(dāng)前已保存的第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄原磁盤空間的地址; 將讀取的第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的快照空間的快照備份數(shù)據(jù)區(qū)中。優(yōu)選地,在判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同之前,上述方法還包括判斷快照操作的類型,其中,快照操作的類型包括分配元數(shù)據(jù)操作、以及 刪除元數(shù)據(jù)操作。優(yōu)選地,上述方法還包括在分配元數(shù)據(jù)操作完成后,將刪除標(biāo)志位復(fù)位為初始 值,其中,刪除標(biāo)志位的初始值為零;在刪除元數(shù)據(jù)操作完成后,將分配標(biāo)志位復(fù)位為初始 值,其中,分配標(biāo)志位的初始值為零。優(yōu)選地,在快照操作的類型為分配元數(shù)據(jù)操作的情況下,步驟3具體包括如果比 較結(jié)果為相同,則根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù) 據(jù)存儲在分配控制緩存區(qū)的相應(yīng)位置索引上;如果比較結(jié)果為不同,則將分配控制緩存區(qū) 中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上。優(yōu)選地,在比較結(jié)果為不同的情況下,上述方法還包括判斷分配標(biāo)志位是否為 零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,將分配 控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,隨后再讀取元數(shù)據(jù)位圖 區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。優(yōu)選地,在快照操作的類型為刪除元數(shù)據(jù)操作的情況下,步驟3具體包括如果比 較結(jié)果為相同,則根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù) 據(jù)存儲在刪除控制緩存區(qū)的相應(yīng)位置索引上;如果比較結(jié)果為不同,則將刪除控制緩存區(qū) 中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。優(yōu)選地,在比較結(jié)果為不同的情況下,上述方法還包括判斷刪除標(biāo)志位是否為 零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,則首先 將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,隨后再讀取元 數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。根據(jù)本發(fā)明的實施例,還提供了一種元數(shù)據(jù)處理裝置,包括快照處理模塊,用于根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù) 塊拷貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及快照備份數(shù)據(jù)區(qū)與 保存元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,其中,元數(shù)據(jù)包括原磁盤空間與快照空間的 映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是否已經(jīng)分配的位圖 映射位;快照空間管理模塊,用于根據(jù)快照處理模塊的請求分配和回收快照空間,并根據(jù) 位圖對應(yīng)關(guān)系計算元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址以及元數(shù)據(jù)在元數(shù)據(jù)位圖區(qū)的元 數(shù)據(jù)位置索引;元數(shù)據(jù)管理模塊,用于判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相 同,獲取比較結(jié)果,并設(shè)置位圖映射位,根據(jù)比較結(jié)果、元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地 址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在建立的分配控制緩存區(qū)或刪除控制緩存區(qū)的相 應(yīng)位置索引上,或者根據(jù)比較結(jié)果將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖 區(qū)的相應(yīng)位置上或?qū)h除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,其中,分配標(biāo)志位或刪除標(biāo)志位為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址。優(yōu)選地,快照處理模塊具體用于申請快照空間,并記錄該快照空間的地址;讀取 原磁盤空間中當(dāng)前已保存的第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄原磁盤空間的地址;將讀 取的第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的快照空間的快照備份數(shù)據(jù)區(qū)中。優(yōu)選地,元數(shù)據(jù)管理模塊進一步用于在判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或 刪除標(biāo)志位是否相同之前,判斷快照操作的類型,其中,快照操作的類型包括分配元數(shù)據(jù) 操作、以及刪除元數(shù)據(jù)操作。優(yōu)選地,元數(shù)據(jù)管理模塊具體包括分配子模塊,用于在快照操作的類型為分配元 數(shù)據(jù)操作的情況下,如果比較結(jié)果為相同,則根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以 及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在分配控制緩存區(qū)的相應(yīng)位置索引上,如果比較結(jié)果為 不同,則將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,在分配 元數(shù)據(jù)操作完成后,將刪除標(biāo)志位復(fù)位為初始值,其中,刪除標(biāo)志位的初始值為零;刪除子 模塊,用于在快照操作的類型為刪除元數(shù)據(jù)操作的情況下,如果比較結(jié)果為相同,則根據(jù)元 數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在刪除控制緩存 區(qū)的相應(yīng)位置索引上,如果比較結(jié)果為不同,則將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從 元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,在刪除元數(shù)據(jù)操作完成后,將分配標(biāo)志位復(fù)位為初始值, 其中,分配標(biāo)志位的初始值為零。優(yōu)選地,分配子模塊進一步用于在比較結(jié)果為不同的情況下,判斷分配標(biāo)志位是 否為零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,將 分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,隨后再讀取元數(shù)據(jù) 位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;刪除子模塊進一步用于在比較結(jié)果為不同的情 況下,判斷刪除標(biāo)志位是否為零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同 步操作;如果不為零,則首先將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相 應(yīng)位置上刪除,隨后再讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。本發(fā)明有益效果如下本發(fā)明實施例通過多個快照共享統(tǒng)一快照空間,并預(yù)先設(shè)置的分配標(biāo)志位和刪除 標(biāo)志位啟動元數(shù)據(jù)的寫入和刪除,解決了現(xiàn)有技術(shù)中元數(shù)據(jù)寫操作無法滿足統(tǒng)一空間按需 分配的動態(tài)分配的策略、以及寫硬盤次數(shù)頻繁的問題,能夠節(jié)省快照空間、同時通過空間區(qū) 域識別和快照操作狀態(tài)的綜合控制,能夠減少讀寫元數(shù)據(jù)的次數(shù),提高快照系統(tǒng)的整體性 能、以及快照的處理效率。
圖1是現(xiàn)有技術(shù)中獨立快照空間的結(jié)構(gòu)示意圖;圖2是現(xiàn)有技術(shù)中元數(shù)據(jù)處理的流程圖;圖3是根據(jù)本發(fā)明實施例的元數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例的快照空間內(nèi)總體布局的示意圖;圖5是本發(fā)明實施例的元數(shù)據(jù)處理裝置的詳細結(jié)構(gòu)示意圖;圖6為本發(fā)明實施例的元數(shù)據(jù)處理方法的流程圖;圖7是本發(fā)明實施例的元數(shù)據(jù)處理方法的詳細處理的流程圖.
圖8是本發(fā)明實施例的元數(shù)據(jù)分配處理的流程圖;圖9是本發(fā)明實施例的元數(shù)據(jù)刪除處理的流程圖。
具體實施例方式以下結(jié)合附圖以及實施例,對本發(fā)明的技術(shù)方案進行進一步詳細說明。應(yīng)當(dāng)理解, 此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。裝置實施例根據(jù)本發(fā)明的實施例,提供了一種元數(shù)據(jù)處理裝置,圖3是根據(jù)本發(fā)明實施例的 元數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖,如圖3所示,根據(jù)本發(fā)明實施例的元數(shù)據(jù)處理裝置包括快 照處理模塊30、快照空間管理模塊31、元數(shù)據(jù)管理模塊32。在對本發(fā)明實施例的元數(shù)據(jù)處 理裝置進行詳細說明之前,首先對根據(jù)本發(fā)明實施例的快照空間內(nèi)總體布局進行說明。圖4是本發(fā)明實施例的快照空間內(nèi)總體布局的示意圖,如圖4所示,快照空間由超 級塊和若干個備份塊區(qū)組構(gòu)成。其中,備份塊區(qū)組的數(shù)量g由快照空間的大小決定,并記 錄在超級塊中。備份塊區(qū)組由元數(shù)據(jù)位圖區(qū)和快照備份數(shù)據(jù)區(qū)組成。其中,元數(shù)據(jù)位圖區(qū) 用來保存元數(shù)據(jù),快照備份數(shù)據(jù)區(qū)用來保存寫時拷貝操作需要備份的快照數(shù)據(jù)塊。元數(shù)據(jù) 位圖區(qū)保存η個元數(shù)據(jù),每個元數(shù)據(jù)按位圖關(guān)系對應(yīng)快照備份數(shù)據(jù)區(qū)的一個數(shù)據(jù)塊,S卩,快 照備份數(shù)據(jù)區(qū)被分為η個數(shù)據(jù)塊。每個數(shù)據(jù)塊的長度等于快照處理中等分的數(shù)據(jù)塊長度 (length),元數(shù)據(jù)位圖區(qū)長度等于一個數(shù)據(jù)塊的長度(length)。一個備份塊區(qū)組的長度即 為(n+1)乘以length,備份塊區(qū)組的數(shù)量g也由快照空間大小計算獲得。如果一個元數(shù)據(jù) 的大小為size,可以計算得到η = length/size,在元數(shù)據(jù)位圖區(qū)中,每個元數(shù)據(jù)記做m,如 上所述,一個元數(shù)據(jù)位圖區(qū)包含η個m。其中,每個m由映射地址和位圖映射位組成,映射地址即為前述保存的磁盤空間 和快照空間的映射關(guān)系地址,位圖映射位是上述記錄和快照備份數(shù)據(jù)區(qū)的位圖對應(yīng)關(guān)系, 當(dāng)該位圖映射位為1時,表示其對應(yīng)的快照備份數(shù)據(jù)區(qū)中的數(shù)據(jù)塊已經(jīng)被分配用于備份快 照寫時拷貝時發(fā)生的磁盤空間數(shù)據(jù)塊,當(dāng)該位圖映射位為0時,表示其對應(yīng)的快照備份數(shù) 據(jù)區(qū)中的數(shù)據(jù)塊被回收可用于再分配,這個一般發(fā)生在刪除快照的操作中。下面,對本發(fā)明實施例的元數(shù)據(jù)處理裝置進行詳細的說明??煺仗幚砟K30用于根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù) 據(jù)塊拷貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及快照備份數(shù)據(jù)區(qū) 與保存元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,其中,元數(shù)據(jù)包括原磁盤空間與快照空間 的映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是否已經(jīng)分配的位 圖映射位;具體地,快照處理模塊30首先需要申請快照空間,并記錄該快照空間的地址;隨 后,讀取原磁盤空間中當(dāng)前已保存的第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄原磁盤空間的地 址;最后,將讀取的第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的快照空間的快照備份數(shù)據(jù)區(qū) 中。快照空間管理模塊31用于根據(jù)快照處理模塊30的請求,分配回收快照空間,并根 據(jù)位圖對應(yīng)關(guān)系計算元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址以及元數(shù)據(jù)在元數(shù)據(jù)位圖區(qū)的 元數(shù)據(jù)位置索引;
元數(shù)據(jù)管理模塊32用于判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同,獲取比較結(jié)果,并設(shè)置位圖映射位,根據(jù)比較結(jié)果、元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首 地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在建立的分配控制緩存區(qū)或刪除控制緩存區(qū)的 相應(yīng)位置索引上,或者根據(jù)比較結(jié)果將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位 圖區(qū)的相應(yīng)位置上或?qū)h除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置 上刪除,其中,分配標(biāo)志位或刪除標(biāo)志位為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址。元數(shù)據(jù)管理模塊32在判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相 同之前,還需要判斷快照操作的類型,其中,快照操作的類型包括分配元數(shù)據(jù)操作、以及刪 除元數(shù)據(jù)操作。優(yōu)選地,元數(shù)據(jù)管理模塊32可以包括分配子模塊和刪除子模塊,其中分配子模塊用于在快照操作的類型為分配元數(shù)據(jù)操作的情況下,如果比較結(jié)果為 相同,則根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在 分配控制緩存區(qū)的相應(yīng)位置索引上,如果比較結(jié)果為不同,則將分配控制緩存區(qū)中存儲的 所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,在分配元數(shù)據(jù)操作完成后,將刪除標(biāo)志位復(fù) 位為初始值,其中,刪除標(biāo)志位的初始值為零;在比較結(jié)果為不同的情況下,分配子模塊還 需要判斷分配標(biāo)志位是否為零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步 操作;如果不為零,將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置 上,隨后再讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;刪除子模塊用于在快照操作的類型為刪除元數(shù)據(jù)操作的情況下,如果比較結(jié)果為 相同,則根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在 刪除控制緩存區(qū)的相應(yīng)位置索引上,如果比較結(jié)果為不同,則將刪除控制緩存區(qū)中存儲的 所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,在刪除元數(shù)據(jù)操作完成后,將分配標(biāo)志位 復(fù)位為初始值,其中,分配標(biāo)志位的初始值為零。在比較結(jié)果為不同的情況下,刪除子模塊 還需要判斷刪除標(biāo)志位是否為零;如果為零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同 步操作;如果不為零,則首先將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相 應(yīng)位置上刪除,隨后再讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。從上述處理可以看出,為了減少讀寫元數(shù)據(jù)的次數(shù),提高快照操作效率,盡量以一 個元數(shù)據(jù)位圖區(qū)為單位進行統(tǒng)一讀寫,本發(fā)明實施例提供了一種跨區(qū)組標(biāo)志來啟動元數(shù)據(jù) 讀寫的策略,上述區(qū)組即為備份塊區(qū)組,當(dāng)要寫的元數(shù)據(jù)映射空間跨出當(dāng)前的元數(shù)據(jù)位圖 區(qū)后啟動一次元數(shù)據(jù)的寫入操作。同時將根據(jù)不同的快照操作建立兩個元數(shù)據(jù)讀寫控制緩 沖區(qū)一個是分配控制緩沖區(qū),一個刪除控制緩沖區(qū)。快照的備份操作和刪除操作是兩個獨 立的操作,都在統(tǒng)一快照空間進行寫元數(shù)據(jù),為了確保元數(shù)據(jù)一致性,兩個緩存區(qū)采用各自 的分配標(biāo)志(alloc flag)和刪除標(biāo)志(delete flag)作為啟動同步讀元數(shù)據(jù)的判斷標(biāo)志。下面,分步驟對本發(fā)明實施例的上述技術(shù)方案的處理流程進行詳細的說明。第一步,快照處理模塊30依次處理等分的磁盤空間寫命令數(shù)據(jù)塊,數(shù)據(jù)塊長度為 length,根據(jù)寫時拷貝原理,對第一次發(fā)生寫操作的數(shù)據(jù)塊進行寫時拷貝操作,首先向快照 空間管理模塊31申請一個大小為length的空閑空間,記錄該空間的地址,讀取原磁盤空間 的數(shù)據(jù)塊,并記錄該空間的地址??煺湛臻g管理模塊31首先根據(jù)圖4所設(shè)計的統(tǒng)一快照空間布局,建立快照備份數(shù)據(jù)區(qū)的空閑數(shù)據(jù)塊池,并按照數(shù)據(jù)塊大小(length)動態(tài)分配和回收空間,并將分配的空 閑空間地址返回給快照處理模塊30。同時快照空間管理模塊31還需要管理元數(shù)據(jù)位圖區(qū) 與快照備份數(shù)據(jù)區(qū)的位圖對應(yīng)關(guān)系,依據(jù)該對應(yīng)關(guān)系來備份相應(yīng)的元數(shù)據(jù)。如圖4所示, 每個元數(shù)據(jù)位圖區(qū)的首地址即為該備份塊區(qū)組的首地址,因此,根據(jù)上述對應(yīng)關(guān)系可以計 算出每個備份的元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū),即,元數(shù)據(jù)位圖區(qū)首地址(area address), 首地址的不同則被視為跨出當(dāng)前元數(shù)據(jù)位圖區(qū)的標(biāo)志,從而啟動一次元數(shù)據(jù)寫操作。另外 依據(jù)上述對應(yīng)關(guān)系也可以計算出每個元數(shù)據(jù)被備份在當(dāng)前元數(shù)據(jù)位圖區(qū)的具體位置索引, 艮口,元數(shù)據(jù)位置索引(locate index),從而依據(jù)該索引計算元數(shù)據(jù)將要保存的地址(meta address),其中,meta address = (area address) + (Iocateindex) X size, size 為每個兀 數(shù)據(jù)的大小。
隨后,快照處理模塊30將讀取得磁盤空間數(shù)據(jù)塊拷貝到申請到的快照備份數(shù)據(jù) 區(qū)內(nèi),同時將原磁盤空間的地址和快照備份數(shù)據(jù)區(qū)的地址建立映射關(guān)系,并保存在數(shù)據(jù)結(jié) 構(gòu)中,提交給元數(shù)據(jù)管理模塊32進一步處理。第二步,元數(shù)據(jù)管理模塊32依據(jù)快照空間管理模塊31提供的方法進行啟動元數(shù) 據(jù)寫操作的控制,同時確保元數(shù)據(jù)的一致性。根據(jù)快照操作,元數(shù)據(jù)管理模塊32具體包括 分配子模塊和刪除子模塊。其中,分配子模塊首先根據(jù)快照處理模塊30提交的映射地址,確認(rèn)快照空間地 址的有效性,然后通過上述的位圖對應(yīng)關(guān)系,確認(rèn)需要保存元數(shù)據(jù)的位置索引(locate index),并設(shè)置位圖映射位為1,最后構(gòu)成一個完整的元數(shù)據(jù),然后將其保存在分配子模塊 預(yù)先建立的分配控制緩沖區(qū)相應(yīng)的位置索引處,由于緩沖區(qū)的長度等于元數(shù)據(jù)位圖區(qū)的長 度,即最終保存位置會對應(yīng)在前述的meta address處。分配子模塊還需要建立靜態(tài)的分配標(biāo)志alloc flag(上述分配標(biāo)志位)作為啟動 同步讀寫操作的判斷標(biāo)志,并將alloc flag初始化為零,alloc flag是第一次發(fā)生元數(shù)據(jù) 的寫操作或刪除操作后需要同步讀寫元數(shù)據(jù)位圖區(qū)的啟動標(biāo)志。alloc flag在處理元數(shù)據(jù) 時被賦值為元數(shù)據(jù)位圖區(qū)的首地址(area address),即元數(shù)據(jù)位圖區(qū)的第一個元數(shù)據(jù)m的 首地址。元數(shù)據(jù)位圖區(qū)包含了 η個元數(shù)據(jù),當(dāng)某個元數(shù)據(jù)超出當(dāng)前元數(shù)據(jù)位圖區(qū)時,則啟 動寫入上述對應(yīng)緩沖區(qū)的操作。具體地,每次元數(shù)據(jù)寫操作時需要計算要寫入的元數(shù)據(jù)位 圖區(qū)首地址(area address),并和alloc flag,即上次寫入元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)首地址 (area address)作比較,若相同,則將新的元數(shù)據(jù)寫入緩沖區(qū)的位置索引處;若不同,則需 啟動寫緩沖策略,將該緩沖區(qū)的元數(shù)據(jù)一起寫入快照空間內(nèi),即寫入上次寫元數(shù)據(jù)計算得 到的 area address 處。若比較結(jié)果為不同,則再進一步判斷alloc flag是否為零。若等于零,則需要先 啟動讀元數(shù)據(jù)位圖區(qū)的內(nèi)容,同步新的元數(shù)據(jù),保證數(shù)據(jù)一致性,再根據(jù)上述分配標(biāo)志方法 中元數(shù)據(jù)位圖區(qū)是否相同的判斷標(biāo)準(zhǔn)決定是否啟動寫元數(shù)據(jù);如果alloc flag不等于零, 則需要先啟動寫當(dāng)前元數(shù)據(jù)位圖區(qū)的內(nèi)容,然后再同步讀下一個新的元數(shù)據(jù)位圖區(qū),以保 證數(shù)據(jù)的一致性。為了保證刪除子模塊的數(shù)據(jù)一致性,在完成分配操作之后,分配子模塊還需要將 delete flag(上述刪除標(biāo)志位)復(fù)位為零。
當(dāng)發(fā)生刪除快照操作時,首先將該快照所占用的空間回收到空閑數(shù)據(jù)塊池,然后 將要處理的映射地址提交給刪除子模塊,隨后,還需要確認(rèn)需要保存元數(shù)據(jù)的位置索引 (locate index),并設(shè)置位圖映射位為0,構(gòu)成一個完整的元數(shù)據(jù),然后將其保存在刪除 子模塊預(yù)先建立的刪除控制緩沖區(qū)相應(yīng)的位置索引處,即保存位置會對應(yīng)在前述的meta address 處。刪除子模塊還需要建立靜態(tài)的刪除標(biāo)志位delete flag作為啟動同步讀寫操作的 判斷標(biāo)志,并初始化為零,delete flag表示分配操作后需要同步讀寫元數(shù)據(jù)位圖區(qū)的啟動 標(biāo)志。該標(biāo)志在處理元數(shù)據(jù)時被賦值為元數(shù)據(jù)位圖區(qū)的首地址(area address)。每次元數(shù)據(jù)寫操作時需要計算要寫入的元數(shù)據(jù)位圖區(qū)首地址(areaaddress),并 和delete flag,即上次寫入元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)首地址(areaaddress)作比較,若相 同,則將新的元數(shù)據(jù)寫入緩沖區(qū)的位置索引處;若不同,則需啟動寫緩沖策略,將該緩沖區(qū) 的元數(shù)據(jù)一起寫入快照空間內(nèi),即寫入上次寫元數(shù)據(jù)計算得到的area address處。若比較結(jié)果為不同,則需要再進一步判斷delete flag是否為零。若等于零,則需 要先啟動讀元數(shù)據(jù)位圖區(qū)的內(nèi)容,同步新的元數(shù)據(jù),保證數(shù)據(jù)一致性,再根據(jù)元數(shù)據(jù)位圖區(qū) 是否相同的判斷標(biāo)準(zhǔn)決定是否啟動寫元數(shù)據(jù)策略;如果不等于零,則需要先啟動寫當(dāng)前元 數(shù)據(jù)位圖區(qū)的內(nèi)容,然后再同步讀下一個新的元數(shù)據(jù)位圖區(qū),保證數(shù)據(jù)一致性。為了保證分配子模塊的數(shù)據(jù)一致性,在完成刪除操作之后,刪除子模塊需要復(fù)位 alloc flag標(biāo)志為零。第三步,快照處理模塊30將磁盤空間寫命令數(shù)據(jù)塊寫入磁盤,然后繼續(xù)下一個數(shù) 據(jù)塊的處理,直到所有分解的數(shù)據(jù)塊都處理完畢,并刷新控制緩沖區(qū)。圖5是本發(fā)明實施例的元數(shù)據(jù)處理裝置的詳細結(jié)構(gòu)示意圖,如圖5所示,快照處理 模塊50根據(jù)寫時拷貝原理,判斷第一個次寫標(biāo)志,處理分解的數(shù)據(jù)塊??煺湛臻g管理模塊 51負(fù)責(zé)快照空間的分配和回收,以及快照備份數(shù)據(jù)區(qū)和元數(shù)據(jù)位圖區(qū)以及單個元數(shù)據(jù)的對 應(yīng)關(guān)系轉(zhuǎn)換,并提供給元數(shù)據(jù)管理模塊52。元數(shù)據(jù)管理模塊52接收磁盤空間和快照空間的 映射地址,并依據(jù)快照空間管理模塊51提供的元數(shù)據(jù)和快照數(shù)據(jù)的映射地址關(guān)系,實施本 發(fā)明實施例中的元數(shù)據(jù)讀寫算法策略,以達到減少元數(shù)據(jù)讀寫的次數(shù),可以較大提高快照 操作的效率。此外,分配子模塊520和刪除子模塊521則隸屬于元數(shù)據(jù)管理模塊52,可以進 一步區(qū)分元數(shù)據(jù)的不同操作,以及保證處理時元數(shù)據(jù)的一致性。方法實施例根據(jù)本發(fā)明的實施例,提供了一種元數(shù)據(jù)處理方法,圖6為本發(fā)明實施例的元數(shù) 據(jù)處理方法的流程圖,如圖6所示,根據(jù)本發(fā)明實施例的元數(shù)據(jù)處理方法包括如下處理
步驟601,根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到 預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及快照備份數(shù)據(jù)區(qū)與保存元數(shù) 據(jù)的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,并根據(jù)位圖對應(yīng)關(guān)系計算元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū) 的首地址以及元數(shù)據(jù)在元數(shù)據(jù)位圖區(qū)的元數(shù)據(jù)位置索引,其中,元數(shù)據(jù)包括原磁盤空間與 快照空間的映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是否已經(jīng) 分配的位圖映射位;在步驟601中,首先需要申請快照空間,并記錄該快照空間的地址;隨后,讀取原 磁盤空間中當(dāng)前已保存的第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄原磁盤空間的地址;并將讀取的第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的快照空間的快照備份數(shù)據(jù)區(qū)中。步驟602,判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同,獲取比較 結(jié)果,并設(shè)置位圖映射位,其中,分配標(biāo)志位或刪除標(biāo)志位為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址;在判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同之前,還需要判斷 快照操作的類型,其中,快照操作的類型包括分配元數(shù)據(jù)操作、以及刪除元數(shù)據(jù)操作。步驟603,根據(jù)比較結(jié)果、元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置 索引,將元數(shù)據(jù)存儲在建立的分配控制緩存區(qū)或刪除控制緩存區(qū)的相應(yīng)位置索引上,或者 根據(jù)比較結(jié)果將分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上或 將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。為了保持?jǐn)?shù)據(jù)的一致性,在分配元數(shù)據(jù)操作完成后,將刪除標(biāo)志位復(fù)位為初始值, 其中,刪除標(biāo)志位的初始值為零;并且在刪除元數(shù)據(jù)操作完成后,將分配標(biāo)志位復(fù)位為初始 值,其中,分配標(biāo)志位的初始值為零。具體地,在快照操作的類型為分配元數(shù)據(jù)操作的情況下,如果比較結(jié)果為相同,則 根據(jù)元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在分配控 制緩存區(qū)的相應(yīng)位置索引上;如果比較結(jié)果為不同,則將分配控制緩存區(qū)中存儲的所有元 數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上。優(yōu)選地,在比較結(jié)果為不同的情況下,還需要判斷分配標(biāo)志位是否為零;如果為 零,則讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,將分配控制緩存區(qū) 中存儲的所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,隨后再讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù), 進行元數(shù)據(jù)的同步操作。在快照操作的類型為刪除元數(shù)據(jù)操作的情況下,如果比較結(jié)果為相同,則根據(jù)元 數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在刪除控制緩存 區(qū)的相應(yīng)位置索引上;如果比較結(jié)果為不同,則將刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從 元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。優(yōu)選地,在比較結(jié)果為不同的情況下,判斷刪除標(biāo)志位是否為零;如果為零,則讀 取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,則首先將刪除控制緩存區(qū)中 存儲的所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,隨后再讀取元數(shù)據(jù)位圖區(qū)的數(shù)據(jù), 進行元數(shù)據(jù)的同步操作。從上述處理可以看出,通過多個快照共享統(tǒng)一快照空間,并預(yù)先設(shè)置的分配標(biāo)志 位和刪除標(biāo)志位啟動元數(shù)據(jù)的寫入和刪除,能夠節(jié)省快照空間、同時通過空間區(qū)域識別和 快照操作狀態(tài)的綜合控制,能夠減少讀寫元數(shù)據(jù)的次數(shù),提高快照系統(tǒng)的整體性能、以及快 照的處理效率。需要說明的是,本發(fā)明實施例的相關(guān)細節(jié)可以參照上述裝置實施例進行理解,在 此不再贅述,以下結(jié)合附圖,對本發(fā)明實施例的元數(shù)據(jù)處理方法的詳細處理流程進行說明。圖7是本發(fā)明實施例的元數(shù)據(jù)處理方法的詳細處理的流程圖,如圖7所示,包括如 下處理步驟701,主機向磁盤空間disk發(fā)起寫請求,其請求起始地址為addr,長度為 Size0步驟702,快照處理模塊根據(jù)定義的塊長度(length)進行平均拆分主機的寫請求長度的操作,即等分為 split = (size/length)個塊寫請求。Datai = Idata1, data2,· · ·, dataj,η = split,按順序依次對(Iatai進行快照處理。步驟703,根據(jù)寫時拷貝原理,對第一次發(fā)生寫操作的數(shù)據(jù)塊進行寫時拷貝操作,向快照空間管理模塊申請快照空間,然后讀取原磁盤空間的數(shù)據(jù)塊,拷貝到快照空間。步驟704,建立磁盤空間和快照空間的映射地址關(guān)系,并提交給元數(shù)據(jù)管理模塊進 行處理。步驟705,判斷快照操作類型是分配元數(shù)據(jù)操作還是刪除元數(shù)據(jù)操作,如果是分配操作,則進入步驟706 ;如果是刪除操作,則進入步驟707。步驟706,分配處理子流程,具體操作如圖8所示。步驟707,刪除處理子流程,具體操作如圖9所示。步驟708,將Clatai寫入磁盤,然后回到步驟703,繼續(xù)進行下一個Clatai的處理,直到所有分解的數(shù)據(jù)塊都處理完畢。圖8是本發(fā)明實施例的元數(shù)據(jù)分配處理的流程圖,如圖8所示,包括如下處理步驟801.初始化alloc flag標(biāo)志為零。步驟802,分配長度為length的分配控制buffer緩沖區(qū)。步驟803,計算備份的元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū),即元數(shù)據(jù)位圖區(qū)首地址(area address),并保存至丨J temp中。步驟804,比較temp和alloc flag是否相同。步驟805,若相同,設(shè)置位圖映射位為1,構(gòu)成一個完整的元數(shù)據(jù),然后執(zhí)行步驟 811 ;若不同則執(zhí)行步驟806。步驟806,判斷alloc flag標(biāo)志是否為零。步驟807,若為零,讀取當(dāng)前元數(shù)據(jù)位圖區(qū)的內(nèi)容到控制緩沖區(qū)內(nèi),然后執(zhí)行步驟 810中的處理;若不為零,則進入步驟808中進一步處理。步驟808,啟動刷新buffer到快照空間的相應(yīng)元數(shù)據(jù)位圖區(qū)中,然后執(zhí)行步驟 809.步驟809,讀取當(dāng)前元數(shù)據(jù)位圖區(qū)域的內(nèi)容,然后執(zhí)行步驟810中的處理。步驟810,繼續(xù)處理當(dāng)前元數(shù)據(jù),轉(zhuǎn)到步驟805進行處理。步驟811,計算元數(shù)據(jù)在當(dāng)前元數(shù)據(jù)位圖區(qū)的位置索引(locate index),并將元數(shù) 據(jù)存入buffer的相應(yīng)的位置索引中。步驟812,判斷所有Datai I/O是否處理完。步驟813,若處理完畢,則刷新buffer到快照空間的相應(yīng)元數(shù)據(jù)位圖區(qū)中。步驟814,將delete flag置為零,作為同步數(shù)據(jù)一致性的標(biāo)志。圖9是本發(fā)明實施例的元數(shù)據(jù)刪除處理的流程圖,如圖9所示,包括如下處理步驟901,初始化delete flag標(biāo)志為零。步驟902,分配長度為length的刪除控制buffer緩沖區(qū)。步驟903,計算刪除的元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū),即元數(shù)據(jù)位圖區(qū)首地址(area address),并保存至丨J temp中步驟904,比較temp和delete flag是否相同。步驟905,若相同,設(shè)置位圖映射位為0,構(gòu)成一個完整的元數(shù)據(jù),然后執(zhí)行步驟911中的處理;若不同則執(zhí)行步驟906。步驟906,判斷delete flag標(biāo)志是否為零。步驟907,若為零,讀取當(dāng)前元數(shù)據(jù)位圖區(qū)的內(nèi)容到控制緩沖區(qū)內(nèi),然后執(zhí)行步驟 910 ;若不為零,則進入步驟908中進一步處理。步驟908,啟動刷新buffer到快照空間的相應(yīng)元數(shù)據(jù)位圖區(qū)中,然后執(zhí)行步驟 909。步驟909,讀取當(dāng)前元數(shù)據(jù)位圖區(qū)域的內(nèi)容,然后執(zhí)行步驟910中的處理。步驟910,繼續(xù)處理當(dāng)前元數(shù)據(jù),轉(zhuǎn)到步驟905進行處理。步驟911,計算元數(shù)據(jù)在當(dāng)前元數(shù)據(jù)位圖區(qū)的位置索引(locate index),并將元數(shù) 據(jù)存入buffer的相應(yīng)的位置索引中。
步驟912,判斷所有DataJ/Ο是否處理完。步驟913,若處理完畢,則刷新buffer到快照空間的相應(yīng)元數(shù)據(jù)位圖區(qū)中。步驟914,將alloc flag置為零,作為同步數(shù)據(jù)一致性的標(biāo)志。本發(fā)明實施例通過多個快照共享統(tǒng)一快照空間,并預(yù)先設(shè)置的分配標(biāo)志位和刪除 標(biāo)志位啟動元數(shù)據(jù)的寫入和刪除,解決了現(xiàn)有技術(shù)中元數(shù)據(jù)寫操作無法滿足統(tǒng)一空間按需 分配的動態(tài)分配的策略、以及寫硬盤次數(shù)頻繁的問題,能夠節(jié)省快照空間、同時通過空間區(qū) 域識別和快照操作狀態(tài)的綜合控制,能夠減少讀寫元數(shù)據(jù)的次數(shù),提高快照系統(tǒng)的整體性 能、以及快照的處理效率。盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實施例,本領(lǐng)域的技術(shù)人員將意識到 各種改進、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實施例。
權(quán)利要求
一種元數(shù)據(jù)處理方法,其特征在于,包括如下處理步驟1,根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及所述快照備份數(shù)據(jù)區(qū)與保存所述元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,并根據(jù)所述位圖對應(yīng)關(guān)系計算所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址以及所述元數(shù)據(jù)在所述元數(shù)據(jù)位圖區(qū)的元數(shù)據(jù)位置索引,其中,所述元數(shù)據(jù)包括所述原磁盤空間與所述快照空間的映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是否已經(jīng)分配的位圖映射位;步驟2,判斷所述首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同,獲取比較結(jié)果,并設(shè)置所述位圖映射位,其中,所述分配標(biāo)志位或刪除標(biāo)志位為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址;步驟3,根據(jù)所述比較結(jié)果、所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及所述元數(shù)據(jù)位置索引,將所述元數(shù)據(jù)存儲在建立的分配控制緩存區(qū)或刪除控制緩存區(qū)的相應(yīng)位置索引上,或者根據(jù)所述比較結(jié)果將所述分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上或?qū)⑺鰟h除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)寫時拷貝操作將原磁盤空間中 第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中包括申請快照空間,并記錄該快照空間的地址;讀取所述原磁盤空間中當(dāng)前已保存的所述第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄所述原 磁盤空間的地址;將讀取的所述第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的所述快照空間的所述快照備 份數(shù)據(jù)區(qū)中。
3.如權(quán)利要求1所述的方法,其特征在于,在判斷所述首地址與預(yù)先設(shè)置的分配標(biāo)志 位或刪除標(biāo)志位是否相同之前,所述方法還包括判斷快照操作的類型,其中,所述快照操作的類型包括分配元數(shù)據(jù)操作、以及刪除元 數(shù)據(jù)操作。
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括在分配元數(shù)據(jù)操作完成后,將所述刪除標(biāo)志位復(fù)位為初始值,其中,所述刪除標(biāo)志位的 初始值為零;在刪除元數(shù)據(jù)操作完成后,將所述分配標(biāo)志位復(fù)位為初始值,其中,所述分配標(biāo)志位的 初始值為零。
5.如權(quán)利要求4所述的方法,其特征在于,在所述快照操作的類型為分配元數(shù)據(jù)操作 的情況下,所述步驟3具體包括如果所述比較結(jié)果為相同,則根據(jù)所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及所 述元數(shù)據(jù)位置索引,將所述元數(shù)據(jù)存儲在所述分配控制緩存區(qū)的相應(yīng)位置索引上;如果所述比較結(jié)果為不同,則將所述分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入所述元 數(shù)據(jù)位圖區(qū)的相應(yīng)位置上。
6.如權(quán)利要求5所述的方法,其特征在于,在所述比較結(jié)果為不同的情況下,所述方法 還包括判斷所述分配標(biāo)志位是否為零;如果為零,則讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,將所述分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入所述元數(shù)據(jù)位圖區(qū)的相 應(yīng)位置上,隨后再讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。
7.如權(quán)利要求4所述的方法,其特征在于,在所述快照操作的類型為刪除元數(shù)據(jù)操作 的情況下,所述步驟3具體包括如果所述比較結(jié)果為相同,則根據(jù)所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及所 述元數(shù)據(jù)位置索引,將所述元數(shù)據(jù)存儲在所述刪除控制緩存區(qū)的相應(yīng)位置索引上;如果所述比較結(jié)果為不同,則將所述刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從所述元數(shù) 據(jù)位圖區(qū)的相應(yīng)位置上刪除。
8.如權(quán)利要求7所述的方法,其特征在于,在所述比較結(jié)果為不同的情況下,所述方法 還包括判斷所述刪除標(biāo)志位是否為零;如果為零,則讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為零,則首先將所述刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從所述元數(shù)據(jù)位圖區(qū) 的相應(yīng)位置上刪除,隨后再讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。
9.一種元數(shù)據(jù)處理裝置,其特征在于,包括快照處理模塊,用于根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷 貝到預(yù)先申請的快照空間的快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及所述快照備份數(shù)據(jù)區(qū)與 保存所述元數(shù)據(jù)的元數(shù)據(jù)位圖區(qū)的位圖對應(yīng)關(guān)系,其中,所述元數(shù)據(jù)包括所述原磁盤空間 與所述快照空間的映射地址、以及表示相應(yīng)的元數(shù)據(jù)所對應(yīng)的快照備份數(shù)據(jù)區(qū)的數(shù)據(jù)塊是 否已經(jīng)分配的位圖映射位;快照空間管理模塊,用于根據(jù)所述快照處理模塊的請求,分配回收所述快照空間,并根 據(jù)所述位圖對應(yīng)關(guān)系計算所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址以及所述元數(shù)據(jù)在所 述元數(shù)據(jù)位圖區(qū)的元數(shù)據(jù)位置索引;元數(shù)據(jù)管理模塊,用于判斷所述首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相 同,獲取比較結(jié)果,并設(shè)置所述位圖映射位,根據(jù)所述比較結(jié)果、所述元數(shù)據(jù)所屬的元數(shù)據(jù) 位圖區(qū)的首地址、以及所述元數(shù)據(jù)位置索引,將所述元數(shù)據(jù)存儲在建立的分配控制緩存區(qū) 或刪除控制緩存區(qū)的相應(yīng)位置索引上,或者根據(jù)所述比較結(jié)果將所述分配控制緩存區(qū)中存 儲的所有元數(shù)據(jù)寫入所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上或?qū)⑺鰟h除控制緩存區(qū)中存儲的 所有元數(shù)據(jù)從所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,其中,所述分配標(biāo)志位或刪除標(biāo)志位 為當(dāng)前元數(shù)據(jù)位圖區(qū)的首地址。
10.如權(quán)利要求9所述的裝置,其特征在于,所述快照處理模塊具體用于申請快照空間,并記錄該快照空間的地址;讀取所述原磁盤空間中當(dāng)前已保存的所述第一次發(fā)生寫操作的數(shù)據(jù)塊,并記錄所述原 磁盤空間的地址;將讀取的所述第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到申請的所述快照空間的所述快照備 份數(shù)據(jù)區(qū)中。
11.如權(quán)利要求9所述的裝置,其特征在于,所述元數(shù)據(jù)管理模塊進一步用于在判斷所述首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同之前,判斷快照操作的類型, 其中,所述快照操作的類型包括分配元數(shù)據(jù)操作、以及刪除元數(shù)據(jù)操作。
12.如權(quán)利要求11所述的裝置,其特征在于,所述元數(shù)據(jù)管理模塊具體包括分配子模塊,用于在所述快照操作的類型為分配元數(shù)據(jù)操作的情況下,如果所述比較 結(jié)果為相同,則根據(jù)所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及所述元數(shù)據(jù)位置索引, 將所述元數(shù)據(jù)存儲在所述分配控制緩存區(qū)的相應(yīng)位置索引上,如果所述比較結(jié)果為不同, 則將所述分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,在分 配元數(shù)據(jù)操作完成后,將所述刪除標(biāo)志位復(fù)位為初始值,其中,所述刪除標(biāo)志位的初始值為 零;刪除子模塊,用于在所述快照操作的類型為刪除元數(shù)據(jù)操作的情況下,如果所述比較 結(jié)果為相同,則根據(jù)所述元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及所述元數(shù)據(jù)位置索引, 將所述元數(shù)據(jù)存儲在所述刪除控制緩存區(qū)的相應(yīng)位置索引上,如果所述比較結(jié)果為不同, 則將所述刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除,在 刪除元數(shù)據(jù)操作完成后,將所述分配標(biāo)志位復(fù)位為初始值,其中,所述分配標(biāo)志位的初始值 為零。
13.如權(quán)利要求12所述的方法,其特征在于,所述分配子模塊進一步用于在所述比較結(jié)果為不同的情況下,判斷所述分配標(biāo)志位 是否為零;如果為零,則讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為 零,將所述分配控制緩存區(qū)中存儲的所有元數(shù)據(jù)寫入所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上,隨 后再讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;所述刪除子模塊進一步用于在所述比較結(jié)果為不同的情況下,判斷所述刪除標(biāo)志位 是否為零;如果為零,則讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作;如果不為 零,則首先將所述刪除控制緩存區(qū)中存儲的所有元數(shù)據(jù)從所述元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上 刪除,隨后再讀取所述元數(shù)據(jù)位圖區(qū)的數(shù)據(jù),進行元數(shù)據(jù)的同步操作。
全文摘要
本發(fā)明公開了一種元數(shù)據(jù)處理方法及裝置,該方法包括根據(jù)寫時拷貝操作將原磁盤空間中第一次發(fā)生寫操作的數(shù)據(jù)塊拷貝到快照備份數(shù)據(jù)區(qū)中,建立元數(shù)據(jù)、以及位圖對應(yīng)關(guān)系,根據(jù)位圖對應(yīng)關(guān)系計算元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址以及元數(shù)據(jù)在元數(shù)據(jù)位圖區(qū)的元數(shù)據(jù)位置索引;判斷首地址與預(yù)先設(shè)置的分配標(biāo)志位或刪除標(biāo)志位是否相同,獲取比較結(jié)果,并設(shè)置位圖映射位;根據(jù)比較結(jié)果、元數(shù)據(jù)所屬的元數(shù)據(jù)位圖區(qū)的首地址、以及元數(shù)據(jù)位置索引,將元數(shù)據(jù)存儲在分配控制緩存區(qū)或刪除控制緩存區(qū)的相應(yīng)位置索引上,或?qū)⒎峙淇刂凭彺鎱^(qū)中所有元數(shù)據(jù)寫入元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上或?qū)h除控制緩存區(qū)中所有元數(shù)據(jù)從元數(shù)據(jù)位圖區(qū)的相應(yīng)位置上刪除。
文檔編號G06F12/02GK101814044SQ201010149720
公開日2010年8月25日 申請日期2010年4月19日 優(yōu)先權(quán)日2010年4月19日
發(fā)明者張傲岸 申請人:中興通訊股份有限公司