欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法

文檔序號:6335214閱讀:215來源:國知局
專利名稱:一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法
技術(shù)領(lǐng)域
一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法屬于計(jì)算機(jī)存儲技術(shù)領(lǐng)域,具體涉及其 中的快照自動生成領(lǐng)域。
背景技術(shù)
隨著信息技術(shù)的飛速發(fā)展,人們要處理的數(shù)據(jù)量不斷增加,這對存儲系統(tǒng)可靠性 和可用性提出了巨大需求??煺帐顷P(guān)于指定數(shù)據(jù)集的一個完全可用的拷貝,該拷貝包括相 應(yīng)數(shù)據(jù)在某個時間點(diǎn)的印象。應(yīng)用快照技術(shù)能夠保留存儲系統(tǒng)不同時刻的數(shù)據(jù),一方面在 發(fā)生故障時能將系統(tǒng)數(shù)據(jù)恢復(fù)到過去某個時間點(diǎn),提高系統(tǒng)可靠性,另一方面可以實(shí)現(xiàn)在 線數(shù)據(jù)備份??煺占夹g(shù)廣泛應(yīng)用在各種大規(guī)模存儲系統(tǒng)中以提供數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)支 持。隨著存儲系統(tǒng)規(guī)模的不斷擴(kuò)大,快照的數(shù)量和進(jìn)行快照的頻度也不斷增加,以人 工手動輸入命令來進(jìn)行快照的方式已經(jīng)不能適應(yīng)數(shù)據(jù)保護(hù)的需要。定時生成快照的方式 每隔一段時間自動生成快照,簡化了快照過程中的人工操作,但是生成快照的時間間隔是 固定的,不能適應(yīng)應(yīng)用負(fù)載的動態(tài)化,如果某一間隔內(nèi)應(yīng)用沒有對源數(shù)據(jù)區(qū)進(jìn)行修改,那新 創(chuàng)建快照將造成資源的浪費(fèi),如果某一間隔應(yīng)用對源數(shù)據(jù)區(qū)的修改非常頻繁,該間隔內(nèi)只 創(chuàng)建一個快照則將造成大量歷史數(shù)據(jù)的丟失。本發(fā)明提出的自適應(yīng)應(yīng)用負(fù)載變化的快照生 成方法,隨著源數(shù)據(jù)區(qū)上應(yīng)用負(fù)載的變化,以動態(tài)的時間間隔自動生成快照,并具有以下特占.
^ \\\ ·1.負(fù)載變化的自適應(yīng)性當(dāng)應(yīng)用負(fù)載對數(shù)據(jù)的修改頻度提高時,生成快照的時間 間隔縮短,有效地保護(hù)歷史數(shù)據(jù),當(dāng)應(yīng)用負(fù)載對數(shù)據(jù)的修改頻度降低時,生成快照的間隔延 長,節(jié)省存儲資源;2.簡單的計(jì)數(shù)結(jié)構(gòu)采用占用空間很小的位圖記錄數(shù)據(jù)修改頻度,并將位圖緩 存,使其查找和修改操作對讀寫性能的影響幾乎可以忽略;3.高度的靈活性提供了基于平均修改數(shù)和最大修改數(shù)的快照自動生成策略,通 過靈活選擇策略和配置不同的參數(shù),可以滿足各種應(yīng)用負(fù)載的數(shù)據(jù)保護(hù)要求。

發(fā)明內(nèi)容
本發(fā)明的目的是設(shè)計(jì)一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法,根據(jù)被保護(hù)數(shù)據(jù) 的修改頻率等信息調(diào)節(jié)快照的生成頻率,通過本方法既能達(dá)到自動保留有用數(shù)據(jù)的要求, 又能保證較好的系統(tǒng)性能與空間利用率。本發(fā)明構(gòu)建在采用寫時拷貝(Copy-0n-Write,C0W)技術(shù)的快照之上。寫時拷貝快 照技術(shù),在創(chuàng)建快照時,無需保存任何數(shù)據(jù),創(chuàng)建過程瞬間即可完成,由于其只保存要更改 的數(shù)據(jù)塊,這種基于數(shù)據(jù)塊改變的增量方式最大限度地減少了對存儲容量的消耗?;趯?時拷貝方法的快照系統(tǒng),每次創(chuàng)建快照后,主機(jī)發(fā)送的寫請求若是第一次修改源數(shù)據(jù)區(qū)中 的數(shù)據(jù),一般要分解為以下三個步驟1.從源數(shù)據(jù)區(qū)中讀出需要快照保存的數(shù)據(jù);2.將此快照數(shù)據(jù)寫入快照區(qū);3.將主機(jī)發(fā)送的新數(shù)據(jù)寫入源數(shù)據(jù)區(qū)相應(yīng)位置。本發(fā)明的特征在于,所述方法是在用戶端依次按以下步驟實(shí)現(xiàn)的步驟(1).用戶端的初始化,步驟(1. 1).用戶通過應(yīng)用程序接口 API在快照計(jì)算機(jī)中設(shè)定快照的數(shù)據(jù)結(jié)構(gòu),包 括元數(shù)據(jù)區(qū)、索引區(qū)、數(shù)據(jù)區(qū)和計(jì)數(shù)區(qū),其中元數(shù)據(jù)區(qū)包括用戶賦予的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,該快照中數(shù)據(jù)塊 的大小,數(shù)據(jù)區(qū)的長度以及標(biāo)識位,其中源數(shù)據(jù)區(qū),存儲用戶訪問請求的數(shù)據(jù),對源數(shù)據(jù)區(qū)創(chuàng)建一個快照將會保留一個快 照創(chuàng)建時刻源數(shù)據(jù)區(qū)的映像,源數(shù)據(jù)區(qū)在邏輯上是按照所述元數(shù)據(jù)區(qū)中所述數(shù)據(jù)塊的大小 分為多個數(shù)據(jù)塊,數(shù)據(jù)塊的編號從1開始,其分塊號依次為1,2,3,…,N,N為源數(shù)據(jù)區(qū)中數(shù) 據(jù)塊數(shù)目,這個編號就是源數(shù)據(jù)區(qū)的分塊號,標(biāo)識位,值為1時,表示快照是對源數(shù)據(jù)區(qū)最新創(chuàng)建的快照,為0,則不是,當(dāng)對源 數(shù)據(jù)區(qū)新創(chuàng)建一個快照時,將新創(chuàng)建的快照的標(biāo)識位置為1,并將對源數(shù)據(jù)區(qū)創(chuàng)建的其它快 照的標(biāo)識位置為0索引區(qū),記錄源數(shù)據(jù)區(qū)被修改過的數(shù)據(jù)塊的分塊號以及該數(shù)據(jù)塊原來的數(shù)據(jù)在所 述數(shù)據(jù)區(qū)存放位置的新分塊號,數(shù)據(jù)區(qū),存儲快照需要保存的數(shù)據(jù),在邏輯上按照所述元數(shù)據(jù)區(qū)中所述數(shù)據(jù)塊的 大小分為多個數(shù)據(jù)塊,塊大小與所述源數(shù)據(jù)區(qū)中每個數(shù)據(jù)塊的塊大小相同,初始化時數(shù)據(jù) 區(qū)的所有數(shù)據(jù)塊都標(biāo)記為未被使用,當(dāng)所述源數(shù)據(jù)區(qū)中的一個數(shù)據(jù)塊在快照創(chuàng)建后第一次 被修改,這個數(shù)據(jù)塊原來的數(shù)據(jù)將被存放到數(shù)據(jù)區(qū)中一個未被使用的數(shù)據(jù)塊中,相應(yīng)的數(shù) 據(jù)區(qū)中的數(shù)據(jù)塊標(biāo)記為已被使用,計(jì)數(shù)區(qū),用位圖的方式存儲所述源數(shù)據(jù)區(qū)中各數(shù)據(jù)塊被修改的次數(shù),所述源數(shù)據(jù) 區(qū)中第η個數(shù)據(jù)塊被修改的次數(shù)用計(jì)數(shù)區(qū)中第η位的值Wn表示,η = 1,2,…,N,步驟(1. 2).用戶通過應(yīng)用程序接口 API在所述快照計(jì)算機(jī)中創(chuàng)建用以創(chuàng)建新快 照的守護(hù)進(jìn)程Daemon,并指定守護(hù)進(jìn)程Daemon在創(chuàng)建新快照時所用到的參數(shù)的值,這些參 數(shù)包括所述快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,數(shù)據(jù)塊的大小,數(shù)據(jù)區(qū)的長度,步驟(2).當(dāng)所述快照計(jì)算機(jī)通過應(yīng)用程序接口 API接收到用戶對源數(shù)據(jù)區(qū)的寫 入請求和寫入數(shù)據(jù)時,依次執(zhí)行以下步驟步驟(2. 1).找到對所述源數(shù)據(jù)區(qū)最新創(chuàng)建的快照,即標(biāo)識位為1的快照,步驟(2. 2).將含有起始地址和長度的所述寫入數(shù)據(jù),按步驟(2. 1)所述快照中的 所述數(shù)據(jù)塊的大小分為多個寫入數(shù)據(jù)塊,每個寫入數(shù)據(jù)塊對應(yīng)一個源數(shù)據(jù)區(qū)的數(shù)據(jù)塊,步驟(2. 3).對步驟(2. 2)所述的每個寫入數(shù)據(jù)塊,按其對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù)塊的 分塊號在步驟(2. 1)所述快照的索引區(qū)中查找,若存在該分塊號,則說明源數(shù)據(jù)區(qū)數(shù)據(jù)塊 原來的數(shù)據(jù)已經(jīng)被保存在數(shù)據(jù)區(qū)中,轉(zhuǎn)步驟(2. 6),若不存在,則執(zhí)行下一步驟(2. 4),步驟(2. 4).把步驟(2. 3)所述寫入數(shù)據(jù)塊對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù)塊中的數(shù)據(jù)拷貝 到步驟(2. 1)所述快照的數(shù)據(jù)區(qū),修改所述快照的索引區(qū)中的分塊號,步驟(2. 5).再把步驟(2. 3)所述寫入數(shù)據(jù)塊的數(shù)據(jù)寫入其對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù) 塊中,步驟(2. 6).把所述快照的計(jì)數(shù)區(qū)中與步驟(2. 3)所述源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號對應(yīng)的修改次數(shù)位的值加1,步驟(2. 7).判斷步驟(2. 2)所述的所有寫入數(shù)據(jù)塊是否都處理完畢,是,則結(jié)束, 否則,重復(fù)步驟(2. 3) 步驟(2. 6),步驟(2. 8).根據(jù)用戶設(shè)定的判定策略及閾值確定是否需要生成新快照若用戶設(shè)定最大平均修改次數(shù)策略,則判斷源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的平均修改次數(shù)是 否超過設(shè)定的平均修改次數(shù)閾值,若超過,則需要生成新快照,否則,不需要,若用戶設(shè)定最大修改次數(shù)策略,則判斷所述源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的修改次數(shù)中最大 的修改次數(shù)是否大于設(shè)定的最大修改次數(shù)閾值,若為大,則需要生成新快照,若為小或等 于,則不需要生成新快照,當(dāng)判斷為需要生成新快照時,執(zhí)行步驟(2. 9),否則,轉(zhuǎn)步驟(2. 10),步驟(2.9).所述快照計(jì)算機(jī)利用所述守護(hù)進(jìn)程Daemon創(chuàng)建新快照,其步驟如 下步驟(2. 9. 1).停止所述源數(shù)據(jù)區(qū)的讀寫服務(wù),步驟(2. 9. 2).按照步驟(1. 2)中用戶設(shè)定的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱, 數(shù)據(jù)塊的大小,快照的數(shù)據(jù)區(qū)長度,創(chuàng)建新快照結(jié)構(gòu),并建立與所述源數(shù)據(jù)區(qū)的映射關(guān)系,步驟(2. 9. 3).在內(nèi)存中建立新快照的計(jì)數(shù)區(qū)緩存,步驟(2. 9. 4).恢復(fù)所述源數(shù)據(jù)區(qū)的讀寫服務(wù),步驟(2.10).結(jié)束。通過實(shí)驗(yàn)表明,該方法在源數(shù)據(jù)區(qū)數(shù)據(jù)修改頻繁時生成快照的時間間隔短,在數(shù) 據(jù)較少時生成快照的時間間隔延長,一段時間內(nèi)所生成的多個快照,每個快照卷所保留的 歷史數(shù)據(jù)量基本相同,能夠適應(yīng)應(yīng)用負(fù)載的動態(tài)變化。另外由于計(jì)數(shù)區(qū)以位圖的方式存儲 各個塊的修改計(jì)數(shù),占用的空間很小,能夠?qū)⒂?jì)數(shù)區(qū)數(shù)據(jù)全部緩存以提高訪問速度,增加的 計(jì)數(shù)區(qū)的查找和修改操作給讀寫性能帶來的影響幾乎可以忽略。


圖1.快照的數(shù)據(jù)結(jié)構(gòu)圖。
圖2.元數(shù)據(jù)區(qū)的數(shù)據(jù)結(jié)構(gòu)
圖3.源數(shù)據(jù)區(qū)寫請求執(zhí)行的流程圖。
圖4.增加計(jì)數(shù)和判定是否生成快照的流程圖。
圖5.系統(tǒng)結(jié)構(gòu)圖。
圖6.內(nèi)核中創(chuàng)建快照的流程圖。
具體實(shí)施例方式本發(fā)明的核心是通過快照的計(jì)數(shù)區(qū)記錄各個源數(shù)據(jù)區(qū)各個塊的修改次數(shù),以此作 為判斷源數(shù)據(jù)區(qū)應(yīng)用負(fù)載高低的依據(jù),動態(tài)地生成新快照,實(shí)現(xiàn)數(shù)據(jù)按需保護(hù)。快照的結(jié)構(gòu)如圖1所示,元數(shù)據(jù)區(qū)、索引區(qū)、數(shù)據(jù)區(qū)和計(jì)數(shù)區(qū),其中元數(shù)據(jù)區(qū)包括用戶賦予的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,該快照的數(shù)據(jù)塊 的大小,數(shù)據(jù)區(qū)的長度以及標(biāo)識位,其結(jié)構(gòu)如圖2所示。其中,源數(shù)據(jù)區(qū),存儲用戶訪問請求 的數(shù)據(jù),對源數(shù)據(jù)區(qū)創(chuàng)建一個快照將保留一個快照創(chuàng)建時刻源數(shù)據(jù)區(qū)的映像,源數(shù)據(jù)區(qū)在邏輯上是按照所述元數(shù)據(jù)區(qū)中數(shù)據(jù)塊的大小分為多個數(shù)據(jù)塊,數(shù)據(jù)塊的編號從1開始,其 分塊號依次為1,2,3,…,N,這個編號就是源數(shù)據(jù)區(qū)的分塊號;標(biāo)識位,它的值為1時,表示 快照是對源數(shù)據(jù)區(qū)最新創(chuàng)建的快照,為0則不是,當(dāng)對源數(shù)據(jù)區(qū)新創(chuàng)建一個快照時,將新創(chuàng) 建的快照的標(biāo)識位置為1,并將對源數(shù)據(jù)區(qū)創(chuàng)建的其它快照的標(biāo)識位置為0索引區(qū),記錄源數(shù)據(jù)區(qū)被修改過的塊的分塊號以及該塊原來的數(shù)據(jù)在數(shù)據(jù)區(qū)存放 位置的新分塊號;數(shù)據(jù)區(qū),存儲快照需要保存的數(shù)據(jù),它在邏輯上按照所述元數(shù)據(jù)區(qū)中數(shù)據(jù)塊的大 小分為多個數(shù)據(jù)塊,塊大小與所述源數(shù)據(jù)區(qū)中每個數(shù)據(jù)塊的塊大小相同,初始化時數(shù)據(jù)區(qū) 的所有塊都標(biāo)記為未被使用,當(dāng)所述源數(shù)據(jù)區(qū)中的一個數(shù)據(jù)塊在快照創(chuàng)建后第一次被修 改,這個數(shù)據(jù)塊原來的數(shù)據(jù)將被存放到數(shù)據(jù)區(qū)中一個未被使用的塊中,相應(yīng)的數(shù)據(jù)區(qū)中的 塊標(biāo)記為已被使用;計(jì)數(shù)區(qū),以位圖的方式存儲所述源數(shù)據(jù)區(qū)中各數(shù)據(jù)塊被修改的次數(shù),所述源數(shù)據(jù) 區(qū)中第η個數(shù)據(jù)塊被修改的次數(shù)用位圖中的第η位表示,η = 1,2,…,N,N為源數(shù)據(jù)區(qū)中 數(shù)據(jù)塊數(shù)目。當(dāng)快照計(jì)算機(jī)接收到對源數(shù)據(jù)區(qū)的寫請求時,順序進(jìn)行圖3所示流程(1)找到對應(yīng)所述源數(shù)據(jù)區(qū)的最新創(chuàng)建的快照,即標(biāo)識位為1的快照(2)根據(jù)步驟1中所述快照設(shè)定的塊大小,將含有起始地址和長度的寫請求數(shù)據(jù) 按快照設(shè)定的數(shù)據(jù)塊大小分為多個寫入數(shù)據(jù)塊,每個寫入數(shù)據(jù)塊對應(yīng)一個源數(shù)據(jù)區(qū)的數(shù)據(jù) 塊;(3)對每個寫入數(shù)據(jù)塊,按其對應(yīng)源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號在快照索引區(qū)中查找, 若已存在,則轉(zhuǎn)步驟5,否則按順序執(zhí)行;(4)將源數(shù)據(jù)區(qū)上需要保存的數(shù)據(jù)拷貝到快照的數(shù)據(jù)區(qū),更新快照索引區(qū);(5)將寫入數(shù)據(jù)塊的數(shù)據(jù)寫入源數(shù)據(jù)區(qū);(6)把所述快照的計(jì)數(shù)區(qū)中與步驟3所述源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號對應(yīng)的修改次 數(shù)位的值加1 ;(7)是否所有分塊都處理完畢,是則順序執(zhí)行,否則轉(zhuǎn)步驟3 ;(8)判斷是否需要生成新快照,若不需要,則轉(zhuǎn)步驟10,否則順序執(zhí)行;(9)守護(hù)進(jìn)程Daemon創(chuàng)建新快照;(10)結(jié)束判斷快照是否為對源數(shù)據(jù)區(qū)最新的快照,可查找該快照元數(shù)據(jù)中的標(biāo)識位,如果 該標(biāo)識位的值為1,則為對源數(shù)據(jù)區(qū)最新的快照,否則不是;在新創(chuàng)建快照時,將新創(chuàng)建快 照的標(biāo)識位為1,并將其他快照的標(biāo)識位置為0。有最大平均修改次數(shù)和最大修改次數(shù)兩種策略判定是否需要生成新快照。最大平 均修改次數(shù)策略下,如果各個數(shù)據(jù)塊的平均修改次數(shù)超過某個閾值,則需要生成新快照。最 大修改次數(shù)策略下,只要其中一個數(shù)據(jù)塊的修改次數(shù)超過閾值就需要生成新快照。選擇相 同的閾值時,平均修改次數(shù)策略下各個快照保護(hù)的歷史數(shù)據(jù)量更加平均,相鄰兩個快照之 間的數(shù)據(jù)更新量大約為塊數(shù)量*閾值;最大修改次數(shù)策略保證對每個塊的數(shù)據(jù)更新量不超 過閾值。不管哪種策略,當(dāng)閾值越小,對源數(shù)據(jù)區(qū)數(shù)據(jù)保護(hù)的強(qiáng)度越大,但快照的開銷也會 有一定的增加。當(dāng)閾值為1時,則是數(shù)據(jù)保護(hù)的極端模式,CDP保護(hù)模式,通過頻繁生成快照而保留被保護(hù)邏輯卷中數(shù)據(jù)塊任意時刻的數(shù)值,使數(shù)據(jù)能夠回滾到過去的任意時刻。上述判斷是否需要生成新快照生所用的閾值由用戶通過應(yīng)用程序接口 API指定。增加計(jì)數(shù)區(qū)計(jì)數(shù)值并判斷是否需要生成新快照的流程如圖4所示,(1)根據(jù)源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號將計(jì)數(shù)區(qū)位圖中對應(yīng)位的值即該塊的修改次數(shù) 加1 ;(2)如果判定策略為平均修改次數(shù)策略,轉(zhuǎn)步驟3,否則,轉(zhuǎn)步驟4 ;(3)判斷源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的平均修改次數(shù)是否大于設(shè)定的平均修改次數(shù)閾值, 若為大,則轉(zhuǎn)步驟5,若為小或等于,則轉(zhuǎn)步驟6 ;(4)判斷所述源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的修改次數(shù)中最大的修改次數(shù)是否大于設(shè)定的最 大修改次數(shù)閾值,若為大,則轉(zhuǎn)步驟5,若為小或等于,則轉(zhuǎn)步驟6,(5)判定需要生成新快照,結(jié)束;(6)判定不需要生成新快照,結(jié)束。系統(tǒng)結(jié)構(gòu)如圖5所示,快照計(jì)算機(jī)(Snapshot Manager)包括用以控制新快照創(chuàng)建 的守護(hù)進(jìn)程Daemon,快照計(jì)算機(jī)接收和處理用戶的訪問請求,并判斷是否需要生成新快照, 快照計(jì)算機(jī)在進(jìn)行決策時需要了解快照和源數(shù)據(jù)區(qū)的信息;應(yīng)用程序接口(API)供用戶訪 問數(shù)據(jù)以及設(shè)置快照參數(shù)和獲取快照狀態(tài)??煺沼?jì)算機(jī)中的守護(hù)進(jìn)程Daemon創(chuàng)建新快照的流程如圖6所示(1)停止源數(shù)據(jù)區(qū)的讀寫服務(wù);(2)按照用戶設(shè)定的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,數(shù)據(jù)塊的大小,快照的數(shù) 據(jù)區(qū)長度創(chuàng)建快照結(jié)構(gòu),并建立與源數(shù)據(jù)區(qū)的映射關(guān)系;(3)在內(nèi)存中建立快照的計(jì)數(shù)區(qū)緩存;(4)恢復(fù)源數(shù)據(jù)區(qū)的讀寫服務(wù);(5)結(jié)束。由于計(jì)數(shù)區(qū)以位圖的方式存儲源數(shù)據(jù)區(qū)各個數(shù)據(jù)塊的修改次數(shù),占用的空間很 小,能夠緩存以提高訪問速度,由于位圖的查找和修改效率為0(1),所以更改計(jì)數(shù)區(qū)中的源 數(shù)據(jù)區(qū)數(shù)據(jù)塊修改次數(shù)值和判定是否生成新快照的開銷僅為幾次內(nèi)存訪問的時間,對寫操 作帶來的影響幾乎可以忽略。緩存將定時寫入快照中以保證系統(tǒng)崩潰或重啟后修改計(jì)數(shù)能 正常讀取。
權(quán)利要求
一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法,其特征在于,所述方法是在用戶端依次按以下步驟實(shí)現(xiàn)的步驟(1).用戶端的初始化,步驟(1.1).用戶通過應(yīng)用程序接口API在快照計(jì)算機(jī)中設(shè)定快照的數(shù)據(jù)結(jié)構(gòu),包括元數(shù)據(jù)區(qū)、索引區(qū)、數(shù)據(jù)區(qū)和計(jì)數(shù)區(qū),其中元數(shù)據(jù)區(qū)包括用戶賦予的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,該快照中數(shù)據(jù)塊的大小,數(shù)據(jù)區(qū)的長度以及標(biāo)識位,其中源數(shù)據(jù)區(qū),存儲用戶訪問請求的數(shù)據(jù),對源數(shù)據(jù)區(qū)創(chuàng)建一個快照將會保留一個快照創(chuàng)建時刻源數(shù)據(jù)區(qū)的映像,源數(shù)據(jù)區(qū)在邏輯上是按照所述元數(shù)據(jù)區(qū)中所述數(shù)據(jù)塊的大小分為多個數(shù)據(jù)塊,數(shù)據(jù)塊的編號從1開始,其分塊號依次為1,2,3,…,N,N為源數(shù)據(jù)區(qū)中數(shù)據(jù)塊數(shù)目,這個編號就是源數(shù)據(jù)區(qū)的分塊號,標(biāo)識位,值為1時,表示快照是對源數(shù)據(jù)區(qū)最新創(chuàng)建的快照,為0,則不是,當(dāng)對源數(shù)據(jù)區(qū)新創(chuàng)建一個快照時,將新創(chuàng)建的快照的標(biāo)識位置為1,并將對源數(shù)據(jù)區(qū)創(chuàng)建的其它快照的標(biāo)識位置為0索引區(qū),記錄源數(shù)據(jù)區(qū)被修改過的數(shù)據(jù)塊的分塊號以及該數(shù)據(jù)塊原來的數(shù)據(jù)在所述數(shù)據(jù)區(qū)存放位置的新分塊號,數(shù)據(jù)區(qū),存儲快照需要保存的數(shù)據(jù),在邏輯上按照所述元數(shù)據(jù)區(qū)中所述數(shù)據(jù)塊的大小分為多個數(shù)據(jù)塊,塊大小與所述源數(shù)據(jù)區(qū)中每個數(shù)據(jù)塊的塊大小相同,初始化時數(shù)據(jù)區(qū)的所有數(shù)據(jù)塊都標(biāo)記為未被使用,當(dāng)所述源數(shù)據(jù)區(qū)中的一個數(shù)據(jù)塊在快照創(chuàng)建后第一次被修改,這個數(shù)據(jù)塊原來的數(shù)據(jù)將被存放到數(shù)據(jù)區(qū)中一個未被使用的數(shù)據(jù)塊中,相應(yīng)的數(shù)據(jù)區(qū)中的數(shù)據(jù)塊標(biāo)記為已被使用,計(jì)數(shù)區(qū),用位圖的方式存儲所述源數(shù)據(jù)區(qū)中各數(shù)據(jù)塊被修改的次數(shù),所述源數(shù)據(jù)區(qū)中第n個數(shù)據(jù)塊被修改的次數(shù)用計(jì)數(shù)區(qū)中第n位的值wn表示,n=1,2,…,N,步驟(1.2).用戶通過應(yīng)用程序接口API在所述快照計(jì)算機(jī)中創(chuàng)建用以創(chuàng)建新快照的守護(hù)進(jìn)程Daemon,并指定守護(hù)進(jìn)程Daemon在創(chuàng)建新快照時所用到的參數(shù)的值,這些參數(shù)包括所述快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,數(shù)據(jù)塊的大小,數(shù)據(jù)區(qū)的長度,步驟(2).當(dāng)所述快照計(jì)算機(jī)通過應(yīng)用程序接口API接收到用戶對源數(shù)據(jù)區(qū)的寫入請求和寫入數(shù)據(jù)時,依次執(zhí)行以下步驟步驟(2.1).找到對所述源數(shù)據(jù)區(qū)最新創(chuàng)建的快照,即標(biāo)識位為1的快照,步驟(2.2).將含有起始地址和長度的所述寫入數(shù)據(jù),按步驟(2.1)所述快照中的所述數(shù)據(jù)塊的大小分為多個寫入數(shù)據(jù)塊,每個寫入數(shù)據(jù)塊對應(yīng)一個源數(shù)據(jù)區(qū)的數(shù)據(jù)塊,步驟(2.3).對步驟(2.2)所述的每個寫入數(shù)據(jù)塊,按其對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號在步驟(2.1)所述快照的索引區(qū)中查找,若存在該分塊號,則說明源數(shù)據(jù)區(qū)數(shù)據(jù)塊原來的數(shù)據(jù)已經(jīng)被保存在數(shù)據(jù)區(qū)中,轉(zhuǎn)步驟(2.6),若不存在,則執(zhí)行下一步驟(2.4),步驟(2.4).把步驟(2.3)所述寫入數(shù)據(jù)塊對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù)塊中的數(shù)據(jù)拷貝到步驟(2.1)所述快照的數(shù)據(jù)區(qū),修改所述快照的索引區(qū)中的分塊號,步驟(2.5).再把步驟(2.3)所述寫入數(shù)據(jù)塊的數(shù)據(jù)寫入其對應(yīng)的源數(shù)據(jù)區(qū)數(shù)據(jù)塊中,步驟(2.6).把所述快照的計(jì)數(shù)區(qū)中與步驟(2.3)所述源數(shù)據(jù)區(qū)數(shù)據(jù)塊的分塊號對應(yīng)的修改次數(shù)位的值加1,步驟(2.7).判斷步驟(2.2)所述的所有寫入數(shù)據(jù)塊是否都處理完畢,是,則結(jié)束,否則,重復(fù)步驟(2.3)~步驟(2.6),步驟(2.8).根據(jù)用戶設(shè)定的判定策略及閾值確定是否需要生成新快照若用戶設(shè)定最大平均修改次數(shù)策略,則判斷源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的平均修改次數(shù)是否超過設(shè)定的平均修改次數(shù)閾值,若超過,則需要生成新快照,否則,不需要,若用戶設(shè)定最大修改次數(shù)策略,則判斷所述源數(shù)據(jù)區(qū)各數(shù)據(jù)塊的修改次數(shù)中最大的修改次數(shù)是否大于設(shè)定的最大修改次數(shù)閾值,若為大,則需要生成新快照,若為小或等于,則不需要生成新快照,當(dāng)判斷為需要生成新快照時,執(zhí)行步驟(2.9),否則,轉(zhuǎn)步驟(2.10),步驟(2.9).所述快照計(jì)算機(jī)利用所述守護(hù)進(jìn)程Daemon創(chuàng)建新快照,其步驟如下步驟(2.9.1).停止所述源數(shù)據(jù)區(qū)的讀寫服務(wù),步驟(2.9.2).按照步驟(1.2)中用戶設(shè)定的快照名稱,快照編號,源數(shù)據(jù)區(qū)名稱,數(shù)據(jù)塊的大小,快照的數(shù)據(jù)區(qū)長度,創(chuàng)建新快照結(jié)構(gòu),并建立與所述源數(shù)據(jù)區(qū)的映射關(guān)系,步驟(2.9.3).在內(nèi)存中建立新快照的計(jì)數(shù)區(qū)緩存,步驟(2.9.4).恢復(fù)所述源數(shù)據(jù)區(qū)的讀寫服務(wù),步驟(2.10).結(jié)束。
全文摘要
一種自適應(yīng)應(yīng)用負(fù)載變化的快照生成方法屬于計(jì)算機(jī)存儲技術(shù)領(lǐng)域,目的是設(shè)計(jì)一種應(yīng)用感知的自適應(yīng)快照生成方法,根據(jù)被保護(hù)數(shù)據(jù)的修改頻率調(diào)節(jié)生成快照的頻率,既達(dá)到自動保留有用歷史數(shù)據(jù)的要求,又保證較好的系統(tǒng)性能與空間利用率,其特征在于為快照分配一個計(jì)數(shù)區(qū)記錄源數(shù)據(jù)區(qū)各個塊的修改次數(shù),創(chuàng)建守護(hù)進(jìn)程,控置快照生成。當(dāng)快照計(jì)算機(jī)收到對源數(shù)據(jù)區(qū)的寫請求時,將其對應(yīng)源數(shù)據(jù)區(qū)數(shù)據(jù)塊的修改次數(shù)增加,并根據(jù)設(shè)定的閾值判斷是否需要生成快照,如果是,則發(fā)送消息給守護(hù)進(jìn)程,守護(hù)進(jìn)程控制生成新快照。本方法具有自適應(yīng)應(yīng)用負(fù)載變化、實(shí)現(xiàn)簡單幾乎不影響讀寫性能影響和使用靈活方便的優(yōu)點(diǎn)。
文檔編號G06F11/14GK101968755SQ20101053195
公開日2011年2月9日 申請日期2010年11月4日 優(yōu)先權(quán)日2010年11月4日
發(fā)明者周煒, 易樂天, 舒繼武 申請人:清華大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
于田县| 罗田县| 察雅县| 佛山市| 聂荣县| 湟源县| 南通市| 遵义市| 灵武市| 思茅市| 石家庄市| 华容县| 社会| 常宁市| 丹阳市| 孝感市| 泰和县| 榆林市| 永嘉县| 遂溪县| 徐汇区| 张家界市| 靖安县| 灵山县| 阿鲁科尔沁旗| 冷水江市| 义乌市| 泸西县| 绥芬河市| 公安县| 潞城市| 邵武市| 灵武市| 凌云县| 桐乡市| 宁海县| 汾阳市| 会东县| 凤翔县| 大连市| 会宁县|