(57)【要約】【課題】論理ボリューム内でデータを二重化し、物理モジュールの役割を固定せずに論理ボリュームの割当てを行う。【解決手段】統合管理モジュール１２は、クライアント１８−１〜１８−５からの要求に基づき、指定された範囲のストレージ装置を持つモジュール１０−１〜１０−４をスライスデータの割当対象として選択し、プライマリ論理ボリュームを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割当て、セカンダリ論理ボリュームを同じデータ領域を担当するプライマリ論理ボリュームを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てる。【選択図】          図１
2005004681.tif 000002
【特許請求の範囲】
【請求項１】
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを、同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。
【請求項２】
請求項１のデータ割当方法に於いて、更に、
特定のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
【請求項３】
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
【請求項４】
請求項３のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
【請求項５】
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
【請求項６】
請求項５のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
【請求項７】
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
【請求項８】
請求項７のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
【請求項９】
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【請求項１０】
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のモジュールで構成されるネットワークストレージのデータ割当方法、プログラム及びストレージシステムに関し、特に、データの二重化によりモジュール障害に対し冗長性を持たせるネットワークストレージのデータ割当方法、プログラム及びストレージシステムに関する。
【０００２】
【従来の技術】
従来、磁気ディスク装置の記憶空間を仮想的な論理ボリュームとして使用する論理ボリューム割当方法は、磁気ディスク装置における個々の物理ボリュームの容量を隠蔽し、外部からは任意の容量の仮想的なボリュームを取り扱えるようにするための方法である（特許文献１）。
【０００３】
しかしながら、従来の論理ボリューム割当方法は、物理ボリュームが１つ壊れると複数の論理ボリュームのデータがすぐに失われるという弱点があった。この弱点を克服する方法としてデータを二重化するものがある（特許文献２）。このデータを二重化する方法にあっては、物理的なディスク装置を多数もつディスク制御装置を複数用意し、ディスク制御装置に正ディスク装置と副ディスク装置の役割を割り当ててデータの二重化を行っている。
【０００４】
【特許文献１】
特開平５−３３４００６号公報
【特許文献２】
特開平１１−３２７８７３号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、このような従来の二重化方法にあっては、正ディスク装置と副ディスク装置という役割を厳密に定義しているため、例えば正ディスク装置側の容量にいくら余裕があっても副ディスク装置側に容量がなければ論理ボリュームの割当てを行うことはできず、また、ディスク制御装置が故障した場合にデータ二重化を維持しながらシステムを運用し続けることは困難である。
【０００６】
本発明は、論理ボリューム内でデータを二重化し、物理モジュールの役割を固定せずに論理ボリュームの割当てを行うデータ割当方法、プログラム及びストレージシステムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
（方法）
本発明は、ストレージシステムのデータ割当方法を提供する。本発明が適用されるストレージシステムは、スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータ（論理ボリューム）を格納する実データ格納部およびスライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールとで構成される。
【０００８】
このようなストレージシステムのデータ割当方法として本発明の第１の形態は、
指定された範囲のストレージ装置を持つモジュール群をスライスデータ（スライス単位の論理ボリューム）の割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備えたことを特徴とする。
【０００９】
このような本発明のデータ割当方法を用いることにより、モジュールの役割をプライマリとセカンダリに固定せずにスライス単位データである論理ボリュームの割当てを行うことができ、特定のモジュールが故障しても、残された正常なモジュールを使用して失われた論理ボリュームを復元できる。またスライス単位の論理ボリュームの割当時に、任意のモジュール故障に先立ち二重化のための復元データの取得先となるモジュールが特定のモジュールに集中しないように割当てているため、データ復元処理時の負荷分散を予め行うことができる。
【００１０】
本発明のデータ割当方法は、更に、
任意のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とする。このため任意のモジュールの故障でデータの冗長性が失われた際にも、その後のモジュール故障に対するデータの冗長性の復元処理時にペアを組むプライマリとセカンダリのスライスデータの再割当も負荷分散を行うように割り当てることができる。
【００１１】
ここでセカンダリ割当ステップは、次のいずれかの評価関数を用いた処理を行う。
（１）評価関数として擬似乱数を使用する。
（２）評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値ｃ（ｉ，ｊ）を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択する。
（３）評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値ｃｒ（ｉ，ｊ）を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択する。
【００１２】
本発明の第２の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【００１３】
本発明の第３の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【００１４】
本発明の第４の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュールの全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【００１５】
これら本発明の第２乃至第４の形態のデータ割当方法に於いても、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とする。
【００１６】
また本発明の第２乃至第４の形態のセカンダリ割当ステップは、次のいずれかの評価関数を用いた処理を行う。
（１）評価関数として擬似乱数を使用する。
（２）評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値ｃ（ｉ，ｊ）を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択する。
（３）評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値ｃｒ（ｉ，ｊ）を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択する。
【００１７】
（プログラム）
本発明は、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータで実行されるプログラムを提供する。本発明のプログラムの第１の形態にあっては、コンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させることを特徴とする。
【００１８】
本発明のプログラムの第２の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【００１９】
本発明のプログラムの第３の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【００２０】
本発明のプログラムの第４の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【００２１】
これら本発明の第１乃至第４の形態となるプログラムにあっては、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を実行させることを特徴とする。
【００２２】
（システム）
本発明は、スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部およびスライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールとで構成されるストレージシステムを提供する。
【００２３】
本発明によるストレージシステムの第１形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部とを設けたことを特徴とする。
【００２４】
本発明によるストレージシステムの第２形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部とを設けたことを特徴とする。
【００２５】
本発明によるストレージシステムの第３形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とする。
【００２６】
本発明によるストレージシステムの第４形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部とを設けたことを特徴とする。
【００２７】
これら本発明の第１乃至第４の形態となるストレージシステムにあっては、更に、特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択部と、復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当部とを設けたことを特徴とする。
【００２８】
なお、本発明のプログラム及びストレージシステムの詳細は、本発明のデータ割当方法と基本的に同じになる。
【００２９】
【発明の実施の形態】
図１は、本発明のデータ割当処理が適用されるストレージシステムの説明図である。図１において、本発明のストレージシステムは、複数のモジュール１０−１，１０−２，１０−３，１０−４と、これらモジュール１０−１〜１０−４を統合管理する統合管理モジュール１２を備え、モジュール１０−１〜１０−４及び統合管理モジュール１２はハブ１４に接続されてモジュール間で通信が自由に行えるようにしている。
【００３０】
ハブ１４はネットワーク１６に接続されており、ネットワーク１６を介してクライアント１８−１〜１８−５と接続され、クライアント１８−１〜１８−５側から見てモジュール１０−１〜１０−４がネットワークストレージとして使用される。
【００３１】
モジュール１０−１〜１０−４には、通信装置２０−１〜２０−４、制御装置２２−１〜２２−４及びストレージ装置２４−１〜２４−４が設けられている。同様に統合管理モジュール１２には、通信装置２０−５、制御装置２２−５及びストレージ装置２４−５が設けられている。
【００３２】
ストレージ装置２４−１〜２４−４は不揮発性の記録媒体を使用しなければならないが、ストレージ装置２４−５は不揮発性の記録媒体でも揮発性の記録媒体でも良い。モジュール１０−１〜１０−４のストレージ装置２４−１〜２４−４には実データ格納部２６−１〜２６−４とメタデータ格納部２８−１〜２８−４が設けられている。実データ格納部２６−１〜２６−４には、クライアント１８−１〜１８−５が読み書きするデータ、具体的には論理モジュールがスライスと呼ばれる単位で分割されたスライス領域ごとに格納されている。
【００３３】
メタデータ格納部２８−１〜２８−４には、ストレージ装置２４−１〜２４−４におけるスライス単位の論理ボリュームの読み書き位置や各論理ボリュームのモジュール間の関係などのメタデータを格納しており、以下、メタデータ格納部２８−１〜２８−４に格納された管理情報をモジュールスライス情報と呼ぶ。
【００３４】
統合管理モジュール１２はデータアクセスを行うクライアントからのアクセス先の参照要求があった時にクライアントへ適切なアクセス先の情報を返す。実データのやりとりは統合管理モジュール１２を介さずに、クライアントとモジュールとの間で直接行われる。
【００３５】
図２は、図１の統合管理モジュール１２の機能構成のブロック図である。図２において、統合管理モジュール１２の制御装置２２−５には、割当対象選択部３２、プライマリ割当部３４、セカンダリ割当部３６、復元対象選択部３８及び復元割当部４０の処理機能が設けられており、これらの処理機能は制御装置２２−５を構成するコンピュータのプログラム制御により実現される。
【００３６】
即ち、統合管理モジュール１２のハードウェア環境としては通常のコンピュータが使用され、制御装置２２−５はＭＰＵによるプログラムの実行により実現される。また通信装置２０−５は、コンピュータに備えられた通信ボードもしくは通信用のＯＳ機能で実現される。
【００３７】
更にストレージ装置２４−５は、コンピュータに設けられているメモリまたは磁気ディスク装置で実現されている。割当対象選択部３２は、外部からスライス単位となる論理ボリュームの割当要求を受けた際に、指定された範囲のストレージ装置を持つモジュール群、具体的にはモジュール１０−１〜１０−４を論理モジュールの割当対象として選択する。
【００３８】
プライマリ割当部３４は、スライス単位でプライマリを、未割当のスライス領域を持つモジュールに対しラウンドロビンで必要な数分割り当てる。このプライマリの割当は、割当対象となっている全てのプライマリを割り当てた後に、同一データを担当するセカンダリを割り当てる分割割当と、プライマリを１つ割り当てた後に同一データを担当するセカンダリを１つ割り当てる処理を繰り返す交互割当のいずれかを取る。
【００３９】
セカンダリ割当部３６は、セカンダリと同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てる。このセカンダリ割当部３６によるモジュール選択のための評価関数としては次のものを使用する。
（１）第１の評価関数としての擬似乱数（第１の関数）
（２）プライマリを持つモジュールｊに対し、このモジュールｊとペアを組むセカンダリの数の少ないモジュールを最良とする値を返す第２の関数ｃ（ｉ，ｊ）
（３）プライマリを持つモジュールｊに対し、このモジュールｊとペアを組むセカンダリの数が、そのモジュールが持つ全スライス数に対し割合の少ないモジュールを最良とする値を返す第３の関数ｃｒ（ｉ，ｊ）
【００４０】
ここで第２の関数と第３の関数は、複数のモジュールに対し最良の値を返すこともあり得る。この場合には最良の値を返した複数のモジュールから適宜の手法により１つのモジュールを選択する。この場合のモジュール選択としては、次のいずれかを選択することが考えられる。
（１）擬似乱数で選択する。
（２）モジュール名などの順序付けられた番号を選択基準に利用する。
（３）未割当スライス数の多い順とする。
（４）全スライス数に対する未割当スライス数の割合の大きい順とする。
【００４１】
このような選択基準のいずれか１つを用いても更に複数のモジュールが選ばれる場合には、続いて他の選択基準によるモジュールの選択を行えばよい。復元対象選択部３８は、あるモジュールの故障によりプライマリまたはセカンダリのペアが失われた際に、失われたペアを復元して二重化を復元する割当対象として正常なモジュール群を選択する。
【００４２】
復元割当部４０は、復元を必要とするプライマリ及びセカンダリとペアを組むモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに復元したセカンダリまたはプライマリを割り当てる。この場合の評価関数としては、セカンダリ割当部３６で使用したと同じ（１）擬似乱数
（２）第２の関数ｃ（ｉ，ｊ）
（３）第３の関数ｃｒ（ｉ，ｊ）
のいずれかを使用する。
【００４３】
図３は、図１の統合管理モジュール１２でデータの割付けを行う４つのモジュール１０−１〜１０−４のストレージ装置２４−１〜２４−４の中の実データ格納部２６−１〜２６−４におけるスライス領域の説明図である。この例ではモジュール１０−１〜１０−４の順に、実データ格納部２６−１〜２６−４にそれぞれ１０個、２０個、３０個、４０個のスライス領域を持たせた場合である。
【００４４】
即ち、モジュール１０−１の実データ格納部２６−１はスライス番号＃１〜＃１０の１０個のスライス領域を持ち、モジュール１０−２の実データ格納部２６−２はスライス番号＃１〜＃２０の２０個のスライス領域を持ち、モジュール１０−３の実データ格納部２６−３はスライス番号＃１〜＃３０の３０個のスライス領域を持ち、更にモジュール１０−４の実データ格納部２６−４はスライス番号＃１〜＃４０の４０個のスライス領域を持っている。
【００４５】
なお、この例ではモジュールの持つスライス領域の数を異ならせているが、スライス領域の数が同一であっても問題はない。もちろん以下の説明にあっては、４つのモジュール１０−１〜１０−４が全て論理ボリュームの割当対象として指定されている。
【００４６】
更に、モジュール１０−１〜１０−４の右上隅に、それぞれにおけるスライス領域の未使用率２５−１〜２５−４を分数で示している。この未使用率２５−１〜２５−４は、分母が全スライス数、分子が未使用スライス数であり、図示の状態では全てのスライス領域が空きであることから分子と分母は同じ数値となっている。
【００４７】
図４は、統合管理モジュール１２が持つスライス情報４２の説明図である。図４（Ａ）は図３のスライス領域にプライマリ及びセカンダリの割当てがない場合の説明図であり、スライス番号＃１，＃２，＃３，…に対応して、モジュール１０−１〜１０−４のモジュール番号Ｍ１，Ｍ２，Ｍ３，Ｍ４と、それぞれの分数で示す括弧内の未使用率が示されており、論理ボリュームの格納がないことから格納エリアは全て空きとなっている。
【００４８】
図４（Ｂ）は、後の説明で明らかにする図７のモジュール１０−１〜１０−４におけるプライマリＬｐ０〜Ｌｐ９及びセカンダリＬｓ０〜Ｌｓ９の格納状態におけるスライス情報４２の説明図である。このスライス情報４２から明らかなように、統合管理モジュール１２にあっては、論理ボリュームの割当対象として指定されているモジュール１０−１〜１０−４の全てのモジュールスライス情報を統合した形で論理ボリュームの割当状態を管理している。
【００４９】
図５は、統合管理モジュール１２でモジュール１０−１〜１０−４に対し割り当てられるクライアントの持つ論理ボリュームと、これに対応したモジュール１０−１のモジュールスライス情報の説明図である。図５（Ａ）はクライアント側で使用している論理ボリューム４４の説明図であり、モジュール１０−１〜１０−４におけるスライス単位に分けてセグメントＬ０〜Ｌ９を論理空間に配置している。
【００５０】
ここで論理ボリューム４４はセグメントＬ０〜Ｌ９という単位に分けられている。図５（Ｂ）は、図４（Ｂ）の統合管理モジュール１２のスライス情報４２に対応したモジュール番号Ｍ１となるモジュール１０−１におけるモジュールスライス情報２８の説明図である。このモジュール１０−１のメタデータ格納部２８−１に格納されるモジュールスライス情報２８は
（１）スライス番号
（２）セグメント識別子
（３）論理ボリューム番号
（４）同一セグメントに属するペアを組むスライス番号
を備えている。なお、ＬｐＸはＸ番目のプライマリ、ＬｓＸはＸ番目のセカンダリを示す。
【００５１】
例えばスライス番号＃１についてはセグメント識別子としてプライマリＬｐ０を格納しており、これは図５（Ａ）の論理ボリューム４４における位置Ｌ０、即ち先頭のセグメントであり、更にプライマリＬｐ０とペアを組むセカンダリＬｓ０のスライス情報「Ｍ３／＃３」を格納している。
【００５２】
この図５（Ｂ）のようなモジュールスライス情報２８が、図１に示したモジュール１０−１〜１０−４のそれぞれのメタデータ格納部２８−１〜２８−４に格納されており、これらのモジュールスライス情報を統合した情報として統合管理モジュール１２が、そのスライス情報格納部３０、例えば図４に示したスライス情報４２として格納している。
【００５３】
次に図６及び図７を参照して、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第１実施形態を説明する。なお、以下の説明にあっては、クライアント側から図５（Ａ）に示すセグメント単位の論理モジュールの割当要求があり、二重化のためにプライマリＬｐ０〜Ｌｐ９の１０個とセカンダリのＬｓ０〜Ｌｓ９の１０個をモジュール１０−１〜１０−４に割り当てる場合を例に取っている。
【００５４】
この本発明の第１実施形態にあっては、割当を必要とする１０個分のプライマリＬｐ０〜Ｌｐ９のと１０個分のセカンダリＬｓ０〜Ｌｓ９に分けて、各モジュールに割り当てる。図６は１０個のプライマリＬｐ０〜Ｌｐ９をラウンドロビンでモジュール１０−１〜１０−４に割り当てた場合である。
【００５５】
即ち、モジュール１０−１〜１０−４の順番に、まず１段目のスライス領域に対しプライマリＬｐ０〜Ｌｐ３を順番に割り当て、続いて２段目のスライス領域にプライマリＬｐ４〜Ｌｐ７を順番に割り当て、更に３段目のモジュール１０−１〜１０−２のスライス領域に残り２つのプライマリＬｐ８，Ｌｐ９を割り当てている。
【００５６】
図７は、図６に続いて行う１０個のセカンダリＬｓ０〜Ｌｓ９の割当処理である。このセカンダリＬｓ０〜Ｌｓ９の割当は、例えば第１の評価関数である擬似乱数を使用して割り当てている。
【００５７】
この擬似乱数を用いたセカンダリの割当にあっては、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにはならないという制約条件の下で、擬似乱数によりセカンダリを割り当てるモジュールを選択している。なお、評価関数を使用したセカンダリの割当の詳細は後の説明で明らかにする。
【００５８】
図８乃至図１０は、論理ボリュームを二重化して各モジュールのスライス領域に割り当てる本発明の第２実施形態の説明図である。この第２実施形態にあっては、プライマリを１つ割り当てた後にセカンダリを１つ割り当てることにより必要な数分の割当を行う手順を前提に、プライマリを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てる。
【００５９】
またセカンダリについては、第１実施形態の場合と同様、評価関数として擬似乱数を使用し、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、セカンダリを割り当てるモジュールを選択する。
【００６０】
図８は、最初のプライマリＬｐ０と、これと同じデータ領域を担当するセカンダリＬｓ０の割当であり、まずモジュール１０−１にプライマリＬｐ０を割り当て、次に例えば擬似乱数によりモジュール１０−２にセカンダリＬｓ０を割り当てる。
【００６１】
続いて図９のように、プライマリＬｐ１〜Ｌｐ３とセカンダリＬｓ１〜Ｌｓ３を交互に割り当てる。即ち、プライマリＬｐ１についてはラウンドロビンであることから２番目のモジュール１０−２に割り当て、これに対応するセカンダリＬｓ２は擬似乱数により例えばモジュール１０−４に割り当てる。
【００６２】
３番目のプライマリＬｐ２はラウンドロビンで３番目のモジュール１０−３に割り当てる。これに対応したセカンダリＬｓ２は擬似乱数により例えばモジュール１０−４に割り当てる。更に４番目のプライマリＬｐ３については、ラウンドロビンにより４番目のモジュール１０−４に割り当て、これに対応したセカンダリＬｓ３は擬似乱数により例えばモジュール１０−３に割り当てられる。
【００６３】
図１０は、図９に続くプライマリＬｐ４〜Ｌｐ９及びセカンダリＬｓ４〜Ｌｓ９のモジュール１０−１〜１０−４に対する割当であり、プライマリとセカンダリを交互に割り当て、且つプライマリについてはラウンドロビンで、セカンダリについては例えば評価関数として擬似乱数を使用することで、図示のようにモジュール１０−１〜１０−４に対する割当が行われる。
【００６４】
図１１及び図１２は、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第３実施形態の説明図である。この第３実施形態にあっては、第２実施形態と同様、プライマリを１つ割り当てた後にセカンダリを１つ割り当てる交互割当を前提に、プライマリについては未割当スライス数の一番多いモジュールから割り当てる。
【００６５】
一方、セカンダリについては、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、第１の評価関数である擬似乱数を用いて、選択したモジュールに割り当てる。
【００６６】
図１１は第３実施形態におけるプライマリＬｐ０〜Ｌｐ４とセカンダリＬｓ０〜Ｌｓ４の交互割当である。即ち、プライマリＬｐ０〜Ｌｐ４については未割当スライス数が最も多いモジュール１０−４に割り当てられており、これに対応したセカンダリＬｓ０〜Ｌｓ４についてはモジュール２６−４以外のモジュール１０−１〜１０−３に擬似乱数により割り当てられている。
【００６７】
図１２は、図１１に続くプライマリＬｐ５〜Ｌｐ９とセカンダリＬｓ５〜Ｌｓ９の交互割当であり、この場合にも依然として未割当スライス数が一番多いモジュールはモジュール１０−４であることから、プライマリＬｐ５〜Ｌｐ９はモジュール１０−４に割り当てている。また、これに対応したセカンダリＬｓ５〜Ｌｓ９については、プライマリを持つモジュール１０−４以外のモジュール１０−１〜１０−３に例えば擬似乱数による選択で割り当てている。
【００６８】
図１３乃至図１９は、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第４実施形態の説明図である。この第４実施形態は第２及び第３実施形態と同様、プライマリを１つ割り当てた後にセカンダリを１つ割り当てる交互割当を前提に、プライマリについてはモジュール全スライス数に対する未割当スライス数の割合、即ち次式で与えられる未使用率ａｒ（ｉ）を求め、未使用率の最も大きなモジュールから割り当てる。
【００６９】
2005004681.tif 000003
ここで未使用率ａｒ（ｉ）の値は、この例では小数点第４位以下を四捨五入している。
【００７０】
図１３はプライマリＬｐ０についての第４実施形態における割当であり、この時点におけるモジュール１０−１〜１０−４の未使用率ａｒ（１）〜ａｒ（４）は
ａｒ（１）＝１
ａｒ（２）＝１
ａｒ（３）＝１
ａｒ（４）＝１
となる。
【００７１】
即ち、モジュール１０−１〜１０−４の未使用率がすべて同じであることから、追加の選択条件としてモジュールの順番に割り当てるものとし、したがってモジュール１０−１にプライマリＬｐ０を割り当てる。
【００７２】
セカンダリＬｓ０については、同じデータ領域を担当するプライマリＬｐ０が格納されたモジュール１０−１以外のモジュール１０−２〜１０−４の中から、例えば擬似乱数によりモジュール１０−２を選択して割り当てる。この時点でモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．９５
ａｒ（３）＝１
ａｒ（４）＝１
となる。
【００７３】
この未使用率の値は、図１４で次のプライマリＬｐ１を割り当てる際に使用される。即ち、プライマリＬｐ１の割当は未使用率の大きいモジュール１０−３もしくはモジュール１０−４から割り当てることになるが、この例ではモジュールの順番に従っていることからモジュール１０−３にプライマリＬｐ１を割り当て、セカンダリＬｓ１はモジュール１０−３以外のモジュールとして例えば擬似乱数によりモジュール１０−４に割り当てる。
【００７４】
この時点での未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．９５
ａｒ（３）＝０．９６７
ａｒ（４）＝０．９７５
となり、この未使用率に基づいて次のプライマリＬｐ２が割り当てられる。
【００７５】
プライマリＬｐ２の割当に際し使用率が最も大きいのはモジュール１０−４であることから、これにプライマリＬｐ２を割り当てる。セカンダリＬｓ２は、モジュール１０−４以外のモジュール、例えばモジュール１０−２に割り当てる。
【００７６】
このときの未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．９５
ａｒ（３）＝０．９３３
ａｒ（４）＝０．９５
となる。
【００７７】
続いて図１５のようにプライマリＬｐ３を割当対象とするが、このとき未使用率が最も大きいのはモジュール１０−２もしくはモジュール１０−４であり、この例ではモジュールの順番に選択していることから、モジュール１０−２にプライマリＬｐ３を割り当てる。
【００７８】
またセカンダリＬｓ３については、モジュール１０−２以外のモジュールを擬似乱数により例えばモジュール１０−３に割り当てる。
【００７９】
この時点でモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．９
ａｒ（３）＝０．９
ａｒ（４）＝０．９５
となる。
【００８０】
続いて図１６のように、プライマリＬｐ４を割当対象とすると、このとき未使用率が最も大きいのはモジュール１０−４であることから、モジュール１０−４にプライマリＬｐ４を割り当てる。セカンダリＬｓ４は、モジュール１０−４以外のモジュール例えば擬似乱数によりモジュール１０−３に割り当てる。
【００８１】
この時点でのモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．９
ａｒ（３）＝０．８６７
ａｒ（４）＝０．９２５
となる。
【００８２】
引き続いて図１７のようにプライマリＬｐ５を割当対象とする。このとき未使用率はモジュール１０−４が最大であることから、プライマリＬｐ５はモジュール１０−４に割り当てる。セカンダリＬｓ５は、モジュール１０−４以外のモジュール、例えば擬似乱数によりモジュール１０−２に割り当てる。
【００８３】
この時点でのモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．９
ａｒ（２）＝０．８５
ａｒ（３）＝０．８６７
ａｒ（４）＝０．９
となる。
【００８４】
引き続いて図１７でプライマリＬｐ６を割当対象とする。このとき未使用率が最大となるのはモジュール１０−１とモジュール１０−４であり、この場合にはモジュールの順番に従うことからモジュール１０−１に割り当てる。
【００８５】
セカンダリＬｓ６は、モジュール１０−１以外のモジュール、例えば擬似乱数によりモジュール１０−４に割り当てる。セカンダリＬｓ７は、モジュール１０−４以外のモジュール、例えば擬似乱数によりモジュール１０−２に割当てる。
【００８６】
この時点のモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．８
ａｒ（２）＝０．８５
ａｒ（３）＝０．８６７
ａｒ（４）＝０．８７５
となる。
【００８７】
続いて図１８でプライマリＬｐ７の割当を行う。ここで未使用率の最も高いモジュールはモジュール１０−４であることから、ここにプライマリＬｐ７を割り当てる。
【００８８】
このときモジュール１０−１〜１０−４の未使用率は
ａｒ（１）＝０．８
ａｒ（２）＝０．８
ａｒ（３）＝０．８６７
ａｒ（４）＝０．８５
となる。
【００８９】
続いて図１９でプライマリＬｐ８の割当を行う。この場合には未使用率が最大となるモジュール１０−３にプライマリＬｐ８を格納する。セカンダリは擬似乱数によりモジュール１０−１に割り当てる。
【００９０】
この時点での未使用率は
ａｒ（１）＝０．７
ａｒ（２）＝０．８
ａｒ（３）＝０．８３３
ａｒ（４）＝０．８５
となる。
【００９１】
続いてプライマリＬｐ９の割当を行うが、このとき未使用率が最大となるモジュールはモジュール１０−４であることから、プライマリＬｐ９はモジュール１０−４に割り当てる。
【００９２】
セカンダリＬｓ９は擬似乱数によりモジュール１０−２に割り当てる。このような図１３乃至図１９の第４実施形態の割当処理で使用する未使用率を求めたワークテーブル４６を、図２０にまとめて示している。
【００９３】
図２１は、図７の割当状態からモジュール１０−２が故障した場合の復元処理の説明図である。モジュール１０−２が故障すると、その時保持されているプライマリＬｐ１，Ｌｐ５，Ｌｐ９及びセカンダリＬｓ２，Ｌｓ３の５つのスライスが失われる。
【００９４】
しかしながら、これらのスライス中のデータは二重化により他のモジュール１０−１〜１０―４に保持されているため、復元処理により二重化を回復させることができる。
【００９５】
この復元化による二重化にあっては、故障により失われたスライスと同じデータ領域を担当する正常のモジュールが保持しているスライスからコピーをとって、復元プライマリＬｐ１´，Ｌｐ５´，Ｌｐ９´及び復元セカンダリＬｓ２´，Ｌｓ３´を生成し、正常なモジュール１０−１〜１０−４に割当てる。
【００９６】
このような故障時の復元による二重化にあってはコピー元となるセカンダリＬｓ１，Ｌｓ５，Ｌｓ９及びプライマリＬｐ２，Ｌｐ３の位置は正常なモジュール１０−１，１０−３，１０−４に分散しており、特定のモジュールがコピー元とならないことから、故障に対し二重化のための復元処理における負荷の分散が図られている。
【００９７】
このようなモジュール故障時の二重化の復元における負荷の分散は、すでに説明したモジュール割当の際のセカンダリの割当に評価関数を使用したことに依存している。ここでセカンダリのモジュール割当につき評価関数を使用せずにプライマリと同様にセカンダリもラウンドロビンの評価関数でふられているとどのようになるかを検討する。
【００９８】
図２２は、プライマリＬｐ０〜Ｌｐ９をラウンドロビンでモジュール１０−１〜１０−４に割当てた後にセカンダリＬｓ０，Ｌｓ９についても同じくラウンドロビンで割当てた場合である。
【００９９】
この図２２のようなプライマリ及びセカンダリについて同じラウンドロビンで割当た場合について、図２３のようにモジュール１０−２が故障すると、正常なモジュール１０−１，１０−３，１０−４から失われたプライマリ及びセカンダリを復元して二重化する復元処理が行われる。
【０１００】
しかし、この場合の復元処理におけるコピー元は全てモジュール１０−４のみとなってしまう。これではデータを復元する二重化処理に時間がかかる。またモジュール１０−４のスライス領域も復元データの二重化には利用できないため、ストレージ空間の利用効率も悪い。
【０１０１】
そこで本発明にあっては、あるモジュールが故障した際の二重化の復元処理で、コピー元が特定のモジュールに集中することを回避するため、セカンダリの割当について
（１）擬似乱数
（２）第２の関数ｃ（ｉ，ｊ）
（３）第３の関数ｃｒ（ｉ，ｊ）
のいずれかを用いてモジュール割当を行うようにしている。
【０１０２】
ここで評価関数として擬似乱数を使用したことは既に説明したことから、以下評価関数として第２の関数及び第３の関数を使用した場合について説明する。
【０１０３】
図２４乃至図２６は、セカンダリの割当に第２の関数を用いた割当処理の説明図である。図２４は、図６においてラウンドロビンによりプライマリＬｐ０〜Ｌｐ９を割当てた後に評価関数として第２の関数ｃ（ｉ，ｊ）を用いてモジュールを選択する場合の説明図である。
【０１０４】
図２４では、まずセカンダリＬｓ０を割当対象とするが、同じデータ領域を担当するプライマリＬｐ０を割当てたモジュール１０−１以外のモジュール１０−２〜１０−４における関数値ｃ（ｉ，１）は
ｃ（２，１）＝０
ｃ（３，１）＝０
ｃ（４，１）＝０
となり、関数値は同一である。
【０１０５】
このように関数値が同一の場合では、どのモジュールに割当てても良いが、この例では評価関数の値が同じ場合には未割当スライス数の多い方に割当てるものとする。
【０１０６】
この場合、未割当スライス数が最も大きいのはモジュール１０−４であることから、セカンダリＬｓ０はモジュール１０−４に割当てる。次にプライマリＬｐ１のペアであるセカンダリＬｓ１を割当対象とする。
【０１０７】
プライマリＬｐ１はモジュール１０−２に割当てていることから、それ以外のモジュール１０−１，１０−３，１０−４が割当対象となり、この場合のそれぞれの評価関数の値ｃ（ｉ，２）は
ｃ（１，２）＝０
ｃ（３，２）＝０
ｃ（４，２）＝０
となる。
【０１０８】
この時、評価関数の値は同一であることから、未割当スライス数の最も多いモジュール１０−４が選択され、セカンダリＬｓ１はモジュール１０−４に割当てられる。
【０１０９】
次にプライマリＬｐ２のペアであるセカンダリＬｓ２を割当対象とし、プライマリＬｐ２はモジュール１０−３に割当てているため、それ以外のモジュール１０−１，１０−２，１０−４が割当対象となり、この場合のそれぞれの評価関数の値ｃ（ｉ，３）は
ｃ（１，３）＝０
ｃ（２，３）＝０
ｃ（４，３）＝０
となる。
【０１１０】
この時、評価関数の値は同一であることから、未割当スライス数の最も多いモジュール１０−４が選択され、セカンダリＬｓ２はモジュール１０−４に割当てられる。
【０１１１】
続いてプライマリＬｐ３のペアであるセカンダリＬｓ３を割当対象となり、プライマリＬｐ３はモジュール１０−４に割当てているため、それ以外のモジュール１０−１〜１０−３が割当対象となり、この場合のそれぞれの評価関数の値ｃ（ｉ，４）は
ｃ（１，４）＝１
ｃ（２，４）＝１
ｃ（３，４）＝１
となる。
【０１１２】
この場合にも評価関数の値は同一であることから、未割当スライス数の最も多いモジュール１０−３が選択され、セカンダリＬｓ３が割当てられる。続いて図２５に進み、プライマリＬｐ４のペアとなるセカンダリＬｓ４の割当を行う。
【０１１３】
プライマリＬｐ４はモジュール１０−１に割当てられていることから、それ以外のモジュール１０−２〜１０−４が割当対象となり、この場合のそれぞれの評価関数の値ｃ（ｉ，１）は
ｃ（２，１）＝０
ｃ（３，１）＝０
ｃ（４，１）＝１
となる。
【０１１４】
このうち評価関数の値の小さいモジュール１０−２と１０−３が選択されるがそのうち未割当スライス数の最も多いモジュール１０−３が選択され、セカンダリＬｓ４はモジュール１０−３に割当てられる。
【０１１５】
続いてプライマリＬｐ５のペアとなるセカンダリＬｓ５の割当を行う。プライマリＬｐ５はモジュール１０−２に割当てられており、従ってセカンダリはそれ以外のモジュール１０−１，１０−３及び１０−４に割当てられる。
【０１１６】
この時の評価関数の値ｃ（ｉ，２）の値は、
ｃ（１，２）＝０
ｃ（３，２）＝０
ｃ（４，２）＝１
となる。
【０１１７】
この時、評価関数の値の小さいモジュールは１０−１と１０−３であるが、未割当スライス数の最も多いモジュール１０−３にセカンダリＬｓ５が割当てられる。
【０１１８】
次にプライマリＬｐ６のペアとなるセカンダリＬｓ６の割当を行う。プライマリＬｐ６はモジュール１０−３に割当てられており、それ以外のモジュール１０−１，１０−２及び１０−４に対し割当てられる。
【０１１９】
この時の評価関数の値ｃ（ｉ，３）の値は、
ｃ（１，３）＝１
ｃ（２，３）＝１
ｃ（４，３）＝１
となり、評価関数の値はすべて同じであることから、未割当スライス数の最も多いモジュール１０−４にセカンダリＬｓ６が割当てられる。
【０１２０】
続いてプライマリＬｐ７のペアとなるセカンダリＬｓ７の割当を行う。プライマリＬｐ７はモジュール１０−４に割当てられており、それ以外のモジュール１０−１〜１０−３に対し割当てられる。
【０１２１】
この時の評価関数の値ｃ（ｉ，４）の値は、
ｃ（１，４）＝１
ｃ（２，４）＝１
ｃ（３，４）＝３、
となる。
【０１２２】
ここでモジュール１０−１と１０−２について評価関数が同じなので、未割当スライス数の最も多いモジュール１０−２にセカンダリＬｓ７を割当てられる。続いて図２６に進み、プライマリＬｐ８のペアとなるセカンダリＬｓ８の割当を行う。
【０１２３】
プライマリＬｐ８はモジュール１０−１に割当てられており、それ以外のモジュール１０−２〜１０−４に対し割当てられる。この時の評価巻数の値ｃ（ｉ，１）の値は、
ｃ（２，１）＝０
ｃ（３，１）＝１
ｃ（４，１）＝１
となる。
【０１２４】
このため評価関数の値の最も小さいモジュール１０−２にセカンダリＬｓ８が割当てられる。最後のプライマリＬｐ９のペアとなるセカンダリＬｓ９の割当を行う。プライマリＬｐ９はモジュール１０−２に割当てられており、それ以外のモジュール１０−１，１０−３，１０−４に対し割当てられる。
【０１２５】
この時の評価関数の値ｃ（ｉ，２）の値は、
ｃ（１，２）＝１
ｃ（３，２）＝１
ｃ（４，２）＝２
となる。
【０１２６】
ここでモジュール１０−１とモジュール１０−３の評価関数の値が最も小さくなるが、このうち未割当スライス数の多いモジュール１０−３にセカンダリＬｓ９が割当てられる。このような図２４乃至図２６の第２の評価関数を求めて行うセカンダリの割当処理のワークテーブル４８を図２７に示している。
【０１２７】
この図２６のようにプライマリ及びセカンダリの割当が済んだ後にモジュール１０−１〜１０−４のいずれかで故障が発生した場合、二重化するための復元処理のコピー元となるスライス領域の数は次のようになりデータ読込の負荷が分散されていることがわかる。
（１）モジュール１０−１の故障
モジュール１０−２は１スライス、モジュール１０−３は１スライス、モジュール１０−４は１スライス。
（２）モジュール１０−２の故障
モジュール１０−１は１スライス、モジュール１０−３は２スライス、モジュール１０−４は２スライス。
（３）モジュール１０−３の故障
モジュール１０−１は１スライス、モジュール１０−２は２スライス、モジュール１０−４は３スライス。
（４）モジュール１０−４の故障
モジュール１０−１は１スライス、モジュール１０−２は２スライス、モジュール１０−３は３スライス。
【０１２８】
次に図２６の状態からモジュール１０−３が故障し、故障で失われたデータを復元して二重化するための割当処理のモジュール選択に第３の評価関数ｃｒ（ｉ，ｊ）を用いた場合を図２８，図２９に示す。
【０１２９】
図２８において、モジュール１０−３が故障した場合、故障により失われたプライマリＬｐ２，Ｌｐ６及びセカンダリＬｓ３，Ｌｓ４，Ｌｓ５，Ｌｓ９を復元しなくてはならない。
【０１３０】
この時、データ復元に必要なコピー元となるセカンダリＬｓ２，Ｌｓ６及びプライマリＬｐ３，Ｌｐ４，Ｌｐ５，Ｌｐ９はそれぞれモジュール１０−４，モジュール１０−４，モジュール１０−４，モジュール１０−１，モジュール１０−２，モジュール１０−２に存在する。
【０１３１】
そこで故障したモジュール１０−３の先頭のスライスのペアから順次復元し、その際のモジュール選択の評価関数に第３の関数の値ｃｒ（ｉ，ｊ）を用いる。まずプライマリＬｐ２’を復元するためのコピー元となるセカンダリＬｓ２はモジュール１０−４上に存在するため評価関数の値ｃｒ（ｉ，４）を求めると
ｃｒ（１，４）＝ｃ（１，４）／１０＝１／１０＝０．１
ｃｒ（２，４）＝ｃ（２，４）／２０＝２／２０＝０．１
となる。
【０１３２】
ここで評価関数の値が最も小さいモジュールを選択するが、この場合、同じ値であることから、同じ値を持つモジュールのひとつを任意に選べばいいが、ここでは未割当スライス数の多いモジュールを選択する。そのためモジュール１０−２が割当てられ、コピーにより得られたプライマリＬｐ２’がモジュール１０−２に割当てられる。
【０１３３】
次にプライマリＬｐ６’を復元する。コピー元となるセカンダリＬｓ６はモジュール１０−４上に存在するため評価関数の値ｃｒ（ｉ，４）を求めると
ｃｒ（１，４）＝ｃ（１，４）／１０＝０．１
ｃｒ（２，４）＝ｃ（２，４）／２０＝３／２０＝０．１５
となる。
【０１３４】
ここで評価関数の値が最も小さいモジュール１０−１が選択され、コピーにより指定されたプライマリＬｐ６’を割当てる。続いてセカンダリＬｓ３’を復元する。このためのコピー元となるプライマリＬｐ３はモジュール１０−４上に存在するため評価関数の値ｃｒ（ｉ，４）を求めると
ｃｒ（１，４）＝ｃ（１，４）／１０＝２／１０＝０．２
ｃｒ（２，４）＝ｃ（２，４）／２０＝３／２０＝０．１５
となる。
【０１３５】
この時、評価関数の値が最も小さいのがモジュール１０−２であることから、コピーにより復元したセカンダリＬｓ３’をモジュール１０−２に割当てる。続いて図２９に進み、セカンダリＬｓ４’を復元する。
【０１３６】
このためのコピー元となるプライマリＬｐ４はモジュール１０−１上に存在するため評価関数の値ｃｒ（ｉ，１）を求めると
ｃｒ（２，１）＝ｃ（２，１）／２０＝１／２０＝０．０５
ｃｒ（４，１）＝ｃ（４，１）／４０＝２／４０＝０．０５
となる。
【０１３７】
この場合、評価関数の値は同じであることから未割当スライス数の多いモジュール１０−４にコピーにより復元したセカンダリＬｓ４’を割当てる。次にセカンダリＬｓ５’を復元する。
【０１３８】
このためのコピー元となるプライマリＬｐ５はモジュール１０−２上に存在するため評価関数の値ｃｒ（ｉ，２）を求めると
ｃｒ（１，２）＝ｃ（１，２）／１０＝１／１０＝０．１
ｃｒ（４，２）＝ｃ（４，２）／４０＝４／４０＝０．１
となる。
【０１３９】
この場合にも評価関数の値は同じであることから未割当スライス数の多いモジュール１０−４にコピーにより復元したセカンダリＬｓ５’を割当てる。最後にセカンダリＬｓ９’を復元する。
【０１４０】
このためのコピー元となるプライマリＬｐ９はモジュール１０−２上に存在するため評価関数の値ｃｒ（ｉ，２）を求めると
ｃｒ（１，２）＝ｃ（１，２）／１０＝１／１０＝０．１
ｃｒ（４，２）＝ｃ（４，２）／４０＝５／４０＝０．１２５
となる。
【０１４１】
この場合、評価関数の値の小さな方のモジュール１０−１が選択され、ここにコピーにより復元したセカンダリＬｓ９’が割当てられる。
【０１４２】
図３０は、図２８及び図２９による第２の評価関数ｃｒ（ｉ，ｊ）を用いて行う二重化の復元処理におけるワークテーブル５０の説明図である。このような図２８及び図２９のモジュール１０−３が故障した場合にデータの二重化を図るための復元処理において、正常なモジュール１０−１，１０−２，１０−４で読み出すスライス数と、書き込むスライス数及びその合計は次のようになる。
（１）読出スライス数
モジュール１０−１は１スライス、モジュール１０−２は２スライス、モジュール１０−４は３スライス
（２）書込スライス数
モジュール１０−１は２スライス、モジュール１０−２は２スライス、モジュール１０−４は２スライス
（３）読書合計スライス数
モジュール１０−１は３スライス、モジュール１０−２は４スライス、モジュール１０−４は５スライス
このようにモジュールの故障に対する二重化における復元処理においても各モジュールの負荷を分散させることができる。
【０１４３】
尚、上記の実施形態にあってはセカンダリ割当の際のモジュール選択に擬似乱数と第２の評価関数ｃ（ｉ，ｊ）を用いた場合を例にとっているが、第３の評価関数ｃｒ（ｉ，ｊ）を用いてもよいことはもちろんである。
【０１４４】
また上記の実施形態にあってはモジュールが故障した際の二重化復元処理の際のモジュール選択に第３の評価関数ｃｒ（ｉ，ｊ）を用いた場合を例にとっているが、この代わりに擬似乱数や第２の評価関数ｃ（ｉ，ｊ）を用いてもよいことはもちろんである。
【０１４５】
図３１は、図２に示した統合管理モジュール１２の制御装置２２−５に設けた処理機能による本発明のデータ割当処理のフローチャートである。
【０１４６】
図３１において、システムを起動した際にまずステップＳ１で統合管理モジュール１２の初期化とモジュール１０−１〜１０−４からのスライス情報の収集を行って、図４のようなスライス情報４２を作成する。続いてステップＳ２でモジュール故障の有無を検出しており、モジュール故障がなければステップＳ３で外部からの要求があるか否かをチェックしている。
【０１４７】
外部からの要求があればステップＳ４に進み、外部からの要求を受領した後、ステップＳ５で論理ボリュームの割当処理を実行する。一方、ステップＳ２であるモジュールの故障が検出されるとステップＳ６に進み、データ二重化による復元処理を行う。
【０１４８】
図３２は、図３１のステップＳ５の論理ボリューム割当処理の詳細であり、図６及び図７に示した本発明による第一実施形態の割当処理のフローチャートである。
【０１４９】
この第一実施形態における論理ボリューム割当処理にあってはステップＳ１で要求されたサイズから必要なスライス数を算出した後、ステップＳ２で全てのプライマリをラウンドロビンでモジュールに割当てる。
【０１５０】
続いてステップＳ３でひとつのセカンダリを割当てるモジュールを評価関数で選択してセカンダリの割当を行う。このステップＳ３のひとつずつのセカンダリの割当をステップＳ４で必要割当数に達するまで繰り返し一連の割当処理を終了する。
【０１５１】
図３３は、図３１の論理ボリューム割当処理Ｓ５の詳細であり、図８乃至図１０に示した本発明の第二実施形態における割当処理のフローチャートである。
【０１５２】
この第二実施形態の割当処理にあってはステップＳ１で要求されたサイズから必要なスライス数を算出した後、ステップＳ２でひとつのプライマリをラウンドロビンでモジュールに割当てた後、ステップＳ３でプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択してセカンダリを割当てる。
【０１５３】
続いてステップＳ４でプライマリとセカンダリのペアの割当数が必要数割り当てたか否かチェックし、必要数の割当が済むまでステップＳ２，Ｓ３の処理を繰り返す。
【０１５４】
図３４は、図３１の論理ボリューム割当処理におけるステップＳ５の詳細であり、図１１及び図１２に示した本発明の第三実施形態による割当処理のフローチャートである。
【０１５５】
この第三実施形態の割当処理にあっては、ステップＳ１で要求されたサイズから必要なスライス数を算出した後、ステップＳ２でひとつのプライマリを最も未割当スライス数の多いモジュールに割当後、ステップＳ３でこのプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択して割当てる。つづいてステップＳ４でプライマリとセカンダリのペアの必要数の割当てが済むか否かチェックし、必要数の割当が済むまでステップＳ２，Ｓ３の処理を繰り返す。
【０１５６】
図３５は、図３１のステップＳ５の論理ボリューム割当処理の詳細であり、図１３乃至図１９に示した本発明の第四実施形態の割当処理のフローチャートである。
【０１５７】
この第四実施形態の割当処理にあっては、ステップＳ１で要求されたサイズから必要なスライス数を算出した後、ステップＳ２でひとつのプライマリを最も未割当比率ａｒ（ｉ）の高いモジュールに割当てる。
【０１５８】
続いてステップＳ３でこのプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択して割当てる。続いてステップＳ４でプライマリとセカンダリのペアの必要数の割当が済んだか否かチェックし、済んでいなければステップＳ２，Ｓ３の処理を必要数の割当が済むまで繰り返す。
【０１５９】
図３６は、図３１のステップＳ６のモジュール故障検出の際のデータ二重化復旧処理の詳細を示したフローチャートである。図３６のデータの二重化復旧処理にあっては、ステップＳ１で故障したモジュールを特定した後、ステップＳ２で故障モジュールに割当済みのプライマリ及びセカンダリ、即ち故障により失われたプライマリ及びセカンダリをリストアップする。
【０１６０】
続いてステップＳ３でリストアップした割当済みプライマリ及びセカンダリ、即ち故障により失われたプライマリ及びセカンダリのペアをリストアップする。続いてステップＳ４でリストアップしたペアの再割当処理をひとつずつ実行する。
【０１６１】
図３７は、図３６のステップ４における再割当処理のフローチャートである。この再割当処理はステップＳ１でデータ復元用の割当モジュールを評価関数で選択して割当てた後、ステップＳ２で必要数割当てたか否かチェックし、必要数を割当てるまでステップＳ１の処理を繰り返す。
【０１６２】
尚、本発明はその目的と利点を損なわない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【０１６３】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
（付記）
（付記１）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを、同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。（１）
【０１６４】
（付記２）
付記１のデータ割当方法に於いて、更に、
特定のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。（２）
【０１６５】
（付記３）
付記１又は２のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【０１６６】
（付記４）
付記１又は２のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１６７】
（付記５）
付記１又は２のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、前記モジュールｊとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１６８】
（付記６）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。（３）
【０１６９】
（付記７）
付記６のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。（４）
【０１７０】
（付記８）
付記６又は７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【０１７１】
（付記９）
付記６又は７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１７２】
（付記１０）
付記６又は７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、前記モジュールｊとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１７３】
（付記１１）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。（５）
【０１７４】
（付記１２）
付記１１のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。（６）
【０１７５】
（付記１３）
付記１０又は１１のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【０１７６】
（付記１４）
付記１０又は１１のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１７７】
（付記１５）
付記１０又は１１のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、前記モジュールｊとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１７８】
（付記１６）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。（７）
【０１７９】
（付記１７）
付記１６のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。（８）
【０１８０】
（付記１８）
付記１６又は１７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【０１８１】
（付記１９）
付記１６又は１７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、モジュールｊとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１８２】
（付記２０）
付記１６又は１７のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールｊに対して、前記モジュールｊとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの１つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【０１８３】
（付記２１）
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。（９）
【０１８４】
（付記２２）
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【０１８５】
（付記２３）
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【０１８６】
（付記２４）
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【０１８７】
（付記２５）
付記２１乃至２４のいずれかのプログラムに於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を実行させることを特徴とするプログラム。
【０１８８】
（付記２６）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。（１０）
【０１８９】
（付記２７）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【０１９０】
（付記２８）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【０１９１】
（付記２９）
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【０１９２】
（付記３０）
付記２６乃至２９のいずれかのストレージシステムに於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択部と、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当部と、
を設けたことを特徴とするストレージシステム。
【０１９３】
【発明の効果】
以上説明してきたように本発明によれば、複数のモジュールのストレージ装置にスライス単位で格納する論理ボリュームを二重化して割当てる際に、ボリュームの割当を二重化しているプライマリとセカンダリに固定せずに割当てることができ、あるモジュールが故障しても残された正常なモジュールを使用して失われたデータを復元することができる。
【０１９４】
また、スライス単位の論理ボリュームの割当時にモジュール故障に際し、二重化による復元データをコピー元となるモジュールが特定のモジュールに集中しないように割当てているため、二重化によるデータ復元処理時の負荷分散を予め行うことができる。
【０１９５】
更に任意のモジュール故障でデータが失われた際の二重化のための復元処理でその後のモジュール故障における復元時に特定モジュールにコピー元が集中しないように復元データの再割当を適切に行うことで、復元後のモジュール故障についても予め負荷分散を行っておくことができる。
【図面の簡単な説明】
【図１】図１は本発明が適用されるストレージシステムの説明図
【図２】図１の統合管理モジュールの機能構成のブロック図
【図３】統合管理モジュールでデータ割付を行う４つのモジュールのストレージ装置におけるスライス領域の説明図
【図４】統合管理モジュールが持つスライス情報の説明図
【図５】統合管理モジュールで割当られる論理ボリュームの説明図
【図６】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第１実施形態の説明図
【図７】図６に続く割当処理の説明図
【図８】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第２実施形態の説明図
【図９】図８に続く割当処理の説明図
【図１０】図９に続く割当処理の説明図
【図１１】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第３実施形態の説明図
【図１２】図１１に続く割当処理の説明図
【図１３】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第４実施形態の説明図
【図１４】図１３に続く割当処理の説明図
【図１５】図１４に続く割当処理の説明図
【図１６】図１５に続く割当処理の説明図
【図１７】図１６に続く割当処理の説明図
【図１８】図１７に続く割当処理の説明図
【図１９】図１８に続く割当処理の説明図
【図２０】図１３乃至図１９の割当処理で使用するワークテーブルの説明図
【図２１】モジュール１０−２が故障した場合の復元処理の説明図
【図２２】プライマリとセカンダリの両方の論理モジュールをラウンドロビンで割当てた割当処理の説明図
【図２３】図２２の割当後にモジュール１０−２が故障した場合の復元処理における負荷集中の問題を示した説明図
【図２４】第２の評価関数を用いたセカンダリ論理ボリュームの割当処理の説明図
【図２５】図２４に続く割当処理の説明図
【図２６】図２５に続く割当処理の説明図
【図２７】図２４乃至図２６の割当処理で使用するワークテーブルの説明図
【図２８】第３の評価関数を用いたセカンダリ論理ボリュームの割当処理の説明図
【図２９】図２８に続く割当処理の説明図
【図３０】図２８及び図２９の割当処理で使用するワークテーブルの説明図；
【図３１】図２の統合管理モジュールによる本発明のデータ割当処理のフローチャート
【図３２】図３１のステップＳ５の詳細として本発明の第１実施形態による論理ボリューム割当処理を示したフローチャート
【図３３】図３１のステップＳ５の詳細として本発明の第２実施形態による論理ボリューム割当処理を示したフローチャート
【図３４】図３１のステップＳ５の詳細として本発明の第３実施形態による論理ボリューム割当処理を示したフローチャート
【図３５】図３１のステップＳ５の詳細として本発明の第４実施形態による論理ボリューム割当処理を示したフローチャート
【図３６】図３１のステップＳ６の詳細を示したフローチャート
【図３７】図３６のステップＳ１の詳細を示したフローチャート
【符号の説明】
１０−１〜１０−４：モジュール
１２：統合管理モジュール
１４：ハブ
１６：ネットワーク
１８−１〜１８−５：クライアント
２０−１〜２０−５：通信装置
２２−１〜２２−５：制御装置
２４−１〜２４−５：ストレージ装置
２６−１〜２６−４：実データ格納部
２８−１〜２８−４：メタデータ格納部
３０：スライス情報格納部
３２：割当対象選択部
３４：プライマリ割当部
３６：セカンダリ割当部
３８：復元対象選択部
４０：復元割当部
４２：スライス情報
４４：論理モジュール
【図１】
2005004681.tif 000004
【図２】
2005004681.tif 000005
【図３】
2005004681.tif 000006
【図４】
2005004681.tif 000007
【図５】
2005004681.tif 000008
【図６】
2005004681.tif 000009
【図７】
2005004681.tif 000010
【図８】
2005004681.tif 000011
【図９】
2005004681.tif 000012
【図１０】
2005004681.tif 000013
【図１１】
2005004681.tif 000014
【図１２】
2005004681.tif 000015
【図１３】
2005004681.tif 000016
【図１４】
2005004681.tif 000017
【図１５】
2005004681.tif 000018
【図１６】
2005004681.tif 000019
【図１７】
2005004681.tif 000020
【図１８】
2005004681.tif 000021
【図１９】
2005004681.tif 000022
【図２０】
2005004681.tif 000023
【図２１】
2005004681.tif 000024
【図２２】
2005004681.tif 000025
【図２３】
2005004681.tif 000026
【図２４】
2005004681.tif 000027
【図２５】
2005004681.tif 000028
【図２６】
2005004681.tif 000029
【図２７】
2005004681.tif 000030
【図２８】
2005004681.tif 000031
【図２９】
2005004681.tif 000032
【図３０】
2005004681.tif 000033
【図３１】
2005004681.tif 000034
【図３２】
2005004681.tif 000035
【図３３】
2005004681.tif 000036
【図３４】
2005004681.tif 000037
【図３５】
2005004681.tif 000038
【図３６】
2005004681.tif 000039
【図３７】
2005004681.tif 000040