TW202407546A - 用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列 - Google Patents

用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列 Download PDF

Info

Publication number
TW202407546A
TW202407546A TW112124456A TW112124456A TW202407546A TW 202407546 A TW202407546 A TW 202407546A TW 112124456 A TW112124456 A TW 112124456A TW 112124456 A TW112124456 A TW 112124456A TW 202407546 A TW202407546 A TW 202407546A
Authority
TW
Taiwan
Prior art keywords
ssd
ssds
data
mapping table
volatile memory
Prior art date
Application number
TW112124456A
Other languages
English (en)
Inventor
莫尼許珊堤拉爾 沙亞
Original Assignee
美商微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商微軟技術授權有限責任公司 filed Critical 美商微軟技術授權有限責任公司
Publication of TW202407546A publication Critical patent/TW202407546A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申請案涉及利用一種藉由利用分散式糾刪碼RAID來改善記憶體存儲和存取的存儲系統。例如,存儲系統將映射表存儲在一組RAID SSD上的一個或多個SSD的揮發性記憶體內。具體來說,經存儲在一組SSD中的一個SSD中的映射表包括與經存儲在一組SSD中的另一SSD中的資料相對應的映射資訊。以此方式,相較於先前需要多次讀取和多次寫入的方法,存儲系統可顯著減少將新資料寫入一組SSD所需的操作次數。

Description

用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列
本發明涉及用於基於奇偶校驗的快閃儲存裝置的分散式RAID。
近年來,關於數位存儲和記憶體裝置的硬體和軟體兩者皆有顯著進步。例如,通常以NAND快閃記憶體或晶片的形式來實現控制器和固態存儲的固態驅動器(SSD)在容量和效能方面不斷改進。例如,許多SSD現在都包含動態隨機存取記憶體(DRAM),以改進關於NAND快閃記憶體的資料存取和存儲。
另外,各種現有電腦系統利用SSD陣列來提供增強的資料保護。例如,RAID(獨立磁碟冗餘陣列)和類似方案藉由冗餘提供資料保護。特別是,一些如RAID4、RAID5和RAID6的RAID方案利用基於奇偶校驗的方案來在硬碟故障的情況下恢復丟失的資料。儘管取得了這些和其他進步,但關於利用基於奇偶校驗的資料保護方案的NAND快閃儲存裝置(例如SSD)上的資料存儲仍存在問題。
為了說明,利用基於奇偶校驗的跨多個SSD(和類似方案)的RAID的現有電腦系統的效率低下。特別是,雖然具有NAND快閃記憶體的SSD能將大量和少量資料寫入記憶體,但這些SSD的工作負載可需要大量的小寫入(例如,小於SSD的完整RAID條帶的記憶體塊寫入)。事實上,這些SSD執行大量的隨機小記憶體塊寫入,以維護現有資料並存儲新資料。然而,SSD目前需要額外的操作和步驟來將新資料寫入一組SSD中的SSD磁盤。
為了說明,每次將資料寫入具有基於奇偶校驗的RAID方案的SSD時,許多現有電腦系統必須執行至少兩次讀取操作和兩次寫入操作。例如,在不覆蓋整個資料扇區的小塊寫入的情況下,現有電腦系統將新資料寫入可用扇區、讀取舊資料,並同時讀取對應奇偶校驗的資料。電腦系統接著使用舊資料和相應的奇偶校驗來從奇偶校驗中去除舊資料(例如,藉由XOR操作)。此外,電腦系統基於新資料(例如,經由另一XOR操作)決定新的奇偶校驗,並且為新資料寫入新的奇偶校驗。如上所述,一次寫入通常會導致低效地利用資源和兩次讀取操作和兩次寫入操作,從而導致發生額外的開銷操作(例如,額外的垃圾收集、由於額外的硬碟使用而更快地磨損硬碟組件,並在寫入資料上產生更長的延遲)。此外,當要執行多個小隨機寫入時,這些問題會變得更加複雜。
為了解決上述問題,一些現有的電腦系統利用附加的硬體控制器(例如,RAID控制器或記憶體控制器)來作為主機裝置和SSD之間的中介。在這些情況下,硬體控制器需要額外的DRAM來維護一組SSD中資料和奇偶校驗存儲位置的映射表。然而,硬體控制器上的附加DRAM需要大多數計算裝置中通常不包含的附加組件(和成本)。例如,某些組件添加額外的SSD只是為了存儲來自DRAM中的資料。此外,若硬體控制器發生故障或損壞(例如,記憶體表由於電源故障而丟失),則可能會暫時或永久阻止對SSD的存取。作為結果,需要大量的時間及/或多個步驟來恢復硬體控制器,這可能進一步導致顯著的效能損失。此外,這些現有的電腦系統不必要地需要額外的組件和成本來操作。
這些和其他問題導致現有計算系統在利用基於奇偶校驗的RAID SSD方案和類似方案的資料存儲和保護方面效率顯著低下。
本申請案的實施方式以提供藉由利用基於分散式奇偶校驗RAID來改進記憶體存儲和存取的存儲系統的系統、方法和計算裝置,來提供益處及/或解決本領域中的一個或多個前述或其他問題。例如,存儲系統將映射表存儲在一組RAID SSD上的一個或多個SSD的揮發性記憶體內。 具體來說,經存儲在一組SSD的一個SSD中的映射表包括對應於經存儲在一組SSD的一個或多個SSD中的資料的映射資訊。以此方式,存儲系統可將新資料寫入一組SSD所需的操作次數從多次讀取和多次寫入顯著減少為一次或兩次寫入。
本申請案的實施方式以提供藉由利用基於分散式奇偶校驗RAID來改進記憶體存儲和存取的存儲系統的系統、方法和計算裝置,來提供益處及/或解決本領域中的一個或多個前述或其他問題。例如,存儲系統將映射表存儲在一組RAID SSD上的一個或多個SSD的揮發性記憶體內。具體來說,經存儲在一組SSD的一個SSD中的映射表包括對應於經存儲在一組SSD的一個或多個SSD中的資料的映射資訊。以此方式,存儲系統可將新資料寫入一組SSD所需的操作次數從多次讀取和多次寫入顯著減少為一次或兩次寫入。
為了說明,在許多實施方式中,存儲系統(即,基於奇偶校驗的RAID存儲系統)維護跨一組SSD (固態驅動器)的非揮發性記憶體(例如,NAND快閃記憶體)中的資料,其中一組基於奇偶校驗的錯誤編碼SSD (例如,RAID4或RAID 5)包括主SSD和一個或多個輔助SSD。在一些實施方式中,存儲系統將映射表的一些或全部存儲在主SSD的揮發性記憶體(例如,DRAM)內;該映射表的一些或全部指示資料的扇區在輔助SSD之一者內的第一非揮發性記憶體位置(例如,記憶體塊)所位於的位置。此外,存儲系統可在輔助SSD內的第二非揮發性記憶體位置處寫入新資料塊,及在該組SSD內的另一個非揮發性記憶體位置處寫入該新資料塊的新奇偶校驗。此外,存儲系統可更新主SSD上的揮發性記憶體內的映射表,以指示輔SSD上的新資料塊的新的非揮發性記憶體位置。
在附加的實施方式中,存儲系統在一組SSD的一個或多個輔助SSD上維護映射表的一個或多個附加部分。例如,存儲系統將映射表的不同部分存儲在一組SSD中的每個SSD(不包括奇偶校驗碟)的DRAM內。在許多實施方式中,經存儲在一個SSD上的映射表部分包括一組SSD中的一個或多個其他SSD的映射。
在一些實施方式中,存儲系統可促進存儲控制器(例如,RAID控制器)在一個或多個SSD上操作。例如,存儲系統在主SSD上實施存儲控制器。在一個或多個實施方式中,存儲系統將存儲控制器劃分成跨一組SSD中的多個SSD(例如,多個SSD每者各自執行一些存儲控制器功能)。在各種實施方式中,存儲控制器(例如,RAID控制器)位於存儲系統的外部。然而,在這些實施方式中,存儲系統仍可將映射表保留在一個或多個SSD的揮發性記憶體(例如,DRAM)內,以減少寫入新資料塊(例如,小記憶體塊寫入)所需的操作數量。
如本文所描述的,與現有計算系統相比,存儲系統在計算靈活性和效率方面提供了若干技術益處。事實上,存儲系統提供了多種實際應用,這些應用帶來與SSD記憶體裝置和系統相關的益處及/或解決與SSD記憶體裝置和系統相關的問題。
作為概述,由於NAND快閃記憶體晶片的架構,通常不可能在同一位置(例如,記憶體塊)處用新資料覆寫舊資料。相反,會將新資料寫入新位置,並將舊資料標記為無效。此外,為了維護資料,NAND快閃記憶體晶片可需要刷新資料,這可能涉及將有效資料移出包含無效資料的扇區。因此,當利用NAND快閃記憶體晶片時,可執行垃圾收集處理,以丟棄舊的無效資料並恢復可用的記憶體塊空間。
另外,為了追蹤資料在一組SSD上所被存儲的位置,可使用映射表將資料塊的邏輯位址映射到NAND快閃記憶體晶片內的物理位址。傳統上,將映射表存儲在與控制器的快閃記憶體轉換層(FTL)相關聯的DRAM內。在一些情況下,控制器是硬體裝置。在其他實施方式中,控制器是由主機作業系統(OS)或其他組件實現的軟體。然而,如上所述,傳統系統效率低下且容易丟失資料。對之,本文所揭露的存儲系統的實施方式是效率高的。
為了說明,在各種實施方式中,存儲系統藉由維護基於奇偶校驗的RAID存儲系統的一個或多個SSD內的映射表來提高效率。例如,存儲管理器在主SSD上的DRAM(即,揮發性記憶體)內維護映射表;映射表指示資料被存儲在一個或多個輔助驅動器上的哪個位置,且在某些情況下,映射表指示資料被存儲在主驅動器上的哪個位置。以此方式,存儲系統首先生成映射,接著執行SSD操作,這使得存儲系統減少向一組SSD中的SSD寫入新資料所需的操作次數。事實上,在許多實施方式中,操作的數量從四個或更多個操作(例如,至少兩次讀取和兩次寫入)減少到兩個或更少個操作(例如,一次寫入或兩次寫入)。此外,藉由將映射表存儲在DRAM中,存儲系統提高存取映射表及在NAND快閃記憶體上查找存儲資料的位置的檢索速率。
此外,存儲系統可藉由將新資料保存在揮發性記憶體中直到多條新資料準備好被寫入來提高效率。在這些實施方式中,存儲系統可將多個隨機小寫入寫入至一組SSD中的一位置,並對所有新資料使用單個奇偶校驗。作為結果,存儲系統無需在每次添加新資料塊時都進行奇偶校驗校正寫入,從而可進一步提高效率。
此外,存儲系統藉由在一組SSD內的不同SSD上維護映射表的多個部分來提高效率和準確性,這還提供跨一組SSD中的所有SSD提供對稱實現的益處。例如,如果一組SSD包括 N個驅動器加上奇偶校驗驅動器(例如, N+1個驅動器),則存儲系統可將映射表的1/ N劃分出來並將其存儲在 N個驅動器上,如在 N個SSD中的每個SSD的DRAM內。例如,第一SSD包括映射表的第一部分,映射表的第一部分包括 N+1個驅動器上的資料的資料位置;第二SSD包括映射表的第二部分,映射表的第二部分包括 N+1個驅動器上的附加資料的附加資料位置。在這些實施方式中,如果SSD 發生故障,則僅丟失映射表的一小部分。此外,在一些實施方式中,存儲系統能夠快速地回復,並恢復丟失的映射表資訊及從丟失的SSD恢復資料。
此外,存儲系統藉由利用一組SSD中的一個或多個SSD內的存儲控制器來提高效率和準確性。例如,在各種實施方式中,存儲管理器在沒有習知的存儲控制器的情況下進行操作。以此方式,存儲系統避免了這種控制器的計算成本、資金成本和操作成本。然而,若中央存儲控制器為可用的,則存儲系統可利用存儲控制器來維護一組SSD中的SSD的DRAM內的映射表。
如前述討論中所示,本申請案利用各種術語來描述本文所描述的一個或多個實施方式的特徵和優勢。例如,術語「固態驅動器」(SSD)是指一種快閃存儲裝置,其包括快閃晶片、動態隨機存取記憶體(DRAM)和控制器。在各種實施方式中,快閃晶片是NAND快閃記憶體。在一些實施方式中,控制器經配置為藉由輸入/輸出(I/O)匯流排接收和提供資料。在各種實施方式中,SSD用於託管虛擬機器和其他計算組件。
如本文所使用,術語「糾刪碼」(有時稱為錯誤編碼及/或「EC」)是指一種資料保護方法,其中資料被分成片段、用冗餘資料片進行編碼並被存儲在一組不同位置或存儲媒體能夠在部分資料被清除時恢復資料。糾刪碼可包括奇偶校驗的形式;奇偶校驗的形式包括簡單奇偶校驗、RAID4、RAID5和RAID6。此外,糾刪碼亦可包括更複雜的糾刪碼,如Reed-Solomon。
如本文所使用,「RAID」或「獨立磁碟冗餘陣列」是指是被組合成單個存儲單元的多個物理驅動器(例如,SSD)。在各種實施方式中,RAID設置提供冗餘以防止驅動器故障。在一些實施方式中,一個或多個存儲控制器實施RAID方案。另外,本文描述的RAID方案是指利用奇偶校驗來防止部分或全部驅動器故障的糾刪碼RAID方案(包括基於奇偶校驗的RAID方案)。事實上,奇偶校驗可用於在驅動器發生故障時恢復丟失的資料。例如,本文所揭露的存儲系統與RAID4、RAID5、RAID6及可能的、附加的基於奇偶校驗的未來RAID方案一起工作。
值得注意的是,當本文的描述具體涉及RAID方案和基於奇偶校驗的RAID方案時,存儲系統的技術、方法和方式亦可應用於更先進的糾刪碼方案。例如,本文描述的實現方式與其他糾刪碼方案(如Reed-Solomon)一起工作,其利用冗餘資訊來減輕邏輯上彼此連接以形成統一存儲單元的一組驅動器(例如,SSD)的驅動器故障。
此外,術語「存儲映射表」(或簡稱為映射表)是指指示邏輯塊位址與用於存儲資料的物理位置之間的相關性的資料結構。例如,映射表指示在哪個SSD驅動器上,以及驅動器上存儲目標資料的物理位址(例如,記憶體塊)。一般來說,對於NAND晶片,映射表會不斷更新,以準確反映在一個或多個SSD之間移動的資料。在各種實施方式中,將映射表存儲在揮發性記憶體中,如DRAM。在一些實施方式中,將映射表或映射表的副本存儲在非揮發性記憶體(NVM)中,如NAND快閃記憶體。
如本文所使用,「雲端計算系統」是指向計算裝置(如,客戶端裝置、伺服器裝置、供應商裝置、客戶裝置等等)提供各種服務的經連接的計算裝置的網路。例如,如上所述,分散式計算系統可包括以分層結構組織的物理伺服器裝置(例如,伺服器節點)的集合,其包括集群、計算區域、虛擬局域網路(VLAN)、機架和故障域等等。在各種實施方式中,網路是虛擬網路或具有虛擬和真實組件的組合的網路。一般來說,雲端計算系統是利用包括基於奇偶校驗的SSD方案的計算裝置,來助於雲存儲、虛擬機及/或其他服務。
現在提供關於存儲系統的組件和元件的附加細節。例如,圖1A至圖1B示出其中根據一個或多個實施方式來實現存儲系統的計算裝置。特別地,圖1A包括計算裝置102,而圖1B提供關於存儲系統106的組件和元件的附加細節。
如圖1A所示,計算裝置102包括作業系統104和存儲系統106。在各種實施方式中,作業系統104與處理器、應用程式和其他計算組件相關聯。雖然存儲系統106被示為與作業系統104分離,但可從計算裝置102內的各個位置(例如,在單獨的硬體組件上),其包括部分地或完全地藉由作業系統104,來實施計算裝置102。在各種實施方式中,在不同的裝置或多個裝置上實施存儲系統106。另外,在眾多實施方式中,計算裝置102實施基於奇偶校驗的RAID方案,其利用基於奇偶校驗的錯誤編碼來減輕SSD驅動器故障。下文的圖8提供關於如計算裝置102的計算裝置的附加細節。
在各種實施方式中,計算裝置102是雲端計算系統的一部分。例如,將計算裝置102用於雲端存儲、虛擬機操作、或由依賴於基於奇偶校驗的RAID方案的雲端計算系統提供的各種服務。在替代實施方式中,計算裝置102作為單獨的計算系統操作及/或屬於非雲端計算系統。
如圖1A所示,計算裝置102包括具有N個固態驅動器(SSD)的存儲系統106,其中N表示非零整數。如圖所示, N個SSD包括固態驅動器0 110a、固態驅動器1 110b和固態驅動器 N110n(統稱為SSD 110)。每個SSD 110包括控制器112、揮發性記憶體114和非揮發性記憶體116。
在各種實施方式中,SSD表示NAND快閃儲存裝置。例如,非揮發性記憶體116包括物理NAND快閃記憶體晶片(「NAND晶片」)。例如,多個NAND晶片連接到控制器112。為了說明,非揮發性記憶體116包括8個NAND晶片;每個NAND晶片連接到控制器112。此外,8個NAND晶片中的每一者連接到4個附加NAND晶片的匯流排以製作一組32個NAND晶片。
根據一些實施方式,非揮發性記憶體116可處理藉由輸入/輸出(I/O)匯流排接收的存儲存取命令。在一些實施方式中,可將控制器112實施為專用積體電路(ASIC)、現場可程式化閘陣列(FPGA)、微控制器及/或微處理器。另外,可將控制器112整合在SSD內或位於SSD外部。此外,在各種實施方式中,控制器112可促進SSD的NAND晶片的讀取和寫入操作,使得作業系統104不需要對SSD執行緩衝操作。
在若干實施方式中,控制器112可包括快閃記憶體轉換層(FTL)。在一個或多個實施方式中,FTL是在SSD上執行各種操作的硬體及/或軟體層。例如,FTL使得存儲系統106能夠執行邏輯-物理位址轉換、垃圾收集(GC)、壞塊管理(BBM)、分頁分配和錯誤校正編碼(ECC)。在各種實施方式中,控制器112經由由FTL啟用的連接來連接到揮發性記憶體114。
在一個或多個實施方式中,揮發性記憶體114包括用作快取或緩衝區以在資料等待被寫入至非揮發性記憶體116時存儲資料的DRAM (或另一種類型的RAM)。再另外的實施方式中,揮發性記憶體114存儲用於被存儲在非揮發性記憶體116上的資料的映射表(或映射表的一部分)。在各種實施方式中,揮發性記憶體114缺乏存儲完整版本的映射表的能力。
在眾多實施方式中,SSD 110是相同的驅動器。在替代實施方式中,SSD 110是不相同的。例如,SSD 110中的一者具有不同的存儲大小、晶片製造類型、塊或扇區大小、韌體版本及/或生產版本。
在一些實施方式中,SSD 110以RAID方案或系統(例如,RAID5)來實施。例如,在一些實例中,RAID方案包括提供N個裝置容量的N+1個SSD儲存裝置。在各種實施方式中,「+1」驅動器的附加容量可用於存儲按位元奇偶校驗(或簡稱奇偶校驗),且奇偶校驗可用於從已停止工作或以其他方式發生故障的驅動器重新創建資料。另外,在各種實施方式中,SSD 110利用另一種類型的糾刪碼,其可從多於一個故障的SSD恢復丟失的資料。例如,給定N+M個SSD,最多可恢復M個SSD故障。
在示例性的實施方式中,SSD具有4KB的本機扇區大小。在某些情況下,仍支持512B定址(但操作未與4KB邊界對齊),但可能導致需要執行讀取-修改-寫入操作。在各種實施方式中,當在SSD 110上實施RAID時,存儲系統106執行交錯(例如,以4KB的倍數)。另外,單個RAID條帶可具有N×4KB個資料扇區(其中每個扇區經存儲在一組SSD中的不同的SSD中),再加上4KB扇區(即,這些N個扇區的按位元奇偶校驗)。
另外,當將資料寫入SSD 110時,如果單次寫入足夠大以覆蓋整個RAID條帶,則RAID控制器(即,存儲系統106)可計算跨越N個扇區的新資料的奇偶校驗,並一次寫入所有N+1個扇區。然而,如果存儲系統106在不具有計算新奇偶校驗所需的所有資料的情況下寫入非揮發性記憶體116的單個扇區,若遵循如上所述的傳統方法,則可能會遇到問題和效率低下。事實上,如前所述,現有的電腦系統必須將新資料寫入一個塊、從另一個塊讀取舊資料、從又另一個塊讀取舊的奇偶校驗、執行計算以從奇偶校驗中刪除舊資料,並將新的奇偶校驗寫入新塊。作為結果,這個單次寫入的過程變成了兩次讀取和兩次寫入以及各種計算步驟,從而導致效能下降。
與現有的電腦系統相比,存儲系統106可將寫入過程減少至單次寫入(當奇偶校驗寫入與其他新寫入組合時)。更具體來說,存儲系統106對於每個扇區寫入平均寫入1+1/N個寫入(即,當新增奇偶校驗寫入時,每N個寫入變成N+1寫入)。在各種實施方式中,存儲系統106藉由在一個或多個SSD 110上的揮發性記憶體114中維護映射表來實現這一點。此外,在許多實施方式中,經存儲在一個SSD上的映射表包括對於SSD 110中的其他SSD的映射。事實上,讓SSD在其自身的DRAM中存儲其自身的映射表將會在驅動器發生故障時無法提供保護或冗餘,因為驅動器映射將會完全丟失。
另外,與硬碟驅動器(HDD)不同,SSD需要不斷地重新映射。例如,第一次存儲一塊資料時,將其寫入至NAND中的第一個特定位置。接著,下次寫入該塊資料時,該塊資料會被寫入到其他位置。第三次寫入該塊資料時,該塊資料將落在又另一個位置。很少有資料塊會與先前版本的資料塊放在同一位置。事實上,對於NAND,SSD在重寫塊之前會利用多步清除和垃圾收集處理。一般來說,垃圾收集處理包括在沒有標記為刪除的塊(例如,TRIM塊)的情況下,將多個相鄰塊一起清除並將任何有效資料移動到新位置。
在各種實施方式中,SSD 110利用NVMe及/或PCIe作為介面,以與作業系統104及/或其他SSD進行通訊。在一個或多個實施方式中,存儲系統106利用PCIe經由I/O匯流排與伺服器或桌面處理器或周邊裝置(例如,SSD、NIC、GPU)進行通訊。在一些實施方式中,存儲系統106利用位於PCIe之上的NVMe來在SSD 110之間進行通訊。在各種實施方式中,存儲系統106利用類似NVMe的介面來在SSD 110之間進行通訊。如本文所使用,NVMe(非揮發性記憶體標準)是指非揮發性記憶體主機控制器介面,其為用於存取計算裝置的非揮發性存儲媒體的開放式的邏輯裝置介面(例如,通常經由PCI Express(PCIe)匯流排附接)。
圖1B提供關於如上所述的存儲系統106的組件和元件的附加細節。特別地,圖1B提供關於存儲系統106的能力和組件的附加細節。如圖所示,存儲系統106包括各種組件和元件。例如,存儲系統106包括讀/寫管理器120、映射管理器122、奇偶校驗管理器124、錯誤校正管理器126和垃圾收集管理器128。另外,存儲系統106包括上文所介紹的SSD 110。
在各種實施方式中,控制器112促進由存儲系統106執行的動作中的一者或多者。例如,控制器112啟用讀/寫管理器120、映射管理器122、奇偶校驗管理器124、錯誤校正管理器126和垃圾收集管理器128以進行操作。
如圖所示,存儲系統106包括讀/寫管理器120。在一個或多個實施方式中,讀/寫管理器120接收、存取、提供、編輯、創建或以其他方式管理從SSD讀取和寫入的資料和資料塊。例如,讀/寫管理器120將資料寫入至非揮發性記憶體116的塊,及從非揮發性記憶體116的塊中檢索資料。
如圖所示,存儲系統106包括映射管理器122。在各種實施方式中,映射管理器122促進識別、決定、存取或以其他方式管理SSD(非揮發性記憶體116)的邏輯和物理存儲位置之間的映射資料。在各種實施方式中,映射管理器122生成映射表來存儲映射。如上所述,映射管理器122可將映射表存儲在一個或多個SSD 110的揮發性記憶體114中。在許多實施方式中,在一個SSD上的映射表(或完整映射表的一部分)包括用於經存儲在其他SSD上的資料的映射資訊。
還如圖所示,存儲系統106包括奇偶校驗管理器124。在各種實施方式中,奇偶校驗管理器124生成、識別、計算、編輯、修改、存取、提供或以其他方式管理奇偶校驗(例如,按位元奇偶校驗)。例如,奇偶校驗管理器124決定正在寫入的一個或多個塊的奇偶校驗。在一些實施方式中,奇偶校驗管理器124採用相反的過程來恢復故障驅動器上丟失的資料。
如圖所示,存儲系統106包括錯誤校正管理器126。在各種實施方式中,錯誤校正管理器126生成、識別、計算、編輯、修改或以其他方式管理錯誤校正。例如,錯誤校正管理器126利用各種方法和演算法來保護經存儲在SSD 110上的資料的準確性和完整性。
還如圖所示,存儲系統106包括垃圾收集管理器128。在各種實施方式中,垃圾收集管理器128偵測、移除或以其他方式管理SSD 110上的垃圾收集。例如,垃圾收集管理器128執行垃圾收集,以釋放SSD 110內的可用空間和塊。
結合下圖討論與存儲系統106的示例性的實施方式相關的附加細節。為了說明,圖2提供根據一個或多個實施方式的用於利用具有基於奇偶校驗的RAID方案的SSD來有效地管理和寫入新資料的示例性的工作流。如圖所示,圖2示出了存儲系統106的概覽200。
如圖2所示,概覽200包括第一元素210,其顯示在使用基於奇偶校驗的錯誤編碼的跨一組SSD的非揮發性記憶體中維護的資料。例如,在各種實施方式中,存儲系統106生成映射表,該映射表將資料的邏輯位址鏈接到跨RAID或類RAID存儲方案(例如,一組SSD)存儲的其對應的物理位置(例如,記憶體塊),其利用奇偶校驗來防止驅動器丟失。另外,存儲系統106將映射表存儲在一組SSD中的一個或多個SSD上。
如圖所示,概述200包括跨多個SSD維護映射表(其映射到經存儲在一組SSD中的其他SSD中的附加資料塊)的多個部分的第二元素220。例如,根據一些實施方式,存儲系統106將映射表劃分為多個部分。另外,存儲系統106將第一部分存儲在一組SSD中的第一SSD的揮發性記憶體內。另外,第一部分可包括與一組SSD中的其他SSD的物理位址(例如,非揮發性記憶體)相對應的映射。此外,在一些實施方式中,第一部分可包括到經存儲在第一SSD上的資料的一些映射。另外,存儲系統106將映射表的第二部分存儲在一組SSD中的第二SSD的揮發性記憶體內。例如,第二部分可包括與第一SSD上的物理位址相對應的映射。另外,第二部分可包括到一組SSD中的其他SSD上的物理位址的映射。以此方式,若其中一個SSD發生故障,則可利用一組SSD中的其他SSD上的奇偶校驗和映射來恢復第二SSD。
如圖所示,概述200包括藉由將新資料寫入到組而不讀取先前寫入的資料塊或其對應的奇偶校驗塊來更新組的第三元素230。例如,在各種實施方式中,存儲系統106接收新資料塊以存儲在一組SSD中。作為回應,存儲系統106將新資料寫入至非揮發性記憶體的可用塊。在許多情況下,存儲系統106將新資料塊與其他新資料塊一起寫入。此外,存儲系統生成並寫入新資料的奇偶校驗。
另外,在各種情況下,存儲系統106將舊資料標記為要刪除,該舊資料在未來的垃圾收集處理中被清除。此外,當新的資料塊替換現有的資料塊時,存儲系統106更新相應的映射表部分以映射到新的資料片的位置(例如,記憶體塊)。下文結合圖3至圖6B提供關於存儲跨一組SSD中的SSD的映射表及有效地寫入新資料塊的附加細節。
圖3示出根據一個或多個實施方式的在SSD上存儲映射表的分散式RAID的非對稱實施方式的方框圖。如圖所示,圖3包括主機302和一組SSD (例如,SSD 0 304a、SSD 1 304b、SSD N 304n)。在各種實施方式中,圖3中所示的組件是如計算裝置102之類的計算裝置的一部分。
如圖所示,一組SSD中的SSD包括控制器306和NAND 312;控制器306和NAND 312分別表示上文結合圖1A描述的控制器112和非揮發性記憶體116的示例。另外,SSD 0 304a包括DRAM 308,其表示上述揮發性記憶體114的示例。儘管未示出,一組SSD中的其他SSD可包括或可不包括DRAM。此外,如上所述,主機302可表示作業系統104或硬體控制器。
如前所述,圖3示出跨N+1個SSD(即,一組SSD)的非對稱的分散式RAID 300(即,基於非對稱的分散式奇偶校驗的RAID),如RAID 4或RAID5方案,其中SSD經編號為0到N。在如圖3所示的設計中,假設SSD 0 304a具有足夠的DRAM 308容量來保存映射所有N個SSD的位址的映射表310。為了簡單起見,SSD N 304n保持奇偶校驗,但SSD N 304n可以是任何SSD (例如,SSD 0 304a 可以是奇偶校驗)。在一個或多個實施方式中,將奇偶校驗分佈在一組SSD上。
在各個實施方式中,每個SSD中的控制器306可表示SSD控制器專用積體電路(ASIC)。如上所述,控制器可使得存儲系統106能夠執行關於在SSD上存儲和存取資料的各種動作。具體如圖3所示,SSD 0 304a上的控制器306包括映射表310。在一些實施方式中,SSD 0 304a是一組SSD中之向主機302暴露命名空間的唯一SSD。因此,在圖3中,SSD 304a表示主SSD,而SSD 1 304b到SSD N 304n表示輔助SSD。另外,如本文所使用,NVMe技術的上下文中的命名空間指的是主機軟體可存取的邏輯塊位址(LBA)的集合。例如,控制器306利用命名空間ID(NSID)來向主機302提供對目標命名空間的存取。
在一個或多個實施方式中,映射表310(例如,快閃記憶體轉換層(FTL)映射表)經存儲在主SSD(即,SSD 0 304a)的DRAM 308中。在一些實例中,映射表310以4KB的粒度大小和RAID條帶進行映射,具有N×4KB資料塊和一個4KB的奇偶校驗塊。
此外,在各種實施方式中,主SSD程序至少最初地傳送來自主機302的讀取和寫入命令。在塊寫入的情況下,主SSD可將每個4KB的N個寫入組合成RAID條帶,並將各個塊寫入至相應輔助SSD的NAND(例如,在任意LBA處)。此外,主SSD可計算奇偶校驗並將其存儲到奇偶校驗SSD(例如SSD N 304n)。
關於I/O匯流排傳輸,存儲系統106可利用包括主SSD最初接收命令的各種選項。作為一個示例,若命令是4KB塊寫入命令,則存儲系統106使主SSD決定輔助SSD內的RAID條帶佈置並將命令轉發到適當的輔助SSD。此SSD可與主機302通訊以獲取資料(例如,經由DMA(直接記憶體存取)及寫入資料。在此示例中,主SSD亦可DMA資料以用於計算奇偶校驗。
上述示例假設在DMA發生時DMA資料緩衝區未改變。然而,如果資料緩衝區發生變化,則存儲系統106可使主SSD對來自主機的資料進行DMA、計算奇偶校驗、及將資料傳輸到適當的輔助SSD以將其寫入至其NAND存儲器。在後一種情況下,存儲系統106可利用PCIe介面上的對等寫入及/或NVMe I/O寫入。在替代實施方式中,存儲系統106可依賴於使用輔助SSD中的控制器記憶體緩衝區(CMB)。
在一些情況下,單個讀取或寫入操作涉及多個4KB塊。在寫入多個4KB塊的情況下,可將每個4KB記憶體塊寫入視為單獨的4KB寫入並如上所述進行處理。在讀取多個4KB塊的情況下,存儲系統106可將單獨的4KB讀取發送到輔助SSD。例如,輔助SSD可將資料DMA到主機302。另外,輔助SSD可將回應發送到主SSD,主SSD接著可將回應發送到主機302。在讀取大於4KB的情況下,存儲系統106可使主SSD將此等讀取分成多個4KB讀取。此外,在未與4KB邊界對齊的寫入的情況下,存儲系統106可使主SSD執行讀取-修改-寫入操作。
在各種實施方式中,存儲系統106使得主SSD管理輔助SSD中的空間。作為第一示例,若輔助SSD中的NAND與主SSD中的NAND相同,則存儲系統106可在塊級別管理NAND。例如,存儲系統106使得主SSD分配已清除塊的條帶(例如,每SSD一個條帶;每SSD包括主SSD本身)和其中的程式資料。此處,整個條帶可立即閉合。接著,在未來的某個時間處,存儲系統106對整個條帶執行垃圾收集(GC)以使此整個條帶可用於重用。此外,存儲系統106可在每個單獨的SSD處執行壞塊管理,同時讓主SSD留下來處理其他操作。
在第二示例中,若輔助SSD具有(或潛在地可具有)與主SSD不同的NAND類型,則存儲系統106可採用更高級別的抽象化。為了說明,存儲系統106使輔助SSD向主SSD提供線性LBA範圍,而不是管理清除塊。在各種實施方式中,此範圍在所有SSD(包括主SSD本身)中都是相等的。在SSD之間的容量變化的情況下,在一些實例中,存儲系統106利用最小SSD的容量。在其他實例中,存儲系統106利用主SSD或另一輔助SSD的容量。
在另外的實施方式中,存儲系統106可使得主SSD順序地使用每個LBA範圍(包括其自身的LBA範圍)。例如,在第一遍之後,若順序寫入遇到有效的記憶體塊,則存儲系統106可使得主SSD跳過此等有效的記憶體塊並使得SSD中發生垃圾收集(GC)。
在各種實施方式中,存儲系統106可利用環形緩衝區來管理向一組SSD的SSD寫入資料。例如,存儲系統106可使用環形緩衝區來處理及/或解決一組SSD中的SSD大小不等的問題。例如,藉由使用環形緩衝區,存儲系統106可使得每個SSD使用其自己的邊界來進行垃圾收集,這解決SSD具有不相等的清除塊大小的問題。在此種情況下,存儲系統106可使每個SSD執行其自己的垃圾收集,以完全解決一組SSD中清除塊大小不相等的問題。
在各種實施方式中,存儲系統106利用在一組SSD中的SSD之間相等的環形緩衝區。換句話說,在這些實施方式中,即使清除塊大小不同,但整個循環緩衝區的大小相同。此處,雖然環形緩衝區在全局上具有相同的大小,但存儲系統106可使得每個SSD利用其自己的邊界(包括垃圾收集邊界)。例如,給定1 GB的整個循環緩衝區,如果第一SSD具有16MB的清除邊界,第二SSD具有32MB的清除邊界。較小的SSD將需要執行64次,而較大的SSD僅需要執行32次。以此方式,存儲系統106不需要擔心各個垃圾收集邊界,並使得每個SSD根據其自身的大小順序地執行垃圾收集。
為了說明,如果一組SSD中的所有SSD都是完全相同的型號,則存儲系統106相對容易執行寫入和垃圾收集。具體來說,存儲系統106可跨每個SSD分離控制器並執行操作而不管控制器是否被分離。但是,如果SSD在任何方面有所不同(例如,不同型號、不同容量、不同塊大小、不同垃圾收集邊界、不同製造商或不同裝置世代),則可出現問題,特別是在垃圾收集方面。例如,如果垃圾收集發生在每個SSD上的不同邊界上,則存儲系統106可能過度刪除SSD的部分。
在各種實施方式中,垃圾收集確實會在上述實施方式上產生開銷。然而,現有的電腦系統經歷類似的垃圾收集開銷。此外,在許多實施方式中,存儲系統106執行比現有電腦系統更少的垃圾收集,因為現有存儲系統106正在執行兩次寫(double writes),這需要兩倍的垃圾收集。
作為關於環形緩衝區的附加細節,在一些情況下,存儲系統106可使得主SSD以使得輔助SSD能夠簡單地用最小記憶體需求來管理其NAND空間的方式促進來自每個SSD的LBA範圍。在各種實施方式中,存儲系統106可使得主SSD管理垃圾收集,使得輔助SSD不必追蹤哪些塊是有效的。為了實現這一點,存儲系統106可利用LBA範圍中的預留空間來進行垃圾收集。然而,在某些情況下,單個SSD將會保留一小部分塊,主要用於壞塊管理。在一些實施方式中,如果支持多個命名空間,則每個命名空間可具有其自己的LBA範圍,且LBA範圍的大小將決定用於此命名空間的超額配置(OP)的量。此外,不同的命名空間可具有不同數量的超額配置。
在一些實施方式中,當第一次分配命名空間時,將一組SSD中的一個或多個SSD的關聯LBA範圍標記為準備刪除(例如,塊處於TRIM狀態)。在這些實施方式中,存儲系統106可使得主SSD將此LBA範圍視為環形緩衝區;環形緩衝區將塊從頭到尾寫入。例如,當主SSD接收新的記憶體塊寫入時,存儲系統106使得主SSD最終覆寫一些先前寫入的記憶體塊。在各種實施方式中,存儲系統106不需要向存儲這些覆寫塊的輔助SSD發送TRIM命令,因為主SSD將記住這些塊具有無效位址。
在附加實施方式中,在寫入環形緩衝區的後續過程中,主SSD將可能會遇到有效塊和無效塊。此處,存儲系統106可使得主SSD按順序將寫入引導至無效塊,同時跳過有效塊。在一些實施方式中,存儲系統106可使輔助SSD維持至少一個空閒超級塊來處理這些寫入。
在跳過塊的情況下,在各種實施方式中,存儲系統106可使得現有資料被複製到新的超級塊中。接著,當新的超級塊填滿時,存儲系統106可使舊的超級塊被清除,因為舊的超級塊將不包含任何有效資料。以此方式,存儲系統106促進輔助SSD以超級塊粒度(而不是4KB塊粒度)來維護映射,這極大地最小化記憶體需求。
儘管圖3示出基於分散式奇偶校驗的RAID的非對稱實施方式,但圖4將概念推進到基於分散式奇偶校驗的 RAID的對稱實施方式。特別地,圖4示出根據一個或多個實施方式的跨多個SSD存儲映射表的分散式RAID 400的對稱實施方式的方框圖。如圖所示,圖4包括主機302和一組SSD (例如,SSD 0 414a、SSD 1 414b,和SSD N 414n)。在各種實施方式中,如圖4中所示的組件是如計算裝置102的計算裝置的一部分。
如所示,一組SSD中的SSD均包括控制器306和上文結合圖3介紹的NAND 312。另外,與非對稱的分散式RAID 300不同,對稱的分散式RAID 400的一組SSD中的SSD均包括DRAM(例如,揮發性記憶體)。事實上,在許多實施方式中,SSD上的DRAM通常太小以致於無法容納多個SSD的完整映射表。
此外,如圖所示,每個DRAM包括映射表(例如,映射表的一部分)。具體地,SSD 0 414a包括具有第一映射表410a的第一DRAM 408a,且SSD 1 414b包括具有第二映射表410b的第二DRAM 408b。這可繼續下去,直到SSD N–1包括具有第n個映射表的第n個DRAM(即,這些SSD中的每一者皆具有完整映射表的1/n)。
在一些實施方式中,SSD N 414n是奇偶校驗驅動器且不包括映射表。根據一些實施方式,SSD N 414n是奇偶校驗驅動器,其亦包括DRAM中的映射表410n的1/n分配。在各種實施方式中,奇偶校驗在驅動器上輪換,且SSD N 414n包括DRAM 408n內部的映射表。
如對稱的分散式RAID 400中所示,存儲系統106可利用經本端存儲在外部控制器之外的SSD上的映射表。例如,在各種實施方式中,存儲系統106生成跨一組SSD映射已保存資料的所有NAND位置的完整映射表,接著將此完成映射表劃分為N個部分,其中跨N個SSD驅動器(例如,除奇偶校驗SSD外的SSD)存儲這些部分。
在一些實施方式中,存儲管理器提供到SSD驅動器的映射表,其不包括到此SSD上的任何NAND位置的映射(即,所有映射都是到其他SSD的)。例如,第一映射表410a不包括到經存儲在SSD 0 414a上的NAND中的資料的任何映射。在一種或多種實施方式中,存儲管理器可向SSD驅動器提供映射表;此映射表包括到其自身的NAND的一些映射。然而,在這些實施方式中,映射表亦包括到經存儲在一組SSD中的其他SSD的NAND中的資料的映射。事實上,代替僅包含其自身 NAND 的映射(例如,與其自身綁定)的DRAM,SSD包含針對一組SSD的範圍子集(例如,一組SSD的SSD集合減去一個SSD,這具體取決於RAID方案)中的其他SSD的映射表。
在各種實例中,當將完整映射表劃分為多個部分時,映射表部分是互斥的,這意味著邏輯位址和相應的物理NAND位址在不同的映射表部分中不重複。在其他情況下,存儲系統106可允許及/或提供部分之間的一些重疊。例如,取決於SSD上的可用揮發性記憶體,存儲系統106可向SSD 0和SSD N-1提供到SSD 1上的物理位置的相同邏輯映射。
在一個或多個實施方式中,將一個SSD上的映射表部分映射到一組SSD中的另一個SSD。例如,SSD 1 414b上的第二映射表410b包括SSD 0 414a的排他映射。在其他實施方式中,SSD 1 414b上的第二映射表410b包括到SSD 0、SSD 1、SSD N-1和SSD N的映射。如上述,在這些實施方式中,存儲系統106可排除SSD上的映射表映射到它自身的NAND,或者存儲系統106可允許映射表映射到它自身的NAND。
在許多實施方式中,對稱的分散式RAID 400中的一組SSD包括相同的SSD,每個SSD包括足夠的DRAM容量以匹配到NAND的映射加上足夠的容量以臨時存儲資料塊,使得存儲系統106可執行其他功能,如上所述。在一些實施方式中,一組SSD中的每個SSD能夠充當用於一組SSD的部分SSD或一組SSD中的全部SSD的主SSD。
為了說明,在各種實施方式中,每個SSD皆將充當用於(例如,分佈在一組SSD上的)每個SSD的容量的1/N部分的主SSD。在一些實施方式中,每個SSD可將其NAND容量的(N–1)/N部分暴露為輔助SSD,以供一組SSD中的其他SSD使用。在一些實施方式中,充當主SSD的SSD可控制一組SSD中多於1/N部分的SSD(但少於一組SSD中的N個SSD)。
在各種實施方式中,SSD可表現為主機302的單獨SSD,且在此SSD內創建的命名空間適合在此SSD的映射表和DRAM內。換句話說,每個SSD(例如,每個SSD上的控制器306)不生成並填充大於其DRAM容量的映射表。相反,每個SSD皆包含分佈在所有SSD上的完整映射表的一小部分。這還提供避免任何一個SSD上的效能熱點並使得存儲系統106能夠更有效地執行容量和效能過量使用(overcommitting)的優勢。
如上所述,對稱的分散式RAID 400的架構可容忍至少一個SSD的NAND的故障(例如,後端故障)。然而,如果充當主SSD的SSD上的控制器發生故障(例如,前端故障),則此SSD導出的映射表可能會變得不可用。但SSD及一組SSD中的其餘SSD的映射表將繼續運行。
上述場景假設當一個SSD發生故障時,整個SSD發生故障。然而,如果主SSD的NAND(例如後端)與控制器及/或DRAM(例如前端)之間存在隔離,則後端故障將不會影響前端(反之亦然)是可能的。如果是這樣,則SSD上的映射表將繼續工作,且可藉由奇偶校驗保護來恢復NAND資料。
在一些實施方式中,存儲系統106使得每個SSD的主SSD前端週期性地將其FTL狀態(例如,其映射表)保存到不同的輔助SSD(例如,另一SSD上的NAND)。以此方式,如果SSD的前端故障,則可檢索其映射表,幾乎不會造成任何損失。在一些實施方式中,存儲系統106可能必須重建映射表以施加自上次保存檢查點以來所做的任何改變。在各種實施方式中,存儲系統106亦可能必須(例如,經由NVMe驅動器來)重複在發生故障的前端中丟失的任何未完成的命令。
另外,在許多實施方式中,N+1個SSD中僅N個SSD充當主SSD,因為一個SSD的容量被用於奇偶校驗。 在這些實施方式中,如果SSD的前端發生故障,則第N+1個SSD以無縫或接近無縫的方式(例如,無需物理更換驅動器)來接管故障功能。
在各種實施方式中,在其中揮發性記憶體(例如,DRAM)丟失的電源故障的情況下,存儲系統106可利用剩餘電力將SSD的映射表複製到相同或不同SSD上的NAND。例如,SSD包括一個或多個備用電容器;一個或多個備用電容器提供足夠的電力以將其映射表(或映射表部分)複製到非揮發性記憶體。
在一些實施方式中,如果需要映射表重建,則存儲系統106可執行物理資料的反向映射,以決定對應的邏輯位址。在這些實施方式中,當將資料寫入到物理位置時,存儲系統106亦使得扇區的邏輯位址被寫入。另外,在這些實施方式中,存儲系統106可掃描SSD,並重建映射表及/或將映射表分割成要跨一組SSD存儲的映射表部分,如上所述。
圖5示出根據一個或多個實施方式的具有外部存儲控制器520的對稱的分散式RAID的方框圖。如圖所示,圖5包括主機302和一組SSD (例如,SSD 0 514a、SSD 1 514b和SSD N 514n)。另外,SSD可包括SSD控制器522、NAND 312和具有映射表510的DRAM 508。NAND 312、DRAM 508和映射表510可類似於NAND 312、DRAM 408a和上文結合圖4所描述的第一映射表410a。
如圖所示,主機302包括存儲控制器520。在各種實施方式中,存儲系統106使存儲控制器520執行上述主SSD的一個或多個功能。然而,雖然存儲控制器520被示為在一組SSD的外部,但是跨SSD的DRAM來存儲映射表的部分,如上所述。事實上,存儲控制器520不需要包括映射表的完整副本的外部DRAM。
如所提到的,SSD可包括SSD控制器522。在一些實施方式中,SSD控制器522在物理上類似於上述控制器306,但執行較少的功能。例如,存儲系統106經由SSD控制器522執行SSD控制功能,同時保留存儲控制器520的其他協調記憶體功能。
為了詳細說明,在一些實例中,由控制多個儲存裝置(例如,SSD或HDD)的集中式RAID控制器執行RAID功能。非對稱的分散式RAID 300和對稱的分散式RAID 400中所描述的實施方式假設不存在這樣的控制器。以此方式,存儲系統106避免了此種控制器的成本;另外,此種控制器通常不適用於NVMe SSD。
然而,如果此種控制器碰巧可用,則存儲系統106可利用此種控制器,如圖5中的外部存儲控制器520所示。例如,如上所述,集中式 RAID 控制器的一個問題是小記憶體塊寫入會導致兩次讀取和兩次寫入的損失。上述實施方式示出存儲系統106如何藉由使用經存儲在一個或多個SSD的揮發性記憶體內的映射表來執行RAID功能從而避免此問題。事實上,如圖5所示,存儲系統106藉由存儲控制器520(集中式RAID控制器)實施奇偶校驗生成和資料重建(當需要時),但存儲系統106將映射表保留在一組SSD中的一個或多個SSD上。
因此,在各種實施方式中,存儲系統106如上所述地在SSD中的DRAM內維護映射表。在這些實施方式中,存儲系統106如上所述地使得SSD仍然重定向讀取命令。然而,存儲系統106可使得記憶體塊寫入由集中式RAID控制器(例如,存儲控制器520)來放置。而且,當需要RAID重建時,存儲系統106可使得存儲控制器520從SSD讀取映射表部分。
現在轉向下兩張圖,圖6A和圖6B示出根據一個或多個實施方式之在基於分散式奇偶校驗的RAID上有效維護、寫入和存取資料的序列圖。如圖所示,圖6A和圖6B包括主機602(例如,作業系統104及/或主機302)和存儲系統106;存儲系統106包括主SSD 604和輔助SSD 606。主SSD 604和輔助SSD 606可表示類似的如上所述的組件。如圖進一步所示,圖6A和圖6B包括由存儲系統106執行的一系列動作600。
如圖所示,一系列動作600包括動作610;動作610為在利用基於奇偶校驗的錯誤編碼的一組SSD上維護資料。例如,如上所述,存儲系統106可用 包括 N+1 SSD的RAID 5方案來存儲資料; N+1 SSD是用於跨N個SSD存儲資料(及一SSD用於奇偶校驗的容量)。
如圖所示,一系列動作600包括動作612;動作612為跨一組SSD創建經存儲在DRAM中的映射表。在各種實施方式中,存儲系統106生成映射表並將映射表分佈在一組SSD中的多個SSD上。具體地,存儲系統106將映射表的部分存儲在揮發性記憶體(例如,DRAM)中。實際上,如上所述,存儲系統106將映射表存儲在一組SSD內,而不是與外部存儲控制器連接的外部。此外,如上所述,在一些實施方式中,存儲系統106利用在一組SSD內的一個或多個存儲控制器。
又如圖所示,一系列動作600包括動作614;動作614為從主機602接收新資料。例如,在各種實施方式中,存儲系統106接收新資料以存儲在一組SSD中,或接收新資料以替換經存儲在一組SSD中的舊資料塊。在各種實施方式中,存儲系統106在將多條新資料寫入一組SSD中的可用記憶體塊(例如,NAND空間)之前累積多條新資料。例如,存儲系統106將接收到的資料塊存儲在主SSD 604上的揮發性記憶體(例如,DRAM)中,直到其具有足夠數量的資料塊為止。
一旦接收到新資料,存儲系統106就可決定將資料寫入何處,如動作616所示。例如,存儲系統106可決定在主SSD 604處將新資料寫入到輔助SSD 606上的NAND內的記憶體塊。
如圖所示,一系列動作600包括可選動作618;可選動作618為利用環形緩衝區將新資料跨一組SD寫入至可用的記憶體塊中。如上所述,在各種實施方式中,存儲系統106利用環形緩衝區來解決一組SSD中SSD大小不相等的問題;再更具體來說,是當垃圾收集邊界不均勻時出現的問題。
如圖所示,一系列動作600包括動作620;動作620為決定新資料的奇偶校驗。例如,存儲系統106使得主SSD 604計算新資料的奇偶校驗。在一些實例中,存儲系統106亦可決定寫入奇偶校驗的記憶體位置。在多條接收到的資料被一起寫入的情況下,存儲系統106可藉由針對不同的小記憶體塊寫入來計算一個奇偶校驗從而減少處理步驟。以此方式,存儲系統可對新資料執行一次寫入及由多條接收到的資料共享的一次奇偶校驗寫入(例如,5條資料+1個奇偶校驗=6次寫入,而不是5條資料的10次寫入資料和5次奇偶校驗變化)。此外,存儲系統106可寫入奇偶校驗,如一系列動作600的動作622中所示。
如圖所示,一系列動作600包括動作624;動作624為更新跨一組SSD上的一個或多個映射表部分。例如,存儲系統106使得主SSD 604更新相應映射表部分中的新資料塊的映射。如上所述,存儲系統106可連續更新映射表,以維持一組SSD內的邏輯記憶體位址和對應的物理NAND記憶體位置之間的準確映射。
如圖6B所示,一系列動作600包括動作626;動作626為執行垃圾收集以清除過時資料。例如,在各種實施方式中,存儲系統106使一個或多個SSD執行垃圾收集以釋放可用記憶體扇區。如上所述,主SSD 604可為其自身執行垃圾收集;並在一些情況下,主SSD 604可為一個或多個輔助SSD 606執行垃圾收集。
如圖所示,一系列動作600包括可選動作630;可選動作630為將映射表部分複製到另一個SSD以供備份。如上所述,在各種實施方式中,存儲系統106可使得主SSD 604將其記憶體表的定期備份記錄在輔助SSD 606中的一者的非揮發性記憶體(例如,NAND記憶體)中。以此方式,如果主SSD 604發生故障,存儲系統106可更快且更有效地恢復其丟失的映射表,而幾乎沒有資料丟失。此外,斷電將不會導致所保存的映射表副本丟失。
如圖所示,一系列動作600包括動作632;動作632為提供所請求的存儲資料。例如,主機602請求存取經存儲在一組SSD中的資料。因此,存儲系統106使得主SSD 604從映射表查找資料,並(例如,利用主SSD 604或輔助SSD 606)向主機602提供所請求的資料。
如圖所示,一系列動作600包括動作634;動作634為偵測SSD的故障。例如,存儲系統106決定一組SSD中的一些或全部SSD已發生故障。 在某些情況下,故障是暫時的,如斷電。在其他情況下,故障為更永久性,如驅動器故障。另外,如圖所示,一系列動作600包括動作636;動作636使用奇偶校驗來檢索丟失的資料。例如,存儲系統106使用奇偶校驗來偵測NAND中的任何丟失的資料及/或從DRAM恢復任何保存的資料,如備份的映射表。否則,存儲系統106可快速重建映射表。
現在參考圖7,圖7示出根據一個或多個實現方式的示例性的流程圖,其包括藉由利用跨多個SSD存儲映射表的基於分散式的奇偶校驗的RAID來改進記憶體存儲和存取的一系列動作700。雖然圖7示出根據一個或多個實施方式的動作,但替代實施方式可省略、添加、重新排序及/或修改所示的任何動作。此外,圖7的動作可作為方法的一部分來執行。或者,非暫時性電腦可讀取媒體可包括當由一個或多個處理器執行時使計算裝置執行圖7的動作的指令。在又一些實施方式中,系統可執行圖7的動作。
如圖所示,一系列動作700包括動作710;動作710為跨一組SSD(固態驅動器)維護非揮發性記憶體中的資料。例如,動作710可包括:在包括主SSD和一個或多個輔助SSD的一組SSD上維護非揮發性記憶體中的資料,其中一組SSD利用基於奇偶校驗的錯誤編碼來減輕SSD驅動器故障。在各種實施方式中,動作710包括:在包括第一SSD和第二SSD的一組SSD上維護NAND記憶體中的資料。
在各種實施方式中,動作710包括:利用存儲控制器來控制跨一組SSD的資料塊的存儲、讀取和寫入。在一個或多個實施方式中,存儲控制器位於一組SSD的外部。 在各種實施方式中,存儲控制器分佈在一組SSD中。
在一些實施方式中,動作710包括:接收新的資料塊。在一些實例下,新資料塊更新經存儲的資料塊。在示例性的實施方式中,用於減輕SSD驅動器故障的基於奇偶校驗的錯誤編碼跨一組SSD內的SSD分佈資料及/或包括跨一組SSD內的SSD旋轉奇偶校驗。
如進一步所示,一系列動作700包括動作720;動作720為將映射表的一部分存儲在主SSD的揮發性記憶體內;映射表的一部分是指示資料塊位於輔助SSD上的何處。例如,動作720可涉及將映射表的至少一部分存儲在主SSD的揮發性記憶體內;映射表的至少一部分是指示資料塊所在的一個或多個輔助SSD內的第一非揮發性記憶體位置。
在各種實施方式中,動作720包括:將映射表的第一部分存儲在第一SSD上的第一DRAM內(映射表的第一部分指示第一資料塊位於第二SSD的NAND記憶體內的何處),及/或將映射表的第二部分存儲在第二SSD上的第二DRAM內(映射表的第二部分指示第二資料塊位於第一SSD的NAND記憶體內的何處)。在一個或多個實施方式中,動作720包括:將映射表的第一部分存儲在主SSD的揮發性記憶體(例如,DRAM)內,及/或將映射表的至少第二部分存儲在一個或多個輔助SSD的揮發性記憶體內。
如進一步所示,一系列動作700包括動作730;動作730為將新資料塊寫入輔助SSD。例如,動作730可包括:在一個或多個輔助SSD內的第二非揮發性記憶體位置處寫入新的資料塊。在一個或多個實施方式中,動作730包括:利用環形緩衝區來寫入新的資料塊。在一些實施方式中,動作730包括:將新資料塊寫入到小於完整記憶體資料扇區。
如進一步所示,一系列動作700包括動作740;動作740為寫入用於新資料塊的新奇偶校驗在一組SSD內。例如,動作740可涉及在一組SSD內的第三非揮發性記憶體位置處寫入新資料塊的新奇偶校驗。在一些實施方式中,動作740包括:在不讀取資料塊(例如,或讀取周圍的舊資料)或與資料塊相對應的奇偶校驗的情況下,將新資料塊和新奇偶校驗寫入一組SSD。
在一些實施方式中,動作740包括:第二SSD上的第二DRAM包括映射表的第二部分(其指示資料的第二塊位於第一SSD上的第二非揮發性記憶體位置內)、第一SSD的第一DRAM中的映射表(例如,存儲映射表)的第一部分還指示第二資料塊位於第一SSD上的第二非揮發性記憶體位置內,及/或第一SSD的第一DRAM中的映射表的第一部分還指示第三資料塊位於一組SSD中除了第一SSD或第二SSD上之外的第三非揮發性記憶體位置內。在一些實施方式中,第一資料塊的奇偶校驗位於一組SSD中的第二非揮發性記憶體位置(例如,記憶體塊)內,而不是位於第二SSD上。
如進一步所示,一系列動作700包括動作750;動作750為更新主SSD處的映射表以指示新資料塊在輔助SSD上的新位置。例如,動作750可包括以下動作:更新主SSD上的揮發性記憶體內的映射表,以指示新資料塊的新非揮發性記憶體位置。
在各種實施方式中,一系列動作700包括以下動作:將映射表的至少一部分的副本存儲在一個或多個輔助SSD內的第四非揮發性記憶體位置內。在一些實施方式中,一系列動作700包括以下動作:在一個或多個輔助SSD內的第二非揮發性記憶體位置處寫入新的資料塊之後,利用垃圾收集處理從一個或多個輔助SSD內的第一非揮發性記憶體位置移除資料塊。在一些實施方式中,一系列動作700包括:在跨一個或多個輔助SSD的多個SSD的非揮發性記憶體位置處寫入附加的新資料塊,其中多個SSD包括不同的規格(例如,不同的尺寸、容量、塊大小、垃圾收集塊、製造商和軟體版本等等),其中寫入附加新資料的動作包括以下動作:利用環形緩衝區將附加新資料寫入到多個不同規格的SSD中。在一些實施方式中,一組SSD中的每個SSD中的非揮發性記憶體經管理成一個或多個環形緩衝區。
「網路」經定義為能夠在電腦系統及/或模組及/或其他電子裝置之間傳輸電子資料的一個或多個資料鏈路。當藉由網路或其他通訊連接(硬連線、無線或硬連線或無線的組合)將資訊傳輸或提供給電腦時,電腦正確地將連接視為傳輸媒體。傳輸媒體可包括網路及/或資料鏈路;網路及/或資料鏈路可用於承載電腦可執行指令或資料結構形式的所需程式代碼構件,其可由通用或專用電腦存取。上述的組合亦應包括在電腦可讀取媒體的範圍內。
另外,本文所描述的網路可表示一個或多個計算裝置可藉由其來存取存儲系統106的網路或網路的集合(如網際網路、企業內部網路、虛擬專用網路(VPN)、區域網路(LAN)、無線區域網路(WLAN)、蜂巢式網路、廣域網路(WAN)、都會區域網路(MAN)或兩個或更多個此類網路的組合)。事實上,本文所描述的網路可包括使用一種或多種通訊平台或技術來傳輸資料的一個或多個網路。例如,網路可包括網際網路或能夠在雲端計算系統的各個客戶端裝置和組件(例如,伺服器裝置及/或其上的虛擬機)之間傳輸電子資料的其他資料鏈路。
此外,在到達各種電腦系統組件時,可自動地將電腦可執行指令或資料結構形式的程式代碼構件從傳輸媒體傳送到非暫時性電腦可讀取存儲媒體(裝置)(或反之亦然)。例如,藉由網路或資料鏈路接收的電腦可執行指令或資料結構可經緩衝在網路介面模組(NIC)內的RAM中,接著最終經傳輸到電腦系統RAM及/或在電腦系統處的較少揮發性電腦存儲媒體(裝置)。因此,應當理解,非暫時性電腦可讀取存儲媒體(裝置)可被包括在也(或者甚至主要)利用傳輸媒體的電腦系統組件中。
電腦可執行指令包括例如當由處理器執行時使得通用電腦、專用電腦或專用處理裝置執行特定功能或功能集合的指令和資料。在一些實施方式中,電腦可執行指令由通用電腦執行,以將通用電腦轉變為實施本申請案的組件的專用電腦。電腦可執行指令可以是例如二進制、如組合語言的中間格式指令,或甚至是源代碼。儘管已用特定於結構特徵及/或方法動作的語言描述了所主張發明,但是應當理解,所附請求項中所定義的標的不一定限於上述特徵或動作。相反,所描述的特徵和動作皆被揭露為實施請求項的示例形式。
圖8示出可包括在電腦系統800內的某些組件。電腦系統800可用於實施本文所述的各種計算裝置、組件和系統。
在各種實施方式中,電腦系統800可表示上述客戶端裝置、伺服器裝置及/或其他計算裝置中的一者或多者。例如,電腦系統800可指能夠存取網路上的資料的各種類型的網路裝置、雲端計算系統或另一系統。例如,客戶端裝置可指行動裝置,如行動電話、智慧型手機、個人數位助理(PDA)、平板電腦、筆記型電腦或可穿戴式計算裝置(例如,耳機或智慧型手錶)。客戶端裝置亦可指非移動式裝置,如桌上型電腦、伺服器節點(例如,來自另一雲端計算系統)或另一非可攜式裝置。
電腦系統800包括處理器801。處理器801可以是通用的單晶片或多晶片微處理器(例如,高級RISC(精簡指令集電腦)機器(ARM))、專用微處理器(例如,數位訊號處理器(DSP))、微控制器、可編程閘陣列等等。處理器801亦可稱為中央處理單元(CPU)。雖然所示的處理器801只是圖8的電腦系統800中的單個處理器,但在替代配置中,可以使用處理器的組合(例如,ARM和DSP)。
電腦系統800亦包括與處理器801電子通訊的記憶體803。記憶體803可以是能夠存儲電子資訊的任何電子組件。例如,可將記憶體803實現為隨機存取記憶體(RAM)、唯讀記憶體(ROM)、磁碟存儲媒體、光學存儲媒體、RAM中的快閃記憶體裝置、包括在處理器中的板載記憶體、可擦除可程式化的唯讀記憶體(EPROM)、電子可擦除可程式化的唯讀記憶體(EEPROM)記憶體、暫存器等等,其包括上述組合。
可將指令805和資料807存儲在記憶體803中。指令805可由處理器801執行以實施本文所揭露的功能中的一些或全部功能。執行指令805可涉及使用經存儲在記憶體803中的資料807。本文所描述的模組和組件的各種示例中的任何一者可以部分地或全部地實施為存儲在記憶體803中並由處理器801執行的指令805。本文所描述的資料的各種示例中的任何一者可以是經存儲在記憶體803中並在處理器801執行指令805期間經使用的資料807之中。
電腦系統800亦可包括用於與其他電子裝置通訊的一個或多個通訊界面809。一個或多個通訊界面809可基於有線通訊技術、無線通訊技術或兩者。一個或多個通訊界面809的一些示例包括通用序列匯流排(USB)、乙太網配接器、根據電氣和電子工程師協會(IEEE)802.11無線通訊協定操作的無線配接器、 Bluetooth®無線通訊配接器和紅外(IR)通訊埠。
電腦系統800亦可包括一個或多個輸入裝置811和一個或多個輸出裝置813。一個或多個輸入裝置811的一些示例包括鍵盤、滑鼠、麥克風、遙控裝置、按鈕、操縱桿、軌跡球、觸控板和光筆。一個或多個輸出裝置813的一些示例包括揚聲器和印表機。通常包括在電腦系統800中的特定類型的輸出裝置是顯示裝置815。與本文所揭露的實施方式一起使用的顯示裝置815可利用任何合適的圖像投影技術,如液晶顯示器(LCD)、發光二極體(LED)、氣體電漿和電致發光等等。還可提供顯示控制器817,以用於將存儲在記憶體803中的資料807轉換成在顯示裝置815上示出的文本、圖形及/或運動圖像(視情況而定)。
可藉由一個或多個匯流排將電腦系統800的各種組件耦合在一起;一個或多個匯流排可包括電源匯流排、控制訊號匯流排、狀態訊號匯流排和資料匯流排等等。為了清楚起見,各種匯流排在圖8中作為匯流排系統819示出。
所屬技術領域中具有通常知識者將理解,可在具有許多類型的電腦系統配置的網路計算環境中實施本申請案;許多類型的電腦系統配置包括個人電腦、桌上型電腦、膝上型電腦、消息處理器、手持裝置、多處理器系統、基於微處理器或可程式化的消費者電子產品、網路PC、小型電腦、大型電腦、行動電話、PDA、平板電腦、尋呼機、路由器和交換機等等。亦可在分散式系統環境中實施本申請案,其中藉由網路鏈接(藉由硬連線資料鏈路、無線資料鏈路或藉由硬連線和無線資料鏈路的組合)的本端和遠端電腦系統皆執行任務。在分散式系統環境中,程式模組可位於本端和遠端記憶體儲存裝置中。
除非具體描述為以特定方式實施,否則可用硬體、軟體、韌體或其任何組合來實施本文所述的技術。也可將經描述為模組、組件等等的任何特徵一起實施在積體邏輯元件中,或將經描述為模組、組件等等的任何特徵單獨實施成分立但可互相操作的邏輯元件。如果以軟體實現,則可至少部分地藉由包括指令的非暫時性處理器可讀取存儲媒體來實施這些技術,當由至少一個處理器執行這些指令時,這些指令執行本文所描述的方法中的一者或多者。可將指令組織成可執行特定任務及/或實施特定資料類型的常式、程式、物件、組件、資料結構等等,且可在各種實施方式中根據需要來對這些常式、程式、物件、組件、資料結構等等進行組合或將其分散。
電腦可讀取儲存媒體可以是可由通用電腦系統或專用電腦系統存取的任何可用媒體。存儲電腦可執行指令的電腦可讀取媒體是非暫時性電腦可讀存儲媒體(裝置)。攜帶電腦可執行指令的電腦可讀取媒體是傳輸媒體。因此,作為示例而非限制,本申請案的實施方式可包括至少兩種截然不同的電腦可讀取媒體:非暫時性電腦可讀取存儲媒體(裝置)和傳輸媒體。
如本文所使用,非暫時性電腦可讀取存儲媒體(裝置)可包括RAM、ROM、EEPROM、CD-ROM、固態驅動(「SSD」)(例如,基於RAM)、快閃記憶體、 相變記憶體(「PCM」)、其他類型的記憶體、其他光碟存儲、磁碟存儲或其他磁性儲存裝置、或可用於存儲電腦可執行指令或資料結構形式之可由通用或專用電腦存取的期望程式代碼構件的任何其他媒體。
本文所描述的方法的步驟及/或動作可彼此互換而不脫離本案請求項的範圍。換句話說,除非所描述的方法的正確操作需要步驟或動作的特定順序,否則可修改特定步驟及/或動作的順序及/或使用而不會脫離本案請求項的範圍。
術語「決定」涵蓋各種各樣的動作;因此,「決定」可包括計算、處理、推導、調查、查找(例如,在表、資料庫或另一資料結構中查找)和決定等等。此外,「決定」可包括接收(例如,接收資訊)、存取(例如,存取記憶體中的資料)等等。 此外,「決定」可包括解決、選擇、挑選和建立等等。
術語「包括」、「包含」和「具有」旨在包含在內,且意味著可能存在除了列出的要素之外的附加要素。 另外,應當理解,對本申請案的「一個實施方式」或「多個實施方式」的引用並不旨在被解釋為排除也併入所列舉的特徵的附加實施方式的存在。例如,在兼容的情況下,關於本文的實施方式所描述的任何組件或特徵可與本文所描述的任何其他實施方式的任何組件或特徵組合。
可在不背離本申請案的精神或特徵的情況下,用其他具體形式來實施本申請案。所描述的實施方式被認為是說明性的而非限制性的。因此,本申請案的範圍由所附申請專利範圍指示,而不是由上述[實施方式]指示。在申請專利範圍的等同物的含義和範圍內的變化會被包含在其範圍內。
102:計算裝置 104:作業系統 106:存儲系統 110a~110n:固態驅動器 112:控制器 114:揮發性記憶體 116:非揮發性記憶體 120:讀取/寫入管理器 122:映射管理器 124:奇偶校驗管理器 126:錯誤校正管理器 128:垃圾收集管理器 200:概覽 210:第一元素 220:第二元素 230:第三元素 300:非對稱的分散式RAID 302:主機 304a~304n:SSD 306:控制器 308:DRAM 310:映射表 312:NAND 400:對稱的分散式RAID 408a~408n:DRAM 414a~414n:SSD 508:DRAM 510:映射表 514a~514n:SSD 520:存儲控制器 522:SSD控制器 600:一系列動作 602:主機 604:主SSD 606:輔助SSD 610~636: 動作 700:一系列動作 710~750:動作 800:電腦系統 801:處理器 803:記憶體 805:指令 807:資料 809:通訊介面 811:輸入裝置 813:輸出裝置 815:顯示裝置 817:顯示控制器 819:匯流排系統
[實施方式]藉由使用如下文所簡要描述的附圖來提供一個或多個具有附加特性和細節的實施方式。
圖1A至圖1B示出其中根據一個或多個實施方式來實施存儲系統的計算裝置的圖。
圖2示出利用根據一個或多個實施方式的基於奇偶校驗的RAID SSD方案來有效地管理和寫入新資料的示例性的工作流。
圖3示出根據一個或多個實施方式的在SSD上存儲映射表的基於分散式奇偶校驗的RAID的非對稱實施方式的方框圖。
圖4示出根據一個或多個實施方式的跨多個SSD存儲映射表的基於分散式奇偶校驗的RAID的對稱實施方式的方框圖。
圖5示出根據一個或多個實施方式的具有外部存儲控制器的基於分散式奇偶校驗的RAID的方框圖。
圖6A至圖6B示出根據一個或多個實施方式的在基於分散式奇偶校驗的RAID上有效維護、寫入和存取資料的序列圖。
圖7示出根據一個或多個實施方式的藉由利用跨多個SSD存儲映射表的基於分散式奇偶校驗的RAID來改進記憶體存儲和存取的示例性系列動作。
圖8示出可包括在電腦系統內的某些組件。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
200:概覽
210:第一元素
220:第二元素
230:第三元素

Claims (20)

  1. 一種存儲系統,包括: 一組SSD(固態驅動器),其利用糾刪碼來減輕一SSD驅動器故障,其中該組SSD中的每個SSD包括動態隨機存取記憶體(DRAM)和非揮發性記憶體; 一存儲控制器;及 一映射表,其跨該組SSD映射經存儲在該非揮發性記憶體內的資料的位置, 其中該組SSD中的一第一SSD上的第一DRAM包括該映射表的一第一部分,該映射表的該第一部分指示該資料的一第一塊位於該組SSD中的一第二SSD上的一第一非揮發性記憶體位置內。
  2. 如請求項1所述的存儲系統,其中該第二SSD上的一第二DRAM包括該映射表的一第二部分,該映射表的該第二部分指示該資料的一第二塊位於該第一SSD上的一第二非揮發性記憶體位置內。
  3. 如請求項1所述的存儲系統,其中該第一SSD的該第一DRAM中的該映射表的該第一部分亦指示該資料的一第二塊位於該第一SSD上的一第二非揮發性記憶體位置內。
  4. 如請求項3所述的存儲系統,其中該第一SSD的該第一DRAM中的該映射表的該第一部分亦指示該資料的一第三塊位於該組SSD中除了該第一 SSD 或該第二 SSD上之外的一第三非揮發性記憶體位置內。
  5. 如請求項1所述的存儲系統,其中該組SSD中的每個SSD中的該非揮發性記憶體經管理為一個或多個環形緩衝區。
  6. 如請求項1所述的存儲系統,其中用於資料的一第一塊的一奇偶校驗位於該組SSD中除了該第二SSD上之外的一第二非揮發性記憶體位置內。
  7. 如請求項1所述的存儲系統,其中該存儲控制器位於該組SSD的外部。
  8. 如請求項1所述的存儲系統,其中該存儲控制器跨該組SSD分佈。
  9. 一種電腦實施的方法,包括以下步驟: 維護跨一組SSD(固態驅動器)的非揮發性記憶體中的資料,該組SSD包括一主SSD和一個或多個輔助SSD,其中該組SSD利用糾刪碼來減輕一SSD驅動器故障; 將一映射表的至少一部分存儲在該主SSD的揮發性記憶體內,該映射表的該至少一部分指示該資料的一塊所在的該一個或多個輔助SSD內的一第一非揮發性記憶體位置; 在該一個或多個輔助SSD內的一第二非揮發性記憶體位置處,將資料的一新塊寫入; 在該組SSD內的一第三非揮發性記憶體位置處,將用於資料的該新塊的一新的奇偶校驗寫入;及 更新該主SSD上的該揮發性記憶體內的該映射表,以指示資料的該新塊的一新的非揮發性記憶體位置。
  10. 如請求項9所述的電腦實施的方法,其中將資料的該新塊和該新的奇偶校驗寫入至該組SSD的步驟不包括以下步驟:讀取資料的該塊或與資料的該塊相對應的一奇偶校驗。
  11. 如請求項9所述的電腦實施的方法,其中在該第二非揮發性記憶體位置處寫入資料的該新塊之步驟包括以下步驟:利用一環形緩衝區來寫入資料的該新塊。
  12. 如請求項9所述的電腦實施的方法,進一步包括以下步驟:接收資料的該新塊,其中資料的該新塊更新該資料的該塊。
  13. 如請求項9所述的電腦實施的方法,進一步包括以下步驟:將該映射表的該至少一部分的一副本存儲在該一個或多個輔助SSD內的一第四非揮發性記憶體位置內。
  14. 如請求項9所述的電腦實施的方法,進一步包括以下步驟:在該一個或多個輔助SSD內的該第二非揮發性記憶體位置處寫入資料的該新塊之後,利用一垃圾收集處理從該一個或多個輔助SSD內的該第一非揮發性記憶體位置移除資料的該塊。
  15. 如請求項9所述的電腦實施的方法,其中在該第二非揮發性記憶體位置處寫入資料的該新塊之步驟包括以下步驟:將資料的該新塊寫入到小於一完整的記憶體資料扇區。
  16. 如請求項9所述的電腦實施的方法,其中將該映射表的該至少一部分存儲在該主SSD的揮發性記憶體內之步驟包括以下步驟:將該映射表的一第一部分存儲在該主SSD的揮發性記憶體內,及將該映射表的至少一第二部分存儲在該一個或多個輔助SSD的揮發性記憶體內。
  17. 如請求項9所述的電腦實施的方法,進一步包括以下步驟: 利用一存儲控制器來控制跨該組SSD的資料塊的讀取和寫入;及 在跨該一個或多個輔助SSD中的多個SSD的非揮發性記憶體位置處,將附加的新資料塊寫入,其中該多個SSD包括不同的規格,其中將該附加的新資料塊寫入之步驟包括以下步驟:利用一環形緩衝區將該附加的新資料塊寫入至具有不同的規格的該多個SSD。
  18. 一種電腦實施的方法,包括以下步驟: 跨一組SSD(固態驅動器)來維護NAND記憶體中的資料,該組SSD包括一第一SSD和一第二SSD,其中該組SSD利用糾刪碼來減輕一SSD驅動器故障; 在該第一SSD上的一第一DRAM(動態隨機存取記憶體)內存儲一映射表的一第一部分,該映射表的該第一部分指示該資料的一第一塊位於該第二SSD的NAND記憶體內的何處;及 在該第二SSD上的一第二DRAM內存儲該映射表的一第二部分,該映射表的該第二部分指示該資料的一第二塊位於該第一SSD的NAND記憶體內的何處。
  19. 如請求項18所述的電腦實施的方法,其中該糾刪碼包括用於減輕一SSD驅動器故障的一基於奇偶校驗的錯誤編碼之步驟包括以下步驟:跨該組SSD內的多個SSD分佈該資料。
  20. 如請求項18所述的電腦實施的方法,其中該糾刪碼包括用於減輕一SSD驅動器故障的一基於奇偶校驗的錯誤編碼之步驟包括以下步驟:跨該組SSD內的多個SSD輪換奇偶校驗。
TW112124456A 2022-08-01 2023-06-30 用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列 TW202407546A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/878,453 2022-08-01
US17/878,453 US20240036976A1 (en) 2022-08-01 2022-08-01 Distributed raid for parity-based flash storage devices

Publications (1)

Publication Number Publication Date
TW202407546A true TW202407546A (zh) 2024-02-16

Family

ID=87557911

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112124456A TW202407546A (zh) 2022-08-01 2023-06-30 用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列

Country Status (3)

Country Link
US (1) US20240036976A1 (zh)
TW (1) TW202407546A (zh)
WO (1) WO2024030226A1 (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008070803A1 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8850104B2 (en) * 2011-03-21 2014-09-30 Apple Inc. Independent management of data and parity logical block addresses
EP2915049B1 (en) * 2012-10-30 2020-03-04 Hewlett-Packard Enterprise Development LP Smart memory buffers
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템
US20160283303A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Reliability, availability, and serviceability in multi-node systems with disaggregated memory
US10860508B2 (en) * 2017-05-25 2020-12-08 Western Digital Technologies, Inc. Offloaded disaggregated storage architecture
US10901848B2 (en) * 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
US20220229722A1 (en) * 2022-04-08 2022-07-21 Intel Corporation Method and apparatus to improve performance of a redundant array of independent disks that includes zoned namespaces drives

Also Published As

Publication number Publication date
US20240036976A1 (en) 2024-02-01
WO2024030226A1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
US10241877B2 (en) Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
JP6026538B2 (ja) 検証されたデータセットの不揮発性媒体ジャーナリング
TWI702495B (zh) 對使用者資料執行選擇性下伏暴露映射之設備、方法以及多模式儲存裝置
US9563555B2 (en) Systems and methods for storage allocation
US9342256B2 (en) Epoch based storage management for a storage device
CN102598020B (zh) 用于改进的数据去重的装置、系统及方法
KR101769465B1 (ko) 극소 저장 작동을 위한 시스템 및 방법
TWI465906B (zh) 用以執行無原子元資料之電力故障安全快取的技術
US8904261B2 (en) Data management in solid state storage devices
TWI716416B (zh) 儲存系統、用於管理儲存媒體的方法以及系統、操作儲存系統的方法、以及非暫存性電腦可讀媒體
US9424128B2 (en) Method and apparatus for flexible RAID in SSD
US10013354B2 (en) Apparatus, system, and method for atomic storage operations
US11513891B2 (en) Systems and methods for parity-based failure protection for storage devices
US10942849B2 (en) Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device
US20160188424A1 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US8601347B1 (en) Flash memory device and storage control method
TW201729068A (zh) 分佈式儲存系統、分佈式儲存方法及分佈式設施
TW201324154A (zh) 記憶體儲存系統及其中控裝置、管理方法與斷電復原方法
US20220137835A1 (en) Systems and methods for parity-based failure protection for storage devices
US10019315B2 (en) Control device for a storage apparatus, system, and method of controlling a storage apparatus
US10289321B1 (en) Bad block table recovery in a solid state drives
CN112596673A (zh) 具有双重raid数据保护的多活多控存储系统
WO2016116930A1 (en) Reusable memory devices with wom codes
TWI607303B (zh) 具有虛擬區塊及磁碟陣列架構之資料儲存系統及其管理方法
TW202407546A (zh) 用於基於奇偶校驗的快閃儲存裝置的分散式磁碟陣列