(57)【特許請求の範囲】
【請求項１】
分散型記憶システムに適用されるデータ分配方法であり、前記分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記分散型記憶システムは、複数の記憶ノードを有し、前記複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記m及びkは共に正の整数であり、前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、前記論理パーティションはそれぞれZのサイズを有し、互いに重複しないデータ分配方法であって、
記憶命令を受信するステップであり、前記記憶命令は、記憶されるべきデータを搬送するステップと、
前記記憶されるべきデータの論理アドレスに従って、前記記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、前記論理パーティションの１つに入り、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、前記Zはm個のデータブロックのサイズであり、前記Pは正の整数であり、前記P個のデータセグメント内の第１のデータセグメントの開始アドレスは、前記記憶されるべきデータの開始アドレスであり、前記P個のデータセグメント内の第pのデータセグメントの開始アドレスは、前記第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pであるステップと、
各データセグメントに対応する記憶ノードグループを決定するステップと、
前記データセグメントに対応する前記決定された記憶ノードグループ内のプライマリ記憶ノードに前記データセグメントを分配するステップと
を有するデータ分配方法。
【請求項２】
各論理パーティションと各記憶ノードグループとの間の対応関係を設定するステップを更に有し、
各データセグメントに対応する記憶ノードグループを決定するステップは、
各論理パーティションと各記憶ノードグループとの間の前記対応関係に従って、前記データセグメントが入る論理パーティションに対応する前記記憶ノードグループを決定するステップを有する、請求項１に記載のデータ分配方法。
【請求項３】
各論理パーティションは、１つのkey値に一意に対応し、各論理パーティションと各記憶ノードグループとの間の対応関係を設定するステップは、
各記憶ノードグループに対応するkey値を設定するステップを有し、
各論理パーティションと各記憶ノードグループとの間の前記対応関係に従って、前記データセグメントが入る論理パーティションに対応する前記記憶ノードグループを決定するステップは、
前記データセグメントが入る前記論理パーティションに従って、前記データセグメントのkey値を決定するステップと、
前記データセグメントの前記key値に従って、前記データセグメントに対応する前記記憶ノードグループを決定するステップと
を有する、請求項２に記載のデータ分配方法。
【請求項４】
分散型記憶システムに適用されるデータ記憶方法であり、前記分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記分散型記憶システムは、複数の記憶ノードを有し、前記複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記m及びkは共に正の整数であり、前記複数の記憶ノードグループ内のいずれかの記憶ノードグループ内のプライマリ記憶ノードが前記データ記憶方法を実行するデータ記憶方法であって、
第１のデータセグメントを受信するステップであり、前記第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるステップと、
第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、前記第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを有するステップと、
記憶を実行するために、m+k個の記憶ノードに前記第１のECストライプを分配するステップであり、前記m+k個の記憶ノード内の各記憶ノードは、前記第１のECストライプの前記m個の第１のデータブロック又は前記k個の第１のパリティブロックのいずれか１つを記憶することを担うステップと
を有し、
第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、前記第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを有するステップは、
前記第１のデータセグメントのサイズがZに等しい場合、前記第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、前記m個の第１のデータブロックにおいてパリティコーディングを実行するステップ、又は、
前記第１のデータセグメントの前記サイズがZ未満である場合、前記サイズがZに等しくなるように前記第１のデータセグメントを補うために記憶されたデータを使用し、次に、前記補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、前記m個の第１のデータブロックにおいてパリティコーディングを実行するステップ
を有するデータ記憶方法。
【請求項５】
前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、前記論理パーティションはそれぞれZのサイズを有し、互いに重複せず、前記第１のデータセグメントは、前記論理パーティションの１つに入る、請求項４に記載のデータ記憶方法。
【請求項６】
記憶を実行するために、m+k個の記憶ノードに前記第１のECストライプを分配する前に、
第２のデータセグメントを受信するステップであり、前記第２のデータセグメント及び前記第１のデータセグメントは、同じ論理パーティションに入り、前記第２のデータセグメントの論理アドレスは、前記第１のデータセグメントの論理アドレスと重複するステップと、
第２のECストライプを取得するために、前記第２のデータセグメントに従ってイレージャーコーディングを実行するステップであり、前記第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを有するステップと
を更に有し、
記憶を実行するために、m+k個の記憶ノードに前記第１のECストライプを分配するステップは、
前記第１のECストライプ及び前記第２のECストライプの連続分配順序を決定し、前記連続分配順序に従って、前記m+k個の記憶ノードに前記第１のECストライプ及び前記第２のECストライプを連続して分配するステップを有する、請求項５に記載のデータ記憶方法。
【請求項７】
前記第１のECストライプ及び前記第２のECストライプの連続分配順序を決定し、記憶を実行するために、前記連続分配順序に従って、前記m+k個の記憶ノードに前記第１のECストライプ及び前記第２のECストライプを連続して分配するステップは、
前記第１のデータセグメントの受信時間が前記第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まず前記m+k個の記憶ノードに前記第１のECストライプを分配し、前記m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、前記m+k個の記憶ノードに前記第２のECストライプを分配するステップ、又は、
前記第１のデータセグメントの受信時間が前記第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まず前記m+k個の記憶ノードに前記第２のECストライプを分配し、前記m+k個の記憶ノードが前記第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、前記m+k個の記憶ノードに前記第１のECストライプを分配するステップ
を有する、請求項６に記載のデータ記憶方法。
【請求項８】
第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行する前に、
第３のデータセグメントを受信するステップであり、前記第３のデータセグメント及び前記第１のデータセグメントは、同じ論理パーティションに入り、前記第３のデータセグメントの論理アドレスは、前記第１のデータセグメントの論理アドレスと重複しないステップと、
前記第３のデータセグメントを前記第１のデータセグメントに結合し、第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するステップと
を更に有する、請求項５ないし７のうちいずれか１項に記載のデータ記憶方法。
【請求項９】
分散型記憶システムに適用されるデータ分配装置であり、前記分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記分散型記憶システムは、複数の記憶ノードを有し、前記複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記m及びkは共に正の整数であり、前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、前記論理パーティションはそれぞれZのサイズを有し、互いに重複しないデータ分配装置であって、
記憶命令を受信するように構成された命令受信モジュールであり、前記記憶命令は、記憶されるべきデータを搬送する命令受信モジュールと、
前記記憶されるべきデータの論理アドレスに従って、前記記憶されるべきデータをP個のデータセグメントに分割するように構成されたデータセグメント分割モジュールであり、各データセグメントは、前記論理パーティションの１つに入り、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、前記Zはm個のデータブロックのサイズであり、前記Pは正の整数であり、前記P個のデータセグメント内の第１のデータセグメントの開始アドレスは、前記記憶されるべきデータの開始アドレスであり、前記P個のデータセグメント内の第pのデータセグメントの開始アドレスは、前記第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pであるデータセグメント分割モジュールと、
各データセグメントに対応する記憶ノードグループを決定するように構成されたノードグループ決定モジュールと、
前記データセグメントに対応する前記決定された記憶ノードグループ内のプライマリ記憶ノードに前記データセグメントを分配するように構成されたデータセグメント分配モジュールと
を有するデータ分配装置。
【請求項１０】
前記データ分配装置は、各論理パーティションと各記憶ノードグループとの間の対応関係を設定するように構成された対応関係モジュールを更に有し、
前記ノードグループ決定モジュールは、各論理パーティションと各記憶ノードグループとの間の前記対応関係に従って、前記データセグメントが入る論理パーティションに対応する前記記憶ノードグループを決定するように構成される、請求項９に記載のデータ分配装置。
【請求項１１】
各論理パーティションは、１つのkey値に一意に対応し、
前記対応関係モジュールは、各記憶ノードグループに対応するkey値を設定するように構成され、
前記ノードグループ決定モジュールは、前記データセグメントが入る前記論理パーティションに従って、前記データセグメントのkey値を決定し、前記データセグメントの前記key値に従って、前記データセグメントに対応する前記記憶ノードグループを決定するように構成される、請求項１０に記載のデータ分配装置。
【請求項１２】
分散型記憶システムに適用されるデータ記憶装置であり、前記分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記分散型記憶システムは、複数の記憶ノードを有し、前記複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記m及びkは共に正の整数であり、前記データ記憶装置は、前記複数の記憶ノードグループ内のいずれかの記憶ノードグループ内のプライマリ記憶ノードに配置されるデータ記憶装置であって、
第１のデータセグメントを受信するように構成されたデータ受信モジュールであり、前記第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるデータ受信モジュールと、
第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行するように構成されたデータコーディングモジュールであり、前記第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを有するデータコーディングモジュールと、
記憶を実行するために、m+k個の記憶ノードに前記第１のECストライプを分配するように構成されたデータ分配モジュールであり、前記m+k個の記憶ノード内の各記憶ノードは、前記第１のECストライプの前記m個の第１のデータブロック又は前記k個の第１のパリティブロックのいずれか１つを記憶することを担うデータ分配モジュールと
を有し、
前記データコーディングモジュールは、前記第１のデータセグメントのサイズがZに等しい場合、前記第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、前記m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成される、或いは、
前記第１のデータセグメントの前記サイズがZ未満である場合、前記サイズがZに等しくなるように前記第１のデータセグメントを補うために記憶されたデータを使用し、次に、前記補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、前記m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成されるデータ記憶装置。
【請求項１３】
前記分散型記憶システムの論理ボリュームは、複数の論理パーティションを有し、前記論理パーティションはそれぞれZのサイズを有し、互いに重複せず、前記第１のデータセグメントは、前記論理パーティションの１つに入る、請求項１２に記載のデータ記憶装置。
【請求項１４】
前記データ受信モジュールは、第２のデータセグメントを受信するように更に構成され、前記第２のデータセグメント及び前記第１のデータセグメントは、同じ論理パーティションに入り、前記第２のデータセグメントの論理アドレスは、前記第１のデータセグメントの論理アドレスと重複し、
前記データコーディングモジュールは、第２のECストライプを取得するために、前記第２のデータセグメントに従ってイレージャーコーディングを実行するように更に構成され、前記第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを有し、
前記データ分配モジュールは、前記第１のECストライプ及び前記第２のECストライプの連続分配順序を決定し、前記連続分配順序に従って、前記m+k個の記憶ノードに前記第１のECストライプ及び前記第２のECストライプを連続して分配するように構成される、請求項１３に記載のデータ記憶装置。
【請求項１５】
前記データ分配モジュールは、
前記第１のデータセグメントの受信時間が前記第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まず前記m+k個の記憶ノードに前記第１のECストライプを分配し、前記m+k個の記憶ノードが前記第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、前記m+k個の記憶ノードに前記第２のECストライプを分配するように構成される、或いは、
前記第１のデータセグメントの受信時間が前記第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まず前記m+k個の記憶ノードに前記第２のECストライプを分配し、前記m+k個の記憶ノードが前記第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、前記m+k個の記憶ノードに前記第１のECストライプを分配するように構成される、請求項１４に記載のデータ記憶装置。
【請求項１６】
前記データ受信モジュールは、第３のデータセグメントを受信するように更に構成され、前記第３のデータセグメント及び前記第１のデータセグメントは、同じ論理パーティションに入り、前記第３のデータセグメントの論理アドレスは、前記第１のデータセグメントの論理アドレスと重複せず、
前記データコーディングモジュールは、前記第３のデータセグメントが受信されたと前記データ受信モジュールが決定した後に、前記第３のデータセグメントを前記第１のデータセグメントに結合し、第１のECストライプを取得するために、前記第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するように更に構成される、請求項１３ないし１５のうちいずれか１項に記載のデータ記憶装置。
【請求項１７】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、
コンピュータのプロセッサが前記コンピュータ実行可能命令を実行した場合、前記コンピュータは、請求項１ないし３のうちいずれか１項に記載の方法を実行するコンピュータ読み取り可能記憶媒体。
【請求項１８】
コンピュータ実行可能命令を有するコンピュータ読み取り可能記憶媒体であって、
コンピュータのプロセッサが前記コンピュータ実行可能命令を実行した場合、前記コンピュータは、請求項４ないし８のうちいずれか１項に記載の方法を実行するコンピュータ読み取り可能記憶媒体。
【請求項１９】
複数の記憶ノードを有する分散型記憶システムであり、前記分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を有し、各ECストライプの前記データ部は、m個のデータブロックを有し、各ECストライプの前記パリティ部は、前記m個のデータブロックにおいて実行されるパリティコーディングの後に取得されたk個のパリティブロックを有し、前記複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、前記m及びkは共に正の整数である分散型記憶システムであって、
請求項１２ないし１６のうちいずれか１項に記載のデータ記憶装置を更に有する分散型記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶の分野に関し、特にデータ分配方法、データ記憶方法、関係する装置及びシステムに関する。
【背景技術】
【０００２】
現段階では、分散型記憶システムは、データを記憶するためにイレージャーコーディング（EC、Erasure  coding）技術をますます使用している。イレージャーコーディング技術の原理は、データをm個のデータブロックに分割し、k個のパリティブロックを生成するために、冗長アルゴリズムを使用することによりm個のデータブロックにおいてパリティコーディングを実行することである。m個のデータブロック及びk個のパリティブロックは、１つのECストライプを構成する。各ECストライプは、k個のデータブロック又はパリティブロックの喪失を許容することができる。
【０００３】
イレージャーコーディング技術では、データ分配装置は、m個のデータブロック及びk個のパリティブロックを生成するためにデータにおいてイレージャーコーディングを実行し、次にm+k個の記憶ノードにm個のデータブロック及びk個のパリティブロックを分配する。複数のデータ分配装置が同じECストライプ内のデータを同時に読み取る場合又は書き込む場合、複数のデータ分配装置の間のコンフリクトの問題は、分散ロック（distributed  lock）を使用することにより解決される必要がある。
【０００４】
しかし、分散ロックが複数のデータ分配装置の間のコンフリクトの問題を解決するために使用される場合、上位レイヤアプリケーションが異なるデータ分配装置を使用することによりIO要求を分配したときに、頻繁なロック競合及びロック切り替えがデータ分配装置の間で引き起こされる。ロック切り替えは比較的時間のかかる動作であるため、頻繁なロック切り替えは、比較的長い読み書き遅延を引き起こし、実際の適用要件を満たすことができない。
【発明の概要】
【０００５】
本発明の実施例は、分散型記憶システムの読み書き性能を改善するためのデータ分配方法を提供する。
【０００６】
本発明の実施例の第１の態様は、分散型記憶システムに適用されるデータ分配方法を提供し、分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、分散型記憶システムは、複数の記憶ノードを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数であり、この方法は、記憶命令を受信するステップであり、記憶命令は、記憶されるべきデータを搬送するステップと、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であるステップと、各データセグメントに対応する記憶ノードグループを決定するステップと、データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するステップとを含む。
【０００７】
本発明の実施例の第１の態様を参照して、本発明の実施例の第１の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、記憶されるべきデータをP個のデータセグメントに分割するステップは、記憶されるべきデータの論理アドレスに従って、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、論理パーティションの１つに入るステップを含む。
【０００８】
本発明の実施例の第１の態様の第１の実現方式を参照して、本発明の実施例の第１の態様の第２の実現方式では、P個のデータセグメント内の第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、P個のデータセグメント内の第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【０００９】
本発明の実施例の第１の態様の第１の実現方式を参照して、本発明の実施例の第１の態様の第３の実現方式は、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するステップを更に含み、各データセグメントに対応する記憶ノードグループを決定するステップは、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するステップを含む。
【００１０】
本発明の実施例の第１の態様の第３の実現方式を参照して、本発明の実施例の第１の態様の第４の実現方式では、各論理パーティションは、１つのkey値に一意に対応し、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するステップは、各記憶ノードグループに対応するkey値を予め設定して記録するステップを含み、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するステップは、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定するステップと、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するステップとを含む。
【００１１】
本発明の実施例の第２の態様は、分散型記憶システムに適用されるデータ記憶方法を提供し、分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、分散型記憶システムは、複数の記憶ノードを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数であり、複数の記憶ノードグループ内のいずれかの記憶ノードグループ内のプライマリ記憶ノードは、データ記憶方法を実行し、この方法は、第１のデータセグメントを受信するステップであり、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるステップと、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むステップと、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップであり、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担うステップとを含む。
【００１２】
本発明の実施例の第２の態様を参照して、本発明の実施例の第２の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、第１のデータセグメントは、論理パーティションの１つに入る。
【００１３】
本発明の実施例の第２の態様の第１の実現方式を参照して、本発明の実施例の第２の態様の第２の実現方式では、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配する前に、この方法は、第２のデータセグメントを受信するステップであり、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複するステップと、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含むステップとを更に含み、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップは、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するステップを具体的に含む。
【００１４】
本発明の実施例の第２の態様の第２の実現方式を参照して、本発明の実施例の第２の態様の第３の実現方式では、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、記憶を実行するために、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するステップは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配し、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配するステップ、又は、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配し、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップを含む。
【００１５】
本発明の実施例の第２の態様の第１の実現方式を参照して、本発明の実施例の第２の態様の第４の実現方式では、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行する前に、この方法は、第３のデータセグメントを受信するステップであり、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複しないステップと、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するステップとを更に含む。
【００１６】
本発明の実施例の第２の態様又は第２の態様の第１〜第４の実現方式のいずれか１つを参照して、本発明の実施例の第２の態様の第５の実現方式では、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むステップは、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップ、又は、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップを含む。
【００１７】
本発明の実施例の第３の態様は、分散型記憶システムに適用されるデータ分配装置を提供し、分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、分散型記憶システムは、複数の記憶ノードを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数であり、データ分配装置は、記憶命令を受信するように構成された命令受信モジュールであり、記憶命令は、記憶されるべきデータを搬送する命令受信モジュールと、記憶されるべきデータをP個のデータセグメントに分割するように構成されたデータセグメント分割モジュールであり、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であるデータセグメント分割モジュールと、各データセグメントに対応する記憶ノードグループを決定するように構成されたノードグループ決定モジュールと、データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するように構成されたデータセグメント分配モジュールとを含む。
【００１８】
本発明の実施例の第３の態様を参照して、本発明の実施例の第３の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、データセグメント分割モジュールは、記憶されるべきデータの論理アドレスに従って、記憶されるべきデータをP個のデータセグメントに分割するように具体的に構成され、各データセグメントは、論理パーティションの１つに入る。
【００１９】
本発明の実施例の第３の態様の第１の実現方式を参照して、本発明の実施例の第３の態様の第２の実現方式では、P個のデータセグメント内の第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、P個のデータセグメント内の第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【００２０】
本発明の実施例の第３の態様の第１の実現方式を参照して、本発明の実施例の第３の態様の第３の実現方式では、データ分配装置は、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するように構成された対応関係モジュールを更に含み、ノードグループ決定モジュールは、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するように具体的に構成される。
【００２１】
本発明の実施例の第３の態様の第３の実現方式を参照して、本発明の実施例の第３の態様の第４の実現方式では、各論理パーティションは、１つのkey値に一意に対応し、対応関係モジュールは、各記憶ノードグループに対応するkey値を予め設定して記録するように具体的に構成され、ノードグループ決定モジュールは、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定し、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するように具体的に構成される。
【００２２】
本発明の実施例の第４の態様は、分散型記憶システムに適用されるデータ記憶装置を提供し、分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、分散型記憶システムは、複数の記憶ノードを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数であり、データ記憶装置は、複数の記憶ノードグループ内のいずれかの記憶ノードグループ内のプライマリ記憶ノードに配置され、データ記憶装置は、第１のデータセグメントを受信するように構成されたデータ受信モジュールであり、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるデータ受信モジュールと、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するように構成されたデータコーディングモジュールであり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むデータコーディングモジュールと、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するように構成されたデータ分配モジュールであり、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担うデータ分配モジュールとを含む。
【００２３】
本発明の実施例の第４の態様を参照して、本発明の実施例の第４の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、第１のデータセグメントは、論理パーティションの１つに入る。
【００２４】
本発明の実施例の第４の態様の第１の実現方式を参照して、本発明の実施例の第４の態様の第２の実現方式では、データ受信モジュールは、第２のデータセグメントを受信するように更に構成され、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複し、データコーディングモジュールは、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するように更に構成され、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含み、データ分配モジュールは、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するように具体的に構成される。
【００２５】
本発明の実施例の第４の態様の第２の実現方式を参照して、本発明の実施例の第４の態様の第３の実現方式では、データ分配モジュールは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配し、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配するように具体的に構成される、或いは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配し、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するように具体的に構成される。
【００２６】
本発明の実施例の第４の態様の第１の実現方式を参照して、本発明の実施例の第４の態様の第４の実現方式では、データ受信モジュールは、第３のデータセグメントを受信するように更に構成され、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複せず、データコーディングモジュールは、第３のデータセグメントが受信されたとデータ受信モジュールが決定した後に、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するように更に構成される。
【００２７】
本発明の実施例の第４の態様又は第４の態様の第１〜第４の実現方式のいずれか１つを参照して、本発明の実施例の第４の態様の第５の実現方式では、データコーディングモジュールは、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成される、或いは、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成される。
【００２８】
本発明の実施例の第５の態様は、データ分配装置を提供し、データ分配装置は、入力装置と、出力装置と、プロセッサと、メモリとを含み、メモリに記憶された動作命令を呼び出すことにより、プロセッサは、記憶命令を受信するように構成され、記憶命令は、記憶されるべきデータを搬送し、記憶されるべきデータをP個のデータセグメントに分割するように構成され、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であり、各データセグメントに対応する記憶ノードグループを決定し、データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するように構成される。
【００２９】
本発明の実施例の第５の態様を参照して、本発明の実施例の第５の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、プロセッサは、記憶されるべきデータの論理アドレスに従って、記憶されるべきデータをP個のデータセグメントに分割するように更に構成され、各データセグメントは、論理パーティションの１つに入る。
【００３０】
本発明の実施例の第５の態様の第１の実現方式を参照して、本発明の実施例の第５の態様の第２の実現方式では、P個のデータセグメント内の第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、P個のデータセグメント内の第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【００３１】
本発明の実施例の第５の態様の第１の実現方式を参照して、本発明の実施例の第５の態様の第３の実現方式では、プロセッサは、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録し、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するように更に構成される。
【００３２】
本発明の実施例の第５の態様の第３の実現方式を参照して、本発明の実施例の第５の態様の第４の実現方式では、各論理パーティションは、１つのkey値に一意に対応し、プロセッサは、各記憶ノードグループに対応するkey値を予め設定して記録し、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定し、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するように更に構成される。
【００３３】
本発明の実施例の第６の態様は、データ記憶装置を提供し、データ記憶装置は、入力装置と、出力装置と、プロセッサと、メモリとを含み、メモリに記憶された動作命令を呼び出すことにより、プロセッサは、第１のデータセグメントを受信するように構成され、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するように構成され、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含み、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するように構成され、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担う。
【００３４】
本発明の実施例の第６の態様を参照して、本発明の実施例の第６の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、第１のデータセグメントは、論理パーティションの１つに入る。
【００３５】
本発明の実施例の第６の態様の第１の実現方式を参照して、本発明の実施例の第６の態様の第２の実現方式では、プロセッサは、第２のデータセグメントを受信するように更に構成され、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複し、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するように更に構成され、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含み、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するように更に構成される。
【００３６】
本発明の実施例の第６の態様の第２の実現方式を参照して、本発明の実施例の第６の態様の第３の実現方式では、プロセッサは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配し、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配するように更に構成される、或いは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配し、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するように構成される。
【００３７】
本発明の実施例の第６の態様の第１の実現方式を参照して、本発明の実施例の第６の態様の第４の実現方式では、プロセッサは、第３のデータセグメントを受信するように更に構成され、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複せず、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するように更に構成される。
【００３８】
本発明の実施例の第６の態様又は第６の態様の第１〜第４の実現方式のいずれか１つを参照して、本発明の実施例の第６の態様の第５の実現方式では、プロセッサは、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成される、或いは、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するように更に構成される。
【００３９】
本発明の実施例の第７の態様は、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体を提供し、コンピュータのプロセッサがコンピュータ実行可能命令を実行した場合、コンピュータは、以下の方法、すなわち、記憶命令を受信するステップであり、記憶命令は、記憶されるべきデータを搬送するステップと、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であるステップと、各データセグメントに対応する記憶ノードグループを決定するステップと、データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するステップとを実行する。
【００４０】
本発明の実施例の第７の態様を参照して、本発明の実施例の第７の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、コンピュータは、以下の方法、すなわち、記憶されるべきデータの論理アドレスに従って、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、論理パーティションの１つに入るステップを更に実行する。
【００４１】
本発明の実施例の第７の態様の第１の実現方式を参照して、本発明の実施例の第７の態様の第２の実現方式では、P個のデータセグメント内の第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、P個のデータセグメント内の第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【００４２】
本発明の実施例の第７の態様の第１の実現方式を参照して、本発明の実施例の第７の態様の第３の実現方式では、コンピュータは、以下の方法、すなわち、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するステップと、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するステップとを更に実行する。
【００４３】
本発明の実施例の第７の態様の第３の実現方式を参照して、本発明の実施例の第７の態様の第４の実現方式では、各論理パーティションは、１つのkey値に一意に対応し、コンピュータは、以下の方法、すなわち、各記憶ノードグループに対応するkey値を予め設定して記録するステップと、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定するステップと、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するステップとを更に実行する。
【００４４】
本発明の実施例の第８の態様は、コンピュータ実行可能命令を含むコンピュータ読み取り可能媒体を提供し、コンピュータのプロセッサがコンピュータ実行可能命令を実行した場合、コンピュータは、以下の方法、すなわち、第１のデータセグメントを受信するステップであり、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるステップと、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むステップと、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップであり、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担うステップとを実行する。
【００４５】
本発明の実施例の第８の態様を参照して、本発明の実施例の第８の態様の第１の実現方式では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、第１のデータセグメントは、論理パーティションの１つに入る。
【００４６】
本発明の実施例の第８の態様の第１の実現方式を参照して、本発明の実施例の第８の態様の第２の実現方式では、コンピュータは、以下の方法、すなわち、第２のデータセグメントを受信するステップであり、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複するステップと、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含むステップと、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するステップとを更に実行する。
【００４７】
本発明の実施例の第８の態様の第２の実現方式を参照して、本発明の実施例の第８の態様の第３の実現方式では、コンピュータは、以下の方法、すなわち、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配し、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配するステップ、又は、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配し、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップを更に実行する。
【００４８】
本発明の実施例の第８の態様の第１の実現方式を参照して、本発明の実施例の第８の態様の第４の実現方式では、コンピュータは、以下の方法、すなわち、第３のデータセグメントを受信するステップであり、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複しないステップと、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するステップとを更に実行する。
【００４９】
本発明の実施例の第８の態様又は第８の態様の第１〜第４の実現方式のいずれか１つを参照して、本発明の実施例の第８の態様の第５の実現方式では、コンピュータは、以下の方法、すなわち、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップ、又は、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップを更に実行する。
【００５０】
本発明の実施例の第９の態様は、複数の記憶ノードを含む分散型記憶システムを提供し、分散型記憶システムは、イレージャーコーディング（EC）ストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数であり、記憶システムは、本発明の実施例の第４の態様若しくは第４の態様の第１〜第５の実現方式のいずれか１つにより提供されるデータ記憶装置、又は本発明の実施例の第６の態様若しくは第６の態様の第１〜第５の実現方式のいずれか１つにより提供されるデータ記憶装置、又は本発明の実施例の第８の態様若しくは第８の態様の第１〜第５の実現方式のいずれか１つにより提供されるコンピュータ読み取り可能媒体を更に含む。
【００５１】
本発明の実施例により提供されるデータ分配方法では、データ分配装置は、記憶されるべきデータを決定し、P個のデータセグメントを取得するために、論理パーティションに従って記憶されるべきデータを分割し、各データセグメントに対応するノードグループを決定し、対応するノードグループ内のプライマリノードにデータセグメントを分配する。本発明の実施例では、データ分配装置は、記憶されるべきデータを予め設定されたサイズに分割し、次に、分散型記憶システムのノードグループ内のプライマリノードにデータを分配し、プライマリノードは、データにおいてイレージャーコーディングを実行する。データ分配装置自体は、データにおいてイレージャーコーディングを実行しない。このように、複数のデータ分配装置が同じECストライプ内のデータを同時に読み取る或いは書き込むという問題は存在せず、データ分配装置の間でコンフリクトは存在しない。従って、本発明の実施例では、分散ロックは、データ分配装置の間の読み書きのコンフリクトを解決するために、データ分配装置の間で使用される必要はなく、読み書き遅延がロック競合により引き起こされることが回避され、分散型記憶システムの読み書き性能が改善され、実際の適用要件を満たすことができる。
【図面の簡単な説明】
【００５２】
【図１（ａ）】ECストライプの構成図
【図１（ｂ）】本発明の実施例による分散型記憶システムの概略構成図
【図２】本発明の実施例によるデータ分配方法の実施例のフローチャート
【図３】本発明の実施例によるデータ記憶方法の実施例のフローチャート
【図４】本発明の実施例によるデータ分配装置の実施例の構成図
【図５】本発明の実施例によるデータ記憶装置の実施例の構成図
【図６】本発明の実施例によるデータ分配装置の他の実施例の構成図
【図７】本発明の実施例によるデータ記憶装置の他の実施例の構成図
【発明を実施するための形態】
【００５３】
本発明の実施例は、分散型記憶システムの性能を改善するためのデータ分配方法を提供する。本発明の実施例は、関係するデータ記憶方法、関係する装置、及びシステムを更に提供し、これらについて以下に別々に説明する。
【００５４】
分散型記憶システムは、複数の記憶ノードを含む。上位レイヤデータ分配装置は、記憶されるべきデータを複数のデータブロックに分割し、次に、記憶を実行するために、分散型記憶システムの複数の記憶ノードにデータブロックを分配する。データの分散型記憶は、データ喪失リスクを低減し、分散型記憶システムの信頼性を改善することができる。データ分配装置は、クライアント、サーバ、又は他のデバイスでもよい。
【００５５】
EC技術の原理は、記憶されるべきデータをm個のデータブロックに分割し、k個のパリティブロックを生成するために、冗長アルゴリズムを使用することによりm個のデータブロックにおいてパリティコーディングを実行することである。m個のデータブロック及びk個のパリティブロックは、１つのECストライプを構成する。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ストライプのパリティブロックを再生成することが必要である。
【００５７】
複数のデータ分配装置がECストライプ内のデータを同時に読み取る場合又は書き込む場合、読み書きのコンフリクトが引き起こされる可能性があり、複数のデータ分配装置の間のコンフリクトの問題は、分散ロックを使用することにより解決される必要がある。しかし、分散ロックが複数のデータ分配装置の間のコンフリクトの問題を解決するために使用される場合、上位レイヤアプリケーションが異なるデータ分配装置を使用することによりIO要求を分配したときに、頻繁なロック競合及びロック切り替えがデータ分配装置の間で引き起こされる。ロック切り替えは比較的時間のかかる動作であるため、頻繁なロック切り替えは、比較的長い読み書き遅延を引き起こし、実際の適用要件を満たすことができない。
【００５８】
本発明の実施例は、前述の問題を解決するための信頼できるデータ分配方法及びデータ記憶方法を提供することに専念する。まず、本発明の実施例では、分散型記憶システム内の記憶ノードがグループ化される。具体的に、記憶ノードは、複数の記憶ノードグループにグループ化され、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノード（以下では略してプライマリノード）が各記憶ノードグループ内で指定される。プライマリ記憶ノードは、データ分配装置と相互作用することを担い、データ記憶を実行するために、プライマリ記憶ノードが属する記憶ノードグループ内のノードを制御することを更に担う。記憶ノードグループ内の他の記憶ノードは、セカンダリ記憶ノード（以下では略してセカンダリノード）である。m及びkは共に正の整数である。異なる記憶ノードグループは、二重の記憶ノードを有してもよい。例えば、記憶ノードグループ1内のプライマリノードは、記憶ノードグループ2内のセカンダリノードでもよい。図１（ｂ）は、本発明の実施例による分散型記憶システムの概略構成図である。図１（ｂ）は、分散型記憶システムの組成的な構成のみを示すために使用され、分散型記憶システム内に記憶ノードの他の構成が存在してもよい。
【００５９】
記憶ノードグループは、複数の方式で維持管理されてもよく、例えば、更なるノードグループ管理モジュールが配置されてもよい。ノードグループ管理モジュールは、データ分配装置に配置されてもよく、記憶ノードに配置されてもよい。これは、本発明の実施例では限定されない。ノードグループ管理モジュールは、各記憶ノードグループを維持管理することを担う。具体的に、ノードグループ管理モジュールは、各記憶ノードグループに含まれる記憶ノードについての情報を収集し、プライマリノードを決定し、ハートビート接続を使用することにより各記憶ノードの状態をリアルタイムで監視することを担ってもよい。記憶ノードの状態が変化した場合、又はノードグループ内のプライマリノードが変化した場合、ノードグループ管理モジュールは、収集された情報を更新する必要がある。ノードグループ管理モジュールは、各データ分配装置及び記憶ノードが各ノードグループについての情報を習得することができるように、記録するために、収集された情報を各データ分配装置及び記憶ノードに通知する。ノードグループ管理モジュールにより収集された情報は、簡単に表１の形式で表されてもよい。
【表１】
0006259868.tif 000002
【００６０】
表１は、ノードグループ管理モジュールにより収集された情報の単なる表現形式である。ノードグループ管理モジュールは、収集された情報を表すために他の形式を使用してもよい。これは、本発明の実施例では限定されない。
【００６１】
本発明の実施例では、データ分配装置は、記憶されるべきデータを複数のデータセグメントに分割し、対応するノードグループのプライマリノードに各データセグメントを分配する。この手順については、図２を参照する。
【００６２】
201.記憶命令を受信する。
【００６３】
データ分配装置は、ユーザの記憶命令を受信し、記憶命令は、記憶されるべきデータを記憶するように命令するために使用される。
【００６４】
202.記憶されるべきデータをP個のデータセグメントに分割する。
【００６５】
データ分配装置は、記憶されるべきデータをP個のデータセグメントに分割し、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズである。
【００６６】
203.各データセグメントに対応する記憶ノードグループを決定する。
【００６７】
データ分配装置は、各データセグメントに対応する記憶ノードグループを決定する。複数の決定方法が存在し、これらについては以下の実施例で詳細に説明し、ここでは限定されない。
【００６８】
204.対応する記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配する。
【００６９】
各データセグメントに対応する記憶ノードグループを決定した後に、データ分配装置は、データセグメントに対応する記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配する。
【００７０】
この実施例は、データ分配方法を提供し、データ分配装置は、ユーザの記憶命令を受信し、記憶命令が記憶するように命令した記憶されるべきデータをP個のデータセグメントに分割し、各データセグメントに対応する記憶ノードグループを決定し、最後に、対応する記憶ノードグループ内のプライマリノードにデータセグメントを分配する。この実施例では、データ分配装置は、記憶ノードへの分割後に取得されたデータセグメントを直接分配し、記憶されるべきデータにおいてイレージャーコーディングをもはや実行しないため、コンフリクトの問題を解決するために分散ロックを使用する必要はなく、頻繁なロック切り替えが引き起こされず、分散型記憶システムの性能が改善される。
【００７１】
ステップ201において、データ分配装置は、記憶命令を解析し、記憶されるべきデータの開始アドレス、サイズ又は他の情報を取得してもよい。ステップ202において、データ分配装置によりデータセグメントを取得するために分割を実行するための複数の方法が存在する。例えば、分散型記憶システムの論理ボリューム（Logical  Volume）は、複数の論理パーティションを含んでもよく、論理パーティションはそれぞれZのサイズを有し、互いに重複しない。データセグメントを取得するために分割を実行する場合、データ分配装置は、記憶されるべきデータの論理アドレスに従って、１つの論理パーティションに入るデータを１つのデータセグメントとして取得するために、分割を実行してもよい。例えば、Zが4Mである場合、分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割されてもよい。第１の論理パーティションの論理アドレスは0M〜4Mであり、第２の論理パーティションの論理アドレスは4M〜8Mであり、第３の論理パーティションの論理アドレスは8M〜12M...である。記憶されるべきデータの論理アドレスが5M〜12Mであると仮定すると、5M〜8Mは第２の論理パーティションの論理アドレスの範囲に入り、8M〜12Mは第３の論理パーティションの論理アドレスの範囲に入るため、データ分配装置は、5M〜12Mの記憶されるべきデータを２つのデータセグメントに分割し、２つのデータセグメントの論理アドレスは、それぞれ5M〜8M及び8M〜12Mである。
【００７２】
前述の段落の例から、記憶されるべきデータを分割することにより取得されたP個のデータセグメントでは、第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【００７３】
分散型記憶システムの論理ボリュームが複数の論理パーティションに分割される場合、各論理パーティションと各記憶ノードグループとの間の対応関係が予め設定されてもよい。このように、ステップ203において、データ分配装置は、各データセグメントが入る論理パーティションに対応する記憶ノードグループが、データセグメントに対応する記憶ノードグループであると決定してもよい。より具体的には、分散型記憶システムの各論理パーティションに一意のkey値が設定されてもよく、データ分配装置は、各記憶ノードグループに対応するkey値を予め設定して記録する。このように、データ分配装置は、各データセグメントが入る論理パーティションに対応するkey値がデータセグメントに対応するkey値であると決定し、次に、各データセグメントのkey値と記憶ノードグループとの間の対応関係に従って、各データセグメントに対応する記憶ノードグループを決定してもよい。
【００７４】
分散型記憶システム内の複数の上位レイヤデータ分配装置の全てがデータ分配を実行するためにステップ201〜ステップ204の方法を使用する場合、データセグメントが複数のデータ分配装置により分配されるとしても、分配されたデータセグメントが分散型記憶システムの同じ論理パーティションに入る限り、データセグメントは同じノードグループのプライマリノードに分配されることが認識され得る。
【００７５】
データ分配装置により分配されたデータセグメントを受信した後に、プライマリノードは、ECストライプを取得するために、受信したデータセグメントにおいてイレージャーコーディングを実行し、記憶を実行するために、ECストライプ内のm+k個のEC  blockを、プライマリノードが属するノードグループ内のm+k個の記憶ノードに割り当てる。図２に示す実施例では、データ分配装置は、合計でP個のデータセグメントを分配するため、P個の記憶ノードグループのプライマリノードにP個のデータセグメントを分配する必要がある。図３を参照すると、以下では、説明の例として記憶ノードグループ内のプライマリノードを使用する。
【００７６】
301.第１のデータセグメントを受信する。
【００７７】
プライマリノードは、データ分配装置により分配された第１のデータセグメントを受信し、第１のデータセグメントは、データ分配装置により分配されたP個のデータセグメント内のデータセグメントである。第１のデータセグメントのサイズはZより大きくない。
【００７８】
特に、データ分配装置が分散型記憶システムの論理パーティションに従ってデータセグメントを取得するために分割を実行するとき、第１のデータセグメントがP個のデータセグメント内の最初又は最後のデータセグメントである場合、第１のデータセグメントのサイズはZ未満でもよい。第１のデータセグメントがP個のデータセグメント内の第２〜第(P-1)のデータセグメント内のいずれかのデータセグメントである場合、第１のデータセグメントのサイズはZに等しいべきである。
【００７９】
302.第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行する。
【００８０】
プライマリノードは、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行する。第１のECストライプは、m+k個の第１のEC  blockを含み、これらは別々にm個の第１のデータブロック及びk個の第１のパリティブロックである。
【００８１】
303.記憶を実行するために、プライマリノードが属するノードグループ内のm+k個のノードにm+k個の第１のEC  blockをそれぞれ分配する。
【００８２】
プライマリノードは、記憶を実行するために、プライマリノードが属する記憶ノードグループ内のm+k個の記憶ノードにそれぞれ第１のECストライプのm個の第１のデータブロック及びk個の第１のパリティブロックを分配し、m+k個の記憶ノード内の各記憶ノードは、１つの第１のEC  blockに記憶することを担う。プライマリノード自体は、EC  block（第１のデータブロックでもよく、第１のパリティブロックでもよい）を記憶し、次に、記憶のために、残りのm+k-1個の第１のEC  blockをm+k-1個のセカンダリノードに送信してもよい。各セカンダリノードは、１つの第１のEC  blockを記憶する。プライマリノードはまた、第１のEC  blockを記憶せず、記憶のために、m+k個の第１のEC  blockをm+k個のセカンダリノードに直接送信してもよい。これは、この実施例では限定されない。
【００８３】
図２に示す実施例は、データ分配装置によりデータを分配する方法を提供する。対応して、この実施例は、データ分配装置により分配されたデータを記憶するために使用されるデータ記憶方法を提供する。プライマリノードは、データ分配装置により分配された第１のデータセグメントを受信し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行し、記憶を実行するために、第１のECストライプのm+k個のデータブロックをm+k個の記憶ノードに割り当てる。従来技術と比べて、この実施例により提供される方法では、データ分配装置により元々実行されるイレージャーコーディング動作は、代わりにプライマリノードにより実行される。このように、データ分配装置により実行されるイレージャーコーディングにより引き起こされるコンフリクトの問題は存在せず、更に、コンフリクトの問題を解決するために分散ロックを使用する必要はない。従って、頻繁なロック切り替えが引き起こされず、分散型記憶システムの性能が改善される。
【００８４】
分散型記憶システム内のいずれかの記憶ノードグループのプライマリノードは、図３に示す実施例により提供されるデータ記憶方法を実行してもよいことが認識され得る。
【００８５】
前述の実施例では、分散型記憶システムの論理ボリュームが互いに重複しない複数の論理パーティションを含んでもよく、データ分配装置が１つの論理パーティションに入るデータを１つのデータセグメントとして取得するために分割を実行することが言及された。更に、記憶ノードグループと論理パーティションとの間に対応関係が存在する。この実施例では、プライマリノードにより受信される第１のデータセグメントの論理アドレスは、プライマリノードが属する記憶ノードグループに対応する論理パーティションに入るべきであることが認識され得る。異なる記憶ノードグループのプライマリノードにより受信されるデータセグメントの論理アドレスは互いに重複しないことが認識され得る。
【００８６】
ECストライプを生成する場合、プライマリノードは、ECストライプに対応するバージョン番号を更に生成してもよい。
【００８７】
実際のアプリケーションでは、第１のデータセグメントを受信する場合、プライマリノードはまた、同じ或いは他のデータ分配装置により分配されたデータセグメントを受信してもよい。この場合、プライマリノードにより実行されるイレージャーコーディングは、以下の場合に分類されてもよい。
【００８８】
場合１：プライマリノードは、第２のデータセグメントを受信し、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複する。プライマリノードは、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行し、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含む。プライマリノードは、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配する。具体的に、プライマリノードがまず第１のデータセグメントを受信し、次に第２のデータセグメントを受信した場合、プライマリノードは、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプのm+k個の第１のEC  blockをそれぞれ分配し、m+k個の記憶ノードにより送信された応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプのm+k個の第２のEC  blockをそれぞれ分配する。応答メッセージは、第１のデータセグメントがm+k個の記憶ノードに成功して記憶されたことを示すために使用され、第２のECストライプのバージョン番号は、第１のECストライプのバージョン番号より大きい。プライマリノードがまず第２のデータセグメントを受信し、次に第１のデータセグメントを受信した場合、プライマリノードは、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプのm+k個の第２のEC  blockをそれぞれ分配し、次に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプのm+k個の第１のEC  blockをそれぞれ分配する。第１のECストライプのバージョン番号は、第２のECストライプのバージョン番号より大きい。
【００８９】
場合２：プライマリノードは、第３のデータセグメントを受信し、第１のデータセグメント及び第３のデータセグメントは、同じ論理パーティションに入り、第１のデータセグメントの論理アドレスは、第３のデータセグメントの論理アドレスと重複しない。この場合、プライマリノードは、第３のデータセグメントを第１のデータセグメントに結合し、次に、結合された第１のデータセグメントを、ステップ302においてコーディングされるべき第１のデータセグメントとして使用し、次に、ステップ302及びステップ303を実行し続ける。例えば、第１のデータセグメントの論理アドレスの範囲は4M〜5Mであり、第３のデータセグメントの論理アドレスの範囲は5M〜8Mであり、第１のデータセグメント及び第３のデータセグメントの論理アドレスは、論理パーティション4M〜8Mに全て入る。プライマリノードは、第３のデータセグメントを第１のデータセグメントに結合し、次に、第１のECストライプを取得するために、結合された第１のデータセグメントに従ってイレージャーコーディングを実行する。
【００９０】
場合３：プライマリノードは、第４のデータセグメントを受信し、第１のデータセグメント及び第４のデータセグメントは、異なる論理パーティションに入る。一般的に、この場合は、２つ以上の記憶ノードグループ内のプライマリノードである記憶ノード、又は複数の論理パーティションに対応する同じ記憶ノードグループ内のプライマリノードで生じる。この場合、第１のデータセグメント及び第４のデータセグメントは、異なる論理パーティションに入る。従って、第１のデータセグメントの論理アドレスは、第４のデータセグメントの論理アドレスと重複せず、プライマリノードは、第１のデータセグメント及び第４のデータセグメントにおいてコーディング及びデータ分配を通常通り実行する必要があるだけである。これは、記憶のコンフリクトを引き起こさない。前述の３つの場合は、プライマリノードが２つのデータセグメントを同時に受信するシナリオだけでなく、プライマリノードが３つ以上のデータセグメントを同時に受信するシナリオにおいても使用されてもよい。これは、この実施例では限定されない。
【００９１】
図２に示す実施例で言及したように、分散型記憶システムの各論理パーティションは、一意のkey値に対応し、各データセグメントが入る論理パーティションのkey値は、データセグメントのkey値である。場合１では、第１のデータセグメント及び第２のデータセグメントは同じ論理パーティションに入るため、第１のデータセグメント及び第２のデータセグメントは同じkey値を有する。場合２では、第１のデータセグメント及び第３のデータセグメントは同じ論理パーティションに入るため、第１のデータセグメント及び第３のデータセグメントは同じkey値を有する。場合３では、第１のデータセグメント及び第４のデータセグメントは異なる論理パーティションに入るため、第１のデータセグメント及び第４のデータセグメントは異なるkey値を有する。プライマリノードは、データセグメントのkey値に従って、２つのデータセグメントが同じ論理パーティションに入るか否かを決定してもよい。
【００９２】
特に、データセグメントのkey値は、ECストライプのデータ部の論理アドレスの範囲を識別するために、対応するECストライプのkey値として使用されてもよい。ECストライプのkey値は、ECストライプの各EC  block内で搬送されてもよい。
【００９３】
ステップ302において、プライマリノードは、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行する。具体的に、第１のデータセグメントのサイズがZである場合、第１のデータセグメントは、ちょうどm個の第１のデータブロックに分割されてもよい。次に、プライマリノードは、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行する。このように、第１のECストライプが取得される。
【００９４】
第１のデータセグメントのサイズがZ未満である場合、第１のデータセグメントは、m個のデータブロックへの分割には十分ではない。プライマリノードは、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントを、ステップ302においてコーディングされるべき第１のデータセグメントとして使用し、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップを実行する必要がある。第１のデータセグメントが論理パーティションに入ることができることを確保するために、プライマリノードは、第１のデータセグメントを補うために、記憶されたデータから、第１のデータセグメントの論理パーティションと同じ論理パーティションに入るデータを選択するべきである。例えば、第１のデータセグメントの論理アドレスが5M〜8Mであり、論理パーティション4M〜8Mに入る場合、プライマリノードは、論理アドレスが4M〜8Mになるように、第１のデータセグメントを補うために論理アドレスが4M〜5Mである記憶されたデータを選択するべきである。
【００９５】
プライマリノードにより第２、第３及び第４のデータセグメントに従ってイレージャーコーディングを実行する方法は、第１のデータセグメントに従ってイレージャーコーディングを実行する方法と同様であり、ここでは繰り返されない。
【００９６】
前述の実施例を理解するのを容易にするために、以下では、説明のために前述の実施例の具体的な適用シナリオを使用する。
【００９７】
分散型記憶システムの上位レイヤは、データ分配装置A及びデータ分配装置Bを含む。分散型記憶システムは、ECストライプを使用することによりデータを記憶し、各ECストライプは、４つのデータブロック及び２つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含み、プライマリノードが各記憶ノードグループ内で指定される。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割され、各論理パーティションのサイズは4Mであり、すなわち、第１の論理パーティションの論理アドレスの範囲は0M〜4Mであり、第２の論理パーティションの論理アドレスの範囲は4M〜8Mであり、第３の論理パーティションの論理アドレスの範囲は8M〜12M...である。各論理パーティションは、一意のkey値に対応し、第１の論理パーティションに対応するkey値は1であり、第２の論理パーティションに対応するkey値は2であり、第３の論理パーティションに対応するkey値は3...である。
【００９８】
データ分配装置Aは、ユーザの記憶命令を受信し、記憶命令は、記憶されるべきデータを搬送し、記憶されるべきデータの論理アドレスは5M〜12Mである。
【００９９】
5M〜8Mは第２の論理パーティションに入り、8M〜12Mは第３の論理パーティションに入るため、データ分配装置Aは、記憶されるべきデータを２つのデータセグメントに分割し、データセグメント1の論理アドレスは5M〜8Mであり、key値は2であり、データセグメント2の論理アドレスは8M〜12Mであり、key値は3である。
【０１００】
データ分配装置Aは、key値と記憶ノードグループとの間の対応関係を予め設定して記録し、key値2が記憶ノードグループ1に対応し、key値3が記憶ノードグループ6に対応すると決定する。
【０１０１】
データ分配装置Aは、記憶ノードグループ1のプライマリノード（すなわち、ノードA）にデータセグメント1を分配し、記憶ノードグループ6のプライマリノードにデータセグメント2を分配する。
【０１０２】
ノードAは、データセグメント1を受信し、その後、データ分配装置Bにより分配されたデータセグメント3を更に受信し、データセグメント3の論理アドレスは4M〜7Mである。ノードAは、データセグメント1の4M〜5Mの部分のデータを補い、次に、ECストライプ1を取得するために、補われたデータセグメント1においてイレージャーコーディングを実行する。ECストライプ1のkey値は2であり、バージョン番号は1である。ノードAは、データセグメント3の7M〜8Mの部分のデータを更に補い、次に、ECストライプ3を取得するために、補われたデータセグメント3においてイレージャーコーディングを実行する。ECストライプ3のkey値も2であり、バージョン番号は2である。各ECストライプは、6個のEC  blockを含み、これらは、４つのデータブロック及び２つのパリティブロックである。
【０１０３】
ECストライプ1について、ノードA自体は、ECストライプ1の１つのEC  blockを記憶し、ノードB〜FがECストライプ1の１つのEC  blockをそれぞれ記憶するように、記憶のためにノードB〜Fに５つの残りのEC  blockを分配する。ECストライプ1のEC  blockを成功して記憶した後に、ノードB〜Fは、応答メッセージをノードAに送信し、応答メッセージを受信した後に、ノードA自体は、ECストライプ2の１つのEC  blockを記憶し、ノードB〜FがECストライプ2の１つのEC  blockをそれぞれ記憶するように、記憶のためにノードB〜Fに５つの残りのEC  blockを分配する。
【０１０４】
前述は、本発明の実施例におけるデータ分配及びデータ記憶方法を詳細に説明している。以下の実施例は、前述の方法を実現する対応する装置を提供する。
【０１０５】
図４を参照すると、本発明の実施例により提供されるデータ分配装置の基本的な構成は、記憶命令を受信するように構成された命令受信モジュール401であり、記憶命令は、記憶されるべきデータを搬送する命令受信モジュール401と、記憶されるべきデータをP個のデータセグメントに分割するように構成されたデータセグメント分割モジュール402であり、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であるデータセグメント分割モジュール402と、各データセグメントに対応する記憶ノードグループを決定するように構成されたノードグループ決定モジュール403と、ノードグループ決定モジュール403により決定された、各データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するように構成されたデータセグメント分配モジュール404とを含む。
【０１０６】
この実施例により提供されるデータ分配装置では、命令受信モジュール401は、ユーザの記憶命令を受信し、データセグメント分割モジュール402は、記憶命令が記憶するように命令した記憶されるべきデータをP個のデータセグメントに分割し、ノードグループ決定モジュール403は、各データセグメントに対応する記憶ノードグループを決定し、データセグメント分配モジュール404は、対応する記憶ノードグループ内のプライマリノードにデータセグメントを分配する。この実施例では、データ分配装置は、記憶ノードへの分割後に取得されたデータセグメントを直接分配し、記憶されるべきデータにおいてイレージャーコーディングをもはや実行しないため、コンフリクトの問題を解決するために分散ロックを使用する必要はなく、頻繁なロック切り替えが引き起こされず、分散型記憶システムの性能が改善される。
【０１０７】
好ましくは、本発明の更に他の実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割され、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、データセグメント分割モジュール402は、記憶されるべきデータの論理アドレスに従って、記憶されるべきデータをP個のデータセグメントに分割するように具体的に構成され、各データセグメントは、１つの論理パーティションに入る。
【０１０８】
好ましくは、本発明の更に他の実施例では、データセグメント分割モジュール402による分割により取得されたP個のデータセグメントにおいて、第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【０１０９】
好ましくは、本発明の更に他の実施例では、データ分配装置は、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するように構成された対応関係モジュール405を更に含み、ノードグループ決定モジュール403は、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するように具体的に構成される。対応関係モジュール405は、任意選択のモジュールであり、データ分配装置は、対応関係モジュール405を有さなくてもよい。
【０１１０】
好ましくは、本発明の更に他の実施例では、分散型記憶システムの各論理パーティションは、１つのkey値に一意に対応し、対応関係モジュール405は、記憶ノードグループに対応するkey値を予め設定して記録するように具体的に構成され、ノードグループ決定モジュール403は、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定し、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するように具体的に構成される。
【０１１１】
本発明の実施例は、分散型記憶システムのいずれかの記憶ノードグループ内のプライマリノードに適用される関係するデータ記憶装置を更に提供する。図５を参照すると、データ記憶装置の基本的な構成は、第１のデータセグメントを受信するように構成されたデータ受信モジュール501であり、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるデータ受信モジュール501と、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するように構成されたデータコーディングモジュール502であり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むデータコーディングモジュール502と、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するように構成されたデータ分配モジュール503であり、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担うデータ分配モジュール503とを含む。
【０１１２】
図４に示す実施例は、データ分配装置を提供する。対応して、この実施例は、データ分配装置により分配されたデータを記憶するように構成されたデータ記憶装置を提供する。プライマリノードのデータ記憶装置では、データ受信モジュール501は、データ分配装置により分配された第１のデータセグメントを受信し、データコーディングモジュール502は、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行し、データ分配モジュール503は、記憶を実行するために、m+k個の記憶ノードに第１のECストライプのm+k個のデータブロックを分配する。従来技術と比べて、この実施例では、データ分配装置により元々実行されるイレージャーコーディング動作は、代わりにデータ記憶装置により実行される。このように、データ分配装置により実行されるイレージャーコーディングにより引き起こされるコンフリクトの問題は存在せず、更に、コンフリクトの問題を解決するために分散ロックを使用する必要はない。従って、頻繁なロック切り替えが引き起こされず、分散型記憶システムの性能が改善される。
【０１１３】
好ましくは、本発明の更に他の実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複しない。第１のデータセグメントは、１つの論理パーティションに入る。
【０１１４】
好ましくは、本発明の更に他の実施例では、データ受信モジュール501は、第２のデータセグメントを受信するように更に構成され、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複し、データコーディングモジュール502は、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するように更に構成され、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含み、データ分配モジュール503は、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、記憶を実行するために、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するように具体的に構成される。連続分配動作の目的は、m+k個の記憶ノードにおいて第１のECストライプ及び第２のECストライプの記憶のコンフリクトを回避するためのものである。m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つと、第２のECストライプのm個の第２のデータブロック又はk個の第２のパリティブロックのいずれか１つを記憶することを担う。好ましくは、本発明の更に他の実施例では、データ分配モジュール503は、以下の方法を使用することにより、連続分配順序に従って、記憶を実行するために、m+k個の記憶ノードに連続して第１のECストライプ及び第２のECストライプを連続して分配する。すなわち、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配し、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配する、或いは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配し、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配する。
【０１１５】
好ましくは、本発明の更に他の実施例では、データ受信モジュール501は、第３のデータセグメントを受信するように更に構成され、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複せず、データコーディングモジュール502は、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するように更に構成される。
【０１１６】
好ましくは、本発明の更に他の実施例では、データコーディングモジュール502は、以下の方法を使用することにより、第１のデータセグメントにおいてイレージャーコーディングを実行する。すなわち、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行する、或いは、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行する。
【０１１７】
前述の実施例を理解するのを容易にするために、以下では、説明のために前述の実施例の具体的な適用シナリオを使用する。
【０１１８】
分散型記憶システムの上位レイヤは、データ分配装置A及びデータ分配装置Bを含む。分散型記憶システムは、ECストライプを使用することによりデータを記憶し、各ECストライプは、４つのデータブロック及び２つのパリティブロックを含む。分散型記憶システムは、100個の記憶ノードグループを含み、プライマリノードが各記憶ノードグループ内で指定される。記憶ノードグループ1は6個の記憶ノードを含み、プライマリノードはノードAであり、セカンダリノードはノードB、ノードC、ノードD、ノードE及びノードFである。分散型記憶システムの論理ボリュームは、複数の論理パーティションに分割され、各論理パーティションのサイズは4Mであり、すなわち、第１の論理パーティションの論理アドレスの範囲は0M〜4Mであり、第２の論理パーティションの論理アドレスの範囲は4M〜8Mであり、第３の論理パーティションの論理アドレスの範囲は8M〜12M...である。各論理パーティションは、一意のkey値に対応し、第１の論理パーティションに対応するkey値は1であり、第２の論理パーティションに対応するkey値は2であり、第３の論理パーティションに対応するkey値は3...である。
【０１１９】
データ分配装置Aの命令受信モジュール401は、ユーザの記憶命令を受信し、記憶命令は、記憶されるべきデータを搬送し、記憶されるべきデータの論理アドレスは5M〜12Mである。
【０１２０】
5M〜8Mは第２の論理パーティションに入り、8M〜12Mは第３の論理パーティションに入るため、データセグメント分割モジュール402は、記憶されるべきデータを２つのデータセグメントに分割し、データセグメント1の論理アドレスは5M〜8Mであり、key値は2であり、データセグメント2の論理アドレスは8M〜12Mであり、key値は3である。
【０１２１】
ノードグループ決定モジュール403は、key値と記憶ノードグループとの間の対応関係を予め設定して記録し、key値2が記憶ノードグループ1に対応し、key値3が記憶ノードグループ6に対応すると決定する。
【０１２２】
データセグメント分配モジュール404は、記憶ノードグループ1のプライマリノード（すなわち、ノードA）にデータセグメント1を分配し、記憶ノードグループ6のプライマリノードにデータセグメント2を分配する。
【０１２３】
ノードAのデータ受信モジュール501は、データセグメント1を受信し、その後、データ分配装置Bにより分配されたデータセグメント3を更に受信し、データセグメント3の論理アドレスは4M〜7Mである。データコーディングモジュール502は、データセグメント1の4M〜5Mの部分のデータを補い、次に、ECストライプ1を取得するために、補われたデータセグメント1においてイレージャーコーディングを実行する。ECストライプ1のkey値は2であり、バージョン番号は1である。データコーディングモジュール502は、データセグメント3の7M〜8Mの部分のデータを更に補い、次に、ECストライプ3を取得するために、補われたデータセグメント3においてイレージャーコーディングを実行する。ECストライプ3のkey値も2であり、バージョン番号は2である。各ECストライプは、6個のEC  blockを含み、これらは、４つのデータブロック及び２つのパリティブロックである。
【０１２４】
データ分配モジュール503は、ECストライプ1の１つのEC  blockをノードAに割り当て、ノードB〜FがECストライプ1の１つのEC  blockをそれぞれ記憶するように、記憶のためにノードB〜Fに５つの残りのEC  blockを分配する。ECストライプ1のEC  blockを成功して記憶した後に、ノードB〜Fは、応答メッセージをノードAに送信し、ノードAが応答メッセージを受信し、ECストライプ2の１つのEC  blockを記憶した後に、データ分配モジュール503は、ノードB〜FがECストライプ2の１つのEC  blockをそれぞれ記憶するように、記憶のためにノードB〜Fに５つの残りのEC  blockを分配する。
【０１２５】
本発明の実施例におけるデータ分配装置は、モジュール機能エンティティの観点から前述された。以下では、ハードウェア処理の観点から本発明の実施例におけるデータ分配装置を説明する。図６を参照すると、本発明の実施例におけるデータ分配装置600の他の実施例は、入力装置601と、出力装置602と、プロセッサ603と、メモリ604とを含む（データ分配装置600に１つ以上のプロセッサ603が存在してもよく、図６では、１つのプロセッサ603が一例として使用される）。本発明の或る実施例では、入力装置601、出力装置602、プロセッサ603及びメモリ604は、バスにより或いは他の方式で接続されてもよく、図６では、バスを使用することによる接続が一例として使用される。
【０１２６】
メモリ604に記憶された動作命令を呼び出すことにより、プロセッサ603は、以下のステップ、すなわち、記憶命令を受信するステップであり、記憶命令は、記憶されるべきデータを搬送するステップと、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、１つのECストライプに対応し、各データセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであり、Pは正の整数であるステップと、各データセグメントに対応する記憶ノードグループを決定するステップと、データセグメントに対応する決定された記憶ノードグループ内のプライマリ記憶ノードにデータセグメントを分配するステップとを実行するように構成される。
【０１２７】
本発明の或る実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、プロセッサ603は、以下のステップ、すなわち、記憶されるべきデータをP個のデータセグメントに分割するステップであり、各データセグメントは、論理パーティションの１つに入るステップを実行するように更に構成される。
【０１２８】
本発明の或る実施例では、P個のデータセグメント内の第１のデータセグメントの開始アドレスは、記憶されるべきデータの開始アドレスであり、P個のデータセグメント内の第pのデータセグメントの開始アドレスは、第pのデータセグメントが入る論理パーティションの開始アドレスであり、2≦p≦Pである。
【０１２９】
本発明の或る実施例では、プロセッサ603は、以下のステップ、すなわち、各論理パーティションと各記憶ノードグループとの間の対応関係を予め設定して記録するステップと、各論理パーティションと各記憶ノードグループとの間の対応関係に従って、データセグメントが入る論理パーティションに対応する記憶ノードグループを決定するステップとを実行するように更に構成される。
【０１３０】
本発明の或る実施例では、各論理パーティションは、１つのkey値に一意に対応し、プロセッサ603は、以下のステップ、すなわち、各記憶ノードグループに対応するkey値を予め設定して記録するステップと、データセグメントが入る論理パーティションに従って、データセグメントのkey値を決定するステップと、データセグメントのkey値に従って、データセグメントに対応する記憶ノードグループを決定するステップとを実行するように更に構成される。
【０１３１】
以下では、ハードウェア処理の観点から本発明の実施例におけるデータ記憶装置を説明する。図７を参照すると、本発明の実施例におけるデータ記憶装置700の他の実施例は、入力装置701と、出力装置702と、プロセッサ703と、メモリ704とを含む（データ記憶装置700に１つ以上のプロセッサ703が存在してもよく、図７では、１つのプロセッサ703が一例として使用される）。本発明の或る実施例では、入力装置701、出力装置702、プロセッサ703及びメモリ704は、バスにより或いは他の方式で接続されてもよく、図７では、バスを使用することによる接続が一例として使用される。
【０１３２】
メモリ704に記憶された動作命令を呼び出すことにより、プロセッサ703は、以下のステップ、すなわち、第１のデータセグメントを受信するステップであり、第１のデータセグメントのサイズはZより大きくなく、Zはm個のデータブロックのサイズであるステップと、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第１のECストライプは、m個の第１のデータブロック及びk個の第１のパリティブロックを含むステップと、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップであり、m+k個の記憶ノード内の各記憶ノードは、第１のECストライプのm個の第１のデータブロック又はk個の第１のパリティブロックのいずれか１つを記憶することを担うステップとを実行するように構成される。
【０１３３】
本発明の或る実施例では、分散型記憶システムの論理ボリュームは、複数の論理パーティションを含み、論理パーティションはそれぞれZのサイズを有し、互いに重複せず、第１のデータセグメントは、論理パーティションの１つに入る。
【０１３４】
本発明の或る実施例では、プロセッサ703は、以下のステップ、すなわち、第２のデータセグメントを受信するステップであり、第２のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第２のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複するステップと、第２のECストライプを取得するために、第２のデータセグメントに従ってイレージャーコーディングを実行するステップであり、第２のECストライプは、m個の第２のデータブロック及びk個の第２のパリティブロックを含むステップと、第１のECストライプ及び第２のECストライプの連続分配順序を決定し、連続分配順序に従って、m+k個の記憶ノードに第１のECストライプ及び第２のECストライプを連続して分配するステップとを実行するように更に構成される。
【０１３５】
本発明の或る実施例では、プロセッサ703は、以下のステップ、すなわち、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より早い場合、記憶を実行するために、まずm+k個の記憶ノードに第１のECストライプを分配するステップと、m+k個の記憶ノードが第１のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第２のECストライプを分配するステップとを実行するように、或いは、第１のデータセグメントの受信時間が第２のデータセグメントの受信時間より遅い場合、記憶を実行するために、まずm+k個の記憶ノードに第２のECストライプを分配するステップと、m+k個の記憶ノードが第２のECストライプを成功して記憶したことを示す応答メッセージを受信した後に、記憶を実行するために、m+k個の記憶ノードに第１のECストライプを分配するステップとを実行するように更に構成される。
【０１３６】
本発明の或る実施例では、プロセッサ703は、以下のステップ、すなわち、第３のデータセグメントを受信するステップであり、第３のデータセグメント及び第１のデータセグメントは、同じ論理パーティションに入り、第３のデータセグメントの論理アドレスは、第１のデータセグメントの論理アドレスと重複しないステップと、第３のデータセグメントを第１のデータセグメントに結合し、第１のECストライプを取得するために、第１のデータセグメントに従ってイレージャーコーディングを実行するステップを起動するステップとを実行するように更に構成される。
【０１３７】
本発明の或る実施例では、プロセッサ703は、以下のステップ、すなわち、第１のデータセグメントのサイズがZに等しい場合、第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップを実行するように、或いは、第１のデータセグメントのサイズがZ未満である場合、サイズがZに等しくなるように第１のデータセグメントを補うために記憶されたデータを使用し、次に、補われた第１のデータセグメントをm個の第１のデータブロックに分割し、k個の第１のパリティブロックを取得するために、m個の第１のデータブロックにおいてパリティコーディングを実行するステップを実行するように更に構成される。
【０１３８】
本発明の実施例は、分散型記憶システムを更に提供する。分散型記憶システムは、複数の記憶ノードを含む。分散型記憶システムは、ECストライプを使用することによりデータを記憶し、各ECストライプは、データ部及びパリティ部を含み、各ECストライプのデータ部は、m個のデータブロックを含み、各ECストライプのパリティ部は、パリティコーディングがm個のデータブロックにおいて実行された後に取得されたk個のパリティブロックを含み、複数の記憶ノードは、複数の記憶ノードグループを構成し、各記憶ノードグループに含まれる記憶ノードの量は、m+k未満ではなく、１つのプライマリ記憶ノードが各記憶ノードグループ内で指定され、m及びkは共に正の整数である。
【０１３９】
分散型記憶システムは、図５又は図７に示すデータ記憶装置を更に含む。
【０１４０】
便利且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応する処理に参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明確に認識され得る。
【０１４１】
本出願で提供される複数の実施例では、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが認識されるべきである。例えば、記載の装置の実施例は単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、他のシステムに統合されてもよく、いくつかの機能が無視されてもよく実行されなくてもよい。更に、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを通じて実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電気的、機械的又は他の形式で実現されてもよい。
【０１４２】
別々の部分として記載したユニットは、物理的に別々でもよく別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく物理的なユニットでなくてもよく、１つの位置に存在してもよく、複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、実施例の対策の目的を達成するために、実際のニーズに従って選択されてもよい。
【０１４３】
更に、本発明の実施例における機能ユニットは、１つの処理ユニットに統合されてもよく、ユニットのそれぞれが物理的に単独で存在してもよく、２つ以上のユニットが１つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、ソフトウェアの機能ユニットの形式で実現されてもよい。
【０１４４】
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、基本的に本発明の技術的対策若しくは従来技術に寄与する部分、又は技術的対策の一部若しくは全部は、ソフトウェアプロダクトの形式で実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス（パーソナルコンピュータ、サーバ又はネットワークデバイス等でもよい）に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令する複数の命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ（ROM、Read-Only  Memory）、ランダムアクセスメモリ（RAM、Random  Access  Memory）、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
【０１４５】
前述の実施例は、単に本発明の技術的対策を説明することを意図するものであり、本発明を限定することを意図するものではない。前述の実施例を参照して本発明について詳細に説明したが、当業者は、本発明の実施例の技術的対策の範囲を逸脱することなく、依然として前述の実施例に記載の技術的対策に変更を行ってもよく、そのいくつかの技術的特徴に等価置換を行ってもよいことを認識するべきである。
【図１（ａ）】
0006259868.tif 000003
【図１（ｂ）】
0006259868.tif 000004
【図２】
0006259868.tif 000005
【図３】
0006259868.tif 000006
【図４】
0006259868.tif 000007
【図５】
0006259868.tif 000008
【図６】
0006259868.tif 000009
【図７】
0006259868.tif 000010