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