JP4404292B2 - Data allocation method, program, and storage system - Google Patents

Data allocation method, program, and storage system Download PDF

Info

Publication number
JP4404292B2
JP4404292B2 JP2003170357A JP2003170357A JP4404292B2 JP 4404292 B2 JP4404292 B2 JP 4404292B2 JP 2003170357 A JP2003170357 A JP 2003170357A JP 2003170357 A JP2003170357 A JP 2003170357A JP 4404292 B2 JP4404292 B2 JP 4404292B2
Authority
JP
Japan
Prior art keywords
module
slice data
modules
allocation
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003170357A
Other languages
Japanese (ja)
Other versions
JP2005004681A (en
Inventor
一隆 荻原
雅寿 田村
徹 横畑
諭史 幾田
泰生 野口
理一郎 武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2003170357A priority Critical patent/JP4404292B2/en
Publication of JP2005004681A publication Critical patent/JP2005004681A/en
Application granted granted Critical
Publication of JP4404292B2 publication Critical patent/JP4404292B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、複数のモジュールで構成されるネットワークストレージのデータ割当方法、プログラム及びストレージシステムに関し、特に、データの二重化によりモジュール障害に対し冗長性を持たせるネットワークストレージのデータ割当方法、プログラム及びストレージシステムに関する。
【0002】
【従来の技術】
従来、磁気ディスク装置の記憶空間を仮想的な論理ボリュームとして使用する論理ボリューム割当方法は、磁気ディスク装置における個々の物理ボリュームの容量を隠蔽し、外部からは任意の容量の仮想的なボリュームを取り扱えるようにするための方法である(特許文献1)。
【0003】
しかしながら、従来の論理ボリューム割当方法は、物理ボリュームが1つ壊れると複数の論理ボリュームのデータがすぐに失われるという弱点があった。この弱点を克服する方法としてデータを二重化するものがある(特許文献2)。このデータを二重化する方法にあっては、物理的なディスク装置を多数もつディスク制御装置を複数用意し、ディスク制御装置に正ディスク装置と副ディスク装置の役割を割り当ててデータの二重化を行っている。
【0004】
【特許文献1】
特開平5−334006号公報
【特許文献2】
特開平11−327873号公報
【0005】
【発明が解決しようとする課題】
しかしながら、このような従来の二重化方法にあっては、正ディスク装置と副ディスク装置という役割を厳密に定義しているため、例えば正ディスク装置側の容量にいくら余裕があっても副ディスク装置側に容量がなければ論理ボリュームの割当てを行うことはできず、また、ディスク制御装置が故障した場合にデータ二重化を維持しながらシステムを運用し続けることは困難である。
【0006】
本発明は、論理ボリューム内でデータを二重化し、物理モジュールの役割を固定せずに論理ボリュームの割当てを行うデータ割当方法、プログラム及びストレージシステムを提供することを目的とする。
【0007】
【課題を解決するための手段】
(方法)
本発明は、ストレージシステムのデータ割当方法を提供する。本発明が適用されるストレージシステムは、スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータ(論理ボリューム)を格納する実データ格納部およびスライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールとで構成される。
【0008】
このようなストレージシステムのデータ割当方法として本発明の第1の形態は、
指定された範囲のストレージ装置を持つモジュール群をスライスデータ(スライス単位の論理ボリューム)の割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備えたことを特徴とする。
【0009】
このような本発明のデータ割当方法を用いることにより、モジュールの役割をプライマリとセカンダリに固定せずにスライス単位データである論理ボリュームの割当てを行うことができ、特定のモジュールが故障しても、残された正常なモジュールを使用して失われた論理ボリュームを復元できる。またスライス単位の論理ボリュームの割当時に、任意のモジュール故障に先立ち二重化のための復元データの取得先となるモジュールが特定のモジュールに集中しないように割当てているため、データ復元処理時の負荷分散を予め行うことができる。
【0010】
本発明のデータ割当方法は、更に、
任意のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とする。このため任意のモジュールの故障でデータの冗長性が失われた際にも、その後のモジュール故障に対するデータの冗長性の復元処理時にペアを組むプライマリとセカンダリのスライスデータの再割当も負荷分散を行うように割り当てることができる。
【0011】
ここでセカンダリ割当ステップは、次のいずれかの評価関数を用いた処理を行う。
(1)評価関数として擬似乱数を使用する。
(2)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択する。
(3)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択する。
【0012】
本発明の第2の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【0013】
本発明の第3の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【0014】
本発明の第4の形態にあっては、ストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュールの全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とする。
【0015】
これら本発明の第2乃至第4の形態のデータ割当方法に於いても、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とする。
【0016】
また本発明の第2乃至第4の形態のセカンダリ割当ステップは、次のいずれかの評価関数を用いた処理を行う。
(1)評価関数として擬似乱数を使用する。
(2)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択する。
(3)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択する。
【0017】
(プログラム)
本発明は、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータで実行されるプログラムを提供する。本発明のプログラムの第1の形態にあっては、コンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させることを特徴とする。
【0018】
本発明のプログラムの第2の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【0019】
本発明のプログラムの第3の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【0020】
本発明のプログラムの第4の形態にあっては、複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を実行させることを特徴とする。
【0021】
これら本発明の第1乃至第4の形態となるプログラムにあっては、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を実行させることを特徴とする。
【0022】
(システム)
本発明は、スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部およびスライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールとで構成されるストレージシステムを提供する。
【0023】
本発明によるストレージシステムの第1形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部とを設けたことを特徴とする。
【0024】
本発明によるストレージシステムの第2形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部とを設けたことを特徴とする。
【0025】
本発明によるストレージシステムの第3形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とする。
【0026】
本発明によるストレージシステムの第4形態は、統合管理モジュールに、指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当部と、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部とを設けたことを特徴とする。
【0027】
これら本発明の第1乃至第4の形態となるストレージシステムにあっては、更に、特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択部と、復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当部とを設けたことを特徴とする。
【0028】
なお、本発明のプログラム及びストレージシステムの詳細は、本発明のデータ割当方法と基本的に同じになる。
【0029】
【発明の実施の形態】
図1は、本発明のデータ割当処理が適用されるストレージシステムの説明図である。図1において、本発明のストレージシステムは、複数のモジュール10−1,10−2,10−3,10−4と、これらモジュール10−1〜10−4を統合管理する統合管理モジュール12を備え、モジュール10−1〜10−4及び統合管理モジュール12はハブ14に接続されてモジュール間で通信が自由に行えるようにしている。
【0030】
ハブ14はネットワーク16に接続されており、ネットワーク16を介してクライアント18−1〜18−5と接続され、クライアント18−1〜18−5側から見てモジュール10−1〜10−4がネットワークストレージとして使用される。
【0031】
モジュール10−1〜10−4には、通信装置20−1〜20−4、制御装置22−1〜22−4及びストレージ装置24−1〜24−4が設けられている。同様に統合管理モジュール12には、通信装置20−5、制御装置22−5及びストレージ装置24−5が設けられている。
【0032】
ストレージ装置24−1〜24−4は不揮発性の記録媒体を使用しなければならないが、ストレージ装置24−5は不揮発性の記録媒体でも揮発性の記録媒体でも良い。モジュール10−1〜10−4のストレージ装置24−1〜24−4には実データ格納部26−1〜26−4とメタデータ格納部28−1〜28−4が設けられている。実データ格納部26−1〜26−4には、クライアント18−1〜18−5が読み書きするデータ、具体的には論理モジュールがスライスと呼ばれる単位で分割されたスライス領域ごとに格納されている。
【0033】
メタデータ格納部28−1〜28−4には、ストレージ装置24−1〜24−4におけるスライス単位の論理ボリュームの読み書き位置や各論理ボリュームのモジュール間の関係などのメタデータを格納しており、以下、メタデータ格納部28−1〜28−4に格納された管理情報をモジュールスライス情報と呼ぶ。
【0034】
統合管理モジュール12はデータアクセスを行うクライアントからのアクセス先の参照要求があった時にクライアントへ適切なアクセス先の情報を返す。実データのやりとりは統合管理モジュール12を介さずに、クライアントとモジュールとの間で直接行われる。
【0035】
図2は、図1の統合管理モジュール12の機能構成のブロック図である。図2において、統合管理モジュール12の制御装置22−5には、割当対象選択部32、プライマリ割当部34、セカンダリ割当部36、復元対象選択部38及び復元割当部40の処理機能が設けられており、これらの処理機能は制御装置22−5を構成するコンピュータのプログラム制御により実現される。
【0036】
即ち、統合管理モジュール12のハードウェア環境としては通常のコンピュータが使用され、制御装置22−5はMPUによるプログラムの実行により実現される。また通信装置20−5は、コンピュータに備えられた通信ボードもしくは通信用のOS機能で実現される。
【0037】
更にストレージ装置24−5は、コンピュータに設けられているメモリまたは磁気ディスク装置で実現されている。割当対象選択部32は、外部からスライス単位となる論理ボリュームの割当要求を受けた際に、指定された範囲のストレージ装置を持つモジュール群、具体的にはモジュール10−1〜10−4を論理モジュールの割当対象として選択する。
【0038】
プライマリ割当部34は、スライス単位でプライマリを、未割当のスライス領域を持つモジュールに対しラウンドロビンで必要な数分割り当てる。このプライマリの割当は、割当対象となっている全てのプライマリを割り当てた後に、同一データを担当するセカンダリを割り当てる分割割当と、プライマリを1つ割り当てた後に同一データを担当するセカンダリを1つ割り当てる処理を繰り返す交互割当のいずれかを取る。
【0039】
セカンダリ割当部36は、セカンダリと同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てる。このセカンダリ割当部36によるモジュール選択のための評価関数としては次のものを使用する。
(1)第1の評価関数としての擬似乱数(第1の関数)
(2)プライマリを持つモジュールjに対し、このモジュールjとペアを組むセカンダリの数の少ないモジュールを最良とする値を返す第2の関数c(i,j)
(3)プライマリを持つモジュールjに対し、このモジュールjとペアを組むセカンダリの数が、そのモジュールが持つ全スライス数に対し割合の少ないモジュールを最良とする値を返す第3の関数cr(i,j)
【0040】
ここで第2の関数と第3の関数は、複数のモジュールに対し最良の値を返すこともあり得る。この場合には最良の値を返した複数のモジュールから適宜の手法により1つのモジュールを選択する。この場合のモジュール選択としては、次のいずれかを選択することが考えられる。
(1)擬似乱数で選択する。
(2)モジュール名などの順序付けられた番号を選択基準に利用する。
(3)未割当スライス数の多い順とする。
(4)全スライス数に対する未割当スライス数の割合の大きい順とする。
【0041】
このような選択基準のいずれか1つを用いても更に複数のモジュールが選ばれる場合には、続いて他の選択基準によるモジュールの選択を行えばよい。復元対象選択部38は、あるモジュールの故障によりプライマリまたはセカンダリのペアが失われた際に、失われたペアを復元して二重化を復元する割当対象として正常なモジュール群を選択する。
【0042】
復元割当部40は、復元を必要とするプライマリ及びセカンダリとペアを組むモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに復元したセカンダリまたはプライマリを割り当てる。この場合の評価関数としては、セカンダリ割当部36で使用したと同じ
(1)擬似乱数
(2)第2の関数c(i,j)
(3)第3の関数cr(i,j)
のいずれかを使用する。
【0043】
図3は、図1の統合管理モジュール12でデータの割付けを行う4つのモジュール10−1〜10−4のストレージ装置24−1〜24−4の中の実データ格納部26−1〜26−4におけるスライス領域の説明図である。この例ではモジュール10−1〜10−4の順に、実データ格納部26−1〜26−4にそれぞれ10個、20個、30個、40個のスライス領域を持たせた場合である。
【0044】
即ち、モジュール10−1の実データ格納部26−1はスライス番号#1〜#10の10個のスライス領域を持ち、モジュール10−2の実データ格納部26−2はスライス番号#1〜#20の20個のスライス領域を持ち、モジュール10−3の実データ格納部26−3はスライス番号#1〜#30の30個のスライス領域を持ち、更にモジュール10−4の実データ格納部26−4はスライス番号#1〜#40の40個のスライス領域を持っている。
【0045】
なお、この例ではモジュールの持つスライス領域の数を異ならせているが、スライス領域の数が同一であっても問題はない。もちろん以下の説明にあっては、4つのモジュール10−1〜10−4が全て論理ボリュームの割当対象として指定されている。
【0046】
更に、モジュール10−1〜10−4の右上隅に、それぞれにおけるスライス領域の未使用率25−1〜25−4を分数で示している。この未使用率25−1〜25−4は、分母が全スライス数、分子が未使用スライス数であり、図示の状態では全てのスライス領域が空きであることから分子と分母は同じ数値となっている。
【0047】
図4は、統合管理モジュール12が持つスライス情報42の説明図である。図4(A)は図3のスライス領域にプライマリ及びセカンダリの割当てがない場合の説明図であり、スライス番号#1,#2,#3,…に対応して、モジュール10−1〜10−4のモジュール番号M1,M2,M3,M4と、それぞれの分数で示す括弧内の未使用率が示されており、論理ボリュームの格納がないことから格納エリアは全て空きとなっている。
【0048】
図4(B)は、後の説明で明らかにする図7のモジュール10−1〜10−4におけるプライマリLp0〜Lp9及びセカンダリLs0〜Ls9の格納状態におけるスライス情報42の説明図である。このスライス情報42から明らかなように、統合管理モジュール12にあっては、論理ボリュームの割当対象として指定されているモジュール10−1〜10−4の全てのモジュールスライス情報を統合した形で論理ボリュームの割当状態を管理している。
【0049】
図5は、統合管理モジュール12でモジュール10−1〜10−4に対し割り当てられるクライアントの持つ論理ボリュームと、これに対応したモジュール10−1のモジュールスライス情報の説明図である。図5(A)はクライアント側で使用している論理ボリューム44の説明図であり、モジュール10−1〜10−4におけるスライス単位に分けてセグメントL0〜L9を論理空間に配置している。
【0050】
ここで論理ボリューム44はセグメントL0〜L9という単位に分けられている。図5(B)は、図4(B)の統合管理モジュール12のスライス情報42に対応したモジュール番号M1となるモジュール10−1におけるモジュールスライス情報28の説明図である。このモジュール10−1のメタデータ格納部28−1に格納されるモジュールスライス情報28は
(1)スライス番号
(2)セグメント識別子
(3)論理ボリューム番号
(4)同一セグメントに属するペアを組むスライス番号
を備えている。なお、LpXはX番目のプライマリ、LsXはX番目のセカンダリを示す。
【0051】
例えばスライス番号#1についてはセグメント識別子としてプライマリLp0を格納しており、これは図5(A)の論理ボリューム44における位置L0、即ち先頭のセグメントであり、更にプライマリLp0とペアを組むセカンダリLs0のスライス情報「M3/#3」を格納している。
【0052】
この図5(B)のようなモジュールスライス情報28が、図1に示したモジュール10−1〜10−4のそれぞれのメタデータ格納部28−1〜28−4に格納されており、これらのモジュールスライス情報を統合した情報として統合管理モジュール12が、そのスライス情報格納部30、例えば図4に示したスライス情報42として格納している。
【0053】
次に図6及び図7を参照して、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第1実施形態を説明する。なお、以下の説明にあっては、クライアント側から図5(A)に示すセグメント単位の論理モジュールの割当要求があり、二重化のためにプライマリLp0〜Lp9の10個とセカンダリのLs0〜Ls9の10個をモジュール10−1〜10−4に割り当てる場合を例に取っている。
【0054】
この本発明の第1実施形態にあっては、割当を必要とする10個分のプライマリLp0〜Lp9のと10個分のセカンダリLs0〜Ls9に分けて、各モジュールに割り当てる。図6は10個のプライマリLp0〜Lp9をラウンドロビンでモジュール10−1〜10−4に割り当てた場合である。
【0055】
即ち、モジュール10−1〜10−4の順番に、まず1段目のスライス領域に対しプライマリLp0〜Lp3を順番に割り当て、続いて2段目のスライス領域にプライマリLp4〜Lp7を順番に割り当て、更に3段目のモジュール10−1〜10−2のスライス領域に残り2つのプライマリLp8,Lp9を割り当てている。
【0056】
図7は、図6に続いて行う10個のセカンダリLs0〜Ls9の割当処理である。このセカンダリLs0〜Ls9の割当は、例えば第1の評価関数である擬似乱数を使用して割り当てている。
【0057】
この擬似乱数を用いたセカンダリの割当にあっては、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにはならないという制約条件の下で、擬似乱数によりセカンダリを割り当てるモジュールを選択している。なお、評価関数を使用したセカンダリの割当の詳細は後の説明で明らかにする。
【0058】
図8乃至図10は、論理ボリュームを二重化して各モジュールのスライス領域に割り当てる本発明の第2実施形態の説明図である。この第2実施形態にあっては、プライマリを1つ割り当てた後にセカンダリを1つ割り当てることにより必要な数分の割当を行う手順を前提に、プライマリを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てる。
【0059】
またセカンダリについては、第1実施形態の場合と同様、評価関数として擬似乱数を使用し、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、セカンダリを割り当てるモジュールを選択する。
【0060】
図8は、最初のプライマリLp0と、これと同じデータ領域を担当するセカンダリLs0の割当であり、まずモジュール10−1にプライマリLp0を割り当て、次に例えば擬似乱数によりモジュール10−2にセカンダリLs0を割り当てる。
【0061】
続いて図9のように、プライマリLp1〜Lp3とセカンダリLs1〜Ls3を交互に割り当てる。即ち、プライマリLp1についてはラウンドロビンであることから2番目のモジュール10−2に割り当て、これに対応するセカンダリLs2は擬似乱数により例えばモジュール10−4に割り当てる。
【0062】
3番目のプライマリLp2はラウンドロビンで3番目のモジュール10−3に割り当てる。これに対応したセカンダリLs2は擬似乱数により例えばモジュール10−4に割り当てる。更に4番目のプライマリLp3については、ラウンドロビンにより4番目のモジュール10−4に割り当て、これに対応したセカンダリLs3は擬似乱数により例えばモジュール10−3に割り当てられる。
【0063】
図10は、図9に続くプライマリLp4〜Lp9及びセカンダリLs4〜Ls9のモジュール10−1〜10−4に対する割当であり、プライマリとセカンダリを交互に割り当て、且つプライマリについてはラウンドロビンで、セカンダリについては例えば評価関数として擬似乱数を使用することで、図示のようにモジュール10−1〜10−4に対する割当が行われる。
【0064】
図11及び図12は、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第3実施形態の説明図である。この第3実施形態にあっては、第2実施形態と同様、プライマリを1つ割り当てた後にセカンダリを1つ割り当てる交互割当を前提に、プライマリについては未割当スライス数の一番多いモジュールから割り当てる。
【0065】
一方、セカンダリについては、同じデータ領域を担当するプライマリを持つモジュールとは同じモジュールにならないという制約条件の下で、第1の評価関数である擬似乱数を用いて、選択したモジュールに割り当てる。
【0066】
図11は第3実施形態におけるプライマリLp0〜Lp4とセカンダリLs0〜Ls4の交互割当である。即ち、プライマリLp0〜Lp4については未割当スライス数が最も多いモジュール10−4に割り当てられており、これに対応したセカンダリLs0〜Ls4についてはモジュール26−4以外のモジュール10−1〜10−3に擬似乱数により割り当てられている。
【0067】
図12は、図11に続くプライマリLp5〜Lp9とセカンダリLs5〜Ls9の交互割当であり、この場合にも依然として未割当スライス数が一番多いモジュールはモジュール10−4であることから、プライマリLp5〜Lp9はモジュール10−4に割り当てている。また、これに対応したセカンダリLs5〜Ls9については、プライマリを持つモジュール10−4以外のモジュール10−1〜10−3に例えば擬似乱数による選択で割り当てている。
【0068】
図13乃至図19は、論理ボリュームを二重化してモジュールのスライス領域に割り当てる本発明の第4実施形態の説明図である。この第4実施形態は第2及び第3実施形態と同様、プライマリを1つ割り当てた後にセカンダリを1つ割り当てる交互割当を前提に、プライマリについてはモジュール全スライス数に対する未割当スライス数の割合、即ち次式で与えられる未使用率ar(i)を求め、未使用率の最も大きなモジュールから割り当てる。
【0069】
未使用率ar(i)
=(モジュールiの残りスライス数)/(モジュールiの全スライス数)…(1)
ここで未使用率ar(i)の値は、この例では小数点第4位以下を四捨五入している。
【0070】
図13はプライマリLp0についての第4実施形態における割当であり、この時点におけるモジュール10−1〜10−4の未使用率ar(1)〜ar(4)は
ar(1)=1
ar(2)=1
ar(3)=1
ar(4)=1
となる。
【0071】
即ち、モジュール10−1〜10−4の未使用率がすべて同じであることから、追加の選択条件としてモジュールの順番に割り当てるものとし、したがってモジュール10−1にプライマリLp0を割り当てる。
【0072】
セカンダリLs0については、同じデータ領域を担当するプライマリLp0が格納されたモジュール10−1以外のモジュール10−2〜10−4の中から、例えば擬似乱数によりモジュール10−2を選択して割り当てる。この時点でモジュール10−1〜10−4の未使用率は
ar(1)=0.9
ar(2)=0.95
ar(3)=1
ar(4)=1
となる。
【0073】
この未使用率の値は、図14で次のプライマリLp1を割り当てる際に使用される。即ち、プライマリLp1の割当は未使用率の大きいモジュール10−3もしくはモジュール10−4から割り当てることになるが、この例ではモジュールの順番に従っていることからモジュール10−3にプライマリLp1を割り当て、セカンダリLs1はモジュール10−3以外のモジュールとして例えば擬似乱数によりモジュール10−4に割り当てる。
【0074】
この時点での未使用率は
ar(1)=0.9
ar(2)=0.95
ar(3)=0.967
ar(4)=0.975
となり、この未使用率に基づいて次のプライマリLp2が割り当てられる。
【0075】
プライマリLp2の割当に際し使用率が最も大きいのはモジュール10−4であることから、これにプライマリLp2を割り当てる。セカンダリLs2は、モジュール10−4以外のモジュール、例えばモジュール10−2に割り当てる。
【0076】
このときの未使用率は
ar(1)=0.9
ar(2)=0.95
ar(3)=0.933
ar(4)=0.95
となる。
【0077】
続いて図15のようにプライマリLp3を割当対象とするが、このとき未使用率が最も大きいのはモジュール10−2もしくはモジュール10−4であり、この例ではモジュールの順番に選択していることから、モジュール10−2にプライマリLp3を割り当てる。
【0078】
またセカンダリLs3については、モジュール10−2以外のモジュールを擬似乱数により例えばモジュール10−3に割り当てる。
【0079】
この時点でモジュール10−1〜10−4の未使用率は
ar(1)=0.9
ar(2)=0.9
ar(3)=0.9
ar(4)=0.95
となる。
【0080】
続いて図16のように、プライマリLp4を割当対象とすると、このとき未使用率が最も大きいのはモジュール10−4であることから、モジュール10−4にプライマリLp4を割り当てる。セカンダリLs4は、モジュール10−4以外のモジュール例えば擬似乱数によりモジュール10−3に割り当てる。
【0081】
この時点でのモジュール10−1〜10−4の未使用率は
ar(1)=0.9
ar(2)=0.9
ar(3)=0.867
ar(4)=0.925
となる。
【0082】
引き続いて図17のようにプライマリLp5を割当対象とする。このとき未使用率はモジュール10−4が最大であることから、プライマリLp5はモジュール10−4に割り当てる。セカンダリLs5は、モジュール10−4以外のモジュール、例えば擬似乱数によりモジュール10−2に割り当てる。
【0083】
この時点でのモジュール10−1〜10−4の未使用率は
ar(1)=0.9
ar(2)=0.85
ar(3)=0.867
ar(4)=0.9
となる。
【0084】
引き続いて図17でプライマリLp6を割当対象とする。このとき未使用率が最大となるのはモジュール10−1とモジュール10−4であり、この場合にはモジュールの順番に従うことからモジュール10−1に割り当てる。
【0085】
セカンダリLs6は、モジュール10−1以外のモジュール、例えば擬似乱数によりモジュール10−4に割り当てる。セカンダリLs7は、モジュール10−4以外のモジュール、例えば擬似乱数によりモジュール10−2に割当てる。
【0086】
この時点のモジュール10−1〜10−4の未使用率は
ar(1)=0.8
ar(2)=0.85
ar(3)=0.867
ar(4)=0.875
となる。
【0087】
続いて図18でプライマリLp7の割当を行う。ここで未使用率の最も高いモジュールはモジュール10−4であることから、ここにプライマリLp7を割り当てる。
【0088】
このときモジュール10−1〜10−4の未使用率は
ar(1)=0.8
ar(2)=0.8
ar(3)=0.867
ar(4)=0.85
となる。
【0089】
続いて図19でプライマリLp8の割当を行う。この場合には未使用率が最大となるモジュール10−3にプライマリLp8を格納する。セカンダリは擬似乱数によりモジュール10−1に割り当てる。
【0090】
この時点での未使用率は
ar(1)=0.7
ar(2)=0.8
ar(3)=0.833
ar(4)=0.85
となる。
【0091】
続いてプライマリLp9の割当を行うが、このとき未使用率が最大となるモジュールはモジュール10−4であることから、プライマリLp9はモジュール10−4に割り当てる。
【0092】
セカンダリLs9は擬似乱数によりモジュール10−2に割り当てる。このような図13乃至図19の第4実施形態の割当処理で使用する未使用率を求めたワークテーブル46を、図20にまとめて示している。
【0093】
図21は、図7の割当状態からモジュール10−2が故障した場合の復元処理の説明図である。モジュール10−2が故障すると、その時保持されているプライマリLp1,Lp5,Lp9及びセカンダリLs2,Ls3の5つのスライスが失われる。
【0094】
しかしながら、これらのスライス中のデータは二重化により他のモジュール10−1〜10―4に保持されているため、復元処理により二重化を回復させることができる。
【0095】
この復元化による二重化にあっては、故障により失われたスライスと同じデータ領域を担当する正常のモジュールが保持しているスライスからコピーをとって、復元プライマリLp1´,Lp5´,Lp9´及び復元セカンダリLs2´,Ls3´を生成し、正常なモジュール10−1〜10−4に割当てる。
【0096】
このような故障時の復元による二重化にあってはコピー元となるセカンダリLs1,Ls5,Ls9及びプライマリLp2,Lp3の位置は正常なモジュール10−1,10−3,10−4に分散しており、特定のモジュールがコピー元とならないことから、故障に対し二重化のための復元処理における負荷の分散が図られている。
【0097】
このようなモジュール故障時の二重化の復元における負荷の分散は、すでに説明したモジュール割当の際のセカンダリの割当に評価関数を使用したことに依存している。ここでセカンダリのモジュール割当につき評価関数を使用せずにプライマリと同様にセカンダリもラウンドロビンの評価関数でふられているとどのようになるかを検討する。
【0098】
図22は、プライマリLp0〜Lp9をラウンドロビンでモジュール10−1〜10−4に割当てた後にセカンダリLs0,Ls9についても同じくラウンドロビンで割当てた場合である。
【0099】
この図22のようなプライマリ及びセカンダリについて同じラウンドロビンで割当た場合について、図23のようにモジュール10−2が故障すると、正常なモジュール10−1,10−3,10−4から失われたプライマリ及びセカンダリを復元して二重化する復元処理が行われる。
【0100】
しかし、この場合の復元処理におけるコピー元は全てモジュール10−4のみとなってしまう。これではデータを復元する二重化処理に時間がかかる。またモジュール10−4のスライス領域も復元データの二重化には利用できないため、ストレージ空間の利用効率も悪い。
【0101】
そこで本発明にあっては、あるモジュールが故障した際の二重化の復元処理で、コピー元が特定のモジュールに集中することを回避するため、セカンダリの割当について
(1)擬似乱数
(2)第2の関数c(i,j)
(3)第3の関数cr(i,j)
のいずれかを用いてモジュール割当を行うようにしている。
【0102】
ここで評価関数として擬似乱数を使用したことは既に説明したことから、以下評価関数として第2の関数及び第3の関数を使用した場合について説明する。
【0103】
図24乃至図26は、セカンダリの割当に第2の関数を用いた割当処理の説明図である。図24は、図6においてラウンドロビンによりプライマリLp0〜Lp9を割当てた後に評価関数として第2の関数c(i,j)を用いてモジュールを選択する場合の説明図である。
【0104】
図24では、まずセカンダリLs0を割当対象とするが、同じデータ領域を担当するプライマリLp0を割当てたモジュール10−1以外のモジュール10−2〜10−4における関数値c(i,1)は
c(2,1)=0
c(3,1)=0
c(4,1)=0
となり、関数値は同一である。
【0105】
このように関数値が同一の場合では、どのモジュールに割当てても良いが、この例では評価関数の値が同じ場合には未割当スライス数の多い方に割当てるものとする。
【0106】
この場合、未割当スライス数が最も大きいのはモジュール10−4であることから、セカンダリLs0はモジュール10−4に割当てる。次にプライマリLp1のペアであるセカンダリLs1を割当対象とする。
【0107】
プライマリLp1はモジュール10−2に割当てていることから、それ以外のモジュール10−1,10−3,10−4が割当対象となり、この場合のそれぞれの評価関数の値c(i,2)は
c(1,2)=0
c(3,2)=0
c(4,2)=0
となる。
【0108】
この時、評価関数の値は同一であることから、未割当スライス数の最も多いモジュール10−4が選択され、セカンダリLs1はモジュール10−4に割当てられる。
【0109】
次にプライマリLp2のペアであるセカンダリLs2を割当対象とし、プライマリLp2はモジュール10−3に割当てているため、それ以外のモジュール10−1,10−2,10−4が割当対象となり、この場合のそれぞれの評価関数の値c(i,3)は
c(1,3)=0
c(2,3)=0
c(4,3)=0
となる。
【0110】
この時、評価関数の値は同一であることから、未割当スライス数の最も多いモジュール10−4が選択され、セカンダリLs2はモジュール10−4に割当てられる。
【0111】
続いてプライマリLp3のペアであるセカンダリLs3を割当対象となり、プライマリLp3はモジュール10−4に割当てているため、それ以外のモジュール10−1〜10−3が割当対象となり、この場合のそれぞれの評価関数の値c(i,4)は
c(1,4)=1
c(2,4)=1
c(3,4)=1
となる。
【0112】
この場合にも評価関数の値は同一であることから、未割当スライス数の最も多いモジュール10−3が選択され、セカンダリLs3が割当てられる。続いて図25に進み、プライマリLp4のペアとなるセカンダリLs4の割当を行う。
【0113】
プライマリLp4はモジュール10−1に割当てられていることから、それ以外のモジュール10−2〜10−4が割当対象となり、この場合のそれぞれの評価関数の値c(i,1)は
c(2,1)=0
c(3,1)=0
c(4,1)=1
となる。
【0114】
このうち評価関数の値の小さいモジュール10−2と10−3が選択されるがそのうち未割当スライス数の最も多いモジュール10−3が選択され、セカンダリLs4はモジュール10−3に割当てられる。
【0115】
続いてプライマリLp5のペアとなるセカンダリLs5の割当を行う。プライマリLp5はモジュール10−2に割当てられており、従ってセカンダリはそれ以外のモジュール10−1,10−3及び10−4に割当てられる。
【0116】
この時の評価関数の値c(i,2)の値は、
c(1,2)=0
c(3,2)=0
c(4,2)=1
となる。
【0117】
この時、評価関数の値の小さいモジュールは10−1と10−3であるが、未割当スライス数の最も多いモジュール10−3にセカンダリLs5が割当てられる。
【0118】
次にプライマリLp6のペアとなるセカンダリLs6の割当を行う。プライマリLp6はモジュール10−3に割当てられており、それ以外のモジュール10−1,10−2及び10−4に対し割当てられる。
【0119】
この時の評価関数の値c(i,3)の値は、
c(1,3)=1
c(2,3)=1
c(4,3)=1
となり、評価関数の値はすべて同じであることから、未割当スライス数の最も多いモジュール10−4にセカンダリLs6が割当てられる。
【0120】
続いてプライマリLp7のペアとなるセカンダリLs7の割当を行う。プライマリLp7はモジュール10−4に割当てられており、それ以外のモジュール10−1〜10−3に対し割当てられる。
【0121】
この時の評価関数の値c(i,4)の値は、
c(1,4)=1
c(2,4)=1
c(3,4)=3、
となる。
【0122】
ここでモジュール10−1と10−2について評価関数が同じなので、未割当スライス数の最も多いモジュール10−2にセカンダリLs7を割当てられる。続いて図26に進み、プライマリLp8のペアとなるセカンダリLs8の割当を行う。
【0123】
プライマリLp8はモジュール10−1に割当てられており、それ以外のモジュール10−2〜10−4に対し割当てられる。この時の評価巻数の値c(i,1)の値は、
c(2,1)=0
c(3,1)=1
c(4,1)=1
となる。
【0124】
このため評価関数の値の最も小さいモジュール10−2にセカンダリLs8が割当てられる。最後のプライマリLp9のペアとなるセカンダリLs9の割当を行う。プライマリLp9はモジュール10−2に割当てられており、それ以外のモジュール10−1,10−3,10−4に対し割当てられる。
【0125】
この時の評価関数の値c(i,2)の値は、
c(1,2)=1
c(3,2)=1
c(4,2)=2
となる。
【0126】
ここでモジュール10−1とモジュール10−3の評価関数の値が最も小さくなるが、このうち未割当スライス数の多いモジュール10−3にセカンダリLs9が割当てられる。このような図24乃至図26の第2の評価関数を求めて行うセカンダリの割当処理のワークテーブル48を図27に示している。
【0127】
この図26のようにプライマリ及びセカンダリの割当が済んだ後にモジュール10−1〜10−4のいずれかで故障が発生した場合、二重化するための復元処理のコピー元となるスライス領域の数は次のようになりデータ読込の負荷が分散されていることがわかる。
(1)モジュール10−1の故障
モジュール10−2は1スライス、モジュール10−3は1スライス、モジュール10−4は1スライス。
(2)モジュール10−2の故障
モジュール10−1は1スライス、モジュール10−3は2スライス、モジュール10−4は2スライス。
(3)モジュール10−3の故障
モジュール10−1は1スライス、モジュール10−2は2スライス、モジュール10−4は3スライス。
(4)モジュール10−4の故障
モジュール10−1は1スライス、モジュール10−2は2スライス、モジュール10−3は3スライス。
【0128】
次に図26の状態からモジュール10−3が故障し、故障で失われたデータを復元して二重化するための割当処理のモジュール選択に第3の評価関数cr(i,j)を用いた場合を図28,図29に示す。
【0129】
図28において、モジュール10−3が故障した場合、故障により失われたプライマリLp2,Lp6及びセカンダリLs3,Ls4,Ls5,Ls9を復元しなくてはならない。
【0130】
この時、データ復元に必要なコピー元となるセカンダリLs2,Ls6及びプライマリLp3,Lp4,Lp5,Lp9はそれぞれモジュール10−4,モジュール10−4,モジュール10−4,モジュール10−1,モジュール10−2,モジュール10−2に存在する。
【0131】
そこで故障したモジュール10−3の先頭のスライスのペアから順次復元し、その際のモジュール選択の評価関数に第3の関数の値cr(i,j)を用いる。まずプライマリLp2’を復元するためのコピー元となるセカンダリLs2はモジュール10−4上に存在するため評価関数の値cr(i,4)を求めると
cr(1,4)=c(1,4)/10=1/10=0.1
cr(2,4)=c(2,4)/20=2/20=0.1
となる。
【0132】
ここで評価関数の値が最も小さいモジュールを選択するが、この場合、同じ値であることから、同じ値を持つモジュールのひとつを任意に選べばいいが、ここでは未割当スライス数の多いモジュールを選択する。そのためモジュール10−2が割当てられ、コピーにより得られたプライマリLp2’がモジュール10−2に割当てられる。
【0133】
次にプライマリLp6’を復元する。コピー元となるセカンダリLs6はモジュール10−4上に存在するため評価関数の値cr(i,4)を求めると
cr(1,4)=c(1,4)/10=0.1
cr(2,4)=c(2,4)/20=3/20=0.15
となる。
【0134】
ここで評価関数の値が最も小さいモジュール10−1が選択され、コピーにより指定されたプライマリLp6’を割当てる。続いてセカンダリLs3’を復元する。このためのコピー元となるプライマリLp3はモジュール10−4上に存在するため評価関数の値cr(i,4)を求めると
cr(1,4)=c(1,4)/10=2/10=0.2
cr(2,4)=c(2,4)/20=3/20=0.15
となる。
【0135】
この時、評価関数の値が最も小さいのがモジュール10−2であることから、コピーにより復元したセカンダリLs3’をモジュール10−2に割当てる。続いて図29に進み、セカンダリLs4’を復元する。
【0136】
このためのコピー元となるプライマリLp4はモジュール10−1上に存在するため評価関数の値cr(i,1)を求めると
cr(2,1)=c(2,1)/20=1/20=0.05
cr(4,1)=c(4,1)/40=2/40=0.05
となる。
【0137】
この場合、評価関数の値は同じであることから未割当スライス数の多いモジュール10−4にコピーにより復元したセカンダリLs4’を割当てる。次にセカンダリLs5’を復元する。
【0138】
このためのコピー元となるプライマリLp5はモジュール10−2上に存在するため評価関数の値cr(i,2)を求めると
cr(1,2)=c(1,2)/10=1/10=0.1
cr(4,2)=c(4,2)/40=4/40=0.1
となる。
【0139】
この場合にも評価関数の値は同じであることから未割当スライス数の多いモジュール10−4にコピーにより復元したセカンダリLs5’を割当てる。最後にセカンダリLs9’を復元する。
【0140】
このためのコピー元となるプライマリLp9はモジュール10−2上に存在するため評価関数の値cr(i,2)を求めると
cr(1,2)=c(1,2)/10=1/10=0.1
cr(4,2)=c(4,2)/40=5/40=0.125
となる。
【0141】
この場合、評価関数の値の小さな方のモジュール10−1が選択され、ここにコピーにより復元したセカンダリLs9’が割当てられる。
【0142】
図30は、図28及び図29による第2の評価関数cr(i,j)を用いて行う二重化の復元処理におけるワークテーブル50の説明図である。このような図28及び図29のモジュール10−3が故障した場合にデータの二重化を図るための復元処理において、正常なモジュール10−1,10−2,10−4で読み出すスライス数と、書き込むスライス数及びその合計は次のようになる。
(1)読出スライス数
モジュール10−1は1スライス、モジュール10−2は2スライス、モジュール10−4は3スライス
(2)書込スライス数
モジュール10−1は2スライス、モジュール10−2は2スライス、モジュール10−4は2スライス
(3)読書合計スライス数
モジュール10−1は3スライス、モジュール10−2は4スライス、モジュール10−4は5スライス
このようにモジュールの故障に対する二重化における復元処理においても各モジュールの負荷を分散させることができる。
【0143】
尚、上記の実施形態にあってはセカンダリ割当の際のモジュール選択に擬似乱数と第2の評価関数c(i,j)を用いた場合を例にとっているが、第3の評価関数cr(i,j)を用いてもよいことはもちろんである。
【0144】
また上記の実施形態にあってはモジュールが故障した際の二重化復元処理の際のモジュール選択に第3の評価関数cr(i,j)を用いた場合を例にとっているが、この代わりに擬似乱数や第2の評価関数c(i,j)を用いてもよいことはもちろんである。
【0145】
図31は、図2に示した統合管理モジュール12の制御装置22−5に設けた処理機能による本発明のデータ割当処理のフローチャートである。
【0146】
図31において、システムを起動した際にまずステップS1で統合管理モジュール12の初期化とモジュール10−1〜10−4からのスライス情報の収集を行って、図4のようなスライス情報42を作成する。続いてステップS2でモジュール故障の有無を検出しており、モジュール故障がなければステップS3で外部からの要求があるか否かをチェックしている。
【0147】
外部からの要求があればステップS4に進み、外部からの要求を受領した後、ステップS5で論理ボリュームの割当処理を実行する。一方、ステップS2であるモジュールの故障が検出されるとステップS6に進み、データ二重化による復元処理を行う。
【0148】
図32は、図31のステップS5の論理ボリューム割当処理の詳細であり、図6及び図7に示した本発明による第一実施形態の割当処理のフローチャートである。
【0149】
この第一実施形態における論理ボリューム割当処理にあってはステップS1で要求されたサイズから必要なスライス数を算出した後、ステップS2で全てのプライマリをラウンドロビンでモジュールに割当てる。
【0150】
続いてステップS3でひとつのセカンダリを割当てるモジュールを評価関数で選択してセカンダリの割当を行う。このステップS3のひとつずつのセカンダリの割当をステップS4で必要割当数に達するまで繰り返し一連の割当処理を終了する。
【0151】
図33は、図31の論理ボリューム割当処理S5の詳細であり、図8乃至図10に示した本発明の第二実施形態における割当処理のフローチャートである。
【0152】
この第二実施形態の割当処理にあってはステップS1で要求されたサイズから必要なスライス数を算出した後、ステップS2でひとつのプライマリをラウンドロビンでモジュールに割当てた後、ステップS3でプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択してセカンダリを割当てる。
【0153】
続いてステップS4でプライマリとセカンダリのペアの割当数が必要数割り当てたか否かチェックし、必要数の割当が済むまでステップS2,S3の処理を繰り返す。
【0154】
図34は、図31の論理ボリューム割当処理におけるステップS5の詳細であり、図11及び図12に示した本発明の第三実施形態による割当処理のフローチャートである。
【0155】
この第三実施形態の割当処理にあっては、ステップS1で要求されたサイズから必要なスライス数を算出した後、ステップS2でひとつのプライマリを最も未割当スライス数の多いモジュールに割当後、ステップS3でこのプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択して割当てる。つづいてステップS4でプライマリとセカンダリのペアの必要数の割当てが済むか否かチェックし、必要数の割当が済むまでステップS2,S3の処理を繰り返す。
【0156】
図35は、図31のステップS5の論理ボリューム割当処理の詳細であり、図13乃至図19に示した本発明の第四実施形態の割当処理のフローチャートである。
【0157】
この第四実施形態の割当処理にあっては、ステップS1で要求されたサイズから必要なスライス数を算出した後、ステップS2でひとつのプライマリを最も未割当比率ar(i)の高いモジュールに割当てる。
【0158】
続いてステップS3でこのプライマリのペアとなるひとつのセカンダリを割当てるモジュールを評価関数で選択して割当てる。続いてステップS4でプライマリとセカンダリのペアの必要数の割当が済んだか否かチェックし、済んでいなければステップS2,S3の処理を必要数の割当が済むまで繰り返す。
【0159】
図36は、図31のステップS6のモジュール故障検出の際のデータ二重化復旧処理の詳細を示したフローチャートである。図36のデータの二重化復旧処理にあっては、ステップS1で故障したモジュールを特定した後、ステップS2で故障モジュールに割当済みのプライマリ及びセカンダリ、即ち故障により失われたプライマリ及びセカンダリをリストアップする。
【0160】
続いてステップS3でリストアップした割当済みプライマリ及びセカンダリ、即ち故障により失われたプライマリ及びセカンダリのペアをリストアップする。続いてステップS4でリストアップしたペアの再割当処理をひとつずつ実行する。
【0161】
図37は、図36のステップ4における再割当処理のフローチャートである。この再割当処理はステップS1でデータ復元用の割当モジュールを評価関数で選択して割当てた後、ステップS2で必要数割当てたか否かチェックし、必要数を割当てるまでステップS1の処理を繰り返す。
【0162】
尚、本発明はその目的と利点を損なわない適宜の変形を含み、更に上記の実施形態に示した数値による限定は受けない。
【0163】
ここで本発明の特徴をまとめて列挙すると次の付記のようになる。
(付記)
(付記1)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを、同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。(1)
【0164】
(付記2)
付記1のデータ割当方法に於いて、更に、
特定のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。(2)
【0165】
(付記3)
付記1又は2のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【0166】
(付記4)
付記1又は2のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0167】
(付記5)
付記1又は2のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、前記モジュールjとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0168】
(付記6)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。(3)
【0169】
(付記7)
付記6のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。(4)
【0170】
(付記8)
付記6又は7のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【0171】
(付記9)
付記6又は7のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0172】
(付記10)
付記6又は7のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、前記モジュールjとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0173】
(付記11)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。(5)
【0174】
(付記12)
付記11のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。(6)
【0175】
(付記13)
付記10又は11のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【0176】
(付記14)
付記10又は11のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0177】
(付記15)
付記10又は11のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、前記モジュールjとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0178】
(付記16)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備えたことを特徴とするデータ割当方法。(7)
【0179】
(付記17)
付記16のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。(8)
【0180】
(付記18)
付記16又は17のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として擬似乱数を使用することを特徴とするデータ割当方法。
【0181】
(付記19)
付記16又は17のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数の少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0182】
(付記20)
付記16又は17のデータ割当方法に於いて、前記セカンダリ割当ステップは、前記評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、前記モジュールjとペアを組むスライスデータの数のモジュール全スライス数に対する割合が少ないモジュールを最良とする値を返す関数を使用し、前記関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするデータ割当方法。
【0183】
(付記21)
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。(9)
【0184】
(付記22)
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【0185】
(付記23)
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【0186】
(付記24)
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を実行させることを特徴とするプログラム。
【0187】
(付記25)
付記21乃至24のいずれかのプログラムに於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を実行させることを特徴とするプログラム。
【0188】
(付記26)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。(10)
【0189】
(付記27)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【0190】
(付記28)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【0191】
(付記29)
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当部と、
を設けたことを特徴とするストレージシステム。
【0192】
(付記30)
付記26乃至29のいずれかのストレージシステムに於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択部と、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当部と、
を設けたことを特徴とするストレージシステム。
【0193】
【発明の効果】
以上説明してきたように本発明によれば、複数のモジュールのストレージ装置にスライス単位で格納する論理ボリュームを二重化して割当てる際に、ボリュームの割当を二重化しているプライマリとセカンダリに固定せずに割当てることができ、あるモジュールが故障しても残された正常なモジュールを使用して失われたデータを復元することができる。
【0194】
また、スライス単位の論理ボリュームの割当時にモジュール故障に際し、二重化による復元データをコピー元となるモジュールが特定のモジュールに集中しないように割当てているため、二重化によるデータ復元処理時の負荷分散を予め行うことができる。
【0195】
更に任意のモジュール故障でデータが失われた際の二重化のための復元処理でその後のモジュール故障における復元時に特定モジュールにコピー元が集中しないように復元データの再割当を適切に行うことで、復元後のモジュール故障についても予め負荷分散を行っておくことができる。
【図面の簡単な説明】
【図1】図1は本発明が適用されるストレージシステムの説明図
【図2】図1の統合管理モジュールの機能構成のブロック図
【図3】統合管理モジュールでデータ割付を行う4つのモジュールのストレージ装置におけるスライス領域の説明図
【図4】統合管理モジュールが持つスライス情報の説明図
【図5】統合管理モジュールで割当られる論理ボリュームの説明図
【図6】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第1実施形態の説明図
【図7】図6に続く割当処理の説明図
【図8】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第2実施形態の説明図
【図9】図8に続く割当処理の説明図
【図10】図9に続く割当処理の説明図
【図11】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第3実施形態の説明図
【図12】図11に続く割当処理の説明図
【図13】論理ボリュームを二重化してモジュールのスライス領域に割当てる本発明の第4実施形態の説明図
【図14】図13に続く割当処理の説明図
【図15】図14に続く割当処理の説明図
【図16】図15に続く割当処理の説明図
【図17】図16に続く割当処理の説明図
【図18】図17に続く割当処理の説明図
【図19】図18に続く割当処理の説明図
【図20】図13乃至図19の割当処理で使用するワークテーブルの説明図
【図21】モジュール10−2が故障した場合の復元処理の説明図
【図22】プライマリとセカンダリの両方の論理モジュールをラウンドロビンで割当てた割当処理の説明図
【図23】図22の割当後にモジュール10−2が故障した場合の復元処理における負荷集中の問題を示した説明図
【図24】第2の評価関数を用いたセカンダリ論理ボリュームの割当処理の説明図
【図25】図24に続く割当処理の説明図
【図26】図25に続く割当処理の説明図
【図27】図24乃至図26の割当処理で使用するワークテーブルの説明図
【図28】第3の評価関数を用いたセカンダリ論理ボリュームの割当処理の説明図
【図29】図28に続く割当処理の説明図
【図30】図28及び図29の割当処理で使用するワークテーブルの説明図;
【図31】図2の統合管理モジュールによる本発明のデータ割当処理のフローチャート
【図32】図31のステップS5の詳細として本発明の第1実施形態による論理ボリューム割当処理を示したフローチャート
【図33】図31のステップS5の詳細として本発明の第2実施形態による論理ボリューム割当処理を示したフローチャート
【図34】図31のステップS5の詳細として本発明の第3実施形態による論理ボリューム割当処理を示したフローチャート
【図35】図31のステップS5の詳細として本発明の第4実施形態による論理ボリューム割当処理を示したフローチャート
【図36】図31のステップS6の詳細を示したフローチャート
【図37】図36のステップS1の詳細を示したフローチャート
【符号の説明】
10−1〜10−4:モジュール
12:統合管理モジュール
14:ハブ
16:ネットワーク
18−1〜18−5:クライアント
20−1〜20−5:通信装置
22−1〜22−5:制御装置
24−1〜24−5:ストレージ装置
26−1〜26−4:実データ格納部
28−1〜28−4:メタデータ格納部
30:スライス情報格納部
32:割当対象選択部
34:プライマリ割当部
36:セカンダリ割当部
38:復元対象選択部
40:復元割当部
42:スライス情報
44:論理モジュール
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a data allocation method, program, and storage system for a network storage composed of a plurality of modules, and more particularly to a data allocation method, program, and storage system for network storage that provides redundancy against module failure by duplicating data. About.
[0002]
[Prior art]
Conventionally, a logical volume allocation method using a storage space of a magnetic disk device as a virtual logical volume hides the capacity of each physical volume in the magnetic disk device and can handle a virtual volume of an arbitrary capacity from the outside. (Patent Document 1).
[0003]
However, the conventional logical volume allocation method has a weak point that data of a plurality of logical volumes are immediately lost when one physical volume is broken. As a method of overcoming this weak point, there is a method of duplicating data (Patent Document 2). In this data duplication method, a plurality of disk control devices having a large number of physical disk devices are prepared, and data is duplicated by assigning the roles of the primary disk device and the secondary disk device to the disk control device. .
[0004]
[Patent Document 1]
JP-A-5-334006
[Patent Document 2]
JP-A-11-327873
[0005]
[Problems to be solved by the invention]
However, in such a conventional duplexing method, the roles of the primary disk device and the secondary disk device are strictly defined. For example, no matter how much capacity is available on the primary disk device side, the secondary disk device side If there is no capacity, logical volume allocation cannot be performed, and it is difficult to continue operating the system while maintaining data duplication in the event of a disk controller failure.
[0006]
It is an object of the present invention to provide a data allocation method, a program, and a storage system that duplicate data in a logical volume and allocate a logical volume without fixing the role of a physical module.
[0007]
[Means for Solving the Problems]
(Method)
The present invention provides a data allocation method for a storage system. A storage system to which the present invention is applied includes an actual data storage unit that stores slice data (logical volume) read and written by a client in a slice area divided into slices, and a meta data such as a slice data read / write position and a relationship between modules. A storage device including a metadata storage unit that stores data; a communication device that communicates with another external module; a plurality of modules that include a storage device and a control device that controls the communication device; and a plurality of modules It consists of an integrated management module that duplicates and integrates slice data stored in slice units in the module storage device.
[0008]
As a data allocation method for such a storage system, the first aspect of the present invention is:
An allocation target selection step for selecting a module group having storage devices in a specified range as an allocation target of slice data (logical volume in slice units);
A primary allocation step in which primary slice data is allocated to a module having an unallocated slice area one by one in a round-robin manner;
A secondary allocation step for allocating as many secondary slice data as necessary to a module selected by a predetermined evaluation function under a constraint that the module does not become the same module as a module having primary slice data in charge of the same data area;
It is provided with.
[0009]
By using such a data allocation method of the present invention, it is possible to allocate a logical volume that is slice unit data without fixing the role of the module to primary and secondary, even if a specific module fails, You can restore the lost logical volume using the remaining healthy modules. In addition, when allocating logical volumes in units of slices, load distribution during data restoration processing is reduced because the module from which restoration data for duplication is acquired is not concentrated on a specific module prior to any module failure. This can be done in advance.
[0010]
The data allocation method of the present invention further includes:
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when an arbitrary module fails,
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
It is provided with. For this reason, even if data redundancy is lost due to a failure of an arbitrary module, the reassignment of primary and secondary slice data to be paired at the time of data redundancy restoration processing for subsequent module failures also performs load balancing Can be assigned as
[0011]
Here, the secondary allocation step performs processing using any of the following evaluation functions.
(1) Use pseudo-random numbers as evaluation functions.
(2) A value c (i) that optimizes a module having a small number of slice data paired with the module j, as the evaluation function, with respect to the module j having primary slice data paired with the secondary slice data to be allocated. , J) is used, and when the best value of this function is in a plurality of modules, one of the plurality of modules is selected as a secondary slice data allocation module in a predetermined procedure.
(3) A module having a small ratio of the number of slice data paired with module j to the total number of slices of module j having primary slice data paired with secondary slice data to be allocated as an evaluation function When the function that returns the value cr (i, j) that best represents the function is used, and the best value of this function is in a plurality of modules, one of the plurality of modules is assigned to the secondary slice data in a predetermined procedure. Select to module.
[0012]
In the second aspect of the present invention, in the data allocation method of the storage system,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step in which primary slice data is allocated in a round robin manner from a module having an unallocated slice area in a procedure of allocating as many as necessary by allocating one secondary slice data after allocating one primary slice data,
A secondary allocation step for allocating secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0013]
In the third aspect of the present invention, in the data allocation method of the storage system,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
The module with the largest number of unassigned slices among the modules with unassigned slice areas in the procedure of assigning the required number of pieces by assigning one secondary slice data after assigning one primary slice data A primary assignment step assigned from
A secondary allocation step for allocating secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0014]
In the fourth aspect of the present invention, in the data allocation method of the storage system,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
This is a procedure that allocates as many secondary slice data as necessary after allocating one primary slice data, and assigns the primary slice data from the module with the largest ratio of the number of unassigned slices to the total number of slices in the module. A primary assignment step to assign;
A secondary allocation step for allocating secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0015]
In these data allocation methods of the second to fourth aspects of the present invention,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
It is provided with.
[0016]
Moreover, the secondary allocation step according to the second to fourth aspects of the present invention performs processing using one of the following evaluation functions.
(1) Use pseudo-random numbers as evaluation functions.
(2) A value c (i) that optimizes a module having a small number of slice data paired with the module j, as the evaluation function, with respect to the module j having primary slice data paired with the secondary slice data to be allocated. , J) is used, and when the best value of this function is in a plurality of modules, one of the plurality of modules is selected as a secondary slice data allocation module in a predetermined procedure.
(3) For the module j having primary slice data paired with the secondary slice data to be allocated as an evaluation function, a module having a small ratio of the number of slice data paired with the module j to the total number of slices When a function that returns the best value cr (i, j) is used and the best value of this function is in a plurality of modules, one of the plurality of modules is assigned to the secondary slice data in a predetermined procedure. Select
[0017]
(program)
The present invention provides a program to be executed by a computer of an integrated management module that performs integrated management by duplicating slice data stored in units of slices in a storage device of a plurality of modules. In the first form of the program of the present invention, the computer
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step in which primary slice data is allocated to a module having an unallocated slice area one by one in a round-robin manner;
A secondary allocation step for allocating as many secondary slice data as necessary to a module selected by a predetermined evaluation function under a constraint that the module does not become the same module as a module having primary slice data in charge of the same data area;
Is executed.
[0018]
In the second form of the program of the present invention, the computer of the integrated management module that duplicates and integrates the slice data stored in the slice unit in the storage device of the plurality of modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step of allocating the primary slice data in a round robin manner from a module having an unallocated slice area, in a procedure of allocating a required number by allocating one secondary slice data after allocating one primary slice data;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0019]
In the third form of the program of the present invention, the computer of the integrated management module that duplicates and integrates the slice data stored in the slice unit in the storage device of a plurality of modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
The module with the largest number of unassigned slices among the modules with unassigned slice areas in the procedure of assigning the required number of pieces by assigning one secondary slice data after assigning one primary slice data A primary assignment step assigned from
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0020]
In the fourth form of the program of the present invention, the computer of the integrated management module that duplicates and integrates the slice data stored in the slice unit in the storage device of a plurality of modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
This is a procedure to allocate the required number of secondary slice data by allocating one secondary slice data after allocating one primary slice data, and allocate the primary slice data from the module with the largest ratio of unassigned slices to the total number of slices A primary assignment step;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the secondary slice data is not the same module as a module having primary slice data in charge of the same data area. Features.
[0021]
In the programs according to the first to fourth aspects of the present invention,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
Is executed.
[0022]
(system)
The present invention includes an actual data storage unit that stores slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit that stores metadata such as read / write positions of slice data and relationships between modules. A plurality of modules including a storage device provided, a communication device that communicates with another external module, and a control device that controls the storage unit and the communication unit;
Provided is a storage system including an integrated management module that duplicates and integrally manages slice data stored in units of slices in a storage device of a plurality of modules.
[0023]
In a first form of the storage system according to the present invention, an allocation target selection unit that selects a module group having storage devices in a specified range as an allocation target of slice data, and a slice in which primary slice data is not allocated to the integrated management module Under the constraint that the primary allocation unit that allocates the required number of round robin to each module with the area and the module with the primary slice data that handles the same data area for the secondary slice data cannot be the same module And a secondary allocating unit that allocates a required number of modules to a module selected by a predetermined evaluation function.
[0024]
In the second form of the storage system according to the present invention, an allocation target selection unit that selects a module group having storage devices in a specified range as an allocation target of slice data and one primary slice data are allocated to the integrated management module. In this procedure, one secondary slice data is allocated as many times as necessary, and the primary allocation unit that allocates the primary slice data from a module having an unallocated slice area in round robin and the secondary slice data are assigned to the same data area. A secondary allocating unit that is allocated to a module selected by a predetermined evaluation function is provided under a constraint that the module having primary slice data to be the same module is not used.
[0025]
In the third form of the storage system according to the present invention, an allocation target selection unit that selects a module group having storage devices in a specified range as an allocation target of slice data and one primary slice data are allocated to the integrated management module. In the procedure of allocating as many secondary slice data as necessary, the primary allocator that allocates the primary slice data from the module with the largest number of unallocated slices among the modules having unallocated slice areas, and the secondary A secondary allocation unit that allocates slice data to a module selected by a predetermined evaluation function under a constraint that the module does not become the same module as a module having primary slice data in charge of the same data area;
Is provided.
[0026]
In the fourth form of the storage system according to the present invention, after assigning one primary slice data to an integrated management module, an allocation target selection unit for selecting a module group having storage devices in a specified range as an allocation target of slice data. And assigning the necessary number of secondary slice data in step 1, the primary allocating unit allocating the primary slice data from the module having the largest ratio of the number of unassigned slices to the total number of slices, and the secondary slice data And a secondary allocation unit that assigns to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area. To.
[0027]
In the storage systems according to the first to fourth embodiments of the present invention, when slice data is lost due to a failure of a specific module, the allocation target is restored to restore and duplicate the lost slice data. As a restoration target selection unit that selects a normal module group and a slice data to be restored are selected using a predetermined evaluation function under the constraint that the module having the slice data that forms a pair is not the same module. And a restoration assigning unit for assigning to each module.
[0028]
The details of the program and storage system of the present invention are basically the same as the data allocation method of the present invention.
[0029]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is an explanatory diagram of a storage system to which a data allocation process of the present invention is applied. 1, the storage system of the present invention includes a plurality of modules 10-1, 10-2, 10-3, 10-4 and an integrated management module 12 for managing these modules 10-1 to 10-4 in an integrated manner. The modules 10-1 to 10-4 and the integrated management module 12 are connected to the hub 14 so that communication can be freely performed between the modules.
[0030]
The hub 14 is connected to the network 16 and is connected to the clients 18-1 to 18-5 via the network 16, and the modules 10-1 to 10-4 are seen from the client 18-1 to 18-5 side. Used as storage.
[0031]
The modules 10-1 to 10-4 are provided with communication devices 20-1 to 20-4, control devices 22-1 to 22-4, and storage devices 24-1 to 24-4. Similarly, the integrated management module 12 is provided with a communication device 20-5, a control device 22-5, and a storage device 24-5.
[0032]
The storage devices 24-1 to 24-4 must use a non-volatile recording medium, but the storage device 24-5 may be a non-volatile recording medium or a volatile recording medium. The storage devices 24-1 to 24-4 of the modules 10-1 to 10-4 are provided with actual data storage units 26-1 to 26-4 and metadata storage units 28-1 to 28-4. The real data storage units 26-1 to 26-4 store data read and written by the clients 18-1 to 18-5, specifically, each slice area obtained by dividing a logical module into units called slices. .
[0033]
The metadata storage units 28-1 to 28-4 store metadata such as read / write positions of logical volumes in slice units in the storage devices 24-1 to 24-4 and relationships between modules of each logical volume. Hereinafter, the management information stored in the metadata storage units 28-1 to 28-4 is referred to as module slice information.
[0034]
The integrated management module 12 returns appropriate access destination information to the client when there is an access destination reference request from the client that performs data access. Actual data is exchanged directly between the client and the module without going through the integrated management module 12.
[0035]
FIG. 2 is a block diagram of a functional configuration of the integrated management module 12 of FIG. 2, the control device 22-5 of the integrated management module 12 is provided with processing functions of an allocation target selection unit 32, a primary allocation unit 34, a secondary allocation unit 36, a restoration target selection unit 38, and a restoration allocation unit 40. These processing functions are realized by program control of a computer constituting the control device 22-5.
[0036]
That is, a normal computer is used as the hardware environment of the integrated management module 12, and the control device 22-5 is realized by executing a program by the MPU. The communication device 20-5 is realized by a communication board provided in the computer or an OS function for communication.
[0037]
Further, the storage device 24-5 is realized by a memory or a magnetic disk device provided in the computer. When the allocation target selection unit 32 receives a logical volume allocation request in units of slices from the outside, the allocation target selection unit 32 logically groups modules having storage devices in a specified range, specifically, modules 10-1 to 10-4. Select as a module assignment target.
[0038]
The primary assigning unit 34 assigns primaries in units of slices to the modules having unassigned slice areas as many as necessary in round robin. In this primary assignment, after assigning all primaries to be assigned, a divided assignment for assigning a secondary in charge of the same data and a process for assigning a secondary in charge of the same data after assigning one primary. Take one of the alternating assignments.
[0039]
The secondary allocation unit 36 allocates the necessary number of modules to the module selected by the predetermined evaluation function under the constraint that the module having the primary in charge of the same data area as the secondary is not the same module. As an evaluation function for module selection by the secondary allocator 36, the following is used.
(1) Pseudorandom number (first function) as a first evaluation function
(2) A second function c (i, j) that returns a value that makes the module with the small number of secondary that forms a pair with the module j the best value for the module j having the primary
(3) A third function cr (i) for a module j having a primary that returns a value in which the number of secondary pairs paired with the module j is the best for a module having a small ratio to the total number of slices of the module j , J)
[0040]
Here, the second function and the third function may return the best values for a plurality of modules. In this case, one module is selected from a plurality of modules that have returned the best value by an appropriate method. As the module selection in this case, it is conceivable to select one of the following.
(1) Select with a pseudo-random number.
(2) An ordered number such as a module name is used as a selection criterion.
(3) The number of unallocated slices is in descending order.
(4) The ratio of the number of unallocated slices to the total number of slices is in descending order.
[0041]
If a plurality of modules are selected even if any one of such selection criteria is used, the modules may be selected based on other selection criteria. When the primary or secondary pair is lost due to a failure of a module, the restoration target selection unit 38 selects a normal module group as an allocation target for restoring the lost pair and restoring duplication.
[0042]
The restoration assigning unit 40 selects the secondary or primary restored to the module selected using a predetermined evaluation function under the constraint that the module that forms a pair with the primary and secondary that need restoration is not the same module. assign. The evaluation function in this case is the same as that used in the secondary allocation unit 36.
(1) Pseudorandom number
(2) Second function c (i, j)
(3) Third function cr (i, j)
Use one of the following.
[0043]
FIG. 3 shows actual data storage units 26-1 to 26- in the storage devices 24-1 to 24-4 of the four modules 10-1 to 10-4 that perform data allocation by the integrated management module 12 of FIG. 4 is an explanatory diagram of a slice area in FIG. In this example, the actual data storage units 26-1 to 26-4 are respectively provided with 10, 20, 30, and 40 slice areas in the order of modules 10-1 to 10-4.
[0044]
That is, the actual data storage unit 26-1 of the module 10-1 has ten slice areas with slice numbers # 1 to # 10, and the actual data storage unit 26-2 of the module 10-2 has slice numbers # 1 to ##. The real data storage section 26-3 of the module 10-3 has 30 slice areas of slice numbers # 1 to # 30, and further the real data storage section 26 of the module 10-4. -4 has 40 slice areas with slice numbers # 1 to # 40.
[0045]
In this example, the number of slice areas of the module is varied, but there is no problem even if the number of slice areas is the same. Of course, in the following description, all four modules 10-1 to 10-4 are designated as logical volume allocation targets.
[0046]
Furthermore, the unused ratios 25-1 to 25-4 of the slice regions in the respective modules 10-1 to 10-4 are shown in fractions in the upper right corner. In this unused ratio 25-1 to 25-4, the denominator is the total number of slices and the numerator is the number of unused slices. In the state shown in the figure, all slice areas are empty, so the numerator and denominator have the same numerical value. ing.
[0047]
FIG. 4 is an explanatory diagram of the slice information 42 that the integrated management module 12 has. FIG. 4A is an explanatory diagram when primary and secondary are not assigned to the slice area of FIG. 3, and modules 10-1 to 10- correspond to slice numbers # 1, # 2, # 3,. Module numbers M1, M2, M3, and M4 of 4 and the unused ratios in parentheses indicated by the respective fractions are shown. Since there is no storage of logical volumes, the storage areas are all empty.
[0048]
FIG. 4B is an explanatory diagram of the slice information 42 in the storage state of the primary Lp0 to Lp9 and the secondary Ls0 to Ls9 in the modules 10-1 to 10-4 of FIG. As is apparent from the slice information 42, the integrated management module 12 integrates all the module slice information of the modules 10-1 to 10-4 designated as logical volume allocation targets. Manage the allocation status of.
[0049]
FIG. 5 is an explanatory diagram of the logical volume of the client assigned to the modules 10-1 to 10-4 by the integrated management module 12 and the module slice information of the module 10-1 corresponding to the logical volume. FIG. 5A is an explanatory diagram of the logical volume 44 used on the client side, and segments L0 to L9 are arranged in the logical space in units of slices in the modules 10-1 to 10-4.
[0050]
Here, the logical volume 44 is divided into units of segments L0 to L9. FIG. 5B is an explanatory diagram of the module slice information 28 in the module 10-1 having the module number M1 corresponding to the slice information 42 of the integrated management module 12 in FIG. 4B. The module slice information 28 stored in the metadata storage unit 28-1 of the module 10-1 is
(1) Slice number
(2) Segment identifier
(3) Logical volume number
(4) Slice number that forms pairs belonging to the same segment
It has. LpX represents the Xth primary, and LsX represents the Xth secondary.
[0051]
For example, for the slice number # 1, the primary Lp0 is stored as a segment identifier, which is the position L0 in the logical volume 44 in FIG. 5A, that is, the first segment, and the secondary Ls0 that forms a pair with the primary Lp0. Slice information “M3 / # 3” is stored.
[0052]
The module slice information 28 as shown in FIG. 5B is stored in the metadata storage units 28-1 to 28-4 of the modules 10-1 to 10-4 shown in FIG. The integrated management module 12 stores the slice information storage unit 30, for example, the slice information 42 shown in FIG. 4 as information obtained by integrating the module slice information.
[0053]
Next, a first embodiment of the present invention will be described with reference to FIG. 6 and FIG. 7 in which logical volumes are duplicated and allocated to module slice areas. In the following description, there is a request for allocation of the logical module in units of segments shown in FIG. 5A from the client side, and 10 of the primary Lp0 to Lp9 and 10 of the secondary Ls0 to Ls9 are used for duplication. The case of assigning the modules to the modules 10-1 to 10-4 is taken as an example.
[0054]
In the first embodiment of the present invention, 10 primary Lp0 to Lp9 requiring allocation and 10 secondary Ls0 to Ls9 are allocated and allocated to each module. FIG. 6 shows a case where ten primary Lp0 to Lp9 are assigned to the modules 10-1 to 10-4 by round robin.
[0055]
That is, in the order of modules 10-1 to 10-4, first, primary Lp0 to Lp3 are sequentially assigned to the first slice area, and then primary Lp4 to Lp7 are sequentially assigned to the second slice area. Further, the remaining two primary Lp8 and Lp9 are allocated to the slice areas of the modules 10-1 to 10-2 in the third stage.
[0056]
FIG. 7 shows an allocation process of ten secondary Ls0 to Ls9 performed following FIG. The secondary Ls0 to Ls9 are assigned using, for example, a pseudo random number that is a first evaluation function.
[0057]
In the secondary assignment using this pseudo-random number, the module to which the secondary is assigned using the pseudo-random number is selected under the constraint that the module having the primary responsible for the same data area cannot be the same module. . Details of secondary allocation using the evaluation function will be made clear in the later description.
[0058]
8 to 10 are explanatory diagrams of a second embodiment of the present invention in which a logical volume is duplicated and assigned to slice areas of each module. In the second embodiment, a round robin is performed from a module having an unallocated slice area on the assumption that a necessary number of allocations are performed by allocating one secondary after allocating one primary. Assign with.
[0059]
As for the secondary, as in the case of the first embodiment, a module that uses a pseudo-random number as an evaluation function and assigns a secondary under the constraint that it does not become the same module as a module having a primary that is responsible for the same data area. Select.
[0060]
FIG. 8 shows the allocation of the first primary Lp0 and the secondary Ls0 in charge of the same data area. First, the primary Lp0 is allocated to the module 10-1, and then the secondary Ls0 is allocated to the module 10-2 by, for example, a pseudorandom number. assign.
[0061]
Subsequently, as shown in FIG. 9, primary Lp1 to Lp3 and secondary Ls1 to Ls3 are assigned alternately. That is, since the primary Lp1 is round robin, it is assigned to the second module 10-2, and the corresponding secondary Ls2 is assigned to, for example, the module 10-4 by a pseudo random number.
[0062]
The third primary Lp2 is assigned to the third module 10-3 in round robin. The secondary Ls2 corresponding to this is assigned to, for example, the module 10-4 by a pseudo random number. Further, the fourth primary Lp3 is assigned to the fourth module 10-4 by round robin, and the secondary Ls3 corresponding thereto is assigned to the module 10-3, for example, by a pseudo random number.
[0063]
FIG. 10 shows the assignment of the primary Lp4 to Lp9 and the secondary Ls4 to Ls9 to the modules 10-1 to 10-4 subsequent to FIG. For example, by using pseudo random numbers as the evaluation function, assignment to the modules 10-1 to 10-4 is performed as illustrated.
[0064]
FIG. 11 and FIG. 12 are explanatory diagrams of a third embodiment of the present invention in which logical volumes are duplicated and assigned to module slice areas. In the third embodiment, as in the second embodiment, the primary is allocated from the module with the largest number of unallocated slices on the premise of the alternate allocation in which one primary is allocated and then one secondary is allocated.
[0065]
On the other hand, the secondary is assigned to the selected module using a pseudo-random number that is the first evaluation function under the constraint that the module having the primary in charge of the same data area is not the same module.
[0066]
FIG. 11 shows an alternate assignment of primary Lp0 to Lp4 and secondary Ls0 to Ls4 in the third embodiment. That is, the primary Lp0 to Lp4 are assigned to the module 10-4 having the largest number of unassigned slices, and the secondary Ls0 to Ls4 corresponding to this are assigned to the modules 10-1 to 10-3 other than the module 26-4. It is assigned by a pseudo random number.
[0067]
FIG. 12 shows the alternate assignment of primary Lp5 to Lp9 and secondary Ls5 to Ls9 following FIG. Lp9 is assigned to the module 10-4. Further, the secondary Ls5 to Ls9 corresponding to this are assigned to the modules 10-1 to 10-3 other than the module 10-4 having the primary by selection using, for example, a pseudo random number.
[0068]
FIGS. 13 to 19 are explanatory diagrams of a fourth embodiment of the present invention in which logical volumes are duplicated and assigned to module slice areas. In the fourth embodiment, as in the second and third embodiments, on the premise of alternate allocation in which one primary is allocated and then one secondary is allocated, the ratio of the number of unallocated slices to the total number of slices for the primary, that is, The unused rate ar (i) given by the following equation is obtained and assigned from the module having the highest unused rate.
[0069]
Unused rate ar (i)
= (Number of remaining slices of module i) / (number of total slices of module i) (1)
Here, the value of the unused rate ar (i) is rounded off to the fourth decimal place in this example.
[0070]
FIG. 13 shows the allocation of the primary Lp0 in the fourth embodiment, and the unused rates ar (1) to ar (4) of the modules 10-1 to 10-4 at this time are as follows.
ar (1) = 1
ar (2) = 1
ar (3) = 1
ar (4) = 1
It becomes.
[0071]
That is, since the unused ratios of the modules 10-1 to 10-4 are all the same, the modules 10-1 are assigned in the order of modules as an additional selection condition. Therefore, the primary Lp0 is assigned to the module 10-1.
[0072]
For the secondary Ls0, the module 10-2 is selected and assigned by, for example, a pseudo random number from the modules 10-2 to 10-4 other than the module 10-1 in which the primary Lp0 responsible for the same data area is stored. At this point, the unused rate of modules 10-1 to 10-4 is
ar (1) = 0.9
ar (2) = 0.95
ar (3) = 1
ar (4) = 1
It becomes.
[0073]
This unused ratio value is used when the next primary Lp1 is assigned in FIG. That is, the primary Lp1 is assigned from the module 10-3 or the module 10-4 having a high unused rate. In this example, since the order of the modules is followed, the primary Lp1 is assigned to the module 10-3 and the secondary Ls1 is assigned. Is assigned to the module 10-4 as a module other than the module 10-3, for example, by a pseudo random number.
[0074]
The unused rate at this point is
ar (1) = 0.9
ar (2) = 0.95
ar (3) = 0.967
ar (4) = 0.975
The next primary Lp2 is assigned based on this unused rate.
[0075]
Since the module 10-4 has the highest usage rate when assigning the primary Lp2, the primary Lp2 is assigned thereto. The secondary Ls2 is assigned to a module other than the module 10-4, for example, the module 10-2.
[0076]
The unused rate at this time is
ar (1) = 0.9
ar (2) = 0.95
ar (3) = 0.933
ar (4) = 0.95
It becomes.
[0077]
Subsequently, as shown in FIG. 15, the primary Lp3 is assigned, but at this time, the module 10-2 or the module 10-4 has the highest unused ratio, and in this example, the modules are selected in the order of modules. To assign a primary Lp3 to the module 10-2.
[0078]
For the secondary Ls3, a module other than the module 10-2 is assigned to, for example, the module 10-3 by a pseudo random number.
[0079]
At this point, the unused rate of modules 10-1 to 10-4 is
ar (1) = 0.9
ar (2) = 0.9
ar (3) = 0.9
ar (4) = 0.95
It becomes.
[0080]
Subsequently, as shown in FIG. 16, when the primary Lp4 is an assignment target, the module 10-4 has the highest unused rate at this time, and therefore the primary Lp4 is assigned to the module 10-4. The secondary Ls4 is assigned to the module 10-3 by a module other than the module 10-4, for example, a pseudo random number.
[0081]
The unused rate of modules 10-1 to 10-4 at this point is
ar (1) = 0.9
ar (2) = 0.9
ar (3) = 0.867
ar (4) = 0.925
It becomes.
[0082]
Subsequently, as shown in FIG. 17, the primary Lp5 is set as an allocation target. At this time, since the unused rate of module 10-4 is the maximum, primary Lp5 is assigned to module 10-4. The secondary Ls5 is assigned to the module 10-2 by a module other than the module 10-4, for example, a pseudo random number.
[0083]
The unused rate of modules 10-1 to 10-4 at this point is
ar (1) = 0.9
ar (2) = 0.85
ar (3) = 0.867
ar (4) = 0.9
It becomes.
[0084]
Subsequently, the primary Lp6 is set as an allocation target in FIG. At this time, the unused ratio is maximized in the modules 10-1 and 10-4. In this case, the modules are assigned to the module 10-1 because they follow the order of the modules.
[0085]
The secondary Ls6 is allocated to the module 10-4 by a module other than the module 10-1, for example, a pseudo random number. The secondary Ls7 is assigned to the module 10-2 by a module other than the module 10-4, for example, a pseudo random number.
[0086]
The unused rate of modules 10-1 to 10-4 at this time is
ar (1) = 0.8
ar (2) = 0.85
ar (3) = 0.867
ar (4) = 0.875
It becomes.
[0087]
Subsequently, primary Lp7 is assigned in FIG. Here, since the module with the highest unused rate is the module 10-4, the primary Lp7 is assigned here.
[0088]
At this time, the unused rate of modules 10-1 to 10-4 is
ar (1) = 0.8
ar (2) = 0.8
ar (3) = 0.867
ar (4) = 0.85
It becomes.
[0089]
Subsequently, primary Lp8 is assigned in FIG. In this case, the primary Lp8 is stored in the module 10-3 having the maximum unused rate. The secondary is assigned to the module 10-1 by a pseudo random number.
[0090]
The unused rate at this point is
ar (1) = 0.7
ar (2) = 0.8
ar (3) = 0.833
ar (4) = 0.85
It becomes.
[0091]
Subsequently, the primary Lp9 is allocated. At this time, the module having the highest unused rate is the module 10-4, and therefore the primary Lp9 is allocated to the module 10-4.
[0092]
The secondary Ls9 is assigned to the module 10-2 by a pseudo random number. The work table 46 for which the unused ratio used in the allocation process of the fourth embodiment shown in FIGS. 13 to 19 is collectively shown in FIG.
[0093]
FIG. 21 is an explanatory diagram of the restoration process when the module 10-2 fails from the allocation state of FIG. When the module 10-2 fails, the five slices of the primary Lp1, Lp5, Lp9 and the secondary Ls2, Ls3 held at that time are lost.
[0094]
However, since the data in these slices is held in the other modules 10-1 to 10-4 by duplexing, the duplexing can be recovered by restoration processing.
[0095]
In duplication by this restoration, a copy is taken from a slice held by a normal module in charge of the same data area as a slice lost due to a failure, and restoration primary Lp1 ′, Lp5 ′, Lp9 ′ and restoration are performed. Secondary Ls2 'and Ls3' are generated and assigned to normal modules 10-1 to 10-4.
[0096]
In such duplication by restoration at the time of failure, the positions of the secondary Ls1, Ls5, Ls9 and the primary Lp2, Lp3 that are the copy sources are distributed to the normal modules 10-1, 10-3, 10-4. Since a specific module does not serve as a copy source, load distribution in a restoration process for duplication is attempted against a failure.
[0097]
The load distribution in the restoration of duplication at the time of a module failure depends on the use of the evaluation function for the secondary assignment at the time of the module assignment already described. Here, it will be examined how the secondary module is assigned with the round-robin evaluation function in the same manner as the primary without using the evaluation function for the secondary module allocation.
[0098]
FIG. 22 shows a case where the primary Lp0 to Lp9 are assigned to the modules 10-1 to 10-4 by round robin and then the secondary Ls0 and Ls9 are also assigned by round robin.
[0099]
In the case where the same round robin is assigned to the primary and secondary as shown in FIG. 22, if the module 10-2 fails as shown in FIG. 23, it is lost from the normal modules 10-1, 10-3, 10-4. A restoration process for restoring the primary and secondary and duplicating them is performed.
[0100]
However, all the copy sources in the restoration process in this case are only modules 10-4. In this case, the duplication process for restoring data takes time. Further, since the slice area of the module 10-4 cannot be used for duplication of the restoration data, the use efficiency of the storage space is poor.
[0101]
Therefore, in the present invention, in order to avoid that the copy source is concentrated on a specific module in the restoration process of duplication when a certain module fails,
(1) Pseudorandom number
(2) Second function c (i, j)
(3) Third function cr (i, j)
Module allocation is performed using either of these.
[0102]
Since the use of pseudorandom numbers as the evaluation function has already been described, the case where the second function and the third function are used as the evaluation function will be described below.
[0103]
24 to 26 are explanatory diagrams of allocation processing using the second function for secondary allocation. FIG. 24 is an explanatory diagram of selecting a module using the second function c (i, j) as the evaluation function after assigning the primary Lp0 to Lp9 by round robin in FIG.
[0104]
In FIG. 24, the secondary Ls0 is first assigned, but the function value c (i, 1) in the modules 10-2 to 10-4 other than the module 10-1 to which the primary Lp0 in charge of the same data area is assigned is
c (2,1) = 0
c (3,1) = 0
c (4,1) = 0
And the function values are the same.
[0105]
In this way, when the function value is the same, it may be assigned to any module, but in this example, when the value of the evaluation function is the same, it is assumed that the function is assigned to the larger number of unassigned slices.
[0106]
In this case, since the module 10-4 has the largest number of unallocated slices, the secondary Ls0 is allocated to the module 10-4. Next, the secondary Ls1, which is a pair of primary Lp1, is assigned.
[0107]
Since the primary Lp1 is assigned to the module 10-2, the other modules 10-1, 10-3, and 10-4 are to be assigned. In this case, the value c (i, 2) of each evaluation function is
c (1,2) = 0
c (3,2) = 0
c (4,2) = 0
It becomes.
[0108]
At this time, since the value of the evaluation function is the same, the module 10-4 having the largest number of unassigned slices is selected, and the secondary Ls1 is assigned to the module 10-4.
[0109]
Next, since the secondary Ls2 that is a pair of the primary Lp2 is an allocation target and the primary Lp2 is allocated to the module 10-3, the other modules 10-1, 10-2, and 10-4 are allocation targets. The value c (i, 3) of each evaluation function of
c (1,3) = 0
c (2,3) = 0
c (4,3) = 0
It becomes.
[0110]
At this time, since the value of the evaluation function is the same, the module 10-4 having the largest number of unassigned slices is selected, and the secondary Ls2 is assigned to the module 10-4.
[0111]
Subsequently, since the secondary Ls3, which is a pair of the primary Lp3, is the allocation target, and the primary Lp3 is allocated to the module 10-4, the other modules 10-1 to 10-3 are the allocation target, and each evaluation in this case The function value c (i, 4) is
c (1,4) = 1
c (2,4) = 1
c (3,4) = 1
It becomes.
[0112]
Also in this case, since the value of the evaluation function is the same, the module 10-3 having the largest number of unallocated slices is selected, and the secondary Ls3 is allocated. Subsequently, proceeding to FIG. 25, the secondary Ls4 to be paired with the primary Lp4 is assigned.
[0113]
Since the primary Lp4 is assigned to the module 10-1, the other modules 10-2 to 10-4 are to be assigned, and the value c (i, 1) of each evaluation function in this case is
c (2,1) = 0
c (3,1) = 0
c (4,1) = 1
It becomes.
[0114]
Of these, the modules 10-2 and 10-3 having the smallest evaluation function value are selected, but the module 10-3 having the largest number of unassigned slices is selected, and the secondary Ls4 is assigned to the module 10-3.
[0115]
Subsequently, the secondary Ls5 that is a pair of the primary Lp5 is assigned. The primary Lp5 is assigned to the module 10-2, and therefore the secondary is assigned to the other modules 10-1, 10-3, and 10-4.
[0116]
The value c (i, 2) of the evaluation function at this time is
c (1,2) = 0
c (3,2) = 0
c (4,2) = 1
It becomes.
[0117]
At this time, modules with small evaluation function values are 10-1 and 10-3, but the secondary Ls5 is allocated to the module 10-3 with the largest number of unallocated slices.
[0118]
Next, secondary Ls6 which becomes a pair of primary Lp6 is allocated. The primary Lp6 is assigned to the module 10-3, and is assigned to the other modules 10-1, 10-2 and 10-4.
[0119]
The value c (i, 3) of the evaluation function at this time is
c (1,3) = 1
c (2,3) = 1
c (4,3) = 1
Since all the evaluation function values are the same, the secondary Ls6 is assigned to the module 10-4 having the largest number of unassigned slices.
[0120]
Subsequently, the secondary Ls7 that becomes a pair of the primary Lp7 is allocated. The primary Lp7 is assigned to the module 10-4, and is assigned to the other modules 10-1 to 10-3.
[0121]
The value c (i, 4) of the evaluation function at this time is
c (1,4) = 1
c (2,4) = 1
c (3,4) = 3,
It becomes.
[0122]
Here, since the evaluation functions are the same for the modules 10-1 and 10-2, the secondary Ls7 is assigned to the module 10-2 having the largest number of unassigned slices. Subsequently, proceeding to FIG. 26, the allocation of the secondary Ls8 to be paired with the primary Lp8 is performed.
[0123]
The primary Lp8 is assigned to the module 10-1, and is assigned to the other modules 10-2 to 10-4. The value of the evaluation winding number c (i, 1) at this time is
c (2,1) = 0
c (3,1) = 1
c (4,1) = 1
It becomes.
[0124]
Therefore, the secondary Ls8 is assigned to the module 10-2 having the smallest evaluation function value. The secondary Ls9 that is the last primary Lp9 pair is assigned. The primary Lp9 is assigned to the module 10-2, and is assigned to the other modules 10-1, 10-3, and 10-4.
[0125]
The value c (i, 2) of the evaluation function at this time is
c (1,2) = 1
c (3,2) = 1
c (4,2) = 2
It becomes.
[0126]
Here, although the value of the evaluation function of the modules 10-1 and 10-3 is the smallest, the secondary Ls9 is allocated to the module 10-3 having a large number of unallocated slices. FIG. 27 shows a work table 48 for secondary assignment processing performed by obtaining the second evaluation function shown in FIGS.
[0127]
As shown in FIG. 26, when a failure occurs in any of the modules 10-1 to 10-4 after the primary and secondary assignments are completed, the number of slice areas serving as copy sources for the restoration processing for duplication is as follows. It can be seen that the load of reading data is distributed.
(1) Failure of module 10-1
Module 10-2 has one slice, module 10-3 has one slice, and module 10-4 has one slice.
(2) Failure of module 10-2
Module 10-1 has one slice, module 10-3 has two slices, and module 10-4 has two slices.
(3) Failure of module 10-3
Module 10-1 has 1 slice, module 10-2 has 2 slices, and module 10-4 has 3 slices.
(4) Failure of module 10-4
Module 10-1 has 1 slice, module 10-2 has 2 slices, and module 10-3 has 3 slices.
[0128]
Next, when the module 10-3 fails from the state of FIG. 26 and the third evaluation function cr (i, j) is used for module selection in allocation processing for restoring and duplicating data lost due to the failure. Are shown in FIGS.
[0129]
In FIG. 28, when the module 10-3 fails, the primary Lp2, Lp6 and the secondary Ls3, Ls4, Ls5, Ls9 lost due to the failure must be restored.
[0130]
At this time, the secondary Ls2, Ls6 and the primary Lp3, Lp4, Lp5, Lp9 which are the copy sources necessary for data restoration are the module 10-4, the module 10-4, the module 10-4, the module 10-1, and the module 10-, respectively. 2 exists in the module 10-2.
[0131]
Therefore, the failure is sequentially restored from the first pair of slices of the failed module 10-3, and the value cr (i, j) of the third function is used as the evaluation function for module selection at that time. First, since the secondary Ls2 as a copy source for restoring the primary Lp2 ′ exists on the module 10-4, the value cr (i, 4) of the evaluation function is obtained.
cr (1,4) = c (1,4) /10=1/10=0.1
cr (2,4) = c (2,4) /20=2/20=0.1
It becomes.
[0132]
Here, the module with the smallest value of the evaluation function is selected. In this case, since it is the same value, one of the modules having the same value can be arbitrarily selected. select. Therefore, the module 10-2 is assigned, and the primary Lp2 ′ obtained by copying is assigned to the module 10-2.
[0133]
Next, the primary Lp6 ′ is restored. Since the copy source secondary Ls6 exists on the module 10-4, the value cr (i, 4) of the evaluation function is obtained.
cr (1,4) = c (1,4) /10=0.1
cr (2,4) = c (2,4) /20=3/20=0.15
It becomes.
[0134]
Here, the module 10-1 having the smallest evaluation function value is selected, and the primary Lp6 ′ designated by the copy is assigned. Subsequently, the secondary Ls3 ′ is restored. Since the primary Lp3 that is the copy source for this exists on the module 10-4, the value cr (i, 4) of the evaluation function is obtained.
cr (1,4) = c (1,4) /10=2/10=0.2
cr (2,4) = c (2,4) /20=3/20=0.15
It becomes.
[0135]
At this time, since the module 10-2 has the smallest evaluation function value, the secondary Ls3 ′ restored by copying is allocated to the module 10-2. Subsequently, proceeding to FIG. 29, the secondary Ls4 ′ is restored.
[0136]
Since the primary Lp4 that is the copy source for this exists on the module 10-1, the value cr (i, 1) of the evaluation function is obtained.
cr (2,1) = c (2,1) /20=1/20=0.05
cr (4,1) = c (4,1) /40=2/40=0.05
It becomes.
[0137]
In this case, since the value of the evaluation function is the same, the secondary Ls4 ′ restored by copying is allocated to the module 10-4 having a large number of unallocated slices. Next, the secondary Ls5 ′ is restored.
[0138]
Since the primary Lp5 that is the copy source for this exists on the module 10-2, the value cr (i, 2) of the evaluation function is obtained.
cr (1,2) = c (1,2) /10=1/10=0.1
cr (4,2) = c (4,2) /40=4/40=0.1
It becomes.
[0139]
Also in this case, since the value of the evaluation function is the same, the secondary Ls5 ′ restored by copying is allocated to the module 10-4 having a large number of unallocated slices. Finally, the secondary Ls9 ′ is restored.
[0140]
Since the primary Lp9 as the copy source for this exists on the module 10-2, the value cr (i, 2) of the evaluation function is obtained.
cr (1,2) = c (1,2) /10=1/10=0.1
cr (4,2) = c (4,2) /40=5/40=0.125
It becomes.
[0141]
In this case, the module 10-1 having the smaller evaluation function value is selected, and the secondary Ls9 ′ restored by copying is assigned thereto.
[0142]
FIG. 30 is an explanatory diagram of the work table 50 in the duplexing restoration process performed using the second evaluation function cr (i, j) according to FIGS. 28 and 29. In the restoration processing for duplicating data when the module 10-3 in FIGS. 28 and 29 fails, the number of slices read by the normal modules 10-1, 10-2, and 10-4 and the writing are written. The number of slices and the total are as follows.
(1) Number of read slices
Module 10-1 is 1 slice, Module 10-2 is 2 slices, Module 10-4 is 3 slices
(2) Number of write slices
Module 10-1 has 2 slices, module 10-2 has 2 slices, module 10-4 has 2 slices
(3) Total number of reading slices
Module 10-1 is 3 slices, Module 10-2 is 4 slices, Module 10-4 is 5 slices
In this way, the load on each module can also be distributed in the restoration process in the duplex for module failure.
[0143]
In the above embodiment, the case where a pseudo random number and the second evaluation function c (i, j) are used for module selection at the time of secondary allocation is taken as an example, but the third evaluation function cr (i , J) may of course be used.
[0144]
In the above embodiment, the case where the third evaluation function cr (i, j) is used for the module selection in the duplex restoration process when the module fails is taken as an example. Instead, a pseudo random number is used. Of course, the second evaluation function c (i, j) may be used.
[0145]
FIG. 31 is a flowchart of the data allocation processing of the present invention by the processing function provided in the control device 22-5 of the integrated management module 12 shown in FIG.
[0146]
In FIG. 31, when the system is started, first, in step S1, the integrated management module 12 is initialized and slice information is collected from the modules 10-1 to 10-4 to create slice information 42 as shown in FIG. To do. Subsequently, the presence or absence of a module failure is detected in step S2, and if there is no module failure, it is checked in step S3 whether there is an external request.
[0147]
If there is an external request, the process proceeds to step S4. After receiving the external request, logical volume allocation processing is executed in step S5. On the other hand, when a failure of the module, which is step S2, is detected, the process proceeds to step S6, and a restoration process by data duplication is performed.
[0148]
FIG. 32 is a detail of the logical volume assignment process in step S5 of FIG. 31, and is a flowchart of the assignment process of the first embodiment shown in FIGS. 6 and 7 according to the present invention.
[0149]
In the logical volume allocation processing in the first embodiment, after calculating the required number of slices from the size requested in step S1, all primaries are allocated to modules in round robin in step S2.
[0150]
Subsequently, in step S3, a module to which one secondary is allocated is selected by the evaluation function, and the secondary is allocated. The secondary allocation in step S3 is repeated one by one until the required allocation number is reached in step S4, and the series of allocation processes is completed.
[0151]
FIG. 33 is a detail of the logical volume allocation process S5 of FIG. 31, and is a flowchart of the allocation process in the second embodiment of the present invention shown in FIGS.
[0152]
In the allocation process of the second embodiment, after calculating the required number of slices from the size requested in step S1, one primary is allocated to the module in round robin in step S2, and then in step S3 the primary A module for allocating one secondary to be paired is selected by the evaluation function, and the secondary is allocated.
[0153]
Subsequently, in step S4, it is checked whether or not the necessary number of primary and secondary pairs are allocated, and the processes in steps S2 and S3 are repeated until the necessary number is allocated.
[0154]
FIG. 34 shows details of step S5 in the logical volume assignment process of FIG. 31, and is a flowchart of the assignment process according to the third embodiment of the present invention shown in FIGS.
[0155]
In the allocation processing of the third embodiment, after calculating the required number of slices from the size requested in step S1, after assigning one primary to the module having the largest number of unallocated slices in step S2, In S3, a module for assigning one secondary as a pair of the primary is selected and assigned by the evaluation function. Subsequently, in step S4, it is checked whether or not the necessary number of primary and secondary pairs is allocated, and the processes in steps S2 and S3 are repeated until the necessary number is allocated.
[0156]
FIG. 35 shows details of the logical volume assignment processing in step S5 of FIG. 31, and is a flowchart of the assignment processing of the fourth embodiment of the present invention shown in FIGS.
[0157]
In the allocation process of the fourth embodiment, after calculating the required number of slices from the size requested in step S1, one primary is allocated to the module with the highest unallocated ratio ar (i) in step S2. .
[0158]
Subsequently, in step S3, a module to which one secondary to be the primary pair is assigned is selected and assigned by the evaluation function. Subsequently, in step S4, it is checked whether or not the necessary number of primary and secondary pairs has been allocated. If not, the processes in steps S2 and S3 are repeated until the necessary number is allocated.
[0159]
FIG. 36 is a flowchart showing details of the data duplication recovery process at the time of module failure detection in step S6 of FIG. 36, after identifying the failed module in step S1, the primary and secondary assigned to the failed module, that is, the primary and secondary lost due to the failure are listed in step S2. .
[0160]
Subsequently, the assigned primary and secondary listed in step S3, that is, the primary and secondary pairs lost due to the failure are listed. Subsequently, the pair reassignment process listed in step S4 is executed one by one.
[0161]
FIG. 37 is a flowchart of the reallocation process in step 4 of FIG. In this reallocation process, in step S1, an allocation module for data restoration is selected by the evaluation function and allocated, and then in step S2, it is checked whether the necessary number has been allocated, and the process in step S1 is repeated until the necessary number is allocated.
[0162]
The present invention includes appropriate modifications that do not impair the objects and advantages thereof, and is not limited by the numerical values shown in the above-described embodiments.
[0163]
Here, the features of the present invention are enumerated as follows.
(Appendix)
(Appendix 1)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage device and the communication device;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step in which primary slice data is allocated to a module having an unallocated slice area one by one in a round-robin manner;
A secondary allocation step for allocating as many secondary slice data as necessary to a module selected by a predetermined evaluation function under a constraint that the module does not become the same module as a module having primary slice data in charge of the same data area;
A data allocation method characterized by comprising: (1)
[0164]
(Appendix 2)
In the data allocation method of Appendix 1,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when a specific module fails,
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
A data allocation method characterized by comprising: (2)
[0165]
(Appendix 3)
The data allocation method according to appendix 1 or 2, wherein the secondary allocation step uses a pseudo-random number as the evaluation function.
[0166]
(Appendix 4)
In the data allocation method according to appendix 1 or 2, in the secondary allocation step, the module j having a primary slice data paired with the secondary slice data to be allocated is paired with the module j as the evaluation function. When a function that returns the best value for a module with a small number of slice data to be assembled is used, and the best value of the function is in a plurality of modules, one of the plurality of modules is secondary slice data in a predetermined procedure. A data allocation method characterized by selecting the allocation module.
[0167]
(Appendix 5)
In the data allocation method according to attachment 1 or 2, in the secondary allocation step, the module j having the primary slice data paired with the secondary slice data to be allocated as the evaluation function is paired with the module j. If the function that returns the best value for a module with a small ratio of the number of slice data forming the module to the total number of slices is used, and the best value of the function is in a plurality of modules, A data allocation method, wherein one of them is selected as an allocation module for secondary slice data.
[0168]
(Appendix 6)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage unit and the communication unit;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step of allocating the primary slice data in a round robin manner from a module having an unallocated slice area, in a procedure of allocating a required number by allocating one secondary slice data after allocating one primary slice data;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A data allocation method characterized by comprising: (3)
[0169]
(Appendix 7)
In the data allocation method of appendix 6,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
A data allocation method characterized by comprising: (4)
[0170]
(Appendix 8)
The data allocation method according to appendix 6 or 7, wherein the secondary allocation step uses a pseudo-random number as the evaluation function.
[0171]
(Appendix 9)
In the data allocation method according to appendix 6 or 7, in the secondary allocation step, the module j having a primary slice data paired with the secondary slice data to be allocated is paired with the module j as the evaluation function. When a function that returns the best value for a module with a small number of slice data to be assembled is used, and the best value of the function is in a plurality of modules, one of the plurality of modules is secondary slice data in a predetermined procedure. A data allocation method characterized by selecting the allocation module.
[0172]
(Appendix 10)
In the data allocation method according to appendix 6 or 7, in the secondary allocation step, the module j having the primary slice data paired with the secondary slice data to be allocated as the evaluation function is paired with the module j. If the function that returns the best value for a module with a small ratio of the number of slice data forming the module to the total number of slices is used, and the best value of the function is in a plurality of modules, A data allocation method, wherein one of them is selected as an allocation module for secondary slice data.
[0173]
(Appendix 11)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage device and the communication device;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
The module with the largest number of unassigned slices among the modules with unassigned slice areas in the procedure of assigning the required number of pieces by assigning one secondary slice data after assigning one primary slice data A primary assignment step assigned from
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A data allocation method characterized by comprising: (5)
[0174]
(Appendix 12)
In the data allocation method of Appendix 11,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
A data allocation method characterized by comprising: (6)
[0175]
(Appendix 13)
The data allocation method according to appendix 10 or 11, wherein the secondary allocation step uses a pseudo-random number as the evaluation function.
[0176]
(Appendix 14)
In the data allocation method according to appendix 10 or 11, in the secondary allocation step, the module j having a primary slice data paired with the secondary slice data to be allocated is paired with the module j as the evaluation function. When a function that returns the best value for a module with a small number of slice data to be assembled is used, and the best value of the function is in a plurality of modules, one of the plurality of modules is secondary slice data in a predetermined procedure. A data allocation method characterized by selecting the allocation module.
[0177]
(Appendix 15)
In the data allocation method according to appendix 10 or 11, in the secondary allocation step, the module j having the primary slice data paired with the secondary slice data to be allocated as the evaluation function is paired with the module j. If the function that returns the best value for a module with a small ratio of the number of slice data forming the module to the total number of slices is used, and the best value of the function is in a plurality of modules, A data allocation method, wherein one of them is selected as an allocation module for secondary slice data.
[0178]
(Appendix 16)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage device and the communication device;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
This is a procedure to allocate the required number of secondary slice data by allocating one secondary slice data after allocating one primary slice data, and allocate the primary slice data from the module with the largest ratio of unassigned slices to the total number of slices A primary assignment step;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A data allocation method characterized by comprising: (7)
[0179]
(Appendix 17)
In the data allocation method of appendix 16,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
A data allocation method characterized by comprising: (8)
[0180]
(Appendix 18)
The data allocation method according to appendix 16 or 17, wherein the secondary allocation step uses a pseudo-random number as the evaluation function.
[0181]
(Appendix 19)
In the data allocation method of supplementary note 16 or 17, in the secondary allocation step, the module j having a primary slice data paired with the secondary slice data to be allocated is paired with the module j as the evaluation function. When a function that returns the best value for a module with a small number of slice data to be assembled is used, and the best value of the function is in a plurality of modules, one of the plurality of modules is secondary slice data in a predetermined procedure. A data allocation method characterized by selecting the allocation module.
[0182]
(Appendix 20)
In the data allocation method according to supplementary note 16 or 17, in the secondary allocation step, the module j having the primary slice data paired with the secondary slice data to be allocated as the evaluation function is paired with the module j. If the function that returns the best value for a module with a small ratio of the number of slice data forming the module to the total number of slices is used, and the best value of the function is in a plurality of modules, A data allocation method, wherein one of them is selected as an allocation module for secondary slice data.
[0183]
(Appendix 21)
To the computer of the integrated management module that duplicates and manages slice data stored in slice units in the storage device of multiple modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step in which primary slice data is allocated to a module having an unallocated slice area one by one in a round-robin manner;
A secondary allocation step for allocating as many secondary slice data as necessary to a module selected by a predetermined evaluation function under a constraint that the module does not become the same module as a module having primary slice data in charge of the same data area;
A program characterized by having executed. (9)
[0184]
(Appendix 22)
To the computer of the integrated management module that duplicates and manages slice data stored in slice units in the storage device of multiple modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
A primary allocation step of allocating the primary slice data in a round robin manner from a module having an unallocated slice area, in a procedure of allocating a required number by allocating one secondary slice data after allocating one primary slice data;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A program characterized by having executed.
[0185]
(Appendix 23)
To the computer of the integrated management module that duplicates and manages slice data stored in slice units in the storage device of multiple modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
The module with the largest number of unassigned slices among the modules with unassigned slice areas in the procedure of assigning the required number of pieces by assigning one secondary slice data after assigning one primary slice data A primary assignment step assigned from
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A program characterized by having executed.
[0186]
(Appendix 24)
To the computer of the integrated management module that duplicates and manages slice data stored in slice units in the storage device of multiple modules,
An allocation target selection step of selecting a module group having storage devices in a specified range as an allocation target of slice data;
This is a procedure to allocate the required number of secondary slice data by allocating one secondary slice data after allocating one primary slice data, and allocate the primary slice data from the module with the largest ratio of unassigned slices to the total number of slices A primary assignment step;
A secondary allocation step of assigning secondary slice data to a module selected by a predetermined evaluation function under a constraint that the module is not the same as a module having primary slice data in charge of the same data area;
A program characterized by having executed.
[0187]
(Appendix 25)
In the program of any one of appendices 21 to 24,
A restoration target selection step for selecting a normal module group as an allocation target for restoring and duplicating lost slice data when slice data is lost due to a failure of a specific module;
A restoration assignment step for assigning slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as the module having slice data to form a pair;
A program characterized by having executed.
[0188]
(Appendix 26)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage device and the communication device;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In a storage system consisting of
In the integrated management module,
An allocation target selection unit that selects a group of modules having storage devices in a specified range as slice data allocation targets;
A primary allocation unit that allocates primary slice data to a module having an unallocated slice area one by one in round robin,
A secondary allocation unit that allocates the necessary number of secondary slice data to the module selected by the predetermined evaluation function under the constraint that the module having the primary slice data in charge of the same data area is not the same module,
A storage system characterized by providing (10)
[0189]
(Appendix 27)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage device and the communication device;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In a storage system consisting of
In the integrated management module,
An allocation target selection unit that selects a group of modules having storage devices in a specified range as slice data allocation targets;
A primary allocation unit that allocates the primary slice data from a module having an unallocated slice area in a round-robin manner in a procedure of allocating a required number by allocating one secondary slice data after allocating one primary slice data;
A secondary allocation unit that allocates secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area;
A storage system characterized by providing
[0190]
(Appendix 28)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage unit and the communication unit;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In a storage system consisting of
In the integrated management module,
An allocation target selection unit that selects a group of modules having storage devices in a specified range as slice data allocation targets;
The module with the largest number of unassigned slices among the modules with unassigned slice areas in the procedure of assigning as many secondary slice data as necessary after assigning one primary slice data. A primary assignment unit assigned from
A secondary allocation unit that allocates secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area;
A storage system characterized by providing
[0191]
(Appendix 29)
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules A plurality of modules including a device, a communication device that communicates with another external module, and a control device that controls the storage unit and the communication unit;
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In a storage system consisting of
In the integrated management module,
An allocation target selection unit that selects a group of modules having storage devices in a specified range as slice data allocation targets;
This is a procedure that allocates as many secondary slice data as necessary after allocating one primary slice data, and allocates the primary slice data from the module with the largest ratio of the number of unassigned slices to the total number of slices in the module. A primary allocator;
A secondary allocation unit that allocates secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area;
A storage system characterized by providing
[0192]
(Appendix 30)
In the storage system according to any one of appendices 26 to 29,
When slice data is lost due to a failure of a specific module, a restoration target selection unit that selects a normal module group as an assignment target to restore and duplicate the lost slice data;
A restoration allocation unit that assigns slice data to be restored to a module selected using a predetermined evaluation function under a constraint that the module does not become the same module as a module having slice data to form a pair;
A storage system characterized by providing
[0193]
【The invention's effect】
As described above, according to the present invention, when allocating a logical volume to be stored in units of slices to a storage device of a plurality of modules in duplicate, the volume assignment is not fixed to the primary and secondary that are duplicated. It can be allocated and the lost data can be recovered using the normal module that remains if a module fails.
[0194]
In addition, in the event of a module failure when allocating a logical volume in units of slices, the restoration data by duplication is assigned so that the copy source module does not concentrate on a specific module, so load distribution during duplication data restoration processing is performed in advance be able to.
[0195]
In addition, in the restoration process for duplication when data is lost due to any module failure, restoration is performed by appropriately reallocating the restoration data so that the copy source does not concentrate on the specific module at the time of restoration in the subsequent module failure Load distribution can be performed in advance for subsequent module failures.
[Brief description of the drawings]
FIG. 1 is an explanatory diagram of a storage system to which the present invention is applied
FIG. 2 is a block diagram of a functional configuration of the integrated management module in FIG.
FIG. 3 is an explanatory diagram of slice areas in a storage device of four modules that perform data allocation by the integrated management module.
FIG. 4 is an explanatory diagram of slice information held by the integrated management module
FIG. 5 is an explanatory diagram of logical volumes allocated by the integrated management module.
FIG. 6 is an explanatory diagram of a first embodiment of the present invention in which a logical volume is duplicated and assigned to a slice area of a module.
FIG. 7 is an explanatory diagram of allocation processing following FIG.
FIG. 8 is an explanatory diagram of a second embodiment of the present invention in which a logical volume is duplicated and assigned to a slice area of a module.
FIG. 9 is an explanatory diagram of allocation processing following FIG.
FIG. 10 is an explanatory diagram of allocation processing following FIG. 9;
FIG. 11 is an explanatory diagram of a third embodiment of the present invention in which a logical volume is duplicated and assigned to a slice area of a module.
FIG. 12 is an explanatory diagram of allocation processing following FIG.
FIG. 13 is an explanatory diagram of a fourth embodiment of the present invention in which a logical volume is duplicated and assigned to a slice area of a module.
FIG. 14 is an explanatory diagram of allocation processing following FIG.
FIG. 15 is an explanatory diagram of allocation processing following FIG.
FIG. 16 is an explanatory diagram of allocation processing following FIG.
FIG. 17 is an explanatory diagram of allocation processing following FIG.
FIG. 18 is an explanatory diagram of allocation processing following FIG.
FIG. 19 is an explanatory diagram of allocation processing following FIG.
FIG. 20 is an explanatory diagram of a work table used in the assignment process of FIGS. 13 to 19;
FIG. 21 is an explanatory diagram of restoration processing when a module 10-2 fails
FIG. 22 is an explanatory diagram of allocation processing in which both primary and secondary logical modules are allocated in round robin.
FIG. 23 is an explanatory diagram showing a problem of load concentration in the restoration process when the module 10-2 fails after the assignment shown in FIG.
FIG. 24 is an explanatory diagram of secondary logical volume allocation processing using the second evaluation function;
FIG. 25 is an explanatory diagram of allocation processing following FIG. 24;
FIG. 26 is an explanatory diagram of allocation processing following FIG.
FIG. 27 is an explanatory diagram of a work table used in the assignment process of FIGS. 24 to 26;
FIG. 28 is an explanatory diagram of secondary logical volume allocation processing using a third evaluation function;
FIG. 29 is an explanatory diagram of allocation processing following FIG.
30 is an explanatory diagram of a work table used in the allocation process of FIGS. 28 and 29;
31 is a flowchart of data allocation processing of the present invention by the integrated management module of FIG. 2;
FIG. 32 is a flowchart showing logical volume allocation processing according to the first embodiment of the present invention as details of step S5 of FIG. 31;
FIG. 33 is a flowchart showing logical volume allocation processing according to the second embodiment of the present invention as details of step S5 of FIG. 31;
FIG. 34 is a flowchart showing logical volume allocation processing according to the third embodiment of the present invention as details of step S5 of FIG. 31;
FIG. 35 is a flowchart showing logical volume allocation processing according to the fourth embodiment of the present invention as details of step S5 of FIG. 31;
FIG. 36 is a flowchart showing details of step S6 in FIG.
FIG. 37 is a flowchart showing details of step S1 in FIG.
[Explanation of symbols]
10-1 to 10-4: Module
12: Integrated management module
14: Hub
16: Network
18-1 to 18-5: Client
20-1 to 20-5: Communication device
22-1 to 22-5: Control device
24-1 to 24-5: Storage device
26-1 to 26-4: Actual data storage unit
28-1 to 28-4: Metadata storage unit
30: Slice information storage unit
32: Assignment target selection part
34: Primary allocation unit
36: Secondary allocation unit
38: Restoration target selection unit
40: Restoration allocation unit
42: Slice information
44: Logic module

Claims (10)

スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置及び前記通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として前記統合管理モジュールの割当対象選択手段が選択する割当対象選択ステップと、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対して前記統合管理モジュールのプライマリ割当手段がひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
セカンダリスライスデータを、同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールのセカンダリ割当手段が所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を備え、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか、又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択することを特徴とするデータ割当方法。
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules a device, a plurality of modules that includes a communication device that communicates with an external another module, and a control unit for controlling the storage device and the communication device,
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step in which the allocation target selection unit of the integrated management module selects a group of modules having storage devices in a specified range as allocation targets of slice data; and
A primary allocation step in which the primary allocation means of the integrated management module allocates the required number of round slices to the modules having the unallocated slice area for the primary slice data one by one;
Under the constraint that the secondary slice data is not the same module as the module having the primary slice data in charge of the same data area, the secondary allocation means of the integrated management module is required for the module selected by the predetermined evaluation function Secondary allocation step to allocate a certain number of times,
With
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired or use a function that returns a c (i, j), selects one of a plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules as an assignment module in the secondary slice data Or ( b ) For the module j having primary slice data paired with the secondary slice data to be allocated as the evaluation function, the total number of slices of the module corresponding to the number of slice data among the modules paired with the module j The value cr (i, j) that makes the module having the smallest ratio to the best value Use the to function, data allocation, wherein the selected child one as an assignment module for the secondary slice data of the plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules Method.
請求項1のデータ割当方法に於いて、更に、
特定のモジュールが故障した際に、失われたスライスデータを前記故障したモジュール以外から復元して二重化する割当対象として前記統合管理モジュールの復元対象選択手段が正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールの復元割当手段が前記所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
The data allocation method of claim 1, further comprising:
Restoration target selection step in which the restoration target selection means of the integrated management module selects a normal module group as an allocation target for restoring and duplicating lost slice data from other than the failed module when a specific module fails When,
The restoration allocation unit of the integrated management module allocates the slice data to be restored to the module selected using the predetermined evaluation function under the constraint that the module does not become the same module as the module having the slice data forming a pair. A restoration assignment step;
A data allocation method characterized by comprising:
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置及び通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として前記統合管理モジュールの割当対象選択手段が選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記統合管理モジュールのプライマリ割当手段が前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールのセカンダリ割当手段が所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備え、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか、又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択することを特徴とするデータ割当方法。
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules a device, a plurality of modules that includes a communication device that communicates with an external another module, and a control unit for controlling the storage device and a communication device,
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step in which the allocation target selection unit of the integrated management module selects a group of modules having storage devices in a specified range as allocation targets of slice data; and
In the procedure of allocating as many as necessary by allocating one secondary slice data after allocating one primary slice data, the primary allocation means of the integrated management module starts from a module having an unallocated slice area. A primary assignment step assigned round-robin;
A secondary allocation unit that assigns secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area. An assignment step;
With
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired or use a function that returns a c (i, j), selects one of a plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules as an assignment module in the secondary slice data Or ( b ) For the module j having primary slice data paired with the secondary slice data to be allocated as the evaluation function, the total number of slices of the module corresponding to the number of slice data among the modules paired with the module j The value cr (i, j) that makes the module having the smallest ratio to the best value Use the to function, data allocation, wherein the selected child one as an assignment module for the secondary slice data of the plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules Method.
請求項3のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、前記統合管理モジュールの復元対象選択手段が失われたスライスデータを前記故障したモジュール以外から復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、 復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールの復元割当手段が前記所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
The data allocation method according to claim 3, further comprising:
When slice data is lost due to a failure of a specific module, the restoration target selecting means of the integrated management module restores the lost slice data from other than the failed module and duplexes the normal module group as an assignment target. Under the constraint that the restoration target selection step to be selected and the slice data to be restored are not the same module as the module having the slice data to be paired, the restoration allocation means of the integrated management module calculates the predetermined evaluation function. A restoration assignment step to assign to the selected module using:
A data allocation method characterized by comprising:
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置及び通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割り当て方法に於いて、
指定された範囲のストレージ装置を持つモジュール群を前記統合管理モジュールの割当対象選択手段がスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち前記統合管理モジュールのプライマリ割当手段が未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールのセカンダリ割当手段が所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備え、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択することを特徴とするデータ割当方法。
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules a device, a plurality of modules that includes a communication device that communicates with an external another module, and a control unit for controlling the storage device and a communication device,
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method consisting of
An allocation target selection step in which the allocation target selection unit of the integrated management module selects a module group having storage devices in a specified range as slice data allocation targets;
In the procedure of allocating the required number of secondary slice data by allocating one secondary slice data after allocating one primary slice data, the primary allocation means of the integrated management module among the modules having unallocated slice areas is A primary allocation step to allocate from the module with the largest number of unallocated slices;
A secondary allocation unit that assigns secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area. An assignment step;
With
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired If a function that returns c (i, j) is used and the best value of this function is in a plurality of modules, whether one of the modules is selected as a secondary slice data allocation module in a predetermined procedure or (ii) as an evaluation function, the module j with a primary slice data Crossed secondary slice data paired with the assignments subject, the total number of slices in the number of modules of slice data among the modules Crossed module j pairs The value cr (i, j) that makes the module with the smallest ratio to the best value Use the to function, data allocation, wherein the selected child one as an assignment module for the secondary slice data of the plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules Method.
請求項5のデータ割当方法に於いて、更に、
前記統合管理モジュールの復元対象選択手段が特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを前記故障したモジュール以外から復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールの復元割当手段が前記所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
The data allocation method of claim 5, further comprising:
When the restoration target selection unit of the integrated management module loses slice data due to a failure of a specific module, a normal module group is assigned as an assignment target for restoring and duplicating the lost slice data from other than the failed module. A restoration target selection step to select;
The restoration allocation unit of the integrated management module allocates the slice data to be restored to the module selected using the predetermined evaluation function under the constraint that the module does not become the same module as the module having the slice data forming a pair. A restoration assignment step;
A data allocation method characterized by comprising:
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置及び通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムのデータ割当方法に於いて、
指定された範囲のストレージ装置を持つモジュール群を前記統合管理モジュールの割当対象選択手段がスライスデータの割当対象として選択する割当対象選択ステップと、
プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、前記統合管理モジュールのプライマリ割当手段がプライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールのセカンダリ割当手段が所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、
を備え、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むモジュールのうちプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択することを特徴とするデータ割当方法。
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules a device, a plurality of modules that includes a communication device that communicates with an external another module, and a control unit for controlling the storage device and a communication device,
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In the storage system data allocation method composed of
An allocation target selection step in which the allocation target selection unit of the integrated management module selects a module group having storage devices in a specified range as slice data allocation targets;
This is a procedure for allocating the necessary number of secondary slice data by allocating one secondary slice data after allocating one primary slice data, wherein the primary allocation means of the integrated management module assigns the primary slice data to the unassigned slice for the total number of slices of the module. A primary allocation step that allocates from the module with the largest percentage,
A secondary allocation unit that assigns secondary slice data to a module selected by a predetermined evaluation function under the constraint that the module does not become the same module as the module having primary slice data in charge of the same data area. An assignment step;
With
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired or use a function that returns a c (i, j), selects one of a plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules as an assignment module in the secondary slice data or (ii) as an evaluation function, the module j with a primary slice data among the modules Crossed secondary slice data paired with the assignments subject, the total number of slices in the number of modules of the slice data Crossed module j pairs The value cr (i, j) that makes the module with the smallest ratio to the best value Use the to function, data allocation, wherein the selected child one as an assignment module for the secondary slice data of the plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules Method.
請求項7のデータ割当方法に於いて、更に、
特定のモジュールの故障によりスライスデータが失われた際に、前記統合管理モジュールの復元対象選択手段が失われたスライスデータを前記故障したモジュール以外から復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、前記統合管理モジュールの復元割当手段が前記所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
を備えたことを特徴とするデータ割当方法。
The data allocation method according to claim 7, further comprising:
When slice data is lost due to a failure of a specific module, a restoration target selection unit of the integrated management module restores the lost slice data from other than the failed module and duplexes the normal module group as an assignment target. A restoration target selection step to select;
The restoration allocation unit of the integrated management module allocates the slice data to be restored to the module selected using the predetermined evaluation function under the constraint that the module does not become the same module as the module having the slice data forming a pair. A restoration assignment step;
A data allocation method characterized by comprising:
複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
前記統合管理モジュールの割当対象選択手段が指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
前記統合管理モジュールのプライマリ割当手段がプライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
前記統合管理モジュールのセカンダリ割当手段がセカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
を実行させ、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールに選択することを特徴とするプログラム。
To the computer of the integrated management module that duplicates and manages slice data stored in slice units in the storage device of multiple modules,
An allocation target selection step of selecting a module group having storage devices in a range in which the allocation target selection means of the integrated management module is specified as slice data allocation targets;
A primary allocation step in which the primary allocation means of the integrated management module allocates the required number of round slices to the modules having the unallocated slice area, the primary slice data one by one,
The secondary allocation means of the integrated management module is necessary for the module selected by the predetermined evaluation function under the constraint that the secondary slice data is not the same module as the module having the primary slice data in charge of the same data area. A secondary allocation step to allocate a few minutes;
And execute
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired If a function that returns c (i, j) is used and the best value of this function is in a plurality of modules, whether one of the modules is selected as a secondary slice data allocation module in a predetermined procedure or (ii) as an evaluation function, the module j with a primary slice data Crossed secondary slice data paired with the assignments subject, the total number of slices in the number of modules of slice data among the modules Crossed module j pairs The value cr (i, j) that makes the module with the smallest ratio to the best value Use the to function, the program characterized by a selection child one to the allocation module of the secondary slice data of the plurality of modules in a predetermined procedure in the case where the best value is in multiple modules of this function.
スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置及び通信装置を制御する制御装置とを備えた複数のモジュールと、
前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
で構成されるストレージシステムに於いて、
前記統合管理モジュールに、
指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、
セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部と、
を設け、
前記所定の評価関数は、
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数の少ないモジュールを最良とする値c(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択するか又は
)評価関数として、割当対象であるセカンダリスライスデータとペアを組むプライマリスライスデータを持つモジュールjに対して、モジュールjとペアを組むモジュールのうちスライスデータの数のモジュールの全スライス数に対する割合が少ないモジュールを最良とする値cr(i,j)を返す関数を使用し、この関数の最良値が複数のモジュールにある場合には所定の手順で複数のモジュールのうちの1つをセカンダリスライスデータの割当モジュールとして選択することを特徴とするストレージシステム。
A storage comprising an actual data storage unit for storing slice data read and written by a client in a slice area divided into slice units, and a metadata storage unit for storing metadata such as the read / write position of the slice data and the relationship between modules a device, a plurality of modules that includes a communication device that communicates with an external another module, and a control unit for controlling the storage device and a communication device,
An integrated management module for duplicating and managing slice data stored in units of slices in the storage devices of the plurality of modules;
In a storage system consisting of
In the integrated management module,
An allocation target selection unit that selects a group of modules having storage devices in a specified range as slice data allocation targets;
A primary allocation unit that allocates primary slice data to a module having an unallocated slice area one by one in round robin,
A secondary allocation unit that allocates the necessary number of secondary slice data to the module selected by the predetermined evaluation function under the constraint that the module having the primary slice data in charge of the same data area is not the same module,
Provided,
The predetermined evaluation function is:
As (b) evaluation function for the module j with a primary slice data Crossed secondary slice data paired with the assignments object module j and values to optimize the small number of modules of the slice data among the modules paired If a function that returns c (i, j) is used and the best value of this function is in a plurality of modules, whether one of the modules is selected as a secondary slice data allocation module in a predetermined procedure or (ii) as an evaluation function, the module j with a primary slice data Crossed secondary slice data paired with the assignments subject, the total number of slices in the number of modules of slice data among the modules Crossed module j pairs The value cr (i, j) that makes the module with the smallest ratio to the best value The storage system using to function, characterized by a selection child one as an assignment module for the secondary slice data of the plurality of modules in a predetermined procedure in case the best value of the function is in the plurality of modules .
JP2003170357A 2003-06-16 2003-06-16 Data allocation method, program, and storage system Expired - Fee Related JP4404292B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003170357A JP4404292B2 (en) 2003-06-16 2003-06-16 Data allocation method, program, and storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003170357A JP4404292B2 (en) 2003-06-16 2003-06-16 Data allocation method, program, and storage system

Publications (2)

Publication Number Publication Date
JP2005004681A JP2005004681A (en) 2005-01-06
JP4404292B2 true JP4404292B2 (en) 2010-01-27

Family

ID=34095171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003170357A Expired - Fee Related JP4404292B2 (en) 2003-06-16 2003-06-16 Data allocation method, program, and storage system

Country Status (1)

Country Link
JP (1) JP4404292B2 (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129869A (en) * 2006-11-21 2008-06-05 Nec Computertechno Ltd Server monitoring operation system
JP2009151677A (en) * 2007-12-21 2009-07-09 Fujitsu Ltd Storage control device, storage control program, and storage control method
JP5218284B2 (en) * 2008-08-20 2013-06-26 富士通株式会社 Virtual disk management program, storage device management program, multi-node storage system, and virtual disk management method
JP2010238124A (en) 2009-03-31 2010-10-21 Fujitsu Ltd Data management program, data management device and data managing method
JP5182201B2 (en) 2009-04-14 2013-04-17 富士通株式会社 Storage control program, storage system, and storage control method
JP5713412B2 (en) 2013-01-31 2015-05-07 株式会社日立製作所 Management device, management system, and management method

Also Published As

Publication number Publication date
JP2005004681A (en) 2005-01-06

Similar Documents

Publication Publication Date Title
US10528274B2 (en) Storage system and data management method
JP7312251B2 (en) Improving available storage space in systems with various data redundancy schemes
US6718434B2 (en) Method and apparatus for assigning raid levels
US8099623B1 (en) Efficient distributed hot sparing scheme in a parity declustered RAID organization
US9417955B2 (en) Data reconstruction in distributed data storage system with key-based addressing
US7620843B2 (en) Rebuilding a storage system
JP4922496B2 (en) Method for giving priority to I / O requests
JP5158074B2 (en) Storage management program, storage management method, storage management device, and storage system
US7565569B2 (en) Data protection in a mass storage system
US8051361B2 (en) Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
EP0829049B1 (en) Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
CN111158587B (en) Distributed storage system based on storage pool virtualization management and data read-write method
US20060085594A1 (en) Metadata for a grid based data storage system
US10229022B1 (en) Providing Raid-10 with a configurable Raid width using a mapped raid group
US20110138150A1 (en) Data allocation in a distributed storage system
US20020015336A1 (en) Utilization of unused disk space on networked computer
WO1998028685A1 (en) Coordinating shared access to common storage
JP2002182862A (en) Method for taking over primary volume in mirror ring of plural volumes, and disk device
CN107729536B (en) Data storage method and device
US10514982B2 (en) Alternate storage arrangement in a distributed data storage system with key-based addressing
CN110383251A (en) Storage system, computer readable recording medium, the control method of system
JP4404292B2 (en) Data allocation method, program, and storage system
US7827353B2 (en) Self healing memory
CN107948229B (en) Distributed storage method, device and system
WO2014060200A1 (en) Validation of storage arrays based on information stored in global metadata

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060605

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090723

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090903

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091006

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091029

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121113

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131113

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees