JP6649340B2 - データ記憶方法、データ回復方法、関係する装置及びシステム - Google Patents

データ記憶方法、データ回復方法、関係する装置及びシステム Download PDF

Info

Publication number
JP6649340B2
JP6649340B2 JP2017211519A JP2017211519A JP6649340B2 JP 6649340 B2 JP6649340 B2 JP 6649340B2 JP 2017211519 A JP2017211519 A JP 2017211519A JP 2017211519 A JP2017211519 A JP 2017211519A JP 6649340 B2 JP6649340 B2 JP 6649340B2
Authority
JP
Japan
Prior art keywords
block
storage node
target
node
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2017211519A
Other languages
English (en)
Other versions
JP2018022530A (ja
Inventor
道▲輝▼ 王
道▲輝▼ 王
烽 ▲張▼
烽 ▲張▼
▲偉▼ 樊
▲偉▼ 樊
志▲楽▼ ▲張▼
志▲楽▼ ▲張▼
永▲強▼ ▲曾▼
永▲強▼ ▲曾▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018022530A publication Critical patent/JP2018022530A/ja
Application granted granted Critical
Publication of JP6649340B2 publication Critical patent/JP6649340B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/0617Improving the reliability of storage systems in relation to availability
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、データ記憶の分野に関し、特にデータ記憶方法、データ回復方法、関係する装置及びシステムに関する。
現在、分散型記憶システムは、データを記憶するためにイレージャーコーディング(EC、Erasure coding)技術をますます使用している。イレージャーコーディング技術の原理は、データをm個のデータブロックに分割し、k個のパリティブロックを生成するために、冗長アルゴリズムを使用することによりm個のデータブロックにおいてパリティコーディングを実行することである。m個のデータブロック及びk個のパリティブロックは、1つのECストライプと呼ばれる。データブロック又はパリティブロックは、EC blockとも呼ばれ、各ECストライプは、k個のEC blockの喪失を許容する。
記憶の信頼性を確保するため、分散型記憶システムは、記憶のために、m+k個の記憶ノードに各ECストライプのm+k個のEC blockを分配する。このように、ノードが故障した場合であっても、故障したノードに記憶されたEC blockは、他のノードに記憶されたデータに従って回復することができる。EC技術を使用する分散型記憶システムは、k個の記憶ノードの同時故障を許容することが認識され得る。
しかし、EC blockを記憶ノードに書き込むことは、或る期間を必要とする。ECストライプを記憶するために使用されるm+k個の記憶ノード内の記憶ノードがEC blockを書き込むときに故障している場合、記憶ノードの一部がECストライプのEC blockを有するが、記憶ノードの他の部分がECストライプのEC blockを有さない場合が生じ、ECストライプの記憶の不一致を引き起こす。従って、分散型記憶システムの記憶の一貫性が悪い。
本発明の実施例は、分散型記憶システムの記憶の一貫性を改善するために使用されるデータ回復方法を提供する。
本発明の実施例の第1の態様は、分散型記憶システムに適用されるデータ記憶方法を提供し、分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、m個のデータブロック及びk個のパリティブロックは、各ECストライプのEC blockを構成し、分散型記憶システムは、複数の記憶ノードグループを含み、各記憶ノードグループは、m+k個未満ではない記憶ノードを含み、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、この方法は、記憶ノードグループのいずれか1つの中のプライマリ記憶ノードにより実行され、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するステップであり、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m+k個のターゲットEC blockを含み、m+k個のターゲットEC blockは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを含むステップと、m+k個のターゲット記憶ノードを決定するステップであり、m+k個のターゲット記憶ノードは、m+k個のターゲットEC blockを記憶するように構成され、各ターゲット記憶ノードは、ターゲットEC blockの1つを記憶するステップと、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するステップであり、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するステップであり、応答メッセージは、応答メッセージを現在送信しているターゲット記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するステップであり、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを含む。
本発明の実施例の第1の態様を参照して、本発明の実施例の第1の態様の第1の実現方式では、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の実施例の第1の態様の第1の実現方式を参照して、本発明の実施例の第1の態様の第2の実現方式は、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するステップであり、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを更に含む。
本発明の実施例の第1の態様の第2の実現方式を参照して、本発明の実施例の第1の態様の第3の実現方式は、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用されるステップを更に含む。
本発明の実施例の第2の態様は、分散型記憶システムに適用されるデータ回復方法を提供し、分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、m個のデータブロック及びk個のパリティブロックは、各ECストライプのEC blockを構成し、各ECストライプはkey値に対応し、データ部の同じアドレス範囲を有するECストライプのkey値は同じであり、データ部の異なるアドレス範囲を有するECストライプのkey値は異なり、分散型記憶システムは、複数の記憶ノードグループを含み、各記憶ノードグループは、m+k個未満ではない記憶ノードを含み、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、故障した記憶ノードが記憶ノードグループのいずれか1つの中のセカンダリ記憶ノードに存在する場合、この方法は、記憶ノードグループのいずれか1つの中のプライマリ記憶ノードにより実行され、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信するステップと、記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するステップであり、Nは正の整数であるステップと、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するステップと、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定するステップと、第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するステップとを含む。
本発明の実施例の第2の態様を参照して、本発明の実施例の第2の態様の第1の実現方式では、記憶のために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するステップは、第nの喪失したEC blockを故障した記憶ノードに送信するステップであり、1≦n≦Nであるステップと、第nの喪失したEC blockに対応する応答メッセージを受信するステップであり、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用されるステップと、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するステップとを含む。
本発明の実施例の第2の態様の第1の実現方式を参照して、本発明の実施例の第2の態様の第2の実現方式では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
本発明の実施例の第2の態様又は第2の態様の第1若しくは第2の実現方式を参照して、本発明の実施例の第2の態様の第3の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
本発明の実施例の第3の態様は、データ記憶装置を提供し、分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、m個のデータブロック及びk個のパリティブロックは、各ECストライプのEC blockを構成し、分散型記憶システムは、複数の記憶ノードグループを含み、各記憶ノードグループは、m+k個未満ではない記憶ノードを含み、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、データ記憶装置は、記憶ノードグループのいずれか1つの中のプライマリ記憶ノードに配置され、データ記憶装置は、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するように構成されたデータコーディングモジュールであり、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m+k個のターゲットEC blockを含み、m+k個のターゲットEC blockは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを含むデータコーディングモジュールと、m+k個のターゲット記憶ノードを決定するように構成されたノード決定モジュールであり、m+k個のターゲット記憶ノードは、m+k個のターゲットEC blockを記憶するように構成され、各ターゲット記憶ノードは、ターゲットEC blockの1つを記憶するノード決定モジュールと、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するように構成されたメッセージ送信モジュールであり、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むメッセージ送信モジュールと、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するように構成されたメッセージ受信モジュールであり、応答メッセージは、応答メッセージを現在送信しているターゲット記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むメッセージ受信モジュールとを含み、メッセージ送信モジュールは、メッセージ受信モジュールがm+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するように更に構成され、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
本発明の実施例の第3の態様を参照して、本発明の実施例の第3の態様の第1の実現方式では、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の実施例の第3の態様の第1の実現方式を参照して、本発明の実施例の第3の態様の第2の実現方式では、この装置は、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するように構成されたバージョン決定モジュールであり、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含むバージョン決定モジュールを更に含み、メッセージ送信モジュールは、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信するように具体的に構成され、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
本発明の実施例の第3の態様の第2の実現方式を参照して、本発明の実施例の第3の態様の第3の実現方式では、メッセージ送信モジュールは、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するように更に構成され、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用される。
本発明の実施例の第4の態様は、分散型記憶システムに適用されるデータ回復装置を提供し、分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、m個のデータブロック及びk個のパリティブロックは、各ECストライプのEC blockを構成し、各ECストライプはkey値に対応し、データ部の同じアドレス範囲を有するECストライプのkey値は同じであり、データ部の異なるアドレス範囲を有するECストライプのkey値は異なり、分散型記憶システムは、複数の記憶ノードグループを含み、各記憶ノードグループは、m+k個未満ではない記憶ノードを含み、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、故障した記憶ノードが分散型記憶システム内のいずれかの記憶ノードグループ内のセカンダリ記憶ノードに存在する場合、データ回復装置は、故障した記憶ノードが属する記憶ノードグループ内のプライマリ記憶ノードに配置され、データ回復装置は、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信するように構成された回復メッセージモジュールと、記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するように構成されたデータ計算モジュールであり、Nは正の整数であるデータ計算モジュールと、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するように構成されたデータ送信モジュールと、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定するように構成されたkey値決定モジュールとを含み、データ送信モジュールは、第2のEC blockが存在するとkey値決定モジュールが決定した場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するように更に構成される。
本発明の実施例の第4の態様を参照して、本発明の実施例の第4の態様の第1の実現方式では、データ送信モジュールは、第nの喪失したEC blockを故障した記憶ノードに送信するように具体的に構成され、1≦n≦Nであり、第nの喪失したEC blockに対応する応答メッセージを受信するように具体的に構成され、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用され、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するように具体的に構成される。
本発明の実施例の第4の態様の第1の実現方式を参照して、本発明の実施例の第4の態様の第2の実現方式では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
本発明の実施例の第4の態様又は第4の態様の第1若しくは第2の実現方式を参照して、本発明の実施例の第4の態様の第3の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
本発明の実施例の第5の態様は、データ記憶装置を提供し、データ記憶装置は、入力装置と、出力装置と、プロセッサと、メモリとを含み、メモリに記憶された動作命令を呼び出すことにより、プロセッサは、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するように構成され、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m+k個のターゲットEC blockを含み、m+k個のターゲットEC blockは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを含み、m+k個のターゲット記憶ノードを決定するように構成され、m+k個のターゲット記憶ノードは、m+k個のターゲットEC blockを記憶するように構成され、各ターゲット記憶ノードは、ターゲットEC blockの1つを記憶し、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するように構成され、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含み、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するように構成され、応答メッセージは、応答メッセージを現在送信しているターゲット記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含み、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するように構成され、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
本発明の実施例の第5の態様を参照して、本発明の実施例の第5の態様の第1の実現方式では、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の実施例の第5の態様の第1の実現方式を参照して、本発明の実施例の第5の態様の第2の実現方式では、プロセッサは、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するように更に構成され、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含み、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信するように更に構成され、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
本発明の実施例の第5の態様の第2の実現方式を参照して、本発明の実施例の第5の態様の第3の実現方式では、プロセッサは、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するように更に構成され、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用される。
本発明の実施例の第6の態様は、データ回復装置を提供し、データ回復装置は、入力装置と、出力装置と、プロセッサと、メモリとを含み、メモリに記憶された動作命令を呼び出すことにより、プロセッサは、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信し、故障した記憶ノードが属する記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するように構成され、Nは正の整数であり、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信し、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定し、第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するように構成される。
本発明の実施例の第6の態様を参照して、本発明の実施例の第6の態様の第1の実現方式では、プロセッサは、第nの喪失したEC blockを故障した記憶ノードに送信するように更に構成され、1≦n≦Nであり、第nの喪失したEC blockに対応する応答メッセージを受信するように更に構成され、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用され、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するように更に構成される。
本発明の実施例の第6の態様の第1の実現方式を参照して、本発明の実施例の第6の態様の第2の実現方式では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
本発明の実施例の第6の態様又は第6の態様の第1若しくは第2の実現方式を参照して、本発明の実施例の第6の態様の第3の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
本発明の実施例の第7の態様は、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体を提供し、コンピュータのプロセッサがコンピュータ実行可能命令を実行した場合、コンピュータは、以下の方法、すなわち、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するステップであり、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m+k個のターゲットEC blockを含み、m+k個のターゲットEC blockは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを含むステップと、m+k個のターゲット記憶ノードを決定するステップであり、m+k個のターゲット記憶ノードは、m+k個のターゲットEC blockを記憶するように構成され、各ターゲット記憶ノードは、ターゲットEC blockの1つを記憶するステップと、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するステップであり、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するステップであり、応答メッセージは、応答メッセージを現在送信しているターゲット記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するステップであり、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを実行する。
本発明の実施例の第7の態様を参照して、本発明の実施例の第7の態様の第1の実現方式では、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の実施例の第7の態様の第1の実現方式を参照して、本発明の実施例の第7の態様の第2の実現方式では、コンピュータは、以下の方法、すなわち、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するステップであり、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを更に実行する。
本発明の実施例の第7の態様の第2の実現方式を参照して、本発明の実施例の第7の態様の第3の実現方式では、コンピュータは、以下の方法、すなわち、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用されるステップを更に実行する。
本発明の実施例の第8の態様は、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体を提供し、コンピュータのプロセッサがコンピュータ実行可能命令を実行した場合、コンピュータは、以下の方法、すなわち、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信するステップと、記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するステップであり、Nは正の整数であるステップと、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するステップと、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定するステップと、第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するステップとを実行する。
本発明の実施例の第8の態様を参照して、本発明の実施例の第8の態様の第1の実現方式では、コンピュータは、以下の方法、すなわち、第nの喪失したEC blockを故障した記憶ノードに送信するステップであり、1≦n≦Nであるステップと、第nの喪失したEC blockに対応する応答メッセージを受信するステップであり、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用されるステップと、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するステップとを更に実行する。
本発明の実施例の第8の態様の第1の実現方式を参照して、本発明の実施例の第8の態様の第2の実現方式では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
本発明の実施例の第8の態様又は第8の態様の第1若しくは第2の実現方式を参照して、本発明の実施例の第8の態様の第3の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
本発明の実施例の第9の態様は、記憶ノードを提供し、本発明の実施例の第3の態様若しくは第3の態様の第1〜第3の実現方式のいずれか1つによるデータ記憶装置及び/又は本発明の実施例の第4の態様若しくは第4の態様の第1〜第3の実現方式のいずれか1つによるデータ回復装置を含み、及び/又は、本発明の実施例の第5の態様若しくは第5の態様の第1〜第3の実現方式のいずれか1つによるデータ記憶装置及び/又は本発明の実施例の第6の態様若しくは第6の態様の第1〜第3の実現方式のいずれか1つによるデータ回復装置を含み、及び/又は、本発明の実施例の第7の態様若しくは第7の態様の第1〜第3の実現方式のいずれか1つによるコンピュータ読み取り可能媒体及び/又は本発明の実施例の第8の態様若しくは第8の態様の第1〜第3の実現方式のいずれか1つによるコンピュータ読み取り可能媒体を含む。
本発明の実施例により提供されるデータ記憶方法は、プライマリノードにより、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するステップであり、ターゲットECストライプは、m+k個のターゲットEC blockを含むステップと、記憶ノードグループ内のセカンダリ記憶ノードの中で、m+k個のターゲットEC blockを記憶するために使用されるm+k個のターゲット記憶ノードを決定するステップと、準備メッセージをターゲット記憶ノードに送信するステップであり、各準備メッセージは、ターゲット記憶ノードにより記憶されるべきターゲットEC blockを搬送するステップと、ターゲット記憶ノードにより送信された応答メッセージを受信するステップと、全てのターゲット記憶ノードの応答メッセージを受信した後に、ターゲット記憶ノードに対して、準備ログにあるターゲットEC blockを書き込むように命令するために、実行メッセージを全てのターゲット記憶ノードに送信するステップとを含む。この実施例により提供される方法では、ターゲットECストライプを記憶するために使用されるm+k個のターゲット記憶ノードは、記憶されるべきターゲットEC blockを直接書き込まないが、まず、記憶されるべきターゲットEC blockをローカルに生成された準備ログに書き込み、全てのターゲット記憶ノードが準備ログを生成した後に、ターゲットEC blockを書き込む。全てのターゲット記憶ノードが準備ログを生成した場合にのみ、ターゲット記憶ノードは、ターゲットEC blockを正確な位置に書き込む動作を実行する。ターゲット記憶ノードによりターゲットEC blockを書き込む過程において故障が発生した場合であっても、ターゲットEC blockは、ターゲット記憶ノードの準備ログに記憶されている。このように、ターゲットEC blockを書き込む動作が成功したか否かに拘わらず、ターゲットEC blockが喪失されないことが確保され得る。従って、ターゲット記憶ノードの一部がターゲットECストライプのターゲットEC blockを有するが、ターゲット記憶ノードの他の部分がターゲットECストライプのターゲットEC blockを有さない場合が回避され、ターゲットECストライプが一貫して記憶されることができ、分散型記憶システムの記憶の一貫性が改善される。
ECストライプの構成図 本発明の実施例による分散型記憶システムの概略構成図 本発明の実施例によるデータ記憶方法の実施例のフローチャート 本発明の実施例によるデータ記憶方法の他の実施例のフローチャート 本発明の実施例によるデータ記憶方法の他の実施例のフローチャート 本発明の実施例によるデータ回復方法の実施例のフローチャート 本発明の実施例によるデータ記憶装置の実施例の構成図 本発明の実施例によるデータ記憶装置の他の実施例の構成図 本発明の実施例によるデータ回復装置の他の実施例の構成図 本発明の実施例によるデータ記憶装置の他の実施例の構成図 本発明の実施例によるデータ記憶装置の他の実施例の構成図 本発明の実施例によるデータ回復装置の他の実施例の構成図
本発明の実施例は、分散型記憶システムの記憶の一貫性を改善するために使用されるデータ記憶方法を提供する。本発明の実施例は、以下に別々に説明するデータ回復方法、関係する装置及びシステムを更に提供する。
分散型記憶システムは、複数の記憶ノードを含む。上位レイヤデータ配送装置は、記憶されるべきデータを複数のデータブロックに分割し、次に、記憶のために、分散型記憶システムの複数の記憶ノードにデータブロックを配送する。データの分散型記憶は、データ喪失リスクを低減し、分散型記憶システムの信頼性を改善することができる。データ配送装置は、クライアント、サーバ、又は他のデバイスでもよい。
EC技術の原理は、記憶されるべきデータをm個のデータブロックに分割し、k個のパリティブロックを生成するために、冗長アルゴリズムを使用することによりm個のデータブロックにおいてパリティコーディングを実行することである。m個のデータブロック及びk個のパリティブロックは、1つのECストライプを構成する。ECストライプの基本的な構成について、図1(a)を参照する。各データブロック又はパリティブロックは、EC blockと呼ばれてもよく、m個のデータブロック及びk個のパリティブロックは、各ECストライプの全てのEC blockを構成する。各ECストライプは、k個のEC blockの喪失を許容可能である。分散型記憶システムがデータ記憶を実行するためにEC技術を使用する場合、データ配送装置は、記憶されるべきデータに従って複数のECストライプを生成し、記憶のために、分散型記憶システムのm+k個の記憶ノードに各ECストライプのm+k個のEC blockを配送する。このように、分散型記憶システム内のノードが故障した場合、故障したノードに記憶されたEC blockは、故障していないノードにおけるEC blockに従って回復することができる。ECストライプを記憶するm+k個の記憶ノード内のk個より多くの記憶ノードが故障しない限り、ECストライプのデータは、データ配送装置により完全に読み取り又は書き込み可能である。従って、データを記憶するためにEC技術を使用する分散型記憶システムは、非常に高い信頼性を有する。
分散型記憶システムに記憶されたECストライプは、データ配送装置により読み取り又は上書き可能である。ECストライプを読み取る場合、データ配送装置は、ECストライプからデータを記憶するために使用されるデータブロックを読み取る必要があるだけである点に留意すべきである。しかし、ECストライプが上書きされる場合、例えば、ECストライプのm個のデータブロック内の第iのデータブロックが上書きされる場合、ECストライプの他のデータブロックが変更される必要はないが、ECストライプのパリティブロックを再生成することが必要である。
特に、本発明の実施例では、分散型記憶システム内の記憶ノードがグループ化される。具体的に、記憶ノードは、複数の記憶ノードグループにグループ化され、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、1つのプライマリ記憶ノード(以下では略してプライマリノード)が各記憶ノードグループ内で指定される。他の記憶ノードは、セカンダリ記憶ノード(以下では略してセカンダリノード)である。m及びkは共に正の整数である。異なる記憶ノードグループの記憶ノードは、繰り返し可能でもよい。例えば、記憶ノードグループ1内のプライマリノードは、記憶ノードグループ2内のセカンダリノードでもよい。図1(b)は、本発明の実施例による分散型記憶システムの概略構成図である。図1(b)は、分散型記憶システムの構成のみを示すために使用され、分散型記憶システム内の記憶ノードはまた、他の接続構成でもよい。
前述の分散型記憶システムに基づいて、本発明の実施例は、分散型記憶システムのいずれかの記憶ノードグループ内のプライマリノードに適用されるデータ記憶方法を提供する。図2を参照すると、この方法の基本的な手順は以下を含む。
201.ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行する。
プライマリノードは、データ配送装置により配送された記憶されるべきデータセグメントを受信し、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズである。コーディング後のターゲットECストライプは、m+k個のターゲットEC blockを含み、これらは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを具体的に含む。
202.m+k個のターゲット記憶ノードを決定する。
m+k個のターゲットEC blockを生成した後に、プライマリノードは、プライマリノードが属する記憶ノードグループにおいて、m+k個のターゲットEC blockを記憶するために使用されるm+k個のターゲット記憶ノードを決定する。m+k個のターゲット記憶ノードは、プライマリノード及びm+k-1個のセカンダリノードを含んでもよく、m+k個のセカンダリノードを含んでもよい。各ターゲット記憶ノードは、最大で1つのEC blockのみを記憶する。
特に、記憶ノードグループがm+k個の記憶ノード(プライマリノード及びm+k-1個のセカンダリノード)のみを含む場合、プライマリノードは、m+k個の記憶ノードがターゲット記憶ノードであると直接決定する。
203.準備メッセージをターゲット記憶ノードに送信する。
ターゲット記憶ノードを決定した後に、プライマリノードは、準備メッセージをm+k個のターゲット記憶ノードに別々に送信し、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを搬送する。
セカンダリノードであるターゲット記憶ノードでは、プライマリノードによりターゲット記憶ノードに送信された準備メッセージは、ネットワークを通じて送信されるノード間メッセージである。しかし、プライマリノードもまたターゲット記憶ノードの1つでもよいことが、ステップ202において言及された。プライマリノードがターゲット記憶ノードである場合、このステップにおいて、プライマリノードもまた、準備メッセージをプライマリノード自体に送信するが、プライマリノード自体に送信される準備メッセージは、ネットワークを通過しないノード内メッセージである。
204.ターゲット記憶ノードにより送信された応答メッセージを受信する。
プライマリノードにより送信された準備メッセージを受信した後に、ターゲット記憶ノードは、準備メッセージに従って準備ログを生成し、準備ログは、ターゲット記憶ノードにローカルに記憶される。準備ログの目的は、主に、ターゲット記憶ノードにより記憶されるべきEC blockを一時的に記憶するためのものである。従って、準備ログの記憶位置は、ターゲットEC blockの最終的な記憶位置ではない。実際の適用では、準備ログは、ログ又はデータブロックでもよく、他の形式でもよい。これは、この実施例では限定されないが、準備ログは、ターゲット記憶ノードにより受信された準備メッセージ内のターゲットEC blockを含む必要がある。
準備ログを生成した後に、ターゲット記憶ノードは、応答メッセージを現在送信しているターゲットセカンダリ記憶ノードが準備メッセージに従って準備ログを生成したことをプライマリノードに通知するために使用される応答メッセージをプライマリノードに送信する。
セカンダリノードとしてのターゲット記憶ノードにより送信された応答メッセージは、ネットワークを通じて送信されるノード間メッセージである。しかし、プライマリノードもまたターゲット記憶ノードの1つである場合、このステップにおいて、プライマリノードもまた、応答メッセージをプライマリノード自体に送信するが、プライマリノード自体に送信される応答メッセージは、ネットワークを通過しないノード内メッセージである。
プライマリノードは、m+k個のターゲット記憶ノード内のいずれか1つ以上のターゲット記憶ノードにより送信された応答メッセージを受信し、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにより送信された応答メッセージを受信した後に、ステップ205を実行する。
205.実行メッセージをターゲット記憶ノードに送信する。
全てのターゲット記憶ノードにより送信された応答メッセージを受信した後に、プライマリノードは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために、実行メッセージをm+k個のターゲット記憶ノードに送信する。実行メッセージを受信した後に、m+k個のターゲット記憶ノードは、準備ログの記憶位置から準備ログを読み取り、準備ログに含まれるターゲットEC blockを、ターゲットEC blockを記憶するために使用されるターゲット記憶ノードの位置に書き込む。
セカンダリノードであるターゲット記憶ノードでは、プライマリノードによりターゲット記憶ノードに送信された実行メッセージは、ネットワークを通じて送信されるノード間メッセージである。しかし、プライマリノードもまたターゲット記憶ノードの1つでもよいことが、ステップ202において言及された。プライマリノードがターゲット記憶ノードである場合、このステップにおいて、プライマリノードもまた、実行メッセージをプライマリノード自体に送信するが、プライマリノード自体に送信される実行メッセージは、ネットワークを通過しないノード内メッセージである。
この実施例は、データ記憶方法を提供し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するステップであり、ターゲットECストライプは、m+k個のターゲットEC blockを含むステップと、記憶ノードグループ内のセカンダリ記憶ノードの中で、m+k個のターゲットEC blockを記憶するために使用されるm+k個のターゲット記憶ノードを決定するステップと、準備メッセージをターゲット記憶ノードに送信するステップであり、準備メッセージは、ターゲット記憶ノードにより記憶されるべきターゲットEC blockを搬送するステップと、ターゲット記憶ノードにより送信された応答メッセージを受信するステップと、全てのターゲット記憶ノードの応答メッセージを受信した後に、ターゲット記憶ノードに対して、準備ログにあるターゲットEC blockを書き込むように命令するために、実行メッセージを全てのターゲット記憶ノードに送信するステップとを含む。この実施例により提供される方法では、ターゲットECストライプを記憶するために使用されるm+k個のターゲット記憶ノードは、記憶されるべきターゲットEC blockを直接書き込まないが、まず、記憶されるべきターゲットEC blockをローカルに生成された準備ログに書き込み、全てのターゲット記憶ノードが準備ログを生成した後に、ターゲットEC blockを書き込む。全てのターゲット記憶ノードが準備ログを生成した場合にのみ、ターゲット記憶ノードは、ターゲットEC blockを正確な位置に書き込む動作を実行する。ターゲット記憶ノードによりターゲットEC blockを書き込む過程において故障が発生した場合であっても、ターゲットEC blockは、ターゲット記憶ノードの準備ログに記憶されている。このように、ターゲットEC blockを書き込む動作が成功したか否かに拘わらず、ターゲットEC blockが喪失されないことが確保され得る。従って、ターゲット記憶ノードの一部がターゲットECストライプのターゲットEC blockを有するが、ターゲット記憶ノードの他の部分がターゲットECストライプのターゲットEC blockを有さない場合が回避され、ターゲットECストライプが一貫して記憶されることができ、分散型記憶システムの記憶の一貫性が改善される。
好ましくは、本発明の更に他の実施例では、ターゲット記憶ノードが故障したときに、ターゲット記憶ノードにより生成された準備ログが喪失されないことを確保するために、ターゲット記憶ノードは、準備ログを停電保護媒体に書き込んでもよい。
ECストライプのkey値の概念が、本発明のこの実施例に導入される。具体的に、ECストライプのkey値は、ECストライプのデータ部のアドレス範囲に対応し、データ部の同じアドレス範囲を有するECストライプのkey値は同じであるが、データ部の異なるアドレス範囲を有するECストライプのkey値は異なる。key値は、ECストライプの各EC blockで搬送されてもよい。
ECストライプのkey値は、データ配送装置によりプライマリノードに配送されたデータセグメントから生じてもよい。例えば、分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割されてもよく、各論理パーティションは、k個のデータブロックのサイズである。データ配送装置は、記憶されるべきデータを複数のデータセグメントに分割し、具体的に、1つの論理パーティションに入るデータを1つのデータセグメントとして使用する。分散型記憶システムの各論理パーティションに一意のkey値が設定され、各データセグメントが入る論理パーティションに対応するkey値は、データセグメントに対応するkey値である。データ配送装置は、key値をデータセグメントに追加し、プライマリノードにデータセグメントを配送し、データセグメントに従ってプライマリノードにより生成されたECストライプは、データセグメントと同じkey値を有する。
key値はデータのアドレス範囲を識別するために使用されてもよいことが、前述の説明から分かる。更に、ターゲット記憶ノードが実行メッセージを受信した後に、ターゲット記憶ノードは、準備ログの記憶位置から準備ログを読み取り、準備ログに含まれるターゲットEC blockを、ターゲットEC blockを記憶するために使用されるターゲット記憶ノードの位置に書き込むことが、ステップ205において言及された。具体的に、ターゲット記憶ノードが準備ログにターゲットEC blockで搬送されたkey値と同じkey値を有するEC blockを記憶していない場合、ターゲット記憶ノードは、新たな記憶位置をターゲットEC blockに割り当てる。ターゲット記憶ノードが準備ログにターゲットEC blockで搬送されたkey値と同じkey値を有するEC blockを記憶している場合、これは、古いデータがターゲットEC blockのアドレス範囲に書き込まれていることを示し、ターゲット記憶ノードは、古いデータを新たなデータで上書きするために、ターゲットEC blockを、ターゲットEC blockのkey値と同じkey値を有するEC blockを記憶するために元々使用された位置に書き込む。新たなデータが古いデータを上書きするため、各記憶ノードにおいて記憶された複数のEC blockのkey値が互いに異なることが認識され得る。
ECストライプのバージョン番号の概念が、本発明のこの実施例に更に導入される。具体的に、バージョン番号は、同じkey値を有する2つのECストライプの新しい程度又は古い程度を識別するために使用される。書き込まれた新たなECストライプは古いECストライプを上書きする。例えば、ある時点において、プライマリノードは、ECストライプを生成し、データ部のアドレス範囲は4M〜8Mであり、key値は2であり、ECストライプのバージョン番号は1であり、プライマリノードは、記憶のためにバージョン番号1を有するECストライプを6個の記憶ノードに割り当てる。1時間後に、プライマリノードは、他のECストライプを再び生成し、データ部のアドレス範囲は4M〜8Mであり、key値は2であり、ECストライプのバージョン番号は2である。プライマリノードは、バージョン番号2を有するECストライプがバージョン番号1を有するECストライプを上書きするように、バージョン番号2を有するECストライプを、バージョン番号1を有するECストライプを記憶するために元々使用された位置に書き込む。ターゲットECストライプのバージョン番号は、ターゲットECストライプの各ターゲットEC blockで搬送されてもよい。
本発明のこの実施例では、プライマリノードによりターゲット記憶ノードに送信された準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、更に、準備メッセージに従ってターゲット記憶ノードにより生成された準備ログもまた、ターゲットECストライプのバージョン番号を含む。実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように具体的に命令する。バージョン番号の概念が導入された後に、ECストライプの記憶が一貫しているか否かは、バージョン番号に従って決定されてもよい。ターゲットECストライプを記憶するターゲット記憶ノードに書き込まれたターゲットECストライプのバージョン番号が同じである場合、これは、ターゲットECストライプの記憶が一貫していることを示す。ターゲットECストライプを記憶するターゲット記憶ノードに書き込まれたターゲットECストライプのバージョン番号が異なる場合、これは、ターゲットECストライプの記憶が一貫していないことを示す。
分散型記憶システムの記憶ノードグループ内の記憶ノードはいずれかの時点で故障する可能性があるため、記憶ノードグループは維持管理される必要がある。記憶ノードグループは、複数の方式で維持管理されてもよく、例えば、更なるノードグループ管理モジュールが配置されてもよい。ノードグループ管理モジュールは、データ配送装置に配置されてもよく、記憶ノードに配置されてもよい。これは、本発明の実施例では限定されない。ノードグループ管理モジュールは、各記憶ノードグループを維持管理することを担う。具体的に、ノードグループ管理モジュールは、各記憶ノードグループに含まれる記憶ノードについての情報を収集し、プライマリノードを決定し、ハートビート接続を使用することにより各記憶ノードの状態をリアルタイムで監視することを担ってもよい。記憶ノードの状態が変化した場合、又はノードグループ内のプライマリノードが変化した場合、ノードグループ管理モジュールは、収集された情報を更新する必要がある。ノードグループ管理モジュールは、各データ配送装置及び記憶ノードが各ノードグループについての情報を習得することができるように、記録するために、収集された情報を各記憶ノードに通知する。ノードグループ管理モジュールにより収集された情報は、簡単に表1の形式で表されてもよい。
Figure 0006649340
表1は、ノードグループ管理モジュールにより収集された情報の単なる表現形式である。ノードグループ管理モジュールは、他の形式で収集された情報を表してもよい。これは、本発明の実施例では限定されない。
ステップ202においてターゲット記憶ノードを決定した後に、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することを、プライマリノードがノードグループ管理モジュールを使用することにより検出した場合、プライマリノードは、データ記憶手順を中断し、故障した記憶ノードを回復させる必要がある。故障した記憶ノードが回復した後に、プライマリノードは、データ記憶手順を続ける必要がある。詳細については、ステップ1〜3を参照する。
ステップ1:m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定する。ターゲット記憶ノードが準備ログを生成している場合、ターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログ内のターゲットECストライプのバージョン番号でもよい。ターゲット記憶ノードが準備ログを有さない場合、ターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、ターゲット記憶ノードにより記憶されているターゲットECストライプのバージョン番号でもよい。
m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、これは、準備ログを有さないターゲット記憶ノードが記憶されるべきターゲットEC blockを書き込む動作を完了したことを示し、ステップ2が実行される。
m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、これは、準備ログを有さないターゲット記憶ノードが準備ログを生成しておらず、更に、記憶されるべきターゲットEC blockを書き込んでないことを示し、ステップ3が実行される。
ステップ2:実行メッセージを、準備ログを生成したターゲット記憶ノードに送信し、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。実行メッセージを受信した後に、準備ログを生成したターゲット記憶ノードは、ターゲットECストライプがターゲット記憶ノードに一貫して記憶されるように、準備ログに含まれるターゲットEC blockを書き込む。
ステップ3:削除メッセージを、準備ログを生成したターゲット記憶ノードに送信し、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用される。削除メッセージを受信した後に、準備ログを生成したターゲット記憶ノードは、ターゲットECストライプのターゲットEC blockがいずれのターゲット記憶ノードにも書き込まれないように、ローカルに記憶された準備ログを削除する。
特に、故障した記憶ノードがプライマリノードである場合、ノードグループ管理モジュールは、セカンダリノードを新たなプライマリノードとして指定し、次に、ステップ1〜3を再実行してもよい。
前述の実施例では、本発明のこの実施例により提供されるデータ記憶方法は、プライマリノードの観点から記載された。以下の実施例では、本発明のこの実施例により提供されるデータ記憶方法は、セカンダリノードの観点から説明される。図3を参照すると、この方法の基本的な手順は以下を含む。
301.プライマリノードにより送信された準備メッセージを受信する。
プライマリノードは、ターゲットECストライプを生成し、ターゲットECストライプを記憶するために使用されるm+k個のターゲット記憶ノードを決定する。本発明のこの実施例におけるセカンダリノードは、ターゲット記憶ノード内のノードである。
セカンダリノードは、プライマリノードにより送信された準備メッセージを受信し、準備メッセージは、セカンダリノードがターゲットEC blockを記憶するために使用されるターゲット記憶ノードであるとプライマリノードが決定したときに送信され、準備メッセージは、セカンダリノードにより記憶されるべきターゲットEC blockを含む。
302.準備メッセージに従って準備ログを生成する。
プライマリノードにより送信された準備メッセージを受信した後に、セカンダリノードは、準備メッセージに従って準備ログを生成し、準備ログは、セカンダリノードにローカルに記憶される。準備ログの目的は、主に、セカンダリノードにより記憶されるべきEC blockを一時的に記憶するためのものである。従って、準備ログの記憶位置は、ターゲットEC blockの最終的な記憶位置ではない。実際の適用では、準備ログは、ログ又はデータブロックでもよく、他の形式でもよい。これは、この実施例では限定されないが、準備ログは、準備メッセージで搬送されたターゲットEC blockを含む必要がある。準備ログは、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockを含む。
303.応答メッセージをプライマリノードに送信する。
準備ログを生成した後に、セカンダリノードは、応答メッセージをプライマリノードに送信し、応答メッセージは、セカンダリノードが準備メッセージに従って準備ログを生成したことを示すために使用される。
記憶ノードグループ内の他のターゲット記憶ノードもまた、応答メッセージをプライマリノードに送信することが認識され得る。
304.プライマリノードにより送信された実行メッセージを受信する。
セカンダリノードは、プライマリノードにより送信された実行メッセージを受信し、実行メッセージは、プライマリノードが全てのターゲット記憶ノードの応答メッセージを受信した後に送信され、実行メッセージは、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
305.準備ログに含まれるターゲットEC blockを書き込む。
実行メッセージを受信した後に、セカンダリノードは、準備ログで搬送されたターゲットEC blockを書き込む。
この実施例では、本発明のこの実施例により提供されるデータ記憶方法は、セカンダリノードの観点から記載された。セカンダリノードは、プライマリノードにより送信された準備メッセージを受信し、準備メッセージに従って準備ログを生成し、応答メッセージをプライマリノードに送信し、プライマリノードにより送信された実行メッセージを受信し、実行メッセージに従って準備ログに含まれるターゲットEC blockを書き込む。この実施例により提供される方法では、セカンダリノードは、記憶されるべきターゲットEC blockを直接書き込まないが、まず、記憶されるべきターゲットEC blockをローカルに生成された準備ログに書き込み、プライマリノードにより送信された実行メッセージを受信した後に、ターゲットEC blockを書き込む。従って、セカンダリノードがターゲットEC blockを書き込む過程において故障した場合であっても、ターゲットEC blockは、セカンダリノードの準備ログに記憶されている。このように、ターゲットEC blockを書き込む動作が成功したか否かに拘わらず、ターゲットEC blockが喪失されないことが確保され得る。プライマリノードにより決定された全てのターゲット記憶ノードにおけるターゲットEC blockが全く喪失されない場合、ターゲット記憶ノードの一部がターゲットECストライプのターゲットEC blockを有するが、ターゲット記憶ノードの他の部分がターゲットECストライプのターゲットEC blockを有さない場合が回避され、ターゲットECストライプが一貫して記憶されることができ、分散型記憶システムの記憶の一貫性が改善される。
好ましくは、本発明の更に他の実施例では、プライマリノードにより送信されてセカンダリノードにより受信された準備メッセージは、プライマリノードにより生成されたターゲットECストライプのバージョン番号を更に含み、更に、準備メッセージに従ってセカンダリノードにより生成された準備ログもまた、ターゲットECストライプのバージョン番号を含む。セカンダリノードはまた、実行メッセージに従ってターゲットEC blockを書き込むときにターゲットECストライプのバージョン番号を書き込む。
好ましくは、本発明の更に他の実施例では、セカンダリノードが故障したときに、生成された準備ログが喪失されないことを確保するために、セカンダリノードは、準備ログを停電保護媒体に書き込んでもよい。
図1に示す実施例では、ターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なるとプライマリノードが決定した場合、プライマリノードは、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信することが、ステップ3において言及された。従って、好ましくは、本発明の更に他の実施例では、ステップ304の前に、セカンダリノードは、プライマリノードにより送信された削除メッセージを更に受信してもよい。削除メッセージを受信した後に、セカンダリノードは、ローカルに記憶された準備ログを削除する。
前述の実施例を理解するのを容易にするために、以下では、説明のための例として前述の実施例の具体的な適用シナリオを使用する。具体的な手順について、図4を参照する。
分散型記憶システムは、ECストライプの形式でデータを記憶し、各ECストライプは、4つのデータブロック及び2つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含む。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。
401.ターゲットECストライプを生成する。ノードAは、データ配送装置により配送されたデータセグメントを受信し、ターゲットECストライプを取得するために、データセグメントにおいてECコーディングを実行する。ターゲットECストライプのバージョン番号は3であり、ターゲットECストライプのデータ部のアドレス範囲は4M〜8Mである。
402.ターゲット記憶ノードを決定する。ノードAは、ターゲットECストライプの6個のEC blockを記憶するために使用されるターゲット記憶ノードがノードA〜Fであると決定する。
403.準備メッセージを送信する。ノードAは、準備メッセージをノードA〜Fに送信し、各ノードに送信される準備メッセージは、ターゲットEC blockと、ターゲットECストライプのバージョン番号とを搬送し、ノードA〜Fは、準備メッセージを受信する。
404.準備ログを生成する。ノードA〜Fは、準備ログを生成し、準備ログは、記憶されるべきターゲットEC blockと、ターゲットECストライプのバージョン番号とを含む。
405.応答メッセージを送信する。ノードA〜Fは、準備ログを生成した後に、応答メッセージをノードAに送信する。ノードAは、ノードA〜Fにより送信された応答メッセージを受信する。
406.実行メッセージを送信する。ノードA〜Fにより送信された応答メッセージを受信した後に、ノードAは、実行メッセージをノードA〜Fに送信し、ノードA〜Fは、実行メッセージを受信する。
407.ノードA〜Eは、準備ログにあるターゲットEC block及びバージョン番号を書き込み、ノードFは故障している。ノードAが実行メッセージを送信した後に、ノードA〜Eは、準備ログにあるターゲットEC block及びバージョン番号を書き込み、ノードFは、実行メッセージを受信する過程において故障している。
408.ターゲットECストライプのバージョン番号が同じであると決定する。ノードAは、ノードFが故障していると決定し、従って、ノードFが故障から回復した後に、ノードA〜FにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定する。ノードA〜Eは準備ログを有さず、記憶されたターゲットEC blockで搬送されたターゲットECストライプのバージョン番号は3である。ノードFは準備ログを有し、準備ログ内のターゲットEC blockで搬送されたターゲットECストライプのバージョン番号は3である。
409.ノードAは、実行メッセージをノードFに送信する。ノードFは、実行メッセージを受信する。
410.ノードFは、準備ログにあるターゲットEC block及びバージョン番号を書き込む。
ターゲット記憶ノードが故障している場合、データ記憶手順は、故障した記憶ノードの故障回復の後に実行される必要があることが、前述の実施例において言及された。しかし、故障は、故障した記憶ノードにおいてデータの喪失を引き起こす可能性がある。この場合、プライマリノードは、記憶ノードグループ内の他の記憶ノードにより記憶されたEC blockに従ったEC技術を使用することによる計算を通じて、故障した記憶ノードの喪失したEC blockを取得し、次に、計算を通じて取得されたEC blockを回復した故障した記憶ノードに対して同期させる必要がある。従って、本発明の実施例は、以下を具体的に含むデータ回復方法を提供する。
501.故障した記憶ノードにより送信された回復メッセージを受信する。
故障した記憶ノードは、分散型記憶システム内のいずれかの記憶ノードグループに存在する。故障した記憶ノードが回復した後に、故障した記憶ノードは、回復メッセージをプライマリノードに送信し、回復メッセージは、故障した記憶ノードが回復したことを示すために使用される。プライマリノードは、回復メッセージを受信する。
502.計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得する。
前述のように、分散型記憶システムは、EC技術を使用することにより、ECストライプの形式でデータを記憶し、1つのECストライプは、記憶ノードグループ内のm+k個の記憶ノードにそれぞれ記憶されたm+k個のEC blockを含み、1つのECストライプは、k個のEC blockの喪失を許容可能である。ECストライプAを一例として使用すると、ECストライプAのEC blockが故障した記憶ノードにおいて喪失した場合、プライマリノードは、故障していないノードにより記憶されたECストライプAの他のEC blockに従ったEC技術を使用することによる計算を通じて、故障した記憶ノードの喪失したEC blockを取得してもよい。
従って、この実施例では、回復メッセージを受信した後に、プライマリノードは、プライマリノードが属する記憶ノードグループ内の故障していない記憶ノード(すなわち、故障した記憶ノードを除く記憶ノード)により記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得する。
前述のように、各記憶ノードに記憶された複数のEC blockのkey値は互いに異なり、従って、故障した記憶ノードのN個の喪失したEC blockは、異なるkey値を搬送するべきである。
503.記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信する。N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定する。決定結果が肯定的である場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信する。
計算を通じて故障した記憶ノードのN個の喪失したEC blockを取得した後に、プライマリノードは、N個の喪失したEC blockを送信キューに配置し、N個の喪失したEC blockを故障した記憶ノードに順次に送信する。
N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリノードが新たなECストライプを再び生成し、新たなECストライプ内の第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、プライマリノードは、第2のEC blockが故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定し、第2のEC blockは第1のEC blockと同じkey値を有する。
プライマリノードが第1のEC blockを生成した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに直接送信したが、第2のEC blockが故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在する場合、プライマリノードがN個の喪失したEC blockを故障した記憶ノードに順次に送信する動作を実行し続けるときに、第2のEC blockが第1のEC blockのデータを上書きする場合が引き起こされる可能性があることが認識され得る。新たな第1のEC blockを古い第2のEC blockで置換することを回避するために、この実施例では、第2のEC blockが故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するとプライマリノードが決定した場合、プライマリノードは、送信キューにおいて第2のEC blockの後に第1のEC blockを挿入する、すなわち、プライマリノードは、第1のEC blockを故障した記憶ノードに最初に送信しないが、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信する。
この実施例は、データ回復方法を提供し、故障した記憶ノードが回復した後に、プライマリノードは、計算を通じて故障した記憶ノードのN個の喪失したEC blockを取得し、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信する。N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリノードが新たなECストライプを再び生成し、新たなECストライプ内の第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、プライマリノードは、第2のEC blockが故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定し、第2のEC blockは第1のEC blockと同じkey値を有する。第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、プライマリノードは、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信する。この方法は、新たなデータを古いデータで置換することを回避し、回復の後に故障した記憶ノードに記憶されたEC blockが最新のバージョンであることを確保することができる。
ステップ503において、プライマリノードは、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信する。具体的に、プライマリノードは、まず、N個の喪失したEC block内の第1の喪失したEC blockを故障した記憶ノードに送信し、第nの喪失したEC blockを故障した記憶ノードに送信した後に、プライマリノードは、第nの喪失したEC blockに対応する応答メッセージを受信し、応答メッセージは、故障した記憶ノードにより送信され、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用される。第nの喪失したEC blockに対応する応答メッセージを受信した後に、プライマリノードは、次の喪失したEC blockを故障した記憶ノードに再び送信し、1≦n≦Nである。プライマリノードがN個の喪失したEC blockを故障した記憶ノードに順次に送信することは、以下のステップにまとめられてもよい。
ステップ1:プライマリノードは、第nの喪失したEC blockを故障した記憶ノードに送信する。この手順が開始するときのnの初期値は1であり、nはNより大きくない。
ステップ2:第nの喪失したEC blockを故障した記憶ノードに送信した後に、プライマリノードは、第nの喪失したEC blockに対応する応答メッセージを受信する。
ステップ3:第nの喪失したEC blockに対応する応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、ステップ1を再実行する。
プライマリノードは、ステップ1〜ステップ3を循環的に実行することにより、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに送信してもよい。
故障した記憶ノードが喪失したEC blockを成功して記憶したことを示すために応答メッセージが使用される場合、ステップ503において、故障した記憶ノードが第2のEC blockを成功して記憶した後に、プライマリノードが、記憶のために、第1のEC blockを故障した記憶ノードに送信することは、具体的に、第2のEC blockを故障した記憶ノードに送信し、第2のEC blockに関して故障した記憶ノードにより送信された応答メッセージを受信した後に、プライマリノードが、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信することであるべきである。
ステップ503において、プライマリノードは、第2のEC blockがN個の喪失したEC blockの中の故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定する必要がある。故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockは、プライマリノードにより故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含むべきであることが認識され得る。
前述のように、分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割されてもよく、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複しない。分散型記憶システムの各論理パーティションに一意のkey値が設定され、各データセグメントが入る論理パーティションに対応するkey値は、データセグメントに対応するkey値である。データ配送装置は、key値をデータセグメントに追加し、プライマリノードにデータセグメントを配送し、ECストライプのkey値は、ECストライプのEC blockで搬送されるが、データセグメントに従ってプライマリノードにより生成されたECストライプは、データセグメントと同じkey値を有する。従って、各EC blockが入る論理パーティションのkey値は、EC blockのkey値であることが認識され得る。
前述の実施例を理解するのを容易にするために、以下では、説明のために前述の実施例の具体的な適用シナリオを使用する。
分散型記憶システムは、ECストライプの形式でデータを記憶し、各ECストライプは、4つのデータブロック及び2つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含む。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。ある時点において、ノードFが故障する。3時間後に、ノードFは回復するが、データが喪失する。
ノードFは、ノードFが故障から回復したことをノードAに通知するために、回復メッセージをノードAに送信する。ノードAは、回復メッセージを受信する。
回復メッセージを受信した後に、ノードAは、ノードA、ノードB、ノードC、ノードD及びノードEにより記憶された全てのEC blockに従った計算を通じて、ノードFの200個の喪失したEC blockを取得する。
プライマリノードは、喪失したEC blockをノードFに毎回送信し、喪失したEC blockに関してノードFから応答メッセージを受信した後に、次の喪失したEC blockを送信する。このように、200個の喪失したEC blockは、ノードFに順次に送信される。
第151の喪失したEC blockがノードFに送信された後に、ノードAは、データ配送装置により配送されたデータセグメントに従って新たなECストライプを生成し、新たなECストライプ内の第1のEC blockがノードFにより記憶されるべきであると決定し、第1のEC blockのkey値は25である。
ノードAは、第151の喪失したEC blockに関してノードFにより送信された応答メッセージを受信していないため、ノードAは、key値25を有する第2のEC blockが第151〜第200の喪失したEC blockに存在するか否かを決定する。ノードAは、第190の喪失したEC blockのkey値が25であると決定する。
ノードAは、第1のEC blockをノードFに一時的に送信せず、第190の喪失したEC blockをノードFに送信して、第190の喪失したEC blockに関してノードFにより送信された応答メッセージを受信した後に、第1のEC blockをノードFに送信する。
ノードAは、全ての200個の喪失したEC blockをノードFに送信し、ノードFは、データ回復を完了する。
前述の実施例は、本発明の実施例により提供されるデータ記憶又はデータ回復方法を提供する。前述の方法を実現するための対応する装置は、以下に提供される。
本発明の実施例は、データ記憶装置を提供し、データ記憶装置は、いずれかの記憶ノードグループ内のプライマリ記憶ノードに配置され、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するように構成されたデータコーディングモジュール601であり、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを具体的に含むm+k個のターゲットEC blockを含むデータコーディングモジュール601と、記憶ノードグループ内で、m+k個のターゲットEC blockを記憶するために使用されるm+k個のターゲット記憶ノードを決定するように構成されたノード決定モジュール602であり、各ターゲット記憶ノードは、1つのターゲットEC blockを記憶するように構成されるノード決定モジュール602と、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するように構成されたメッセージ送信モジュール603であり、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むメッセージ送信モジュール603と、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するように構成されたメッセージ受信モジュール604であり、応答メッセージは、応答メッセージを現在送信しているターゲットセカンダリ記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むメッセージ受信モジュール604とを具体的に含み、メッセージ送信モジュール603は、メッセージ受信モジュール604がm+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するように更に構成され、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用される。
この実施例により提供されるデータ記憶装置では、データコーディングモジュール601は、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行し、ノード決定モジュール602は、記憶ノードグループ内のセカンダリ記憶ノードの中で、m+k個のターゲットEC blockを記憶するために使用されるm+k個のターゲット記憶ノードを決定し、メッセージ送信モジュール603は、準備メッセージをターゲット記憶ノードに送信し、メッセージ受信モジュール604は、ターゲット記憶ノードにより送信された応答メッセージを受信し、メッセージ送信モジュール603は、全てのターゲット記憶ノードの応答メッセージを受信した後に、ターゲット記憶ノードに対して、準備ログにあるターゲットEC blockを書き込むように命令するために、実行メッセージを全てのターゲット記憶ノードに送信する。この実施例により提供されるデータ記憶装置を使用することにより、ターゲットECストライプを記憶するために使用されるm+k個のターゲット記憶ノードは、記憶されるべきターゲットEC blockを直接書き込まないが、まず、記憶されるべきターゲットEC blockをローカルに生成された準備ログに書き込み、全てのターゲット記憶ノードが準備ログを生成した後に、ターゲットEC blockを書き込む。全てのターゲット記憶ノードが準備ログを生成した場合にのみ、ターゲット記憶ノードは、ターゲットEC blockを正確な位置に書き込む動作を実行する。ターゲット記憶ノードによりターゲットEC blockを書き込む過程において故障が発生した場合であっても、ターゲットEC blockは、ターゲット記憶ノードの準備ログに記憶されている。このように、ターゲットEC blockを書き込む動作が成功したか否かに拘わらず、ターゲットEC blockが喪失されないことが確保され得る。従って、ターゲット記憶ノードの一部がターゲットECストライプのターゲットEC blockを有するが、ターゲット記憶ノードの他の部分がターゲットECストライプのターゲットEC blockを有さない場合が回避され、ターゲットECストライプが一貫して記憶されることができ、分散型記憶システムの記憶の一貫性が改善される。
好ましくは、本発明の更に他の実施例では、ターゲット記憶ノードが故障したときに、ターゲット記憶ノードにより生成された準備ログが喪失されないことを確保するために、ターゲット記憶ノードは、準備ログを停電保護媒体に書き込んでもよい。
好ましくは、本発明の更に他の実施例では、プライマリノードによりターゲット記憶ノードに送信された準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、更に、準備メッセージに従ってターゲット記憶ノードにより生成された準備ログもまた、ターゲットECストライプのバージョン番号を含む。実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように具体的に命令する。
好ましくは、本発明の更に他の実施例では、データ記憶装置は、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するように構成されたバージョン決定モジュール605であり、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含むバージョン決定モジュール605を更に含んでもよい。メッセージ送信モジュール603は、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信し、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するように具体的に構成され、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用される。
本発明の実施例は、セカンダリノードに配置されるデータ記憶装置を更に提供する。図7を参照すると、データ記憶装置の構成は、プライマリノードにより送信された準備メッセージを受信するように構成されたメッセージ受信モジュール701であり、準備メッセージは、データ記憶装置が位置するセカンダリ記憶ノードにより記憶されるべきターゲットEC blockを含むメッセージ受信モジュール701と、準備メッセージに従って準備ログを生成するように構成されたログ生成モジュール702であり、準備ログは、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockを含むログ生成モジュール702と、応答メッセージをプライマリ記憶ノードに送信するように構成されたメッセージ送信モジュール703であり、応答メッセージは、セカンダリ記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用されるメッセージ送信モジュール703とを含み、メッセージ受信モジュール701は、プライマリ記憶ノードにより送信された実行メッセージを受信するように更に構成され、実行メッセージに従って準備ログに含まれるターゲットEC blockを書き込むように構成されたデータ書き込みモジュール704を含む。
この実施例により提供されるデータ記憶装置では、メッセージ受信モジュール701は、プライマリノードにより送信された準備メッセージを受信し、ログ生成モジュール702は、準備メッセージに従って準備ログを生成し、メッセージ送信モジュール703は、応答メッセージをプライマリノードに送信し、メッセージ受信モジュール701は、プライマリノードにより送信された実行メッセージを受信し、データ書き込みモジュール704は、実行メッセージに従って準備ログに含まれるターゲットEC blockを書き込む。この実施例により提供されるデータ記憶装置は、記憶されるべきターゲットEC blockを直接書き込まないが、まず、記憶されるべきターゲットEC blockをローカルに生成された準備ログに書き込み、プライマリノードにより送信された実行メッセージを受信した後に、ターゲットEC blockを書き込む。従って、セカンダリノードがターゲットEC blockを書き込む過程において故障した場合であっても、ターゲットEC blockは、セカンダリノードの準備ログに記憶されている。このように、ターゲットEC blockを書き込む動作が成功したか否かに拘わらず、ターゲットEC blockが喪失されないことが確保され得る。プライマリノードにより決定された全てのターゲット記憶ノードにおけるターゲットEC blockが全く喪失されない場合、ターゲット記憶ノードの一部がターゲットECストライプのターゲットEC blockを有するが、ターゲット記憶ノードの他の部分がターゲットECストライプのターゲットEC blockを有さない場合が回避され、ターゲットECストライプが一貫して記憶されることができ、分散型記憶システムの記憶の一貫性が改善される。
好ましくは、本発明の更に他の実施例では、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockは、プライマリ記憶ノードにより生成されたターゲットECストライプ内のデータブロック又はパリティブロックであり、準備メッセージは、プライマリノードにより生成されたターゲットECストライプのバージョン番号を更に含み、更に、準備メッセージに従ってセカンダリノードにより生成された準備ログもまた、ターゲットECストライプのバージョン番号を含む。セカンダリノードはまた、実行メッセージに従ってターゲットEC blockを書き込むときにターゲットECストライプのバージョン番号を書き込む。
好ましくは、本発明の更に他の実施例では、メッセージ受信モジュール701は、プライマリ記憶ノードにより送信された削除メッセージを受信するように更に構成され、データ記憶装置は、削除メッセージに従って準備ログを削除するように構成されたデータ削除モジュール705を更に含んでもよい。
記憶ノードのアイデンティティがプライマリノードであるかセカンダリノードであるかは、自由に設定されてもよく、1つの記憶ノードは、記憶ノードグループ内でプライマリノードあり、また、他の記憶ノードグループ内でセカンダリノードでもよい。従って、図6及び図7に示すデータ記憶装置は、同じ記憶ノードに位置してもよい。
前述の実施例を理解するのを容易にするために、以下では、説明のための例として前述の実施例の具体的な適用シナリオを使用する。具体的な手順について、図4を参照する。
分散型記憶システムは、ECストライプの形式でデータを記憶し、各ECストライプは、4つのデータブロック及び2つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含む。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。
401.ターゲットECストライプを生成する。ノードAは、データ配送装置により配送されたデータセグメントを受信し、ノードAのデータコーディングモジュールは、ターゲットECストライプを取得するために、データセグメントにおいてECコーディングを実行する。ターゲットECストライプのバージョン番号は3であり、ターゲットECストライプのデータ部のアドレス範囲は4M〜8Mである。
402.ターゲット記憶ノードを決定する。ノードAのノード決定モジュールは、ターゲットECストライプの6個のEC blockを記憶するために使用されるターゲット記憶ノードがノードA〜Fであると決定する。
403.準備メッセージを送信する。ノードAのメッセージ送信モジュールは、準備メッセージをノードA〜Fに送信し、各ノードに送信される準備メッセージは、ターゲットEC blockと、ターゲットECストライプのバージョン番号とを搬送し、ノードA〜Fのメッセージ受信モジュールは、準備メッセージを受信する。
404.準備ログを生成する。ノードA〜Fのログ生成モジュールは、準備ログを生成し、準備ログは、記憶されるべきターゲットEC blockと、ターゲットECストライプのバージョン番号とを含む。
405.応答メッセージを送信する。ノードA〜Fのメッセージ送信モジュールは、準備ログを生成した後に、応答メッセージをノードAに送信する。ノードAのメッセージ受信モジュールは、ノードA〜Fにより送信された応答メッセージを受信する。
406.実行メッセージをノードA〜Fに送信する。ノードA〜Fにより送信された応答メッセージを受信した後に、ノードAのメッセージ送信モジュールは、実行メッセージをノードA〜Fに送信し、ノードA〜Fのメッセージ受信モジュールは、実行メッセージを受信する。
407.ノードA〜Eは、準備ログにあるターゲットEC block及びバージョン番号を書き込み、ノードFは故障している。ノードAが実行メッセージを送信した後に、ノードA〜Eのデータ書き込みモジュールは、準備ログにあるターゲットEC block及びバージョン番号を書き込み、ノードFは、実行メッセージを受信する過程において故障している。
408.ターゲットECストライプのバージョン番号が同じであると決定する。ノードAは、ノードFが故障していると決定し、従って、ノードFが故障から回復した後に、ノードAのバージョン決定モジュールは、ノードA〜FにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定する。ノードA〜Eは準備ログを有さず、記憶されたターゲットEC blockで搬送されたターゲットECストライプのバージョン番号は3である。ノードFは準備ログを有し、準備ログ内のターゲットEC blockで搬送されたターゲットECストライプのバージョン番号は3である。
409.ノードAのメッセージ送信モジュールは、実行メッセージをノードFに送信する。ノードFのメッセージ受信モジュールは、実行メッセージを受信する。
410.ノードFのデータ書き込みモジュールは、準備ログにあるターゲットEC block及びバージョン番号を書き込む。
本発明の実施例は、故障した記憶ノードの喪失したデータを回復するように構成されたデータ回復装置を更に提供し、データ回復装置は、故障した記憶ノードが属する記憶ノードグループのプライマリ記憶ノードに配置される。図8を参照すると、データ回復装置の具体的な構成は、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信するように構成された回復メッセージモジュール801であり、回復メッセージは、故障した記憶ノードが故障から回復したことを示すために使用される回復メッセージモジュール801と、故障した記憶ノードが属する記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するように構成されたデータ計算モジュール802であり、Nは正の整数であるデータ計算モジュール802と、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するように構成されたデータ送信モジュール803と、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定するように構成されたkey値決定モジュール804とを含み、データ送信モジュール803は、第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在する場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するように更に構成される。
この実施例は、データ回復装置を提供し、データ計算モジュール802は、故障した記憶ノードが回復した後に、計算を通じて故障した記憶ノードのN個の喪失したEC blockを取得し、データ送信モジュール803は、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信する。N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリノードが新たなECストライプを生成し、新たなECストライプ内の第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、key値決定モジュール804は、第2のEC blockが故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定し、第2のEC blockは第1のEC blockと同じkey値を有する。第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、データ送信モジュール803は、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信する。この方法は、新たなデータを古いデータで置換することを回避し、回復の後に故障した記憶ノードに記憶されたEC blockが最新のバージョンであることを確保することができる。
好ましくは、本発明の更に他の実施例では、データ送信モジュール803は、第nの喪失したEC blockを故障した記憶ノードに送信するように具体的に構成され、1≦n≦Nであり、第nの喪失したEC blockに対応する応答メッセージを受信するように具体的に構成され、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用され、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するように具体的に構成される。
好ましくは、本発明の更に他の実施例では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
好ましくは、本発明の更に他の実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
前述の実施例を理解するのを容易にするために、以下では、説明のために前述の実施例の具体的な適用シナリオを使用する。
分散型記憶システムは、ECストライプの形式でデータを記憶し、各ECストライプは、4つのデータブロック及び2つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含む。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。ある時点において、ノードFが故障する。3時間後に、ノードFは回復するが、データが喪失する。
ノードFは、ノードFが故障から回復したことをノードAに通知するために、回復メッセージをノードAに送信する。ノードAの回復メッセージモジュール801は、回復メッセージを受信する。
ノードAが回復メッセージを受信した後に、データ計算モジュール802は、ノードA、ノードB、ノードC、ノードD及びノードEにより記憶された全てのEC blockに従った計算を通じて、ノードFの200個の喪失したEC blockを取得する。
ノードAのデータ送信モジュール803は、喪失したEC blockをノードFに毎回送信し、喪失したEC blockに関してノードFから応答メッセージを受信した後に、次の喪失したEC blockを送信する。このように、200個の喪失したEC blockは、ノードFに順次に送信される。
データ送信モジュール803が第151の喪失したEC blockをノードFに送信した後に、ノードAは、データ配送装置により配送されたデータセグメントに従って新たなECストライプを生成し、新たなECストライプ内の第1のEC blockがノードFにより記憶されるべきであると決定し、第1のEC blockのkey値は25である。
ノードAは、第151の喪失したEC blockに関してノードFにより送信された応答メッセージを受信していないため、ノードAのkey値決定モジュール804は、key値25を有する第2のEC blockが第151〜第200の喪失したEC blockに存在するか否かを決定する。ノードAは、第190の喪失したEC blockのkey値が25であると決定する。
ノードAのデータ送信モジュール803は、第1のEC blockをノードFに一時的に送信せず、第190の喪失したEC blockをノードFに送信して、第190の喪失したEC blockに関してノードFにより送信された応答メッセージを受信した後に、第1のEC blockをノードFに送信する。
ノードAのデータ送信モジュール803は、全ての200個の喪失したEC blockをノードFに送信し、ノードFは、データ回復を完了する。
本発明の実施例における各装置は、モジュール機能エンティティの観点から前述された。以下では、ハードウェア処理の観点から本発明の実施例における装置を説明する。
図9を参照すると、本発明の実施例により提供されるデータ記憶装置の他の実施例は、入力装置901と、出力装置902と、プロセッサ903と、メモリ904とを含む(データ記憶装置900は、1つ以上のプロセッサ903を含んでもよく、図9では、1つのプロセッサ903が一例として使用される)。本発明の或る実施例では、入力装置901、出力装置902、プロセッサ903及びメモリ904は、バスにより或いは他の方式で接続されてもよく、バスによる接続が図9において一例として使用される。
メモリ904に記憶された動作命令を呼び出すことにより、プロセッサ903は、以下のステップ、すなわち、記憶されるべきデータセグメントを受信し、ターゲットECストライプを取得するために、記憶されるべきデータセグメントにおいてECコーディングを実行するステップであり、記憶されるべきデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、ターゲットECストライプは、m+k個のターゲットEC blockを含み、m+k個のターゲットEC blockは、m個のターゲットデータブロック及びk個のターゲットパリティブロックを含むステップと、m+k個のターゲット記憶ノードを決定するステップであり、m+k個のターゲット記憶ノードは、m+k個のターゲットEC blockを記憶するように構成され、各ターゲット記憶ノードは、ターゲットEC blockの1つを記憶するステップと、準備メッセージをm+k個のターゲット記憶ノードに別々に送信するステップであり、各準備メッセージは、各ターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノードのいずれかのターゲット記憶ノードにより送信された応答メッセージを受信するステップであり、応答メッセージは、応答メッセージを現在送信しているターゲット記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用され、準備ログは、応答メッセージを現在送信しているターゲット記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードの応答メッセージを受信した後に、実行メッセージをm+k個のターゲット記憶ノードに送信するステップであり、実行メッセージは、m+k個のターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを実行するように構成される。
本発明の或る実施例では、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備メッセージに従ってターゲットセカンダリ記憶ノードにより生成された準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、ターゲット記憶ノードに対して、準備メッセージにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の或る実施例では、プロセッサ903は、以下のステップ、すなわち、故障した記憶ノードがm+k個のターゲット記憶ノードに存在することが検出された場合、故障した記憶ノードの故障回復の後に、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じであるか否かを決定するステップであり、m+k個のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号は、準備ログを生成したターゲット記憶ノードにおける準備ログ内のターゲットECストライプのバージョン番号及び/又は準備ログを有さないターゲット記憶ノードにより記憶されたターゲットECストライプのバージョン番号を含むステップと、m+k個のターゲット記憶ノード内の全てのターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が同じである場合、実行メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、実行メッセージは、ターゲット記憶ノードに対して、準備ログに含まれるターゲットEC blockを書き込むように命令するために使用されるステップとを更に実行する。
本発明の或る実施例では、プロセッサ903は、以下のステップ、すなわち、m+k個のターゲット記憶ノード内のターゲット記憶ノードにおけるターゲットECストライプのバージョン番号が異なる場合、削除メッセージを、準備ログを生成したターゲット記憶ノードに送信するステップであり、削除メッセージは、ターゲット記憶ノードに対して、準備ログを削除するように命令するために使用されるステップを更に実行する。
図10を参照すると、本発明の実施例により提供されるデータ記憶装置の他の実施例は、入力装置1001と、出力装置1002と、プロセッサ1003と、メモリ1004とを含む(データ記憶装置1000は、1つ以上のプロセッサ1003を含んでもよく、図10では、1つのプロセッサ1003が一例として使用される)。本発明の或る実施例では、入力装置1001、出力装置1002、プロセッサ1003及びメモリ1004は、バスにより或いは他の方式で接続されてもよく、バスによる接続が図10において一例として使用される。
メモリ1004に記憶された動作命令を呼び出すことにより、プロセッサ1003は、以下のステップ、すなわち、プライマリ記憶ノードにより送信された準備メッセージを受信するステップであり、準備メッセージは、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、準備メッセージに従って準備ログを生成するステップであり、準備ログは、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockを含むステップと、応答メッセージをプライマリ記憶ノードに送信するステップであり、応答メッセージは、セカンダリ記憶ノードが準備メッセージに従って準備ログを生成したことを示すために使用されるステップと、プライマリ記憶ノードにより送信された実行メッセージを受信するステップと、実行メッセージに従って準備ログに含まれるターゲットEC blockを書き込むステップとを実行するように構成される。
本発明の或る実施例では、セカンダリ記憶ノードにより記憶されるべきターゲットEC blockは、プライマリ記憶ノードにより生成されたターゲットECストライプ内のデータブロック又はパリティブロックであり、準備メッセージは、ターゲットECストライプのバージョン番号を更に含み、準備メッセージに従ってセカンダリ記憶ノードにより生成された準備ログは、ターゲットECストライプのバージョン番号を更に含み、実行メッセージは、ターゲット記憶ノードに対して、準備ログにあるターゲットEC block及びターゲットECストライプのバージョン番号を書き込むように命令するために具体的に使用される。
本発明の或る実施例では、プロセッサ1003は、以下のステップ、すなわち、プライマリ記憶ノードにより送信された削除メッセージを受信するステップと、削除メッセージに従って準備ログを削除するステップとを更に実行する。
図11を参照すると、本発明の実施例により提供されるデータ回復装置の他の実施例は、入力装置1101と、出力装置1102と、プロセッサ1103と、メモリ1104とを含む(データ回復装置1100は、1つ以上のプロセッサ1103を含んでもよく、図11では、1つのプロセッサ1103が一例として使用される)。本発明の或る実施例では、入力装置1101、出力装置1102、プロセッサ1103及びメモリ1104は、バスにより或いは他の方式で接続されてもよく、バスによる接続が図11において一例として使用される。
メモリ1104に記憶された動作命令を呼び出すことにより、プロセッサ1103は、以下のステップ、すなわち、故障した記憶ノードの故障回復の後に、故障した記憶ノードにより送信された回復メッセージを受信するステップと、故障した記憶ノードが属する記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、故障した記憶ノードのN個の喪失したEC blockを取得するステップであり、Nは正の整数であるステップと、記憶を実行するために、N個の喪失したEC blockを故障した記憶ノードに順次に送信するステップと、N個の喪失したEC blockを故障した記憶ノードに順次に送信する過程において、プライマリ記憶ノードが第1のEC blockを生成し、第1のEC blockが故障した記憶ノードにより記憶されるべきであると決定した場合、第1のEC blockと同じkey値を有する第2のEC blockが、故障した記憶ノードにより現在成功して記憶されていない喪失したEC blockに存在するか否かを決定するステップと、第2のEC blockが存在すると決定された場合、故障した記憶ノードが第2のEC blockを成功して記憶した後に、記憶を実行するために、第1のEC blockを故障した記憶ノードに送信するステップとを実行するように構成される。
本発明の或る実施例では、プロセッサ1103は、以下のステップ、すなわち、第nの喪失したEC blockを故障した記憶ノードに送信するステップであり、1≦n≦Nであるステップと、第nの喪失したEC blockに対応する応答メッセージを受信するステップであり、応答メッセージは、故障した記憶ノードにより送信され、応答メッセージは、故障した記憶ノードが第nの喪失したEC blockを成功して記憶したことを示すために使用されるステップと、第nの喪失したEC blockに関して故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを故障した記憶ノードに送信するステップを再実行するステップとを更に実行する。
本発明の或る実施例では、現在成功して記憶されていない喪失したEC blockは、故障した記憶ノードに現在送信されていない喪失したEC blockと、故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない喪失したEC blockとを含む。
本発明の或る実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、各論理パーティションは、k個のデータブロックのサイズであり、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、EC blockのkey値である。
本発明の実施例は、図6〜図11のいずれか1つ以上に示す装置を含む記憶ノードを更に提供する。
便利且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応する処理に参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明確に認識され得る。
本出願で提供される複数の実施例では、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが認識されるべきである。例えば、記載の装置の実施例は単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、他のシステムに統合されてもよく、いくつかの機能が無視されてもよく実行されなくてもよい。更に、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを通じて実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電気的、機械的又は他の形式で実現されてもよい。
別々の部分として記載したユニットは、物理的に別々でもよく別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく物理的なユニットでなくてもよく、1つの位置に存在してもよく、複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、実施例の対策の目的を達成するために、実際のニーズに従って選択されてもよい。
更に、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、ユニットのそれぞれが物理的に単独で存在してもよく、2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、ソフトウェアの機能ユニットの形式で実現されてもよい。
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、基本的に本発明の技術的対策若しくは従来技術に寄与する部分、又は技術的対策の一部若しくは全部は、ソフトウェアプロダクトの形式で実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス(パーソナルコンピュータ、サーバ又はネットワークデバイス等でもよい)に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令する複数の命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
前述の実施例は、単に本発明の技術的対策を説明することを意図するものであり、本発明を限定することを意図するものではない。前述の実施例を参照して本発明について詳細に説明したが、当業者は、本発明の実施例の技術的対策の範囲を逸脱することなく、依然として前述の実施例に記載の技術的対策に変更を行ってもよく、そのいくつかの技術的特徴に等価置換を行ってもよいことを認識するべきである。

Claims (9)

  1. 分散型記憶システムに適用されるデータ回復方法であり、前記分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記m個のデータブロック及び前記k個のパリティブロックは、各ECストライプのEC blockを構成し、各ECストライプはkey値に対応し、データ部の同じアドレス範囲を有するECストライプのkey値は同じであり、データ部の異なるアドレス範囲を有するECストライプのkey値は異なり、前記分散型記憶システムは、複数の記憶ノードグループを有し、各記憶ノードグループは、m+k個未満ではない記憶ノードを有し、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、故障した記憶ノードが前記記憶ノードグループのいずれか1つの中のセカンダリ記憶ノードに存在する場合、前記方法は、前記記憶ノードグループの前記いずれか1つの中のプライマリ記憶ノードにより実行されるデータ回復方法であって、
    前記故障した記憶ノードの故障回復の後に、前記故障した記憶ノードにより送信された回復メッセージを受信するステップと、
    前記記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、前記故障した記憶ノードのN個の喪失したEC blockを取得するステップであり、前記Nは正の整数であるステップと、
    記憶のために、前記N個の喪失したEC blockを前記故障した記憶ノードに順次に送信するステップと、
    前記N個の喪失したEC blockを前記故障した記憶ノードに順次に送信する過程において、前記プライマリ記憶ノードが第1のEC blockを生成し、前記第1のEC blockが前記故障した記憶ノードにより記憶されるべきであると決定した場合、前記第1のEC blockと同じkey値を有する第2のEC blockが、前記故障した記憶ノードにより現在成功して記憶されていない前記喪失したEC blockに存在するか否かを決定するステップと、
    前記第2のEC blockが存在すると決定された場合、前記故障した記憶ノードが前記第2のEC blockを成功して記憶した後に、記憶を実行するために、前記第1のEC blockを前記故障した記憶ノードに送信するステップと
    を有するデータ回復方法。
  2. 記憶のために、前記N個の喪失したEC blockを前記故障した記憶ノードに順次に送信するステップは、
    第nの喪失したEC blockを前記故障した記憶ノードに送信するステップであり、1≦n≦Nであるステップと、
    前記第nの喪失したEC blockに対応する応答メッセージを受信するステップであり、前記応答メッセージは、前記故障した記憶ノードにより送信され、前記応答メッセージは、前記故障した記憶ノードが前記第nの喪失したEC blockを成功して記憶したことを示すために使用されるステップと、
    前記第nの喪失したEC blockに関して前記故障した記憶ノードの前記応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを前記故障した記憶ノードに送信するステップを再実行するステップと
    を有する、請求項1に記載のデータ回復方法。
  3. 現在成功して記憶されていない前記喪失したEC blockは、前記故障した記憶ノードに現在送信されていない前記喪失したEC blockと、前記故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない前記喪失したEC blockとを有する、請求項2に記載のデータ回復方法。
  4. 前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、各論理パーティションは、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、前記EC blockのkey値である、請求項1ないし3のうちいずれか1項に記載のデータ回復方法。
  5. 分散型記憶システムに適用されるデータ回復装置であり、前記分散型記憶システムは、イレージャーコーディング(EC)ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記m個のデータブロック及び前記k個のパリティブロックは、各ECストライプのEC blockを構成し、各ECストライプはkey値に対応し、データ部の同じアドレス範囲を有するECストライプのkey値は同じであり、データ部の異なるアドレス範囲を有するECストライプのkey値は異なり、前記分散型記憶システムは、複数の記憶ノードグループを有し、各記憶ノードグループは、m+k個未満ではない記憶ノードを有し、1つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記プライマリ記憶ノードを除く各記憶ノードグループ内のノードはセカンダリ記憶ノードであり、m及びkは共に正の整数であり、故障した記憶ノードが前記分散型記憶システム内のいずれかの記憶ノードグループ内のセカンダリ記憶ノードに存在する場合、前記データ回復装置は、前記故障した記憶ノードが属する前記記憶ノードグループ内のプライマリ記憶ノードに配置されるデータ回復装置であって、
    前記故障した記憶ノードの故障回復の後に、前記故障した記憶ノードにより送信された回復メッセージを受信するように構成された回復メッセージモジュールと、
    前記記憶ノードグループ内の故障していない記憶ノードにより記憶されたEC blockに従った計算を通じて、前記故障した記憶ノードのN個の喪失したEC blockを取得するように構成されたデータ計算モジュールであり、前記Nは正の整数であるデータ計算モジュールと、
    記憶を実行するために、前記N個の喪失したEC blockを前記故障した記憶ノードに順次に送信するように構成されたデータ送信モジュールと、
    前記N個の喪失したEC blockを前記故障した記憶ノードに順次に送信する過程において、前記プライマリ記憶ノードが第1のEC blockを生成し、前記第1のEC blockが前記故障した記憶ノードにより記憶されるべきであると決定した場合、前記第1のEC blockと同じkey値を有する第2のEC blockが、前記故障した記憶ノードにより現在成功して記憶されていない前記喪失したEC blockに存在するか否かを決定するように構成されたkey値決定モジュールと
    を有し、
    前記データ送信モジュールは、前記第2のEC blockが存在すると前記key値決定モジュールが決定した場合、前記故障した記憶ノードが前記第2のEC blockを成功して記憶した後に、記憶を実行するために、前記第1のEC blockを前記故障した記憶ノードに送信するように更に構成されるデータ回復装置。
  6. 前記データ送信モジュールは、第nの喪失したEC blockを前記故障した記憶ノードに送信するように構成され、1≦n≦Nであり、
    前記第nの喪失したEC blockに関して前記故障した記憶ノードの応答メッセージを受信した後に、n<Nである場合、nの値に1を加算し、第nの喪失したEC blockを前記故障した記憶ノードに送信するステップを再実行するように構成され、前記応答メッセージは、前記故障した記憶ノードが前記第nの喪失したEC blockを成功して記憶したことを示すために使用される、請求項5に記載のデータ回復装置。
  7. 現在成功して記憶されていない前記喪失したEC blockは、前記故障した記憶ノードに現在送信されていない前記喪失したEC blockと、前記故障した記憶ノードに現在送信されているが、それに対応する応答メッセージが受信されていない前記喪失したEC blockとを有する、請求項6に記載のデータ回復装置。
  8. 前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、各論理パーティションは、互いに重複せず、各論理パーティションは、1つのkey値に一意に対応し、各EC blockが入る論理パーティションのkey値は、前記EC blockのkey値である、請求項5ないし7のうちいずれか1項に記載のデータ回復装置。
  9. コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、
    コンピュータのプロセッサが前記コンピュータ実行可能命令を実行した場合、前記コンピュータは、請求項1ないし4のうちいずれか1項に記載の方法を実行するコンピュータ読み取り可能記憶媒体。
JP2017211519A 2015-06-04 2017-11-01 データ記憶方法、データ回復方法、関係する装置及びシステム Active JP6649340B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510304374.7A CN105095013B (zh) 2015-06-04 2015-06-04 数据存储方法、恢复方法、相关装置以及系统
CN201510304374.7 2015-06-04

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016111409A Division JP6347802B2 (ja) 2015-06-04 2016-06-03 データ記憶方法、データ回復方法、関係する装置及びシステム

Publications (2)

Publication Number Publication Date
JP2018022530A JP2018022530A (ja) 2018-02-08
JP6649340B2 true JP6649340B2 (ja) 2020-02-19

Family

ID=54575514

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016111409A Active JP6347802B2 (ja) 2015-06-04 2016-06-03 データ記憶方法、データ回復方法、関係する装置及びシステム
JP2017211519A Active JP6649340B2 (ja) 2015-06-04 2017-11-01 データ記憶方法、データ回復方法、関係する装置及びシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016111409A Active JP6347802B2 (ja) 2015-06-04 2016-06-03 データ記憶方法、データ回復方法、関係する装置及びシステム

Country Status (5)

Country Link
US (3) US9710331B2 (ja)
EP (2) EP3575964B1 (ja)
JP (2) JP6347802B2 (ja)
CN (2) CN105095013B (ja)
BR (2) BR122018006762B8 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095013B (zh) * 2015-06-04 2017-11-21 华为技术有限公司 数据存储方法、恢复方法、相关装置以及系统
WO2017101016A1 (zh) * 2015-12-15 2017-06-22 华为技术有限公司 用于存储节点同步业务请求的方法和装置
EP3208714B1 (en) * 2015-12-31 2019-08-21 Huawei Technologies Co., Ltd. Data reconstruction method, apparatus and system in distributed storage system
JP6542152B2 (ja) * 2016-03-29 2019-07-10 東芝メモリ株式会社 オブジェクトストレージ、コントローラおよびプログラム
CN105893169A (zh) * 2016-03-31 2016-08-24 乐视控股(北京)有限公司 一种基于纠删码的文件存储方法和系统
CN107562368B (zh) * 2016-06-30 2019-11-22 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
CN107562569B (zh) * 2016-06-30 2020-09-25 杭州海康威视数字技术股份有限公司 一种数据重构方法及装置
CN107590019B (zh) * 2016-07-07 2021-03-16 北京金山云网络技术有限公司 一种数据存储的方法和装置
CN106201766B (zh) * 2016-07-25 2018-03-20 深圳市中博科创信息技术有限公司 数据存储控制方法及数据服务器
CN107885612B (zh) * 2016-09-30 2020-02-21 华为技术有限公司 数据处理方法和系统及装置
CN106708651B (zh) * 2016-11-16 2020-09-11 北京三快在线科技有限公司 基于纠删码的部分写入方法及装置、存储介质、设备
CN106776130B (zh) * 2016-11-30 2020-07-28 华为技术有限公司 一种日志恢复方法、存储装置和存储节点
CN108614670B (zh) * 2016-12-13 2020-07-03 杭州海康威视数字技术股份有限公司 一种信息处理方法及装置
US10445199B2 (en) * 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
CN107197324B (zh) * 2017-05-15 2020-11-20 苏州浪潮智能科技有限公司 一种分布式文件系统的视频容错方法及装置
CN107273048B (zh) * 2017-06-08 2020-08-04 浙江大华技术股份有限公司 一种数据写入方法及装置
JP6807457B2 (ja) * 2017-06-15 2021-01-06 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
CN110337633A (zh) * 2017-06-30 2019-10-15 华为技术有限公司 一种数据存储方法及设备
CN107609161A (zh) * 2017-09-26 2018-01-19 北京思特奇信息技术股份有限公司 一种数据写入、读取方法和系统
EP3495939B1 (en) * 2017-10-13 2021-06-30 Huawei Technologies Co., Ltd. Method and device for storing data in distributed block storage system, and computer readable storage medium
CN111666043A (zh) * 2017-11-03 2020-09-15 华为技术有限公司 一种数据存储方法及设备
US10379950B2 (en) * 2017-11-30 2019-08-13 Western Digital Technologies, Inc. Updating write-in-place storage devices
CN108780386B (zh) * 2017-12-20 2020-09-04 华为技术有限公司 一种数据存储的方法、装置和系统
CN109962797B (zh) * 2017-12-23 2022-01-11 华为技术有限公司 一种存储系统和推送业务视图的方法
CN110309012B (zh) * 2018-03-27 2021-01-26 杭州海康威视数字技术股份有限公司 一种数据处理方法及其装置
CN108769146B (zh) * 2018-05-11 2022-01-21 北京奇虎科技有限公司 一种基于区块链的数据传输方法、装置及区块链系统
US10942807B2 (en) * 2018-06-12 2021-03-09 Weka.IO Ltd. Storage system spanning multiple failure domains
CN110825552B (zh) * 2018-08-14 2021-04-09 华为技术有限公司 数据存储方法、数据恢复方法、节点及存储介质
CN110865901B (zh) * 2018-08-28 2021-05-04 华为技术有限公司 组建ec条带的方法和装置
US10769031B2 (en) * 2018-11-26 2020-09-08 Toyota Jidosha Kabushiki Kaisha Lost data recovery for vehicle-to-vehicle distributed data storage systems
CN109814803B (zh) * 2018-12-17 2022-12-09 深圳创新科技术有限公司 一种分布式存储系统中容错能力自适应调整方法和装置
CN112714910B (zh) * 2018-12-22 2022-12-27 华为云计算技术有限公司 分布式存储系统及计算机程序产品
CN109933374B (zh) * 2019-01-23 2021-10-22 西安微电子技术研究所 一种计算机启动方法
CN110347640B (zh) * 2019-06-26 2022-02-18 北京三快在线科技有限公司 文件储存方法、装置、存储介质和电子设备
CN110515541B (zh) * 2019-07-29 2020-10-27 西安交通大学 分布式存储中纠删码非对齐数据更新方法
CN113760186A (zh) * 2019-07-30 2021-12-07 华为技术有限公司 数据存储方法、装置、计算设备、存储系统及存储介质
CN111625400B (zh) * 2020-05-26 2024-01-16 平安科技(深圳)有限公司 一种数据冗余处理方法、装置及存储介质
CN111935243B (zh) * 2020-07-17 2023-06-30 杭州海康机器人股份有限公司 一种数据信息的传输方法、装置、系统及设备
CN112783689B (zh) * 2021-02-08 2022-09-02 上海交通大学 一种基于lrc编码的部分条带写优化方法及装置
CN113258936B (zh) * 2021-06-03 2021-10-15 成都信息工程大学 一种基于循环移位的双重编码的构造方法
CN114064346B (zh) * 2021-11-02 2022-07-12 北京大道云行科技有限公司 一种纠删码数据一致性保障方法及系统
US11934280B2 (en) 2021-11-16 2024-03-19 Netapp, Inc. Use of cluster-level redundancy within a cluster of a distributed storage management system to address node-level errors
CN114221975B (zh) * 2021-11-30 2024-01-30 浙江大华技术股份有限公司 基于smr盘的云存储数据恢复方法及装置、电子设备
CN114415976B (zh) * 2022-03-28 2022-07-01 深圳市杉岩数据技术有限公司 一种分布式数据存储系统与方法
CN114844910B (zh) * 2022-04-19 2023-07-25 重庆紫光华山智安科技有限公司 分布式存储系统的数据传输方法、系统、设备及介质

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785B1 (en) * 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
JP3155836B2 (ja) * 1992-10-08 2001-04-16 富士通株式会社 ディスクアレイ装置
US6223323B1 (en) * 1998-07-17 2001-04-24 Ncr Corporation Method for storing parity information in a disk array storage system
US6725392B1 (en) * 1999-03-03 2004-04-20 Adaptec, Inc. Controller fault recovery system for a distributed file system
US6275898B1 (en) * 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6643748B1 (en) * 2000-04-20 2003-11-04 Microsoft Corporation Programmatic masking of storage units
US6985995B2 (en) * 2002-03-29 2006-01-10 Panasas, Inc. Data file migration from a mirrored RAID to a non-mirrored XOR-based RAID without rewriting the data
US6938123B2 (en) * 2002-07-19 2005-08-30 Storage Technology Corporation System and method for raid striping
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
US7263629B2 (en) * 2003-11-24 2007-08-28 Network Appliance, Inc. Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array
US8726129B1 (en) * 2004-07-23 2014-05-13 Hewlett-Packard Development Company, L.P. Methods of writing and recovering erasure coded data
US7870464B2 (en) * 2004-11-02 2011-01-11 International Business Machines Corporation System and method for recovery of data for a lost sector in a storage system
US8055845B2 (en) * 2005-02-03 2011-11-08 Hewlett-Packard Development Company, L.P. Method of cooperative caching for distributed storage system
US7370261B2 (en) * 2005-05-09 2008-05-06 International Business Machines Corporation Convolution-encoded raid with trellis-decode-rebuild
US7725655B2 (en) * 2006-02-16 2010-05-25 Hewlett-Packard Development Company, L.P. Method of operating distributed storage system in which data is read from replicated caches and stored as erasure-coded data
US7761663B2 (en) * 2006-02-16 2010-07-20 Hewlett-Packard Development Company, L.P. Operating a replicated cache that includes receiving confirmation that a flush operation was initiated
US7743276B2 (en) * 2006-09-27 2010-06-22 Hewlett-Packard Development Company, L.P. Sufficient free space for redundancy recovery within a distributed data-storage system
US8751859B2 (en) * 2007-05-10 2014-06-10 International Business Machines Corporation Monitoring lost data in a storage system
US7925927B2 (en) * 2008-06-23 2011-04-12 Hewlett-Packard Development Company, L.P. Simulator for determining data loss in a fault tolerant system
US8051205B2 (en) * 2008-10-13 2011-11-01 Applied Micro Circuits Corporation Peer-to-peer distributed storage
CN101488104B (zh) * 2009-02-26 2011-05-04 北京云快线软件服务有限公司 一种实现高效安全存储的系统和方法
US8037391B1 (en) * 2009-05-22 2011-10-11 Nvidia Corporation Raid-6 computation system and method
US8132073B1 (en) * 2009-06-30 2012-03-06 Emc Corporation Distributed storage system with enhanced security
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8103904B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
US8156368B2 (en) * 2010-02-22 2012-04-10 International Business Machines Corporation Rebuilding lost data in a distributed redundancy data storage system
US8839076B2 (en) * 2011-03-31 2014-09-16 International Business Machines Corporation Encoding a data word for writing the encoded data word in a multi-level solid state memory
WO2011157144A2 (zh) * 2011-05-31 2011-12-22 华为技术有限公司 数据读写方法、装置和存储系统
US8688650B2 (en) * 2011-08-01 2014-04-01 Actifio, Inc. Data fingerprinting for copy accuracy assurance
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
CN102624866B (zh) * 2012-01-13 2014-08-20 北京大学深圳研究生院 一种存储数据的方法、装置及分布式网络存储系统
CN103577274B (zh) * 2012-07-31 2016-07-06 国际商业机器公司 管理存储器阵列的方法和装置
CN103051691B (zh) * 2012-12-12 2015-09-09 华为技术有限公司 分区分配方法、装置以及分布式存储系统
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe
CN103984607A (zh) * 2013-02-08 2014-08-13 华为技术有限公司 分布式存储的方法、装置和系统
JP6089884B2 (ja) * 2013-03-29 2017-03-08 富士通株式会社 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
CN104111880B (zh) * 2013-04-16 2016-03-02 华中科技大学 一种容三盘失效纠删码的单数据盘失效快速重建方法
WO2015057240A1 (en) * 2013-10-18 2015-04-23 Hitachi Data Systems Engineering UK Limited Target-driven independent data integrity and redundancy recovery in a shared-nothing distributed storage system
KR20150061258A (ko) * 2013-11-27 2015-06-04 한국전자통신연구원 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
CN103699494B (zh) * 2013-12-06 2017-03-15 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
US9495255B2 (en) * 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9870284B2 (en) * 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
CN105095013B (zh) * 2015-06-04 2017-11-21 华为技术有限公司 数据存储方法、恢复方法、相关装置以及系统

Also Published As

Publication number Publication date
EP3109757B1 (en) 2019-01-23
US20160357634A1 (en) 2016-12-08
BR122018006762B1 (pt) 2020-11-24
EP3575964A1 (en) 2019-12-04
EP3109757A2 (en) 2016-12-28
US10133633B2 (en) 2018-11-20
CN105095013A (zh) 2015-11-25
BR102016012742B1 (pt) 2019-02-12
CN105095013B (zh) 2017-11-21
BR122018006762B8 (pt) 2022-08-23
JP2018022530A (ja) 2018-02-08
US9710331B2 (en) 2017-07-18
US9823970B2 (en) 2017-11-21
BR102016012742B8 (pt) 2022-08-23
CN107748702A (zh) 2018-03-02
EP3109757A3 (en) 2017-02-22
US20180074898A1 (en) 2018-03-15
EP3575964B1 (en) 2021-03-10
JP2017004514A (ja) 2017-01-05
JP6347802B2 (ja) 2018-06-27
CN107748702B (zh) 2021-05-04
US20170255522A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
JP6649340B2 (ja) データ記憶方法、データ回復方法、関係する装置及びシステム
JP6259868B2 (ja) データ分配方法、データ記憶方法、関係する装置及びシステム
US20190220356A1 (en) Data Processing Method, System, and Apparatus
EP2250563B1 (en) Storage redundant array of independent drives
KR20150061258A (ko) 분산 raid 시스템에서 패리티 청크 운용 방법과 이를 지원하는 데이터 서버 장치
US11150846B2 (en) Storage system, computer-readable recording medium, and control method for system that reconstructs and distributes data
CN105357294B (zh) 一种存储数据的方法及集群管理节点
WO2015085530A1 (zh) 数据复制方法及存储系统
CN110651246B (zh) 一种数据读写方法、装置和存储服务器
CN109582213B (zh) 数据重构方法及装置、数据存储系统
JP2016513306A (ja) データ格納方法、データストレージ装置、及びストレージデバイス
US11321005B2 (en) Data backup system, relay site storage, data backup method, and control program for relay site storage
US9400620B2 (en) Storage system
JP2016009219A (ja) 冗長システムおよび冗長化方法
JP6376626B2 (ja) データ格納方法、データストレージ装置、及びストレージデバイス
CN111314393B (zh) 基于区块链的数据处理方法、装置及设备
JP6318902B2 (ja) 冗長システムおよび冗長化方法
CN113268374A (zh) 用于存储数据的方法、存储装置和数据存储系统
JP2016009217A (ja) 冗長システム、冗長化方法および冗長化プログラム
CN112988461B (zh) 数据备份方法、边缘节点、数据中心及计算机存储介质
US20230236932A1 (en) Storage system
EP2842037B1 (en) Method and system for storing a file on a plurality of servers
JP2016009218A (ja) 冗長システム、冗長化方法および冗長化プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171101

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200116

R150 Certificate of patent or registration of utility model

Ref document number: 6649340

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250