TWI883287B - 用於儲存裝置的同位為主的故障保護的系統與方法 - Google Patents
用於儲存裝置的同位為主的故障保護的系統與方法 Download PDFInfo
- Publication number
- TWI883287B TWI883287B TW110139513A TW110139513A TWI883287B TW I883287 B TWI883287 B TW I883287B TW 110139513 A TW110139513 A TW 110139513A TW 110139513 A TW110139513 A TW 110139513A TW I883287 B TWI883287 B TW I883287B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage device
- data
- buffer
- xor
- request
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1032—Simple parity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
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)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
於此揭露的各種實施方式為有關於用以提供磁碟機故障的資料保護回復的系統與方法,包含由第一儲存裝置的控制器接收來自主機的請求。回應於接收該請求,控制器轉移來自第二儲存器裝置的新資料。該控制器可以藉由執行該新資料與現存資料的互斥或(XOR)運算,而決定XOR結果,該現存資料被儲存在非揮發儲存器。
Description
本案大致關係於用於在資料儲存裝置中的磁碟機故障的資料保護與回復的系統、方法、及非暫態處理器可讀媒體。
本案主張申請於2020年十月30日的“用於儲存裝置的同位為主的故障保護的系統與方法”的美國臨時申請案第63/108,196號的優先權,該案的內容係在此被併入本案中作為參考,並且,用於如同在本案說明書中所完整說明一般。
磁碟陣列(RAID)可以實施於非揮發記憶體裝置為主的磁碟機上,以完成磁碟機故障的保護。各種形式的RAID可以根據資料被複製或同位保護加以廣義分類。
就以儲存成本看來,複製係較昂貴的,因為複製將需要兩倍數量的裝置。
另一方面,同位保護典型需要較複製為低的儲存成本。在RAID 5的例子中,有需要一額外裝置,以藉由保有用於最少兩資料裝置的同位資料,而對在給定時間的單一裝置故障提供保護。當使用RAID 5同位保護時,當在RAID群中的被保護的裝置數量增加時,作為總成本的一百分比的額外儲存成本典型將會降低。
在同一時間提供多達兩裝置故障的保護的RAID 6的情況中,需要兩額外裝置以保有用於最少兩資料裝置的同位資料。類似地,當使用RAID 6同位保護時,當在RAID群中的被保護的裝置數量增加時,作為總成本百分比的額外儲存成本會降低。為了避免保有同位資料的磁碟機故障的風險,儲存有同位資料的磁碟機被旋轉。
同位保護的其他變化包含組合複製與同位保護(例如,如在RAID 51及RAID 61),以改變用於裝置間之帶片大小以匹配給定應用,等等。
在一些配置中,第一儲存裝置包含非揮發儲存器與控制器。該控制器被組態以由可操作地耦接至該第一儲存裝置的主機接收請求,回應於該請求的接收,轉移來自第二儲存裝置的新資料,及藉由執行該新資料與現存資料的互斥或(XOR)運算,而決定XOR結果,該現存資料
被儲存在非揮發儲存器中。
在一些配置中,第一儲存裝置包含非揮發儲存器及控制器。該控制器被組態以接收來自第二儲存裝置的請求,回應於接收該請求,轉移來自該第二儲存裝置的新資料,並藉由執行該新資料與現存資料的XOR運算,而決定XOR結果,該現存資料被儲存在非揮發儲存器上。
100,100a-n:儲存裝置
101:主機
102:記憶體
104:處理器
106:匯流排
108:網路介面
109:通訊網路
110:控制器
112:緩衝器
114:寫入緩衝器
116:讀取緩衝器
120:記憶體陣列
130a~130n:NAND快閃記憶體裝置
140:介面
200a:方法
201:主機緩衝器(新資料)
202:寫入緩衝器(新資料)
203:NAND頁面(舊資料)
204:讀取緩衝器(舊資料)
205:NAND頁面(新資料)
206:CMB(跨-XOR)
211:步驟
212:步驟
213:步驟
214:步驟
200b:方法
221:步驟
222:步驟
223:步驟
224:步驟
225:步驟
226:步驟
300a:方法
302:寫入緩衝器(新資料)
303:NAND頁面(舊資料)
304:讀取緩衝器(新資料)
305:寫入緩衝器(XOR結果)
306:NAND頁面(XOR結果)
311:步驟
312:步驟
313:步驟
314:步驟
315:步驟
300b:方法
321:步驟
322:步驟
323:步驟
324:步驟
325:步驟
326:步驟
400a:方法
401:CMB(前一資料)
402:寫入緩衝器(新資料)
403:NAND頁面(保留資料)
404:讀取緩衝器(保留資料)
405:CMB(跨-XOR)
411:步驟
412:步驟
413:步驟
414:步驟
400b:方法
421:步驟
422:步驟
423:步驟
424:步驟
425:步驟
500a:方法
501:CMB(前一資料)
502:寫入緩衝器(新資料)
503:NAND頁面(保留資料)
504:讀取緩衝器(保留資料)
505:CMB(跨-XOR)
511:步驟
512:步驟
513:步驟
514:步驟
500b:方法
521:步驟
522:步驟
523:步驟
524:步驟
525:步驟
600:方法
610:步驟
620:步驟
630:步驟
700a:方法
311’:步驟
700b:方法
321’:步驟
800a:方法
411’:步驟
800b:方法
421’:步驟
900a:方法
511’:步驟
900b:方法
521’:步驟
1000:方法
610’:方塊
620:方塊
630:方塊
1100:方法
1110:步驟
1200:主機側視圖
1201:邏輯區塊
1202:邏輯區塊
1203:邏輯區塊
1204:邏輯區塊
1205:邏輯區塊
1211:新資料
1212:舊資料
1300:RAID群
[圖1]為依據一些實施方式的包含儲存裝置與主機的系統例子的方塊圖。
[圖2A]為例示依據一些實施方式的執行資料更新的示範方法的方塊圖。
[圖2B]為例示依據一些實施方式的執行資料更新的示範方法的流程圖。
[圖3A]為例示依據一些實施方式的執行同位更新的示範方法的方塊圖。
[圖3B]為例示依據一些實施方式的執行同位更新的示範方法的流程圖。
[圖4A]為例示依據一些實施方式的執行資料回復的示範方法的方塊圖。
[圖4B]為例示依據一些實施方式的執行資料回復的示範方法的流程圖。
[圖5A]為例示依據一些實施方式的使備用儲存裝置投入使用的示範方法的方塊圖。
[圖5B]為例示依據一些實施方式的使備用儲存裝置投入使用的示範方法的流程圖。
[圖6]為例示依據一些實施方式的提供對磁碟機故障的資料保護與回復的示範方法的程序流程圖。
[圖7A]為例示依據一些實施方式的執行同位更新的示範方法的方塊圖。
[圖7B]為例示依據一些實施方式的執行同位更新的示範方法的流程圖。
[圖8A]為例示依據一些實施方式的執行資料回復的示範方法的方塊圖。
[圖8B]為例示依據一些實施方式的執行資料回復的示範方法的流程圖。
[圖9A]為例示依據一些實施方式的使備用儲存裝置投入使用的示範方法的方塊圖。
[圖9B]為例示依據一些實施方式的使備用儲存裝置投入使用的示範方法的流程圖。
[圖10]為例示依據一些實施方式的對磁碟機故障提供資料保護與回復的示範方法的程序流程圖。
[圖11]為例示依據一些實施方式的對磁碟機故障提供資料保護與回復的示範方法的程序流程圖。
[圖12]為例示依據一些實施方式的更新資料的主機側視圖的示意圖。
[圖13]為例示依據一些實施方式的放置同位資料的示意圖。
各種挑戰都朝向同位為主保護。現在,大多數實施方式均透過專用磁碟陣列控制器(DAC)加以完成。DAC藉由執行在給定RAID群中的每資料磁碟的各個資料帶片的互斥或(XOR)運算,而計算同位資料並將所得同位資料儲存於一或更多同位磁碟上。DAC典型透過快速週邊組件互連(PCIe)匯流排或網路附接至主中央處理單元(CPU),同時,DAC使用例如,但並不限於AT附接(ATA)、小電腦系統介面(SCSI)、光纖通道、及串列附接SCSI(SAS)的特殊儲存器互連與協定(介面)與磁碟連接與通訊。有了該等特殊儲存器互連,就有需要專用硬體控制器,以在PCIe匯流排與例如SCSI或光纖通道的儲存器介面間作轉譯。
申請人已認知非揮發記憶體為主的儲存裝置,例如,固態磁碟機(SSD)的演進已經基本上改變了系統架構,其中儲存裝置透過快速非揮發記憶體(NVMe)介面直接附接至該PCIe匯流排,因而免除在路徑中的低效率並最佳化成本、電力與效能。雖然DAC的功能性仍需要SSD故障保護,但DAC功能性正由專用硬體控制器遷移至執行於通用CPU上的軟體。
隨著大約幾毫秒的硬碟機(HDD)存取時間,DAC的低效率並未被顯現出來。隨著SSD的出現已經降低資料存取時間,因此,對DAC作出更嚴格要求,以輸出與
聚合多數SSD的效能。申請人認知到當SSD的存取時間降低幾十毫秒的數量級時,當DAC效能轉移SSD的效能,DAC的傳統實施方式變得低效率。
由於NVMe的提升,用於HDD的介面需要被升級,以與SSD相容。此等介面界定命令被傳送、狀態返回、及在主機與儲存裝置間資料交換的方式。該等介面可以最佳化與直接流線連接至該CPU,而不致為中間介面轉譯器所纏住。
再者,當開始增加採用SSD時,HDD(每GB)的成本已經顯著下降,這是部分由於在市場上先前提供給HDD以區分SSD的改進容量之故。然而,改良容量在效能上也付出代價,特別是,在RAID群中之磁碟機故障時,資料的重建。因此,對於HDD,DAC供應商由使用同位為主保護移動至複製為主的保護。由於HDD的資料儲存與存取時間較SSD為慢,因此,填裝更多容量將使得HDD的平均效能更差。有關於此,DAC供應商並不想要藉由使用同位為主保護,使得HDD更進一步變慢。因此,複製為主保護已經事實上被廣泛使用於HDD的標準DAC中。當SSD有數量級的改良要求要DAC處理時,也是為DAC提供機會適時地簡單重新使用複製為主保護用於SSD。
因此,SSD的同位為主保護並未追隨上在系統層次上發生的架構改變。另外,成本障礙及存取障礙也在主CPU上以具有對選擇客戶相當有限的可用性的特殊庫存計量單位(SKU)的形式突起。DAC供應商也與DAC供應
商針對複製為主的SSD一般,損失了用以提供同位為主保護給SSD的自由度。
結果,對於SSD實施RAID 5及RAID 6同位為主保護也變得更難實施。
傳統上,RAID(如,RAID 5及RAID 6)冗餘係依賴主機執行XOR計算並更新在SSD上的同位資料,而被建立用於儲存裝置(如,SSD)。SSD執行讀或寫資料進出儲存媒體(如,記憶體陣列)的一般功能,而不知該資料是否為同位資料。因此,在RAID 5及RAID 6中,計算負擔(overhead)與額外資料產生與移動經常變成儲存媒體的效能瓶頸。
於此所揭露的配置關係於同位為主保護方案,其為SSD故障保護的符合成本效益的解決方案,而不必妥協於需要更快傳輸業務需求。本案改良同位為主保護,同時,建立與現行系統架構與演進變化相符的解決方案。在一些配置,本案有關於在儲存系統的兩或更多元件間,協調執行資料保護與回復操作。雖然在此以非揮發記憶體裝置為例加以說明,但所揭露的方案可以實施於任何透過介面連接至主機並且暫時或永久儲存資料供主機後續取用的儲存系統或裝置上。
為了協助例示本實施方式,圖1顯示依據一些例子之包含儲存裝置100a、100b、...、100n(統稱儲存裝置100)耦接至主機101的系統的方塊圖。主機101可以為使用者或儲存裝置100的自律中央控制器所操作的使用者
裝置,其中,主機101與儲存裝置100對應於儲存次系統或儲存設備。主機101可以(經由網路介面108)被連接至通訊網路109,使得其他主機電腦(未示出)可以經由通訊網路109存取儲存次系統或儲存設備。此儲存次系統或設備的例子包含全快閃陣列(AFA)或網路附接儲存器(NAS)裝置。如所示,主機101包含記憶體102、處理器104及匯流排106。處理器104係可操作地耦接至記憶體102與匯流排106。處理器104有時稱為主機101的中央處理單元(CPU),並被組態以執行主機101的處理。
記憶體102為主機101的本地記憶體。在一些例子中,記憶體102為緩衝器,有時被稱為主機緩衝器。在一些例子中,記憶體102為揮發儲存器。在其他例子中,記憶體102為非揮發持續儲存器。記憶體102的例子包含但並不限於隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、靜態RAM(SRAM)、磁性RAM(MRAM)、相變記憶體(PCM)等等。
匯流排106包含一或更多軟體、韌體、及硬體,其提供介面供主機101的組件通訊。組件的例子包含但並不限於處理器104、網路卡、儲存裝置、記憶體102、圖形卡等等。另外,主機101(如,處理器104)可以使用匯流排106與儲存裝置100通訊。在一些例子中,儲存裝置100係直接附接或透過適當介面140通訊地耦接至匯流排106。匯流排106為串列、PCIe匯流排或網路、PCIe根複合體、內部PCIe交換器等等之一或多者。
處理器104可以執行作業系統(OS),其提供檔案系或使用該檔案系統的應用。處理器104可以透過通訊鏈路或網路與儲存裝置100(如,各個儲存裝置100的控制器110)通訊。有關於此,處理器104可以使用介面140以將資料由一或更多儲存裝置100送到通訊鏈路或網路並由該處接收資料。介面140允許執行於處理器104上的軟體(如,檔案系統)經由匯流排106與儲存裝置100(如,其控制器110)通訊。儲存裝置100(如,其控制器110)經由介面140可操作地直接耦接至匯流排106。雖然介面140在概念上被以主機101與儲存裝置100間之虛線顯示,但介面140可以包含一或更多控制器、一或更多實體連接器、一或更多資料轉移協定,其包含有名稱空間、埠、傳輸機制、及其連接性。雖然在主機101與儲存裝置100a、b...n間之連接係被顯示為直接鏈接,但在一些實施方式中,該鏈路可以包含網路組構,其可以包含如橋接器與交換器的網路組件。
為了發送與接收資料,處理器104(執行於其上的軟體或檔案系統)使用執行於介面140上的儲存資料轉移協定與儲存裝置100通訊。協定的例子包含但並不限於SAS、串列ATA(SATA)、及NVMe協定。在一些例子中,介面140包含:被實施於或可操作地耦接至匯流排106的硬體(如,控制器)、儲存裝置100(如,控制器110)、或經由一或更多適當網路被可操作地耦接至匯流排106及/或儲存裝置100的另一裝置。介面140與執行於其上的儲存協定也可以包含軟體及/或執行於此硬體上的韌體。
在一些例子中,處理器104可以經由匯流排106與網路介面108與通訊網路109通訊。附接或通訊耦接至通訊網路109的其他主機系統(未示出)可以使用適當網路儲存協定與主機101通訊,網路儲存協定的例子可以包含但並不限於在組構上的NVMe(NVMeoF)、iSCSI、光纖通道(FC)、網路檔案系統(NFS)、伺服器信息塊(SMB)等等。網路介面108允許執行於處理器104上的軟體(如,儲存協定或檔案系統)透過匯流排106與附接至通訊網路109的外部主機通訊。以此方式,網路儲存命令可以由外部主機所發出並為處理器104所處理,該處理器104可以如所需地發出儲存命令給儲存裝置100。因此,資料可以透過通訊網路109在外部主機與儲存裝置100間交換。在此例子中,任何被交換的資料係被緩衝於主機101的記憶體102中。
在一些例子中,儲存裝置100係位於資料中心(為簡明未示出)。資料中心可以包含一或更多平台或機架單元,其各個支援一或更多儲存裝置(例如,但並不限於儲存裝置100)。在一些實施方式中,主機101與儲存裝置100一起形成儲存節點,主機101作為節點控制器。儲存節點的例子為鎧俠(Kioxia)的KumoscaleTM儲存節點。在平台內的一或更多儲存節點係被連接至機架頂端(TOR)交換器,各個儲存節點經由例如乙太網路(Ethernet)、光纖通道或無限頻寬(InfiniBand)的一或更多網路連接,而連接至TOR,並且,可以透過該TOR交換器或另一適當平台內
通訊機制而彼此通訊。在一些實施方式中,儲存裝置100可以為連接至TOR交換器的網路附接儲存裝置(如,乙太SSD),主機101也連接至TOR交換器並能透過TOR交換器與儲存裝置100通訊。在一些實施方式中,至少一路由器可以經由適當網路組構促成在不同平台、機架、或機櫃內的儲存節點中的儲存裝置100間之通訊。儲存裝置100的例子包含非揮發裝置,例如但並不限於固態硬碟(SSD)、乙太附接SSD、非揮發雙行記憶體模組(NVDIMM)、通用快閃儲存器(UFS)、保全數位(SD)裝置等等。
各個儲存裝置100包含至少一控制器110及記憶體陣列120。為簡明起見,儲存裝置100的其他組件並未顯示。記憶體陣列120包含NAND快閃記憶體裝置130a-130n。各個NAND快閃記憶體裝置130a-130n包含一或更多個別NAND快閃晶粒,這些為能保留資料而不用電的NVM。因此,NAND快閃記憶體裝置130a-130n表示多重NAND快閃記憶體裝置或在快閃記憶體裝置100內的晶粒。各個NAND快閃記憶體裝置130a-130n包含一或更多晶粒,其各個具有一或更多平面。各個平面具有多重區塊,及各個區域具有多重頁面。
雖然NAND快閃記憶體裝置130a-130n係被顯示為記憶體陣列120的例子,但用以實施記憶體陣列120的其他例子的非揮發記憶體技術包含但並不限於非揮發(電池後援)DRAM、磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、鐵電RAM(FeRAM)等等。於此所述之配置可以
使用此等記憶體技術與其他適當記憶體技術被同樣地實施於記憶體系統上。
控制器110的例子包含但並不限於SSD控制器(如,客戶SSD控制器、資料中心SSD控制器、企業SSD控制器等等)、UFS控制器、或SD控制器等等。
控制器110可以組合在多數NAND快閃記憶體裝置130a-130n中的原始資料儲存,使得這些NAND快閃記憶體裝置130a-130n邏輯上操作為單一單元的儲存器。控制器110可以包含處理器、微控制器、緩衝器記憶體111(如,緩衝器112、114、116)、錯誤更正系統、資料加密系統、快閃轉譯層(FTL)與快閃介面模組。此等功能可以被實施為硬體、軟體、與韌體或其任何組合。在一些配置中,控制器110的軟體/韌體可以被儲存在記憶體陣列120或任何其他適當電腦可讀儲存媒體中。
控制器110包含適當處理與記憶體能力,用以執行很多功能,尤其是在此所述的功能。如所述,控制器110為NAND快閃記憶體裝置130a-130n管理各種特性,包含但並不限於I/O處理、讀取、寫/規劃、抹除、監視、登錄、錯誤處理、廢料收集、損耗平衡、邏輯至實體位址映圖、資料保護(加密/解密、循環冗餘檢查(CRC))、錯誤校正編碼(ECC)、資料拌碼及類似處理。因此,控制器110提供可見性給NAND快閃記憶體裝置130a-130n。
緩衝器記憶體111為在控制器110內並可操作耦接至控制器110的記憶體裝置。例如,緩衝器記憶體111
可以為定位在控制器110的晶片上的晶片上SRAM記憶體。在一些實施方式中,緩衝器記憶體111可以使用在控制器110外部的儲存裝置100的記憶體裝置加以實施。例如,緩衝器記憶體111可以是定位在控制器110晶片以外的另一晶片上的DRAM。在一些實施方式中,緩衝器記憶體111可以使用在控制器110的內部與外部(如,在控制器110的晶片上與外部)的記憶體裝置加以實施。例如,緩衝器記憶體111可以使用內部SRAM與外部DRAM加以實施,這些係透通/外露並可以透過介面140為例如主機101與其他儲存裝置100的其他裝置所存取。在此例子中,控制器110包含內部處理器,其使用在單一位址空間內的記憶體位址以及控制內部SRAM與外部DRAM的記憶體控制器,以根據效率選擇將資料置放於內部SRAM或外部DRAM上。換句話說,內部SRAM與外部DRAM被如同單一記憶體般定址。如所示,緩衝器記憶體111包含緩衝器112、寫入緩衝器114及讀取緩衝器116。換句話說,緩衝器112、寫入緩衝器114及讀取緩衝器116可以使用緩衝器記憶體111加以實施。
控制器110包含緩衝器112,其有時被稱為磁碟機緩衝器或控制器記憶體緩衝器(CMB)。除了可為控制器110存取外,緩衝器112也可以經由介面140為例如主機101及其他儲存裝置100a、100b、...100n的其他裝置存取。以該方式,緩衝器112(如,在緩衝器112內的記憶體位置的位址)係被外露於匯流排106,並且,可操作地耦接
至匯流排106的任何裝置均可以使用對應於緩衝器112內的記憶體位置的位址發出命令(如,讀取命令、寫入命令等等),以由該緩衝器內的記憶體位置讀取資料及將資料寫入至緩衝器112內的這些記憶體位置。在一些例子中,緩衝器112為揮發儲存器。在一些例子中,緩衝器112為非揮發持續儲存器,其可以對保護一或更多儲存裝置100的未預期電力消失提供改良。緩衝器112的例子包含但並不限於RAM、DRAM、SRAM、MRAM、PCM等等。緩衝器112可以表示多重緩衝器,各個被組態以如於此所述儲存不同類型的資料。
在如於圖1所示的一些實施方式中,緩衝器112為控制器110的本地記憶體。例如,緩衝器112可以為位在控制器110的晶片上的晶片上(on-chip)SRAM記憶體。在一些實施方式中,緩衝器112可以使用在控制器110外部的儲存裝置100的記憶裝置加以實施。例如,緩衝器112可以位在控制器110晶片外的一晶片上的DRAM。在一些實施方式中,緩衝器112可以使用控制器110內部與外部(如,在控制器110晶片上與晶片外)的記憶體裝置加以實施。例如,緩衝器112可以使用內部SRAM與外部DRAM加以實施,這些係透通/外露並可以透過介面140為例如主機101與其他儲存裝置100的其他裝置所存取。在此例子中,控制器110包含內部處理器,其使用在單一位址空間內的記憶體位址以及控制內部SRAM與外部DRAM的記憶體控制器,以根據效率選擇將資料置放於內部SRAM或外部
DRAM上。換句話說,內部SRAM與外部DRAM被如同單一記憶體般定址。
在有關於寫入操作的一個例子中,回應於(經由主機介面140)由主機101接收資料,在將資料寫入至寫入緩衝器114後,控制器110向主機101確認寫入命令。在一些實施方式中,寫入緩衝器114可以被實施於與緩衝器112不同的分開記憶體中,或者,寫入緩衝器114可以為包含緩衝器112的記憶體的界定區域或部分,其中,只有記憶體的CMB部可為其他裝置所存取,但寫入緩衝器114則否。控制器110可以將儲存在寫入緩衝器114中的資料寫入至記憶體陣列120(如,NAND快閃記憶體裝置130a-130n)。一旦完成資料寫入至記憶體陣列120的實體位址,FTL更新為主機101所使用的邏輯位址(如,邏輯區塊位址(LBA))間的映圖,以將該資料相關至控制器110所使用的實體位址,以指明該資料的實體位置。在有關於讀取操作的另一例子中,控制器110包含與緩衝器112與寫入緩衝器114不同的另一緩衝器116(如,讀取緩衝器),以儲存由記憶體陣列120讀取的資料。在一些實施方式中,讀取緩衝器116可以被實施在緩衝器112以外的分開的不同記憶體中,或者讀取緩衝器116可以是包含緩衝器112的記憶體的界定區域或部分,其中只有記憶體的CMB部可以為其他裝置所存取,而讀取緩衝器116則否。
雖然在此以非揮發記憶體裝置(如,NAND快閃記憶體裝置130a-130n)為例加以說明,但本揭露方案可
以以透過介面連接至主機101的任何儲存系統或裝置加以實施,其中,此系統暫時或永久地儲存資料供主機101後續取用。
在一些例子中,儲存裝置100形成用於同位保護的RAID群。即,一或更多儲存裝置100儲存同位資料(如,同位位元),用於儲存在這些裝置上的資料及/或用於儲存在其他的儲存裝置100上的資料。
傳統上,為了更新在RAID 5群中的同位磁碟機上的同位資料(或同位),有需要2個讀取I/O操作、2個寫入I/O操作、在匯流排106上的4個轉移、及4個記憶體緩衝器轉移。所有這些操作在處理器104上需要CPU週期、提交佇列(SQ)/完成佇列(CQ)登錄、上下文交換等等。另外,在處理器104與記憶體102間執行之轉移消耗在處理器104與記憶體102間之緩衝器空間與頻寬。再者,在處理器104與匯流排106間之資料通訊消耗匯流排106的頻寬,其中匯流排106的頻寬係被認為是珍貴資源,因為,匯流排106被作為在主機101的不同組件間之介面。因此,傳統同位更新方案在主機101上消耗相當的資源(如,頻寬、CPU週期、及緩衝器空間)。
於此所揭露的一些配置有關於根據在儲存裝置100間之點對點(P2P)轉移,完成同位為主的磁碟機(如,RAID)故障保護。在使用P2P轉移的磁碟機故障保護方案中,儲存裝置100的本地記憶體緩衝器(如,緩衝器112)被使用以執行由一儲存裝置(如,儲存裝置100a)至另
一儲存裝置(如,儲存裝置100b)的資料轉移。因此,資料不再需要被複製至主機101的記憶體102,因而降低了將資料轉移進出記憶體102所需的潛時與頻寬。使用於此所述的磁碟機故障保護方案,只要資料在RAID 5裝置上更新,I/O操作的數量就可以藉由使用主機導向P2P轉移由4減少至2,不然就是,藉由使用裝置導向P2P轉移由4減少至1。效率增益不但改良了效能同時也降低了成本、功率消耗及網路利用率。
為了完成此改良效率及在一些例子中,在儲存裝置100內的現存能力的緩衝器112在匯流排106上外露(如,透過基礎暫存器)給主機101使用。
在一些配置中,主機101協調儲存裝置100,以執行互斥或(XOR)計算,不只為了同位資料讀與寫,同時,也為了非同位資料的讀與寫。更明確地說,控制器110可以被組態以執行XOR計算,而不是由主機101接收XOR結果。因此,主機101並不必為了這些運算而消耗額外計算或記憶體資源,不必為了發送額外命令以執行XOR計算而消耗CPU週期,不必為了相關直接記憶體存取(DMA)轉移而配置硬體資源,不必為了額外命令而消耗提交與完成佇列,及不必消耗額外匯流排/網路頻寬。
假定令儲存裝置100在儲存裝置100的內部執行XOR計算所獲得的改良,不但整體系統成本(對於包含有主機101及儲存裝置100的系統)變低,同時,也改良了系統的效能。因此,相較於傳統RAID冗餘機制,本案相
關於允許儲存裝置100卸載功能及重劃分功能,造成較少的操作與較低的資料移動。
除了將XOR運算由主機101處卸載,於此所揭露的配置同時也利用在儲存裝置100間之P2P通訊,執行資料的計算轉移,以進一步改良效能、成本、功率消耗、及網路利用。明確地說,主機101不再需要發送由儲存在資料裝置上的資料所決定的暫態資料(如,暫態XOR資料結果)至同位裝置。即,主機101不再需要將來自資料裝置的暫態XOR結果轉移入記憶體102並然後將該暫態XOR結果移出記憶體102轉移入同位裝置。
確實,記憶體102被略過,及暫態XOR資料結果被由資料裝置轉移至同位裝置。例如,各個儲存裝置100的緩衝器112(如,CMB)係為一參考值所指明。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。依據儲存裝置的位址,資料可以被轉移至來自主機101的儲存裝置或另一儲存裝置。儲存裝置100的緩衝器112的位址係被儲存在為主機101所知的共享位址暫存器(如,共享PCIe基址暫存器)。例如,在NVMe中,CMB係為界定CMB開始的位址的PCI位址位置的NVMe控制器暫存器CMBLOC以及該CMB大小的控制器暫存器CMBSZ所界定。在一些例子中,資料裝置將XOR暫態結果儲存於緩衝器112(如,CMB)中。假定,資料裝置的位址係在主機101的共享PCIe基址暫存器中,則主機101將包含資料裝置
的緩衝器112的位址的寫入命令送至同位裝置。同位裝置可以使用轉移機制(如,DMA轉移機制),直接擷取資料裝置的緩衝器112的內容(如,XOR暫態結果),因而略過記憶體102。
傳統上,為了更新在RAID 5群中的資料磁碟機上的資料(正規、非同位資料),以下步驟將被執行。主機101在介面140上提交NVMe讀取請求給資料磁碟機的控制器110。回應於此,控制器110執行NAND讀入讀取緩衝器。換句話說,控制器110讀取在來自記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)的讀取請求中所要求的資料,並將之儲存於讀取緩衝器116。控制器110將來自緩衝器116的資料轉移通過介面140進入記憶體102(如,舊資料緩衝器)。主機101的舊資料緩衝器因此儲存自記憶體陣列120讀取的舊資料。主機101然後提交NVMe寫入請求給控制器110並在主機101的新資料緩衝器中表示予以為控制器110寫入的新資料。回應於此,控制器110執行資料轉移,以將來自主機101的新資料緩衝器的新資料轉移通過NVMe介面進入寫入緩衝器114。控制器110然後藉由將新資料寫入記憶體陣列120(如,一或更多NAND快閃記憶體裝置130a-130n)而更新舊的現存資料。新資料與舊資料共享相同邏輯位址(如,LBA)並具有不同實體位址(如,儲存在NAND快閃記憶體裝置130a-130n之不同NAND頁面中)。主機101然後於(i)已經常駐在主機101的新資料緩衝器中的新資料與(ii)由儲存裝置100讀取並常
駐在主機101的舊資料緩衝器中的現存資料間執行XOR運算。主機101儲存XOR運算的結果(稱為暫態XOR資料)於主機101的跨(trans-)XOR主機緩衝器中。在一些情況中,跨XOR緩衝器可能可以與舊資料緩衝器或新資料緩衝器相同,因為暫態XOR資料可以替換在這些緩衝器內的現存內容,以節省記憶體資源。
另一方面,更新儲存在資料磁碟機(如,儲存裝置100a為例)的資料的一些配置包含執行在控制器110內與在介面140(如,NVMe介面)上的XOR計算,以更新儲存在資料磁碟機的記憶體陣列120中的資料。有關於此,圖2A為例示用以依據一些實施方式的執行資料更新的示範方法200a的方塊圖。參考圖1-2A,相較於以上注意的傳統資料更新方法,方法200a提供改良I/O效率、主機CPU效率、及記憶體資源效率。方法200a可以為主機101與儲存裝置100a所執行。記憶體102包含主機緩衝器(新資料)201。NAND頁面(舊資料)203及NAND頁面(新資料)205為在NAND快閃記憶體裝置130a-130n中的不同頁面。
在方法200a中,主機101通過匯流排106與透過介面140提交新類型NVMe寫入命令或請求給儲存裝置100a的控制器110。在一些實施方式中,該新類型NVMe寫入命令或請求可以相像傳統NVMe寫入命令或請求,但具有不同命令運算碼(opcode)或旗標,以表示該命令不是正常NVMe寫入命令及該命令應依據於此所述的方法加以處理。主機101展現主機緩衝器(新資料)201給控制器110為
將被寫入。回應於此,在211,控制器110通過匯流排106透過介面140由主機緩衝器(新資料)201取得新資料(正規非同位資料),並將該新資料儲存入寫入緩衝器(新資料)202。寫入請求包含新資料的邏輯位址(如,LBA)。
於212,儲存裝置100a的控制器110執行NAND讀入讀取緩衝器(舊資料)204。換句話說,控制器110由記憶體陣列120(如,一或更多NAND頁面(舊資料)203)讀取對應於在211接收的主機的寫入請求中邏輯位址的舊與現存資料並將舊資料儲存於讀取緩衝器(舊資料)204中。該一或更多NAND頁面(舊資料)203為儲存裝置100a的一或更多NAND快閃記憶體裝置130a-130n中的頁面。該新資料與舊資料為資料(如,正規非同位資料)。換句話說,舊資料被更新至新資料。
於213,控制器110然後藉由將新資料由寫入緩衝器(新資料)202寫入NAND頁面(新資料)205,而以新資料更新舊資料。NAND頁面(新資料)205為與NAND頁面(舊資料)203不同的實體NAND頁面位置,假定這是NAND記憶體的實體特性,以及,在實體上不可能重寫NAND頁面中的現存資料。相反地,新NAND實體頁面被寫入並且邏輯-至-實體(L2P)位址映圖表被更新,以表示對應於主機101所使用的邏輯位址的新NAND頁面。控制器110(如,FLT)更新L2P位址映圖表,以將NAND頁面(新資料)205的實體位址對應至邏輯位址。控制器110標示NAND頁面(舊資料)203的實體位址,用於廢料收集。
在214,控制器110執行在儲存於寫入緩衝器(新資料)202中之新資料與儲存在讀取緩衝器(舊資料)204中的舊資料的XOR運算,以決定暫態XOR結果,並將該暫態XOR結果儲存於CMB(跨-XOR)206中。在一些配置中,寫入緩衝器(新資料)202為儲存裝置100a的寫入緩衝器114的特定實施方式。讀取緩衝器(舊資料)204為儲存裝置100a的讀取緩衝器116的特定實施方式。CMB(跨-XOR)206為儲存裝置100a的緩衝器112的特定實施方式。在其他配置中,為了節省記憶體資源,CMB(跨-XOR)206可以與讀取緩衝器(舊資料)204相同並為儲存裝置100a的緩衝器112的特定實施方式,使得暫態XOR結果可以重寫讀取緩衝器(舊資料)204的內容。以此方式,只有一資料由NAND頁面轉移至讀取緩衝器(舊資料)204然後在相同位置適當計算XOR結果,並不再需要資料作任何轉移。
來自CMB(跨-XOR)206的暫態XOR結果並未轉移通過介面140進入主機101。相反地,在CMB(跨-XOR)206的暫態XOR結果可以直接被轉移至同位磁碟機(如,儲存裝置100b),以更新對應於更新的新資料。這將參考圖3A與3B作進一步詳細討論。
圖2B為例示依據一些實施方式之用以執行資料更新的示範方法200b的流程圖。參考圖1、2A及2B,方法200b對應於方法200a。方法200b可以為儲存裝置100a的控制器110所執行。
在221中,控制器110由可操作地耦接至儲存
裝置100a的主機101接收新類型寫入請求。在222,回應於接收該新類型寫入請求,控制器110將新資料(新正規非同位資料)由主機101(如,由主機緩衝器(新資料)201)通過匯流排106透過介面140轉移至儲存裝置100a的寫入緩衝器(如,寫入緩衝器(新資料)202)。因此,控制器110由主機101接收對應在寫入請求中所指明的邏輯位址的新資料。在223,控制器110執行讀取操作,以將現存(舊)資料由非揮發儲存器(如,由NAND頁面(舊資料)203)讀入位在可以為其他裝置(即,CMB)所存取的記憶體區域中的現存資料磁碟機緩衝器(如,讀取緩衝器(舊資料)204)。現存資料具有如同在寫入請求中指明的具有與新資料相同的邏輯位址。
在224,控制器110將儲存在儲存裝置100a的新資料磁碟機緩衝器中的新資料寫入至非揮發儲存器(如,NAND頁面(新資料)205)。如上注意到,雖然新資料與現存資料位於不同實體NAND頁面,但卻對應於相同邏輯位址。現存資料係位於非揮發儲存器(如,在NAND頁面(舊資料)203)的第一實體位址。將新資料寫入非揮發儲存器包含將新資料寫入非揮發儲存器(如,在NAND頁面(新資料)205)的第二實體位址並更新邏輯-至-實體(L2P)映圖,以對應邏輯位址至第二實體位址。方塊223與224可以以任何適當順序或同時執行。
在225,控制器110藉由執行新資料與現存資料的XOR運算而決定XOR結果。XOR結果被稱為暫態XOR
結果。在226,控制器110在決定暫態XOR結果後,暫時將該暫態XOR結果儲存於暫態XOR結果磁碟機緩衝器(如,CMB(跨-XOR)206)。
假定更新在資料磁碟機上的資料(如,方法200a及200b)被跟隨有在同位磁碟機上的同位的對應更新(如,方法300a及300b),以維持RAID 5群保護的完整性,效率實際上為兩程序的總和。換句話說,在傳統機制中的每個寫入造成4個I/O操作(讀取舊資料、讀取舊同位、寫入新資料、及寫入新同位)。在此所述的機制中,I/O操作的數量被減半,或減為2(寫入新資料、寫入新同位)。
傳統上,為了更新在RAID 5群的同位磁碟機的同位資料(或同位),執行了以下步驟。主機101透過介面140提交NVMe讀取請求至同位磁碟機的控制器110。回應於此,控制器110執行NAND讀取入磁碟機緩衝器。換句話說,控制器110從記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)讀取在讀取請求中要求的資料(舊的現存同位資料)並將資料儲存於讀取緩衝器116中。控制器110將資料由讀取緩衝器116通過介面140轉移入記憶體102(如,舊資料緩衝器)。因此,主機101的舊資料緩衝器儲存由記憶體陣列120讀取的舊資料。主機101然後在(i)早先主機101已經計算並常駐於記憶體102(如,跨-XOR緩衝器)中的資料(稱為暫態XOR資料)及(ii)從記憶體陣列120讀取並儲存在主機101的舊資料緩衝器中的舊資料之間執行XOR運算。結果(稱為新資料)然後被儲存在記憶體
102(如,新資料緩衝器)中。在一些情況中,新資料緩衝器可以潛在地與舊資料緩衝器或跨-XOR緩衝器相同,因為新資料可以替換在這些緩衝器中之現存內容,以節省記憶體資源。主機101然後提交NVMe寫入請求至控制器110並將新資料由新資料緩衝器呈現給控制器110。回應於此,控制器110然後執行資料轉移,以由主機101的新資料緩衝器通過介面140取得新資料,並將新資料儲存至寫入緩衝器116。控制器110然後藉由將新資料寫入記憶體陣列120(如,一或更多NAND快閃記憶體裝置130a-130n),而更新舊的現存資料。由於NAND快閃記憶體的操作本質,新資料與舊資料共享相同邏輯位址(如,相同LBA)並且具有不同實體位址(如,儲存在NAND快閃記憶體裝置130a-130n的不同NAND頁面中)。控制器110同時也更新邏輯至實體映圖表,以記錄新實體位址。
另一方面,用以更新儲存在同位磁碟機(如,儲存裝置100b為例)的記憶體陣列120中的同位資料的一些配置不只包含在同位磁碟機的控制器110內而不是在處理器104內的執行XOR計算,同時也將暫態XOR資料直接由資料磁碟機(如,儲存裝置100a為例)的緩衝器112轉移,而不使用主機101的記憶體102。有關於此方面,圖3A為例示依據一些實施方式的執行同位更新的示範方法300a的方塊圖。參考圖1-3A,相較於如上注意到的傳統同位更新方法,方法300a提供改良I/O效率、主機CPU效率、記憶體資源效率、及資料轉移效率。方法300a可以為主機
101、儲存裝置100a(資料磁碟機)、及儲存裝置100b(儲存有儲存在資料磁碟機上的資料的同位資料的同位磁碟機)。
NAND頁面(舊資料)303與NAND頁面(XOR結果)306為在儲存裝置100b的NAND快閃記憶體裝置130a-130n中的不同頁面。NAND頁面(舊資料)203a與NAND頁面(新資料)206b為在儲存裝置100b的NAND快閃記憶體裝置130a-130n中的不同頁面。
於方法300a,在311,主機101透過介面140提交新類型NVMe寫入命令或請求給儲存裝置100b的控制器110。在一些實施方式中,新類型NVMe寫入命令或請求可以相像傳統NVMe寫入命令或請求,但具有不同命令運算碼或旗標,以指明該命令不是正常NVMe寫入命令,並且,該命令應依據在此所述的方法加以處理。寫入請求包含對儲存裝置100a的CMB(跨-XOR)206的位址的參考值。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。如同在方法200a及200b中所述,CMB(跨-XOR)206儲存暫態XOR結果,其係藉由以儲存裝置100b的控制器110執行新資料與現存資料的XOR運算(如,在214)而加以決定。因此,在311中之為儲存裝置100b的控制器110所接收的寫入請求並不包含暫態XOR結果,而是包含暫時儲存該暫態XOR結果的資料磁碟機的緩衝器的位址。寫入請求更包含該(為同位資料的暫態XOR結果的)新資料
將被寫入該儲存裝置100b的邏輯位址(如,LBA)。
在312,控制器110執行NAND讀入讀取緩衝器(新資料)304。換句話說,控制器110由記憶體陣列120(如,一或更多NAND頁面(舊資料)303)讀取對應於在311接收的主機的寫入請求中的邏輯位址的舊與現存資料並將舊資料儲存於讀取緩衝器(新資料)304中。舊與現存資料係位於對應至在311中接收的寫入請求所提供的新資料的LBA的舊實體位址。舊實體位址係由控制器110使用邏輯至實體查找表加以獲得。一或更多NAND頁面(舊資料)303為在儲存裝置100b的一或更多NAND快閃記憶體裝置130a-130n中的頁面。
在313,儲存裝置100b的控制器110執行P2P讀取操作,以將新資料由儲存裝置100a的CMB(跨-XOR)206轉移至儲存裝置100b的寫入緩衝器(新資料)302。換句話說,儲存裝置100b可以使用適當轉移機制,直接擷取在儲存裝置100a的CMB(跨-XOR)206中的內容(如,XOR暫態結果),因而,略過主機101的記憶體102。該轉移機制可以使用在311中從主機101接收的CMB(跨-XOR)206的位址,指明予以被轉移的新資料的起點(CMB(跨-XOR)206)。該轉移機制可以由該起點轉移該資料至儲存裝置100b的寫入緩衝器(寫入緩衝器(新資料)302)。在一些實施方式中,讀取操作係為儲存裝置100b的控制器110所執行為從主機101接收的任何NVMe寫入命令的正常處理的一部分,除了該資料的位址將被寫入在儲存裝置100a的參
考CMB(跨-XOR)206中,而不是主機緩衝器102中。該轉移機制的例子包含但並不限於DMA轉移機制、於無線或有線網路上的轉移、匯流排或串列轉移、平台內(intra-platform)通訊機制、或連接至該起點與目標緩衝器的另一適當通訊通道。
在新資料已經成功地由CMB(跨-XOR)206轉移至寫入緩衝器(新資料)302後,在一些例子中,儲存裝置100b的控制器110可以向主機101確認在311所接收的寫入請求。在一些例子中,在以轉移機制或儲存裝置100b的控制器110向儲存裝置100a的控制器110確認新資料已經由CMB(跨-XOR)206成功地轉移至寫入緩衝器(新資料)302之後,儲存裝置100a的控制器110將移除CMB(跨-XOR)206的內容或者表示CMB(跨-XOR)206的內容為無效。
相對於方法300a,新資料與舊資料為同位資料(如,一或更多同位位元)。換句話說,舊資料(舊同位資料)被更新至新資料(新同位資料)。為簡明起見,儲存裝置100a的其他組件並未顯示。
在314,控制器110執行在儲存在寫入緩衝器(新資料)302中之新資料與儲存在讀取緩衝器(新資料)304中的舊資料間之XOR運算,以決定XOR結果,並將該XOR結果儲存在寫入緩衝器(XOR結果)305中。在一些配置中,寫入緩衝器(新資料)302係為儲存裝置100b的寫入緩衝器114的特定實施方式。讀取緩衝器(新資料)304係為儲存裝置100b的讀取緩衝器116的特定實施方式。寫入緩衝
器(XOR結果)305為儲存裝置100b的緩衝器112的特定實施方式。在其他配置中,為了節省記憶體資源,寫入緩衝器(XOR結果)305可以與寫入緩衝器(新資料)302相同並且為儲存裝置100b的緩衝器114的特定實施方式,使得XOR結果能被重寫寫入緩衝器(新資料)302的內容。
在315,控制器110然後藉由將XOR結果寫入NAND頁面(XOR結果)306,而以新資料更新舊資料。控制器110(如,FTL)更新邏輯至實體位址映圖表,以將NAND頁面(XOR結果)306的實體位址對應至邏輯位址。控制器110將NAND頁面(舊資料)303的實體位址標示為包含無效資料,準備供廢料收集。
圖3B為示依據一些實施方式的用以執行同位更新的示範方法300b的流程圖。參考圖1-3B,方法300b對應於方法300a。方法300b可以為儲存裝置100b的控制器110所執行。
在321,控制器110從可操作耦接至儲存裝置100b的主機101接收新類型寫入請求,該新類型寫入請求包含另一儲存裝置(如,儲存裝置100a)的緩衝器(如,CMB(跨-XOR)206)的位址。在322,回應於接收該寫入請求,控制器110使用轉移機制將新資料(新同位資料)由另一儲存裝置的緩衝器轉移至新資料磁碟機緩衝器(如,寫入緩衝器(新資料)302)。因此,控制器110從另一儲存裝置的緩衝器而不是主機101接收對應於在寫入請求中所指明的該緩衝器的位址的新資料。在323,控制器110執行讀取
操作以從非揮發儲存器(如,從NAND頁面(舊資料)303)讀取現存(舊)資料(現存舊同位資料),進入現存資料磁碟機緩衝器(如,讀取緩衝器(新資料)304)。方塊322及323可以以任何適當順序或同時執行。
在324,控制器110藉由執行新資料與現存資料的XOR運算,而決定XOR結果。在325,在決定XOR結果後,控制器110暫時儲存XOR結果於XOR結果磁碟機緩衝器(如,寫入緩衝器(XOR結果)305)。在326,控制器110將所儲存於XOR結果磁碟機緩衝器中的XOR結果寫入非揮發儲存器(如,NAND頁面(XOR結果)306)中。如所注意到,新資料與現存資料對應於相同邏輯位址。現存資料為非揮發儲存器(如,在NAND頁面(舊資料)304)的第一實體位址。將XOR結果寫入非揮發儲存器包含將XOR結果寫入至該非揮發儲存器(如,在NAND頁面(XOR結果)306)的第二實體位址並更新L2P映圖以對應該邏輯位址至該第二實體位址。
方法300a及300b藉由在磁碟機硬體(如,在所注意到儲存裝置100b的硬體中)中執行XOR運算而改良傳統同位資料更新方法,以免除需要在主機層次的XOR運算。另外,新同位資料被直接由資料磁碟機(如,儲存裝置100a)轉移至同位磁碟機(儲存裝置100b),而不必傳遞通過主機101。另外,方法300a及300b相較於傳統同位更新方法,改良了I/O效率、主機CPU效率、記憶體資源效率、及資料轉移效率。
有關於I/O效能效率,主機101只需要提交一請求(在311/321的寫入請求)來更新同位資料,而不是兩請求,並且,此一請求只包含緩衝器位址,而不是暫態XOR資料或位在該主機中的記憶體102的緩衝器位址。在一些例子中,各個請求所涉及的工作包含:1)主機101將命令寫入提交佇列;2)主機101將更新提交佇列尾指標寫入門鈴暫存器;3)儲存裝置100b(如,控制器110)由提交佇列擷取命令;4)儲存裝置100b(如,控制器110)處理該命令;5)儲存裝置100b(如,控制器110)將有關於完成狀態的細節寫入完成佇列中;6)儲存裝置100b(如,控制器110)通知主機101該命令完成;7)主機101處理該完成;及8)主機101將該更新完成佇列頭指標寫入門鈴暫存器。
因此,主機101並不需要讀取現存同位資料並執行暫態XOR資料與現存同位資料的XOR,主機101也不需要將暫態XOR資料轉移至其記憶體102並然後將暫態XOR資料由記憶體102轉移至同位資料裝置。於此所揭露的機制消耗接收總經過時間的10%,以從儲存裝置100b擷取4KB的資料,排除了在儲存裝置100b內,擷取命令、處理該命令、從儲存媒體(如,記憶體陣列120)擷取資料、及完成XOR運算的所有經過的時間。因此,本案配置可以降低主機請求的數量至少一半(由兩個到一個),展現了顯著的效率改良。
有關於主機CPU效率,主機計算較儲存裝置100的計算更昂貴,因為主機CPU的成本係遠高於儲存裝
置100的CPU。因此,節省了主機CPU的計算週期形成更高的效率。研究評估每NVMe請求所需的CPU時鐘數量約34,000。因此,每當同位更新需要被執行時,發生了34,000時鐘的CPU節省。為了比較目的,對於SSD的12Gb SAS介面請求每請求消耗大約79,000時鐘。隨著NVMe介面技術,此配置可以降低至大約34,000-節省大約45,000時鐘週期。考量在主機層次的XOR運算的免除以及在請求數的降低,效率改良可以相比於由NVMe介面優於SAS介面所提供的效率。
有關於記憶體資源效率,除了節省在CPU層次的主機101外,在記憶體消耗上也有節省。DRAM記憶體持續為主機101的珍貴資源,不只因為由於有限的雙行記憶體模組(DIMM)插槽,同時也由於DRAM技術本身的容量縮放限制,所以只有有限數量DRAM可以被加入至主機101。另外,例如機器學習、記憶體內資料庫、大數據分析的現代應用也增加了在主機101額外記憶體的需求。因此,稱為儲存級記憶體(SCM)的新等級裝置已經出現以銜接假定DRAM無法完成此增加記憶體需要的缺口。雖然此技術仍在其初創階段,但絕大多數現存系統仍尋找解決方案,以降低記憶體資源的消耗,而不犧牲其他歸因,例如成本或效能。本案配置藉由免除了需要在主機101中配置多達兩個緩衝器而降低了記憶體消耗(節省多達每要求200%),因此降低了成本。
有關於資料轉移效率,對於將資料備份由磁
碟機緩衝器(如,緩衝器112)通過NVMe介面轉移至主機緩衝器(如,記憶體102)的資料數量可以降低超過一半,這降低了在DMA轉移的尋找後硬體資源消耗以及PCIe匯流排/網路的利用。另外,在一示範實施方式中,儲存裝置100a、100b、...100n可以常駐在遠端儲存設施中,該設施被連接至PCI交換器並然後通過PCI交換器組構連接至主機,使得在儲存裝置間的轉移只需在“下行”回到目標裝置之前,由源裝置“上行”行進至最近交換器即可,因而不消耗頻寬以及沒有上行第一交換器的網路組構延遲。如此在資源上的縮減及網路延遲的降低不但降低了功耗同時也改良了效能。
傳統上,為了回復在RAID 5群內的故障裝置中的資料,以下步驟被執行。主機101透過介面140提交NVMe讀取請求給RAID 5群的一連串儲存裝置的第一儲存裝置的控制器110。在RAID 5群中,第n個儲存裝置為故障裝置,及第一儲存裝置至第(n-1)個儲存裝置為作動裝置。在RAID 5群中的各個儲存裝置為儲存裝置100之一。回應於此,第一儲存裝置的控制器110執行NAND讀入該第一儲存裝置的磁碟機緩衝器。換句話說,控制器110從第一儲存裝置的記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)讀取在該讀取請求中請求的資料並將該資料儲存於第一儲存裝置的讀取緩衝器116中。第一儲存裝置的控制器110將該資料從該第一儲存裝置的讀取緩衝器116通過介面140轉移至主機101的記憶體102(如,前一資料緩衝
器)。
再者,主機101透過介面140提交NVMe讀取請求給RAID 5群的第二儲存裝置的控制器110。回應於此,第二儲存裝置的控制器110執行NAND讀入該第二儲存裝置的磁碟機緩衝器。換句話說,第二儲存裝置的控制器110從第二儲存裝置的記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)讀取在讀取請求中請求的資料並且將該資料儲存於第二儲存裝置的讀取緩衝器116。該第二儲存裝置的控制器110將資料從該第二儲存裝置的讀取緩衝器116通過介面140讀入主機101的記憶體102(如,現行資料緩衝器)。主機101然後執行在(i)主機101的前一資料緩衝器中的資料;與(ii)主機101的現行資料緩衝器中的資料間之XOR運算。結果(暫態XOR結果)然後儲存於主機101的跨-XOR緩衝器中。在一些情況中,主機101的跨-XOR緩衝器可能可以與前一資料緩衝器或現行資料緩衝器相同,因為暫態XOR資料可以替換在這些緩衝器中的現存內容,以節省記憶體資源。
再者,主機101透過介面140提交NVMe讀取請求給RAID 5群的下一儲存裝置的控制器110,以如第二儲存裝置所述的方式讀取下一儲存裝置的現行資料。主機101然後執行在(i)前一資料緩衝器中的資料與(ii)下一儲存裝置的現行資料間的XOR運算,該前一資料緩衝器中的資料為涉及前一儲存裝置的前一疊代中所決定的暫態XOR結果。此等程序被重覆,直到主機101藉由執行該第(n-1)個
儲存裝置的現行資料與涉及第(n-2)個儲存裝置的前一疊代中所決定暫態XOR結果間之XOR運算,而決定回復資料為止。
另一方面,用以回復在RAID 5群中之故障裝置的資料的一些配置不但在儲存裝置的控制器110內而不是在處理器104內執行XOR計算外,同時,也將暫態XOR資料直接由另一儲存裝置的緩衝器112轉移,而不使用主機101的記憶體102。有關於此方面,圖4A為例示依據一些實施方式之執行資料回復的示範方法400a的流程圖。參考圖1與4A,相較於以上注意到傳統資料回復方法,方法400a提供改良主機CPU效率與記憶體資源效率。方法400a可以為主機101、儲存裝置100a(前一儲存裝置)及儲存裝置100b(現行儲存裝置)所執行。NAND頁面(保留資料)403表示在儲存裝置100b的NAND快閃記憶體裝置130a-130n中的一或更多頁面。
圖4A顯示用以在包含儲存裝置100的RAID 5群中的故障的第n個裝置(例如,儲存裝置100n)的資料回復方法的一個疊代。現行儲存裝置表示如圖4A所示現正在此疊代中執行XOR運算的儲存裝置(例如,儲存裝置100b)。前一儲存裝置表示現行儲存裝置取得前一資料的儲存裝置(例如,儲存裝置100a)。因此,現行儲存裝置可以是RAID 5群中第二至第(n-1)個儲存裝置中之任何一個。
CMB(前一資料)401為一例子及儲存裝置100a的緩衝器112的特定實施方式。為了清楚起見,儲存
裝置100a的CMB(前一資料)401以外的組件並未示於圖4A中。
在儲存裝置100a為RAID 5群中的第一儲存裝置的例子中,主機101通過匯流排106並經由介面140提交請求邏輯位址的NVMe讀取請求給儲存裝置100a的控制器110。回應於此,儲存裝置100a的控制器110執行NAND讀入儲存裝置100a的磁碟機緩衝器(如,CMB(前一資料)401)。換句話說,控制器110從儲存裝置100a的記憶體陣列120(NAND快閃記憶體裝置130a-130n之一或更多)讀取對應於在讀取請求中請求的邏輯位址的開始資料並且儲存開始資料於CMB(前一資料)401中。儲存裝置100a的控制器110並未將來自CMB(前一資料)401的開始資料轉移通過介面140進入主機101的記憶體102,而是暫時儲存開始資料於予以被直接轉移至RAID 5群中的下一儲存裝置的CMB(前一資料)401中。因此,在儲存裝置100a為RAID 5群的第一儲存裝置的例子中,前一資料為開始資料。
在儲存裝置100a為在第一儲存裝置與RAID 5群的現行儲存裝置100b間之任一儲存裝置的例子中,在CMB(前一資料)401中之內容(如,暫態XOR資料)係以相同於現行儲存裝置100b的磁碟機緩衝器(跨-XOR)405的內容被決定的方式來加以決定。換句話說,儲存裝置100a為資料復原方法的前一疊代的現行儲存裝置。因此,在儲存裝置100a為在第一儲存裝置與RAID 5群之現行儲存裝置100b間之任一儲存裝置的例子中,前一資料表示暫態XOR資
料。
在圖4A所示之現行疊代中,在411,主機101通過匯流排106並透過介面140提交新類型NVMe命令或請求給現行儲存裝置100b的控制器110。在一些實施方式中,新類型請求可以像傳統NVMe寫入命令,但具有不同命令運算碼或旗標,以指示該命令並不是正常NVMe寫入命令以及該命令應依據在此所述的方法加以處理。新類型NVMe命令或請求包含一參考值,以指示前一儲存裝置100a的CMB(前一資料)401的位址。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。因此,在411為儲存裝置100b的控制器110所接收的新類型請求並未包含前一資料,而是包含暫時儲存前一資料的前一儲存裝置的緩衝器的位址。新類型請求更包含保留資料的邏輯位址(如,LBA)。然而,不同於在正規NVMe寫入命令中,此LBA為予以寫入的資料的位址,在新類型NVMe命令中,LBA表示予以被讀取的保留資料的位址。
在412,控制器110執行NAND讀入讀取緩衝器(保留資料)404。換句話說,控制器110從記憶體陣列120(如,一或更多NAND頁面(保留資料)403)讀取對應於由主機101接收的新類型請求中的邏輯位址的保留資料並將該保留資料儲存於讀取緩衝器(保留資料)404中。所述一或更多NAND頁面(保留資料)403為儲存裝置100b的一或更多NAND快閃記憶體裝置130a-130n中的頁面。
在413,儲存裝置100b的控制器110執行P2P讀取操作,以將前一資料由儲存裝置100a的CMB(前一資料)401轉移至儲存裝置100b的寫入緩衝器(新資料)402。換句話說,儲存裝置100b可以使用適當轉移機制直接擷取在儲存裝置100a的CMB(前一資料)401中的內容(如,前一資料),因而,略過主機101的記憶體102。該轉移機制可以使用在411由主機101接收的CMB(前一資料)401的位址,指明予以轉移的前一資料的起點(CMB(前一資料)401。該轉移機制可以將資料由該起點轉移至目標緩衝器(寫入緩衝器(新資料)402)。轉移機制的例子包含但並不限於DMA轉移機制、透過無線或有線網路的轉移、透過匯流排或串列的轉移、平台內通訊機制、或連接起點與目標緩衝器的其他適當通訊通道。
在前一資料已經成功地由CMB(前一資料)401轉移至寫入緩衝器(新資料)402之後,在一些例子中,儲存裝置100b的控制器110可以對主機101確認在411接收新類型請求。在一些例子中,如同以轉移機制或儲存裝置100b的控制器110向儲存裝置100a的控制器110確認前一資料已經成功由CMB(前一資料)401轉移至寫入緩衝器(新資料)402後,儲存裝置100a的控制器110解除為CMB(前一資料)401所使用的記憶體配置或者表示CMB(前一資料)401的內容為無效。
在414,控制器110執行儲存於寫入緩衝器(新資料)402中之前一資料與儲存於讀取緩衝器(保留資
料)404中的保留資料間之XOR運算,以決定暫態XOR結果,並儲存該暫態XOR結果於CMB(跨-XOR)405。在一些配置中,寫入緩衝器(新資料)402為儲存裝置100a的寫入緩衝器114的特定實施方式。讀取緩衝器(保留資料)404為儲存裝置100a之讀取緩衝器116的特定實施方式。CMB(跨-XOR)405為儲存裝置100b的緩衝器112的特定實施方式。在其他配置中,為了節省記憶體資源,CMB(跨-XOR)405可以與讀取緩衝器(保留資料)404相同,並且為儲存裝置100a的緩衝器112的特定實施方式,使得暫態XOR結果可以重寫讀取緩衝器(保留資料)404的內容。
對於儲存裝置100b的疊代完成於此點,並且暫態XOR結果變成用於儲存裝置100b後的下一儲存裝置的前一資料,並且,CMB(跨-XOR)405變成在下一疊代的CMB(前一資料)401。來自CMB(跨-XOR)405的暫態XOR結果並未被轉移通過介面140進入主機101的記憶體102,而是以類似於413的操作,被保持在予以直接轉移至下一儲存裝置的CMB(跨-XOR)405中。在現行儲存裝置100b為RAID 5群的第(n-1)個儲存裝置的情況中,暫態XOR結果事實上為用於故障的第n個儲存裝置100n的回復資料。
圖4B為例示依據一些實施方式的用以執行資料回復的示範方法400b的流程圖。參考圖1、4A及4B,方法400b對應於方法400a。方法400b可以為儲存裝置100b的控制器110所執行。
在421,控制器110從可操作地耦接至儲存裝
置100b的主機101接收新類型的請求,該新類型請求包含另一儲存裝置(如,儲存裝置100a)的緩衝器(如,CMB(前一資料)401)的位址。在422,回應於接收新類型請求,控制器110使用轉移機制將前一資料從另一儲存裝置的緩衝器轉移至新資料磁碟機緩衝器(如,寫入緩衝器(新資料)402)。因此,控制器110從另一儲存裝置的緩衝器而不是主機101接收對應至新類型請求所指明的緩衝器的位址的前一資料。該新類型請求更包含該保留資料的邏輯位址(如,LBA)。然而,不同於正規NVMe寫入命令的LBA為予以寫入的資料的位址,在此新類型請求中,LBA表示將要被讀取的保留資料的位址。在423,控制器110執行讀取操作,以將來自非揮發儲存器(如,來自NAND頁面(保留資料)403)的(位於對應於LBA的實體位址)現存(保留)資料讀入現存資料磁碟機緩衝器(如,讀取緩衝器(保留資料)404)。方塊422與423可以以任何適當順序或同時執行。
在424,控制器110藉由執行前一資料與保留資料的XOR運算,而決定XOR結果。XOR結果被稱為暫態XOR結果。在425,在決定暫態XOR結果後,控制器110暫時儲存暫態XOR結果於暫態XOR結果磁碟機緩衝器(如,CMB(跨-XOR)405)。
傳統上,為了使RAID 5群中的備用儲存裝置投入使用,執行了以下步驟。主機101透過介面140提交NVMe讀取請求至RAID 5群的一連串儲存裝置的第一儲存
裝置的控制器110。在RAID 5群中,第n個儲存裝置為備用裝置,及第一至第(n-1)個儲存裝置為現行作動裝置。在RAID 5群中的各個儲存裝置為儲存裝置100之一。回應於此,第一儲存裝置的控制器110執行NAND讀入第一儲存裝置的磁碟機緩衝器。換句話說,控制器110讀取來自第一儲存裝置的記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)的讀取請求中請求的資料並且將該資料儲存於第一儲存裝置的讀取緩衝器116。第一儲存裝置的控制器110將該資料由該第一儲存裝置的讀取緩衝器116轉移通過介面140進入主機101的記憶體102(如,前一資料緩衝器)。
再者,主機101將NVMe讀取請求透過介面140提交至RAID 5群的第二儲存裝置的控制器110。回應於此,第二儲存裝置的控制器110執行NAND讀入第二儲存裝置的磁碟機緩衝器。換句話說,第二儲存裝置的控制器110讀取來自第二儲存裝置的記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)的讀取請求中所請求的資料並且將該資料儲存於第二儲存裝置的讀取緩衝器116。第二儲存裝置的控制器110將該資料由第二儲存裝置的讀取緩衝器116通過介面140轉移入主機101的記憶體102(如,現行資料緩衝器)。主機101然後執行(i)在主機101的前一資料緩衝器中的資料與(ii)在主機101的現行資料緩衝器中的資料的XOR運算。然後,結果(暫態XOR結果)被儲存在主機101的跨-XOR緩衝器中。在一些情況
中,主機101的跨-XOR緩衝器可能可以與前一資料緩衝器或現行資料緩衝器相同,因為暫態XOR資料可以替換在這些緩衝器中的現存內容,以節省記憶體資源。
再者,主機101透過介面140提交NVMe讀取請求至RAID 5群的下一儲存裝置的控制器110,以第二儲存裝置所述的方式,讀取下一儲存裝置的現行資料。主機101然後在(i)前一資料緩衝器中的資料與(ii)下一儲存裝置的現行資料間執行XOR運算,該前一資料緩衝器中的資料為涉及前一儲存裝置的前一疊代中所決定的暫態XOR結果。此等程序被重覆,直到主機101藉由執行第(n-1)個儲存裝置的現行資料與在涉及第(n-2)個儲存裝置的前一疊代中所決定的暫態XOR結果間的XOR運算而決定回復資料為止。主機101儲存回復資料於主機101的回復資料緩衝器中。
回復資料為予以被寫入用於該邏輯位址的備用第n個儲存裝置。例如,主機101提交NVMe寫入請求給第n個裝置並呈現將要被寫入的主機101的回復資料緩衝器。回應於此,第n個儲存裝置執行資料轉移,以藉由將回復資料由主機101的回復資料緩衝器轉移通過NVMe介面進入第n個儲存裝置的磁碟機緩衝器,而由主機101取得回復資料。第n個儲存裝置的控制器110然後藉由將來自第n個儲存裝置的磁碟機緩衝器的回復資料寫入一或更多新NAND頁面,而以回復資料更新儲存在該第n個儲存裝置的NAND頁面中的舊資料。控制器110(如,FTL)更新位址映
圖表,以將新NAND頁面的實體位址對應至邏輯位址。控制器110標示NAND頁面的實體位址,其上儲存有舊資料作廢料收集。
另一方面,使在RAID 5群中的備用儲存裝置投入使用的一些配置包含不只在儲存裝置的控制器110內而不是在處理器104內執行XOR計算,同時,也將暫態XOR資料直接由另一儲存裝置的緩衝器112轉移,而不使用主機101的記憶體102。有關於此,圖5A為一方塊圖,例示依據一些實施方式之使備用儲存裝置投入使用的示範方法500a。參考圖1及5A,相較於如上注意到的傳統使備用儲存裝置投入使用的方法,方法500a提供改良主機CPU效率及記憶體資源效率。方法500a可以為主機101、儲存裝置100a(前一儲存裝置)、及儲存裝置100b(現行儲存裝置)所執行。NAND頁面(保留資料)503表示在儲存裝置100b的NAND快閃記憶體裝置130a-130n中的一或更多頁面。
圖5A顯示使(包含儲存裝置100的)RAID 5中的備用第n個裝置(例如,儲存裝置100n)投入使用的一疊代。現行儲存裝置表示現正如於圖5A所示之此疊代中執行XOR運算的儲存裝置(例如,儲存裝置100b)。前一儲存裝置表示該現行儲存裝置所取得前一資料的儲存裝置(例如,儲存裝置100a)。因此,現行儲存裝置可以為RAID 5群中的第二至第(n-1)個儲存裝置中之任一個。
CMB(前一資料)501為儲存裝置100a的緩衝器112的一例子與特定實施方式。為了清楚起見,儲存裝
置100a之CMB(前一資料)501以外的組件並未被顯示。
在儲存裝置100a為RAID 5群中之第一儲存裝置的例子中,主機101透過匯流排106並通道介面140提交請求邏輯位址的NVMe讀取請求至儲存裝置100a的控制器110。回應於此,儲存裝置100a的控制器110執行NAND讀入儲存裝置100a的磁碟機緩衝器(如,CMB(前一資料)501)。換句話說,控制器110從該第一儲存裝置的記憶體陣列120(一或更多NAND快閃記憶體裝置130a-130n)讀取對應於讀取請求中所請求的邏輯位址的開始資料並儲存該開始資料於儲存裝置100a的緩衝器112中。儲存裝置100a的控制器110並未將該開始資料由CMB(前一資料)501轉移通過介面140進入主機101的記憶體102,而是暫時儲存該開始資料於予以直接轉移至RAID 5群中之下一儲存裝置的CMB(前一資料)501中。因此,在儲存裝置100a為RAID 5群的第一儲存裝置的例子中,前一資料為開始資料。
在儲存裝置100a為第一儲存裝置與該RAID 5群的現行儲存裝置100b間之任一儲存裝置的例子中,在CMB(前一資料)501中之內容(如,暫態XOR資料)係以與儲存裝置100b的CMB(跨-XOR)505的內容被決定的相同方式加以決定。換句話說,儲存裝置100a為資料回復方法的前一疊代的現行儲存裝置。因此,在儲存裝置100a為在第一儲存裝置與RAID 5群之現行儲存裝置100b間之任一儲存裝置的例子中,前一資料表示暫態XOR資料。
在現行疊代與如圖5A所示,在511,主機101透過匯流排106並通過介面140提交新類型NVMe命令或請求至儲存裝置100b的控制器110。在一些實施方式中,該新類型請求可以像是傳統NVMe寫入命令,但具有不同命令運算碼或旗標,以指示該命令不是正常NVMe寫入命令及該命令應被依據在此所述之方法加以處理。新類型NVMe命令或請求包含對前一儲存裝置100a的CMB(前一資料)501的位址的參考值。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。因此,為儲存裝置100b的控制器110在511所接收的該新類型請求並不包含前一資料,而是包含暫時儲存該前一資料的前一儲存裝置的緩衝器的位址。該新類型請求更包含保留資料的邏輯位址(如,LBA)。然而,此LBA卻不是如正規NVMe寫入命令般地為予以寫入的資料的位址,在該新類型NVMe命令中,LBA表示將要讀取的保留資料的位址。
在512,控制器110執行NAND讀入讀取緩衝器(保留資料)504。換句話說,控制器110(從記憶體陣列120(如,一或更多NAND頁面(保留資料)503))讀取對應於自主機101接收的新類型請求中的邏輯位址的保留資料並將該保留資料儲存於讀取緩衝器(保留資料)504中。一或更多NAND頁面(保留資料)503為在儲存裝置100b的一或更多NAND快閃記憶體裝置130a-130n的頁面。
在513,儲存裝置100b的控制器110執行P2P
讀取操作,以將前一資料由該儲存裝置100a的CMB(前一資料)501轉移至儲存裝置100b的寫入緩衝器(新資料)502。換句話說,儲存裝置100b可以使用適當轉移機制直接擷取在儲存裝置100a的CMB(前一資料)501中的內容(如,前一資料),因此,略過主機101的記憶體102。該轉移機制可以指明使用在511自主機101接收的CMB(前一資料)501的位址的予以轉移的前一資料的起點(CMB(前一資料)501)。轉移機制可以將資料由起點轉移至目標緩衝器(寫入緩衝器(新資料)502)。轉移機制的例子包含但並不限於DMA轉移機制、透過無線或有線網路的轉移、透過匯流排或串列轉移、平台內通訊機制、或連接起點與目標緩衝器的另一適當通訊通道。
在前一資料已經成功地由CMB(前一資料)501轉移至寫入緩衝器(新資料)502後,在一些例子中,儲存裝置100b的控制器110可以向主機101確認在511接收的寫入請求。在一些例子中,在前一資料已經成功地由CMB(前一資料)501轉移至寫入緩衝器(新資料)502,如同轉移機制或儲存裝置100b的控制器110向儲存裝置100a的控制器110的確認,儲存裝置100a的控制器110解除為CMB(前一資料)501所使用的記憶體的配置或表示該CMB(前一資料)501的內容為無效。
在514,控制器110執行儲存在寫入緩衝器(新資料)502中之前一資料與儲存在讀取緩衝器(保留資料)504中之保留資料間之XOR運算,以決定暫態XOR結
果,並儲存暫態XOR結果於CMB(跨-XOR)505。在一些配置中,寫入緩衝器(新資料)502為儲存裝置100b的寫入緩衝器114的特定實施方式。讀取緩衝器(保留資料)504為儲存裝置100b的讀取緩衝器116的特定實施方式。CMB(跨-XOR)505為儲存裝置100b的緩衝器112的特定實施方式。在其他配置中,為了節省記憶體資源,CMB(跨-XOR)505可以與讀取緩衝器(保留資料)504相同並且為儲存裝置100b的緩衝器112的特定實施方式,使得暫態XOR結果可以重寫讀取緩衝器(保留資料)504的內容。
現行儲存裝置100b的疊代在此點完成,並且,暫態XOR結果變成在現行儲存裝置100b後的下一儲存裝置的前一資料,並且,CMB(跨-XOR)505變成在下一疊代中的CMB(前一資料)501。來自CMB(跨-XOR)505的暫態XOR結果並未轉移通過介面140進入主機101的記憶體102,而是以類似於513的操作,維持在予以直接被轉移至下一儲存裝置的CMB(跨-XOR)505中。當現行儲存裝置100b為RAID 5群中的第(n-1)個儲存裝置的情況中,暫態XOR結果事實上為用於備用第n個儲存裝置100n的回復資料並被儲存在儲存裝置100n的記憶體陣列120中。
圖5B為流程圖,例示依據一些實施方式的使備用儲存裝置投入使用的示範方法500b。參考圖1、5A及5B,方法500b對應於方法500a。方法500b可以為儲存裝置100b的控制器110所執行。
在521,控制器110從可操作地耦接至儲存裝
置100的主機101接收新類型請求,該新類型請求包含另一儲存裝置(如,儲存裝置100a)的緩衝器(如,CMB(前一資料)501)的位址。在522,回應於接收新類型請求,控制器110使用轉移機制將該前一資料由另一儲存裝置的緩衝器轉移至新資料磁碟機緩衝器(如,寫入緩衝器(新資料)502)。因此,控制器110從另一儲存裝置的緩衝器而不是主機101接收對應於新類型請求中指明的緩衝器位址的前一資料。新類型請求更包含保留資料的邏輯位址(如,LBA)。然而,不同於正規NVMe寫入請求中,LBA為予以寫入的資料的位址,在此新類型請求中,LBA表示予以被讀取的保留資料的位址。在523,控制器110執行讀取操作,以從非揮發儲存器(如,從NAND頁面(保留資料)503)將現存(保留)資料讀入現存資料磁碟機緩衝器(如,讀取緩衝器(保留資料)504)。方塊522及523可以以任何適當順序或同時執行。
在524,控制器110藉由執行前一資料與保留資料的XOR運算而決定XOR結果。XOR結果被稱為暫態XOR結果。在525,在決定暫態XOR結果後,控制器110暫時儲存XOR結果於暫態XOR結果磁碟機緩衝器(CMB(跨-XOR)505)中。
圖6為一處理流程圖,例示依據一些實施方式以對磁碟機故障提供資料保護與回復的示範方法600。參考圖1-6,方法600係為第一儲存裝置(如,儲存裝置100b)的控制器110所執行。方法200a、200b、300a、
300b、400a、400b、500a及500b為方法600的特定例子。
在610,第一儲存裝置的控制器110接收來自主機101的新類型的請求。主機101透過介面140被可操作地耦接至第一儲存裝置。在一些例子中,新類型請求包含第二儲存裝置(如,儲存裝置100a)的緩衝器的位址。在620,回應於接收新類型請求,第一儲存裝置的控制器110轉移來自第二儲存裝置的新資料。在630,該第一儲存裝置的控制器110藉由執行該新資料與現存資料的XOR運算,而決定XOR結果。該現存資料被儲存在第一儲存裝置的非揮發儲存器(如,在記憶體陣列120)中。
在一些配置中,回應於接收該新類型請求,第一儲存裝置的控制器110使用轉移機制,根據該第二儲存裝置的緩衝器的位址,將該新資料由第二儲存裝置的緩衝器轉移至第一儲存裝置的新資料磁碟機緩衝器。控制器110執行讀取操作,以將來自該非揮發儲存器(如,在記憶體陣列120中)的現存資料讀入現存資料磁碟機緩衝器。
如同參考更新同位資料(如,方法300a與300b)所述,第一儲存裝置的控制器110被更進一步組態以在決定後,將XOR結果儲存於XOR結果磁碟機緩衝器(如,寫入緩衝器(XOR結果)305)中並且將該XOR結果寫至非揮發儲存器(如,至NAND頁面(XOR結果)306)。新資料與現存(舊)資料對應於相同邏輯位址(相同LBA)。現存資料為非揮發儲存器(如,NAND頁面(舊資料)303)的第一實體位址。第一儲存裝置的控制器110將XOR結果寫至非揮
發儲存器包含將該XOR結果寫至非揮發儲存器(如,NAND頁面(XOR結果)306)的第二實體位址並更新L2P映圖,以對應該邏輯位址至第二實體位址。現存資料與新資料為同位位元。
如同關於執行資料回復(如,方法400a及400b)所述,XOR結果對應於暫態XOR結果。來自第一儲存裝置的暫態XOR結果磁碟機緩衝器(如,CMB(跨-XOR)405)的暫態XOR結果被作為前一資料轉移至第三儲存裝置,而不必透過介面140送至主機101。第三儲存裝置為一連串儲存裝置的第一儲存裝置後的下一儲存裝置。
如同關於使備用儲存裝置投入使用(如,方法500a及500b)所述,XOR結果對應於暫態XOR結果。來自第一儲存裝置的暫態XOR結果磁碟機緩衝器(如,CMB(跨-XOR)505)的暫態XOR結果被作為回復資料轉移至第三儲存裝置,而並未通過介面140送至主機101。第三儲存裝置為被投入使用的備用儲存裝置。回復資料係為第三儲存裝置的控制器所儲存於第三儲存裝置的非揮發記憶體中。
如同在方法300a、300b、400a、400b、500a、及500b所揭露的主機導向的P2P轉移機制中,主機101發送新類型命令或請求給儲存裝置100b,以觸發資料由儲存裝置100a的緩衝器112轉移至儲存裝置100b的緩衝器。寫入命令或請求的所得狀態係由儲存裝置100b回報給主機。
在裝置導向的P2P轉移機制中,儲存裝置100a發送新類型命令或請求(包含緩衝器位址)給儲存裝置100b,以觸發資料由儲存裝置100a的緩衝器112轉移至儲存裝置100b的緩衝器。圖7A-10例示裝置導向的P2P轉移機制。新類型命令或請求的所得狀態係被儲存裝置100b所回報給儲存裝置100a。儲存裝置100a在報告針對首先接收的資料寫入更新的主機命令或請求的所得狀態之前,先將儲存裝置100b的所得狀態列入考量,資料寫入更新隨後藉由儲存裝置100b觸發同位寫入更新。
在主機導向P2P轉移機制中,假定新類型請求在同位更新中被發送至同位磁碟機,同位磁碟機為負責將狀態送回到主機101。而在裝置導向P2P轉移機制中,主機101並未發送該請求至同位磁碟機,因而免除一個I/O(因此,由2至1)。替代地,當主機101第一次對更新資料作出請求時,主機101隱含地將該責任委派給該資料磁碟機。資料磁碟機在計算暫態XOR後,藉由以該CMB位址啟動新類型請求(代表主機101),將該暫態XOR送至同位磁碟機。因為同位磁碟機自資料磁碟機接收該請求,所以,同位磁碟機將所得狀態送回至該資料磁碟機,而不是主機101。當主機101藉由提供同位磁碟機的CMB位址而完成該第一寫入請求時,主機101並未得知此異動,而當然正隱含地請求此異動發生。資料磁碟機本身並不知哪個為同位磁碟機並確實需要主機101提供的同位磁碟機的CMB位址資訊。
圖7A為一方塊圖,例示依據一些實施方式之執行同位更新的示範方法700a。參考圖1-3B、及7A,方法700a與方法300a不同在於311’,儲存裝置100a(如,資料磁碟機)的控制器110經由無線或有線網路、匯流排或串列、平台內通訊機制或在儲存裝置100a與儲存裝置100b間之另一適當通訊通道,提交新類型NVMe寫入命令或請求至儲存裝置100b(如,同位磁碟機)的控制器110。該新類型請求包含儲存裝置100a的CMB(跨-XOR)206的緩衝器位址的參考值,以及,正被用於將被寫入資料的XOR運算的該資料的位置的LBA。於接收該請求時,儲存裝置100b的控制器110在313讀取位在緩衝器CMB(跨-XOR)的資料並將之轉移至寫入緩衝器(新資料)302。於儲存裝置100b的控制器110通知儲存裝置100a該請求完成時,儲存裝置100a解除用於緩衝器CMB(跨-XOR)206中所用的記憶體配置。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。在313的轉移係回應於在311’接收寫入請求而加以執行。
圖7B為一流程圖,例示依據一些實施方式之執行同位更新的示範方法700b。參考圖1-3B、7A、及7B,方法700b對應於方法700a。方法700b可以為儲存裝置100b的控制器110所執行。方法700b與方法300b的不同在於321’,儲存裝置100b(如,同位磁碟機)的控制器110從儲存裝置100a(如,資料磁碟機)接收寫入請求。方塊322回應
於在321’接收的請求,而被執行。
圖8A為一方塊圖,例示依據一些實施方式之執行資料回復的示範方法800a。參考圖1、4A、4B、及8A,方法800a與方法400a的不同在於411’,儲存裝置100a(如,前一儲存裝置)的控制器110經由無線或有線網路、匯流排或串列、平台內通訊機制、或儲存裝置100a與儲存裝置100b間之另一適當通訊通道,提交新類型NVMe寫入命令或請求至儲存裝置100b(如,現行儲存裝置)的控制器110。該請求包含對儲存裝置100a的CMB(前一資料)401的緩衝器位址的參考值,以及,將要結合用於XOR運算的緩衝器位址所在的資料一起使用的資料的位置的LBA。於接收該請求時,儲存裝置100b的控制器110在413讀取位在緩衝器CMB(跨-XOR)的資料並將之轉移入寫入緩衝器(新資料)402。於儲存裝置100b的控制器110通知儲存裝置100a該請求完成時,儲存裝置100a解除在緩衝器CMB(跨-XOR)206所用的記憶體配置。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。在413的轉移係回應於該寫入請求在411’接收而被執行。
圖8B為一流程圖,例示依據一些實施方式之用以執行資料的示範方法800b。參考圖1、4A、4B、8A、及8B,方法800b對應於方法800a。方法800b可以為儲存裝置100b的控制器110所執行。方法800b與方法400b的不同在於421’,儲存裝置100b(如,現行儲存裝置)的控制器110
從儲存裝置100a(如,前一儲存裝置)接收新類型寫入請求。方塊422回應於該請求在421’接收而被執行。
圖9A為方塊圖,例示依據一些實施方式的使備用儲存裝置投入使用的示範方法900a。參考圖1、5A、5B及9A,方法900a與方法500a的不同在於511’,儲存裝置100a(如,前一儲存裝置)的控制器110經由無線或有線網路、匯流排或串列、平台內通訊機制、或在儲存裝置100a與儲存裝置100b間之另一適當通訊通道,提交新類型NVMe寫入命令或請求給儲存裝置100b(如,現行儲存裝置)的控制器110。該請求包含對儲存裝置100a的CMB(前一資料)501的緩衝器位址的參考值,以及,將要配合位在用於XOR運算的緩衝器位址的資料使用的資料的位置的LBA。於接收該請求時,儲存裝置100b的控制器110在413讀取位在緩衝器CMB(跨-XOR)的資料並將之轉移入寫入緩衝器(新資料)402。於儲存裝置100b的控制器110通知儲存裝置100a該請求完成時,儲存裝置100a解除使用於緩衝器CMB(跨-XOR)206中的記憶體的配置。參考值的例子包含但並不限於位址、CMB位址、位址描述符、識別碼、指標、或指明儲存裝置的緩衝器112的另一適當指示符。在513的轉移係回應於在511’接收該寫入請求而被執行。
圖9B為流程圖,例示依據一些實施方式的使備用儲存裝置投入使用的示範方法900b。參考圖1、5A、5B、9A及9B,方法900b對應於方法900a。方法900b可以為儲存裝置100b的控制器110所執行。方法900b與方法
500b的不同在於521’,儲存裝置100b(如,現行儲存裝置)的控制器110從儲存裝置100a(如,前一儲存裝置)接收新類型寫入請求。方塊522係回應於請求在521’接收而被執行。
圖10為程序流程圖,例示依據一些實施方式的用以提供磁碟機故障的資料保護與回復的示範方法1000。參考圖1、6、及7A-10,方法1000為第一儲存裝置(如,儲存裝置100b)的控制器110所執行。方法700a、700b、800a、800b、900a、及900b為方法1000的特定例子。方法1000與方法600的不同在於610’,該第一儲存裝置(如,儲存裝置100b)的控制器110從第二儲存裝置(如,儲存裝置100a)接收新類型寫入請求,而不是主機101。在一些例子中,新類型的寫入請求包含第二儲存裝置(如,儲存裝置100a)的緩衝器的位址,以及,將被用以配合與位在緩衝器位址的資料作XOR運算的資料的位置的LBA。方塊620回應於方塊610’而被執行。
圖11為程序流程圖,例示依據一些實施方式的用以提供磁碟機故障的資料保護與回復的示範方法1100。參考圖1-11,方法1100係為第一儲存裝置(如,儲存裝置100b)的控制器110所執行。方法200a、200b、300a、300b、400a、400b、500a、500b、600、700a、700b、800a、800b、900a、900b、1000係為方法1100的特定例子。在1110,第一儲存裝置(如,儲存裝置100b)的控制器110接收新類型寫入請求。在一些配置中,新類型寫
入請求可以如在方法600中的方塊610所揭露地從主機101接收。在其他配置中,新類型寫入請求可以從第二儲存裝置(如,儲存裝置100a)接收,如同在方法1000中的方塊610’所揭露。方塊620(在方法600及1000中)係回應於在方法1100中的方塊1110而被執行。方塊630(在方法600及1000中)係回應於在方法1100中的方塊620而被執行。
圖12為示意圖,例示依據一些實施方式的更新資料的主機側視圖1200。參考圖1-12,為主機101所寫入的RAID帶片包含邏輯區塊1201、1202、1203、1204、及1205。邏輯區塊1201-1204包含正規非同位資料。邏輯區塊1205包含用於在該等邏輯區塊1201-1204中的資料的同位資料。如所示,回應於決定新資料1211將被寫至在儲存裝置100之一中的邏輯區塊1202(原始包含舊資料),而不是如同傳統所作地執行兩XOR運算或儲存暫態資料(如,暫態XOR結果),主機101只需更新邏輯區塊1205至新資料1211。儲存裝置100的控制器110如所述地執行XOR運算與進行P2P轉移。新資料1211與舊資料1212兩者均被使用以更新在邏輯區塊1205中的同位資料。
圖13為一示意圖,例示依據一些實施方式之同位資料的置放。參考圖1-13,RAID群1300(如,RAID 5群)包含四個磁碟機-磁碟機1、磁碟機2、磁碟機3、及磁碟機4。各個磁碟機的例子為儲存裝置100之一。各個磁碟機1-4儲存資料與同位資料於其個別記憶體陣列120中。四個RAID帶片被描繪,即,A、B、C、D,帶片A包含資料
A1、A2、A3及同位A,並針對帶片B、C、D以此類推。同位A為與資料A1、A2及A3作互斥或運算所產生並被儲存在磁碟機4。同位B係與資料B1、B2及B3作互斥或運算所產生並被儲存在磁碟機3。同位C係與資料C1、C2及C3作互斥或運算所產生並被儲存在磁碟機2。同位D係與資料D1、D2及D3作互斥或運算所產生並被儲存在磁碟機1。
傳統上,如果A3被修正(更新)為A3’,則主機101由磁碟機1讀取A1及由磁碟機2讀取A2,並與A1、A2與A3’作互斥或運算,以產生同位A’,並將A3’寫入磁碟機3及同位A’寫入磁碟機4。或者但也是傳統上,為了避免必須重讀所有其他磁碟機(特別如果在RAID群有多於4個磁碟機時),主機101也可以藉由從磁碟機3讀取A3產生同位A’,從磁碟機4讀取同位A,並將A3、A3’與同位A作互斥或運算,然後將A3’寫至磁碟機3及同位A’寫至磁碟機4。在兩個傳統情況中,修改A3將需要使主機101執行至少兩個從磁碟機讀出以及兩個寫入至磁碟機。
於此所揭露之配置可以免除主機101必須藉由致能磁碟機(如,其控制器110)而讀取同位A,不只內部執行XOR運算,同時,也執行資料的P2P轉移,以產生及儲存同位A’。在一些例子中,磁碟機可以支援新類型寫入命令,其可以是供應商特定命令(VUC)或依據新NVMe規格的新命令,其擴充現存規格的命令集,用以計算及儲存XOR運算的結果及協調資料在磁碟機間的P2P轉移。
主機101可以VUC發送至第一磁碟機,該
VUC包含用於(1)儲存在第一磁碟機上的資料或同位資料,及(2)第二磁碟機的位址的LBA,該第二磁碟機包含予以與對應於LBA的資料或同位資料作互斥或(XOR)運算的資料。第一磁碟機可以讀取為主機101所發送的對應於LBA的資料或同位資料。讀取係為內部讀取,及讀取資料並未送回至主機101。第一磁碟機將根據位址從第二磁碟機取得的資料與內部讀取資料或同位資料作XOR運算,並將XOR運算的結果儲存於對應於已經被讀取的資料或同位資料的LBA中,並對主機101確認成功完成命令。此命令可以被執行不超過針對同等大小讀取與寫入命令所需的次數。
主機101可以發送命令至磁碟機4,其包含用於同位A的LBA以及儲存互斥或運算A3與A3’的結果的另一磁碟機的位址。回應於此,磁碟機4計算並儲存同位A’於先前包含同位A的相同LBA中。
在一些例子中,命令可以觸發XOR運算被執行於控制器110內。命令同時也觸發P2P轉移。命令可以透過任何用以通訊至儲存裝置的介面加以實施。在一些例子中,可以使用NVMe介面命令。例如,主機101可以發送XFER命令(具有指示LBA)給控制器110,以使得控制器110在對應於來自記憶體陣列120的指示LBA的資料上執行計算功能(CF)。予以執行的CF類型、何時執行CF以及,針對什麼資料係為CF專用的。例如,CF運算可以在資料被寫至記憶體陣列120之前,呼叫來自記憶體陣列120的將與
由另一磁碟機轉移的寫入資料作互斥或運算的讀取資料。
在一些例子中,CF運算並未執行於元資料上。主機101可以指明保護資訊,以包含作為CF運算的一部分。在其他例子中,XFER命令使得控制器110運算於資料與元資料上,按照在該命令中指明的邏輯區塊所特定的CF。主機101可以類似地指明保護資訊,以包含作為CF運算的一部分。
在一些配置中,主機101可以調用CF被發送至儲存裝置100的資料(如,為寫入操作)或由儲存裝置100所請求的資料(如,為讀取操作)。在一些例子中,在將資料儲存在記憶體陣列120之前,先應用CF。在一些例子中,在將資料儲存至記憶體陣列120之後,才應用CF。在一些例子中,儲存裝置100在執行CF後,將資料發送至主機101。CF的例子包含如此所述之XOR運算,如,用於RAID 5。
先前說明係被提供以使熟習於本技藝者實施於此所述之各種態樣。對這些態樣的各種修改將可以為熟習於本技藝者所迅速了解,並且,在此所界定的一般原理可以應用至其他態樣。因此,申請專利範圍並不被限定於在此所示態樣中,而是依據符合申請專利範圍的全部範圍,其中,元件中之單數並不是想要表示“一與任一”,除非特別描述以外,而是表示“一或更多”。除非特別描述,用語“一些”表示一或更多。在整個先前說明中所述的各種態樣的元件的所有結構與功能上的等效係在此被特別併入
作為參考並想要為申請專利範圍所包圍,這些等效係為熟習於此技藝者所知或隨後所知者。再者,在此所述的所有事項並不想要獻給公眾,不論該揭露係在申請專利範圍敘明否。請求項元件要被建構為功能手段,除非該元件已具體描述使用“手段用以...”的用語。
可了解的是,所揭露的程序中的步驟的特定順序或階層只是例示手法的例子。根據設計喜好,可以了解,在程序中的步驟的特定順序或階層可以被重新排列,同時,仍保持在先前說明的範圍內。隨附的方法請求項以一樣本順序表示各種步驟元件,並不表示被限定至所呈現的特定順序或階層。
所揭露實施方式的先前說明係被提供以使得熟習於本技藝者能完成或使用所揭露的發明標的。對這些實施方式的各種修改可以為熟習於本技藝者所迅速了解,並且,在此所界定的一般原理可以應用至其他實施方式,而不脫離先前說明的精神與範圍。因此,先前說明並不是想要被限定至於此所述之實施方式,而是想要依據相符於在此揭露的原理與新特性的最寬範圍。
各種所示與所述的例子只是被提供作為例子,以例示申請專利範圍的各種特性。然而,有關於任何給定例子所示與所述之特性並不必然限定至相關例子並且可以被用於或組合所示或所述的其他例子。再者,申請專利範圍並不是想要為任一例子所限定。
前述方法說明與程序流程圖係只被提供作例
示性例子並不想要要求或暗示該各種例子的步驟係以所示順序加以進行。因為可以為熟習於本技藝者所了解,在前述例子中之步驟的順序可以以任一順序加以執行。如“隨後”、“然後”、“下一”等的用語並不是想要限定這些步驟的順序;這些用語只是簡單用以導引讀取通過方法的說明。再者,有關於請求項元件的單數表示,例如,“一”或“該”並不被建立以限制該元件為單數。
配合在此揭露的例子所述的各種例示邏輯方塊、模組、電路與演算法步驟可以實施為電子硬體、電腦軟體或兩者之組合。為了清楚例示硬體與軟體的可交換性,各種例示組件、方塊、模組、電路與步驟已經大致以其功能加以描述。此等功能被實施為硬體或軟體乃取決於施加至整個系統的特定應用與設計侷限而定。熟習工匠可以針對各個特定應用以各種方式實施所述功能,但此等實施方式決定應不被解譯為脫離本案的範圍。
用以配合於此所揭露的例子所述的實施各種例示邏輯、邏輯方塊、模組與電路的硬體可以以通用處理器、DSP、ASIC、FPGA、或其他可程式邏輯裝置、分立閘或電晶體邏輯、分立硬體組件、或其任何組合設計加以實施或執行,以執行於此所述的功能。通用處理器可以為微處理器,但,在其他例子中,處理器可以是任何傳統處理器、控制器、微控制器、或狀態機器。處理器也可以被實施為計算裝置的組合,例如,DSP與微處理器的組合、多數微處理器、一或更多微處理器組合DSP核心、或任何
其他此組態。或者,一些步驟或方法可以以針對一給定功能的電路來執行。
在一些例示例子中,所述功能可以實施為硬體、軟體、韌體、或其任何組合。如果實施為軟體,功能可以被儲存在非暫態電腦可讀儲存媒體或非暫態處理器可讀取儲存媒體作為一或更多指令或碼。於此所揭露的方法或演算法的步驟可以實施於處理器可實施於處理器可執行軟體模組中,其可以常駐於非暫態電腦可讀或處理器可讀儲存媒體中。非暫態電腦可讀取或處理器可讀取儲存媒體可以為任何儲存媒體,其可以為電腦或處理器所存取。此非暫態電腦可讀取或處理器可讀取儲存媒體可以例如但並不限於包含RAM、ROM、EEPROM、FLASH記憶體、CD-ROM或其他光碟儲存器、磁碟機儲存器或其他磁儲存器、或任何其他媒體,其可以被用以儲存以指令或資料結構表示的想要程式碼並可以為電腦所存取。於此所用的磁碟機與碟片包含光碟(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟機、及藍光碟,其中磁碟機通常以磁性方式播放資料,而碟片以雷射光學地播放資料。以上組合也可以包含在非暫態電腦可讀取與處理器可讀取媒體的範圍內。另外,方法或演算法的操作可以常駐在非暫態處理器可讀取儲存媒體及/或電腦可讀取儲存媒體中的碼及/或指令集的一或任意組合,這可以併入電腦程式產品中。
前述說明的揭露例子被提供以使熟習於本技藝者完成或使用本案。對這些例子的各種修改可以為熟習
於本技藝者所迅速了解,及在此所界定的一般原理也可以應用至一些例子中,而不脫離本案的精神或範圍。因此,本案並不想要被限定至於此所示的例子中,而是依據以下的申請專利範圍與在此所揭露的原理與新穎特性相符的最寬範圍。
100a:儲存裝置
101:主機
140:介面
200a:方法
201:主機緩衝器(新資料)
202:寫入緩衝器(新資料)
203:NAND頁面(舊資料)
204:讀取緩衝器(舊資料)
205:NAND頁面(新資料)
206:CMB(跨-XOR)
211:步驟
212:步驟
213:步驟
214:步驟
Claims (20)
- 一種包含有多數儲存裝置與主機通訊的系統中的第一儲存裝置,該第一儲存裝置包含: 非揮發儲存器;及 在該第一儲存裝置中的控制器,被組態以: 接收更新同位位元的請求,其中該請求包含對應於該同位位元的邏輯位址; 回應於接收該請求,轉移來自該多數儲存裝置的第二儲存裝置的新資料至該第一儲存裝置;及 藉由執行來自該第二儲存裝置的該新資料與現存資料的互斥或(XOR)運算,而決定XOR結果,該現存資料係被儲存在該第一儲存裝置的該非揮發儲存器的該邏輯位址中,及 其中該XOR運算包含單一XOR運算以更新舊同位位元。
- 如請求項1的第一儲存裝置,其中該請求為從與該第一儲存裝置通訊的該主機接收。
- 如請求項1的第一儲存裝置,其中該請求為從該第二儲存裝置接收。
- 如請求項1的第一儲存裝置,其中該請求包含對該第二儲存裝置的緩衝器的參考值。
- 如請求項4的第一儲存裝置,更包含現存資料磁碟機緩衝器及新資料磁碟機緩衝器,其中: 回應於接收該請求,該控制器使用轉移機制,根據該第二儲存裝置的該緩衝器的該參考值,將該新資料由該第二儲存裝置的該緩衝器轉移至該新資料磁碟機緩衝器;及 該控制器執行讀取操作,以將該現存資料從該非揮發儲存器讀入該現存資料磁碟機緩衝器。
- 如請求項4的第一儲存裝置,更包含XOR結果磁碟機緩衝器,其中該控制器更進一步被組態以: 在決定後,將該XOR結果儲存至該XOR結果磁碟機緩衝器中;及 將該XOR結果寫至該非揮發儲存器。
- 如請求項6的第一儲存裝置,其中: 該新資料與該現存資料均對應於該邏輯位址; 該現存資料為該非揮發儲存器的第一實體位址;及 將該XOR結果寫至該非揮發儲存器包含: 將該XOR結果寫至該非揮發儲存器的第二實體位址;及 更新邏輯至實體映圖,以將該邏輯位址對應至該第二實體位址。
- 如請求項6的第一儲存裝置,其中該現存資料與該新資料為同位位元。
- 如請求項5的第一儲存裝置,更包含暫態XOR結果磁碟機緩衝器,其中: 該XOR結果對應於暫態XOR結果; 來自該暫態XOR結果磁碟機緩衝器的該暫態XOR結果係被作為前一資料轉移至第三儲存裝置,而不被經由介面發送至該主機;及 該第三儲存裝置為在一連串儲存裝置中的該第一儲存裝置後的下一儲存裝置。
- 如請求項5的第一儲存裝置,更包含暫態XOR結果磁碟機緩衝器,其中: 該XOR結果對應於暫態XOR結果; 來自該暫態XOR結果磁碟機緩衝器的該暫態XOR結果係被作為回復資料轉移至第三儲存裝置,而不被經由介面發送至該主機; 該第三儲存裝置為被投入使用的備用儲存裝置;及 該回復資料為該第三儲存裝置的控制器所儲存於該第三儲存裝置的非揮發記憶體。
- 一種用以管理在包含有多數儲存裝置與主機通訊的系統內的資料的方法,該方法包含: 由該多數儲存裝置的第一儲存裝置的控制器接收更新同位位元的請求,其中該請求包含對應於該同位位元的邏輯位址; 回應於接收該請求,該第一儲存裝置的該控制器轉移來自該多數儲存裝置的第二儲存裝置的新資料至該第一儲存裝置;及 該第一儲存裝置的該控制器藉由執行來自該第二儲存裝置的該新資料與現存資料的互斥或(XOR)運算,而決定XOR結果,該現存資料係被儲存在該第一儲存裝置的非揮發儲存器的該邏輯位址中,及 其中該XOR運算包含單一XOR運算以更新舊同位位元。
- 如請求項11的方法,其中該請求係從與該第一儲存裝置通訊的該主機接收。
- 如請求項11的方法,其中該請求係從該第二儲存裝置接收。
- 如請求項11的方法,其中該請求包含對該第二儲存裝置的緩衝器的參考值。
- 如請求項14的方法,更包含: 回應於接收該請求,該控制器使用轉移機制,根據該第二儲存裝置的該緩衝器的該參考值,將該新資料由該第二儲存裝置的該緩衝器轉移至該第一儲存裝置的該新資料磁碟機緩衝器;及 該控制器執行讀取操作,以從該非揮發儲存器將該現存資料讀入現存資料磁碟機緩衝器。
- 一種非暫態電腦可讀取媒體,包含電腦可讀取指令,使得當所述電腦可讀取指令被執行時,使得在具有多數儲存裝置與主機通訊的系統中的第一儲存裝置的處理器用以: 接收更新同位位元的請求,其中該請求包含對應該同位位元的邏輯位址; 回應於接收該請求,轉移來自該多數儲存裝置的第二儲存裝置的新資料至該第一儲存裝置;及 藉由執行來自該第二儲存裝置的該新資料與現存資料的互斥或(XOR)運算,而決定XOR結果,該現存資料係儲存在該第一儲存裝置的非揮發儲存器的該邏輯位址中,及 其中該XOR運算包含單一XOR運算以更新舊同位位元。
- 如請求項16的非暫態電腦可讀取媒體,其中該請求係由與該第一儲存裝置通訊的該主機接收。
- 如請求項16的非暫態電腦可讀取媒體,其中該請求係從該第二儲存裝置接收。
- 如請求項16的非暫態電腦可讀取媒體,其中該請求包含對該第二儲存裝置的緩衝器的參考值。
- 如請求項19的非暫態電腦可讀取媒體,該處理器更被使得用以: 回應於接收該請求,使用轉移機制,根據該第二儲存裝置的該緩衝器的該參考值,將該新資料由該第二儲存裝置的該緩衝器轉移至該第一儲存裝置的新資料磁碟機緩衝器;及 執行讀取操作,以將來自該非揮發儲存器的該現存資料讀入現存資料磁碟機緩衝器。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202063108196P | 2020-10-30 | 2020-10-30 | |
| US63/108,196 | 2020-10-30 | ||
| US17/133,373 | 2020-12-23 | ||
| US17/133,373 US20220137835A1 (en) | 2020-10-30 | 2020-12-23 | Systems and methods for parity-based failure protection for storage devices |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202225968A TW202225968A (zh) | 2022-07-01 |
| TWI883287B true TWI883287B (zh) | 2025-05-11 |
Family
ID=81362773
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110139513A TWI883287B (zh) | 2020-10-30 | 2021-10-25 | 用於儲存裝置的同位為主的故障保護的系統與方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20220137835A1 (zh) |
| CN (1) | CN114443346A (zh) |
| TW (1) | TWI883287B (zh) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11687286B2 (en) | 2021-07-16 | 2023-06-27 | Vmware, Inc. | Resiliency and performance for cluster memory |
| US11698760B2 (en) | 2021-07-16 | 2023-07-11 | Vmware, Inc. | Copy and restore of page in byte-addressable chunks of cluster memory |
| US11914469B2 (en) * | 2021-07-16 | 2024-02-27 | Vmware, Inc. | Resiliency and performance for cluster memory |
| US11704030B2 (en) | 2021-07-16 | 2023-07-18 | Vmware, Inc. | Resiliency and performance for cluster memory |
| KR20230106920A (ko) * | 2022-01-07 | 2023-07-14 | 삼성전자주식회사 | 스토리지 시스템 및 이를 포함하는 컴퓨팅 시스템 |
| CN114610542B (zh) * | 2022-05-10 | 2023-03-14 | 深圳佰维存储科技股份有限公司 | 数据恢复方法、装置、可读存储介质及电子设备 |
| US11960776B2 (en) * | 2022-06-02 | 2024-04-16 | Micron Technology, Inc. | Data protection for stacks of memory dice |
| US11803444B1 (en) * | 2022-06-15 | 2023-10-31 | Micron Technology, Inc. | Cooperative memory subsystem data recovery |
| US12153798B2 (en) | 2022-07-15 | 2024-11-26 | Micron Technology, Inc. | Network-ready storage products for implementations of internet appliances |
| US12379867B2 (en) | 2022-07-15 | 2025-08-05 | Micron Technology, Inc. | Network-ready storage products with cryptography based access control |
| US11983434B2 (en) | 2022-07-15 | 2024-05-14 | Micron Technology, Inc. | Network-ready storage products with computational storage processors |
| US12436693B2 (en) | 2022-07-15 | 2025-10-07 | Micron Technology, Inc. | External data processing for network-ready storage products having computational storage processors |
| US11868827B1 (en) | 2022-07-15 | 2024-01-09 | Micron Technology, Inc. | Network storage products with options for external processing |
| US12050945B2 (en) * | 2022-07-15 | 2024-07-30 | Micron Technology, Inc. | Storage products with connectors to operate external network interfaces |
| US12238015B2 (en) | 2022-07-15 | 2025-02-25 | Micron Technology, Inc. | Message queue configuration to separate processing paths for control messages and data messages |
| CN115904226B (zh) | 2022-10-10 | 2025-10-28 | 阿里巴巴(中国)有限公司 | 固态驱动器、设备及固态驱动器的操作方法 |
| JP2024103196A (ja) * | 2023-01-20 | 2024-08-01 | キオクシア株式会社 | 情報処理システム |
| US20240378111A1 (en) * | 2023-05-08 | 2024-11-14 | Micron Technology, Inc. | Apparatus with chained storage management mechanism and methods for operating the same |
| EP4646650A1 (en) | 2023-09-20 | 2025-11-12 | Yangtze Memory Technologies Co., Ltd. | Response control in memory systems |
| US20250244913A1 (en) * | 2024-01-31 | 2025-07-31 | Dell Products L.P. | System and Method for Reducing CPU Memory Demands in Data Storage Systems |
| KR20250126295A (ko) * | 2024-02-16 | 2025-08-25 | 삼성전자주식회사 | Raid 시스템 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5774641A (en) * | 1995-09-14 | 1998-06-30 | International Business Machines Corporation | Computer storage drive array with command initiation at respective drives |
| US20070245173A1 (en) * | 2006-03-21 | 2007-10-18 | International Business Machines Corporation | Enclosure-based raid parity assist |
| US20130117506A1 (en) * | 2010-07-21 | 2013-05-09 | Freescale Semiconductor, Inc. | Integrated circuit device, data storage array system and method therefor |
| US20130219089A1 (en) * | 2012-02-20 | 2013-08-22 | Kyocera Document Solutions Inc. | Communication Processing Device that Stores Communication Data in Buffers, Image Forming Apparatus, and Method of Communication Processing |
| US20170192868A1 (en) * | 2015-12-30 | 2017-07-06 | Commvault Systems, Inc. | User interface for identifying a location of a failed secondary storage device |
| US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
| US5692200A (en) * | 1995-10-16 | 1997-11-25 | Compaq Computer Corporation | Bridge circuit for preventing data incoherency by holding off propagation of data transfer completion interrupts until data clears the bridge circuit |
| JP4054182B2 (ja) * | 2001-09-25 | 2008-02-27 | 株式会社東芝 | 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ |
| US8239706B1 (en) * | 2007-01-03 | 2012-08-07 | Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Data retrieval system and method that provides retrieval of data to any point in time |
| US7921243B1 (en) * | 2007-01-05 | 2011-04-05 | Marvell International Ltd. | System and method for a DDR SDRAM controller |
| US8495417B2 (en) * | 2009-01-09 | 2013-07-23 | Netapp, Inc. | System and method for redundancy-protected aggregates |
| US9342405B2 (en) * | 2011-02-25 | 2016-05-17 | Seagate Technology Llc | Hierarchical data compression testing |
| US20130304970A1 (en) * | 2012-04-20 | 2013-11-14 | Stec, Inc. | Systems and methods for providing high performance redundant array of independent disks in a solid-state device |
| WO2014016860A1 (en) * | 2012-07-23 | 2014-01-30 | Hitachi, Ltd. | Raid storage system and rebuild process |
| CN104508644B (zh) * | 2012-10-30 | 2017-12-08 | 慧与发展有限责任合伙企业 | 智能存储器缓冲器 |
| US9772796B2 (en) * | 2015-04-09 | 2017-09-26 | Sandisk Technologies Llc | Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address |
| US10067717B2 (en) * | 2016-05-10 | 2018-09-04 | International Business Machines Corporation | Processing a chain of a plurality of write requests |
| US10372534B2 (en) * | 2016-09-20 | 2019-08-06 | Samsung Electronics Co., Ltd. | Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device |
| US10732893B2 (en) * | 2017-05-25 | 2020-08-04 | Western Digital Technologies, Inc. | Non-volatile memory over fabric controller with memory bypass |
| US10365967B2 (en) * | 2017-08-23 | 2019-07-30 | Toshiba Memory Corporation | On the fly raid parity calculation |
| US10481834B2 (en) * | 2018-01-24 | 2019-11-19 | Samsung Electronics Co., Ltd. | Erasure code data protection across multiple NVME over fabrics storage devices |
| US10628258B2 (en) * | 2018-07-20 | 2020-04-21 | Micron Technology, Inc. | Die-level error recovery scheme |
| US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
| US10977073B2 (en) * | 2019-07-10 | 2021-04-13 | Dell Products L.P. | Architectural data mover for RAID XOR acceleration in a virtualized storage appliance |
| KR20210113906A (ko) * | 2020-03-09 | 2021-09-17 | 에스케이하이닉스 주식회사 | 컴퓨팅 시스템 및 그 동작 방법 |
| US11513891B2 (en) * | 2020-07-24 | 2022-11-29 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
| US11640334B2 (en) * | 2021-05-21 | 2023-05-02 | Microsoft Technology Licensing, Llc | Error rates for memory with built in error correction and detection |
-
2020
- 2020-12-23 US US17/133,373 patent/US20220137835A1/en active Pending
-
2021
- 2021-10-25 TW TW110139513A patent/TWI883287B/zh active
- 2021-10-29 CN CN202111268276.4A patent/CN114443346A/zh active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5774641A (en) * | 1995-09-14 | 1998-06-30 | International Business Machines Corporation | Computer storage drive array with command initiation at respective drives |
| US20070245173A1 (en) * | 2006-03-21 | 2007-10-18 | International Business Machines Corporation | Enclosure-based raid parity assist |
| US20130117506A1 (en) * | 2010-07-21 | 2013-05-09 | Freescale Semiconductor, Inc. | Integrated circuit device, data storage array system and method therefor |
| US20130219089A1 (en) * | 2012-02-20 | 2013-08-22 | Kyocera Document Solutions Inc. | Communication Processing Device that Stores Communication Data in Buffers, Image Forming Apparatus, and Method of Communication Processing |
| US20170192868A1 (en) * | 2015-12-30 | 2017-07-06 | Commvault Systems, Inc. | User interface for identifying a location of a failed secondary storage device |
| US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202225968A (zh) | 2022-07-01 |
| US20220137835A1 (en) | 2022-05-05 |
| CN114443346A (zh) | 2022-05-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI883287B (zh) | 用於儲存裝置的同位為主的故障保護的系統與方法 | |
| US11513891B2 (en) | Systems and methods for parity-based failure protection for storage devices | |
| US11281601B2 (en) | Multi-device storage system with hosted services on peer storage devices | |
| US10409511B1 (en) | Multi-device storage system with distributed read/write processing | |
| US9037793B1 (en) | Managing data storage | |
| US20250103236A1 (en) | Systems and methods for data copy offload for storage devices | |
| US12019917B2 (en) | Peer RAID control among peer data storage devices | |
| US20170329674A1 (en) | Flushing host cache data before rebuilding degraded redundant virtual disk | |
| WO2015011825A1 (ja) | ストレージシステムおよびストレージシステムの制御方法 | |
| CN113342258B (zh) | 用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备 | |
| TWI903895B (zh) | 用於使用卸載主機任務的非揮發性儲存裝置進行資料處理的方法、系統及非暫態性處理器可讀取媒體 | |
| WO2025007550A1 (zh) | 一种数据存储方法及相关装置 | |
| US20220318091A1 (en) | Storage system and operating method thereof | |
| US12531130B2 (en) | Non-volatile storage device offloading | |
| US20250355767A1 (en) | Non-volatile storage device offloading in a multi-data node environment | |
| US12386557B2 (en) | Non-volatile storage device offloading of host tasks | |
| US20240103756A1 (en) | Non-volatile storage device offloading of host tasks | |
| TW202601361A (zh) | 多資料節點環境中之非揮發性儲存裝置卸載 |