TW202341702A - 執行抹除碼恢復的方法及系統 - Google Patents

執行抹除碼恢復的方法及系統 Download PDF

Info

Publication number
TW202341702A
TW202341702A TW112107318A TW112107318A TW202341702A TW 202341702 A TW202341702 A TW 202341702A TW 112107318 A TW112107318 A TW 112107318A TW 112107318 A TW112107318 A TW 112107318A TW 202341702 A TW202341702 A TW 202341702A
Authority
TW
Taiwan
Prior art keywords
data
erasure code
host
code recovery
command
Prior art date
Application number
TW112107318A
Other languages
English (en)
Inventor
羅納德 C 李
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 TW202341702A publication Critical patent/TW202341702A/zh

Links

Images

Classifications

    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/1016Performance improvement
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer And Data Communications (AREA)
  • Facsimiles In General (AREA)

Abstract

提供一種用於基於客戶端和網路的抹除碼恢復的系統及方法。在一些實施例中,所述方法包括:由儲存節點接收獲取命令;由儲存節點使用遠程直接記憶體存取將由獲取命令指定的資料儲存於主機的記憶體中由獲取命令指定的記憶體位址處;由儲存節點發送指示獲取命令被成功執行的響應;以及由主機基於資料實行抹除碼恢復。

Description

基於客戶端和網絡的糾刪碼恢復
根據本揭露實施例的一或多個態樣是有關於儲存,且更具體而言,是有關於一種用於基於客戶端和網路的抹除碼恢復的系統及方法。
對於頻寬密集型儲存工作負載,基於抹除碼來恢復丟失的資料可能會在儲存叢集中(例如,在儲存節點的叢集中)導致高的開銷(overhead)。對於其中可能經由網路發送資料的分佈式系統或向外擴展(scale-out)系統,此種抹除碼恢復開銷可能會增大。基於儲存叢集的抹除恢復亦可能導致高的潛時(latency)。
本揭露的態樣便是有關於此種總體技術環境。
在一些實施例中,抹除碼恢復可在主機或客戶端中實行,而非由儲存系統(例如,儲存叢集)的儲存節點實行。主機可包括圖形處理單元(GPU),所述GPU可用以當儲存節點出現故障時基於自維持運行的節點接收的資料區塊及同位資料區塊來實行抹除碼恢復。在一些實施例中,能力足夠的網路介面卡(Network Interface Card,NIC)可實行抹除碼恢復並儲存資料(包括GPU的記憶體中的經恢復資料),使得節點的故障及資料的恢復對GPU而言是透明的。
根據本揭露的實施例,提供一種方法,所述方法包括:由儲存節點接收獲取命令;由儲存節點使用遠程直接記憶體存取於主機的記憶體中將由獲取命令指定的資料儲存於由獲取命令指定的記憶體位址處;由儲存節點發送指示獲取命令被成功執行的響應;以及由主機基於資料實行抹除碼恢復。
在一些實施例中,發送獲取命令包括經由傳輸控制協定(TCP)插座發送獲取命令。
在一些實施例中,儲存資料包括經由乙太網路上使用遠程直接記憶體存取來儲存資料。
在一些實施例中,由儲存節點儲存資料包括使用融合乙太網路上遠程直接記憶體存取(RoCE)來儲存資料。
在一些實施例中,獲取命令包括第一資料區塊的第一分散收集列表。
在一些實施例中,獲取命令包括同位位元區塊的第一分散收集列表。
在一些實施例中,主機包括圖形處理單元(GPU),且實行抹除碼恢復包括由GPU實行抹除碼恢復。
在一些實施例中,實行抹除碼恢復包括:將同位資料暫時儲存於共享同位記憶體池的區中;以及在完成抹除碼恢復時釋放共享同位記憶體池的區。
在一些實施例中,主機包括網路介面卡(NIC),且實行抹除碼恢復包括由NIC實行抹除碼恢復。
根據本揭露的實施例,提供一種系統,所述系統包括:主機,包括處理電路;以及儲存節點,包括處理電路,所述儲存節點的所述處理電路用以:接收獲取命令;使用遠程直接記憶體存取於主機的記憶體中將由獲取命令指定的資料儲存於由獲取命令指定的記憶體位址處;以及發送指示獲取命令被成功執行的響應,其中主機的處理電路用以基於資料實行抹除碼恢復。
在一些實施例中,發送獲取命令包括經由傳輸控制協定(TCP)插座發送獲取命令。
在一些實施例中,儲存資料包括經由乙太網路上使用遠程直接記憶體存取來儲存資料。
在一些實施例中,儲存資料包括使用融合乙太網路上遠程直接記憶體存取(RoCE)來儲存資料。
在一些實施例中,獲取命令包括第一資料區塊的第一分散收集列表。
在一些實施例中,獲取命令包括同位位元區塊的第一分散收集列表。
在一些實施例中,主機的處理電路包括圖形處理單元(GPU),且實行抹除碼恢復包括由GPU實行抹除碼恢復。
在一些實施例中,實行抹除碼恢復包括:將同位資料暫時儲存於共享同位記憶體池的區中;以及在完成抹除碼恢復時釋放共享同位記憶體池的區。
在一些實施例中,主機包括網路介面卡(NIC),且實行抹除碼恢復包括由NIC實行抹除碼恢復。
根據本揭露的實施例,提供一種系統,所述系統包括:主機,包括處理構件;以及儲存節點,包括處理構件,所述儲存節點的處理構件用以:接收獲取命令;使用遠程直接記憶體存取於主機的記憶體中將由獲取命令指定的資料儲存於由獲取命令指定的記憶體位址處;以及發送指示獲取命令被成功執行的響應,其中主機的處理構件用以基於資料實行抹除碼恢復。
在一些實施例中,主機包括網路介面卡(NIC),且實行抹除碼恢復包括由NIC實行抹除碼恢復。
以下結合附圖陳述的詳細說明旨在作為對根據本揭露提供的基於客戶端和網路的抹除碼恢復的系統及方法的示例性實施例的說明,而不旨在表示本揭露可被構建或利用的唯一形式。本說明結合所示實施例陳述本揭露的特徵。然而應理解,可藉由亦旨在囊括於本揭露的範圍內的不同實施例來達成相同或等效的功能及結構。如本文中其他地方所表明,相同的元件編號旨在指示相同的元件或特徵。
一些文件及對象儲存協定可能不支援應用主機或客戶端上的抹除碼恢復(例如,用於在儲存節點故障之後恢復資料的資料恢復操作)。此種儲存解決方案可在將資料返回給主機之前對儲存節點的本地硬體系統實行抹除碼恢復,此乃因全部儲存裝置皆駐留於本地。然而,此種系統可能無法處置節點故障,且可能要求每一節點作為獨立系統是容錯的,此種要求可能大大增加複雜性。對於某些類型的節點級抹除編碼,在儲存節點處處置抹除碼恢復可能需要高的開銷,此乃因(i)重建會導致網路開銷;以及(ii)涉及藉由系統網路及硬體來與資料交互的次數。在儲存節點處恢復資料亦可能顯著增加此種恢復操作導致的潛時。
在一些實施例中,可藉由將資料恢復負擔轉移至應用主機(或資料儲存系統的「客戶端」)來減少儲存節點上的開銷及實行抹除碼恢復時導致的潛時。此種實施例可更涉及利用遠程直接記憶體存取(remote direct memory access,RDMA)協定來將資料直接放置於例如GPU記憶體等應用主機記憶體中。在一些實施例中,可對例如亞馬遜(Amazon)S3協定等資料交換協定進行擴展以在不需要明確知曉對象資料格式的情形中支援在應用主機上重建抹除編碼資料。此種實施例可提供(i)對發起者或接收主機上的抹除編碼資料的有效故障恢復;(ii)使用例如網路介面卡(network interface card,NIC)或交換機等網路組件對抹除編碼資料的有效故障恢復;以及(iii)減少用於對抹除編碼資料進行處置的應用開銷的方法。一些實施例包括使用網路組件進行即時抹除碼恢復的方法。
舉例而言,在一些實施例中,抹除碼恢復可在主機或客戶端中實行,而非由儲存系統的儲存節點實行。主機可包括圖形處理單元(Graphics Processing Unit,GPU),當儲存節點發生故障時,所述GPU可用以基於自維持運行的節點接收的資料區塊及同位資料區塊來實行抹除碼恢復。在一些實施例中,能力足夠的網路介面卡(NIC)可替代地實行抹除碼恢復並儲存資料(包括GPU的記憶體中的經恢復資料),使得節點的故障及資料的恢復對GPU而言是透明的。本文中所述的「資料區塊」及「同位資料區塊」是大量資料及大量同位資料,其可與可為儲存裝置定義的「區塊」(例如,固態驅動機中的物理區塊)一致或不一致。
圖1A示出包括連接至儲存系統102的主機100的系統的方塊圖。圖1B示出在一些實施例中請求105(包括命令,例如S3命令)的資料格式。在所示實例中,請求105是獲取命令(get command)(由主機用來自儲存系統請求資料的命令)。可由主機將請求發送至儲存節點中的一者,儲存節點中的所述一者可被定名為負責對主機與其他儲存節點之間的某些通訊(例如請求105及響應130(圖1C;以下將進一步詳細論述))進行中繼的「聯繫節點」。在圖1B的實例中,主機知道儲存節點(節點5,如以下進一步的實例中所示)已發生故障,且獲取命令包括分散-收集列表(scatter-gather list)110及同位資料區塊的分散-收集列表115(在圖1B中標識為「SGL-P1」、「SGL-P2」及「SGL-PN」),分散-收集列表110包括資料區塊的列表元素(在圖1B中標識為「SGL-1」、「SGL-2」及「SGL-N」)。提取同位資料區塊,使得本應通常由故障節點發送的資料可由主機恢復,如以下進一步詳細論述。分散收集列表是以下元素的列表:所述元素中的每一者包括目的記憶體位址,所述目的記憶體位址可為主機記憶體(例如,主機圖形處理單元(GPU)記憶體120)中的將使用遠程直接記憶體存取來儲存對應資料的位址。可將資料區塊儲存於如圖所示的GPU記憶體中,且可將同位資料區塊儲存於共享同位記憶體池125(其亦可位於GPU記憶體中)中由同位資料區塊的分散收集列表標識的位址處,如以下進一步詳細論述。
圖1C示出響應130(例如,S3響應)的資料格式。在資料區塊及同位資料區塊已被複製至主機之後,可由聯繫節點(其可自其他節點收集響應中所包含的資料中的一些資料)將響應發送至主機,以指示請求被成功完成(例如,向主機返回所請求的資料,或者返回用於重構所請求的資料的足夠的資料及同位資料)。響應可包括同位資料(在圖1C中標識為「SGL-P1」、「SGL-P2」及「SGL-PN」)。
如上所述,儲存節點與主機之間的資料傳送可使用遠程直接記憶體存取(例如,聚合乙太網路上遠程直接記憶體存取(remote direct memory access over converged ethernet,RoCE))來實行,或者經由適合用於遠程直接記憶體存取的另一種類型的連接(例如,無限頻寬 TM(Infiniband TM))來實行。請求105與響應130可經由單獨的通道(例如,經由傳輸控制協定(Transmission Control Protocol,TCP)插座(socket))發送。圖2A示出可用於在儲存節點中對資料進行佈局的方式(例如,跨節點佈置成條帶(stripe));圖2A亦示出可將自儲存節點擷取的資料區塊及同位資料區塊儲存於主機的對象記憶體中,且可將同位資料區塊儲存於主機的同位記憶體中。主機記憶體中的資料的佈置可根據分散收集列表,如以下進一步詳細論述。如上所述,主機可包括具有專用記憶體(或「GPU記憶體」)的圖形處理單元(GPU),所述GPU可由主機用於進行資料處理(例如,使用自儲存節點擷取的資料來實行)。GPU亦可實行抹除碼恢復,或者如以下進一步詳細論述,抹除碼恢復可由其他硬體(例如由智慧型NIC)實行。可將來自五個節點(節點0至節點4)的資料儲存於條帶中(第一條帶開始於位址0x10000000處,第二條帶開始於位址0x10200000處,且依此類推),每一條帶的一部分最初丟失,此乃因在圖2A的實例中,第六個節點(節點5)已發生故障。由於此原因,可將同位資料區塊儲存至共享同位記憶體池125,且GPU根據包括同位資料區塊的資料重構原本若第六節點尚未發生故障將由第六節點發送的資料,且將所述資料儲存於原本若第六節點尚未發生故障第六節點將儲存資料的記憶體位置中。一旦抹除碼恢復完成,GPU便可釋放共享同位記憶體池125中用於實行抹除碼恢復的部分;然後,此記憶體便可供用於其他抹除碼恢復操作。
可將藉由遠程直接記憶體存取傳輸至主機的資料封裝為可被稱為「遠程直接記憶體存取單元」的區塊(例如,包括所述區塊或由所述區塊組成)。如圖2B中所示,每一遠程直接記憶體存取單元可包括頭部(header)215、資料酬載(data payload)220、填充(padding)225及尾部(trailer)230。每一酬載可包括由請求105的分散收集列表中的一者的元素指定的資料量的一部分。頭部215可包括:抹除碼標識符(error code identifier,EC ID)或「參考ID」,指示資料酬載220是哪個條帶的一部分;資料偏移及塊大小,指示資料酬載220將被儲存於記憶體中的何處;抹除碼重建標識符(ID),指示哪些資料將被恢復;以及操作標識符(operation identifier,OP ID),標識將用於抹除碼恢復的演算法。尾部亦可(可選地)包括抹除碼標識符、以及(可選地)用於驗證遠程直接記憶體存取單元是否被無誤地傳輸的循環冗餘檢查(cyclic redundancy check,CRC)字元。在一些實施例中,不存在尾部。
若主機所請求的資料總量不是遠程直接記憶體存取單元的總酬載大小的倍數,則可在例如因應於請求105而發送的最後一個遠程直接記憶體存取單元中包括填充225。
圖3A是藉由網路交換機315連接至多個儲存節點310的主機100的方塊圖。主機包括中央處理單元(central processing unit,CPU)312、主記憶體315(連接至CPU 312)、NIC 320(可為如圖所示的智慧型NIC)、GPU 325及GPU記憶體330(連接至GPU 325)。NIC 320可連接至主記憶體315且連接至GPU記憶體330,且NIC 320可用以實行遠程直接記憶體存取操作,以將資料寫入至主記憶體315及寫入至GPU記憶體330。所述多個儲存節點310中的每一個可藉由一或多個網路(例如乙太網路)連接(例如藉由一或多個網路交換機217)連接至主機100。每一網路節點可包括處理電路335(為了易於例示,僅在儲存節點310中的一者中明確示出)及持久儲存器(例如,快閃記憶體)。
在操作中,可將GPU記憶體330分區成包括對象記憶體340及共享同位記憶體池125。當所有的儲存節點310皆可運行時,由CPU 312發送至儲存節點310的獲取請求可使每一儲存節點將資料發送至對象記憶體340的相應區,在所述相應區處,資料可由GPU 325進行進一步處理。若儲存節點310中的一者已發生故障,則維持運行的儲存節點310中的每一者可將資料發送至(i)對象記憶體340的相應區、或者(ii)(對於儲存同位資料的儲存節點310)發送至共享同位記憶體池125。在此種情形中,由儲存節點310放置於對象記憶體340中的資料可具有故障節點原本將在其中放置資料的一或多個間隙(在由資料區塊的分散收集列表指定的所述一或多個記憶體區中)。GPU 325然後可基於對象記憶體340及共享同位記憶體池125中的資料實行抹除碼恢復。共享同位記憶體池125可用作暫時共享同位緩衝器,乃因如上所述,一旦抹除碼恢復完成,緩衝器便可被釋放以供另一抹除碼恢復操作使用,而GPU 325處理對象記憶體340中的資料。當接收到每一遠程直接記憶體存取單元時,NIC 320可在主記憶體315中儲存頭部215及尾部230。當所有的頭部215及尾部230已儲存於主記憶體315中時,主機100然後可推斷傳送完成(頭部或尾部的缺失可表示原本應發送頭部或尾部的節點可能已發生故障)。儲存同位資料的儲存節點310可因應於接收到包含同位資料區塊的分散收集列表的獲取命令而將同位資料儲存於共享同位記憶體池125中。
在一些實施例中,抹除碼恢復可由例如NIC 320(在此種實施例中,NIC 320可被稱為「智慧型NIC」)中的專用硬體來實行,而非由執行用於此種目的的軟體的GPU 325來實行。在此種實施例中,主機100(例如,CPU 312)可通知NIC 320儲存節點310已發生故障,且將NIC 320配置成實行抹除碼恢復,以恢復原本通常由已發生故障的儲存節點310生成的資料。每一入站(inbound)遠程直接記憶體存取單元可由NIC 320接收,且NIC 320可基於NIC 320接收的資料(包括同位資料)實行抹除碼恢復,且在對象記憶體340中儲存(i)NIC 320自維持運行的儲存節點310接收的(非同位)資料區塊、以及(ii)NIC 320基於其自維持運行的儲存節點310接收的資料區塊及同位資料區塊恢復的資料區塊。在此種實施例中,可能不存在共享同位記憶體池125且GPU 325可能不參與抹除碼恢復;此外,抹除碼恢復對於GPU 325而言可為透明的,GPU 325可在對象記憶體340中接收假若無儲存節點310發生故障其原本應接收到的相同資料。
當發送填充資料225時,填充資料225可由儲存節點310定址至主機記憶體的區(例如,為此目的分配的主記憶體315的區或GPU記憶體330的區),此區可被稱為「填充資料空間」345(「填充資料空間」345被示出於主記憶體315之外及GPU記憶體330之外,此乃因「填充資料空間」345不一定位於兩者中的任一者內)。CPU 312及GPU 325可忽略(例如,不讀取)填充資料空間345中的資料。
圖3B示出抹除碼恢復過程的進一步細節。當主機100知道儲存節點310(例如,第四儲存節點,即儲存節點3)已發生故障時,主機100對NIC 320進行程式化以實行抹除碼恢復,例如,藉由使用如圖所示的抹除碼恢復表350對NIC 320進行配置。抹除碼恢復表350可包括:錯誤碼標識符(EC ID),標識與資料相關的輸入-輸出操作;操作標識符(OP ID),指定用於實行資料恢復的演算法(例如,互斥或(exclusive or,XOR)或高氏場(Galois field));條帶單元(或「塊」)標識符及條帶單元的大小;重建標識符;以及緩衝器標識符,標識對象記憶體340中將儲存重建資料的位址。NIC 320(或NIC的處理電路335)然後可恢復第四儲存節點原本應儲存於對象記憶體340中的資料(例如,在355處使用XOR或高氏場),根據抹除碼恢復表350確定資料將被儲存於對象記憶體340中的何處,並相應地儲存經恢復的資料。當使用XOR時,可計算可用資料(來自尚未發生故障的節點的資料及同位資料)的XOR,以產生原本應由發生故障的節點提供的資料。
圖4示出方法的流程圖。在一些實施例中,所述方法包括:在405處,由儲存節點接收獲取命令;在410處,由儲存節點使用遠程直接記憶體存取將由獲取命令指定的資料儲存於主機的記憶體中由獲取命令指定的記憶體位址處;在415處,由儲存節點發送指示獲取命令被成功執行的響應;以及在420處,由主機基於資料實行抹除碼恢復。
如本文中所使用的某事物「的一部分」意指所述事物「的至少一些」,且因此可意指少於所述事物的全部或全部所述事物。如此一來,事物「的一部分」包括作為特殊情形的整個事物,即整個事物是所述事物的一部分的實例。如本文中所使用,當第二數量處於第一數量X的「Y以內」時,意指第二數量至少是X-Y且第二數量至多是X+Y。如本文中所使用,當第二數目處於第一數目的「Y%以內」時,意指第二數目至少是第一數目的(1-Y/100)倍且第二數目至多是第一數目的(1+Y/100)倍。如本文中所使用的用語「或」應被解釋為「及/或」,使得例如,「A或B」意指「A」或「B」或者「A及B」中的任一者。
在本揭露部分的背景技術部分中提供的背景僅被包括來設定上下文,且並不承認此部分的內容是先前技術。所闡述的組件中的任一者或組件的任意組合(例如,在本文中所包括的任何系統圖中)可用於實行本文中所包括的任何流程圖的操作中的一或多者。此外,(i)操作是實例性操作且可涉及未明確涵蓋的各種附加步驟,且(ii)操作的時間次序可發生變化。
在本文中使用用語「處理電路」及「處理構件」中的每一者來意指用於對資料或數位訊號進行處理的硬體、韌體及軟體的任意組合。處理電路硬體可包括例如應用專用積體電路(application specific integrated circuit,ASIC)、通用或專用中央處理單元(CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(GPU)及可程式化邏輯裝置,例如現場可程式化閘陣列(field programmable gate array,FPGA)。在如本文中所使用的處理電路中,每一功能由被配置(即,硬接線)成實行所述功能的硬體來實行,或者由用以執行儲存於非暫時性儲存媒體中的指令的更通用的硬體(例如,CPU)來實行。處理電路可製作於單個印刷電路板(printed circuit board,PCB)上或者分佈於若干互連的PCB之上。處理電路可包含其他處理電路;舉例而言,處理電路可包括在PCB上互連的兩個處理電路、FPGA及CPU。
如本文中所使用,當方法(例如,調整)或第一數量(例如,第一變數)被稱為「基於」第二數量(例如,第二變數)時,其意指第二數量是所述方法的輸入或者影響第一數量,例如,第二數量可為對第一數量進行計算的函數的輸入(例如,唯一的輸入或者若干輸入中的一者),或者第一數量可等於第二數量,或者第一數量可相同於第二數量(例如,儲存於記憶體中的相同的一或多個位置處)。
應理解,儘管可在本文中使用用語「第一」、「第二」、「第三」等來闡述各種元件、組件、區、層及/或區段,但該些元件、組件、區、層及/或區段不應受限於該些用語。該些用語僅用於區分各個元件、組件、區、層或區段。因此,在不背離本發明概念的精神及範圍的條件下,本文中所論述的第一元件、組件、區、層或區段可被稱為第二元件、組件、區、層或區段。
本文中所使用的術語僅出於闡述特定實施例的目的,而不旨在限制本發明概念。如本文中所使用的用語「實質上(substantially)」、「大約(about)」及類似用語用作近似用語而並非用作程度用語,且旨在考慮到此項技術中具有通常知識者將知的量測值或計算值的固有偏差。
除非上下文清楚地另外指明,否則本文中所使用的單數形式「一(a及an)」旨在亦包括複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。如本文中所使用的用語「及/或(and/or)」包括相關所列項中一或多個項的任意及所有組合。例如「…中的至少一者(at least one of)」等表達當出現在一系列元件之後時,是修飾整個系列的元件而並非修飾所述系列的個別元件。此外,在闡述本發明概念的實施例時使用「可(may)」是指「本揭露的一或多個實施例」。另外,用語「示例性的」旨在指實例或例示。本文中所使用的用語「使用(use)」、「正使用(using)」、及「被使用(used)」可被視為分別與用語「利用(utilize)」、「正利用(utilizing)」、及「被利用(utilized)」同義。
應理解,當稱一元件或層位於另一元件或層「上」、「連接至」、「耦合至」或「相鄰於」另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接至、直接耦合至或直接相鄰於所述另一元件或層,或者可存在一或多個中間元件或層。相比之下,當稱一元件或層「直接」位於另一元件或層「上」、「直接連接至」、「直接耦合至」或「直接相鄰於」另一元件或層時,則不存在中間元件或層。
儘管已在本文中具體闡述並示出了用於基於客戶端和網路的抹除碼恢復的系統及方法的示例性實施例,然而許多潤飾及變型將對熟習此項技術者顯而易見。因此,應理解,根據本揭露的原理構建的用於基於客戶端和網路的抹除碼恢復的系統及方法可被實施成不同於本文中所具體闡述者。亦在以下申請專利範圍及其等效範圍中界定本發明。
0、1、2、3、4、5:節點 100:主機 102:儲存系統 105:請求 110、115:分散-收集列表 120:主機圖形處理單元(GPU)記憶體 125:共享同位記憶體池 130:響應 215:頭部 217:網路交換機 220:資料酬載 225:填充/填充資料 230:尾部 310:儲存節點 312:中央處理單元(CPU) 315:主記憶體/網路交換機 320:網路介面卡(NIC) 325:圖形處理單元(GPU) 330:GPU記憶體 335:處理電路 340:對象記憶體 345:填充資料空間 350:抹除碼恢復表 355、405、410、415、420:操作
參照說明書、申請專利範圍及附圖,將會領會及理解本揭露的該些及其他特徵及優點,在附圖中: 圖1A示出根據本揭露實施例的系統的方塊圖,所述系統包括連接至儲存系統的主機。 圖1B是根據本揭露實施例的獲取命令及對應的目的地記憶體區的圖示。 圖1C是根據本揭露實施例的響應的圖示。 圖2A是根據本揭露實施例的資料佈局圖。 圖2B是根據本揭露實施例的遠程直接記憶體存取單元的圖示。 圖2C是根據本揭露實施例的遠程直接記憶體存取單元的頭部及尾部的圖示。 圖3A是根據本揭露實施例的包括儲存節點的系統的方塊圖。 圖3B是根據本揭露實施例的圖3A所示系統在操作中的圖。 圖4是根據本揭露實施例的方法的流程圖。
405、410、415、420:操作

Claims (20)

  1. 一種方法,包括: 由儲存節點接收獲取命令; 由所述儲存節點使用遠程直接記憶體存取於主機的記憶體中將由所述獲取命令指定的資料儲存於由所述獲取命令指定的記憶體位址處; 由所述儲存節點發送指示所述獲取命令被成功執行的響應;以及 由所述主機基於所述資料實行抹除碼恢復。
  2. 如請求項1所述的方法,其中發送所述獲取命令包括經由傳輸控制協定(TCP)插座發送所述獲取命令。
  3. 如請求項1所述的方法,其中所述儲存所述資料包括經由乙太網路上使用遠程直接記憶體存取來儲存所述資料。
  4. 如請求項1所述的方法,其中所述由所述儲存節點儲存所述資料包括使用融合乙太網路上遠程直接記憶體存取(RoCE)來儲存所述資料。
  5. 如請求項1所述的方法,其中所述獲取命令包括第一資料區塊的第一分散收集列表。
  6. 如請求項1所述的方法,其中所述獲取命令包括同位位元區塊的第一分散收集列表。
  7. 如請求項1所述的方法,其中: 所述主機包括圖形處理單元(GPU),且 所述實行所述抹除碼恢復包括由所述圖形處理單元實行抹除碼恢復。
  8. 如請求項1所述的方法,其中所述實行所述抹除碼恢復包括: 將同位資料暫時儲存於共享同位記憶體池的區中,以及 在完成所述抹除碼恢復時釋放所述共享同位記憶體池的所述區。
  9. 如請求項1所述的方法,其中: 所述主機包括網路介面卡(NIC),且 所述實行所述抹除碼恢復包括由所述網路介面卡實行抹除碼恢復。
  10. 一種系統,包括: 主機,包括處理電路;以及 儲存節點,包括處理電路,所述儲存節點的所述處理電路用以: 接收獲取命令; 使用遠程直接記憶體存取於所述主機的記憶體中將由所述獲取命令指定的資料儲存於由所述獲取命令指定的記憶體位址處;以及 發送指示所述獲取命令被成功執行的響應, 其中所述主機的所述處理電路用以基於所述資料實行抹除碼恢復。
  11. 如請求項10所述的系統,其中發送所述獲取命令包括經由傳輸控制協定(TCP)插座發送所述獲取命令。
  12. 如請求項10所述的系統,其中所述儲存所述資料包括經由乙太網路上使用遠程直接記憶體存取來儲存所述資料。
  13. 如請求項10所述的系統,其中所述儲存所述資料包括使用融合乙太網路上遠程直接記憶體存取(RoCE)來儲存所述資料。
  14. 如請求項10所述的系統,其中所述獲取命令包括第一資料區塊的第一分散收集列表。
  15. 如請求項10所述的系統,其中所述獲取命令包括同位位元區塊的第一分散收集列表。
  16. 如請求項10所述的系統,其中: 所述主機的所述處理電路包括圖形處理單元(GPU),且 所述實行所述抹除碼恢復包括由所述圖形處理單元實行抹除碼恢復。
  17. 如請求項10所述的系統,其中所述實行所述抹除碼恢復包括: 將同位資料暫時儲存於共享同位記憶體池的區中,以及 在完成所述抹除碼恢復時釋放所述共享同位記憶體池的所述區。
  18. 如請求項10所述的系統,其中: 所述主機包括網路介面卡(NIC);且 所述實行所述抹除碼恢復包括由所述網路介面卡實行抹除碼恢復。
  19. 一種系統,包括: 主機,包括處理構件;以及 儲存節點,包括處理構件,所述儲存節點的所述處理構件用以: 接收獲取命令; 使用遠程直接記憶體存取將由所述獲取命令指定的資料儲存於所述主機的記憶體中由所述獲取命令指定的記憶體位址處;以及 發送指示所述獲取命令被成功執行的響應 其中所述主機的所述處理構件用以基於所述資料實行抹除碼恢復。
  20. 如請求項19所述的系統,其中: 所述主機包括網路介面卡(NIC);且 所述實行所述抹除碼恢復包括由所述網路介面卡實行抹除碼恢復。
TW112107318A 2022-03-23 2023-03-01 執行抹除碼恢復的方法及系統 TW202341702A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263323009P 2022-03-23 2022-03-23
US63/323,009 2022-03-23
US17/824,638 US20230305713A1 (en) 2022-03-23 2022-05-25 Client and network based erasure code recovery
US17/824,638 2022-05-25

Publications (1)

Publication Number Publication Date
TW202341702A true TW202341702A (zh) 2023-10-16

Family

ID=85556552

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112107318A TW202341702A (zh) 2022-03-23 2023-03-01 執行抹除碼恢復的方法及系統

Country Status (4)

Country Link
US (1) US20230305713A1 (zh)
EP (1) EP4250118A1 (zh)
KR (1) KR20230138394A (zh)
TW (1) TW202341702A (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016138657A1 (en) * 2015-03-05 2016-09-09 Intel Corporation Techniques for storing or accessing key-value item
US10761929B2 (en) * 2017-05-25 2020-09-01 Western Digital Technologies, Inc. Data storage drive rebuild with parity generation offload using peer-to-peer data transfers
US10585749B2 (en) * 2017-08-10 2020-03-10 Samsung Electronics Co., Ltd. System and method for distributed erasure coding
WO2020028801A1 (en) * 2018-08-02 2020-02-06 Burlywood, Inc. Error correction with scatter-gather list data management
US11119803B2 (en) * 2019-05-01 2021-09-14 EMC IP Holding Company LLC Method and system for offloading parity processing
US11500719B1 (en) * 2020-03-31 2022-11-15 Amazon Technologies, Inc. Reliability improvements for memory technologies
CN114490462A (zh) * 2020-10-28 2022-05-13 华为技术有限公司 网络接口卡、控制器、存储装置和报文发送方法
US11740804B1 (en) * 2022-03-15 2023-08-29 Lightbits Labs Ltd. System and method for performing data striping

Also Published As

Publication number Publication date
KR20230138394A (ko) 2023-10-05
US20230305713A1 (en) 2023-09-28
EP4250118A1 (en) 2023-09-27

Similar Documents

Publication Publication Date Title
US10783038B2 (en) Distributed generation of random data in a storage system
US11340985B2 (en) Reliability coding for storage on a network
US10965753B2 (en) Interconnect delivery process
KR102457091B1 (ko) Nvme-of 이더넷 ssd에서 데이터 복제를 제공하기 위한 시스템 및 방법
CN108701004B (zh) 一种数据处理的系统、方法及对应装置
US20200249869A1 (en) Compression offloading to raid array storage enclosure
US7007142B2 (en) Network data storage-related operations
US8086911B1 (en) Method and apparatus for distributed reconstruct in a raid system
KR102199424B1 (ko) 솔리드 스테이트 드라이브 및 그것을 포함하는 스토리지 시스템
WO2017028494A1 (zh) 一种数据恢复的方法、存储的方法相应的装置及系统
CN115344197A (zh) 一种数据访问方法、网卡及服务器
JP2010250813A (ja) ストレージシステムのための方法及びシステム
JP2018503156A (ja) 書込み要求処理方法、プロセッサおよびコンピュータ
CN111131224B (zh) 一种维护连接的方法及存储设备
TW202341702A (zh) 執行抹除碼恢復的方法及系統
EP4130972A1 (en) Systems, methods, and apparatus for remote data transfers to memory
WO2022267909A1 (zh) 一种数据读写方法以及相关装置
CN106155573B (zh) 用于存储设备扩展的方法、装置以及扩展的存储设备
CN116804952A (zh) 基于客户端和网络的擦除码恢复
KR20180088076A (ko) 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법
TW201342217A (zh) 多核心處理系統的初始化技術
US20240171530A1 (en) Data Sending Method, Network Interface Card, and Computing Device
US11221948B2 (en) Coordinated reclaiming of data storage space
JP6683160B2 (ja) ストレージシステム、および通信方法
JPH1125022A (ja) クライアントサーバシステム