TWI746845B - 用於儲存資料的系統以及方法 - Google Patents
用於儲存資料的系統以及方法 Download PDFInfo
- Publication number
- TWI746845B TWI746845B TW107115575A TW107115575A TWI746845B TW I746845 B TWI746845 B TW I746845B TW 107115575 A TW107115575 A TW 107115575A TW 107115575 A TW107115575 A TW 107115575A TW I746845 B TWI746845 B TW I746845B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage device
- data
- storage
- parity code
- identifier
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/154—Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一種用於儲存資料的系統及方法。多個儲存裝置直接連
接到一個或多個主機電腦,而不存在用於使資料分佈到各儲存裝置並提供資料保護的中間中央控制器。同位碼儲存在一個或多個專用儲存裝置中或分佈在多個儲存裝置中。當儲存裝置接收到寫入命令時,儲存裝置計算局部同位碼,且如果被寫入的資料的同位碼位於另一個儲存裝置上,則將局部同位碼發送到所述另一個儲存裝置,所述另一個儲存裝置利用局部同位碼來更新同位碼。
Description
本申請主張在2017年8月10日提出申請且名稱為"用於分散式糾刪編碼的方法及快速非揮發性記憶體乙太網路固態驅動器中的獨立磁碟冗餘陣列配置(METHOD FOR DISTRIBUTED ERASURE CODING AND RAID CONFIGURATIONS IN NVME-OF ETHERNET SSD)"的美國臨時申請第62/543,789號的優先權及權利,所述美國臨時申請的全部內容併入本申請供參考。
根據本發明的實施例的一個或多個方面涉及資料儲存,且更具體來說涉及一種分散式糾刪編碼的系統及方法。
冗餘資料儲存系統可使資料分佈在多個儲存裝置中,所述多個儲存裝置可被稱為獨立磁碟冗餘陣列(redundant array of independent disk,RAID)。獨立磁碟的冗餘陣列可受到被稱為獨立磁碟冗餘陣列控制器的中央控制器的控制,中央控制器接收寫入命令、產生同位碼並將要被寫入在獨立磁碟冗餘陣列上的資料與同位碼一起儲存。倘若發生資料丟失,獨立磁碟冗餘陣列控制器
可根據同位碼來重新產生所丟失的資料。
在這種系統中,獨立磁碟冗餘陣列控制器可能成本較高,且可能成為瓶頸而降低效率。
本公開實施例的各個方面涉及一種用於分散式糾刪編碼的系統及方法。多個儲存裝置直接連接到一個或多個主機電腦,而不存在用於使資料分佈到各儲存裝置並提供資料保護的中間中央控制器。同位碼儲存在一個或多個專用儲存裝置中或分佈在多個儲存裝置中。當儲存裝置接收到寫入命令時,儲存裝置計算局部同位碼,且如果被寫入的資料的同位碼位於另一個儲存裝置上,則向所述另一個儲存裝置發送局部同位碼,所述另一個儲存裝置利用所述局部同位碼來更新同位碼。
根據本發明的實施例,提供一種用於將資料儲存在儲存裝置陣列中的方法,所述方法包括:由所述儲存裝置陣列的第一儲存裝置從主機電腦接收寫入命令,所述寫入命令包括將在所述第一儲存裝置中的邏輯塊位址處寫入到所述第一儲存裝置的寫入資料;由所述第一儲存裝置取回被儲存在所述邏輯塊位址處的老資料;由所述第一儲存裝置自所述老資料及所述寫入資料計算出局部同位碼,所述局部同位碼是如下的數位:當所述數字被與老同位碼一起評估時,得到新同位碼,所述老同位碼是用於包括所述老資料且展布在整個所述儲存裝置陣列中的資料的老虛擬條的資料保護碼,所述新同位碼是用於展布在整個所述儲存裝置陣列中且包括所述寫入資料而非包括所述老資料的資料的新虛擬條的
資料保護碼;由所述儲存裝置陣列的第二儲存裝置將所述老同位碼與所述局部同位碼一起評估以產生所述新同位碼;以及由所述儲存裝置陣列的第三儲存裝置儲存所述新同位碼。
在一個實施例中,所述第三儲存裝置是所述第二儲存裝置。
在一個實施例中,所述方法包括:由所述第一儲存裝置計算所述第二儲存裝置的識別符;判斷所述第二儲存裝置的所述識別符是否不同於所述第一儲存裝置的識別符;以及當所述第二儲存裝置的所述識別符不同於所述第一儲存裝置的所述識別符時,向所述第二儲存裝置發送包括所述局部同位碼的同位消息。
在一個實施例中,所述寫入命令還包括命名空間識別符,且所述計算所述第二儲存裝置的所述識別符包括:基於所述命名空間識別符從命名空間偏移量表獲得命名空間偏移量;以及將虛擬條識別符作為所述命名空間偏移量與所述邏輯塊位址之和進行計算。
在一個實施例中,所述計算所述第二儲存裝置的所述識別符包括:由所述第一儲存裝置從所述第一儲存裝置中的第一表取回步幅大小;以及計算:所述虛擬條識別符取模於所述步幅大小(the virtual stripe identifier modulo the stride size)。
在一個實施例中,所述向所述第二儲存裝置發送所述同位消息包括:由所述第一儲存裝置從所述第一儲存裝置中的第二表取回所述第二儲存裝置的位址;以及將所述同位消息發送到所述第二儲存裝置的所述位址。
在一個實施例中,所述第一儲存裝置是乙太網路儲存裝
置;所述第二儲存裝置是乙太網路儲存裝置;且所述第二儲存裝置的所述位址是所述第二儲存裝置的乙太網路位址。
在一個實施例中,所述方法包括:由儲存系統管理電路將所述第二儲存裝置的所述位址儲存在所述第一儲存裝置中的所述第二表中。
在一個實施例中,所述方法包括:由所述儲存系統管理電路將所述步幅大小儲存在所述第一表中。
在一個實施例中,所述第一儲存裝置連接到快速周邊元件連接交換機;所述第二儲存裝置連接到所述快速周邊元件連接交換機;且所述第二儲存裝置的所述位址是所述第二儲存裝置的快速周邊元件連接位址。
在一個實施例中,所述老同位碼及所述新同位碼中的每一者是在資料保護系統中使用的資料保護碼,所述資料保護系統選自由獨立磁碟冗餘陣列4、獨立磁碟冗餘陣列5、獨立磁碟冗餘陣列6及糾刪碼資料保護系統組成的群組。
在一個實施例中,所述方法包括:在所述第一儲存裝置故障或斷開時,由儲存系統管理電路對所述儲存介面交換機進行重新配置以將被定址到所述第一儲存裝置的儲存命令路由到所述儲存系統管理電路;以及回應於所接收的儲存命令,由所述儲存系統管理電路通過所述儲存介面交換機來發送與假如所述第一儲存裝置存在且正確操作時所述第一儲存裝置所將發送的相同的命令完成。
在一個實施例中,所述方法包括:由所述儲存系統管理電路恢復先前儲存在所述第一儲存裝置上的資料;以及將已恢復
的所述資料儲存在第二儲存裝置上。
在一個實施例中,所述方法包括:在所述第一儲存裝置故障或斷開時,由儲存系統管理電路對所述儲存介面交換機進行重新配置,以將被定址到所述第一儲存裝置的儲存命令路由到第二儲存裝置;以及回應於所接收的儲存命令,由所述第二儲存裝置通過所述儲存介面交換機發送與假如所述第一儲存裝置存在且正常操作時所述第一儲存裝置所將發送的相同的命令完成。
在一個實施例中,所述方法包括:在所述第一儲存裝置中出現離散故障且接收到讀取命令時,由所述第一儲存裝置恢復受到所述離散故障影響的資料;以及回應於所述讀取命令,由所述第一儲存裝置通過所述儲存介面交換機發送與假如未發生所述離散故障時所述第一儲存裝置所將發送的相同的命令完成。
在一個實施例中,所述方法包括:在所述第一儲存裝置中出現離散故障且接收到讀取命令時,由儲存系統管理電路恢復受到所述離散故障影響的資料;以及回應於所述讀取命令,由所述儲存系統管理電路通過所述儲存介面交換機發送與假如未發生所述離散故障時所述第一儲存裝置所將發送的相同的命令完成。
根據本發明的實施例,提供一種用於儲存資料的系統,所述系統包括儲存裝置陣列,所述系統被配置成:由所述儲存裝置陣列的第一儲存裝置從主機電腦接收寫入命令,所述寫入命令包括將在所述第一儲存裝置中的邏輯塊位址處寫入到所述第一儲存裝置的寫入資料;由所述第一儲存裝置取回被儲存在所述邏輯塊位址處的老資料;由所述第一儲存裝置自所述老資料及所述寫入資料計算出局部同位碼,所述局部同位碼是如下的數位:當所
述數字被與老同位碼一起評估時,得到新同位碼,所述老同位碼是用於包括所述老資料且展布在整個所述儲存裝置陣列中的資料的老虛擬條的資料保護碼,所述新同位碼是用於展布在整個所述儲存裝置陣列中且包括所述寫入資料而非包括所述老資料的資料的新虛擬條的資料保護碼;由所述儲存裝置陣列的第二儲存裝置將所述老同位碼與所述局部同位碼一起評估以產生所述新同位碼;以及由所述儲存裝置陣列的第三儲存裝置儲存所述新同位碼。
在一個實施例中,所述第三儲存裝置是所述第二儲存裝置。
在一個實施例中,所述系統包括所述局部同位碼。
在一個實施例中,所述計算所述第二儲存裝置的所述識別符包括:由所述第一儲存裝置從所述第一儲存裝置中的第一表取回步幅大小;以及計算:所述邏輯塊位址取模於所述步幅大小。
在一個實施例中,所述向所述第二儲存裝置發送所述同位消息包括:由所述第一儲存裝置從所述第一儲存裝置中的第二表取回所述第二儲存裝置的位址;以及將所述同位消息發送到所述第二儲存裝置的所述位址。
在一個實施例中,所述第一儲存裝置是乙太網路儲存裝置;所述第二儲存裝置是乙太網路儲存裝置;且所述第二儲存裝置的所述位址是所述第二儲存裝置的乙太網路位址。
在一個實施例中,所述系統包括儲存系統管理電路,所述儲存系統管理電路被配置成將所述第二儲存裝置的所述位址儲存在所述第一儲存裝置中的所述第二表中。
在一個實施例中,所述第一儲存裝置連接到快速周邊元
件連接交換機;所述第二儲存裝置連接到所述快速周邊元件連接交換機;且所述第二儲存裝置的所述位址是所述第二儲存裝置的快速周邊元件連接位址。
在一個實施例中,所述老同位碼及所述新同位碼中的每一者是在資料保護系統中使用的資料保護碼,所述資料保護系統選自由獨立磁碟冗餘陣列4、獨立磁碟冗餘陣列5、獨立磁碟冗餘陣列6及糾刪碼資料保護系統組成的群組。
根據本發明的實施例,提供一種用於儲存資料的系統,所述系統包括:儲存裝置陣列;以及儲存系統管理構件,所述系統被配置成:由所述儲存裝置陣列的第一儲存裝置從主機電腦接收寫入命令,所述寫入命令包括將在所述第一儲存裝置中的邏輯塊位址處寫入到所述第一儲存裝置的寫入資料;由所述第一儲存裝置取回被儲存在所述邏輯塊位址處的老資料;由所述第一儲存裝置自所述老資料及所述寫入資料計算出局部同位碼,所述局部同位碼是如下的數位:當所述數字被與老同位碼一起評估時,得到新同位碼,所述老同位碼是用於包括所述老資料且展布在整個所述儲存裝置陣列中的資料的老虛擬條的資料保護碼,所述新同位碼是用於展布在整個所述儲存裝置陣列中且包括所述寫入資料而非包括所述老資料的資料的新虛擬條的資料保護碼;由所述儲存裝置陣列的第二儲存裝置將所述老同位碼與所述局部同位碼一起評估以產生所述新同位碼;以及由所述儲存裝置陣列的第三儲存裝置儲存所述新同位碼。
在一個實施例中,所述儲存系統管理構件被配置成在所述儲存裝置中的每一者中儲存另一個儲存裝置的位址。
110:乙太網路固態驅動器機殼
120:應用
130:作業系統/檔案系統
140:跨架構快速非揮發性記憶體驅動器
210:槽位
220:區塊
510、520、530、540、550、560、605、610、615、620、625、630、635、640、645、650、655、660、665、670、675、710、730、740、750、760、1205、1210、1215、1220、1225、1230、1235、1240、1245、1250、1305、1310、1315、1320、1325、1330、1335、1340、1345、1350、1355:動作
D0、D1、D2~Dm-2、Dm-1:資料
NS0、NS1、NS2、NS3、NS4、NSj:命名空間
P0、P1、P2~Pm-2、Pm-1、Q0、Q1、Q2~Qm-2、Qm-1:同位資料。
參照說明書、權利要求書及附圖將會瞭解及理解本發明的這些及其他特徵及優點,在附圖中:圖1是根據本發明實施例的儲存系統的示意圖。
圖2A是根據本發明實施例的保護群組的資料及同位佈局圖。
圖2B是根據本發明實施例的保護群組的資料及同位佈局圖。
圖3是根據本發明實施例的儲存系統的儲存映射圖。
圖4是根據本發明實施例的同位消息的示意圖。
圖5是根據本發明實施例的初始化過程的流程圖。
圖6是根據本發明實施例的資料寫入操作的流程圖。
圖7是根據本發明實施例的同位更新操作的流程圖。
圖8是根據本發明實施例的獨立磁碟冗餘陣列4的資料及同位佈局圖。
圖9是根據本發明實施例的獨立磁碟冗餘陣列5的資料及同位佈局圖。
圖10是根據本發明實施例的獨立磁碟冗餘陣列6的資料及同位佈局圖。
圖11是根據本發明實施例的糾刪碼資料保護的資料及同位佈局圖。
圖12是根據本發明實施例的故障恢復操作的流程圖。
圖13是根據本發明實施例的故障恢復操作的流程圖。
以下結合附圖闡述的詳細說明旨在作為對根據本發明提供的用於分散式糾刪編碼的系統及方法的示例性實施例的說明,且並非旨在表示可用以構造或利用本發明的唯一形式。所述說明結合所示出的實施例來闡述本發明的特徵。然而應理解,不同的實施例也可實現相同或等效的功能及結構,這些不同的實施例也旨在囊括在本發明的精神及範圍內。如在本文中別處所表明,相同元件編號旨在指示相同元件或特徵。
參照圖1,在一些實施例中,在乙太網路固態驅動器(Ethernet solid state drive,Ethernet SSD)機殼110中實施的儲存系統包括由(例如,24個或48個)乙太網路固態驅動器形成的陣列(即,包括多個乙太網路固態驅動器),每一個乙太網路固態驅動器均連接到儲存介面交換機(例如,乙太網路交換機)。乙太網路固態驅動器中的每一者可連接到儲存系統管理電路(其可為處理電路,如以下進一步詳細闡述),例如基板管理控制器(baseboard management controller,BMC)。乙太網路固態驅動器可通過中間板(midplane)以及快速周邊元件連接(peripheral component interconnect express,PCIe)交換機連接到基板管理控制器。乙太網路固態驅動器可採用遠端直接附接儲存(direct attached storage,DAS)配置方式進行連接,對於輸入輸出(IO)操作而言,每一個乙太網路固態驅動器均獨立於其他乙太網路固態驅動器。在這種配置中,可避免獨立磁碟冗餘陣列控制器的潛在瓶頸。此外,圖1所示系統在原則上能夠容置大量的乙太網路固態驅動器(例如,256個乙太網路固態驅動器)。
每一個乙太網路固態驅動器可包括非揮發性記憶體(例
如,快閃記憶體記憶體)、緩衝器及控制器(其可為處理電路),如以下進一步詳細闡述。控制器可與主機電腦進行介面並執行乙太網路固態驅動器的除資料儲存之外的所有功能,資料儲存則可由緩衝器及非揮發性記憶體執行。緩衝器可為揮發性記憶體。本文所述“儲存介面交換機”是允許主機電腦與乙太網路固態驅動器中的每一者進行交互以與乙太網路固態驅動器交換例如命令及命令完成(command completion)的交換機。
應用120(可存在若干個應用120)可通過在上面執行所述應用的主機電腦的作業系統的檔案系統130、以及通過在主機上產生實體的跨架構快速非揮發性記憶體(Nonvolatile Memory Express,NVMe)(NVMe over Fabrics,NVMe-oF)驅動器來與儲存系統進行交互。主機可不知曉由儲存系統提供的機殼級資料保護(例如,資料保護的實施方式可對主機隱藏,主機僅可察覺到可靠的儲存系統,所述儲存系統可具有變化的性能(例如,在發生資料恢復操作時性能降低))。在每一個乙太網路固態驅動器的主機上可產生實體單獨的驅動器;在對乙太網路固態驅動器進行的所有存取均可通過相應的驅動器實例140來進行的意義上、以及在主機上的驅動器實例140與系統中的乙太網路固態驅動器之間可存在一對一關聯性的意義上而言,驅動器實例140可“擁有”乙太網路固態驅動器。每一個乙太網路固態驅動器可具有各自的命名空間。儲存系統可被配置成實施包括以下在內的各種保護模式中的任意保護模式:獨立磁碟冗餘陣列4、獨立磁碟冗餘陣列5、獨立磁碟冗餘陣列6及糾刪編碼(或“糾刪碼資料保護”)。
參照圖2A及圖2B,資料保護系統可保護在本文中被稱
為“虛擬條(virtual stripes)”的資料單元。每一個虛擬條被指派一個編號或“識別符”。每一個虛擬條包括資料及同位碼。本文所述“同位碼”是與資料一起儲存的冗餘資料,倘若所儲存的資料發生錯誤或糾刪(包括例如由發生故障的乙太網路固態驅動器引起的所儲存資料的丟失),可根據同位碼恢復資料。每一個虛擬條分佈在多個乙太網路固態驅動器中以使得任意一個乙太網路固態驅動器的故障不會引起不可恢復的資料丟失。
在圖2A及圖2B所示實施例中,n+1個乙太網路固態驅動器是保護群組的一部分,且所述n+1個乙太網路固態驅動器安裝在如圖中所示編號為0到n的槽位210(位於乙太網路固態驅動器機殼110中)中。儲存系統(及/或乙太網路固態驅動器機殼110)可包括一個或多個保護群組。每一個乙太網路固態驅動器以區塊220為單位提供儲存,每一個區塊220在圖2A及圖2B中由相應的矩形表示。區塊220的大小可為可程式化的;每一個區塊220可例如由512個位元組、1024個位元組或4096個位元組組成。每一個虛擬條可包括來自各個乙太網路固態驅動器中的每一者的一個區塊220,其中例如虛擬條0包括來自位於槽位0中的乙太網路固態驅動器的區塊D0、來自槽位1中的乙太網路固態驅動器的區塊D0、等等,且其中(如圖中所示)虛擬條2包括來自槽位0中的乙太網路固態驅動器的區塊D2、來自槽位1中的乙太網路固態驅動器的區塊D2、等等。
同位資料(P0、P1等)可如圖2A所示(採用可被稱為“固定同位(fixed parity)”的配置方式)儲存在槽位n中的乙太網路固態驅動器中,或者如圖2B所示,同位資料可(採用可被稱
為“循環同位(rotating parity)”的配置方式)儲存在循環經過各乙太網路固態驅動器的槽位及區塊220中。在循環同位配置方式中,槽位n中的乙太網路固態驅動器可充當置換資料平面(displaced data plane)並儲存因原本應儲存資料的乙太網路固態驅動器現在儲存具有同位碼的區塊220而被“置換”的資料。虛擬條可被分組成被稱為“步幅”的群組。每一個步幅的大小可為n,且在循環同位配置方式中,同位資料的位置可隨著每一個附加步幅而進行重複(例如,同位資料在第二驅動器中(在槽位1中)可處於步幅0的第二虛擬條(虛擬條1)中以及步幅1的第二虛擬條(虛擬條n+1)二者中)。
當寫入新資料時,用於計算及更新同位碼的責任可分佈在例如循環配置方式的各固態驅動器中,如果採用循環同位,則循環配置方式可與同位資料的儲存重合(且,如果採用固定同位,則所述責任可採用相同的循環配置方式來安排,而同位資料儲存在同位平面中)。舉例來說,如果採用循環同位,則槽位2中的乙太網路固態驅動器可負責(i)更新同位資料P2及(ii)儲存同位資料P2;如果採用固定同位,則槽位2中的乙太網路固態驅動器可負責更新同位資料P2而槽位n(同位平面)中的乙太網路固態驅動器可負責儲存同位資料P2。負責計算及更新任意條的同位碼的乙太網路固態驅動器可被稱為用於條的“D/P乙太網路固態驅動器”或“D/P eSSD”。針對任意虛擬條,負責計算及更新同位碼的乙太網路固態驅動器的識別符(或槽位編號)可計算為(虛擬條識別符)取模於(步幅大小(n))。
參照圖3,乙太網路固態驅動器中的每一者可擁有一個
或多個命名空間(在圖3中,標記為“NS0”、“NS1”等)。每一個命名空間可在命名空間偏移量表中與確定乙太網路固態驅動器內命名空間的開始位置的偏移量相關聯。當執行對命名空間的寫入操作時,擁有命名空間的乙太網路固態驅動器可通過將寫入操作的邏輯塊位址(logical block address,LBA)加到命名空間偏移量來計算將要執行寫入的虛擬條。
當對虛擬條內的資料進行修改時(例如,因執行包括將要寫入的資料(或“寫入資料”)的寫入命令),可如下所述對虛擬條的同位碼進行重新計算。每一個同位碼可為虛擬條中所有資料的函數。舉例來說,同位碼P可為虛擬條中所有資料的逐位元互斥或(bit-wise exclusive OR):P=D0+D1+D2+...+Dn-1
其中“+”表示逐位互斥或運算且Di是資料。如果資料塊中的一者被改變而使得例如D1被D1'取代,則同位碼被更新成新的值P':P'=D0+D1'+D2+...+Dn-1。
為促成這種改變,可計算局部同位碼並將局部同位碼應用於老同位碼P以產生新同位碼P'。局部同位碼是在與老同位碼一起評估時(例如,在使用合適的函數(例如,互斥或)與老同位碼進行組合時)會產生新同位碼的值。在概念上,局部同位碼可被視為具有以下效果的值:(i)從同位碼移除老資料的貢獻度;以及(ii)將新資料的貢獻度加到同位碼。這一概念可象徵性地寫成以下形式:Delta D1=fInverse(D1)+D1'
其中fInverse(D1)是在使用合適的函數與老同位碼進行組合時會移除來自D1的貢獻度的值。一旦已計算出局部同位碼,則可如下所示對同位碼進行更新:P'=P+Delta D1
互斥或函數的倒數是互斥或函數。因此,如果使用逐位互斥或來計算同位碼,則fInverse(D1)=D1,且Delta D1=D1+D1'。
當執行寫入操作時,儲存被修改的資料的乙太網路固態驅動器可:(i)當另一個驅動器負責更新用於被修改的資料塊的同位資料時,生成同位消息(包括局部同位碼)並將同位消息發送到所述另一個驅動器;或者(ii)當乙太網路固態驅動器自身負責更新同位資料時,更新同位資料。
圖4示出同位消息的實例。同位消息包括檔頭,檔頭包括虛擬條識別符(virtual stripe identifier,VSID)(即,條編號)以及局部同位碼。乙太網路固態驅動器可通過快速周邊元件連接交換機或通過乙太網路交換機(圖1所示)經由專用通信通道(private communication channel)將同位消息發送到彼此。
基板管理控制器可在啟動時將儲存系統中的每一個乙太網路固態驅動器初始化。以下表1示出在初始化期間基板管理控制器可寫入到乙太網路固態驅動器中的每一者的保護配置表的格式。表1示出每一個欄位可採用的各個值;以下其他的表會示出基板管理控制器可向表寫入的值的實例。
圖5是根據實施例的初始化過程的流程圖。在啟動時,基板管理控制器可:在動作510中,掃描乙太網路固態驅動器機殼110中所有的乙太網路固態驅動器;在動作520中,選擇資料保護模式;在動作530中,確定保護模式的參數;在動作540中,將相應的槽位識別符(ID)(或槽位編號)程式化到每一個乙太網路固態驅動器中;在動作550中,將保護參數程式化到每一個乙太網路固態驅動器中;且在動作560中,將位址資訊程式化到每一個乙太網路固態驅動器中。位址資訊可儲存在乙太網路固態驅動器中的乙太網路固態驅動器位址表中且可包括以下表2所示資訊(在空的單元中的每一者中插入合適的位址)。
資料寫入操作可如在圖6的流程圖中所示來進行。在動作605中開始命令執行,且在動作610中乙太網路固態驅動器提取主機寫入資料,且在動作615中保持主機寫入資料。本文所述“保持”資料意指將資料保存在非揮發性記憶體中或斷電保護記憶體(power-loss-protected memory)中。在動作620中,乙太網路固態驅動器接著從同一命名空間邏輯塊位址提取老資料;在動作625中,如果需要,則對老資料執行反函數;在動作630中,在保護配置表中查找用於計算(或“運算”)局部同位碼(或多個局部同位碼)的參數;在動作635中,運算局部同位碼(或多個局部同位碼);且在動作640中,運算D/P乙太網路固態驅動器的槽位識別符。在動作645中,乙太網路固態驅動器接著判斷其自身是否是D/P乙太網路固態驅動器。如果乙太網路固態驅動器是D/P乙太網路固態驅動器,則在動作650中,所述乙太網路固態驅動器更新同位塊;在動作655中,保持同位塊;且在動作660中,將寫入命令完成發送到主機。如果執行寫入命令的乙太網路固態驅動器自身不是D/P乙太網路固態驅動器,則在動作665中,所述乙太網路固態驅動器會生成局部同位消息;在動作670中,
所述乙太網路固態驅動器將局部同位消息發送到D/P乙太網路固態驅動器;在動作675中,所述乙太網路固態驅動器等待來自D/P乙太網路固態驅動器的確認(confirmation);且在動作660中,向主機發送寫入命令完成。在這一實施例中,提取老同位碼的效率可得到提高,這是因為D/P乙太網路固態驅動器可將一些同位碼維持在快取記憶體中。在固定同位的情形中,D/P乙太網路固態驅動器可將已更新的同位塊發送到同位平面乙太網路固態驅動器以進行儲存。在一些實施例中,利用固定同位,每一個乙太網路固態驅動器可針對所述每一個乙太網路固態驅動器執行的任意資料寫入操作來執行D/P乙太網路固態驅動器的功能(即,可不存在負責虛擬條的專用D/P乙太網路固態驅動器)。在這種實施例中,執行資料寫入操作的乙太網路固態驅動器可運算局部同位碼,從同位平面乙太網路固態驅動器提取老同位塊,更新同位塊,並將已更新的同位塊發送到同位平面乙太網路固態驅動器以進行儲存。
同位更新操作可由D/P乙太網路固態驅動器執行且如圖7所示進行。在動作710中,D/P乙太網路固態驅動器從所接收的同位消息抽取虛擬條識別符。接著,在動作730中,D/P乙太網路固態驅動器提取同位塊;在動作740中,D/P乙太網路固態驅動器更新同位塊;在動作750中,D/P乙太網路固態驅動器保持已更新的同位塊;且在動作760中,D/P乙太網路固態驅動器將確認消息發送到執行寫入命令的乙太網路固態驅動器。
在一些實施例中,可如圖8所示實施獨立磁碟冗餘陣列4。獨立磁碟冗餘陣列4可如圖中所示使用固定同位。下表3示出
可由基板管理控制器程式化到每一個乙太網路固態驅動器的保護配置表中以實施獨立磁碟的冗餘陣列4的值。表3還示出可被程式化到乙太網路固態驅動器位址表中的示例性值。
在一些實施例中,可如圖9所示實施獨立磁碟冗餘陣列5。獨立磁碟冗餘陣列5可如圖中所示使用循環同位。下表4示出可由基板管理控制器程式化到每一個乙太網路固態驅動器的保護配置表中以實施獨立磁碟冗餘陣列5的值。表4還示出可被程式化到乙太網路固態驅動器位址表中以提供儲存系統中其他乙太網路固態驅動器的乙太網路位址的示例性值。每一個乙太網路固態驅動器可例如在對將在執行寫入命令時更新的同位碼進行配置時
使用這一資訊。
在一些實施例中,可如圖10所示實施獨立磁碟冗餘陣列6。獨立磁碟冗餘陣列6可如圖中所示使用循環同位,其中每個條具有兩個同位塊,且其中兩個槽位用於置換資料塊。下表5示出可由基板管理控制器程式化到每一個乙太網路固態驅動器的保護配置表中以實施獨立磁碟冗餘陣列6的值。表5還示出可被程式化到乙太網路固態驅動器位址表中以提供儲存系統中其他乙太網路固態驅動器的乙太網路位址的示例性值。
在一些實施例中,可如圖11所示實施改錯碼資料保護。改錯碼資料保護可如圖中所示使用固定同位,其中每個條具有t個系統性輸入單元及n-t個同位碼塊。下表6示出可由基板管理控制器程式化到每一個乙太網路固態驅動器的保護配置表中以實施改錯碼資料保護的值。表6還示出可被程式化到乙太網路固態驅動器位址表中以提供儲存系統中其他乙太網路固態驅動器的乙太網路位址的示例性值。
圖12示出在一些實施例中用於從離散故障進行恢復的方法的流程圖。本文所述“離散故障”是乙太網路固態驅動器中允許乙太網路固態驅動器繼續運行但會使乙太網路固態驅動器無法成功讀取乙太網路固態驅動器所儲存的一些資料的故障。離散錯誤可由快閃記憶體儲存頁(flash memory page)或快閃記憶體儲存塊的故障引起或者由無法由可由快閃記憶體記憶體採用的低密度同位(low-density parity-check,LDPC)錯誤校正碼校正的記憶體錯誤引起。在動作1205中,乙太網路固態驅動器檢測故障;且在動作1210中,乙太網路固態驅動器確定所丟失資料的虛擬條ID。接著,在動作1215中,乙太網路固態驅動器從保護配置表取回用於資料修復的參數;且在動作1220中,確定對於恢復所丟失資料而言所需的一組乙太網路固態驅動器。乙太網路固態驅動器接著在動作1225、1230及1235中重複地請求從這些乙太網路固態驅動器得到資料,直到已將對於恢復所丟失資料而言所需的資料全部取回為止。接著,在動作1240中,乙太網路固態驅動器運算所丟失資料塊;在動作1245中,乙太網路固態驅動器保持所丟
失資料塊;且在動作1250中,乙太網路固態驅動器視需要將所丟失資料發送到主機。在其他實施例中,錯誤恢復改為由基板管理控制器執行。在這種實施例中,受到故障影響的乙太網路固態驅動器向基板管理控制器發出警報,所述基板管理控制器從虛擬條請求對於恢復所丟失資料而言所需的資料,運算所述所丟失資料,並將已恢復的資料寫回到受到影響的乙太網路固態驅動器。
圖13示出在一些實施例中從磁碟的故障進行恢復的方法的流程圖。磁碟的故障可由乙太網路固態驅動器中的中央硬體故障造成或者由乙太網路固態驅動器的意外移除造成。在一些實施例中,恢復是如圖13所示由基板管理控制器執行。每一個乙太網路固態驅動器可具有存在引腳(presence pin);移除乙太網路固態驅動器可造成無法與存在引腳接觸,從而會向基板管理控制器發出乙太網路固態驅動器已被移除的警報。
在動作1305中,基板管理控制器檢測故障(或拔出事件(pulled out event)),且在動作1310中,基板管理控制器確定對於恢復所丟失資料而言所需的一組乙太網路固態驅動器。接著,在動作1315中,基板管理控制器從保護配置表取回用於進行資料修復的參數;且在動作1320中,識別用於在其中重建所丟失資料的空餘的乙太網路固態驅動器。基板管理控制器接著使用包括兩個嵌套循環的過程來重建資料。包括動作1325、1330及1335的外層循環一直執行到已修復所有的虛擬條(即,已在空餘的乙太網路固態驅動器上修復每一個虛擬條的丟失塊)為止,且執行包括動作1340及1345的內層循環來從儲存這些資料的相應的乙太網路固態驅動器讀取重建所需的資料。一旦外層循環終止(且
已將丟失資料重建),基板管理控制器便會在動作1350中將空余的乙太網路固態驅動器添加到保護群組,且在動作1355中使新添加的乙太網路固態驅動器對於主機而言可見。
在恢復操作期間,基板管理控制器可對乙太網路交換機進行重新程式化並充當發生故障的乙太網路固態驅動器的代理,從而通過根據需要修復所請求的資料來對主機的讀取命令作出回應,以及通過以下步驟來對主機的寫入命令作出回應:(i)將資料寫入到在上面對所丟失資料進行修復的空餘的乙太網路固態驅動器或者(ii)向其他乙太網路固態驅動器寫入資料及/或同位碼,寫入命令中的資料將通過正在進行的資料恢復進程來根據同位碼進行修復。
在一些實施例中,由基板管理控制器進行的恢復被分流到空餘的乙太網路固態驅動器。基板管理控制器利用空餘的乙太網路固態驅動器來取代發生故障的乙太網路固態驅動器,並將磁碟的恢復分流到空餘的乙太網路固態驅動器。新的乙太網路固態驅動器在後臺中建立已恢復資料的所有虛擬條,並對針對所述新的乙太網路固態驅動器的任意輸入/輸出操作進行處理。
綜上所述,公開了用於分散式糾刪編碼的系統及方法。在一些實施例中,多個儲存裝置直接連接到一個或多個主機電腦,而不存在用於使資料分佈到各儲存裝置並提供資料保護的中間中央控制器。同位碼儲存在一個或多個專用儲存裝置中或分佈在多個儲存裝置中。當儲存裝置接收到寫入命令時,儲存裝置計算局部同位碼,且如果被寫入的資料的同位碼位於另一個儲存裝置上,則將局部同位碼發送到所述另一個儲存裝置,所述另一個
儲存裝置利用局部同位碼來更新同位碼。
儘管本文所述一些實施例採用乙太網路固態驅動器作為持久性儲存裝置,然而應理解,本發明的其他實施例可利用其他儲存裝置(例如硬碟驅動器)來實踐。儘管虛擬條在一些實施例中被闡述為由分佈在保護群組中的多個乙太網路固態驅動器的一組區塊組成,所述各個區塊中的每一者的邏輯塊位址是相同的,然而虛擬條更一般來說可為分佈在保護群組中且包括用於資料保護的冗餘資料(例如,同位碼)的一組資料。
本文所用用語“處理電路”是指用於處理資料或數位信號的硬體、韌體及軟體的任意組合。處理電路硬體可包括例如應用專用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理器(central processing unit,CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)以及例如現場可程式化閘陣列(field programmable gate array,FPGA)等可程式化邏輯裝置。在本文所述的處理電路中,每一種功能由被配置成(即,以硬接線方式配置成)執行所述功能的硬體執行,或者由被配置成執行儲存在非暫時性儲存介質中的指令的更加通用的硬體(例如,中央處理器)執行。處理電路可在單個印刷電路板(printed circuit board,PCB)上製作或分佈在若干互連的印刷電路板上。處理電路可含有其他處理電路;舉例來說,處理電路可包括在印刷電路板上互連的兩個處理電路(現場可程式化閘陣列及中央處理器)。
應理解,儘管本文中可能使用用語“第一(first)”、“第二(second)”、“第三(third)”等來闡述各種元件、元件、
區、層及/或區段,然而這些元件、元件、區、層及/或區段不應受這些用語限制。這些用語僅用於區分元件、元件、區、層或區段與其它元件、元件、區、層或區段。因此,在不背離本發明概念的精神及範圍的條件下,可將以下所論述的第一元件、元件、區、層或區段稱為第二元件、元件、區、層或區段。
本文所用術語僅用於闡述特定實施例,而並非旨在限制本發明概念。本文所用用語“實質上(substantially)”、“大約(about)”及類似用語用作近似用語、而並非作為程度用語,並且旨在考慮到所屬領域中的一般技術人員將知的測量值或計算值的固有偏差。除非上下文中清楚地另外指出,否則本文所用單數形式“一(a及an)”旨在也包含複數形式。還應理解,當在本說明書中使用用語“包括(comprises及/或comprising)時,是指明所述特徵、整數、步驟、操作、元件及/或元件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、元件及/或其群組的存在或添加。本文所用用語“及/或(and/or)”包含相關列出項中的一個或多個項的任意及所有組合。當例如“...中的至少一者(at least one of)”等表達出現在一系列元件之前時是修飾整個系列的元件而並非修飾所述系列中的個別元件。另外,在闡述本發明概念的實施例時使用“可(may)”是指代“本發明的一個或多個實施例”。另外,用語“示例性(exemplary)”旨在指實例或例示。本文所用用語“使用(use)”、“正使用(using)”及“被使用(used)”可被視為分別與用語“利用(utilize)”、“正利用(utilizing)”及“被利用(utilized)”同義。
應理解,當稱一元件或層位於另一元件或層“上
(on)”、“連接到(connected to)”、“耦合到(coupled to)”或“鄰近於(adjacent to)”另一元件或層時,所述元件或層可“直接位於另一元件或層上(directly on)”、“直接連接到(directly connected to)”、“直接耦合到(directly coupled to)”或“直接鄰近於(directly adjacent to)”另一元件或層,抑或可存在一個或多個中間元件或層。相比之下,當稱一元件或層“直接位於另一元件或層上”、“直接連接到”、“直接耦合到”或“緊鄰於(immediately adjacent to)”另一元件或層時,則不存在中間元件或層。
本文所述任意數值範圍旨在包括歸入所述範圍內的相同數值精度的所有子範圍。舉例來說,“1.0到10.0”的範圍旨在包括所述最小值1.0與所述最大值10.0之間(且包含所述最小值1.0與所述最大值10.0在內)的所有子範圍,即,具有等於或大於1.0的最小值以及等於或小於10.0的最大值,例如(舉例來說)2.4到7.6。本文所述任意最大數值限制旨在包括歸入其中的所有更低的數值限制,並且本說明書中所述的任意最小數值限制旨在包括歸入其中的所有更高的數值限制。
儘管本文已具體闡述並示出了用於分散式糾刪編碼的系統及方法的示例性實施例,然而對於所屬領域中的技術人員來說許多潤飾及變化將顯而易見。因此,應理解,根據本發明原理所構想的用於分散式糾刪編碼的系統及方法可採用除本文所具體闡述的方式之外的其他方式實施。在以上權利要求書及其等效範圍中也對本發明加以定義。
110:乙太網路固態驅動器機殼
120:應用
130:作業系統/檔案系統
140:跨架構快速非揮發性記憶體驅動器
Claims (20)
- 一種用於將資料儲存在儲存裝置陣列中的方法,包括:由所述儲存裝置陣列的第一儲存裝置從主機電腦接收寫入命令,所述寫入命令包括將在所述第一儲存裝置中的邏輯塊位址處寫入到所述第一儲存裝置的寫入資料;由所述第一儲存裝置取回被儲存在所述邏輯塊位址處的老資料;由所述第一儲存裝置自所述老資料及所述寫入資料計算出局部同位碼,所述局部同位碼是如下的數字:當所述數字被與老同位碼一起評估時,得到新同位碼,所述老同位碼是用於包括所述老資料且展布在整個所述儲存裝置陣列中的資料的老虛擬條的資料保護碼,所述新同位碼是用於展布在整個所述儲存裝置陣列中且包括所述寫入資料而非包括所述老資料的資料的新虛擬條的資料保護碼;由所述儲存裝置陣列的第二儲存裝置將所述老同位碼與所述局部同位碼一起評估以產生所述新同位碼;由所述儲存裝置陣列的第三儲存裝置儲存所述新同位碼;以及由所述第一儲存裝置儲存所述寫入資料。
- 如申請專利範圍第1項所述的方法,其中所述第三儲存裝置是如同所述第二儲存裝置的相同儲存裝置。
- 如申請專利範圍第1項所述的方法,更包括: 由所述第一儲存裝置計算所述第二儲存裝置的識別符;判斷所述第二儲存裝置的所述識別符是否不同於所述第一儲存裝置的識別符;以及當所述第二儲存裝置的所述識別符不同於所述第一儲存裝置的所述識別符時,向所述第二儲存裝置發送包括所述局部同位碼的同位消息。
- 如申請專利範圍第3項所述的方法,其中所述寫入命令還包括命名空間識別符,且計算所述第二儲存裝置的所述識別符包括:基於所述命名空間識別符從命名空間偏移量表獲得命名空間偏移量;以及將虛擬條識別符作為所述命名空間偏移量與所述邏輯塊位址之和進行計算。
- 如申請專利範圍第4項所述的方法,其中計算所述第二儲存裝置的所述識別符更包括:由所述第一儲存裝置從所述第一儲存裝置中的第一表取回步幅大小;以及計算:所述虛擬條識別符取模於所述步幅大小。
- 如申請專利範圍第5項所述的方法,其中向所述第二儲存裝置發送所述同位消息包括: 由所述第一儲存裝置從所述第一儲存裝置中的第二表取回所述第二儲存裝置的位址;以及將所述同位消息發送到所述第二儲存裝置的所述位址。
- 如申請專利範圍第6項所述的方法,其中所述第一儲存裝置是乙太網路儲存裝置;所述第二儲存裝置是乙太網路儲存裝置;且所述第二儲存裝置的所述位址是所述第二儲存裝置的乙太網路位址。
- 如申請專利範圍第6項所述的方法,更包括:由儲存系統管理電路將所述第二儲存裝置的所述位址儲存在所述第一儲存裝置中的所述第二表中。
- 如申請專利範圍第8項所述的方法,更包括:由所述儲存系統管理電路將所述步幅大小儲存在所述第一表中。
- 如申請專利範圍第6項所述的方法,其中所述第一儲存裝置連接到快速周邊元件連接交換機;所述第二儲存裝置連接到所述快速周邊元件連接交換機;且所述第二儲存裝置的所述位址是所述第二儲存裝置的快速周邊元件連接位址。
- 如申請專利範圍第1項所述的方法,其中所述老同位碼及所述新同位碼中的每一者是在資料保護系統中使用的資料保護碼,所述資料保護系統選自由獨立磁碟冗餘陣列4、獨立磁碟的冗餘陣列5、獨立磁碟冗餘陣列6及糾刪碼資料保護系統組成的群組。
- 如申請專利範圍第1項所述的方法,其中所述第一儲存裝置連接到儲存介面交換機,所述方法更包括:在所述第一儲存裝置故障或斷開時:由儲存系統管理電路對所述儲存介面交換機進行重新配置以將被定址到所述第一儲存裝置的儲存命令路由到所述儲存系統管理電路;以及回應於所接收的儲存命令,由所述儲存系統管理電路通過所述儲存介面交換機發送與假如所述第一儲存裝置存在且正確操作時所述第一儲存裝置所將發送的相同的命令完成。
- 如申請專利範圍第12項所述的方法,更包括:由所述儲存系統管理電路恢復先前儲存在所述第一儲存裝置上的資料;以及將已恢復的所述資料儲存在第四儲存裝置上。
- 如申請專利範圍第1項所述的方法,其中所述第一儲存裝置連接到儲存介面交換機,所述方法更包括:在所述第一儲存裝置故障或斷開時:由儲存系統管理電路對所述儲存介面交換機進行重新配置,以將被定址到所述第一儲存裝置的儲存命令路由到第四儲存裝置;以及回應於所接收的儲存命令,由所述第四儲存裝置通過所述儲存介面交換機發送與假如所述第一儲存裝置存在且正常操作時所述第一儲存裝置所將發送的相同的命令完成。
- 如申請專利範圍第1項所述的方法,其中所述第一儲存裝置連接到儲存介面交換機,所述方法更包括:在所述第一儲存裝置中出現離散故障且接收到讀取命令時:由所述第一儲存裝置恢復受到所述離散故障影響的資料;以及回應於所述讀取命令,由所述第一儲存裝置通過所述儲存介面交換機發送與假如未發生所述離散故障時所述第一儲存裝置所將發送的相同的命令完成。
- 如申請專利範圍第1項所述的方法,其中所述第一儲存裝置連接到儲存介面交換機,所述方法更包括:在所述第一儲存裝置中出現離散故障且接收到讀取命令時:由儲存系統管理電路恢復受到所述離散故障影響的資料;以及回應於所述讀取命令,由所述儲存系統管理電路通過所述儲存介面交換機發送與假如未發生所述離散故障時所述第一儲存裝置所將發送的相同的命令完成。
- 一種用於儲存資料的系統,所述系統包括儲存裝置陣列,所述系統被配置成:由所述儲存裝置陣列的第一儲存裝置從主機電腦接收寫入命令,所述寫入命令包括將在所述第一儲存裝置中的邏輯塊位址處寫入到所述第一儲存裝置的寫入資料;由所述第一儲存裝置取回被儲存在所述邏輯塊位址處的老資料; 由所述第一儲存裝置自所述老資料及所述寫入資料計算出局部同位碼,所述局部同位碼是如下的數字:當所述數字被與老同位碼一起評估時,得到新同位碼,所述老同位碼是用於包括所述老資料且展布在整個所述儲存裝置陣列中的資料的老虛擬條的資料保護碼,所述新同位碼是用於展布在整個所述儲存裝置陣列中且包括所述寫入資料而非包括所述老資料的資料的新虛擬條的資料保護碼;由所述儲存裝置陣列的第二儲存裝置將所述老同位碼與所述局部同位碼一起評估以產生所述新同位碼;由所述儲存裝置陣列的第三儲存裝置儲存所述新同位碼;以及由所述第一儲存裝置儲存所述寫入資料。
- 如申請專利範圍第17項所述的系統,其中所述第三儲存裝置是如同所述第二儲存裝置的相同儲存裝置。
- 如申請專利範圍第17項所述的系統,更被配置成:由所述第一儲存裝置計算所述第二儲存裝置的識別符;判斷所述第二儲存裝置的所述識別符是否不同於所述第一儲存裝置的識別符;以及當所述第二儲存裝置的所述識別符不同於所述第一儲存裝置的所述識別符時,向所述第二儲存裝置發送包括所述局部同位碼的同位消息。
- 如申請專利範圍第19項所述的系統,其中計算所述第二儲存裝置的所述識別符包括: 由所述第一儲存裝置從所述第一儲存裝置中的第一表取回步幅大小;以及計算:所述邏輯塊位址取模於所述步幅大小。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762543789P | 2017-08-10 | 2017-08-10 | |
US62/543,789 | 2017-08-10 | ||
US15/789,884 | 2017-10-20 | ||
US15/789,884 US10585749B2 (en) | 2017-08-10 | 2017-10-20 | System and method for distributed erasure coding |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201911041A TW201911041A (zh) | 2019-03-16 |
TWI746845B true TWI746845B (zh) | 2021-11-21 |
Family
ID=65275031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107115575A TWI746845B (zh) | 2017-08-10 | 2018-05-08 | 用於儲存資料的系統以及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10585749B2 (zh) |
JP (1) | JP7084243B2 (zh) |
KR (1) | KR102279723B1 (zh) |
CN (1) | CN109388515B (zh) |
TW (1) | TWI746845B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10620855B2 (en) * | 2016-09-06 | 2020-04-14 | Samsung Electronics Co., Ltd. | System and method for authenticating critical operations on solid-state drives |
JP6652647B2 (ja) * | 2016-09-16 | 2020-02-26 | 株式会社日立製作所 | ストレージシステム |
US10635609B2 (en) | 2018-03-02 | 2020-04-28 | Samsung Electronics Co., Ltd. | Method for supporting erasure code data protection with embedded PCIE switch inside FPGA+SSD |
US10990554B2 (en) | 2018-03-02 | 2021-04-27 | Samsung Electronics Co., Ltd. | Mechanism to identify FPGA and SSD pairing in a multi-device environment |
KR20200108650A (ko) * | 2019-03-11 | 2020-09-21 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
GB201905209D0 (en) * | 2019-04-12 | 2019-05-29 | Vaion Ltd | Method of strong items of data |
CN112543920B (zh) * | 2019-07-22 | 2023-02-10 | 华为技术有限公司 | 数据重构的方法、装置、计算机设备、存储介质及系统 |
US11334434B2 (en) | 2020-02-19 | 2022-05-17 | Seagate Technology Llc | Multi-level erasure system with cooperative optimization |
US11609869B2 (en) | 2020-07-14 | 2023-03-21 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for time synchronized storage delivery |
KR20220058224A (ko) * | 2020-10-30 | 2022-05-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이에 포함된 메모리 컨트롤러의 동작 방법 |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
US20230305713A1 (en) * | 2022-03-23 | 2023-09-28 | Samsung Electronics Co., Ltd. | Client and network based erasure code recovery |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109616A1 (en) * | 2006-10-31 | 2008-05-08 | Taylor James A | System and method for optimizing write operations in storage systems |
US20130097471A1 (en) * | 2010-01-04 | 2013-04-18 | Micron Technology, Inc. | Error correction in a stacked memory |
TW201432458A (zh) * | 2012-11-15 | 2014-08-16 | Samsung Electronics Co Ltd | 記憶體裝置中改變部分資料的記憶體控制器以及其改變部分資料的方法 |
TWI506423B (zh) * | 2010-11-16 | 2015-11-01 | Micron Technology Inc | 用以執行並行讀取及寫入記憶體操作之方法及裝置 |
CN105045525A (zh) * | 2014-04-21 | 2015-11-11 | 三星电子株式会社 | 存储控制器、存储系统及操作存储控制器的方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324579A (ja) * | 1992-05-25 | 1993-12-07 | Hitachi Ltd | 分散ファイルシステム及び記憶装置 |
EP0701715A4 (en) * | 1993-06-04 | 1999-11-17 | Network Appliance Corp | METHOD FOR PROVIDING PARITY IN A RAID SUBSYSTEM USING REMANENT MEMORY |
CA2134016A1 (en) * | 1994-01-07 | 1995-07-08 | Peter B. Bandy | Data storage device and method of operation |
US6742081B2 (en) * | 2001-04-30 | 2004-05-25 | Sun Microsystems, Inc. | Data storage array employing block checksums and dynamic striping |
JP3702231B2 (ja) * | 2002-01-31 | 2005-10-05 | 株式会社東芝 | ディスクアレイ装置及び同装置における動的記憶容量拡張方法 |
US7389393B1 (en) * | 2004-10-21 | 2008-06-17 | Symantec Operating Corporation | System and method for write forwarding in a storage environment employing distributed virtualization |
JP2007179297A (ja) * | 2005-12-28 | 2007-07-12 | Fujitsu Ltd | Raid5のパリティチェック強化方法、装置及びプログラム |
TW200727167A (en) * | 2006-01-02 | 2007-07-16 | Via Tech Inc | Disk array data arrangement structure and its data access method |
US8321597B2 (en) | 2007-02-22 | 2012-11-27 | Super Talent Electronics, Inc. | Flash-memory device with RAID-type controller |
US8751862B2 (en) * | 2007-08-10 | 2014-06-10 | Dell Products L.P. | System and method to support background initialization for controller that supports fast rebuild using in block data |
US8402217B2 (en) * | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
WO2011044515A2 (en) * | 2009-10-09 | 2011-04-14 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
KR101695991B1 (ko) * | 2011-09-06 | 2017-01-12 | 한국전자통신연구원 | 파일 데이터 분산 저장 장치 및 방법 |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
KR20150105323A (ko) * | 2013-01-08 | 2015-09-16 | 바이올린 메모리 인코포레이티드 | 데이터 스토리지 방법 및 시스템 |
JP2014203233A (ja) * | 2013-04-04 | 2014-10-27 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおいてデータを更新する方法 |
US9652421B2 (en) * | 2014-04-25 | 2017-05-16 | Hitachi, Ltd. | Computer system and coupling configuration control method |
US9384093B1 (en) | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US9274720B1 (en) | 2014-09-15 | 2016-03-01 | E8 Storage Systems Ltd. | Distributed RAID over shared multi-queued storage devices |
US9977734B2 (en) * | 2014-12-11 | 2018-05-22 | Toshiba Memory Corporation | Information processing device, non-transitory computer readable recording medium, and information processing system |
KR20160075229A (ko) * | 2014-12-19 | 2016-06-29 | 삼성전자주식회사 | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 |
KR20160083762A (ko) * | 2015-01-02 | 2016-07-12 | 삼성전자주식회사 | 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템 |
US9880755B2 (en) * | 2015-02-25 | 2018-01-30 | Western Digital Technologies, Inc. | System and method for copy on write on an SSD |
US9678665B2 (en) | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
US10061694B2 (en) | 2015-09-07 | 2018-08-28 | Toshiba Memory Corporation | Memory system and method for controlling non-volatile memory |
KR102413755B1 (ko) | 2015-11-20 | 2022-06-28 | 삼성전자주식회사 | 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법 |
-
2017
- 2017-10-20 US US15/789,884 patent/US10585749B2/en active Active
-
2018
- 2018-04-26 KR KR1020180048726A patent/KR102279723B1/ko active IP Right Grant
- 2018-05-08 TW TW107115575A patent/TWI746845B/zh active
- 2018-07-10 CN CN201810753492.XA patent/CN109388515B/zh active Active
- 2018-07-30 JP JP2018142656A patent/JP7084243B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109616A1 (en) * | 2006-10-31 | 2008-05-08 | Taylor James A | System and method for optimizing write operations in storage systems |
US20130097471A1 (en) * | 2010-01-04 | 2013-04-18 | Micron Technology, Inc. | Error correction in a stacked memory |
TWI506423B (zh) * | 2010-11-16 | 2015-11-01 | Micron Technology Inc | 用以執行並行讀取及寫入記憶體操作之方法及裝置 |
TW201432458A (zh) * | 2012-11-15 | 2014-08-16 | Samsung Electronics Co Ltd | 記憶體裝置中改變部分資料的記憶體控制器以及其改變部分資料的方法 |
CN105045525A (zh) * | 2014-04-21 | 2015-11-11 | 三星电子株式会社 | 存储控制器、存储系统及操作存储控制器的方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190017630A (ko) | 2019-02-20 |
KR102279723B1 (ko) | 2021-07-21 |
TW201911041A (zh) | 2019-03-16 |
US10585749B2 (en) | 2020-03-10 |
JP7084243B2 (ja) | 2022-06-14 |
US20190050289A1 (en) | 2019-02-14 |
CN109388515A (zh) | 2019-02-26 |
CN109388515B (zh) | 2023-11-03 |
JP2019036301A (ja) | 2019-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI746845B (zh) | 用於儲存資料的系統以及方法 | |
US10613930B2 (en) | Global error recovery system | |
US9613656B2 (en) | Scalable storage protection | |
US9026729B1 (en) | Data recovery after triple disk failure | |
US9367394B2 (en) | Decoupled reliability groups | |
CN109643258B (zh) | 使用高速率最小存储再生擦除代码的多节点修复 | |
US8327080B1 (en) | Write-back cache protection | |
US20170161146A1 (en) | Methods and systems for rebuilding data subsequent to the failure of a storage unit | |
US20190354295A1 (en) | Managing storage array configuration | |
US9990263B1 (en) | Efficient use of spare device(s) associated with a group of devices | |
US10831401B2 (en) | Method, device and computer program product for writing data | |
US11321202B2 (en) | Recovering storage devices in a storage array having errors | |
JP2018508073A (ja) | データ除去、割り当て、及び再構築 | |
US10324782B1 (en) | Hiccup management in a storage array | |
US20190196911A1 (en) | Computer system | |
US10929229B2 (en) | Decentralized RAID scheme having distributed parity computation and recovery | |
US20230068214A1 (en) | Storage system | |
JP2021086289A (ja) | 分散ストレージシステムおよび分散ストレージシステムのパリティ更新方法 | |
JP4843695B2 (ja) | ディスクアレイ制御装置及びディスクアレイ装置 | |
US9886344B2 (en) | Storage system and storage apparatus | |
US10810082B2 (en) | Networked storage redundancy scheme | |
US20200363958A1 (en) | Efficient recovery of resilient spaces | |
US11593207B2 (en) | Storage system having RAID stripe metadata | |
JP2023163298A (ja) | 記憶システム及び障害対処方法 | |
CN115202561A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 |