專利名稱:固態(tài)存儲系統(tǒng)、裝置及數據寫入方法
技術領域:
本發(fā)明涉及儲存技術領域,尤其涉及一種固態(tài)存儲系統(tǒng)、裝置及數據寫入方法。
背景技術:
MLC(Mult1-Level Cell,多層單兀)Nand Flash 相對 SLC(Single-Level Cell,單層單元)Nand flash有更高的存儲密度,在固態(tài)硬盤領域有著越來越廣泛的應用。MLC NandFlash—個存儲單元(memory cell)可以存儲2bits的信息,這2bits分屬于兩個不同的page,這樣的一組page叫couple pages,存低位比特的叫l(wèi)ow page,存高位比特的叫uppage,它執(zhí)行寫有以下兩個約束:l)Low page必須在up page之前被寫入;2)Up page在寫入過程中被打斷,比如異常掉電,uppage的信息會丟失,而且它對應的low page的信息也可能會丟失,而low page不會影響其up page?,F有技術通過額外提供備用電源或超級電容,當主電源斷電時,由備用電源供電保證當前正在寫的數據成功寫入到Nand Flash中。但這種解決方式需要提供外部的硬件支持,增加了成本和硬件復雜性,綜上可知,現有的固態(tài)存儲數據的寫入方法,在實際使用上顯然存在不便與缺陷,所以有必要加以改進。
發(fā)明內容
針對上述的缺陷,本發(fā)明的目的在于提供一種固態(tài)存儲系統(tǒng)、裝置及數據寫入方法,在不增加額外硬件成本的前提下恢復被破壞的數據。為了實現上述目的,本發(fā)明提供一種固態(tài)存儲系統(tǒng)的數據寫入方法,所述固態(tài)存儲系統(tǒng)包括若干邏輯盤,所述方法包括:從每個所述邏輯盤分配至少一空閑邏輯塊,用于接收并行數據,每個所述邏輯塊包括若干邏輯頁;將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息;當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。根據本發(fā)明的數據寫入方法,所述邏輯塊的一個存儲單元包括相鄰的兩個所述邏輯頁,其中一個邏輯頁用于存儲低位數據,另一個邏輯頁用于存儲高位數據。根據本發(fā)明的數據寫入方法,所述當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據步驟包括:當所述高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。根據本發(fā)明的數據寫入方法,所述方法還包括:
若接收并行數據的各個邏輯塊中存在所述用于存儲高位數據且頁號相同的邏輯頁,則選擇其中的一個所述邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。本發(fā)明還提供一種固態(tài)存儲系統(tǒng),包括若干邏輯盤,所述存儲系統(tǒng)還包括:分配模塊,用于從每個所述邏輯盤分配至少一空閑邏輯塊,所述空閑邏輯塊用于接收并行數據,每個所述邏輯塊包括若干邏輯頁;設置模塊,用于將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息;恢復模塊,用于當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。根據本發(fā)明的固態(tài)存儲系統(tǒng),所述邏輯塊的一個存儲單元包括相鄰的兩個所述邏輯頁,其中一個邏輯頁用于存儲低位數據,另一個邏輯頁用于存儲高位數據。根據本發(fā)明的固態(tài)存儲系統(tǒng),所述恢復模塊進一步用于當所述高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。根據本發(fā)明的固態(tài)存儲系統(tǒng),所述系統(tǒng)還包括處理模塊,用于所述系統(tǒng)接收并行數據的各個邏輯塊中存在所述用于存儲高位數據且頁號相同的邏輯頁時,選擇其中的一個所述邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。本發(fā)明還提供一種包括如上所述系統(tǒng)的存儲裝置。本發(fā)明通過將固態(tài)存儲系統(tǒng)中各個邏輯塊的頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組可儲存一組并行數據,以及該組并行數據的校驗信息,當一個邏輯頁中的數據被破壞時,系統(tǒng)可通過該邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復被破壞的數據。借此,本發(fā)明可在不增加額外硬件成本的前提下恢復被破壞的數據。
圖1是本發(fā)明的固態(tài)存儲系統(tǒng)的結構示意圖;圖2是本發(fā)明一實施例的固態(tài)硬盤系統(tǒng)的邏輯結構示意圖;圖3A是本發(fā)明一實施例的第一數據寫入狀態(tài)示意圖;圖3B是圖3A所示實施例的第二數據寫入狀態(tài)示意圖;圖3C是圖3A所示實施例的第三數據寫入狀態(tài)示意圖;圖4是本發(fā)明另一實施例的數據寫入狀態(tài)示意圖;圖5是本發(fā)明的數據寫入方法流程圖。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。參見圖1,本發(fā)明提供了一種固態(tài)存儲系統(tǒng),該固態(tài)存儲系統(tǒng)100可應用于固態(tài)存儲裝置,比如固態(tài)硬盤。該系統(tǒng)100的存儲部分包括若干邏輯盤,并且系統(tǒng)100還包括分配模塊10、設置模塊20及恢復模塊30,具體的:分配模塊10,用于從每個所述邏輯盤分配至少一空閑邏輯塊,所述空閑邏輯塊用于接收并行數據,每個所述邏輯塊包括若干邏輯頁。每個邏輯盤通常包括空閑邏輯塊和非空閑邏輯塊,非空閑邏輯塊表示已寫入數據,空閑邏輯塊表示允許寫入數據。當收到寫入數據命令時,分配模塊10自動從邏輯盤中查找空閑的邏輯塊,用于數據寫入。設置模塊20,用于將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組(RAID stripe),每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息。需要說明的,各個數據的校驗信息存儲于單獨的一個邏輯盤,而不與數據存儲在一起,借此,某邏輯盤的數據被破壞時,其校驗信息不會一同被破壞,便于后續(xù)的數據恢復?;謴湍K30,用于當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。如前所述,對于同時寫入的一組并行數據,數據的檢驗信息與數據分開儲存,當邏輯盤中某邏輯頁的數據被損壞時,系統(tǒng)100可通過同時寫入的其它數據及校驗信息計算恢復被損壞的數據。本發(fā)明通過軟件計算方式恢復被破壞的數據,其不需要增加額外的硬件,具有較高的實用性。再參見圖2,該實施例中,固態(tài)存儲系統(tǒng)100包括四個邏輯盤,其中,邏輯盤LUO LU2用于存儲數據,邏輯盤LU3則用于存儲數據的檢驗信息。每個邏輯盤均包括BO和BI兩個邏輯塊,邏輯塊的一個基本存儲單元包括相鄰的兩個邏輯頁,比如邏輯頁PO (LO)和Pl (UO),其中一個邏輯頁PO (LO)用于存儲低位數據,另一個邏輯頁Pl (UO)用于存儲高位數據。當某邏輯塊的高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。結合圖4,邏輯盤LUNl中邏輯塊BI的用于存儲低位數據的邏輯頁PO (LO)被未完成的Pl (UO)的寫操作破壞,比如在寫入Pl (UO)時突然斷電。再次上電后,系統(tǒng)100可通過邏輯頁PO(LO)所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復被破壞的數據,借此使固態(tài)存儲系統(tǒng)100具有數據恢復能力。優(yōu)選的是,本發(fā)明的固態(tài)存儲系統(tǒng)100還包括處理模塊40,用于接收并行數據的各個邏輯塊中存在頁號相同的高位數據的邏輯頁時,選擇其中的一個邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。需要說明的,上述阻塞處理僅對當前一組寫入的數據有效,當下一組并行數據請求寫入時,再重復上述判斷,確定是寫入還是阻塞。具體的實現過程如圖3A 圖3C所示,對于圖3A,一組并行數據寫入時,剛好寫入到邏輯盤LUO LU3的存儲高位數據的邏輯頁Pl (UO),由于各盤的邏輯頁號相同,所以選擇其中的一個邏輯頁(圖中示出選擇的為邏輯盤LUO的邏輯頁Pl (UO))執(zhí)行寫入,其它相同頁號的邏輯頁被阻塞寫入。圖3B和圖3C,分別示出了后續(xù)的寫入過程,且后續(xù)的寫入速度逐漸恢復到正常寫入速度。本發(fā)明還提供一種包括如上所述系統(tǒng)100的固態(tài)存儲裝置,其采用上述阻塞寫入的處理方法,可以保證在掉電時不會有相同頁號的高位數據被同時破壞,進而確保不會有相同頁號的低位數據被破壞,即,保證了每一個磁盤陣列組在系統(tǒng)掉電異常時,最多只有一個數據被破壞,借此可通過磁盤陣列組中未被破壞的數據及校驗信息計算恢復被破壞的數據。參見圖5,本發(fā)明提供了一種數據寫入方法,其可以通過如圖1所示的系統(tǒng)100實現,所述固態(tài)存儲系統(tǒng)包括若干邏輯盤,所述方法包括:步驟S501,從每個所述邏輯盤分配至少一空閑邏輯塊,用于接收并行數據,每個所述邏輯塊包括若干邏輯頁。每個邏輯盤通常包括空閑邏輯塊和非空閑邏輯塊,非空閑邏輯塊表示已寫入數據,空閑邏輯塊表示允許寫入數據。當收到寫入數據命令時,分配模塊10自動從邏輯盤中查找空閑的邏輯塊,用于數據寫入。進一步的,所述邏輯塊的一個存儲單元包括相鄰的兩個所述邏輯頁,其中一個邏輯頁用于存儲低位數據,另一個邏輯頁用于存儲高位數據。步驟S502,將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息。需要說明的,各個數據的校驗信息存儲于單獨的一個邏輯盤,而不與數據存儲在一起,借此,某邏輯盤的數據被破壞時,其校驗信息不會一同被破壞,便于后續(xù)的數據恢復。步驟S503,當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。如前所述,對于同時寫入的一組并行數據,數據的檢驗信息與數據分開儲存,當邏輯盤中某邏輯頁的數據被損壞時,系統(tǒng)100可通過同時寫入的其它數據及校驗信息計算恢復被損壞的數據。具體的,當所述高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。更好的,若接收并行數據的各個邏輯塊中存在用于存儲高位數據且頁號相同的邏輯頁,則選擇其中的一個所述邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。具體的實現過程如圖3A 圖3C所示,對于圖3A,一組并行數據寫入時,剛好寫入到邏輯盤LUO LU3的存儲高位數據的邏輯頁Pl (UO),由于各盤的邏輯頁號相同,所以選擇其中的一個邏輯頁(圖中示出選擇的為邏輯盤LUO的邏輯頁Pl (UO))執(zhí)行寫入,其它相同頁號的邏輯頁被阻塞寫入。圖3B和圖3C,分別示出了后續(xù)的寫入過程,且后續(xù)的寫入速度逐漸恢復到正常寫入速度。采用上述阻塞寫入的處理方法,可以保證在掉電時不會有相同頁號的高位數據被同時破壞,進而確保不會有相同頁號的低位數據被破壞,即,保證了每一個磁盤陣列組在系統(tǒng)掉電異常時,最多只有一個數據被破壞,借此可通過磁盤陣列組中未被破壞的數據及校驗信息計算恢復被破壞的數據。綜上所述,本發(fā)明通過將固態(tài)存儲系統(tǒng)中各個邏輯塊的頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組可儲存一組并行數據,以及該組并行數據的校驗信息,當一個邏輯頁中的數據被破壞時,系統(tǒng)可通過該邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復被破壞的數據。借此,本發(fā)明可在不增加額外硬件成本的前提下恢復被破壞的數據。當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
權利要求
1.一種固態(tài)存儲系統(tǒng)的數據寫入方法,所述固態(tài)存儲系統(tǒng)包括若干邏輯盤,其特征在于,所述方法包括: 從每個所述邏輯盤分配至少一空閑邏輯塊,用于接收并行數據,每個所述邏輯塊包括若干邏輯頁; 將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息; 當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。
2.根據權利要求1所述的數據寫入方法,其特征在于,所述邏輯塊的一個存儲單元包括相鄰的兩個所述邏輯頁,其中一個邏輯頁用于存儲低位數據,另一個邏輯頁用于存儲高位數據。
3.根據權利要求2所述的數據寫入方法,其特征在于,所述當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據步驟包括: 當所述高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。
4.根據權利要求2或3所述的數據寫入方法,其特征在于,所述方法還包括: 若接收并行數據的各個邏輯塊中存在所述用于存儲高位數據且頁號相同的邏輯頁,則選擇其中的一個所述邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。
5.一種固態(tài)存儲系統(tǒng),包括若干邏輯盤,其特征在于,所述存儲系統(tǒng)還包括: 分配模塊,用于從每個所述邏輯盤分配至少一空閑邏輯塊,所述空閑邏輯塊用于接收并行數據,每個所述邏輯塊包括若干邏輯頁; 設置模塊,用于將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息; 恢復模塊,用于當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。
6.根據權利要求5所述的固態(tài)存儲系統(tǒng),其特征在于,所述邏輯塊的一個存儲單元包括相鄰的兩個所述邏輯頁,其中一個邏輯頁用于存儲低位數據,另一個邏輯頁用于存儲高位數據。
7.根據權利要求6所述的固態(tài)存儲系統(tǒng),其特征在于,所述恢復模塊進一步用于當所述高位數據的寫入將對應的低位數據破壞時,通過所述低位數據所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。
8.根據權利要求6或7所述的固態(tài)存儲系統(tǒng),其特征在于,所述系統(tǒng)還包括處理模塊,用于所述系統(tǒng)接收并行數據的各個邏輯塊中存在所述用于存儲高位數據且頁號相同的邏輯頁時,選擇其中的一個所述邏輯頁接收數據寫入,并阻塞其它頁號相同的所述邏輯頁的寫入請求。
9.一種包括如權利要求8所述系統(tǒng)的存儲裝置。
全文摘要
本發(fā)明適用于存儲技術領域,提供了一種固態(tài)存儲系統(tǒng)的數據寫入方法,所述固態(tài)存儲系統(tǒng)包括若干邏輯盤,所述方法包括從每個所述邏輯盤分配至少一空閑邏輯塊,用于接收并行數據,每個所述邏輯塊包括若干邏輯頁;將各個所述邏輯塊中頁號相同的所述邏輯頁設為一個磁盤陣列組,每個所述磁盤陣列組用于儲存一組并行數據,以及所述并行數據的校驗信息;當一個所述邏輯頁中的數據被破壞時,通過所述邏輯頁所在的磁盤陣列組儲存的其它數據以及校驗信息計算恢復所述被破壞的數據。本發(fā)明還提供一種實現上述方法的固態(tài)存儲系統(tǒng)。借此,本發(fā)明在一個邏輯盤出錯的情況下可以恢復該盤數據,且不需要增加額外的成本。
文檔編號G06F3/06GK103092765SQ20121059158
公開日2013年5月8日 申請日期2012年12月31日 優(yōu)先權日2012年12月31日
發(fā)明者李建, 徐偉華 申請人:記憶科技(深圳)有限公司