一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法
【專利摘要】本發(fā)明公開了一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法,包括:在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存,用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間CDP_store,用來記錄FTL映射表的歷史記錄CDP_entry,接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則判斷該請求是讀請求還是寫請求,如果是寫請求,則判斷寫請求隊列緩存中是否有剩余的緩存空間,如果沒有則將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上。本發(fā)明結(jié)合固態(tài)盤本身的特性,利用固態(tài)盤內(nèi)在的“異地更新”產(chǎn)生的“被覆蓋”歷史數(shù)據(jù)遺留在固態(tài)盤中的特征,來實現(xiàn)將固態(tài)盤回滾恢復(fù)至之前的歷史時間點狀態(tài),從而實現(xiàn)基于SSD的連續(xù)數(shù)據(jù)保護的功能。
【專利說明】一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機數(shù)據(jù)存儲和備份領(lǐng)域,更具體地,涉及一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法。
【背景技術(shù)】
[0002]連續(xù)數(shù)據(jù)保護技術(shù)是一種有效的數(shù)據(jù)災(zāi)備技術(shù),它的提出就是為了解決傳統(tǒng)備份技術(shù)需要停機進行備份、災(zāi)難發(fā)生時數(shù)據(jù)丟失量大等缺點。全球網(wǎng)絡(luò)存儲工業(yè)協(xié)會(Storage Networking Industry Association,簡稱 SNIA)給連續(xù)數(shù)據(jù)保護(ContinuousData Protection,簡稱⑶P)的定義是:連續(xù)數(shù)據(jù)保護是一套方法,它可以捕獲或跟蹤數(shù)據(jù)的變化,并將其在生產(chǎn)數(shù)據(jù)之外獨立存放,以確保數(shù)據(jù)可以恢復(fù)到過去的任意時間點。連續(xù)數(shù)據(jù)保護就是持續(xù)地對存儲系統(tǒng)進行安全保護,而不需要專門地對系統(tǒng)進行停機操作。它持續(xù)地跟蹤和保存存儲系統(tǒng)發(fā)生的狀態(tài)變化,即它具有存儲狀態(tài)任意時間點的映像版本。因此與備份技術(shù)相比,它能夠?qū)⒋鎯ο到y(tǒng)狀態(tài)恢復(fù)到與災(zāi)難發(fā)生點無限接近的時刻,而不只是有限個的備份時間點,數(shù)據(jù)丟失量大大減少。因此,企業(yè)通常采用備份與連續(xù)數(shù)據(jù)技術(shù)相結(jié)合的方式來保證數(shù)據(jù)可靠安全,即對數(shù)據(jù)進行周期的備份作為數(shù)據(jù)參照版本,而在兩次備份點之間則采用連續(xù)數(shù)據(jù)保護技術(shù)以減少災(zāi)難發(fā)生時的數(shù)據(jù)丟失量。
[0003]固態(tài)盤內(nèi)部具有一個重要的閃存轉(zhuǎn)換層(File translation layer,簡稱FTL)中間軟件,F(xiàn)TL內(nèi)部有個邏輯地址到物理頁面的映射表,它表示當前時刻固態(tài)盤的邏輯地址與物理頁面之間的對應(yīng)關(guān)系。隨著邏輯地址被寫入新的內(nèi)容,與邏輯地址對應(yīng)的物理頁面也會隨之而改變。由于FTL的存在,系統(tǒng)對同一邏輯地址進行寫操作時,不需要先將頁面擦除,而只需要將數(shù)據(jù)直接寫到新分配的空閑頁面,然后修改FTL映射表使得該邏輯地址對應(yīng)數(shù)據(jù)寫入的新地址。避免了擦除操作對寫操作性能的影響。從上層的角度來看,SSD所呈現(xiàn)的存儲狀態(tài)是完全由FTL當前映射表的內(nèi)容決定的,而與當前SSD磁盤的實際物理狀態(tài)無關(guān)。對于同一磁盤的物理狀態(tài),F(xiàn)TL映射表的內(nèi)容不同,則SSD的對外的狀態(tài)也不同。這就是固態(tài)盤內(nèi)在的“異地更新”產(chǎn)生的“被覆蓋”歷史數(shù)據(jù)遺留在固態(tài)盤中的特征,
[0004]然而,傳統(tǒng)的連續(xù)數(shù)據(jù)保護技術(shù)實現(xiàn)都是基于硬盤驅(qū)動器(Hard disk drive,簡稱HDD)而提出的,它具有兩方面的缺陷。首先,需要對每次數(shù)據(jù)寫操作進行跟蹤并保存數(shù)據(jù),對系統(tǒng)具有持續(xù)性的影響,而且這種影響往往很大。其次,為了保證最小的影響,往往需要在當前的系統(tǒng)中預(yù)留一部分存儲空間來存儲捕獲的數(shù)據(jù),因而減少了運行系統(tǒng)的可用存儲空間。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的以上缺陷或改進需求,本發(fā)明提供了一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法和系統(tǒng),其目的在于結(jié)合固態(tài)盤本身的特性,利用固態(tài)盤內(nèi)在的“異地更新”產(chǎn)生的“被覆蓋”歷史數(shù)據(jù)遺留在固態(tài)盤中的特征,來實現(xiàn)將固態(tài)盤回滾恢復(fù)至之前的歷史時間點狀態(tài),從而實現(xiàn)基于固態(tài)盤存儲系統(tǒng)上的連續(xù)數(shù)據(jù)保護的功能。[0006]為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法,包括以下步驟:
[0007](I)在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存,用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間raP_store,用來記錄FTL映射表的歷史記錄raP_entry ;
[0008](2)接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入步驟(3),如果是恢復(fù)請求則轉(zhuǎn)入步驟(12);
[0009](3)判斷該請求是讀請求還是寫請求,如果是讀請求,則進入步驟(4),如果是寫請求,則進入步驟(7);
[0010](4)檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入步驟(5),否則進入步驟(6);
[0011](5)將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束;
[0012](6)在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束;
[0013](7)判斷寫請求隊列緩存中是否有剩余的緩存空間,如果有則進入步驟(8),否則進入步驟(9);
[0014](8)直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束;
[0015](9 )將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中;
[0016](10)判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值LOWgc,若低于L0We。,則轉(zhuǎn)步驟(11),否則過程結(jié)束;
[0017](11)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間At ;
[0018](12)判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)步驟(13),否則轉(zhuǎn)入步驟(18);
[0019](13)順序地掃描內(nèi)存空間raP_Store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表;
[0020](14)判斷鏈表中時間點是等于或者最大小于(maximum less than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的CDP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入步驟(15),如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入步驟(16);
[0021](15)將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束;
[0022](16)將該鏈表中該時間點對應(yīng)的raP_entry的邏輯頁面對應(yīng)的映射項置為空;
[0023](17)重復(fù)上述步驟(14)至(16),直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束;
[0024](18)向用戶提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
[0025]優(yōu)選地,步驟(11)具體包括以下子步驟:[0026](11-1)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間Λ t,以增加固態(tài)盤的可用磁盤空間;
[0027](11-2)順序掃描所有的FTL映射表的歷史記錄raP_entry,將那些時間戳落在滑動過程經(jīng)過的窗口中的CDP_entry標識位置零,根據(jù)標識出的無效物理頁面去回收相應(yīng)的物理頁面,更新系統(tǒng)中的狀態(tài)信息;
[0028]( 11-3 )判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHc。,如果高于則過程結(jié)束,否則返回步驟(11-1);
[0029]優(yōu)選地,垃圾回收進程停止閾值HIGHec的取值范圍是30%至70%,并且大于最小可用閾值L0We。。[0030]按照本發(fā)明的另一方面,提供了一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護系統(tǒng),包括:
[0031]第一模塊,在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存(Write request queuebuffer,簡稱WRQB),用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間Q)P_store,用來記錄FTL映射表的歷史記錄Q)P_entry ;
[0032]第二模塊,接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入第三模塊,如果是恢復(fù)請求則轉(zhuǎn)入第十二模塊;
[0033]第三模塊,判斷該請求是讀請求還是寫請求,如果是讀請求,則進入第四模塊,如果是寫請求,則進入第七模塊;
[0034]第四模塊,檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入第五模塊,否則進入第六模塊;
[0035]第五模塊,將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束;
[0036]第六模塊,在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束;
[0037]第七模塊,判斷寫請求隊列緩存中是否有剩余的緩存空間,如果有則進入第八模塊,否則進入第九模塊;
[0038]第八模塊,,直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束;
[0039]第九模塊,將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中。
[0040]第十模塊,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值L0We。,若低于L0We。,則轉(zhuǎn)第十一模塊,否則過程結(jié)束;
[0041]第十一模塊,啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間Λ t ;
[0042]第十二模塊,判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)入第十三模塊,否則轉(zhuǎn)入第十八模塊;
[0043]第十三模塊,順序地掃描內(nèi)存空間rap_store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表;[0044]第十四模塊,判斷鏈表中時間點是等于或者最大小于(maximum less than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的raP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入第十五模塊,如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入第十六模塊;
[0045]第十五模塊,將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束。;
[0046]第十六模塊,將該鏈表中該時間點對應(yīng)的CDP_entry的邏輯頁面對應(yīng)的映射項置為空;
[0047]第十七模塊,重復(fù)進入上述模塊第十四至第十七,直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束;
[0048]第十八模塊,向用戶提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
[0049]總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
[0050]1、由于采用了步驟(I)、步驟(7)和步驟(8),在對不太硬盤寫入數(shù)據(jù)塊時不需要對每次數(shù)據(jù)寫操作進行跟蹤并保存數(shù)據(jù),因此對系統(tǒng)沒有持續(xù)性的影響;
[0051]2、由于采用了步驟(11),保證了固態(tài)盤中可用空間一直高于預(yù)先設(shè)定的最低也用閾值,因此改進了運行系統(tǒng)的可用存儲空間;
[0052]3、由于采用了步驟(I)、步驟(7 )和步驟(8 ),引入一個WRQB來暫時緩存到達的寫請求,然后批量地刷新寫到固態(tài)盤上以減少有效頁面的分散程度。WRQB的緩存作用,使得“滑過窗口”期間的垃圾都比較集中地分散在了少量塊中,減少垃圾回收過程的開銷,同時也減小了直接寫入固態(tài)盤的次數(shù),延長了固態(tài)盤的有效壽命;
[0053]4、由于采用了步驟(I)、步驟(13)、步驟(14)和步驟(15),充分利用了固態(tài)盤內(nèi)在的“異地更新”產(chǎn)生的“被覆蓋”歷史數(shù)據(jù)遺留在固態(tài)盤中的特性實現(xiàn)將固態(tài)盤回滾恢復(fù)至之前的歷史時間點狀態(tài)。實施連續(xù)數(shù)據(jù)保護功能以及進行恢復(fù)時只需要將FTL映射表的狀態(tài)恢復(fù)到所請求的恢復(fù)時間點時刻的狀態(tài)即可,都只涉及了 FTL映射表項的拷貝、存儲操作,而沒有涉及任何數(shù)據(jù)內(nèi)容的讀寫操作。由于映射表項的大小要大大少于數(shù)據(jù)內(nèi)容的大小,因此本發(fā)明引起的額外開銷要比傳統(tǒng)的連續(xù)數(shù)據(jù)保護方法小得多。
【專利附圖】
【附圖說明】
[0054]圖1是本發(fā)明基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法的流程圖。
[0055]圖2是普通SSD的結(jié)構(gòu)示意圖和本發(fā)明基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護系統(tǒng)的結(jié)構(gòu)對比示意圖。
[0056]圖3示出raP_entry結(jié)構(gòu)對應(yīng)的字段。
[0057]圖4是CDP_entry的存儲組織結(jié)構(gòu)。
[0058]圖5是本發(fā)明中滑動窗口和保護窗口。
[0059]圖6是固態(tài)盤中垃圾回收開銷示意圖,其中上圖表示回收時有效頁面較均勻地分布在被選塊中,下圖表示有效頁面較有序地分布在被選塊中。
[0060]圖7是本發(fā)明實現(xiàn)的系統(tǒng)運行過程中FTL映射表和raP_store內(nèi)容變化以及恢復(fù)操作示意圖。【具體實施方式】
[0061]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0062]以下首先對本發(fā)明中的技術(shù)術(shù)語進行解釋和說明。
[0063]連續(xù)數(shù)據(jù)保護(O)P) Continuous Data Protection,是一套方法,它可以捕獲或跟蹤數(shù)據(jù)的變化,并將其在生產(chǎn)數(shù)據(jù)之外獨立存放,以確保數(shù)據(jù)可以恢復(fù)到過去的任意時間點;
[0064]閃存轉(zhuǎn)換層(FTL):在固態(tài)盤內(nèi)部一個重要的中間軟件,F(xiàn)TL內(nèi)部有個邏輯地址到物理頁面的映射表,它表示當前時刻固態(tài)盤的邏輯地址與物理頁面之間的對應(yīng)關(guān)系;
[0065]raP_store:用來記錄FTL映射表的歷史狀態(tài)的部件,可以用一個數(shù)據(jù)庫實現(xiàn),raP_store還提供相應(yīng)的管理和檢索接口來管理FTL映射表的歷史;
[0066]Q)P_entry:用來表示每個存儲到Q)P_store表項,Q)P_entry表項由FTL映射表項與FTL映射表項被覆蓋時刻構(gòu)成;
[0067]保護窗口 -Protection Window,系統(tǒng)能夠正確恢復(fù)到的任意時間點狀態(tài)所對應(yīng)的時間長度;
[0068]垃圾回收(GC):固態(tài)盤內(nèi)部運行的一項重要活動,它將那些“被覆蓋”了的物理頁面進行擦除操作(erase),使其變成空閑頁面以備將來再次使用;
[0069]寫請求隊列緩存(WRQB) =WRQB是一個具有可配置大小的緩存區(qū),它可以緩存一定數(shù)量寫頁面請求;
[0070]異地更新:由于FTL的存在,系統(tǒng)對同一邏輯地址進行寫操作時,不需要先將頁面擦除,而只需要將數(shù)據(jù)直接寫到新分配的空閑頁面,然后修改FTL映射表使得該邏輯地址對應(yīng)數(shù)據(jù)寫入的新地址,避免了擦除操作對寫操作性能的影響。
[0071]下面將結(jié)合本發(fā)明實施實例中的附圖,對本發(fā)明實例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例是本發(fā)明的一部分實例,而不是全部的實施例?;诒景l(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0072]本發(fā)明的總體思路是在原固態(tài)盤的FTL層增加了一個raP_store用來記錄歷史FTL映射表的歷史狀態(tài),如圖2所示,其余組織部件都與原固態(tài)盤的相同。raP_Store是一個具有存儲數(shù)據(jù)記錄功能的存儲引擎,它可以用數(shù)據(jù)庫(DB2,MySQL等)實現(xiàn),也可以用專門設(shè)計的邏輯結(jié)構(gòu)實現(xiàn)。CDP_store所存儲的記錄可以完全存儲在固態(tài)盤內(nèi)部的RAM中,以提高訪問速度,也可以先寫入到緩存區(qū)中然后寫入到固態(tài)盤上指定的區(qū)域。在完成寫操作后更新FTL映射表時,將與寫邏輯地址對應(yīng)的映射表項以及當前的時間組成一個記錄項存儲到raP_store中?;謴?fù)時,調(diào)用raP_store模塊提供的恢復(fù)接口,并給定需要恢復(fù)到的歷史時間點,CDP_store檢索出所有邏輯地址在請求的恢復(fù)時間點所對應(yīng)的映射關(guān)系,并將其作為當前有效的FTL映射表。本發(fā)明還設(shè)計了快照接口用來一次性釋放更多的空間。做一次快照操作相當于對系統(tǒng)做一次全量備份,快照的內(nèi)容可以看作是系統(tǒng)的起始狀態(tài)。快照操作后,快照時間點之前所有的歷史數(shù)據(jù)都將被釋放,因此系統(tǒng)不能再恢復(fù)到快照時間點之前的任何狀態(tài),即快照時間點對應(yīng)的數(shù)據(jù)保護窗口長度為O。圖4中每個數(shù)組元素的數(shù)據(jù)類型中包含了一個64位時間(first_written_time)。該時間戳對應(yīng)系統(tǒng)啟動時間點或者系統(tǒng)執(zhí)行快照后頁面快照狀態(tài)所對應(yīng)的最后修改時間點。
[0073]如圖1所示,本發(fā)明基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法包括以下步驟:
[0074](I)在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存(Write request queue buffer,簡稱WRQB),用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間raP_Store,用來記錄FTL映射表的歷史記錄raP_entry ;如圖3所示。具體而言,內(nèi)存空間raP_store是一個具有存儲數(shù)據(jù)記錄功能的存儲引擎,它可以用數(shù)據(jù)庫(諸如DB2,MySQL等)實現(xiàn),也可以用專門設(shè)計的邏輯結(jié)構(gòu)實現(xiàn)。內(nèi)存空間CDP_store所存儲的記錄可以完全存儲在固態(tài)盤內(nèi)部的RAM中,以提高訪問速度,也可以先寫入到緩存區(qū)中然后寫入到固態(tài)盤上指定的區(qū)域。CTP_entry是用來表示每個存儲到⑶P_store中的FTL映射表的歷史記錄,CTP_entry的構(gòu)成如圖3所示,raP_entry表是由FTL映射表與FTL映射表被覆蓋的時刻構(gòu)成。
[0075]本步驟的優(yōu)點在于,引入一個WRQB來暫時緩存到達的寫請求,然后批量地刷新寫到固態(tài)盤上以減少有效頁面的分散程度。WRQB的緩存作用,使得“滑過窗口”期間的垃圾都比較集中地分散在了少量塊中,減少垃圾回收過程的開銷。
[0076](2)接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入步驟(3),如果是恢復(fù)請求則轉(zhuǎn)入步驟(12);具體而言,如果是對數(shù)據(jù)塊的讀寫請求,則該請求中包括讀寫操作的邏輯地址,如果是對數(shù)據(jù)塊的恢復(fù)請求,則該請求中包括請求恢復(fù)到的時間;
[0077](3)判斷該請求是讀請求還是寫請求,如果是讀請求,則進入步驟(4),如果是寫請求,則進入步驟(7);
[0078](4)檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入步驟(5),否則進入步驟(6);
[0079](5)將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束;
[0080](6)在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束;
[0081](7)判斷寫請求隊列緩存中是否有剩余的緩存空間,如果有則進入步驟(8),否則進入步驟(9);具體而言,如圖7所示,圖中上半部分表示FTL映射表分別在T0、T1和T2時刻的存儲狀態(tài),下半部分表示CDP_store的內(nèi)容。每個寫操作用一個包含邏輯頁面(LP)、物理頁面(PP)、寫操作發(fā)生時刻的三元組來表示。比如,三元組(0,9,Tl)表示邏輯頁面在Tl時刻被修改,并且新內(nèi)容被寫到了物理頁面9上。圖中頂部是用三元組表示到達固態(tài)盤的寫請求序列。
[0082](8)直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束;
[0083](9 )將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中。具體而言,如圖7所示,在Tl時刻到達4個寫請求,其中(0,9,Tl)和(I, 16,Tl)兩個寫操作是對邏輯頁面O和I的覆蓋寫操作,而(3,20,Tl)和(4,8,Tl)是分別對邏輯頁面3和4的首次寫入。完成這四個寫操作會產(chǎn)生(2,T0)和(7,T0)兩個raP_entry,并且分別將他們插入到頁面O和I的鏈表中。與此類似,完成了 T2時刻到達的3個寫請求會產(chǎn)生另外三個CDP_entry,將分別插入到對應(yīng)的邏輯頁面鏈表中。
[0084](10)判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值LOWee,若低于LOWee,則轉(zhuǎn)步驟(11 ),否則過程結(jié)束;最小可用閾值LOWee的取值范圍是30%-70%,取值越小,則垃圾回收進程的頻率會更高,則會消耗系統(tǒng)的CPU利用率,取值越大,則垃圾回收進程的頻率會越低,會改進系統(tǒng)的CPU利用率;
[0085]本步驟的優(yōu)點在于,設(shè)置更小的垃圾回收進程控制閾值(啟動閾值LOWe。和停止閾值HIGHec),以盡可能地延長“被覆蓋”的歷史數(shù)據(jù)在固態(tài)盤中存留時間,達到延長保護窗口目的。在固態(tài)盤中,當剩余空閑頁面數(shù)量低于某個預(yù)設(shè)閾值時,垃圾回收進程就會啟動以釋放空間。在普通的固態(tài)盤中,這個閾值通常是以單個芯片為單位,即若閾值設(shè)定為20%,當某個芯片內(nèi)的空閑頁面率小于該閾值時,垃圾回收進程會啟動并釋放該芯片內(nèi)的“被覆蓋”的歷史頁面,因此,即使其它芯片仍有很多空閑頁面(比如空閑頁面小于閾值的那個芯片可能在過去某段時間里對應(yīng)應(yīng)用的熱點數(shù)據(jù)區(qū),而其它頁面對應(yīng)冷數(shù)據(jù)區(qū),則會導(dǎo)致對應(yīng)熱點數(shù)據(jù)區(qū)芯片中的剩余空閑頁面很少,而對應(yīng)冷點數(shù)據(jù)區(qū)芯片中的剩余空閑頁面很多),該芯片上的歷史數(shù)據(jù)也會被回收,因而無法提供恢復(fù)回滾功能。在本發(fā)明中,該閾值被設(shè)定為具有全局意義的數(shù)值,即只有當固態(tài)盤內(nèi)總的剩余空閑頁面占固態(tài)盤總頁面數(shù)的比例低于閾值時,垃圾回收進程才會啟動,這就避免了因局部芯片過度消耗而啟動垃圾回收進程將歷史數(shù)據(jù)提前擦除了,從而延長了保護窗口。
[0086](11)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間Λ t ;本步驟具體包括以下子步驟:
[0087](11-1)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間Λ t,以增加固態(tài)盤的可用磁盤空間,如圖5所示,Λ t的取值是由寫操作所消耗的磁盤空間決定;
[0088](11-2)順序掃描所有的FTL映射表的歷史記錄raP_entry,將那些時間戳落在滑動過程經(jīng)過的窗口中的raP_entry標識位置零,表示其對應(yīng)的物理頁面可以被回收。根據(jù)標識出的無效物理頁面去回收相應(yīng)的物理頁面,更新系統(tǒng)中的狀態(tài)信息;
[0089]( 11-3 )判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則過程結(jié)束,否則返回步驟(11-1);垃圾回收進程停止閾值HIGHgc的取值范圍是30%至70%,并且大于最小可用閾值L0Wec。
[0090]本步驟的優(yōu)點在于,垃圾回收進程只能回收那些被覆蓋時刻落在“滑過窗口”中的歷史物理頁面。計算塊內(nèi)頁面利用率時需要同時包括當前正被FTL映射表映射項指向的物理頁面和塊內(nèi)那些還沒有被“滑過”的物理頁面?!氨桓采w”的歷史數(shù)據(jù)是否仍有效在對應(yīng)的CDP_entry中有相應(yīng)標識位標記,這樣盡可能地延長“被覆蓋”的歷史數(shù)據(jù)在固態(tài)盤中存留時間。
[0091](12)判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)步驟(13),否則轉(zhuǎn)入步驟(18);
[0092](13)順序地掃描內(nèi)存空間raP_store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表;[0093](14)判斷鏈表中時間點是等于或者最大小于(maximum less than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的CDP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入步驟(15),如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入步驟(16);如圖7所示,假設(shè)在T時刻(T0,T2),用戶請求將固態(tài)盤的狀態(tài)恢復(fù)到之前的某時間點T’(T0CT〈Tl)??梢栽谶壿嬳撁?,1和6的鏈表中分別找到符合條件(Τ0是鏈表中最大小于Τ’的時間點)的CDP_entry。它們分別是(2, T0), (7,T0)和(11,T0)。而對于從來沒有被寫過的邏輯頁面(頁面5和頁面7),則直接跳過,將其對應(yīng)映射表項設(shè)為空;對于只被寫過一次且其鏈表為空的邏輯頁面,則判斷其初始時間是否小于或等于所請求的恢復(fù)時間點(T’);
[0094](15)將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束。如圖7所示,若小于等于T’,則該邏輯頁面恢復(fù)后的狀態(tài)應(yīng)為所記錄的初始狀態(tài);
[0095]本步驟的優(yōu)點在于,充分利用了固態(tài)盤內(nèi)在的“異地更新”產(chǎn)生的“被覆蓋”歷史數(shù)據(jù)遺留在固態(tài)盤中的特性實現(xiàn)將固態(tài)盤回滾恢復(fù)至之前的歷史時間點狀態(tài)。實施連續(xù)數(shù)據(jù)保護功能以及進行恢復(fù)時只需要將FTL映射表的狀態(tài)恢復(fù)到所請求的恢復(fù)時間點時刻的狀態(tài)即可,都只涉及了 FTL映射表項的拷貝、存儲操作,而沒有涉及任何數(shù)據(jù)內(nèi)容的讀寫操作。由于映射表項的大小要大大少于數(shù)據(jù)內(nèi)容的大小,因此本發(fā)明引起的額外開銷要比傳統(tǒng)的連續(xù)數(shù)據(jù)保護方法小得多。本發(fā)明的恢復(fù)操作只需要將FTL映射表的狀態(tài)恢復(fù)到所請求的恢復(fù)時間點時刻的狀態(tài)即可。
[0096](16)將該鏈表中該時間點對應(yīng)的raP_entry的邏輯頁面對應(yīng)的映射項置為空;
[0097](17)重復(fù)上述步驟(14)至(16),直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束。如圖7所示,恢復(fù)后邏輯頁面2對應(yīng)的物理頁面為5 (因為其初始時刻TO小于恢復(fù)時間點T’),而邏輯頁面4的映射項為空(因為其初始時刻Tl大于恢復(fù)時間點T’)。綜合起來,恢復(fù)后邏輯頁面的映射表狀態(tài)為(0,2),(1, 7),(2,5), (6,11);
[0098](18)向用戶提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
[0099]本發(fā)明基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護系統(tǒng)包括:
[0100]第一模塊,在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存(Write request queuebuffer,簡稱WRQB),用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間Q)P_store,用來記錄FTL映射表的歷史記錄Q)P_entry ;
[0101]第二模塊,接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入第三模塊,如果是恢復(fù)請求則轉(zhuǎn)入第十二模塊;
[0102]第三模塊,判斷該請求是讀請求還是寫請求,如果是讀請求,則進入第四模塊,如果是寫請求,則進入第七模塊;
[0103]第四模塊,檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入第五模塊,否則進入第六模塊;
[0104]第五模塊,將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束;
[0105]第六模塊,在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束;
[0106]第七模塊,判斷寫請求隊列緩存中是否有剩余的緩存空間,如果有則進入第八模塊,否則進入第九模塊;
[0107]第八模塊,,直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束;
[0108]第九模塊,將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中。
[0109]第十模塊,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值L0We。,若低于L0We。,則轉(zhuǎn)第十一模塊,否則過程結(jié)束;
[0110]第十一模塊,啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間Λ t ;
[0111]第十二模塊,判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)入第十三模塊,否則轉(zhuǎn)入第十八模塊;
[0112]第十三模塊,順序地掃描內(nèi)存空間rap_store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表;
[0113]第十四模塊,判斷鏈表中時間點是等于或者最大小于(maximum less than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的raP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入第十五模塊,如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入第十六模塊;
[0114]第十五模塊,將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束。;
[0115]第十六模塊,將該鏈表中該時間點對應(yīng)的CDP_entry的邏輯頁面對應(yīng)的映射項置為空;
[0116]第十七模塊,重復(fù)進入上述模塊第十四至第十七,直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束。
[0117]第十八模塊,向用戶提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
[0118]本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護方法,其特征在于,包括以下步驟: (1)在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存,用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間CDP_store,用來記錄FTL映射表的歷史記錄CDP_entry ; (2)接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入步驟(3),如果是恢復(fù)請求則轉(zhuǎn)入步驟(12); (3)判斷該請求是讀請求還是寫請求,如果是讀請求,則進入步驟(4),如果是寫請求,則進入步驟(7); (4)檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入步驟(5),否則進入步驟(6); (5)將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束; (6)在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束; (7)判斷寫請求 隊列緩存中是否有剩余的緩存空間,如果有則進入步驟(8),否則進入步驟(9); (8)直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束; (9 )將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中; (10)判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值LOWe。,若低于LOWe。,則轉(zhuǎn)步驟(11),否則過程結(jié)束; (11)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間Λ t ; (12)判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)步驟(13),否則轉(zhuǎn)入步驟(18); (13)順序地掃描內(nèi)存空間CDP_store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表; (14)判斷鏈表中時間點是等于或者最大小于(maximumless than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的CDP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入步驟(15),如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入步驟(16); (15)將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束; (16)將該鏈表中該時間點對應(yīng)的CDP_entry的邏輯頁面對應(yīng)的映射項置為空; (17)重復(fù)上述步驟(14)至(16),直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束; (18)向用戶提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
2.根據(jù)權(quán)利要求1所述的塊級連續(xù)數(shù)據(jù)保護方法,其特征在于,步驟(11)具體包括以下子步驟:(11-1)啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間At,以增加固態(tài)盤的可用磁盤空間; (11-2)順序掃描所有的FTL映射表的歷史記錄raP_entry,將那些時間戳落在滑動過程經(jīng)過的窗口中的CDP_entry標識位置零,根據(jù)標識出的無效物理頁面去回收相應(yīng)的物理頁面,更新系統(tǒng)中的狀態(tài)信息; (11-3)判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHc。,如果高于則過程結(jié)束,否則返回步驟(11-1 )。
3.根據(jù)權(quán)利要求2所述的塊級連續(xù)數(shù)據(jù)保護方法,其特征在于,垃圾回收進程停止閾值HIGHee的取值范圍是30%至70%,并且大于最小可用閾值LOWec。
4.一種基于固態(tài)盤的塊級連續(xù)數(shù)據(jù)保護系統(tǒng),其特征在于,包括: 第一模塊,在內(nèi)存中創(chuàng)建一個空的寫請求隊列緩存(Write request queue buffer,簡稱WRQB ),用于緩存來自用戶的寫請求,在固態(tài)盤的FTL層初始化一個內(nèi)存空間OTP_store,用來記錄FTL映射表的歷史記錄raP_entry ; 第二模塊,接收來自于用戶的請求,并判斷該請求是對數(shù)據(jù)塊的讀寫請求還是恢復(fù)請求,如果是對數(shù)據(jù)塊的讀寫請求則轉(zhuǎn)入第三模塊,如果是恢復(fù)請求則轉(zhuǎn)入第十二模塊; 第三模塊,判斷該請求是讀請求還是寫請求,如果是讀請求,則進入第四模塊,如果是寫請求,則進入第七模塊; 第四模塊,檢查寫請求隊列緩存中是否存在該讀請求的邏輯頁面對應(yīng)的寫請求記錄,如果存在則進入第五模塊,否則進入第六模塊; 第五模塊,將讀請求的邏輯頁面對應(yīng)的寫請求記錄返回給用戶,然后過程結(jié)束; 第六模塊,在固態(tài)盤的FTL映射表中查找該讀請求的邏輯頁面對應(yīng)的物理頁面,并讀取該物理頁面,然后過程結(jié)束; 第七模塊,判斷寫請求隊列緩存中是否有剩余的緩存空間,如果有則進入第八模塊,否則進入第九模塊; 第八模塊,,直接將寫請求添加到寫請求隊列緩存中,然后過程結(jié)束; 第九模塊,將寫請求隊列緩存中的內(nèi)容寫回固態(tài)盤上,更新固態(tài)盤的FTL映射表以及FTL映射表的歷史記錄CDP_entry,并將該寫請求添加到寫請求隊列緩存中。 第十模塊,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否低于預(yù)先設(shè)定的最小可用閾值LOWgc,若低于L0We。,則轉(zhuǎn)第十一模塊,否則過程結(jié)束; 第十一模塊,啟動垃圾回收進程,并將固態(tài)盤的保護窗口向前滑動時間Λ t,回收那些時間戳落在滑動過程經(jīng)過的窗口中的物理頁面,判斷當前固態(tài)盤內(nèi)部可用的空閑頁面率是否高于預(yù)先設(shè)定的垃圾回收進程停止閾值HIGHe。,如果高于則垃圾回收結(jié)束,否則繼續(xù)將保護窗口向前滑動時間At ; 第十二模塊,判斷該恢復(fù)請求的恢復(fù)時間點是否落在固態(tài)盤的保護窗口內(nèi),若落在保護窗口內(nèi),則轉(zhuǎn)入第十三模塊,否則轉(zhuǎn)入第十八模塊; 第十三模塊,順序地掃描內(nèi)存空間rap_store中與每個邏輯頁面對應(yīng)的數(shù)組元素為表頭的鏈表; 第十四模塊,判斷鏈表中時間點是等于或者最大小于(maximum less than)恢復(fù)時間點,還是大于恢復(fù)時間點,如果是等于或者最大小于,則獲得該鏈表中該時間點對應(yīng)的CDP_entry中記錄的物理頁面地址,然后轉(zhuǎn)入第十五模塊,如果是大于恢復(fù)時間點,則說明該頁面在恢復(fù)后的狀態(tài)中是不可見的,轉(zhuǎn)入第十六模塊; 第十五模塊,將固態(tài)盤的FTL映射表中邏輯頁面對應(yīng)的映射項中的物理頁面地址更新為該物理頁面地址,然后過程結(jié)束。; 第十六模塊,將該鏈表中該時間點對應(yīng)的CDP_entry的邏輯頁面對應(yīng)的映射項置為空; 第十七模塊,重復(fù)進入上述模塊第十四至第十七,直至檢查完所有的邏輯頁面對應(yīng)的物理頁面地址為止,由此完成了恢復(fù)操作,然后過程結(jié)束; 第十八模塊,向用戶 提示數(shù)據(jù)恢復(fù)出錯,然后過程結(jié)束。
【文檔編號】G06F12/08GK103544110SQ201310463447
【公開日】2014年1月29日 申請日期:2013年10月8日 優(yōu)先權(quán)日:2013年10月8日
【發(fā)明者】李春花, 周可, 萬廣平, 黃平, 王樺 申請人:華中科技大學(xué)