閃存轉(zhuǎn)換層(ftl)數(shù)據(jù)庫日志記錄方案的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明整體涉及數(shù)據(jù)存儲,并且具體地講涉及用于非易失性存儲設(shè)備中的日志記錄的方法和系統(tǒng)。
【背景技術(shù)】
[0002]各種存儲器系統(tǒng)使用非易失性存儲器諸如閃存存儲器來存儲數(shù)據(jù)。閃存存儲器設(shè)備通常由被稱為閃存管理層或閃存轉(zhuǎn)換層(FTL)的管理層來管理。除其它任務(wù)之外,F(xiàn)TL通常管理閃存存儲器在電力中斷之前和之后的操作。
【發(fā)明內(nèi)容】
[0003]本文所述的本發(fā)明的實施例提供一種用在包括非易失性存儲器和易失性存儲器的存儲設(shè)備中的方法。該方法包括保持對用于管理非易失性存儲器中的數(shù)據(jù)存儲的管理信息進行存儲的至少一個數(shù)據(jù)結(jié)構(gòu),使得將數(shù)據(jù)結(jié)構(gòu)的至少一部分存儲在易失性存儲器中。在存儲設(shè)備的操作期間創(chuàng)建日志記錄分塊序列,每個日志記錄分塊包括數(shù)據(jù)結(jié)構(gòu)的相應(yīng)切片以及自該序列中的前一日志記錄分塊以來數(shù)據(jù)結(jié)構(gòu)中發(fā)生的一個或多個變化。將該日志記錄分塊序列存儲在非易失性存儲器中。在從存儲設(shè)備中的電力中斷恢復時,使用所存儲的日志記錄分塊來重建數(shù)據(jù)結(jié)構(gòu)。
[0004]在一些實施例中,數(shù)據(jù)結(jié)構(gòu)包括邏輯地址到非易失性存儲器中的相應(yīng)物理存儲地址的映射。除此之外或作為另外一種選擇,數(shù)據(jù)結(jié)構(gòu)包括非易失性存儲器的相應(yīng)存儲塊的參數(shù)的數(shù)據(jù)庫。
[0005]在所公開的實施例中,創(chuàng)建日志記錄分塊序列包括:累積變化;以及在所累積的變化達到預定義數(shù)據(jù)大小時存儲日志記錄分塊,該日志記錄分塊包括所累積的變化以及數(shù)據(jù)結(jié)構(gòu)的切片。在實施例中,創(chuàng)建日志記錄分塊序列包括:在存儲在給定日志記錄分塊中的變化中包括不與存儲在給定日志記錄分塊中的數(shù)據(jù)結(jié)構(gòu)的切片相關(guān)的至少一個變化。
[0006]在另一個實施例中,創(chuàng)建日志記錄分塊序列包括:在連續(xù)日志記錄分塊中存儲循環(huán)地掃描數(shù)據(jù)結(jié)構(gòu)的相應(yīng)連續(xù)切片。在另一個實施例中,創(chuàng)建日志記錄分塊序列包括:在每個曰志記錄分塊中存儲指向數(shù)據(jù)結(jié)構(gòu)中的相應(yīng)位置的指示,相應(yīng)切片從該相應(yīng)位置獲得。
[0007]在另一個實施例中,至少一個數(shù)據(jù)結(jié)構(gòu)包括多個數(shù)據(jù)結(jié)構(gòu),并且每個日志記錄分塊包括多個數(shù)據(jù)結(jié)構(gòu)的相應(yīng)切片。在另一個實施例中,重建數(shù)據(jù)結(jié)構(gòu)包括:識別在電力中斷之前最近被寫入到非易失性存儲器的最后的日志記錄分塊;識別包括數(shù)據(jù)結(jié)構(gòu)的第一有效切片的第一日志記錄分塊;以及從非易失性存儲器恢復日志記錄分塊,從所識別的第一日志記錄切片直到所識別的最后的日志記錄分塊?;謴腿罩居涗浄謮K可包括:僅在驗證從給定日志記錄分塊讀取的給定變化所涉及的切片已經(jīng)恢復時,應(yīng)用該給定變化。
[0008]根據(jù)本發(fā)明的實施例,另外提供了一種存儲設(shè)備,該存儲設(shè)備包括非易失性存儲器、易失性存儲器和處理器。該處理器被配置為:保持對用于管理非易失性存儲器中的數(shù)據(jù)存儲的管理信息進行存儲的至少一個數(shù)據(jù)結(jié)構(gòu),使得將數(shù)據(jù)結(jié)構(gòu)的至少一部分存儲在易失性存儲器中;在存儲設(shè)備的操作期間創(chuàng)建日志記錄分塊序列,每個日志記錄分塊包括數(shù)據(jù)結(jié)構(gòu)的相應(yīng)切片以及自該序列中的前一日志記錄分塊以來數(shù)據(jù)結(jié)構(gòu)中發(fā)生的一個或多個變化;將該日志記錄分塊序列存儲在非易失性存儲器中;并且在從存儲設(shè)備中的電力中斷恢復時,使用所存儲的日志記錄分塊來重建數(shù)據(jù)結(jié)構(gòu)。
[0009]通過其實施例的下面的【具體實施方式】以及結(jié)合附圖,將更全面地理解本發(fā)明,其中:
【附圖說明】
[0010]圖1是根據(jù)本發(fā)明的實施例的示意性地示出存儲器系統(tǒng)的框圖;
[0011]圖2是根據(jù)本發(fā)明的實施例的示意性地示出數(shù)據(jù)庫日志記錄方案的圖;
[0012]圖3是根據(jù)本發(fā)明的實施例的示意性地示出用于數(shù)據(jù)庫日志記錄的方法的流程圖;并且
[0013]圖4是根據(jù)本發(fā)明的實施例的示意性地示出數(shù)據(jù)庫恢復方案的圖。
【具體實施方式】
[0014]SB
[0015]本文所述的本發(fā)明的實施例提供用于保護免受非易失性存儲設(shè)備中的電力中斷影響的改進的方法和系統(tǒng)。
[0016]在一些實施例中,存儲設(shè)備包括非易失性存儲器諸如NAND閃存存儲器以及管理非易失性存儲器中的數(shù)據(jù)存儲的處理器。處理器保持對用于非易失性存儲器中的數(shù)據(jù)存儲的管理信息進行存儲的至少一個數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)可包括例如邏輯到物理地址轉(zhuǎn)換表和/或存儲塊參數(shù)數(shù)據(jù)庫。
[0017]數(shù)據(jù)結(jié)構(gòu)的至少一部分存儲在存儲設(shè)備的易失性存儲器諸如隨機存取存儲器(RAM)中。這樣,應(yīng)保護數(shù)據(jù)結(jié)構(gòu)免受電力中斷影響。在本文所述的一些實施例中,處理器通過應(yīng)用定期日志記錄方案來保護數(shù)據(jù)結(jié)構(gòu)。
[0018]在典型的實現(xiàn)方式中,處理器將數(shù)據(jù)結(jié)構(gòu)劃分為大量連續(xù)切片。在存儲設(shè)備的操作期間,處理器逐步累積數(shù)據(jù)結(jié)構(gòu)中發(fā)生的變化。當所累積的變化達到預定義數(shù)據(jù)大小時,處理器創(chuàng)建“日志記錄分塊”,該日志記錄分塊包括自前一日志記錄分塊以來發(fā)生的變化并且還包括數(shù)據(jù)結(jié)構(gòu)的下一切片。處理器然后將日志記錄分塊存儲在非易失性存儲器中。
[0019]換句話講,處理器連續(xù)創(chuàng)建并且存儲日志記錄分塊序列,使得每個分塊包括數(shù)據(jù)結(jié)構(gòu)的相應(yīng)切片加上自前一分塊以來數(shù)據(jù)結(jié)構(gòu)中發(fā)生的變化。然而,存儲在給定分塊中的變化可與整個數(shù)據(jù)結(jié)構(gòu)有關(guān),而不一定與存儲在給定分塊中的單獨切片有關(guān)。
[0020]日志記錄分塊序列使得處理器能夠在電力中斷的情況下重建數(shù)據(jù)結(jié)構(gòu)。以下進一步描述示例性恢復方案。
[0021]因為處理器以小分塊形式而不是大量地備份數(shù)據(jù)結(jié)構(gòu)和變化,所公開的日志記錄方案幾乎不或不降低存儲性能。此外,此方案使得處理器能夠在電力中斷后以高速重建數(shù)據(jù)結(jié)構(gòu)。
[0022]因為以頻繁的間隔備份數(shù)據(jù)結(jié)構(gòu)的切片,需要備份的變化的數(shù)量相當小。因此,在恢復期間,僅需要應(yīng)用少量的變化。此特征還減少在任何給定時間尚未被備份到非易失性存儲器的變化,即,將由于電力中斷而丟失的變化的數(shù)量。
[0023]此外,選擇分塊大小和分塊中的單獨字段的大小的靈活性允許將日志記錄方案調(diào)諧為任何期望的運行時存儲性能和恢復時間之間的平衡。處理器存儲日志記錄分塊的速率通常是可變的,并且取決于活動的水平:在密集存儲期間,變化快速累積,日志記錄分塊迅速填充,并且日志記錄速率是高的。在空閑時間期間,變化緩慢累積,并且日志記錄速率因此降低。
[0024]系統(tǒng)描沐
[0025]圖1是根據(jù)本發(fā)明的實施例的示意性地示出存儲器系統(tǒng)的框圖。在本實例中,存儲器系統(tǒng)包括將數(shù)據(jù)存儲在固態(tài)驅(qū)動器(SSD) 24中的計算機20。計算機20可包括例如手機、平板電腦或個人計算機。計算機包括用作主機的中央處理單元(CPU) 26。
[0026]在另選的實施例中,主機可包括任何其它合適的處理器或控制器,并且存儲設(shè)備可包括任何其它合適的設(shè)備。例如,主機可包括企業(yè)存儲系統(tǒng)的存儲控制器,并且存儲設(shè)備可包括SSD或SSD陣列。將數(shù)據(jù)存儲在非易失性存儲設(shè)備中的主機的其它示例包括移動電話、數(shù)碼相機、媒體播放器和可移動存儲器卡或可移動存儲器設(shè)備。
[0027]SSD 24將用于CPU 26的數(shù)據(jù)存儲在非易失性存儲器中,在本實例中存儲在一個或多個NAND閃存存儲器設(shè)備34中。在另選的實施例中,SSD24中的非易失性存儲器可包括任何其它合適類型的非易失性存儲器,諸如例如NOR閃存、電荷擷取閃存(CTF)、相變RAM(PRAM)、磁阻 RAM(MRAM)或鐵電 RAM(FeRAM)。
[0028]SSD控制器30執(zhí)行SSD的各種存儲和管理任務(wù)。SSD控制器也通稱為存儲器控制器。SSD控制器30包括用于與CPU 26通信的主機接口 38;用于與閃存設(shè)備34通信的存儲器接口 46 ;以及執(zhí)行SSD的各種處理任務(wù)的處理器42。
[0029]SSD 24還包括易失性存儲器,在本實例中為隨機存取存儲器(RAM)50。在圖1的實施例中,RAM 50被示出為S