JP2005004681A - データ割当方法、プログラム及びストレージシステム - Google Patents

データ割当方法、プログラム及びストレージシステム Download PDF

Info

Publication number
JP2005004681A
JP2005004681A JP2003170357A JP2003170357A JP2005004681A JP 2005004681 A JP2005004681 A JP 2005004681A JP 2003170357 A JP2003170357 A JP 2003170357A JP 2003170357 A JP2003170357 A JP 2003170357A JP 2005004681 A JP2005004681 A JP 2005004681A
Authority
JP
Japan
Prior art keywords
module
data
slice
slice data
allocation
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.)
Granted
Application number
JP2003170357A
Other languages
English (en)
Other versions
JP4404292B2 (ja
Inventor
Kazutaka Ogiwara
一隆 荻原
Masatoshi Tamura
雅寿 田村
Toru Yokohata
徹 横畑
Satoshi Ikuta
諭史 幾田
Yasuo Noguchi
泰生 野口
Riichiro Take
理一郎 武
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/ja
Publication of JP2005004681A publication Critical patent/JP2005004681A/ja
Application granted granted Critical
Publication of JP4404292B2 publication Critical patent/JP4404292B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】論理ボリューム内でデータを二重化し、物理モジュールの役割を固定せずに論理ボリュームの割当てを行う。
【解決手段】統合管理モジュール12は、クライアント18−1〜18−5からの要求に基づき、指定された範囲のストレージ装置を持つモジュール10−1〜10−4をスライスデータの割当対象として選択し、プライマリ論理ボリュームを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割当て、セカンダリ論理ボリュームを同じデータ領域を担当するプライマリ論理ボリュームを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てる。
【選択図】 図1

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】
Figure 2005004681
ここで未使用率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:論理モジュール

Claims (10)

  1. スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
    前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
    で構成されるストレージシステムのデータ割当方法に於いて、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
    プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、
    セカンダリスライスデータを、同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
    を備えたことを特徴とするデータ割当方法。
  2. 請求項1のデータ割当方法に於いて、更に、
    特定のモジュールが故障した際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
    復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
    を備えたことを特徴とするデータ割当方法。
  3. スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ部と通信部を制御する制御装置とを備えた複数のモジュールと、
    前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
    で構成されるストレージシステムのデータ割当方法に於いて、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
    プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、前記プライマリスライスデータを未割当のスライス領域を持つモジュールからラウンドロビンで割り当てるプライマリ割当ステップと、
    セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
  4. 請求項3のデータ割当方法に於いて、更に、
    特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
    復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
    を備えたことを特徴とするデータ割当方法。
  5. スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
    前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
    で構成されるストレージシステムのデータ割当方法に於いて、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
    プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順で、プライマリスライスデータを未割当のスライス領域を持つモジュールのうち未割当スライス数が一番多いモジュールから割り当てるプライマリ割当ステップと、
    セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
  6. 請求項5のデータ割当方法に於いて、更に、
    特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
    復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
    を備えたことを特徴とするデータ割当方法。
  7. スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
    前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
    で構成されるストレージシステムのデータ割当方法に於いて、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
    プライマリスライスデータをひとつ割り当てた後でセカンダリスライスデータをひとつ割り当てることにより必要な数分割り当てていく手順であって、プライマリスライスデータをモジュール全スライス数に対する未割当スライス数の割合が最も大きなモジュールから割り当てるプライマリ割当ステップと、
    セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに割り当てるセカンダリ割当ステップと、を備えたことを特徴とするデータ割当方法。
  8. 請求項7のデータ割当方法に於いて、更に、
    特定のモジュールの故障によりスライスデータが失われた際に、失われたスライスデータを復元して二重化する割当対象として正常なモジュール群を選択する復元対象選択ステップと、
    復元するスライスデータを、ペアを組むスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数を用いて選択されたモジュールに割り当てる復元割当ステップと、
    を備えたことを特徴とするデータ割当方法。
  9. 複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールのコンピュータに、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択ステップと、
    プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当ステップと、セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当ステップと、
    を実行させることを特徴とするプログラム。
  10. スライス単位に分割されたスライス領域にクライアントが読み書きするスライスデータを格納する実データ格納部および前記スライスデータの読み書き位置やモジュール間の関係などのメタデータを格納するメタデータ格納部とを備えたストレージ装置と、外部の別のモジュールと通信をする通信装置と、前記ストレージ装置と通信装置を制御する制御装置とを備えた複数のモジュールと、
    前記複数のモジュールのストレージ装置にスライス単位に格納するスライスデータを二重化して統合管理する統合管理モジュールと、
    で構成されるストレージシステムに於いて、
    前記統合管理モジュールに、
    指定された範囲のストレージ装置を持つモジュール群をスライスデータの割当対象として選択する割当対象選択部と、
    プライマリスライスデータを未割当のスライス領域を持つモジュールに対してひとつずつラウンドロビンで必要な数分割り当てるプライマリ割当部と、
    セカンダリスライスデータを同じデータ領域を担当するプライマリスライスデータを持つモジュールとは同じモジュールにならないという制約条件の下で、所定の評価関数で選択されたモジュールに必要な数分割り当てるセカンダリ割当部と、
    を設けたことを特徴とするストレージシステム。
JP2003170357A 2003-06-16 2003-06-16 データ割当方法、プログラム及びストレージシステム Expired - Fee Related JP4404292B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003170357A JP4404292B2 (ja) 2003-06-16 2003-06-16 データ割当方法、プログラム及びストレージシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003170357A JP4404292B2 (ja) 2003-06-16 2003-06-16 データ割当方法、プログラム及びストレージシステム

Publications (2)

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

Family

ID=34095171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003170357A Expired - Fee Related JP4404292B2 (ja) 2003-06-16 2003-06-16 データ割当方法、プログラム及びストレージシステム

Country Status (1)

Country Link
JP (1) JP4404292B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129869A (ja) * 2006-11-21 2008-06-05 Nec Computertechno Ltd サーバ監視操作システム
JP2009151677A (ja) * 2007-12-21 2009-07-09 Fujitsu Ltd ストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法
JP2010073190A (ja) * 2008-08-20 2010-04-02 Fujitsu Ltd 仮想ディスク管理プログラム、ストレージ装置管理プログラム、マルチノードストレージシステム、および仮想ディスク管理方法
US8028202B2 (en) 2009-03-31 2011-09-27 Fujitsu Limited Data management device and data managing method for the replication of data
WO2014119100A1 (ja) 2013-01-31 2014-08-07 株式会社日立製作所 管理装置および管理システム
US8856485B2 (en) 2009-04-14 2014-10-07 Fujitsu Limited Storage system and storage control method

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008129869A (ja) * 2006-11-21 2008-06-05 Nec Computertechno Ltd サーバ監視操作システム
JP2009151677A (ja) * 2007-12-21 2009-07-09 Fujitsu Ltd ストレージ制御装置、ストレージ制御プログラムおよびストレージ制御方法
JP2010073190A (ja) * 2008-08-20 2010-04-02 Fujitsu Ltd 仮想ディスク管理プログラム、ストレージ装置管理プログラム、マルチノードストレージシステム、および仮想ディスク管理方法
US8386707B2 (en) 2008-08-20 2013-02-26 Fujitsu Limited Virtual disk management program, storage device management program, multinode storage system, and virtual disk managing method
US8028202B2 (en) 2009-03-31 2011-09-27 Fujitsu Limited Data management device and data managing method for the replication of data
US8856485B2 (en) 2009-04-14 2014-10-07 Fujitsu Limited Storage system and storage control method
WO2014119100A1 (ja) 2013-01-31 2014-08-07 株式会社日立製作所 管理装置および管理システム

Also Published As

Publication number Publication date
JP4404292B2 (ja) 2010-01-27

Similar Documents

Publication Publication Date Title
JP7312251B2 (ja) 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること
US10089026B1 (en) Virtual drive based RAID groups
CN104636080B (zh) 存储系统及用于其的方法
US9417955B2 (en) Data reconstruction in distributed data storage system with key-based addressing
JP6346565B2 (ja) ディスク記憶に消去符号化データを割り当てるための方法および装置
US7594075B2 (en) Metadata for a grid based data storage system
JP4922496B2 (ja) I/o要求に優先順位を与える方法
US5640584A (en) Virtual processor method and apparatus for enhancing parallelism and availability in computer systems
US6718434B2 (en) Method and apparatus for assigning raid levels
US7565569B2 (en) Data protection in a mass storage system
US10825477B2 (en) RAID storage system with logical data group priority
US10229022B1 (en) Providing Raid-10 with a configurable Raid width using a mapped raid group
WO2014115320A1 (ja) ストレージシステム及びデータ管理方法
US20110138150A1 (en) Data allocation in a distributed storage system
KR102290540B1 (ko) 네임스페이스/스트림 관리
JP2002538549A (ja) 共有型ディスクアレイ管理機能を実行する方法およびシステム
JP2006120120A (ja) 複数のデータ・フォーマットを割り振るための一般記憶コンテナ
JP2011076286A (ja) ボリューム割り当てを管理する計算機システム及びボリューム割り当て管理方法
US10514982B2 (en) Alternate storage arrangement in a distributed data storage system with key-based addressing
CN110096218B (zh) 用于为存储对象提供raid数据保护的方法、系统和介质
WO2018179073A1 (ja) ストレージシステム、コンピュータ読み取り可能な記録媒体、システムの制御方法
JP4404292B2 (ja) データ割当方法、プログラム及びストレージシステム
CN107948229B (zh) 分布式存储的方法、装置及系统
WO2014060200A1 (en) Validation of storage arrays based on information stored in global metadata
US9336012B2 (en) Global data establishment for storage arrays controlled by a plurality of nodes

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