亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置制造方法

文檔序號:6520168閱讀:141來源:國知局
一種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置制造方法
【專利摘要】本申請公開了一種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置,其中,所述方法包括:確定邏輯單元號LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū);查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖;如果不存在,則在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化;如果存在,則直接在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。通過上述方式,本申請能夠減少位圖占用的存儲資源,降低對內(nèi)存資源的浪費。
【專利說明】一種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及存儲【技術(shù)領(lǐng)域】,特別是涉及ー種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,通常使用位圖(Bitmap)技術(shù)來記錄邏輯單元號(Logic UnitNumber,簡稱LUN)中數(shù)據(jù)是否發(fā)生變化。具體,在內(nèi)存中申請ー塊容量固定的內(nèi)存作為記錄LUN中邏輯塊(chunk)變化情況的位圖,其中,所述位圖所需的容量由LUN的最大容量和位圖中的位所對應(yīng)的邏輯塊的大小共同決定的。例如,如圖1所示,設(shè)定位圖中一位對應(yīng)記錄一個邏輯塊中的數(shù)據(jù)變化情況,LUN的最大容量為64TB,LUN中每個邏輯塊的大小為64KB,則需要容量為IG bit的位圖,在LUN沒有任何數(shù)據(jù)發(fā)生變化是,位圖所有位的數(shù)值為“0”,當(dāng)LUN中邏輯塊chunkO、chunk 1、chunk2和chunk9中的數(shù)據(jù)發(fā)生了變化,貝U相應(yīng)地,位圖中第1、2、3及9位被置“ I”。故通過確定位圖中數(shù)值為I的位所在的位置,則可獲知LUN中哪些邏輯塊發(fā)生數(shù)據(jù)變化。
[0003]然而,對于目前多樣化的存儲技術(shù),特別是可動態(tài)擴展的存儲技術(shù),如精簡配置技木,其對LUN的容量可按需分配,且通常情況下其實際容量遠(yuǎn)小于最大容量。若仍使用現(xiàn)有的位圖技術(shù),則存在如下問題:位圖的容量是固定的,如果要確保能夠記錄LUN中的所有邏輯塊是否發(fā)生變化,則位圖容量必須根據(jù)LUN的最大支持容量進行申請,而非LUN的實際容量,故造成對申請的內(nèi)存資源的浪費。而且,在一般系統(tǒng)中支持多個LUN,如支持1024個LUN的情況下,根據(jù)上例,每個ITB的LUN需要申請IG bit容量的位圖,則ー個系統(tǒng)共需要1024*1G bit=lT bit的內(nèi)存用作位圖,顯然,僅用于記錄變化的位圖也占用了大量的內(nèi)存資源,如果規(guī)格繼續(xù)増大,如此大內(nèi)存需求,是存儲系統(tǒng)難以支撐的。

【發(fā)明內(nèi)容】

[0004]本申請主要解決的技術(shù)問題是提供一種記錄存儲數(shù)據(jù)發(fā)生變化的方法及裝置,能夠減少位圖占用的存儲資源,降低對內(nèi)存資源的浪費。
[0005]為解決上述技術(shù)問題,本申請第一方面提供一種記錄存儲數(shù)據(jù)發(fā)生變化的方法,所述方法包括以下步驟:確定邏輯單元號LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),其中,所述邏輯單元號LUN至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊;查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,其中,所述位圖集用于放置多個位圖,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖;如果不存在,則在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化;如果存在,則直接在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
[0006]結(jié)合第一方面,本申請第一方面第一種可能的實施方式為:所述查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖的步驟之前,所述方法還包括:將所述邏輯單元號LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊;將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),其中,所述第一數(shù)值至少為2 ;確定每個邏輯塊區(qū)的對應(yīng)位圖信息,其中,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0007]結(jié)合第一方面的第一種可能的實施方式,本申請第一方面第二種可能的實施方式為:所述在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化的步驟包括:根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0008]結(jié)合第一方面的第二種可能的實施方式,本申請第一方面第三種可能的實施方式為:所述方法還包括:在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件;在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位;將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0009]結(jié)合第一方面的第一至三任ー種可能的實施方式,本申請第一方面第四種可能的實施方式為:所述方法還包括:檢測所述位圖集中是否存在所有位均為所述第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
[0010]為了解決上述技術(shù)問題,本申請第二方面提供一種記錄存儲數(shù)據(jù)發(fā)生變化的裝置,所述裝置包括確定模塊、查詢模塊、建立模塊和記錄模塊,所述確定模塊用于確定邏輯單元號LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),并將確定的邏輯塊區(qū)發(fā)生給所述查詢模塊,其中,所述邏輯單元號LUN至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊;所述查詢模塊用于查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,并將查詢結(jié)果發(fā)送給建立模塊和記錄模塊,其中,所述位圖集用于放置多個位圖,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖;所述建立模塊用于在未查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并將所述對應(yīng)位圖發(fā)送給所述記錄模塊;所述記錄模塊用于在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
[0011]結(jié)合第二方面,本申請第二方面第一種可能的實施方式為:還包括劃分模塊,所述劃分模塊用于將所述邏輯單元號LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊,將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),確定每個邏輯塊區(qū)的對應(yīng)位圖信息,并將所述每個邏輯塊區(qū)的對應(yīng)位圖信息發(fā)送給所述記錄模塊,其中,所述第一數(shù)值至少為2,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0012]結(jié)合第二方面的第一種可能的實施方式,本申請第二方面第二種可能的實施方式為:所述記錄模塊具體用于根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,并記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0013]結(jié)合第二方面的第二種可能的實施方式,本申請第二方面第三種可能的實施方式為:還包括復(fù)制模塊,所述復(fù)制模塊用于在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件,在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位,將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0014]結(jié)合第二方面的第一至三任ー種可能的實施方式,本申請第二方面第四種可能的實施方式為:還包括刪除模塊,所述刪除模塊用于檢測所述位圖集中是否存在所有位均為所述第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
[0015]通過上述方案,本申請采用位圖集來實現(xiàn)記錄LUN的存儲數(shù)據(jù)的變化,并在邏輯塊發(fā)生變化時,才建立該邏輯塊的對應(yīng)位圖,區(qū)別于固定采用ー個位圖記錄LUN所有存儲數(shù)據(jù)的變化情況的現(xiàn)有技術(shù),本申請采用動態(tài)位圖方式,使得位圖總占用的存儲空間與LUN發(fā)生變化的邏輯塊數(shù)對應(yīng),實現(xiàn)了位圖的按需分配,減少占用存儲資源,同時,也提高了位圖的利用效率,減少對位圖內(nèi)存資源的浪費。
【專利附圖】

【附圖說明】
[0016]圖1是現(xiàn)有技術(shù)中LUN中邏輯塊與位圖間的對應(yīng)關(guān)系圖;
[0017]圖2是本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法ー實施方式的流程圖;
[0018]圖3是本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法另ー實施方式的流程圖;
[0019]圖4是圖3所示的記錄存儲數(shù)據(jù)發(fā)生變化的方法中預(yù)先設(shè)置每個邏輯塊區(qū)的邏輯塊信息和對應(yīng)位圖信息的流程圖;
[0020]圖5是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置進行異步遠(yuǎn)程復(fù)制ー實施方式中位圖集的結(jié)構(gòu)示意圖;
[0021]圖6是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置進行同步遠(yuǎn)程復(fù)制ー實施方式中位圖集的結(jié)構(gòu)示意圖;
[0022]圖7是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置ー實施方式的結(jié)構(gòu)示意圖;
[0023]圖8是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置另ー實施方式的結(jié)構(gòu)示意圖;
[0024]圖9是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置再ー實施方式的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025]下面結(jié)合附圖和具體的實施方式進行說明。
[0026]請參閱圖2,圖2是本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法ー實施方式的流程圖。本實施方式中,所述方法包括以下步驟:
[0027]步驟S201:記錄存儲數(shù)據(jù)發(fā)生變化的裝置確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0028]本實施方式中,LUN采用精簡配置(thin)技術(shù),所述LUN可進行動態(tài)擴展。其中,所述LUN作為存儲空間,至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊,每個邏輯塊定義為一定容量大小的存儲數(shù)據(jù)。本實施方式中,LUN中每個邏輯塊均分配有不同的邏輯塊號,將每個邏輯塊區(qū)的邏輯塊信息預(yù)先保存在本地,例如,第一邏輯塊區(qū)包含邏輯塊0和1,第二邏輯塊區(qū)包含邏輯塊2和3……如此類推。在LUN中的邏輯塊發(fā)生變化時,記錄存儲數(shù)據(jù)發(fā)生變化的裝置獲取LUN中當(dāng)前變化邏輯塊的邏輯塊號,預(yù)設(shè)的邏輯塊區(qū)與邏輯塊間的關(guān)系為每個邏輯塊包括兩個邏輯塊,確定所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0029]步驟S202:查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖。
[0030]本申請中,LUN中的邏輯塊上的存儲數(shù)據(jù)發(fā)生變化即為LUN中的邏輯塊發(fā)生變化。在LUN中的邏輯塊發(fā)生變化吋,記錄存儲數(shù)據(jù)發(fā)生變化的裝置采用所述位圖集記錄所述LUN中邏輯塊發(fā)生變化的情況。所述位圖集可以不同的數(shù)據(jù)結(jié)構(gòu)方式(如樹結(jié)構(gòu)、列表)保存在存儲介質(zhì)中,優(yōu)化地,所述裝置也可將位圖集暫存在緩存中,以加速位圖空間的處理,并定時將緩存中的位圖集數(shù)據(jù)存放在永久存儲介質(zhì),例如硬盤、flash。具體地,所述位圖集用于放置多個位圖,其中,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化。
[0031]具體,所述裝置本地預(yù)設(shè)有LUN中每個邏輯塊區(qū)的對應(yīng)位圖信息。當(dāng)LUN中的邏輯塊發(fā)生變化時,記錄存儲數(shù)據(jù)發(fā)生變化的裝置根據(jù)預(yù)設(shè)的對應(yīng)位圖信息獲得當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖信息,并查詢位圖集中是否包括獲取的對應(yīng)位圖信息,如果不包括,即位圖集中不存在當(dāng)前變化邏輯塊的邏輯塊區(qū)的對應(yīng)位圖,則執(zhí)行步驟S203,如果包括,即位圖集中已存在當(dāng)前變化邏輯塊的邏輯塊區(qū)的對應(yīng)位圖,則執(zhí)行步驟S204。其中,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖。
[0032]舉例說明,LUN中劃分為16個邏輯塊區(qū),每個邏輯塊區(qū)包括8個邏輯塊。記錄存儲數(shù)據(jù)發(fā)生變化的裝置預(yù)先設(shè)置每個邏輯塊區(qū)的對應(yīng)位圖信息為第一邏輯塊區(qū)的對應(yīng)位圖為第一位圖,第二邏輯塊區(qū)的對應(yīng)位圖為第二位圖……如此類推,且每個位圖包括8個位,每個位用于記錄一個邏輯塊是否發(fā)生變化。對應(yīng)地,第一位圖對應(yīng)用于記錄第一邏輯塊區(qū),即第I到8個邏輯塊,第二位圖對應(yīng)用于記錄第二邏輯塊區(qū),即第9到16個邏輯塊,第三位圖對應(yīng)用于記錄第三邏輯塊區(qū),即第17到24個邏輯塊……如此類推。在LUN中的第10、15個邏輯塊發(fā)生變化時,所述裝置確定所述當(dāng)前變化的邏輯塊位于第二邏輯塊區(qū),根據(jù)上述預(yù)設(shè)的邏輯塊區(qū)對 應(yīng)位圖信息,獲得所述第二邏輯塊區(qū)的對應(yīng)位圖信息為第二位圖,所述裝置查詢當(dāng)前的位圖集中建立的位圖的信息是否包括第二位圖信息,如果包括,則位圖集中已建立第二邏輯塊區(qū)的對應(yīng)位圖,如果不包括,則位圖集中未建立第二邏輯塊區(qū)的對應(yīng)位圖。
[0033]步驟S203:在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
[0034]如果在位圖集中未查詢到所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,則記錄存儲數(shù)據(jù)發(fā)生變化的裝置在所述位圖集中建立所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,并且在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化,例如,將對應(yīng)位圖中對應(yīng)當(dāng)前變化邏輯塊的位設(shè)置為第一標(biāo)記,以標(biāo)識該位對應(yīng)的邏輯塊發(fā)生變化,而對應(yīng)位圖中對應(yīng)沒有發(fā)生變化的邏輯塊的位則設(shè)置為第二標(biāo)記,以標(biāo)識該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0035]步驟S204:直接在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
[0036]如果在位圖集中查詢到所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,則記錄存儲數(shù)據(jù)發(fā)生變化的裝置在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化,例如,將對應(yīng)位圖中對應(yīng)當(dāng)前變化邏輯塊的位設(shè)置為第一標(biāo)記,以標(biāo)識該位對應(yīng)的邏輯塊發(fā)生變化,而對應(yīng)位圖中對應(yīng)沒有發(fā)生變化的邏輯塊的位則設(shè)置為第二標(biāo)記,以標(biāo)識該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0037]本實施方式中,采用位圖集方式記錄LUN中的邏輯塊是否發(fā)生變化,將LUN分為多個邏輯塊區(qū),一個邏輯塊區(qū)對應(yīng)ー個位圖,且位圖集中的位圖產(chǎn)生條件為:在邏輯塊發(fā)生變化時,才建立所述邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,無需產(chǎn)生沒有發(fā)生變化的邏輯塊區(qū)的對應(yīng)位圖,實現(xiàn)了位圖按需分配,減少對位圖空間的浪費,同時,也減少了總位圖占用的存儲資源。
[0038]需要說明的是,本實施方式中的LUN采用精簡配置技木,但在其他實施方式中,所述LUN還可采用其他可進行動態(tài)擴展的技術(shù),或者LUN的不可進行動態(tài)擴展,其容量固定大小,其LUN的具體種類并不影響本申請方法的實施,故在此不對LUN進行具體限定。
[0039]請參閱圖3,圖3是本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法另ー實施方式的流程圖。本實施方式中,所述方法包括以下步驟:
[0040]步驟S301:記錄存儲數(shù)據(jù)發(fā)生變化的裝置確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0041]具體地,請參閱圖4,在采用位圖集以記錄邏輯塊發(fā)生變化情況之前,本方法還包括預(yù)先設(shè)置每個邏輯塊區(qū)的邏輯塊信息和對應(yīng)位圖信息,具體為:
[0042]步驟S401:將所述LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊。
[0043]記錄存儲數(shù)據(jù)發(fā)生變化的裝置將LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊,例如,LUN當(dāng)前分配的容量為1GB,所述裝置將LUN劃分為1024個容量為IKB的邏輯塊,每個邏輯塊分配有不同的邏輯塊號,例如,邏輯塊O、邏輯塊1、邏輯塊2等。
[0044]步驟S402:將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),其中,所述第一數(shù)值至少為2。
[0045]例如,LUN中包括有1024個邏輯塊,將1024個邏輯塊劃分為128個邏輯塊區(qū),每個邏輯塊區(qū)包括8個邏輯塊,如第一邏輯塊區(qū)包括邏輯塊0至7、第二邏輯塊區(qū)包括邏輯塊8至15……如此類推。
[0046]當(dāng)然,所述裝置未必按順序劃分邏輯塊,在其他實施方式中,根據(jù)實際情況需要,可將LUN中不是連續(xù)的邏輯塊劃分在ー個邏輯塊區(qū),而且,每個邏輯塊區(qū)的邏輯塊數(shù)并不限定為全部相同,此時,在所述裝置劃分好邏輯塊區(qū)后,需將每個邏輯塊區(qū)的邏輯塊信息(如邏輯塊號)保存在本地,以使所述裝置能夠根據(jù)保存的邏輯塊信息確定LUN中邏輯塊所在的邏輯塊區(qū)。
[0047]步驟S403:確定每個邏輯塊區(qū)的對應(yīng)位圖信息。
[0048]所述裝置為LUN中每個邏輯塊區(qū)對應(yīng)設(shè)置一個對應(yīng)位圖信息,并將每個邏輯塊區(qū)的對應(yīng)位圖信息保存在本地,其中,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。例如,所述第一標(biāo)記為1,第二標(biāo)記為0,當(dāng)邏輯塊發(fā)生變化吋,則將對應(yīng)該邏輯塊的位置1,如果邏輯塊沒有發(fā)生變化,則將對應(yīng)該邏輯塊的位置0,通過判斷該位為0還是1,則可知道該位對應(yīng)的邏輯塊是否發(fā)生變化。[0049]記錄存儲數(shù)據(jù)發(fā)生變化的裝置通過上述步驟S401-S403,進行預(yù)設(shè)每個邏輯塊區(qū)的邏輯塊信息和對應(yīng)位圖信息后,所述裝置在邏輯塊發(fā)生變化時,則執(zhí)行步驟S301-S308,以采用位圖集記錄發(fā)生變化的邏輯塊情況。
[0050]本實施方式中,在LUN中的邏輯塊發(fā)生變化吋,記錄存儲數(shù)據(jù)發(fā)生變化的裝置獲取當(dāng)前變化的邏輯塊信息,井根據(jù)預(yù)設(shè)邏輯塊區(qū)與邏輯塊間的關(guān)系或者保存的每個邏輯塊區(qū)的邏輯塊信息,確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。例如,LUN中邏輯塊順序分配為多個邏輯塊區(qū),且每個邏輯塊區(qū)均包括8個邏輯塊,即第一邏輯塊區(qū)包括邏輯塊0-7,第二邏輯塊區(qū)包括邏輯塊8-16……當(dāng)邏輯塊20發(fā)生變化時,所述裝置獲取發(fā)生變化的邏輯塊號為20,根據(jù)預(yù)設(shè)邏輯塊區(qū)與邏輯塊間的關(guān)系為每個邏輯塊區(qū)均包括8個邏輯塊,即可計算出發(fā)生變化的邏輯塊所在的邏輯塊區(qū)為第三邏輯塊區(qū)?;蛘?,在本地保存有每個邏輯塊區(qū)的邏輯塊信息時,所述裝置可直接根據(jù)保存的信息,確定當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0051]步驟S302:查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖。
[0052]本實施方式中,在LUN中的邏輯塊發(fā)生變化吋,記錄存儲數(shù)據(jù)發(fā)生變化的裝置采用所述位圖集記錄所述LUN中邏輯塊發(fā)生變化的情況。所述位圖集可以不同的數(shù)據(jù)結(jié)構(gòu)方式(如樹結(jié)構(gòu)、列表)保存在存儲介質(zhì)中,優(yōu)化地,所述裝置也可將位圖集暫存在緩存中,并定時將緩存中的位圖集數(shù)據(jù)存放在永久存儲介質(zhì),例如硬盤、flash。具體地,所述位圖集用于放置多個位圖,其中,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化。
[0053]具體,當(dāng)LUN中的邏輯塊發(fā)生變化吋,記錄存儲數(shù)據(jù)發(fā)生變化的裝置根據(jù)預(yù)設(shè)的每個邏輯塊區(qū)的對應(yīng)位圖信息,獲得當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖信息,并查詢位圖集中是否已存在當(dāng)前變化邏輯塊的邏輯塊區(qū)的對應(yīng)位圖,如果不存在,則執(zhí)行步驟S303,如果存在,則執(zhí)行步驟S304。其中,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖。
`[0054]步驟S303:在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0055]如果在位圖集中未查詢到所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,則所述裝置在位圖樹中插入節(jié)點,該插入的節(jié)點攜帶所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,以實現(xiàn)在所述位圖集中建立所述當(dāng)前變化邏輯塊的對應(yīng)位圖。并且,所述裝置根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息中對應(yīng)位圖每個位對應(yīng)的邏輯塊信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0056]另外,本實施方式中,將當(dāng)前變化邏輯塊發(fā)生變化的時間以列表形式記錄在內(nèi)存中,當(dāng)然,在其他實施方式中,還可以其他方式記錄當(dāng)前變化邏輯塊發(fā)生變化的時間,在此不作限定。
[0057]步驟S304:根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0058]如果在位圖集中查詢到所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,則記錄存儲數(shù)據(jù)發(fā)生變化的裝置根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息中對應(yīng)位圖每個位對應(yīng)的邏輯塊信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0059]步驟S305:在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件。
[0060]進ー步地,本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法應(yīng)用于遠(yuǎn)程復(fù)制技術(shù)(如異步遠(yuǎn)程復(fù)制、同步遠(yuǎn)程復(fù)制等)吋,即如果主機上LUN的邏輯塊數(shù)據(jù)發(fā)生變化,則執(zhí)行上述步驟S301至S304以記錄所述邏輯塊發(fā)生變化,并且將主機上發(fā)生變化的邏輯塊復(fù)制到從機上的LUN中。記錄存儲數(shù)據(jù)發(fā)生變化的裝置接收到將主機發(fā)生變化的邏輯塊復(fù)制到從機中的復(fù)制命令時,對所述復(fù)制命令進行解析,獲得命令中包括的預(yù)設(shè)時間條件。
[0061]步驟S306:在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位。
[0062]記錄存儲數(shù)據(jù)發(fā)生變化的裝置遍歷記錄的所述位圖集中所有位圖的所有位上對應(yīng)記錄的邏輯塊發(fā)生變化的時間,并搜索出邏輯塊發(fā)生變化的時間符合預(yù)設(shè)時間條件的位圖中的位。
[0063]步驟S307:將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0064]記錄存儲數(shù)據(jù)發(fā)生變化的裝置根據(jù)搜索出的位圖中的位,查找出所述搜索出的位圖中的位對應(yīng)的LUN中的邏輯塊,并將查找出的邏輯塊復(fù)制到從機中,在復(fù)制完成后,將所述搜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0065]進ー步地,在所述方法應(yīng)用于一主多從遠(yuǎn)程分享的實施方式中,所述位圖還設(shè)置有共享標(biāo)識,所述共享標(biāo)識用于標(biāo)識共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊是否已進行共享,其中,所述共享標(biāo)識為第一共享標(biāo)識時,則表示所有共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊已進行共享,所述共享標(biāo)識為第二共享標(biāo)識時,則表示共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊未完成共享。所述記錄存儲數(shù)據(jù)發(fā)生變化的裝置在將查找出的邏輯塊復(fù)制到從機后,如果判斷所述共享標(biāo)識為第一共享標(biāo)識,即表示所有共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊已進行共享,則將所述搜索出的位圖中的位設(shè)置為所述第二標(biāo)記。例如,一主五從的遠(yuǎn)程復(fù)制中,主機LUN的邏輯塊發(fā)生變化并記錄在對應(yīng)位圖上,且將所述位圖的共享標(biāo)識設(shè)置為5。每個從機從主機LUN中完成復(fù)制所述變化的邏輯塊吋,將共享標(biāo)識減1,當(dāng)五個從機均完成復(fù)制時,所述共享標(biāo)識為O。當(dāng)所述裝置檢測到所述共享標(biāo)識為0吋,則將所述搜索出的位圖中的位設(shè)置為所述第二標(biāo)記。本申請可以通過在位圖中設(shè)置共享標(biāo)識,使得位圖中攜帯各共享從設(shè)備的共享情況,而無需對每個共享從設(shè)備配置位圖集,減少了對存儲資源的占用。
[0066]本實施方式中,在進行對發(fā)生變化的邏輯塊進行復(fù)制時,以邏輯塊發(fā)生變化的時間為基準(zhǔn),選擇將某一段時間段或者某一時刻的邏輯塊進行復(fù)制,提高了復(fù)制的靈活性,且在將時間條件設(shè)置為執(zhí)行復(fù)制的時間之前時,可使所述裝置對復(fù)制過程中發(fā)生變化的邏輯塊不作復(fù)制處理,以避免復(fù)制與邏輯塊發(fā)生變化同步發(fā)生時,容易出現(xiàn)遺漏對同步發(fā)生的部分邏輯塊進行復(fù)制,或者在對某ー邏輯塊完成復(fù)制吋,所述邏輯塊再次發(fā)生變化,進而無法實現(xiàn)從機對應(yīng)邏輯塊數(shù)據(jù)的更新等情況。
[0067]步驟S308:檢測所述位圖集中是否存在所有位均為第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
[0068]記錄存儲數(shù)據(jù)發(fā)生變化的裝置定時或者在接收到檢測命令時,檢測位圖集中是否存在所有位均為第二標(biāo)識的位圖,如果存在,則表示所述位圖對應(yīng)的邏輯塊當(dāng)前均無發(fā)生變化,故將所述所有位均為第二標(biāo)識的位圖從位圖集中刪除。
[0069]舉第一例進行說明,請參閱圖5,本申請方法應(yīng)用在異步遠(yuǎn)程復(fù)制中,其中,異步遠(yuǎn)程復(fù)制即為每隔一段時間,將主機上LUN中發(fā)生變化的存儲數(shù)據(jù)復(fù)制到從機LUN中。同吋,每當(dāng)主機上LUN中的邏輯塊數(shù)據(jù)發(fā)生變化,所述裝置執(zhí)行上述步驟S301至S304,以記錄當(dāng)前變化邏輯塊發(fā)生了變化和發(fā)生變化的時間。如圖5,t0、tl、t2、t3表示每個位圖對應(yīng)邏輯塊發(fā)生變化的時間,其中t0〈tl〈t2〈t3。在接收到復(fù)制命令時,則啟動主從數(shù)據(jù)同步,其中所述復(fù)制命令包括的預(yù)設(shè)時間條件為:所需復(fù)制的邏輯塊發(fā)生變化時間為t0至t2。根據(jù)上述預(yù)設(shè)時間條件可將位圖集分成兩個區(qū)域:同步區(qū),包括當(dāng)前需要同步的邏輯塊所在邏輯塊區(qū)對應(yīng)位圖(t0、tl、t2);未同步區(qū),包括當(dāng)前不需同步的邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖(t3)。一般,LUN數(shù)據(jù)每發(fā)生變化一次,則執(zhí)行同步一次,且每執(zhí)行一次同步則更新一次時間點,故同步區(qū)中一般只包括一個時間點的位圖。而本例中,同步區(qū)包括多個時間點的位圖t0、tl、t2,則由于在之前執(zhí)行同步t0、tl時間點的位圖過程中,由于用戶中斷或者設(shè)備出現(xiàn)故障,導(dǎo)致沒有同步完成,故仍遺留部分to、tl時間點的位圖。在本次同步中,所述裝置將同步區(qū)中t0、tl、t2的位圖對應(yīng)的主機LUN中邏輯塊數(shù)據(jù)復(fù)制到從機LUN上,實現(xiàn)主從數(shù)據(jù)的同步,其中,每同步ー個邏輯塊,則將該邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖的對應(yīng)位設(shè)置為第二標(biāo)記,當(dāng)所述裝置檢測到位圖集中有位圖的所有位均為第二標(biāo)記時,則刪除該位圖。并且,在同步過程中,如果主機LUN邏輯塊發(fā)生變化,則將對應(yīng)位圖記錄在未同步區(qū)。
[0070]舉第二例進行說明,請參閱圖6,本申請方法應(yīng)用在同步遠(yuǎn)程復(fù)制中,其中,同步遠(yuǎn)程復(fù)制即為當(dāng)主機上LUN中存儲數(shù)據(jù)發(fā)生變化時,立刻將主機上LUN中發(fā)生變化的存儲數(shù)據(jù)復(fù)制到從機LUN中。與第一例類似,位圖集分兩個區(qū):同步區(qū)(t4對應(yīng)的位圖)和未同步區(qū)(t5對應(yīng)的位圖),其中,t4對應(yīng)的位圖為當(dāng)前變化邏輯塊所在邏輯塊區(qū)對應(yīng)的位圖,t5對應(yīng)的位圖為同步過程中發(fā)生變化的邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖。在主機上LUN中存儲數(shù)據(jù)發(fā)生變化時,所述裝置執(zhí)行上述步驟S301至S304,以記錄當(dāng)前變化邏輯塊發(fā)生了變化和發(fā)生變化的時間t4,并且,所述裝置執(zhí)行復(fù)制命令,所述復(fù)制命令的預(yù)設(shè)時間條件即為當(dāng)前發(fā)生變化的時間t4或之前,本例的位圖集中滿足該條件的只有t4對應(yīng)的位圖,故將t4放入同步區(qū)。所述裝置根據(jù)復(fù)制命令將同步區(qū)中t4的位圖對應(yīng)的主機LUN中邏輯塊數(shù)據(jù)復(fù)制到從機LUN上,實現(xiàn)主從數(shù)據(jù)的同步,其中,每同步ー個邏輯塊,則將該邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖的對應(yīng)位設(shè)置為第二標(biāo)記,當(dāng)所述裝置檢測到位圖集中有位圖的所有位均為第二標(biāo)記吋,則刪除該位圖。并且,在同步過程中,如果主機LUN邏輯塊發(fā)生變化,則將對應(yīng)位圖(即t5對應(yīng)的位圖)記錄在未同步區(qū)。
[0071]需要說明的是,上述舉例中,本申請記錄存儲數(shù)據(jù)發(fā)生變化的方法應(yīng)用在遠(yuǎn)程復(fù)制中,但并不以此作為限定,本申請所述方法還可應(yīng)用在其他任意需要記錄存儲數(shù)據(jù)發(fā)生變化的情況中。
[0072]另外,本申請在記錄邏輯塊發(fā)生變化時,未必限定為需記錄發(fā)生變化的時間,以區(qū)分不同時間段變化的邏輯塊。必須申明的是,本申請方法可根據(jù)實際情況記錄邏輯塊的其他信息作為區(qū)分,如記錄邏輯塊所在存儲位置等,故在此本申請對記錄邏輯塊發(fā)生變化的具體步驟不作任何限定。
[0073]再者,本實施方式中,所述位圖集保存在記錄存儲數(shù)據(jù)發(fā)生變化的裝置的外部,但在其他實施方式中,所述位圖集也可保存在本申請所述裝置中,在此不作限定。而且,本申請所述位圖集還可暫時保存在緩存中。由于緩存相對于內(nèi)存,具有更高的讀寫速度,進而提高了本申請記錄存儲數(shù)據(jù)是否發(fā)生變化的速度。并且,在所述緩存滿足一定情況下,如緩存容量大于預(yù)設(shè)容量,發(fā)生斷電的情況下,會自動將緩存中的位圖集保存在內(nèi)存中。
[0074]本實施方式中,采用位圖集方式記錄LUN中的邏輯塊是否發(fā)生變化,同時,在邏輯塊發(fā)生變化時,才建立所述邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖,實現(xiàn)了位圖按需分配,提高了位圖中空間的利用率,減少對位圖空間的浪費,同時,也減少了位圖占用的存儲資源。進ー步地,在位圖中所有位為第二標(biāo)記時,將位圖刪除,實現(xiàn)了對位圖占用的存儲資源的釋放,更進一歩地減少了位圖占用的存儲資源。
[0075]請參閱圖7,圖7是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置ー實施方式的結(jié)構(gòu)示意圖。本實施方式中,所述記錄存儲數(shù)據(jù)發(fā)生變化的裝置包括確定模塊710、查詢模塊720、建立模塊730和記錄模塊740。
[0076]確定模塊710用于LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),并將確定的邏輯塊區(qū)發(fā)生給所述查詢模塊720。
[0077]本實施方式中,LUN采用精簡配置(thin)技術(shù),所述LUN可進行動態(tài)擴展。其中,所述LUN作為存儲空間,至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊,每個邏輯塊定義為一定容量大小的存儲數(shù)據(jù)。本實施方式中,LUN中每個邏輯塊均分配有不同的邏輯塊號,將每個邏輯塊區(qū)的邏輯塊信息預(yù)先保存在本地,例如,第一邏輯塊區(qū)包含邏輯塊0和1,第二邏輯塊區(qū)包含邏輯塊2和3……如此類推。在LUN中的邏輯塊發(fā)生變化時,確定模塊710獲取LUN中當(dāng)前變化邏輯塊的邏輯塊號,根據(jù)預(yù)設(shè)的邏輯塊區(qū)與邏輯塊間的關(guān)系為每個邏輯塊包括兩個邏輯塊,確定所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0078]查詢模塊720用于查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,并將查詢結(jié)果發(fā)送給建立模塊730和記錄模塊740。
[0079]本實施方式中,在LUN中的邏輯塊上的存儲數(shù)據(jù),即該邏輯塊發(fā)生變化時,記錄存儲數(shù)據(jù)發(fā)生變化的裝置采用所述位圖集記錄所述LUN中邏輯塊發(fā)生變化的情況。所述位圖集可以不同的數(shù)據(jù)結(jié)構(gòu)方式(如樹結(jié)構(gòu)、列表)保存在存儲介質(zhì)中,優(yōu)化地,所述裝置也可將位圖集暫存在緩存中,以加速位圖空間的處理,并定時將緩存中的位圖集數(shù)據(jù)存放在永久存儲介質(zhì),例如硬盤、flash。具體地,所述位圖集用于放置多個位圖,其中,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化。
[0080]具體,所述裝置本地預(yù)設(shè)有LUN中每個邏輯塊區(qū)的對應(yīng)位圖信息。當(dāng)LUN中的邏輯塊發(fā)生變化時,查詢模塊720根據(jù)預(yù)設(shè)的對應(yīng)位圖信息獲得當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖信息,并查詢位圖集中是否包括獲取的對應(yīng)位圖信息,其中,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖。
[0081]舉例說明, LUN中劃分為16個邏輯塊區(qū),每個邏輯塊區(qū)包括8個邏輯塊。記錄存儲數(shù)據(jù)發(fā)生變化的裝置預(yù)先設(shè)置每個邏輯塊區(qū)的對應(yīng)位圖信息為第一邏輯塊區(qū)的對應(yīng)位圖為第一位圖,第二邏輯塊區(qū)的對應(yīng)位圖為第二位圖……如此類推,且每個位圖包括8個位,每個位用于記錄一個邏輯塊是否發(fā)生變化。對應(yīng)地,第一位圖對應(yīng)用于記錄第一邏輯塊區(qū),即第I到8個邏輯塊,第二位圖對應(yīng)用于記錄第二邏輯塊區(qū),即第9到16個邏輯塊,第三位圖對應(yīng)用于記錄第三邏輯塊區(qū),即第17到24個邏輯塊……如此類推。在LUN中的第
10、15個邏輯塊發(fā)生變化時,確定模塊710確定所述當(dāng)前變化的邏輯塊位于第二邏輯塊區(qū),根據(jù)上述預(yù)設(shè)的邏輯塊區(qū)對應(yīng)位圖信息,獲得所述第二邏輯塊區(qū)的對應(yīng)位圖信息為第二位圖,查詢模塊720查詢當(dāng)前的位圖集中建立的位圖的信息是否包括第二位圖信息,并將查詢結(jié)果發(fā)送給建立模塊730和記錄模塊740。
[0082]建立模塊730用于在未查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并將所述對應(yīng)位圖發(fā)送給所述記錄模塊740。
[0083]在位圖集中未查詢到所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖時,建立模塊730在所述位圖集中建立所述當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖,例如,所述位圖集為樹結(jié)構(gòu),則再位圖樹中插入攜帯所述對應(yīng)位圖的節(jié)點,以建立所述對應(yīng)位圖。
[0084]記錄模塊740用于在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
[0085]記錄模塊740在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化,例如,將對應(yīng)位圖中對應(yīng)當(dāng)前變化邏輯塊的位設(shè)置為第一標(biāo)記,以標(biāo)識該位對應(yīng)的邏輯塊發(fā)生變化,而對應(yīng)位圖中對應(yīng)沒有發(fā)生變化的邏輯塊的位則設(shè)置為第二標(biāo)記,以標(biāo)識該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0086]本實施方式中,采用位圖集方式記錄LUN中的邏輯塊是否發(fā)生變化,將LUN分為多個邏輯塊區(qū),一個邏輯塊區(qū)對應(yīng)ー個位圖,且位圖集中的位圖產(chǎn)生條件為:在邏輯塊發(fā)生變化時,才建立所述邏輯塊 所在的邏輯塊區(qū)的對應(yīng)位圖,無需產(chǎn)生沒有發(fā)生變化的邏輯塊區(qū)的對應(yīng)位圖,實現(xiàn)了位圖按需分配,減少對位圖空間的浪費,同時,也減少了總位圖占用的存儲資源。
[0087]需要說明的是,本實施方式中的LUN采用精簡配置技木,但在其他實施方式中,所述LUN還可采用其他可進行動態(tài)擴展的技術(shù),或者LUN的不可進行動態(tài)擴展,其容量固定大小,其LUN的具體種類并不影響本申請方法的實施,且所述LUN可設(shè)置在本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置內(nèi)部,也可設(shè)置在外部設(shè)備中,在此不對LUN進行具體限定。
[0088]請參閱圖8,圖8是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置另ー實施方式的結(jié)構(gòu)示意圖。本實施方式中,所述記錄存儲數(shù)據(jù)發(fā)生變化的裝置810包括確定模塊811、查詢模塊812、建立模塊813、記錄模塊814、劃分模塊815、復(fù)制模塊816及刪除模塊817。
[0089]劃分模塊815用于將所述LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊,將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),確定每個邏輯塊區(qū)的對應(yīng)位圖信息,并將所述每個邏輯塊區(qū)的對應(yīng)位圖信息發(fā)送給所述記錄模塊,其中,所述第一數(shù)值至少為2,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
[0090]例如,LUN當(dāng)前分配的容量為1GB,劃分模塊815將LUN劃分為1024個容量為IKB的邏輯塊,每個邏輯塊分配有不同的邏輯塊號,例如,邏輯塊0、邏輯塊1、邏輯塊2等。劃分模塊815將1024個邏輯塊劃分為128個邏輯塊區(qū),每個邏輯塊區(qū)包括8個邏輯塊,如第一邏輯塊區(qū)包括邏輯塊0至7、第二邏輯塊區(qū)包括邏輯塊8至15……如此類推。劃分模塊815為LUN中每個邏輯塊區(qū)對應(yīng)設(shè)置一個對應(yīng)位圖信息,如第一邏輯塊區(qū)的對應(yīng)位圖為容量為8位的第一位圖,第一位圖中的每一位依序?qū)?yīng)用于記錄邏輯塊0-7,其他邏輯塊區(qū)的對應(yīng)位圖信息同上理。位圖中姆一位可設(shè)置為第一或第二標(biāo)記,所述第一標(biāo)記為1,第二標(biāo)記為0,當(dāng)邏輯塊發(fā)生變化時,則將對應(yīng)該邏輯塊的位置1,如果邏輯塊沒有發(fā)生變化,則將對應(yīng)該邏輯塊的位置0,通過判斷該位為0還是1,則可知道該位對應(yīng)的邏輯塊是否發(fā)生變化。
[0091]確定模塊811用于確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。在LUN中的邏輯塊發(fā)生變化時,確定模塊811獲取當(dāng)前變化的邏輯塊信息,井根據(jù)劃分模塊815所預(yù)設(shè)邏輯塊區(qū)與邏輯塊間的關(guān)系或者保存的每個邏輯塊區(qū)的邏輯塊信息,確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū)。
[0092]查詢模塊812用于查詢位圖集820中是否存在所述邏輯塊區(qū)的對應(yīng)位圖,并將查詢結(jié)果發(fā)送給建立模塊813和記錄模塊814。
[0093]所述位圖集820可以不同的數(shù)據(jù)結(jié)構(gòu)方式(如樹結(jié)構(gòu)、列表)保存在存儲介質(zhì)中,優(yōu)化地,所述裝置也可將位圖集820暫存在緩存中,并定時將緩存中的位圖集數(shù)據(jù)存放在永久存儲介質(zhì),例如硬盤、flash。具體地,所述位圖集820用于放置多個位圖,其中,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化。
[0094]具體,當(dāng)LUN中的邏輯塊發(fā)生變化吋,查詢模塊812根據(jù)預(yù)設(shè)的每個邏輯塊區(qū)的對應(yīng)位圖信息,獲得當(dāng)前變化邏輯塊所在的邏輯塊區(qū)的對應(yīng)位圖信息,并查詢位圖集820中是否已存在當(dāng)前變化邏輯塊的邏輯塊區(qū)的對應(yīng)位圖。
[0095]建立模塊813用于未查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,在所述位圖集820中建立所述當(dāng)前變化邏輯塊的對應(yīng)位圖,并將所述對應(yīng)位圖發(fā)送給所述記錄模塊814。例如,所述位圖集820為樹結(jié)構(gòu),則再位圖樹中插入攜帯所述對應(yīng)位圖的節(jié)點,以建立所述對應(yīng)位圖。
[0096]記錄模塊814用于根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
[0097]另外,本實施方式中,將當(dāng)前變化邏輯塊發(fā)生變化的時間以列表形式記錄在本申請裝置內(nèi)部或外部內(nèi)存中,當(dāng)然,在其他實施方式中,還可以其他方式記錄當(dāng)前變化邏輯塊發(fā)生變化的時間,在此不作限定。
[0098]復(fù)制模塊816用于在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件,在所述位圖集820中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位;將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將搜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0099]進ー步地,本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置還可實現(xiàn)遠(yuǎn)程復(fù)制(如異步遠(yuǎn)程復(fù)制、同步遠(yuǎn)程復(fù)制等),即如果主機上LUN的邏輯塊數(shù)據(jù)發(fā)生變化,則通過確定模塊811、查詢模塊812、建立模塊813和記錄模塊814記錄所述邏輯塊發(fā)生變化,同吋,復(fù)制模塊816還將主機上發(fā)生變化的邏輯塊復(fù)制到從機上的LUN中。復(fù)制模塊816接收到將主機發(fā)生變化的邏輯塊復(fù)制到從機中的復(fù)制命令吋,對所述復(fù)制命令進行解析,獲得命令中包括的預(yù)設(shè)時間條件。
[0100]復(fù)制模塊816遍歷記錄的所述位圖集820中所有位圖的所有位上對應(yīng)記錄的邏輯塊發(fā)生變化的時間,并搜索出邏輯塊發(fā)生變化的時間符合預(yù)設(shè)時間條件的位圖中的位。
[0101]復(fù)制模塊816根據(jù)搜索出的位圖中的位,查找出所述搜索出的位圖中的位對應(yīng)的主機LUN中的邏輯塊,并將查找出的邏輯塊復(fù)制到從機中,在復(fù)制完成后,將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。 [0102]進ー步地,在本申請裝置實現(xiàn)ー主多從遠(yuǎn)程分享的實施方式中,所述位圖還設(shè)置有共享標(biāo)識,所述共享標(biāo)識用于標(biāo)識共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊是否已進行共享,其中,所述共享標(biāo)識為第一共享標(biāo)識時,則表示所有共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊已進行共享,所述共享標(biāo)識為第二共享標(biāo)識時,則表示共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊未完成共享。復(fù)制模塊816在將查找出的邏輯塊復(fù)制到從機后,如果判斷所述共享標(biāo)識為第一共享標(biāo)識,即表示所述所有共享從設(shè)備對所述位圖記錄的發(fā)生變化的邏輯塊已進行共享,則在將所述捜索出的位圖中的位設(shè)置為所述第二
o
[0103]本實施方式中,在進行對發(fā)生變化的邏輯塊進行復(fù)制時,以邏輯塊發(fā)生變化的時間為基準(zhǔn),選擇將某一段時間段或者某一時刻的邏輯塊進行復(fù)制,提高了復(fù)制的靈活性,且在將時間條件設(shè)置為執(zhí)行復(fù)制的時間之前時,可使所述裝置對復(fù)制過程中發(fā)生變化的邏輯塊不作復(fù)制處理,以避免復(fù)制與邏輯塊發(fā)生變化同步發(fā)生時,容易出現(xiàn)遺漏對同步發(fā)生的部分邏輯塊進行復(fù)制,或者在對某ー邏輯塊完成復(fù)制時,所述邏輯塊再次發(fā)生變化,進而無法實現(xiàn)從機對應(yīng)邏輯塊數(shù)據(jù)的更新等情況。
[0104]刪除模塊817用于檢測所述位圖集820中是否存在所有位均為所述第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集820中刪除。
[0105]刪除模塊817定時或者在接收到檢測命令時檢測位圖集820中的是否存在所有位均為第二標(biāo)識的位圖,如果存在,則表示所述位圖對應(yīng)的邏輯塊當(dāng)前均無發(fā)生變化,故將所述所有位均為第二標(biāo)識的位圖從位圖集820中刪除。
[0106]舉第一例進行說明,請參閱圖5,本申請裝置能夠?qū)崿F(xiàn)異步遠(yuǎn)程復(fù)制,其中,異步遠(yuǎn)程復(fù)制即為每隔一段時間,將主機上LUN中發(fā)生變化的存儲數(shù)據(jù)復(fù)制到從機LUN中。同吋,每當(dāng)主機上LUN中的邏輯塊數(shù)據(jù)發(fā)生變化,所述裝置通過確定模塊811、查詢模塊812、建立模塊813及記錄模塊814,記錄當(dāng)前變化邏輯塊發(fā)生了變化和發(fā)生變化的時間。如圖5,t0、tl、t2、t3表示每個位圖對應(yīng)邏輯塊發(fā)生變化的時間,其中t0〈tl〈t2〈t3。在接收到復(fù)制命令時,復(fù)制模塊816啟動主從數(shù)據(jù)同步,其中所述復(fù)制命令包括的預(yù)設(shè)時間條件為:所需復(fù)制的邏輯塊發(fā)生變化時間為t0至t2。根據(jù)上述預(yù)設(shè)時間條件可將位圖集820分成兩個區(qū)域:同步區(qū),包括當(dāng)前需要同步的邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖(t0、tl、t2);未同步區(qū),包括當(dāng)前不需同步的邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖(t3)。一般,LUN數(shù)據(jù)每發(fā)生變化ー次,則執(zhí)行同步一次,且每執(zhí)行一次同步則更新一次時間點,故同步區(qū)中一般只包括ー個時間點的位圖。而本例中,同步區(qū)包括多個時間點的位圖t0、tl、t2,則由于在之前執(zhí)行同步t0、tl時間點的位圖過程中,由于用戶中斷或者設(shè)備出現(xiàn)故障,導(dǎo)致沒有同步完成,故仍遺留部分t0、tl時間點的位圖。在本次同步中,復(fù)制模塊816將同步區(qū)中t0、tl、t2的位圖對應(yīng)的主機LUN中邏輯塊數(shù)據(jù)復(fù)制到從機LUN上,實現(xiàn)主從數(shù)據(jù)的同步,其中,每同步ー個邏輯塊,復(fù)制模塊816將該邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖的對應(yīng)位設(shè)置為第二標(biāo)記。當(dāng)刪除模塊817檢測到位圖集820中有位圖的所有位均為第二標(biāo)記時,則刪除該位圖。同時,在同步過程中,如果主機LUN邏輯塊發(fā)生變化,則記錄模塊814將對應(yīng)位圖記錄在未同步區(qū)。
[0107]舉第二例進行說明,請參閱圖6,本申請裝置能夠?qū)崿F(xiàn)同步遠(yuǎn)程復(fù)制,其中,同步遠(yuǎn)程復(fù)制即為當(dāng)主機上LUN中存儲數(shù)據(jù)發(fā)生變化時,立刻將主機上LUN中發(fā)生變化的存儲數(shù)據(jù)復(fù)制到從機LUN中。與第一例類似,位圖集820分兩個區(qū):同步區(qū)(t4對應(yīng)的位圖)和未同步區(qū)(t5對應(yīng)的位圖),其中,t4對應(yīng)的位圖為當(dāng)前變化邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖,t5對應(yīng)的位圖為同步過程中發(fā)生變化的邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖。在主機上LUN中存儲數(shù)據(jù)發(fā)生變化時,所述裝置通過確定模塊811、查詢模塊812、建立模塊813及記錄模塊814,記錄當(dāng)前變化邏輯塊發(fā)生了變化和發(fā)生變化的時間t4,并且,復(fù)制模塊816執(zhí)行復(fù)制命令,所述復(fù)制命令的預(yù)設(shè)時間條件即為當(dāng)前發(fā)生變化的時間t4或之前,本例的位圖集820中滿足該條件的只有t4對應(yīng)的位圖,故將t4放入同步區(qū)。復(fù)制模塊816根據(jù)復(fù)制命令將同步區(qū)中t4的位圖對應(yīng)的主機LUN中邏輯塊數(shù)據(jù)復(fù)制到從機LUN上,實現(xiàn)主從數(shù)據(jù)的同步,其中,每同步ー個邏輯塊,復(fù)制模塊816將該邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖的對應(yīng)位設(shè)置為第二標(biāo)記。當(dāng)刪除模塊817檢測到位圖集820中有位圖的所有位均為第二標(biāo)記吋,則刪除該位圖。并且,在同步過程中,如果主機LUN邏輯塊發(fā)生變化,則記錄模塊814將對應(yīng)位圖(即t5對應(yīng)的位圖)記錄在未同步區(qū)。
[0108]需要說明的是,本申請在記錄邏輯塊發(fā)生變化時,未必限定為需記錄發(fā)生變化的時間,以區(qū)分不同時間段變化的邏輯塊。必須申明的是,本申請可根據(jù)實際情況記錄邏輯塊的其他信息作為區(qū)分,如記錄邏輯塊所在存儲位置等,故在此本申請對記錄邏輯塊發(fā)生變化的具體方式不作任何限定。
[0109]另外,本實施方式中,所述位圖集保存在記錄存儲數(shù)據(jù)發(fā)生變化的裝置的外部,但在其他實施方式中,所述位圖集也可保存在本申請所述裝置中,在此不作限定。而且,本申請所述位圖集還可暫時保存在緩存中。由于緩存相對于內(nèi)存,具有更高的讀寫速度,進而提高了本申請記錄存儲數(shù)據(jù)是否發(fā)生變化的速度。并且,在所述緩存滿足一定情況下,如緩存容量大于預(yù)設(shè)容量,發(fā)生斷電的情況下,會自動將緩存中的位圖集保存在內(nèi)存中。
[0110]本實施方式中,采用位圖集方式記錄LUN中的邏輯塊是否發(fā)生變化,同時,在邏輯塊發(fā)生變化時,才建立所述邏輯塊所在邏輯塊區(qū)的對應(yīng)位圖,實現(xiàn)了位圖按需分配,提高了位圖中空間的利用率,減少對位圖空間的浪費,同時,也減少了位圖占用的存儲資源。進ー步地,在位圖中所有位為第二標(biāo)記時,將位圖刪除,實現(xiàn)了對位圖占用的存儲資源的釋放,更進一歩地減少了位圖占用的存儲資源。
[0111]請參閱圖9,圖9是本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置再ー實施方式的結(jié)構(gòu)示意圖。本實施方式中,所述記錄存儲數(shù)據(jù)發(fā)生變化的裝置包括處理器910及存儲介質(zhì)920,其中所述處理器910與存儲介質(zhì)920通過總線930連接。
[0112]存儲介質(zhì)920用于存儲處理器910執(zhí)行的計算機指令以及處理器910工作時所需存儲的數(shù)據(jù)。
[0113]處理器910執(zhí)行存儲介質(zhì)920存儲的計算機指令,用于確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,在未查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,在所述位圖集中建立所述當(dāng)前變化邏輯塊的對應(yīng)位圖,并在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化,在查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,直接在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。[0114]本實施方式中,處理器910預(yù)先將所述LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊,將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),并確定每個邏輯塊區(qū)的對應(yīng)位圖信息。其中,所述第一數(shù)值至少為2,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第ー標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。例如,所述第一標(biāo)記為1,第二標(biāo)記為0,當(dāng)邏輯塊發(fā)生變化時,則將對應(yīng)該邏輯塊的位置1,如果邏輯塊沒有發(fā)生變化,則將對應(yīng)該邏輯塊的位置0,通過判斷該位為0還是1,則可知道該位對應(yīng)的邏輯塊是否發(fā)生變化。
[0115]在LUN中的邏輯塊發(fā)生變化吋,處理器910確定LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),井根據(jù)確定每個邏輯塊區(qū)的對應(yīng)位圖信息,查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖。所述位圖集保存在存儲介質(zhì)中,優(yōu)化地,所述裝置也可將位圖集暫存在緩存中,以加速位圖空間的處理,并定時將緩存中的位圖集數(shù)據(jù)存放在永久存儲介質(zhì)中,其中,所述位圖集用于放置多個位圖,每個所述位圖為所述樹的節(jié)點,共同構(gòu)成所述樹結(jié)構(gòu)。具體地,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化。
[0116]另外,處理器910記錄對應(yīng)所述當(dāng)前變化邏輯塊發(fā)生了變化的方式具體為:處理器910根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。本實施方式中,處理器910將當(dāng)前變化邏輯塊發(fā)生變化的時間以列表形式記錄在本申請裝置內(nèi)部或外部內(nèi)存中,當(dāng)然,在其他實施方式中,還可以其他方式記錄當(dāng)前變化邏輯塊發(fā)生變化的時間,在此不作限定。
[0117]優(yōu)化地,處理器910還用于在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件;在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位;將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將搜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
[0118]進ー步地,本申請記錄存儲數(shù)據(jù)發(fā)生變化的裝置還可實現(xiàn)遠(yuǎn)程復(fù)制(如異步遠(yuǎn)程復(fù)制、同步遠(yuǎn)程復(fù)制等),即如果主機上LUN的邏輯塊數(shù)據(jù)發(fā)生變化,處理器910記錄所述邏輯塊發(fā)生變化,同時,還將主機上發(fā)生變化的邏輯塊復(fù)制到從機上的LUN中。處理器910接收到將主機發(fā)生變化的邏輯塊復(fù)制到從機中的復(fù)制命令時,對所述復(fù)制命令進行解析,獲得命令中包括的預(yù)設(shè)時間條件。
[0119]處理器910遍歷記錄的所述位圖集中所有位圖的所有位上對應(yīng)記錄的邏輯塊發(fā)生變化的時間,并搜索出邏輯塊發(fā)生變化的時間符合預(yù)設(shè)時間條件的位圖中的位。
[0120]處理器910根據(jù)搜索出的位圖中的位,查找出所述搜索出的位圖中的位對應(yīng)的主機LUN中的邏輯塊,并將查找出的邏輯塊復(fù)制到從機中,在復(fù)制完成后,將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。本實施方式中,在進行對發(fā)生變化的邏輯塊進行復(fù)制吋,以邏輯塊發(fā)生變化的時間為基準(zhǔn),選擇將某一段時間段或者某一時刻的邏輯塊進行復(fù)制,提高了復(fù)制的靈活性,且在將時間條件設(shè)置為執(zhí)行復(fù)制的時間之前時,可使所述裝置對復(fù)制過程中發(fā)生變化的邏輯塊不作復(fù)制處理,以避免復(fù)制與邏輯塊發(fā)生變化同步發(fā)生吋,容易出現(xiàn)遺漏對同步發(fā)生的部分邏輯塊進行復(fù)制,或者在對某ー邏輯塊完成復(fù)制時,所述邏輯塊再次發(fā)生變化,進而無法實現(xiàn)從機對應(yīng)邏輯塊數(shù)據(jù)的更新等情況。
[0121]進ー步優(yōu)化地,處理器910還用于檢測所述位圖集中是否存在所有位均為所述第ニ標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
[0122]處理器910定時或者在接收到檢測命令時檢測位圖集中的是否存在所有位均為第二標(biāo)識的位圖,如果存在,則表示所述位圖對應(yīng)的邏輯塊當(dāng)前均無發(fā)生變化,故將所述所有位均為第二標(biāo)識的位圖從位圖集中刪除。
[0123]需要說明的是,本申請在記錄邏輯塊發(fā)生變化時,未必限定為需記錄發(fā)生變化的時間,以區(qū)分不同時間段變化的邏輯塊。必須申明的是,本申請可根據(jù)實際情況記錄邏輯塊的其他信息作為區(qū)分,如記錄邏輯塊所在存儲位置等,故在此本申請對記錄邏輯塊發(fā)生變化的具體方式不作任何限定。
[0124]另外,本實施方式中,所述位圖集保存在記錄存儲數(shù)據(jù)發(fā)生變化的裝置的外部,但在其他實施方式中,所述位圖集也可保存在本申請所述裝置的存儲介質(zhì),在此不作限定。而且本申請所述位圖集還可暫時保存在緩存中。由于緩存相對于內(nèi)存,具有更高的讀寫速度,進而提高了本申請記錄存儲數(shù)據(jù)是否發(fā)生變化的速度。并且,在所述緩存滿足一定情況下,如緩存容量大于預(yù)設(shè)容量,發(fā)生斷電的情況下,會自動將緩存中的位圖集保存在內(nèi)存中。
[0125]通過上述方案,本申請采用位圖集來實現(xiàn)記錄LUN的存儲數(shù)據(jù)的變化,并在邏輯塊發(fā)生變化時,才建立該邏輯塊的對應(yīng)位圖,區(qū)別于固定采用ー個位圖記錄LUN所有存儲數(shù)據(jù)的變化情況的現(xiàn)有技術(shù),本申請采用動態(tài)位圖方式,使得位圖總占用的存儲空間與LUN發(fā)生變化的邏輯塊數(shù)對應(yīng),實現(xiàn)了位圖的按需分配,減少占用存儲資源,同時,也提高了位圖的利用效率,減少對位圖內(nèi)存資源的浪費。
[0126]在本申請所提供的幾個實施方式中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個単元或組件可以結(jié)合或者可以集成到另ー個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另ー點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過ー些接ロ,裝置或単元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0127]所述作為分離部件說明的単元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理単元,即可以位于ー個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施方式方案的目的。
[0128]另外,在本申請各個實施方式中的各功能単元可以集成在一個處理単元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能単元的形式實現(xiàn)。
[0129]所述集成的単元如果以軟件功能単元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在ー個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請各個實施方式所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲介質(zhì)(ROM,Read-Only Memory)、隨機存取存儲介質(zhì)(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
【權(quán)利要求】
1.一種記錄存儲數(shù)據(jù)發(fā)生變化的方法,其特征在于,所述方法包括以下步驟: 確定邏輯單元號LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),其中,所述邏輯單元號LUN至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊; 查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,其中,所述位圖集用于放置多個位圖,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖; 如果不存在,則在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化; 如果存在,則直接在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖的步驟之前,所述方法還包括: 將所述邏輯單元號LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊; 將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),其中,所述第一數(shù)值至少為2 ; 確定每個邏輯塊區(qū)的對應(yīng)位圖信息,其中,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的一個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化的步驟包括: 根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件; 在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位; 將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。
5.根據(jù)權(quán)利要求2至4任一項所述的方法,其特征在于,所述方法還包括: 檢測所述位圖集中是否存在所有位均為所述第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
6.一種記錄存儲數(shù)據(jù)發(fā)生變化的裝置,其特征在于,所述裝置包括確定模塊、查詢模塊、建立模塊和記錄模塊, 所述確定模塊用于確定邏輯單元號LUN中當(dāng)前變化邏輯塊所在的邏輯塊區(qū),并將確定的邏輯塊區(qū)發(fā)生給所述查詢模塊,其中,所述邏輯單元號LUN至少包括兩個邏輯塊區(qū),所述邏輯塊區(qū)包含多個邏輯塊; 所述查詢模塊用于查詢位圖集中是否已存在所述邏輯塊區(qū)的對應(yīng)位圖,并將查詢結(jié)果發(fā)送給建立模塊和記錄模塊,其中,所述位圖集用于放置多個位圖,每個所述位圖用于記錄對應(yīng)ー個所述邏輯塊區(qū)的邏輯塊發(fā)生變化,所述邏輯塊區(qū)的對應(yīng)位圖即為記錄所述邏輯塊區(qū)的邏輯塊發(fā)生變化的位圖; 所述建立模塊用于在未查詢到所述邏輯塊區(qū)的對應(yīng)位圖時,在所述位圖集中建立所述邏輯塊區(qū)的對應(yīng)位圖,并將所述對應(yīng)位圖發(fā)送給所述記錄模塊; 所述記錄模塊用于在所述對應(yīng)位圖中記錄所述當(dāng)前變化邏輯塊發(fā)生變化。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括劃分模塊, 所述劃分模塊用于將所述邏輯單元號LUN中的存儲數(shù)據(jù)劃分為多個邏輯塊,將所述多個邏輯塊劃分為第一數(shù)值個邏輯塊區(qū),確定每個邏輯塊區(qū)的對應(yīng)位圖信息,并將所述每個邏輯塊區(qū)的對應(yīng)位圖信息發(fā)送給所述記錄模塊,其中,所述第一數(shù)值至少為2,所述邏輯塊區(qū)的對應(yīng)位圖信息包括所述邏輯塊區(qū)的對應(yīng)位圖的位數(shù)等于所述邏輯塊區(qū)的邏輯塊數(shù),所述邏輯塊區(qū)的對應(yīng)位圖的每個位分別對應(yīng)用于記錄所述邏輯塊區(qū)的ー個邏輯塊是否發(fā)生變化,每個位可被設(shè)置為第一標(biāo)記或者第二標(biāo)記,所述第一標(biāo)記用于表示該位所對應(yīng)的邏輯塊發(fā)生了變化,所述第二標(biāo)記用于表示該位所對應(yīng)的邏輯塊沒有發(fā)生變化。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述記錄模塊具體用于根據(jù)所述邏輯塊區(qū)的對應(yīng)位圖信息,查找出所述對應(yīng)位圖中用于記錄所述當(dāng)前變化邏輯塊是否發(fā)生變化的位,并將查找出的位設(shè)置為第一標(biāo)記,并記錄所述當(dāng)前變化邏輯塊發(fā)生變化的時間。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括復(fù)制模塊, 所述復(fù)制模塊用于在接收復(fù)制命令時,獲取所述復(fù)制命令中的預(yù)設(shè)時間條件,在所述位圖集中捜索出所述邏輯塊發(fā)生變化的時間符合所述預(yù)設(shè)時間條件的位圖中的位,將搜索出的位圖中的位所對應(yīng)的邏輯塊進行復(fù)制操作,在復(fù)制完成后將所述捜索出的位圖中的位設(shè)置為所述第二標(biāo)記。`
10.根據(jù)權(quán)利要求7至9任一項所述的裝置,其特征在于,還包括刪除模塊, 所述刪除模塊用于檢測所述位圖集中是否存在所有位均為所述第二標(biāo)記的位圖,如果存在,則將所述位圖從位圖集中刪除。
【文檔編號】G06F11/14GK103605617SQ201310594802
【公開日】2014年2月26日 申請日期:2013年11月21日 優(yōu)先權(quán)日:2013年11月21日
【發(fā)明者】嚴(yán)俊 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1