專利名稱:一種固態存儲系統的寫入、讀取及垃圾收集方法
技術領域:
本發明主要涉及固態存儲系統領域,尤其是涉及一種具有在線重復數據刪除功能的固態存儲系統的寫入、讀取及垃圾收集方法。
背景技術:
固態存儲系統(Solid State Disk, SSD)是使用固態存儲介質且具備硬盤使用界面的存儲設備。現有的SSD —般使用NANDFlash作為存儲介質。由于NAND Flash具有有限的編程/擦除次數(例如,25nm多層單元閃存(MLC NAND Flash) —般具有3000次編程/擦除壽命),因此如何降低SSD中NAND Flash的損耗是提高SSD使用壽命和可靠性的重要技術課題。重復數據刪除(Data Deduplication)是在存儲技術領域應用很廣泛的一種降低數據量的技術。其原理是:對于每筆寫入存儲系統中的數據A,按照文件或固定大小的塊(chunk)為單位,計算該數據A的唯一特征值(也可稱為該數據A的“指紋”)f。根據該特征值f,去重(dedup)系統會查詢存儲系統中是否有與該特征值相同的數據塊。如果查詢到相同的數據塊,假設為數據B,則dedup系統就不會將這筆新的數據A實際寫入系統,而是用一個指向數據B的指針代替數據A的實際存儲地址。因此,當下一次需要訪問數據A時,就根據指向數據B的地址,從數據B中獲得數據。根據dedup的機制,由于數據B和數據A具有相同的特征值f,因此也具有相同的數據內容(這是因為數據的內容和數據的特征值是一一對應的)。這樣,如果有很多內容相同的數據需要存儲,那么具有dedup功能的存儲系統只需要存儲一份實際的數據,而其他相同的數據就只需用指針來指向該份實際存儲的數據的地址就可以了。而對于沒有dedup功能的存儲系統,則每一份相同內容的數據仍然會占據一塊存儲空間。對于很多應用場景,例如服務器數據的定期備份,個人資料的定期備份等,具有dedup功能的存儲系統可以大大降低對存儲容量的要求。事實上,各大先進存儲系統廠商的存儲備份系統均具備dedup功能,其實際使用表明,最大能夠帶來10 20倍的容量節約。重復數據刪除可以分為off-line (離線)重復數據刪除和in-line (在線)重復數據刪除。其中,所謂off-line,是指在激活去重功能時,該存儲系統不能接受用戶寫入數據,即存儲系統必須在離線(不對用戶提供服務)的情況下進行數據去重;而所謂in-line,是指數據去重功能可以在用戶向存儲系統寫入數據的同時,并行的進行數據去重。
發明內容
本發明的目的在于提供一種具有在線重復數據刪除功能的固態存儲系統的寫入方法,該固態存儲系統包括地址映射表、指紋映射表和有效頁計數表,該寫入方法包括步驟:固態存儲系統接收到寫入邏輯頁的請求;計算該邏輯頁的數據的特征值;判斷該邏輯頁的數據的特征值是否存在于指紋映射表中;若該邏輯頁的數據的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁地址映射的地址記為指紋映射表中的該邏輯頁的數據的特征值對應的物理頁地址;將有效頁計數表中對應的物理頁地址的有效頁計數加I。此外,該寫入方法還包括步驟:若該邏輯頁的數據的特征值未存在于指紋映射表中,則分配一個新的物理頁,在該新的物理頁中寫入該邏輯頁的數據,更新地址映射表并將有效頁計數表中對應的新的物理頁地址的有效頁計數記為I ;在指紋映射表中,以該邏輯頁的數據的特征值創建新的映射,將該邏輯頁的數據的特征值映射到該邏輯頁的數據所寫入到的新的物理頁地址。此外,在有效頁計數表中,有效頁計數是物理頁中包含的有效的邏輯頁的個數。此外,在步驟“固態存儲系統接收到寫入邏輯頁的請求”中,如果檢測到發生覆蓋寫,則需要先查詢地址映射表中該邏輯頁地址對應的物理頁地址,并在有效頁計數表中將對應的物理頁地址的有效頁計數減I。本發明的另一目的還在于提供一種與上述對應的固態存儲系統的讀取方法,該讀取方法包括步驟:固態存儲系統接收到讀取邏輯頁的請求;判斷邏輯頁地址在地址映射表中是否映射到有效的物理頁地址;若該邏輯頁地址在地址映射表中映射到有效的物理頁地址,從該邏輯頁地址映射的物理頁地址中讀取該邏輯頁對應的數據。此外,所述讀取方法還包括步驟:若該邏輯頁地址在地址映射表中沒有映射到任何一個有效的物理頁地址,則返回“無該邏輯頁對應的數據”。本發明的另一目的還在于提供一種與上述對應的固態存儲系統的垃圾收集方法,該垃圾收集方法包括步驟:在固態存儲系統中查詢到垃圾塊;檢測垃圾塊中是否存在包含有效數據的物理頁;若檢測到垃圾塊中存在包含有效數據的物理頁,將垃圾塊中的包含有效數據的物理頁(其地址為搬移前物理頁地址)搬移到固態存儲系統可以寫入新數據的物理頁地址(其地址為搬移后物理頁地址);更新地址映射表,使邏輯頁地址映射到搬移后的物理頁地址;更新指紋映射表中的該有效數據的特征值映射到的物理頁地址為搬移后的物理頁地址;更新有效頁計數表,使搬移后的物理頁地址的有效頁計數等于搬移前的物理頁地址的有效頁計數,使搬移前的物理頁地址的有效頁計數為O ;擦除該垃圾塊。此外,該垃圾收集方法還包括步驟:若檢測到垃圾塊中不存在包含有效數據的物理頁,直接擦除該垃圾塊。此外,在步驟“檢測垃圾塊中是否存在包含有效數據的物理頁”中,檢測垃圾塊中的每個物理頁對應的有效頁計數,若該有效頁計數為0,則該物理頁不包含有效數據;若該有效頁計數不為0,則該物理頁包含有效數據。本發明的具有在線重復數據刪除功能的固態存儲系統的寫入、讀取及垃圾收集方法,可以在線消除寫入固態存儲系統中的重復數據,因此能夠提高固態存儲系統的存儲效率及其性能,并降低功耗。
圖la、lb和Ic分別示出了根據本發明的實施例的固態存儲系統的地址映射表、指紋映射表和有效頁計數表。圖2示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的寫入方法的流程圖。圖3示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的讀取方法的流程圖。圖4示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的垃圾收集方法的流程圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。本發明的固態存儲系統(SSD)具有在線重復數據刪除的功能。在固態存儲系統中,假設去重(dedup)的單位為一個固定長度的塊(chunk),每一塊的長度根據Flash的頁的大小確定,可為4KB、8KB或16KB。某一塊的數據的唯一特征值的產生應該滿足如下條件:一、該特征值僅跟所述某一塊的數據的內容有關;二、所述某一塊的數據的內容與其特征值之間具有一一對應性。當數據的內容發生變化,哪怕是極其微小的變化,該數據的特征值也會發生明顯的改變。可使用現有技術的某種數據摘要算法(例如,MD5、SHA或其簡化版本)來產生每一塊的數據的特征值。在此不對具體產生該特征值的算法做任何限定,只要滿足上述兩個條件即可。圖la、lb和Ic分別示出了根據本發明的實施例的固態存儲系統的地址映射表、指紋映射表和有效頁計數表。如圖1a所示,在根據本發明的實施例的固態存儲系統中,會維護一份邏輯頁地址到物理頁地址的地址映射表(以下文中簡稱為地址映射表)。當計算機主機需要訪問某一塊的數據時,會向SSD發送其邏輯頁地址,而SSD根據該邏輯頁地址,查詢地址映射表,得到實際存儲該塊的數據的物理頁地址。圖1a中的LPA表示存儲的邏輯頁地址,PPA表示存儲的物理頁地址,共有256項邏輯頁地址到物理頁地址的映射關系。但需說明的是,圖1a僅示出了本發明的一種地址映射表,在此并不以此為限定。如圖1b所示,在根據本發明的實施例的固態存儲系統包括的指紋映射表中,FP表示存儲的每個特征值(即指紋),PPA表示存儲的與每個特征值對應的數據的物理頁地址,SSD可以根據該物理頁地址取到實際的數據。為了便于說明,在本發明的實施例中,指紋映射表是以簡單的一維列表的形式表示的,在此并不以此為限。在實際的固態存儲系統中,從運行效率和性能的角度來說,可以選擇更為高效的數據結構。如圖1c所示,在根據本發明的實施例的固態存儲系統包括的有效頁計數表中,Count (有效頁計數)表示該物理頁所存儲的數據的重復數量(即有多少個邏輯頁的數據是與該物理頁的數據相同并且都存儲在該物理頁中)。若物理頁地址(PPA)中存儲的具有某個特征值的數據頁在SSD中只有一個,則其對應的Count為I ;若物理頁地址(PPA)中存儲的具有某個特征值的數據頁在SSD中有η個(即dedup發生作用),則其對應的Count為η。但需說明的是,圖1c僅示出了本發明的一種可能的有效頁計數表的數值,在此并不以此為限定。以下,將詳細說明根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的寫入、讀取和垃圾收集方法。圖2示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的寫入方法的流程圖。如圖2所示,根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的寫入方法包括步驟:S21:固態存儲系統接收到寫入邏輯頁的請求;S22:計算該邏輯頁的數據的特征值;S23:判斷該邏輯頁的數據的特征值是否存在于指紋映射表中;本步驟中,如果該邏輯頁的數據的特征值存在于指紋映射表中,則執行步驟S24和S25,其中,步驟S24:將地址映射表中的該邏輯頁地址映射的地址記為指紋映射表中的該邏輯頁的數據的特征值對應的物理頁地址;步驟S25:將有效頁計數表中對應的物理頁地址的有效頁計數加I。如果該邏輯頁的數據的特征值未存在于指紋映射表中,則執行步驟S26和S27,其中步驟S26:分配一個新的物理頁,在該新的物理頁中寫入該邏輯頁的數據,更新地址映射表并將有效頁計數表中對應的新的物理頁地址的有效頁計數記為I ;步驟S27:在指紋映射表中,以該邏輯頁的數據的特征值創建新的映射,將該邏輯頁的數據的特征值映射到該邏輯頁的數據所寫入到的新的物理頁地址。這里,在步驟S26中,更新地址映射表是指由于該邏輯頁的數據的特征值未存在于指紋映射表中,因此該邏輯頁的數據是新的數據,之前并未在指紋映射表中寫入過,因此需要實際寫入固態存儲系統,并在地址映射表中將該邏輯頁的數據的邏輯頁地址映射為該邏輯頁的數據實際寫入的物理頁地址。此外,在上述步驟中,有效頁計數表中的有效頁計數表示的是以物理頁地址(PPA)中存儲的數據頁代表的有效的邏輯頁的個數。另外,在步驟S21中,如果檢測到發生覆蓋寫(即寫入的邏輯頁地址之前已經寫入過數據),則需要先查詢地址映射表中該邏輯頁地址對應的物理頁地址,并在有效頁計數表中將對應的物理頁地址的有效頁計數減I。與上述固態存儲系統的寫入方法對應的讀取方法為其逆過程,具體參照圖3。圖3示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的讀取方法的流程圖。如圖3所示,根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的讀取方法包括步驟:S31:固態存儲系統接收到讀取邏輯頁的請求;S32:判斷邏輯頁地址在地址映射表中是否映射到有效的物理頁地址;本步驟中,如果該邏輯頁地址在地址映射表中映射到有效的物理頁地址,則執行步驟S33:從該邏輯頁地址映射的物理頁地址中讀取該邏輯頁對應的數據。如果該邏輯頁地址在地址映射表中沒有映射到任何一個有效的物理頁地址,則執行步驟S34:返回“無該邏輯頁對應的數據”。本發明的實施例的固態存儲系統的垃圾收集過程需要從閃存的物理頁地址中讀取其對應的邏輯頁地址,這正好與上述的固態存儲系統的寫入及讀取方法中的從地址映射表中的邏輯頁地址查詢該邏輯頁地址對應的物理頁地址的過程相反,具體參照圖4。圖4示出了根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的垃圾收集方法的流程圖。如圖4所示,根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的垃圾收集方法包括步驟:S41:在固態存儲系統中查詢到垃圾塊;S42:檢測垃圾塊中是否存在包含有效數據的物理頁;本步驟中,如果檢測到垃圾塊中存在包含有效數據的物理頁,則執行步驟S43、步驟S44、步驟S45、步驟S46和步驟S47 ;其中,步驟S43:將垃圾塊中的包含有效數據的物理頁從搬移前的物理頁地址搬移到固態存儲系統可以寫入新數據的搬移后的物理頁地址;步驟S44:更新地址映射表,使邏輯頁地址映射到搬移后的物理頁地址;步驟S45:更新指紋映射表中的該有效數據的特征值映射到的物理頁地址為搬移后的物理頁地址;步驟S46:更新有效頁計數表,使搬移后的物理頁地址的有效頁計數等于搬移前的物理頁地址的有效頁計數,使搬移前的物理頁地址的有效頁計數為O ;步驟S47:擦除該垃圾塊。如果檢測到垃圾塊中不存在包含有效數據的物理頁,則直接執行步驟S47:擦除該垃圾塊。此外,在步驟S42中,檢測垃圾塊中的每個物理頁對應的有效頁計數,若該有效頁計數為0,則該物理頁不包含有效數據;若該有效頁計數不為0,則該物理頁包含有效數據。綜上所述,根據本發明的實施例的具有在線重復數據刪除功能的固態存儲系統的寫入、讀取及垃圾收集方法,可以在線消除寫入固態存儲系統中的重復數據,因此能夠提高固態存儲系統的存儲效率及其性能,并降低功耗。盡管已經參照其示例性實施例具體顯示和描述了本發明,但是本領域的技術人員應該理解,在不脫離權利要求所限定的本發明的精神和范圍的情況下,可以對其進行形式和細節上的各種改變。
權利要求
1.一種具有在線重復數據刪除功能的固態存儲系統的寫入方法,該固態存儲系統包括地址映射表、指紋映射表和有效頁計數表,其特征在于,該寫入方法包括步驟: 固態存儲系統接收到寫入邏輯頁的請求; 計算該邏輯頁的數據的特征值; 判斷該邏輯頁的數據的特征值是否存在于指紋映射表中; 若該邏輯頁的數據的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁地址映射的地址記為指紋映射表中的該邏輯頁的數據的特征值對應的物理頁地址; 將有效頁計數表中對應的物理頁地址的有效頁計數加I。
2.根據權利要求1所述的寫入方法,其特征在于,還包括步驟: 若該邏輯頁的數 據的特征值未存在于指紋映射表中,則分配一個新的物理頁,在該新的物理頁中寫入該邏輯頁的數據,更新地址映射表并將有效頁計數表中對應的新的物理頁地址的有效頁計數記為I ; 在指紋映射表中,以該邏輯頁的數據的特征值創建新的映射,將該邏輯頁的數據的特征值映射到該邏輯頁的數據所寫入到的新的物理頁地址。
3.根據權利要求1或2所述的寫入方法,其特征在于,在有效頁計數表中,有效頁計數是物理頁中包含的有效的邏輯頁的個數。
4.根據權利要求1所述的寫入方法,其特征在于,在步驟“固態存儲系統接收到寫入邏輯頁的請求”中,如果檢測到發生覆蓋寫,則需要先查詢地址映射表中該邏輯頁地址對應的物理頁地址,并在有效頁計數表中將對應的物理頁地址的有效頁計數減I。
5.一種與權利要求1對應的固態存儲系統的讀取方法,其特征在于,該讀取方法包括步驟: 固態存儲系統接收到讀取邏輯頁的請求; 判斷邏輯頁地址在地址映射表中是否映射到有效的物理頁地址; 若該邏輯頁地址在地址映射表中映射到有效的物理頁地址,從該邏輯頁地址映射的物理頁地址中讀取該邏輯頁對應的數據。
6.根據權利要求5所述的讀取方法,其特征在于,還包括步驟: 若該邏輯頁地址在地址映射表中沒有映射到任何一個有效的物理頁地址,則返回“無該邏輯頁對應的數據”。
7.一種與權利要求1對應的固態存儲系統的垃圾收集方法,其特征在于,該垃圾收集方法包括步驟: 在固態存儲系統中查詢到垃圾塊; 檢測垃圾塊中是否存在包含有效數據的物理頁; 若檢測到垃圾塊中存在包含有效數據的物理頁,將垃圾塊中的包含有效數據的物理頁從搬移前的物理頁地址搬移到固態存儲系統可以寫入新數據的搬移后的物理頁地址; 更新地址映射表,使邏輯頁地址映射到搬移后的物理頁地址; 更新指紋映射表中的該有效數據的特征值映射到的物理頁地址為搬移后的物理頁地址; 更新有效頁計數表,使搬移后的物理頁地址的有效頁計數等于搬移前的物理頁地址的有效頁計數,使搬移前的物理頁地址的有效頁計數為O ;擦除該垃圾塊。
8.根據權利要求7所述的垃圾收集方法,其特征在于,還包括步驟: 若檢測到垃圾塊中不存在包含有效數據的物理頁,直接擦除該垃圾塊。
9.根據權利要求7或8所述的垃圾收集方法,其特征在于,在步驟“檢測垃圾塊中是否存在包含有效數據的物理頁”中,檢測垃圾塊中的每個物理頁對應的有效頁計數,若該有效頁計數為O,則該物理頁不包含有效數據;若該有效頁計數不為O,則該物理頁包含有效數據 。
全文摘要
本發明公開一種具有在線重復數據刪除功能的固態存儲系統的寫入、讀取及垃圾收集方法。其中,所述寫入方法包括步驟固態存儲系統接收到寫入邏輯頁的請求;計算該邏輯頁的數據的特征值(即指紋);判斷該邏輯頁的數據的特征值是否存在于指紋映射表中;若該邏輯頁的數據的特征值存在于指紋映射表中,將地址映射表中的該邏輯頁地址映射的地址記為指紋映射表中的該邏輯頁的數據的特征值對應的物理頁地址;將有效頁計數表中對應的物理頁地址的有效頁計數加1。本發明的具有在線重復數據刪除功能的固態存儲系統的寫入、讀取及垃圾收集方法,可以在線消除寫入固態存儲系統中的重復數據,因此能夠提高固態存儲系統的存儲效率及其性能,并降低功耗。
文檔編號G06F12/02GK103150258SQ20131009027
公開日2013年6月12日 申請日期2013年3月20日 優先權日2013年3月20日
發明者劉偉 申請人:中國科學院蘇州納米技術與納米仿生研究所