專利名稱:映射表數(shù)據(jù)恢復(fù)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到數(shù)據(jù)恢復(fù)領(lǐng)域,特別涉及到一種映射表數(shù)據(jù)恢復(fù)方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,F(xiàn)lash(閃存)系統(tǒng)在使用時,映射表通常存儲在內(nèi)存中,因此在掉電 后該映射表數(shù)據(jù)將丟失。而Flash管理系統(tǒng)針對異常掉電進(jìn)行的數(shù)據(jù)恢復(fù)處理時,通常都 需要重新建立映射表。但是在掉電過程中,映射表往往只有很少的部分沒有進(jìn)行保存,大部 分的數(shù)據(jù)都是可靠的,而不需要全部重建。 而現(xiàn)有Flash在掉電后再重新上電時,大多數(shù)情況下,都需將所有映射表數(shù)據(jù)恢 復(fù)一次。如此,大大降低了映射表數(shù)據(jù)的恢復(fù)速度,以及數(shù)據(jù)的可靠性,造成資源浪費(fèi)。
發(fā)明內(nèi)容
本發(fā)明的目的之一為提供一種映射表數(shù)據(jù)恢復(fù)方法及裝置,可提升存儲裝置的可 靠性。 本發(fā)明提出一種映射表數(shù)據(jù)恢復(fù)方法,應(yīng)用于非易失性存儲器中,所述非易失性 存儲器包括至少一存儲區(qū)域,包括步驟 建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲空間; 在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存; 根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。 優(yōu)選地,所述保存至所述存儲區(qū)域中分配的存儲空間的步驟后還包括步驟 根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。 優(yōu)選地,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表的步驟進(jìn)一步包括步驟 搜索最后保存的記錄,提取存儲區(qū)域標(biāo)識符; 根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲地址; 根據(jù)所述存儲地址提取對應(yīng)的映射表。 優(yōu)選地,所述存儲區(qū)域標(biāo)識符包括 下次操作存儲區(qū)域的標(biāo)識符。 優(yōu)選地,所述存儲區(qū)域標(biāo)識符包括 當(dāng)前操作存儲區(qū)域的標(biāo)識符以及下次操作存儲區(qū)域的標(biāo)識符。 優(yōu)選地,所述存儲區(qū)域標(biāo)識符為存儲區(qū)域編號。 本發(fā)明還提出一種映射表數(shù)據(jù)恢復(fù)裝置,應(yīng)用于非易失性存儲器中,所述非易失 性存儲器包括至少一存儲區(qū)域,包括 建表模塊,建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲 空間; 保存模塊,在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存; 恢復(fù)模塊,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。
3
優(yōu)選地,所述裝置進(jìn)一步包括 記錄地址模塊,根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。
優(yōu)選地,所述恢復(fù)模塊進(jìn)一步包括 搜索記錄單元,搜索最后保存的記錄,提取存儲區(qū)域標(biāo)識符;
提取標(biāo)識單元,根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲地址;
提取地址單元,根據(jù)所述存儲地址提取對應(yīng)的映射表。 本發(fā)明映射表數(shù)據(jù)恢復(fù)方法及裝置,可針對閃存系統(tǒng)的每一個區(qū)域建立一映射 表,并存儲在該區(qū)域的物理塊,同時建立一記錄表記錄該映射表的存放地址;且可在完成一 區(qū)域的操作后,記錄下一次操作的區(qū)域編號;在斷電重啟后,閃存系統(tǒng)可根據(jù)該區(qū)域編號提 取對應(yīng)的映射表,進(jìn)行數(shù)據(jù)重建,提高了數(shù)據(jù)恢復(fù)的速度,以及整個閃存系統(tǒng)的可靠性。
圖1是本發(fā)明一實(shí)施例中映射表數(shù)據(jù)恢復(fù)方法的步驟流程示意圖; 圖2是本發(fā)明一實(shí)施例中存儲區(qū)域映射表示意圖; 圖3是本發(fā)明一實(shí)施例一實(shí)施方式中映射表數(shù)據(jù)恢復(fù)方法的步驟流程示意圖 圖4是本發(fā)明一實(shí)施例中映射表的存儲地址記錄示意圖; 圖5是本發(fā)明一實(shí)施例另一實(shí)施方式中步驟S12的流程示意圖; 圖6是本發(fā)明一實(shí)施例中最近兩次存儲地址記錄的示意圖; 圖7是本發(fā)明另一實(shí)施例中映射表數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)示意圖; 圖8是本發(fā)明另一實(shí)施例一實(shí)施方式中映射表數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)示意圖; 圖9是本發(fā)明另一實(shí)施例另一實(shí)施方式中恢復(fù)模塊的結(jié)構(gòu)示意圖。 本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施例方式
本發(fā)明可針對閃存系統(tǒng)的每一個區(qū)域建立一映射表,并存儲在該區(qū)域的物理塊, 同時建立一記錄表記錄該映射表的存放地址;且可在完成一區(qū)域的操作后,記錄下一次操 作的區(qū)域編號;在斷電重啟后,閃存系統(tǒng)可根據(jù)該區(qū)域編號提取對應(yīng)的映射表,進(jìn)行數(shù)據(jù)重 建。其他區(qū)域的映射表可按照斷電前保存的狀態(tài)讀取,提高了數(shù)據(jù)恢復(fù)的速度,以及整個閃 存系統(tǒng)的可靠性。 參照圖l,提出本發(fā)明一實(shí)施例的一種映射表數(shù)據(jù)恢復(fù)方法,應(yīng)用于非易失性存儲 器中,所述非易失性存儲器包括至少一存儲區(qū)域,包括 步驟S10,建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲空 間; 步驟Sll,在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存;
步驟S12,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。
如步驟S10所述,上述非易失性存儲器可為Flash (閃存)存儲器。Flash中設(shè)置 至少一個邏輯的存儲區(qū)域,該存儲區(qū)域中至少包括一個及以上的物理塊。針對某一存儲區(qū) 域建立一映射表,并保存在一物理塊(存儲空間)中。 參照圖2,示出Flash中包括編號為0至N的N+l個存儲區(qū)域;其中,任意一存儲區(qū)域中包括編號為0至N的N+l個物理塊;且,任意一存儲區(qū)域中建立有一映射表,存儲于 物理塊中。
參照圖3,在本實(shí)施例的一實(shí)施方式中,所述步驟S10后還包括 步驟S100,根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。 如步驟S100所述,上述存儲區(qū)域的映射表,可根據(jù)存儲區(qū)域的標(biāo)識符進(jìn)行區(qū)分;
該存儲區(qū)域的標(biāo)識符可為存儲區(qū)域的編號。比如存儲區(qū)域0的映射表為映射表O,存儲區(qū)域
N的映射表為映射表N。 上述記錄可包括映射表0至N中全部映射表的存儲地址。 如步驟Sll所述,當(dāng)對某一存儲區(qū)域進(jìn)行操作后,該存儲區(qū)域相對應(yīng)的映射表中 信息以及映射表的存儲地址,可能發(fā)生變化,需要進(jìn)行更新并保存。因此,當(dāng)對某一存儲區(qū) 域的操作進(jìn)行后,需添加一條記錄,保存該映射表的存儲地址。且還需獲取該當(dāng)前操作存儲 區(qū)域編號(標(biāo)識符)以及下次操作存儲區(qū)域編號,保存至上述記錄中?;蛘撸瑑H獲取下次操 作存儲區(qū)域編號,保存至該記錄中。 在對某一操作完成后的存儲區(qū)域,建立一記錄并保存后,繼續(xù)進(jìn)行下一存儲區(qū)域 的操作。如果在操作中Flash斷電,對該存儲區(qū)域正在進(jìn)行操作或者已經(jīng)完成的操作將不 被保存。 上述記錄可保存在某一固定區(qū)域;比如一物理塊。當(dāng)該物理塊存儲已滿時,可全部 擦除該物理塊數(shù)據(jù),再寫入新的記錄。 如步驟S12所述,由于是完成一存儲區(qū)域的操作就建立一記錄進(jìn)行保存,則Flash 在斷電重啟后,對于已保存有記錄的,則可根據(jù)記錄中保存的映射表地址,直接讀取對應(yīng)的 映射表;對于未保存的,可在上述固定區(qū)域(物理塊)中尋找記錄,根據(jù)記錄中的映射表地 址提取對應(yīng)的映射表,進(jìn)行重建。(參照圖4) 參照圖5,在本實(shí)施例的另一實(shí)施方式中,所述根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng) 的映射表的步驟進(jìn)一步包括步驟 步驟S121,搜索最后保存的記錄,提取存儲區(qū)域標(biāo)識符;
步驟S122,根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲地址;
步驟S123,根據(jù)所述存儲地址提取對應(yīng)的映射表。 如步驟S121所述,當(dāng)記錄中僅保存下次操作存儲區(qū)域編號時,可在上述固定區(qū)域 尋找最后一次保存的記錄,提取該下次操作存儲區(qū)域的編號,對該存儲區(qū)域進(jìn)行重建,恢復(fù) 到斷電前的狀態(tài),提高了重建速度及可靠性。 當(dāng)記錄中保存本次操作存儲區(qū)域編號以及下次操作存儲區(qū)域編號的情況時,可在 上述固定區(qū)域?qū)ふ易罱舾纱?比如兩次)的記錄,比較保存存儲區(qū)域編號,就可以查找到 掉電時正在使用的存儲區(qū)域編號(即下次操作存儲區(qū)域編號),然后進(jìn)行重建,恢復(fù)到掉電 前的狀態(tài),提高了重建速度及可靠性。 參照圖6,本實(shí)施例以尋找最近兩次記錄(記錄2以及記錄3)為例,對查找掉電時 正在使用的存儲區(qū)域編號(即下次操作存儲區(qū)域編號)。上述記錄2中保存的本次操作存 儲區(qū)域編號為4,下次操作存儲區(qū)域編號為5 ;記錄3中保存的本次操作存儲區(qū)域編號為5, 下次操作存儲區(qū)域編號為6。 由于記錄中保存有本次操作存儲區(qū)域編號以及下次操作存 區(qū)域編號,則可提取記錄2中的下次操作存儲區(qū)域編號(5),與記錄3中的本次操作存儲區(qū)域編號(5)進(jìn)行比
較;如果兩編號一致,則可確定正在使用的存儲區(qū)域編號為6 ;否則,報錯。 如步驟S122所述,從最后一次保存提取下次操作存儲區(qū)域編號,根據(jù)該下次操作
存儲區(qū)域編號獲取對應(yīng)的映射表的存儲地址。 如步驟S123所述,根據(jù)獲取的映射表的存儲地址,從存儲區(qū)域的物理塊上提取映 射表,進(jìn)行恢復(fù)。 參照圖7,提出本發(fā)明另一實(shí)施例的一種映射表數(shù)據(jù)恢復(fù)裝置20,應(yīng)用于非易失 性存儲器中,所述非易失性存儲器包括至少一存儲區(qū)域,所述裝置20包括建表模塊21、保 存模塊22以及恢復(fù)模塊23等;該建表模塊21,建立針對所述存儲區(qū)域的映射表,保存至所 述存儲區(qū)域中分配的存儲空間;該保存模塊22,在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲 區(qū)域標(biāo)識符進(jìn)行保存;該恢復(fù)模塊23,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行 映射表數(shù)據(jù)恢復(fù)。 上述建表模塊21可針對Flash的任意一存儲區(qū)域建立一映射表,并保存在該存儲 區(qū)域的一物理塊(存儲空間)中。 參照圖8,在本實(shí)施例的一實(shí)施方式中,所述裝置20進(jìn)一步包括記錄地址模塊24, 根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。 上述記錄地址模塊24,可根據(jù)存儲區(qū)域的標(biāo)識符區(qū)分存儲區(qū)域的映射表,并建立 映射表的存儲地址的記錄進(jìn)行保存;該存儲區(qū)域的標(biāo)識符可為存儲區(qū)域的編號。比如存儲 區(qū)域0的映射表為映射表0,存儲區(qū)域N的映射表為映射表N。上述記錄可包括映射表0至 N中全部映射表的存儲地址。 上述保存模塊22可在對某一存儲區(qū)域的操作進(jìn)行后,添加一條記錄,保存該存儲 區(qū)域映射表的存儲地址。且還需獲取該當(dāng)前操作存儲區(qū)域編號(標(biāo)識符)以及下次操作存 儲區(qū)域編號,保存至上述記錄中。或者,僅獲取下次操作存儲區(qū)域編號,保存至該記錄中。
上述恢復(fù)模塊23可在Flash在斷電重啟后,對于已保存有記錄的,根據(jù)記錄中保 存的映射表地址,直接讀取對應(yīng)的映射表;對于未保存的,在上述固定區(qū)域(物理塊)中尋 找記錄,根據(jù)記錄中的映射表地址提取對應(yīng)的映射表,進(jìn)行重建。 參照圖9,在本實(shí)施例的另一實(shí)施方式中,所述恢復(fù)模塊23進(jìn)一步包括搜索記錄 單元231、提取標(biāo)識單元232以及提取地址單元233 ;該搜索記錄單元231,搜索最后保存的 記錄,提取存儲區(qū)域標(biāo)識符;該提取標(biāo)識單元232,根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲 地址;該提取地址單元233,根據(jù)所述存儲地址提取對應(yīng)的映射表。 上述搜索記錄單元231,可在記錄中僅保存下次操作存儲區(qū)域編號時,從上述固定 區(qū)域?qū)ふ易詈笠淮伪4娴挠涗?,提取該下次操作存儲區(qū)域的編號,對該存儲區(qū)域進(jìn)行重建, 恢復(fù)到斷電前的狀態(tài),提高了重建速度及可靠性。 且可在記錄中保存本次操作存儲區(qū)域編號以及下次操作存儲區(qū)域編號的情況時, 從上述固定區(qū)域?qū)ふ易罱舾纱?比如兩次)的記錄,比較保存存儲區(qū)域編號,就可以查找 到掉電時正在使用的存儲區(qū)域編號(即下次操作存儲區(qū)域編號),然后進(jìn)行重建,恢復(fù)到掉 電前的狀態(tài),提高了重建速度及可靠性。 本實(shí)施例以尋找最近兩次記錄(比如記錄2以及記錄3)為例,對查找掉電時正在 使用的存儲區(qū)域編號(即下次操作存儲區(qū)域編號)。上述記錄2中保存的本次操作存儲區(qū)域編號為4,下次操作存儲區(qū)域編號為5 ;記錄3中保存的本次操作存儲區(qū)域編號為5,下次 操作存儲區(qū)域編號為6。 由于記錄中保存有本次操作存儲區(qū)域編號以及下次操作存儲區(qū)域編號,則可提取
記錄2中的下次操作存儲區(qū)域編號(5),與記錄3中的本次操作存儲區(qū)域編號(5)進(jìn)行比
較;如果兩編號一致,則可確定正在使用的存儲區(qū)域編號為6 ;否則,報錯。 上述提取標(biāo)識單元232,可從最后一次保存提取下次操作存儲區(qū)域編號,根據(jù)該下
次操作存儲區(qū)域編號獲取對應(yīng)的映射表的存儲地址。 上述提取地址單元233,可根據(jù)獲取的映射表的存儲地址,從存儲區(qū)域的物理塊上 提取映射表,進(jìn)行恢復(fù)。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用 本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān) 的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
權(quán)利要求
一種映射表數(shù)據(jù)恢復(fù)方法,應(yīng)用于非易失性存儲器中,所述非易失性存儲器包括至少一存儲區(qū)域,其特征在于,包括步驟建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲空間;在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存;根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。
2. 根據(jù)權(quán)利要求1所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述保存至所述存儲區(qū)域中分配的存儲空間的步驟后還包括步驟根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。
3. 根據(jù)權(quán)利要求2所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表的步驟進(jìn)一步包括步驟搜索最后保存的記錄,提取存儲區(qū)域標(biāo)識符;根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲地址;根據(jù)所述存儲地址提取對應(yīng)的映射表。
4. 根據(jù)權(quán)利要求1至3中任意一項所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述存儲區(qū)域標(biāo)識符包括下次操作存儲區(qū)域的標(biāo)識符。
5. 根據(jù)權(quán)利要求1至3中任意一項所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述存儲區(qū)域標(biāo)識符包括當(dāng)前操作存儲區(qū)域的標(biāo)識符以及下次操作存儲區(qū)域的標(biāo)識符。
6. 根據(jù)權(quán)利要求1至3中任意一項所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述存儲區(qū)域標(biāo)識符為存儲區(qū)域編號。
7. —種映射表數(shù)據(jù)恢復(fù)裝置,應(yīng)用于非易失性存儲器中,所述非易失性存儲器包括至少一存儲區(qū)域,其特征在于,包括建表模塊,建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲空間;保存模塊,在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存;恢復(fù)模塊,根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。
8. 根據(jù)權(quán)利要求7所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述裝置進(jìn)一步包括記錄地址模塊,根據(jù)存儲區(qū)域的標(biāo)識符,建立映射表的存儲地址的記錄進(jìn)行保存。
9. 根據(jù)權(quán)利要求7所述的映射表數(shù)據(jù)恢復(fù)方法,其特征在于,所述恢復(fù)模塊進(jìn)一步包括搜索記錄單元,搜索最后保存的記錄,提取存儲區(qū)域標(biāo)識符;提取標(biāo)識單元,根據(jù)存儲區(qū)域標(biāo)識符獲取映射表的存儲地址;提取地址單元,根據(jù)所述存儲地址提取對應(yīng)的映射表。
全文摘要
本發(fā)明揭示了一種映射表數(shù)據(jù)恢復(fù)方法及裝置。所述映射表數(shù)據(jù)恢復(fù)方法,應(yīng)用于非易失性存儲器中,所述非易失性存儲器包括至少一存儲區(qū)域,包括步驟建立針對所述存儲區(qū)域的映射表,保存至所述存儲區(qū)域中分配的存儲空間;在對所述存儲區(qū)域進(jìn)行操作后,獲取存儲區(qū)域標(biāo)識符進(jìn)行保存;根據(jù)所述存儲區(qū)域標(biāo)識符提取對應(yīng)的映射表,進(jìn)行映射表數(shù)據(jù)恢復(fù)。所述映射表數(shù)據(jù)恢復(fù)裝置,提高了數(shù)據(jù)恢復(fù)的速度,以及整個閃存系統(tǒng)的可靠性。
文檔編號G06F11/14GK101794261SQ200910189539
公開日2010年8月4日 申請日期2009年11月24日 優(yōu)先權(quán)日2009年11月24日
發(fā)明者張彥偉, 成曉華, 李發(fā)生, 羅勝 申請人:深圳市硅格半導(dǎo)體有限公司