(57)【要約】【課題】分散ストレージシステムの性能を向上させるストレージシステム及びストレージコントローラの動作方法を提供する。【解決手段】本発明のストレージコントローラは、ＲＡＩＤマスターコントローラから割当てられた第１ＲＡＩＤ作業を直接処理して第１ストレージ装置を制御するＲＡＩＤ作業処理ユニットと、第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するＲＡＩＤ作業分配ユニットとを、備える。【選択図】図１
2015207289.tif 000002
【特許請求の範囲】
【請求項１】
第１ストレージ装置に第１ＲＡＩＤ作業を割り当てるＲＡＩＤマスターコントローラと、
前記第１ＲＡＩＤ作業を処理して前記第１ストレージ装置を制御し、前記第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を第２ストレージ装置に分配する第１ＲＡＩＤコントローラと、
前記第２ＲＡＩＤ作業を処理して前記第２ストレージ装置を制御する第２ＲＡＩＤコントローラと、を備えることを特徴とするストレージシステム。
【請求項２】
第３ＲＡＩＤコントローラを更に含み、
前記第２ＲＡＩＤコントローラは、前記第２ＲＡＩＤ作業に関連する第３ＲＡＩＤ作業を第３ストレージ装置に分配し、
前記第３ＲＡＩＤコントローラは、前記第３ＲＡＩＤ作業を処理して前記第３ストレージ装置を制御することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第１ＲＡＩＤコントローラは、前記第１ＲＡＩＤ作業により前記第１ストレージ装置に格納された既存データを新規データにアップデートし、前記既存データ及び前記新規データを前記第２ＲＡＩＤコントローラに伝送し、
前記第２ＲＡＩＤコントローラは、前記第２ＲＡＩＤ作業により前記既存データ及び前記新規データを利用してパリティをアップデートすることを特徴とする請求項１に記載のストレージシステム。
【請求項４】
前記第２ＲＡＩＤコントローラは、前記既存データ、前記新規データ、及び前記第２ストレージ装置に格納された既存パリティに対してＸＯＲ演算を行い、パリティをアップデートすることを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記第１ＲＡＩＤコントローラは、前記既存データ及び前記新規データに対してＸＯＲ演算を行い、ＸＯＲデータを生成して前記第２ＲＡＩＤコントローラに伝送し、
前記第２ＲＡＩＤコントローラは、前記ＸＯＲデータ及び前記既存パリティに対してＸＯＲ演算を行い、パリティをアップデートすることを特徴とする請求項４に記載のストレージシステム。
【請求項６】
前記第１ＲＡＩＤコントローラは、前記第２ストレージ装置でアップデートされたパリティを利用して前記第１ストレージ装置のデータを復旧することを特徴とする請求項３に記載のストレージシステム。
【請求項７】
前記第１ストレージ装置と前記第２ストレージ装置とは、ネットワークを介して一対一で接続され、
前記第１ＲＡＩＤコントローラは、前記第２ＲＡＩＤ作業を前記第２ストレージ装置に直接伝送することを特徴とする請求項１に記載のストレージシステム。
【請求項８】
前記第２ＲＡＩＤコントローラは、前記第２ＲＡＩＤ作業の処理結果を前記第１ＲＡＩＤコントローラに伝送することを特徴とする請求項１に記載のストレージシステム。
【請求項９】
前記第１ストレージ装置及び前記第２ストレージ装置のうちの少なくとも一つは、複数のストレージ装置を含むことを特徴とする請求項１に記載のストレージシステム。
【請求項１０】
ＲＡＩＤ作業を処理して第１ストレージ装置を制御し、前記ＲＡＩＤ作業に関連する第１ＲＡＩＤサブ作業と第２ＲＡＩＤサブ作業とをそれぞれ第２ストレージ装置と第３ストレージ装置とに分配する第１ＲＡＩＤコントローラと、
前記第１ＲＡＩＤサブ作業を処理して第２ストレージ装置を制御する第２ＲＡＩＤコントローラと、
前記第２ＲＡＩＤサブ作業を処理して第３ストレージ装置を制御する第３ＲＡＩＤコントローラと、を備えることを特徴とするストレージシステム。
【請求項１１】
前記第１ＲＡＩＤコントローラは、前記第１ＲＡＩＤサブ作業と前記第２ＲＡＩＤサブ作業とをそれぞれ同時に前記第２ＲＡＩＤコントローラと前記第３ＲＡＩＤコントローラとに分配することを特徴とする請求項１０に記載のストレージシステム。
【請求項１２】
前記第１ＲＡＩＤコントローラは、前記第１ＲＡＩＤサブ作業及び前記第２ＲＡＩＤサブ作業を全て前記第２ＲＡＩＤコントローラに伝送し、
前記第２ＲＡＩＤコントローラは、前記第２ＲＡＩＤサブ作業を前記第３ＲＡＩＤコントローラに伝送することを特徴とする請求項１０に記載のストレージシステム。
【請求項１３】
前記第１ストレージ装置と前記第２ストレージ装置、前記第１ストレージ装置と前記第３ストレージ装置、及び前記第２ストレージ装置と前記第３ストレージ装置は、ネットワークを介して一対一で直接接続されることを特徴とする請求項１０に記載のストレージシステム。
【請求項１４】
前記第２ＲＡＩＤコントローラは、前記第１ＲＡＩＤサブ作業の処理結果を前記第１ＲＡＩＤコントローラに伝送し、
前記第３ＲＡＩＤコントローラは、前記第２ＲＡＩＤサブ作業の処理結果を前記第１ＲＡＩＤコントローラに伝送することを特徴とする請求項１０に記載のストレージシステム。
【請求項１５】
前記第１ＲＡＩＤコントローラは、前記第２ＲＡＩＤコントローラと前記第３ＲＡＩＤコントローラとからそれぞれ受信した前記第１ＲＡＩＤサブ作業の処理結果と前記第２ＲＡＩＤサブ作業の処理結果とを利用して前記第１ストレージ装置を制御することを特徴とする請求項１４に記載のストレージシステム。
【請求項１６】
ＲＡＩＤマスターコントローラから割当てられた第１ＲＡＩＤ作業を直接処理して第１ストレージ装置を制御するステップと、
前記第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するステップと、を有することを特徴とするストレージコントローラの動作方法。
【請求項１７】
前記第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するステップは、
前記第２ＲＡＩＤ作業を前記第１ストレージ装置とネットワークを介して一対一で接続されたストレージ装置に直接伝送するステップを含むことを特徴とする請求項１６に記載のストレージコントローラの動作方法。
【請求項１８】
前記第１ＲＡＩＤ作業は、前記第１ストレージ装置に格納された既存データを新規データにアップデートする作業を含み、
前記第２ＲＡＩＤ作業は、前記第２ストレージ装置のパリティをアップデートする作業を含むことを特徴とする請求項１６に記載のストレージコントローラの動作方法。
【請求項１９】
前記第２ストレージ装置でアップデートされたパリティを利用して前記第１ストレージ装置のデータを復旧するステップを更に含むことを特徴とする請求項１８に記載のストレージコントローラの動作方法。
【請求項２０】
前記第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するステップは、
前記第２ＲＡＩＤ作業に関連する第３ＲＡＩＤ作業を第３ストレージ装置に分配するステップを更に含むことを特徴とする請求項１６に記載のストレージコントローラの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びストレージコントローラの動作方法に関する。
【背景技術】
【０００２】
ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋ）はデータを分割して複数のディスクに分散格納する技法として様々な類型が存在する。例えば、ＲＡＩＤ５は、データをストライピングして複数のディスクに分散格納し、ディスクが故障したときに該当ディスクに格納されたデータを復旧するために使用されるパリティビット（以下、「パリティ」という）も共に格納する。パリティは、ストライピングされたデータを、ＸＯＲ演算を行って生成される。一方、ＲＡＩＤ６は追加して格納された２次パリティを利用してデータの復旧能力を更に向上させる。
【０００３】
ＲＡＩＤを使用するシステムは、複数のディスク、即ち複数のストレージを制御する中央ＲＡＩＤコントローラを含む。中央ＲＡＩＤコントローラは複数のストレージに対するＲＡＩＤ作業を処理しながら複数のストレージを制御する。しかし、ＲＡＩＤ作業が頻繁に発生するほど中央ＲＡＩＤコントローラの作業負荷は増加し、中央ＲＡＩＤコントローラのオーバーヘッドの増加によってＲＡＩＤを使用するシステムの性能が低下するという問題が発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＲＡＩＤ作業を一つ以上のストレージ装置に分散させて分散ストレージシステムの性能を向上させるストレージシステムを提供することにある。
また、本発明の目的は、ＲＡＩＤ作業を一つ以上のストレージ装置に分散させて分散ストレージシステムの性能を向上させるストレージコントローラの動作方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様によるストレージコントローラは、ＲＡＩＤマスターコントローラから割当てられた第１ＲＡＩＤ作業を直接処理して第１ストレージ装置を制御するＲＡＩＤ作業処理ユニットと、前記第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するＲＡＩＤ作業分配ユニットと、を備える。
【０００６】
上記目的を達成するためになされた本発明の一態様によるストレージシステムは、第１ストレージ装置に第１ＲＡＩＤ作業を割り当てるＲＡＩＤマスターコントローラと、前記第１ＲＡＩＤ作業を処理して前記第１ストレージ装置を制御し、前記第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を第２ストレージ装置に分配する第１ＲＡＩＤコントローラと、前記第２ＲＡＩＤ作業を処理して前記第２ストレージ装置を制御する第２ＲＡＩＤコントローラと、を備える。
【０００７】
上記目的を達成するためになされた本発明の他の態様によるストレージシステムは、ＲＡＩＤ作業を処理して第１ストレージ装置を制御し、前記ＲＡＩＤ作業に関連する第１ＲＡＩＤサブ作業と第２ＲＡＩＤサブ作業とをそれぞれ第２ストレージ装置と第３ストレージ装置とに分配する第１ＲＡＩＤコントローラと、前記第１ＲＡＩＤサブ作業を処理して第２ストレージ装置を制御する第２ＲＡＩＤコントローラと、前記第２ＲＡＩＤサブ作業を処理して第３ストレージ装置を制御する第３ＲＡＩＤコントローラと、を備える。
【０００８】
上記目的を達成するためになされた本発明の一態様によるストレージコントローラの動作方法は、ＲＡＩＤマスターコントローラから割当てられた第１ＲＡＩＤ作業を直接処理して第１ストレージ装置を制御するステップと、前記第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を、第２ストレージ装置を含む一つ以上のストレージ装置に分配するステップと、を有する。
【発明の効果】
【０００９】
本発明によれば、ＲＡＩＤ５システムでデータをアップデートする場合、Ｉ／Ｏ回数を減少させて分散ストレージシステムの性能向上を図ることができる。
また、本発明の分散ストレージシステムは、ＲＡＩＤマスターコントローラが一つのストレージ装置に対してデータライト作業を１回行い、ストレージ装置がパリティを格納する他のストレージ装置に対してライト作業を１回行うため、合計２回のライト作業のみが行われ、データＩ／Ｏ回数を減少させることができる。
また、本発明のストレージ装置は、能動的に他のストレージ装置に作業を分配及び割り当てることができるため、データ分散と共にＲＡＩＤ作業をはじめとするデータＩ／Ｏ作業の分散効果ももたらし、ホストの作業負荷を減少させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態によるストレージシステムを説明するための概略図である。
【図２】本発明の一実施形態によるストレージシステムに使用されるホスト装置を説明するための概略図である。
【図３】本発明の他の実施形態によるストレージシステムに使用される装置を説明するための概略図である。
【図４】本発明の一実施形態によるストレージシステムに使用されるストレージ装置を説明するための概略図である。
【図５】本発明の他の実施形態によるストレージシステムに使用されるストレージ装置を説明するための概略図である。
【図６】本発明の一実施形態によるストレージシステムに使用されるＲＡＩＤ管理方法を説明するための概略図である。
【図７】本発明の一実施形態によるストレージコントローラを説明するための概略図である。
【図８】本発明の一実施形態によるストレージコントローラがＲＡＩＤ作業を処理する動作を説明するための概略図である。
【図９】本発明の他の実施形態によるストレージコントローラがＲＡＩＤ作業を処理する動作を説明するための概略図である。
【図１０】本発明の他の実施形態によるストレージコントローラを説明するための概略図である。
【図１１】本発明の他の実施形態によるストレージシステムを説明するための概略図である。
【図１２】本発明の更に他の実施形態によるストレージシステムを説明するための概略図である。
【図１３】本発明の一実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【図１４】本発明の他の実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【図１５】本発明の更に他の実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。しかし、本発明は、以下で開示する実施形態に限定されるものではなく、異なる多様な形態で具現されるものであり、本実施形態は、単に本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供するものである。図面に表示する構成要素のサイズ及び相対的なサイズは説明を明瞭するため誇張したものである。明細書全体に亘り同一参照符号は同一構成要素を指称し、「及び／又は」は言及するアイテムの各々及び一つ以上の全ての組合せを含む。
【００１２】
素子（ｅｌｅｍｅｎｔｓ）又は層が他の素子又は層の「上（ｏｎ）」と指称する場合、他の素子の真上に又は中間に他の層又は他の素子を介在する場合の全てを含む。反面、素子が「直接の上（ｄｉｒｅｃｔｌｙ  ｏｎ）」又は「真上」と指称する場合は、中間に他の素子又は層を介在しないことを示す。第１素子が第２素子に「直接連結」又は「直接接続」するということは、第１素子と第２素子との間に他の素子が介在しないことを示す。
【００１３】
空間的に相対的な用語である「下（ｂｅｌｏｗ）」、「下（ｂｅｎｅａｔｈ）」、「下部（ｌｏｗｅｒ）」、「上（ａｂｏｖｅ）」、「上部（ｕｐｐｅｒ）」などは図面に示すように一つの素子又は構成要素と異なる素子又は構成要素との相関関係を容易に記述するために使用する。空間的に相対的な用語は、図面に示す方向に加え、使用時又は動作時の素子の互いに異なる方向を含む用語として理解される。例えば、図面に示す素子をひっくり返す場合、他の素子の「下（ｂｅｌｏｗ）」又は「下（ｂｅｎｅａｔｈ）」と記述する素子は他の素子の「上（ａｂｏｖｅ）」に置かれる。従って、例示的な用語である「下」は下と上の方向を全て含み得る。素子は他の方向にも配向され、これにより空間的に相対的な用語は配向により解釈される。
【００１４】
本明細書で使用する用語は、実施形態を説明するためのものであり、本発明を制限しようとするものではない。本明細書で、単数型は文句で特に言及しない限り複数型も含む。明細書で使用する「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」は言及する構成要素、段階、動作、及び／又は素子は一つ以上の他の構成要素、段階、動作、及び／又は素子の存在又は追加を排除しない。
【００１５】
第１、第２などを多様な素子や構成要素を記述するために使用するが、これらの素子や構成要素はこれらの用語によって制限されない。これらの用語は、単に一つの構成要素を他の構成要素と区別するために使用するものである。従って、以下で言及する第１構成要素は本発明の技術的思想内で第２構成要であり得る。
【００１６】
他に定義しなければ、本明細書で使用する全ての用語（技術及び科学的用語を含む）は、本発明が属する技術分野で通常の知識を有する者が共通に理解できる意味として使用される。また一般に使用する辞典に定義された用語は明白に特別に定義されない限り理想的に又は過度に解釈されない。
【００１７】
図１は、本発明の一実施形態によるストレージシステムを説明するための概略図である。
【００１８】
図１を参照すると、本発明のストレージシステム１は、ホスト１００及び複数のストレージ装置（２００、２０２、２０４、２０６）を含む。
【００１９】
ホスト１００は、データ入出力要求を受信し、複数のストレージ装置（２００、２０２、２０４、２０６）に対してデータ入出力を行う。データ入出力要求は、データ格納、データアップデート、データリード（ｒｅａｄ）などの作業を要求することを含む。以下では主にデータ入出力要求がデータ格納要求である場合を説明するが、本発明はこれに限定されない。ホスト１００は、データ入出力要求をユーザから受信し、またホスト１００上で実行されるアプリケーションソフトウェアを利用してデータ入出力要求を受信する。ホスト１００は、要求されたデータ入出力作業を複数のストレージ装置（２００、２０２、２０４、２０６）に分散処理するために、ＲＡＩＤシステムを運用する。例えば、要求されたデータ入出力作業がデータ格納作業である場合、ホスト１００は、ＲＡＩＤシステムを利用してデータを複数のストレージ装置（２００、２０２、２０４、２０６）に分散格納する。ＲＡＩＤシステムを運用するため、ホスト１００は、ＲＡＩＤマスターコントローラ１１０を含む。これについては、図２及び図３を参照して後述する。一実施形態で、ホスト１００は、デスクトップコンピュータ等の個人用コンピュータ、サーバコンピュータ、ノートブック等の携帯用のコンピュータ、及び携帯電話、スマートフォン、タブレット、ＭＰ３、ＰＭＰ（ｐｏｒｔａｂｌｅ  ｍｕｌｔｉｍｅｄｉａ  ｐｌａｙｅｒ）、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、デジタルカメラ、カムコーダ等の携帯用装置を含むが、本発明はこれに限定されない。
【００２０】
複数のストレージ装置（２００、２０２、２０４、２０６）は、ホスト１００から受信したデータ入出力命令に応じてデータ入出力を行う。例えば、ストレージ装置（２００、２０２、２０４、２０６）は、ホスト１００から受信したデータリード命令に応じてフラッシュメモリ２１３からデータをリードしてホスト１００に伝送し、ホスト１００から受信したデータ格納命令に応じてデータをフラッシュメモリ２１３に格納する。一実施形態で、ストレージ装置（２００、２０２、２０４、２０６）は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）であり、ホスト１００とＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）方式でインターフェースして命令及びデータを送受信するが、本発明はこれに限定されない。ストレージ装置（２００、２０２、２０４、２０６）は、ＲＡＩＤマスターコントローラ１１０と協調してＲＡＩＤシステムを具現するためのＲＡＩＤコントローラ（２１０、２１２、２１４、２１６）を含む。これについては、図４及び図５を参照して後述する。
【００２１】
本実施形態で、複数のストレージ装置（２００、２０２、２０４、２０６）の間には、直接的なネットワークの連結が形成される。例えば、ストレージ装置２００とストレージ装置２０２はネットワークを介して一対一で直接接続されて命令及びデータを送受信する。ここで、ネットワークは、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＩＦＩネットワーク、又はセルラーネットワーク等の有線無線ネットワークである。一方、本実施形態で、複数のストレージ装置（２００、２０２、２０４、２０６）は、予め定められたプロトコルによってデータを相互送受信する。例えば、予め定められたプロトコルはＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＰＣＩ  ｅｘｐｒｅｓｓ、ＡＴＡ、ＰＡＴＡ（Ｐａｒａｌｌｅｌ  ＡＴＡ）、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴＡ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＰＣＩＥ（ＰＣＩ  Ｅｘｐｒｅｓｓ）などであり得るが、これに限定されない。
【００２２】
図２は、本発明の一実施形態によるストレージシステムに使用されるホスト装置を説明するための概略図である。
【００２３】
図２を参照すると、ホスト１００は、プロセッサ１２０、メモリコントローラ１２４、及びＩ／Ｏコントローラ１２８を含む。
【００２４】
プロセッサ１２０は、回路、ロジック、コード、又はこれらの組合せで具現され、ホスト１００の動作の全般を制御する。プロセッサ１２０は、ユーザから受信したデータ入出力要求命令を解釈し、解釈結果によってホスト１００に接続された複数のストレージ装置（２００、２０２、２０４、２０６）に対してデータ入出力作業を行う。
【００２５】
メモリコントローラ１２４は、ホスト１００に備えられたメモリ装置を制御する。ホスト１００に備えられたメモリ装置は、複数のストレージ装置（２００、２０２、２０４、２０６）に入出力要求をするためのデータを格納するメモリ装置であって、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又はＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）である。例えば、メモリコントローラ１２４は、プロセッサ１２０の指示に従い、メモリ装置に格納されたデータをＩ／Ｏコントローラ１２８に伝達する。
【００２６】
Ｉ／Ｏコントローラ１２８は、伝達されたデータを複数のストレージ装置（２００、２０２、２０４、２０６）に伝送し、また複数のストレージ装置（２００、２０２、２０４、２０６）からデータを受信する。
【００２７】
プロセッサ１２０、メモリコントローラ１２４、及びＩ／Ｏコントローラ１２８は、システムバス１２６を介して電気的に接続される。本実施形態で、Ｉ／Ｏコントローラ１２８と複数のストレージ装置（２００、２０２、２０４、２０６）は、Ｉ／Ｏバス１２９を介して電気的に接続される。
【００２８】
図１に示すＲＡＩＤマスターコントローラ１１０は、ＲＡＩＤシステムの全般を制御し、データを複数のストレージ装置（２００、２０２、２０４、２０６）に分散格納する。例えば、ＲＡＩＤマスターコントローラ１１０は、データをストライピング（ｓｔｒｉｐｉｎｇ）して複数のストレージ装置（２００、２０２、２０４、２０６）に分散格納し、ストライピングされたデータに対してＸＯＲ演算により得られたパリティを複数のストレージ装置（２００、２０２、２０４、２０６）に分散格納する。また、複数のストレージ装置（２００、２０２、２０４、２０６）のうちの何れか一つに故障が発生した場合、パリティを利用して故障が発生したストレージ装置に格納されたデータを復旧する。本実施形態で、ＲＡＩＤマスターコントローラ１１０は、ソフトウェア又はハードウェアで具現される。図２を再び参照すると、ＲＡＩＤマスターコントローラ１１０がソフトウェアで具現された場合、プロセッサ１２０は、ＲＡＩＤマスターコントローラ１１０のアプリケーションソフトウェアを実行させてＲＡＩＤシステムを運用する。
【００２９】
図３は、本発明の他の実施形態によるストレージシステムに使用される装置を説明するための概略図である。
【００３０】
図３を参照すると、ホスト１００は、ＲＡＩＤマスターコントローラ１１０、プロセッサ１２０、メモリコントローラ１２４、及びＩ／Ｏコントローラ１２８を含む。
【００３１】
図２と違う点は、ＲＡＩＤマスターコントローラ１１０がハードウェアで具現される点である。ハードウェアで具現されたＲＡＩＤマスターコントローラ１１０は、プロセッサ１２０、メモリコントローラ１２４、及びＩ／Ｏコントローラ１２８にシステムバス１２６を介して電気的に接続される。
【００３２】
図４は、本発明の一実施形態によるストレージシステムに使用されるストレージ装置を説明するための概略図である。
【００３３】
図４を参照すると、ストレージ装置２００は、フラッシュメモリコントローラ２１１及びフラッシュメモリ２１３を含む。
【００３４】
フラッシュメモリコントローラ２１１は、プロセッサ２２０、メモリコントローラ２２４、ホストインターフェース２２８、及びフラッシュメモリインターフェース２２９を含む。
【００３５】
プロセッサ２１０は、回路、ロジック、コード、又はこれらの組合せで具現され、ストレージ装置２００の動作の全般を制御する。ストレージ装置２００に電源が印加されると、プロセッサ２１０は、ＲＯＭに格納されたストレージ装置２００の動作のためのファームウェアをＲＡＭ上で駆動させることによってストレージ装置２００の全般的な動作を制御する。また、プロセッサ２１０は、ホストインターフェース２２８を介して受信した命令を解釈し、解釈結果によってフラッシュメモリ２１３の動作の全般を制御する。また、プロセッサ２２０は、アドレスマッピングテーブルを使用してホスト１００から提供された論理アドレスをフラッシュメモリ２１３に対応する物理アドレスにマッピングする。
【００３６】
メモリコントローラ２２４は、ストレージ装置２００に備えられたローカルメモリを制御する。ローカルメモリはＲＯＭ又はＲＡＭを含む。一実施形態で、ＲＯＭはストレージ装置２００の駆動ファームウェアコードを格納する。一方、ＲＡＭは、バッファ（ｂｕｆｆｅｒ）の役割を果たすメモリであり、ホストインターフェース２２８を介して入力された様々な命令又は変数を格納する。また、ＲＡＭは、フラッシュメモリ２１３にデータを入力し、またフラッシュメモリ２１３から出力されるデータを格納する。そして、ＲＡＭは、フラッシュメモリ２１３に入力されて出力される各種パラメータ及び変数を格納する。
【００３７】
ホストインターフェース２２８は、ストレージ装置２００とホスト１００との間のインターフェースを行う。フラッシュメモリインターフェース２２９は、フラッシュメモリコントローラ２１１とフラッシュメモリ２１３との間のインターフェースを行う。
【００３８】
フラッシュメモリ２１３は、フラッシュメモリコントローラ２１１から提供されたデータをメモリセルに格納する。具体的に、フラッシュメモリ２１３は、データを格納する複数個のセルアレイを含む。セルアレイは複数個のプレーンを含み、プレーンは複数個のブロックを含み、ブロックは複数個のページを含む。一実施形態で、フラッシュメモリ２１３は、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃｓ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む不揮発性メモリ装置である。
【００３９】
図１に示すＲＡＩＤコントローラ２１０は、ＲＡＩＤマスターコントローラ１１０と協調してＲＡＩＤシステムを具現する。特に注目すべき点は、ＲＡＩＤコントローラ２１０はＲＡＩＤマスターコントローラ１１０が遂行するＲＡＩＤ作業を直接処理する点である。例えば、ＲＡＩＤコントローラ２１０は、データをストライピングしてストレージ装置２００に格納し、ストライピングしたデータに対してＸＯＲ演算により得られたパリティをストレージ装置２０６に格納する。また、ストレージ装置２００に故障が発生した場合、ストレージ装置２０６に格納されたパリティを利用してストレージ装置２００に格納されたデータを復旧する。また、ＲＡＩＤコントローラ２１０は、上述した作業を他のストレージ装置（２０２、２０４、２０６）に分配する。例えば、ストレージ装置２００を制御するＲＡＩＤコントローラ２１０は、ＲＡＩＤ作業の一部を処理するように他のストレージ装置（２０２、２０４、２０６）に要求する。本実施形態で、ＲＡＩＤコントローラ２１０はソフトウェア又はハードウェアで具現される。図４を再び参照すると、ＲＡＩＤコントローラ２１０がソフトウェアで具現された場合、プロセッサ２２０は、ＲＡＩＤコントローラ２１０のアプリケーションソフトウェアを実行させてストレージ装置２００に対してＲＡＩＤ作業を行う。
【００４０】
図５は、本発明の他の実施形態によるストレージシステムに使用されるストレージ装置を説明するための概略図である。
【００４１】
図５を参照すると、ストレージ装置２００は、フラッシュメモリコントローラ２１１及びフラッシュメモリ２１３を含む。
【００４２】
フラッシュメモリコントローラ２１１は、ＲＡＩＤコントローラ２１０、プロセッサ２２０、メモリコントローラ２２４、ホストインターフェース２２８、及びフラッシュメモリインターフェース２２９を含む。
【００４３】
図４と違う点は、ＲＡＩＤコントローラ２１０がハードウェアで具現される点である。ハードウェアで具現されたＲＡＩＤコントローラ２１０は、プロセッサ２２０、メモリコントローラ２２４、ホストインターフェース２２６、及びフラッシュメモリインターフェース２２９に内部バス２２６を介して電気的に接続される。
【００４４】
図６は、本発明の一実施形態によるストレージシステムに使用されるＲＡＩＤ管理方法を説明するための概略図である。
【００４５】
図６を参照すると、格納要求されたデータはストライピングされて複数のデータ格納領域（３００、３０２、３０４、３０６）に分散格納される。ここで、複数のデータ格納領域（３００、３０２、３０４、３０６）は、複数のストレージ装置（２００、２０２、２０４、２０６）に備えられたフラッシュメモリである。例えば、格納要求されたデータはデータＡ１（３１０）、データＡ２（３１２）、及びデータＡ３（３１４）にストライピングされ、データＡ１（３１０）はデータ格納領域３００に、データＡ２（３１２）はデータ格納領域３０２に、そしてデータＡ３（３１４）はデータ格納領域３０４に格納される。これと共に、データＡ１（３１０）、データＡ２（３１２）、及びデータＡ３（３１４）に基づいて生成されたパリティＡＰ（３１６）は、データ格納領域３０６に格納される。パリティＡＰ（３１６）は、ストレージ装置に故障が発生した場合、データＡ１（３１０）、データＡ２（３１２）、及びデータＡ３（３１４）を復旧するために使用される。
【００４６】
ＲＡＩＤマスターコントローラ１１０は、上述したＲＡＩＤ作業をＲＡＩＤコントローラ（２１０、２１２、２１４、２１６）に割り当てる。即ち、ＲＡＩＤマスターコントローラ１１０は、データ格納作業、データアップデート作業、又はデータリード作業などをＲＡＩＤコントローラ（２１０、２１２、２１４、２１６）が直接処理するように割り当てる。ＲＡＩＤコントローラ（２１０、２１２、２１４、２１６）は、ＲＡＩＤマスターコントローラ１１０から割当てられたＲＡＩＤ作業を直接処理し、またＲＡＩＤマスターコントローラ１１０から割当てられたＲＡＩＤ作業を他のＲＡＩＤコントローラに分配する。
【００４７】
例えば、ＲＡＩＤマスターコントローラ１１０がデータＡ１（３１０）に対するアップデート作業をＲＡＩＤコントローラ２１０に割り当てた場合、ＲＡＩＤコントローラ２１０はデータＡ１（３１０）をアップデートする作業を直接処理する。データＡ１（３１０）がアップデートされると、ＲＡＩＤシステムの運用のためにパリティＡＰ（３１６）もアップデートされなければならない。この場合、ＲＡＩＤコントローラ２１０は、パリティＡＰ（３１６）をアップデートする作業をＲＡＩＤコントローラ２１６に分配する。ＲＡＩＤコントローラ２１６は、ＲＡＩＤコントローラ２１０から割当てられたＲＡＩＤ作業、即ちパリティＡＰ（３１６）をアップデートする作業を処理した後、その処理結果をＲＡＩＤコントローラ２１０に伝送する。
【００４８】
図７は、本発明の一実施形態によるストレージコントローラを説明するための概略図である。
【００４９】
図７を参照すると、ＲＡＩＤマスターコントローラ１１０は、ＲＡＩＤ作業分配ユニット１３０及びＲＡＩＤ復旧ユニット１４０を含む。ＲＡＩＤ作業分配ユニット１３０は、ＲＡＩＤシステムを運用するためのＲＡＩＤ作業をＲＡＩＤコントローラ（２１０、２１２）に割り当てる。ＲＡＩＤ復旧ユニット１４０は、ＲＡＩＤコントローラ（２１０、２１２）が制御するストレージ装置のうち、故障が発生したストレージに格納されたデータを復旧する。
【００５０】
ＲＡＩＤコントローラ２１０は、ＲＡＩＤ作業処理ユニット２３０、ＲＡＩＤ復旧ユニット２４０、ＲＡＩＤ作業分配ユニット２５０を含む。ＲＡＩＤ作業処理ユニット２３０は、ＲＡＩＤマスターコントローラ１１０から割当てられた第１ＲＡＩＤ作業を直接処理し、ＲＡＩＤコントローラ２１０を含むストレージ装置を制御する。ＲＡＩＤ復旧ユニット２４０は、ＲＡＩＤコントローラ２１０を含むストレージ装置に故障が発生した場合、他のストレージ装置に格納されたパリティを利用してデータを復旧する。
【００５１】
ＲＡＩＤ作業分配ユニット２５０は、第１ＲＡＩＤ作業に関連する第２ＲＡＩＤ作業を一つ以上の他のストレージ装置に分配する。例えば、ＲＡＩＤコントローラ２１０のＲＡＩＤ作業分配ユニット２５０は、第２ＲＡＩＤ作業をＲＡＩＤコントローラ２１２が制御する他のストレージ装置に分配し、ＲＡＩＤコントローラ２１２に含まれるＲＡＩＤ作業処理ユニット２３２は、分配された第２ＲＡＩＤ作業を処理する。一実施形態で、第２ＲＡＩＤ作業は第１ＲＡＩＤ作業の一部を含み、例えば第１ＲＡＩＤ作業がストレージ装置（２００、２０２、２０４）に格納されたデータをリードする作業である場合、第２ＲＡＩＤ作業はストレージ装置２０４に格納されたデータをリードする作業である。一方、一実施形態で、第２ＲＡＩＤ作業は第１ＲＡＩＤ作業に基づいて生成された新たな作業を含み、例えば第１ＲＡＩＤ作業がストレージ装置２００に格納されたデータをアップデートする作業である場合、第２ＲＡＩＤ作業はストレージ装置２０８に格納されたパリティをアップデートする作業である。
【００５２】
一方、ＲＡＩＤコントローラ２１０は、データに対してＸＯＲ演算を行うＸＯＲ演算ユニット２６０を更に含む。これについては、図８及び図９を参照して説明する。
【００５３】
図８は、本発明の一実施形態によるストレージコントローラがＲＡＩＤ作業を処理する動作を説明するための概略図である。
【００５４】
図８を参照すると、ＲＡＩＤマスターコントローラ１１０は、ユーザからデータライト（ＷＲＩＴＥ）要求を受信する（ステップＳ６００）。本実施形態で、ＲＡＩＤコントローラ２１０はストレージ装置２００を制御し、ＲＡＩＤコントローラ２１２はストレージ装置２０２を制御するものと仮定する（図１〜３参照）。ＲＡＩＤマスターコントローラ１１０は、ＲＡＩＤ作業分配ユニット１３０を利用してＲＡＩＤコントローラ２１０に第１ＲＡＩＤ作業を割り当てる。第１ＲＡＩＤ作業はストレージ装置２０２に格納された既存データを新規データにアップデートする作業である。このため、ＲＡＩＤマスターコントローラ１１０は、データ論理ブロックアドレス（「ＤａｔａＬＢＡ」）、新規データ（「ＮｅｗＤａｔａ」）、パリティ論理ブロックアドレス（「ＰａｒｉｔｙＬＢＡ」）、及びパリティが格納されるストレージ識別情報（「ＰａｒｉｔｙＤｉｓｋ」）をＲＡＩＤコントローラに提供する（ステップＳ６０２）。
【００５５】
ＲＡＩＤコントローラ２１０のＲＡＩＤ作業処理ユニット２３０は、第１ＲＡＩＤ作業により既存データを新規データにアップデートする（ステップＳ６０４）。具体的には、新規データの物理的ブロックアドレス（「ＮｅｗＰＢＡ」）に新規データ（「ＮｅｗＤａｔａ」）を格納し、その後に論理ブロックアドレス（「ＤａｔａＬＢＡ」）と新規データの物理的ブロックアドレス（「ＮｅｗＰＢＡ」）との間のマッピングを格納する（ステップＳ６１２）。一方、ＲＡＩＤコントローラ２１０のＲＡＩＤ作業分配ユニット２５０は、ストレージ装置２０２のパリティをアップデートする第２ＲＡＩＤ作業を、既存データ（「ＯｌｄＤａｔａ」）及び新規データ（「ＮｅｗＤａｔａ」）と共にストレージ装置２０２に伝送する（ステップＳ６０６）。本実施形態で、ストレージ装置２００とストレージ装置２０２とはネットワークを介して一対一で接続され、ＲＡＩＤコントローラ２３０は第２ＲＡＩＤ作業をストレージ装置２０２に直接伝送する。即ち、ＲＡＩＤコントローラ２１０は、第２ＲＡＩＤ作業をＲＡＩＤマスターコントローラ１１０の干渉を受けずにストレージ装置２０２に伝送する。
【００５６】
ＲＡＩＤコントローラ２１２は、第２ＲＡＩＤ作業により既存データ（「ＯｌｄＤａｔａ」）及び新規データ（「ＮｅｗＤａｔａ」）を利用してパリティをアップデートする。具体的には、ＲＡＩＤコントローラ２１２のＸＯＲ演算ユニット２６２は、既存データ（「ＯｌｄＤａｔａ」）、新規データ（「ＮｅｗＤａｔａ」）、及びストレージ装置２０２に格納された既存パリティ（「ＯｌｄＰａｒｉｔｙ」）に対してＸＯＲ演算を行い、新規パリティ（「ＮｅｗＰａｒｉｔｙ」）を生成する（ステップＳ６０８）。仮にストレージ装置２００に故障が発生した場合、ＲＡＩＤコントローラ２１０のＲＡＩＤ復旧ユニット２４０は、ストレージ装置２０２でアップデートされた新規パリティ（「ＮｅｗＰａｒｉｔｙ」）を利用してストレージ装置２００のデータを復旧する。一実施形態で、ＲＡＩＤ復旧ユニット２４０は、ストレージ装置２００のデータを復旧するためのＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）アルゴリズムを利用する。
【００５７】
ＲＡＩＤコントローラ２１０は、ＲＡＩＤコントローラ２１２から第２ＲＡＩＤ作業の処理結果を受信する（ステップＳ６１０）。本実施形態で、ＲＡＩＤコントローラ２１０のＲＡＩＤ作業処理ユニット２３０は、ＲＡＩＤコントローラ２１２から受信した第２ＲＡＩＤ作業の処理結果を利用してストレージ装置２００を制御する。第２ＲＡＩＤ作業の処理結果を受信したＲＡＩＤコントローラ２１０は、作業の処理結果を集めてＲＡＩＤマスターコントローラ１１０に最終の処理結果を伝送する（ステップＳ６１４）。そうすると、ＲＡＩＤマスターコントローラ１１０は、ユーザにデータライト作業が完了したことを出力する（ステップＳ６１６）。
【００５８】
図９は、本発明の他の実施形態によるストレージコントローラがＲＡＩＤ作業を処理する動作を説明するための概略図である。
【００５９】
図９を参照すると、図８に示す実施形態と違う点は、ＲＡＩＤコントローラ２１０が既存データ（「ＯｌｄＤａｔａ」）と新規データ（「ＮｅｗＤａｔａ」）に対してＸＯＲ演算を行い、ＸＯＲデータ（「ＸＯＲＤａｔａ」）を生成する点である。即ち、ＲＡＩＤコントローラ２１０のＸＯＲ演算ユニット２６０は、既存データ（「ＯｌｄＤａｔａ」）と新規データ（「ＮｅｗＤａｔａ」）に対してＸＯＲ演算を行い、ＸＯＲデータ（「ＸＯＲＤａｔａ」）を生成する（ステップＳ６０５）。またＲＡＩＤコントローラ２１０のＲＡＩＤ作業分配ユニット２５０は、ストレージ装置２０２のパリティをアップデートする第２ＲＡＩＤ作業を、ＸＯＲデータ（「ＸＯＲＤａｔａ」）と共にストレージ装置２０２に伝送する（ステップＳ６０７）。この場合も、ＲＡＩＤコントローラ２１０は、第２ＲＡＩＤ作業をＲＡＩＤマスターコントローラ１１０の干渉を受けずにストレージ装置２０２に伝送する。
【００６０】
ＲＡＩＤコントローラ２１２は、第２ＲＡＩＤ作業により既存データ（「ＯｌｄＤａｔａ」）と新規データ（「ＮｅｗＤａｔａ」）から既に計算されたＸＯＲデータ（「ＸＯＲＤａｔａ」）を利用してパリティをアップデートする。具体的には、ＲＡＩＤコントローラ２１２のＸＯＲ演算ユニット２６２は、ＸＯＲデータ（「ＸＯＲＤａｔａ」）とストレージ装置２０２に格納されていた既存パリティ（「ＯｌｄＰａｒｉｔｙ」）に対してＸＯＲ演算を行い、新規パリティ（「ＮｅｗＰａｒｉｔｙ」）を生成する（ステップＳ６０９）。仮にストレージ装置２００に故障が発生した場合、ＲＡＩＤコントローラ２１０のＲＡＩＤ復旧ユニット２４０は、ストレージ装置２０２でアップデートされた新規パリティ（「ＮｅｗＰａｒｉｔｙ」）を利用してストレージ装置２００のデータを復旧する。
【００６１】
図１０は、本発明の他の実施形態によるストレージコントローラを説明するための概略図である。
【００６２】
図１０を参照すると、図７に示す実施形態と違う点は、ＲＡＩＤコントローラ２１２の作業分配ユニット２５２は、ＲＡＩＤコントローラ２１０のＲＡＩＤ作業分配ユニット２５０が分配した第２ＲＡＩＤ作業に関連する第３ＲＡＩＤ作業を、ＲＡＩＤコントローラ２１４が制御する他のストレージ装置に分配するという点である。ＲＡＩＤコントローラ２１４に含まれるＲＡＩＤ作業処理ユニット２３４は、分配された第３ＲＡＩＤ作業を処理する。本実施形態で、第３ＲＡＩＤ作業は第２ＲＡＩＤ作業の一部を含み、第３ＲＡＩＤ作業は第２ＲＡＩＤ作業に基づいて生成された新たな作業を含む。
【００６３】
図１１は、本発明の他の実施形態によるストレージシステムを説明するための概略図である。
【００６４】
図１１を参照すると、ストレージシステム２において、ＲＡＩＤマスターコントローラ１１０は、フラッシュメモリコントローラ及びフラッシュメモリを含むストレージ装置４００に含まれる。一実施形態で、フラッシュメモリコントローラは、ソフトウェアで具現されたＲＡＩＤマスターコントローラ１１０のアプリケーションを実行させるプロセッサを含む。一方、他の実施形態で、フラッシュメモリコントローラは、ハードウェアで具現されたＲＡＩＤマスターコントローラ１１０を含む。
【００６５】
本実施形態で、ＲＡＩＤ作業を処理してストレージ装置２００を制御するＲＡＩＤコントローラ２１０は、ＲＡＩＤ作業に関連する第１ＲＡＩＤサブ作業と第２ＲＡＩＤサブ作業とをそれぞれストレージ装置２０２とストレージ装置２０４とに分配する。ＲＡＩＤコントローラ２１２は第１ＲＡＩＤサブ作業を処理してストレージ装置２０２を制御し、ＲＡＩＤコントローラ２１４は第２ＲＡＩＤサブ作業を処理してストレージ装置２０４を制御する。この際、一実施形態で、ＲＡＩＤコントローラ２１０は、第１ＲＡＩＤサブ作業と第２ＲＡＩＤサブ作業とをそれぞれ同時にＲＡＩＤコントローラ２１２とＲＡＩＤコントローラ２１４とに分配する。また、他の実施形態で、ＲＡＩＤコントローラ２１０は第１ＲＡＩＤサブ作業及び第２ＲＡＩＤサブ作業をいずれもＲＡＩＤコントローラ２１２に伝送し、ＲＡＩＤコントローラ２１２は第２ＲＡＩＤサブ作業をＲＡＩＤコントローラ２１４に伝送する。ここで、ストレージ装置２００とストレージ装置２０２、ストレージ装置２００とストレージ装置２０４、及びストレージ装置２０２とストレージ装置２０４は、ネットワークを介して一対一で直接接続される。
【００６６】
ＲＡＩＤコントローラ２１２は第１ＲＡＩＤサブ作業の処理結果をＲＡＩＤコントローラ２１０に伝送し、ＲＡＩＤコントローラ２１４は第２ＲＡＩＤサブ作業の処理結果をＲＡＩＤコントローラ２１０に伝送する。本実施形態で、ＲＡＩＤコントローラ２１０は、ＲＡＩＤコントローラ２１２とＲＡＩＤコントローラ２１４とからそれぞれ受信した第１ＲＡＩＤサブ作業の処理結果と第２ＲＡＩＤサブ作業の処理結果とを利用してストレージ装置２００を制御する。
【００６７】
図１２は、本発明の更に他の実施形態によるストレージシステムを説明するための概略図である。
【００６８】
図１２を参照すると、ストレージシステム３において、ＲＡＩＤマスターコントローラ１１０は、複数のストレージ装置を含むストレージシステム５００で具現される。同様に、ＲＡＩＤコントローラ（２１０、２１２、２１４、２１６）は、各々複数のストレージ装置を含むストレージシステム（２０１、２０３、２０５、２０７）で具現される。
【００６９】
図１３は、本発明の一実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【００７０】
図１３を参照すると、ＲＡＩＤコントローラ２１０は、ＲＡＩＤマスターコントローラ１１０から作業要求を受信する（ステップＳ８００）。ＲＡＩＤコントローラ２１０は、作業が分配される必要があるか否かを判断し（ステップＳ８０２）、ＲＡＩＤコントローラ２１０が直接処理する第１ＲＡＩＤ作業と、他のＲＡＩＤコントローラが処理しなければならない第２ＲＡＩＤ作業を区分する。ＲＡＩＤコントローラ２１０は、第１ＲＡＩＤ作業を直接行う（ステップＳ８０４）。一方、ＲＡＩＤコントローラ２１０は、第２ＲＡＩＤ作業を他のＲＡＩＤコントローラ２１２に分配した後（ステップＳ８０８）、ＲＡＩＤコントローラ２１２から第２ＲＡＩＤ作業の遂行結果を受信する（ステップＳ８１０）。ＲＡＩＤコントローラ２１０は、第１ＲＡＩＤ作業の遂行結果及び第２ＲＡＩＤ作業の遂行結果を集めた最終遂行結果をＲＡＩＤマスターコントローラ１１０に報告する（ステップＳ８０６）。
【００７１】
図１４は、本発明の他の実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【００７２】
図１４を参照すると、ＲＡＩＤコントローラ２１０は、ＲＡＩＤマスターコントローラ１１０からデータアップデート要求及びパリティアップデート要求を受信する（ステップＳ９００）。ＲＡＩＤコントローラ２１０は、作業が分配される必要があるか否かを判断し（ステップＳ９０２）、ＲＡＩＤコントローラ２１０が直接処理するデータアップデート要求による第１ＲＡＩＤ作業と、他のＲＡＩＤコントローラが処理しなければならないパリティアップデート要求による第２ＲＡＩＤ作業を区分する。ＲＡＩＤコントローラ２１０は、第１ＲＡＩＤ作業、即ちデータアップデート作業を直接行う（ステップＳ９０４）。一方、ＲＡＩＤコントローラ２１０は、第２ＲＡＩＤ作業、即ちパリティアップデート作業を他のＲＡＩＤコントローラ２１２に要求し（ステップＳ９０８）、パリティーアカウントに必要なデータを共に伝送する（ステップＳ９１０）。その後、ＲＡＩＤコントローラ２１０は、ＲＡＩＤコントローラ２１２から第２ＲＡＩＤ作業の遂行結果を受信する（ステップＳ９１０）。ＲＡＩＤコントローラ２１０は、第１ＲＡＩＤ作業の遂行結果及び第２ＲＡＩＤ作業の遂行結果を集めた最終遂行結果をＲＡＩＤマスターコントローラ１１０に報告する（ステップＳ９０６）。
【００７３】
図１５は、本発明の更に他の実施形態によるストレージコントローラの動作方法を説明するためのフローチャートである。
【００７４】
図１５を参照すると、ＲＡＩＤコントローラ２１２は、ＲＡＩＤコントローラ２１０から作業要求を受信する（ステップＳ１０００）。ＲＡＩＤコントローラ２１２は、作業が分配される必要があるか否かを判断し（ステップＳ１００２）、ＲＡＩＤコントローラ２１２が直接処理する第１ＲＡＩＤ作業と、他のＲＡＩＤコントローラが処理しなければならない第２ＲＡＩＤ作業を区分する。ＲＡＩＤコントローラ２１２は、第１ＲＡＩＤ作業を直接行う（ステップＳ１００４）。一方、ＲＡＩＤコントローラ２１２は、第２ＲＡＩＤ作業を他のＲＡＩＤコントローラ２１４に分配した後（ステップＳ１００８）、ＲＡＩＤコントローラ２１４から第２ＲＡＩＤ作業の遂行結果を受信する（ステップＳ１０１０）。ＲＡＩＤコントローラ２１２は、第１ＲＡＩＤ作業の遂行結果及び第２ＲＡＩＤ作業の遂行結果を集めた最終遂行結果をＲＡＩＤコントローラ２１２に報告する（ステップＳ１００６）。
【００７５】
本発明の多様な実施形態によれば、ＲＡＩＤ５システムでデータをアップデートする場合、Ｉ／Ｏ回数を減少させて分散ストレージシステムの性能向上を図ることができる。具体的には、従来技術によれば、一つの中央集中型ＲＡＩＤコントローラが二つのストレージ装置に対して各々リード及びライト作業を行う。一つのストレージ装置に対してはデータをアップデートするためにリード及びライト作業を行い、他のストレージ装置に対してはパリティをアップデートするためにリード及びライト作業を行う。即ち、従来技術ではデータをアップデートする場合、２回のリード作業と２回のライト作業が必要である。しかし、本発明の分散ストレージシステムは、ＲＡＩＤマスターコントローラが一つのストレージ装置に対してデータライト作業を１回行い、ストレージ装置がパリティを格納する他のストレージ装置に対してライト作業を１回行うため、合計２回のライト作業のみが行われる。従って、本発明の多様な実施形態によれば、データＩ／Ｏ回数を画期的に減少させることができる。
【００７６】
また、本発明の多様な実施形態によるストレージシステムを構成するストレージ装置は、従来の受身型（ｐａｓｓｉｖｅ）装置でない能動型（ａｃｔｉｖｅ）装置であって、中央集中型ＲＡＩＤコントローラの命令を遂行することを超えて能動的に他のストレージ装置に作業を分配及び割り当てることができる。従って、データ分散と共にＲＡＩＤ作業をはじめとするデータＩ／Ｏ作業の分散効果ももたらし、ホストの作業負荷を減少させることができる。
【００７７】
以上、図面を参照しながら本発明の実施形態について詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００７８】
１、２、３、２０１、２０３、２０５、２０７、５００、６００    ストレージシステム
１００    ホスト
１１０    ＲＡＩＤマスターコントローラ
１２０、２２０    プロセッサ
１２４、２２４    メモリコントローラ
１２６    システムバス
１２８    Ｉ／Ｏコントローラ
１２９    Ｉ／Ｏバス
１３０、２５０、２５２、２５４    ＲＡＩＤ作業分配ユニット
１４０、２４０、２４２、２４４    ＲＡＩＤ復旧ユニット
２００、２０２、２０４、２０６、４００    ストレージ装置
２１０、２１２、２１４、２１６    ＲＡＩＤコントローラ
２１１    フラッシュメモリコントローラ
２１３    フラッシュメモリ
２２６    内部バス
２２８    ホストインターフェース
２２９    フラッシュメモリインターフェース
２３０、２３２、２３４    ＲＡＩＤ作業処理ユニット
２６０、２６２、２６４    ＸＯＲ演算ユニット
３００、３０２、３０４、３０６    データ格納領域
３１０、３１２、３１４    データＡ
３１６    パリティＡＰ
【図１】
2015207289.tif 000003
【図２】
2015207289.tif 000004
【図３】
2015207289.tif 000005
【図４】
2015207289.tif 000006
【図５】
2015207289.tif 000007
【図６】
2015207289.tif 000008
【図７】
2015207289.tif 000009
【図８】
2015207289.tif 000010
【図９】
2015207289.tif 000011
【図１０】
2015207289.tif 000012
【図１１】
2015207289.tif 000013
【図１２】
2015207289.tif 000014
【図１３】
2015207289.tif 000015
【図１４】
2015207289.tif 000016
【図１５】
2015207289.tif 000017