(57)【特許請求の範囲】
【請求項１】
複数のストレージ装置に含まれるストレージ装置ごとに、当該ストレージ装置の記憶領域から分割されたスライス領域のアドレスの割当状況と、当該スライス領域に非対応のアドレスの割当状況とを記憶するアドレステーブルにアクセス可能なコンピュータを、
任意の記憶容量の割当要求を受信する受信手段、
前記受信手段によって前記割当要求が受信された場合、前記アドレステーブルを参照して、割当が要求された記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスのうち未割当のアドレスを割り当てるとともに、残余の容量分に前記スライス領域のアドレスのうち未割当のアドレスを割り当てる割当手段、
前記割当手段によって割り当てられた割当結果を前記割当要求の要求元に送信する送信手段、
として機能させることを特徴とする割当制御プログラム。
【請求項２】
前記送信手段は、
さらに、前記要求された記憶容量の割当完了報告を前記要求元に送信することを特徴とする請求項１に記載の割当制御プログラム。
【請求項３】
前記コンピュータを、
前記割当手段によって割り当てられた前記スライス領域に非対応のアドレスに対する書き込み要求を検出する検出手段、
前記検出手段によって前記スライス領域に非対応のアドレスへの書き込み要求が検出された場合、前記アドレステーブルの中から、前記割当手段によって割り当てられていない未割当の前記スライス領域のアドレスを検索する検索手段、
前記書き込み要求が検出された前記スライス領域に非対応のアドレスを、前記検索手段によって検索されたアドレスに変更する変更手段として機能させ、
前記送信手段は、
前記変更手段によって変更された変更結果を前記要求元に送信することを特徴とする請求項１または２に記載の割当制御プログラム。
【請求項４】
前記割当手段は、
前記アドレステーブルを参照して、前記各ストレージ装置から選ばれた前記スライス領域に非対応のアドレス数が均等になるように、前記記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスを割り当てることを特徴とする請求項１〜３のいずれか一つに記載の割当制御プログラム。
【請求項５】
前記割当手段は、
前記アドレステーブルを参照して、前記各ストレージ装置から選ばれた前記スライス領域のアドレス数が均等になるように、前記残余の容量分に前記スライス領域のアドレスを割り当てることを特徴とする請求項４に記載の割当制御プログラム。
【請求項６】
任意の記憶容量の割当要求を受信する受信手段と、
前記受信手段によって前記割当要求が受信された場合、複数のストレージ装置に含まれるストレージ装置ごとに、当該ストレージ装置の記憶領域から分割されたスライス領域のアドレスの割当状況と、当該スライス領域に非対応のアドレスの割当状況とを記憶するアドレステーブルを参照して、割当が要求された記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスのうち未割当のアドレスを割り当てるとともに、残余の容量分に前記スライス領域のアドレスのうち未割当のアドレスを割り当てる割当手段と、
前記割当手段によって割り当てられた割当結果を前記割当要求の要求元に送信する送信手段と、
を備えることを特徴とする割当制御装置。
【請求項７】
任意の記憶容量の割当要求を受信する受信工程と、
前記受信工程によって前記割当要求が受信された場合、複数のストレージ装置に含まれるストレージ装置ごとに、当該ストレージ装置の記憶領域から分割されたスライス領域のアドレスの割当状況と、当該スライス領域に非対応のアドレスの割当状況とを記憶するアドレステーブルを参照して、割当が要求された記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスのうち未割当のアドレスを割り当てるとともに、残余の容量分に前記スライス領域のアドレスのうち未割当のアドレスを割り当てる割当工程と、
前記割当工程によって割り当てられた割当結果を前記割当要求の要求元に送信する送信工程と、
を含むことを特徴とする割当制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のストレージ装置を有するストレージシステム全体の記憶容量の割り当てを制御する割当制御プログラム、割当制御装置、および割当制御方法に関する。
【背景技術】
【０００２】
従来、ストレージ装置内のディスクの容量をプールし、クライアントの要求に基づいて論理ディスクを作成して提供する技術が実用化されている。この技術の特徴としてプロビジョニングがある。プロビジョニングとは、論理ディスクの作成要求があった時点では、ディスク（仮想ディスク）にすべての容量を割り当てないで、クライアントからのアクセスがあったときに容量を割り当てる機能である。
【０００３】
これによれば、ディスクプールの容量以上の論理ディスクを作成することが可能となる。また、クライアントからのアクセスにより容量の割り当てが増大してディスクプールの残りの容量が減少すれば、新規にディスクを接続してディスクプールを拡大することができる。
【０００４】
プロビジョニングの機能をストレージ装置が実現するためには、通常のアクセスをおこなう機能以外に、論理ディスクの論理容量および割当済みの記憶容量を管理する機能、クライアントからのアクセスを契機に論理ディスクにディスクプールを割り当てる機能、およびディスクプールの空き容量を通知する機能が必要となる。
【０００５】
従来のプロビジョニングをサポートするストレージ装置は、単一の制御装置がクライアントとディスクプールとを接続し、制御装置が上記機能を備える構成となっている。このため、単一の制御装置に接続できるクライアントやディスクには数的に限界があり、スケーラビリティが制限される問題があった。
【０００６】
そこで、大規模な仮想ストレージシステムを構築するために、スケーラビリティの高いマルチノードシステムが実用化されている（たとえば、下記特許文献１〜３参照。）。このマルチノードシステムは、汎用のディスク装置とサーバとからなるディスクノード複数台をネットワークで結合して構成するシステムである。
【０００７】
【特許文献１】特許第３４８１３９１号公報
【特許文献２】国際公開２００４／１０４８４５号パンフレット
【特許文献３】特開２００７−１２２４６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述した従来技術によれば、ディスクノードのディスク装置にプロビジョニング機能を持たせることで、マルチノードストレージシステムでのプロビジョニングを実現することができる。しかしながら、アクセスされたディスクノードが個別にディスクプールの割り当てをおこなうため、複数のディスクノード全体で最適な割当をおこなうことができないという問題がある。
【０００９】
具体的には、ディスクノードごとにディスクプールが消費されるため、ディスクプールの空き容量が減少した際に、個別にディスクを追加してディスクプールを拡大する必要がある。したがって、特定のディスクノードに偏ってディスクプールが消費されると、システム全体では空き容量があるにもかかわらずディスクプールを拡大する必要がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するため、ストレージシステム全体の記憶容量の割当状況を一元管理することにより、効率的かつ効果的な容量割当をおこなうことができる割当制御プログラム、割当制御装置、および割当制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、この割当制御プログラム、割当制御装置、および割当制御方法は、任意の記憶容量の割当要求を受信し、前記割当要求が受信された場合、複数のストレージ装置を有するストレージシステム全体の記憶領域から分割されたスライス領域のアドレスと、当該スライス領域に非対応のアドレスとを記憶するアドレステーブルを参照して、割当が要求された記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスを割り当てるとともに、残余の容量分に前記スライス領域のアドレスを割り当て、割り当てられた割当結果を前記割当要求の要求元に送信することを要件とする。
【００１２】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、クライアントから要求された記憶容量（仮想ディスク）に対するストレージシステム全体の記憶容量の割当状況を一元管理することができる。また、物理的な記憶領域が存在しない仮想スライス領域を仮想ディスクに割り当てることができる。
【００１３】
また、この割当制御プログラム、割当制御装置、および割当制御方法において、さらに、前記要求された記憶容量の割当完了報告を前記要求元に送信することとしてもよい。
【００１４】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、要求された記憶容量分の記憶容量が割り当てられたかのようにクライアントにみせることができる。
【００１５】
また、この割当制御プログラム、割当制御装置、および割当制御方法において、割り当てられた前記スライス領域に非対応のアドレスに対する書き込み要求を検出し、前記スライス領域に非対応のアドレスへの書き込み要求が検出された場合、前記アドレステーブルの中から、未割当の前記スライス領域のアドレスを検索し、前記書き込み要求が検出された前記スライス領域に非対応のアドレスを、検索されたアドレスに変更し、変更された変更結果を前記要求元に送信することとしてもよい。
【００１６】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、仮想スライス領域に対する書き込み要求が発生した場合に、物理的な記憶領域が存在する実スライス領域を仮想ディスクに割り当てることができる。
【００１７】
また、この割当制御プログラム、割当制御装置、および割当制御方法において、前記アドレステーブルは、前記ストレージ装置ごとに、当該ストレージ装置の記憶領域から分割されたスライス領域のアドレスと、当該スライス領域に非対応のアドレスとを記憶しており、前記アドレステーブルを参照して、前記各ストレージ装置から選ばれた前記スライス領域に非対応のアドレス数が均等になるように、前記記憶容量の少なくとも一部の容量分に前記スライス領域に非対応のアドレスを割り当てることとしてもよい。
【００１８】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、各ストレージ装置から均等に選ばれた仮想スライス領域を仮想ディスクに割り当てることができる。
【００１９】
また、この割当制御プログラム、割当制御装置、および割当制御方法において、前記アドレステーブルを参照して、前記各ストレージ装置から選ばれた前記スライス領域のアドレス数が均等になるように、前記残余の容量分に前記スライス領域のアドレスを割り当てることとしてもよい。
【００２０】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、各ストレージ装置から均等に選ばれた実スライス領域を仮想ディスクに割り当てることができる。
【発明の効果】
【００２１】
この割当制御プログラム、割当制御装置、および割当制御方法によれば、ストレージシステム全体の記憶容量の割当状況を一元管理することにより、効率的かつ効果的な容量割当をおこなうことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この割当制御プログラム、割当制御装置、および割当制御方法の好適な実施の形態を詳細に説明する。なお、本明細書において、割当制御装置とは、制御ノードであり、割当制御プログラムとは、割当制御装置にインストールされたプログラムである。
【００２３】
（ストレージシステムのシステム構成）
まず、本実施の形態にかかるストレージシステム１００のシステム構成について説明する。図１は、ストレージシステムのシステム構成図である。図１において、ストレージシステム１００は、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのネットワーク１１０を介して相互にアクセス可能な制御ノード１０１と、ディスクノード１０２−１〜１０２−ｎと、クライアントノード１０３と、から構成される。
【００２４】
制御ノード１０１は、要求された記憶容量の仮想ディスクに対して、ストレージシステム１００全体の記憶容量を割り当てるコンピュータ装置である。また、制御ノード１０１は、ストレージシステム１００全体の記憶領域のアドレスを管理するアドレステーブル１２０にアクセス可能である。このアドレステーブル１２０は、制御ノード１０１に備えられていてもよく、また、不図示の外部装置に備えられていてもよい。
【００２５】
ディスクノード１０２−１〜１０２−ｎは、磁気ディスクや光ディスクを有するディスク装置Ｄ１〜Ｄｎを備え、クライアントノード１０３からのアクセス要求に応じて、データの書き込み／読み出し処理を実行するコンピュータ装置である。各ディスク装置Ｄ１〜Ｄｎの記憶容量は一定である必要はなく、それぞれ異なっていてもよい。
【００２６】
クライアントノード１０３は、割当要求の要求元のユーザが使用するコンピュータ装置である。また、クライアントノード１０３は、ストレージシステム１００に対してデータの書き込み、読み出しなどのアクセス要求をおこなう。なお、図１では、簡単のためクライアントノード１０３を１台のみ表記している。
【００２７】
ここで、ディスクノード１０２−ｉを例に挙げて、ディスク装置Ｄｉのデータ構造について説明する。本実施の形態では、ディスク装置Ｄｉの記憶領域全体をスライス単位で分割することにより、ディスク装置Ｄｉの記憶領域が複数の小領域（実スライス領域Ｓｉ−１〜Ｓｉ−ｘ）に区分けされている。
【００２８】
また、ディスク装置Ｄｉは、物理的な記憶領域が存在しない仮想的な記憶領域（図１中、点線で示す記憶領域）を備えていると仮定する。さらに、この仮想的な記憶領域をスライス単位で分割することにより、ディスク装置Ｄｉの仮想的な記憶領域が複数の小領域（仮想スライス領域Ｓｉ−（ｘ＋１）〜Ｓｉ−ｙ）に区分けされていることとする。
【００２９】
詳細は後述するが、これら実スライス領域Ｓｉ−１〜Ｓｉ−ｘ、仮想スライス領域Ｓｉ−（ｘ＋１）〜Ｓｉ−ｙには、仮想ディスクに対する割当状況を特定するためのメタデータが付与されており、ディスクノード１０２−ｉにおいて管理されている。メタデータの内容は、制御ノード１０１からの変更要求に応じて変更される。
【００３０】
また、ストレージシステム１００全体の各スライス領域（仮想スライス領域、実スライス領域）のメタデータは、制御ノード１０１において一元管理されている。さらに、仮想ディスクに対する割り当てが完了すると、その仮想ディスクに割り当てられたスライス領域のメタデータ（割当結果）が制御ノード１０１からクライアントノード１０３に送信される。
【００３１】
クライアントノード１０３は、制御ノード１０１から送信された割当結果を参照して、ストレージシステム１００に対するアクセス要求をおこなう。具体的には、仮想ディスク上のアドレスを指定することで、ストレージシステム１００に対するデータの書き込み／読み出し要求をおこなう。
【００３２】
なお、本実施の形態では、ストレージシステム１００全体の記憶領域から分割された各スライス領域（たとえば、実スライス領域Ｓｉ−１〜Ｓｉ−ｘ、仮想スライス領域Ｓｉ−（ｘ＋１）〜Ｓｉ−ｙ）の記憶容量は均等であることとする。ただし、必ずしも均等である必要はなく、ディスクノード１０２−１〜１０２−ｎごとにスライス単位の記憶容量を決定し、その記憶容量に従って各ディスク装置Ｄ１〜Ｄｎの記憶領域を複数のスライス領域に分割することとしてもよい。
【００３３】
（アドレステーブルのデータ構造）
つぎに、制御ノード１０１がアクセス可能なアドレステーブル１２０のデータ構造について説明する。図２は、アドレステーブルのデータ構造を示す説明図である。図２において、アドレステーブル１２０には、ストレージシステム１００内のディスクノード１０２−１〜１０２−ｎごとのアドレスデータＡ１〜Ａｎが記憶されている。
【００３４】
具体的には、アドレスデータＡ１〜Ａｎは、各ディスクノード１０２−１〜１０２−ｎが有する実スライス領域および仮想スライス領域に付与されるメタデータから構成されている。たとえば、アドレスデータＡｉは、実スライス領域Ｓｉ−１〜Ｓｉ−ｘごとのメタデータＭｉ−１〜Ｍｉ−ｘと、仮想スライス領域Ｓｉ−（ｘ＋１）〜Ｓｉ−ｙごとのメタデータＭｉ−（ｘ＋１）〜Ｍｉ−ｙと、から構成されている。
【００３５】
また、各メタデータＭｉ−１〜Ｍｉ−ｙは、スライス領域（実スライス領域または仮想スライス領域）ごとに、スライスＩＤ、仮想フラグ、割当フラグ、アドレス、仮想ディスクＩＤ、仮想ディスクアドレスおよびディスクノードアドレスを有している。スライスＩＤは、各スライス領域を特定する識別子である。
【００３６】
仮想フラグは、仮想スライス領域であるか否かを特定するフラグであり、実スライス領域は「ＯＦＦ」となり、仮想スライス領域は「ＯＮ」となる。割当フラグは、仮想ディスクに割当済みか否かを特定するフラグであり、割当済みの場合は「ＯＮ」となり、未割当の場合は「ＯＦＦ」となる。
【００３７】
アドレスは、実スライス領域の場所を特定するアドレスである。なお、仮想スライス領域に相当する物理的な記憶領域は存在しないため、仮想スライスのアドレスは「ｎｕｌｌ」となっている。仮想ディスクＩＤは、割当先の仮想ディスクを特定する識別子である。仮想ディスクアドレスは、仮想ディスク上のアドレスである。ディスクノードアドレスは、ディスクノード１０２−〜１０２−ｎのアドレス（たとえば、ディスクノード１０２−〜１０２−ｎのＩＰアドレス）である。
【００３８】
なお、図２に示すアドレステーブル１２０の記憶内容は初期状態を示している。また、アドレステーブル１２０が制御ノード１０１に備えられる場合には、アドレステーブル１２０は、図３に示すハードディスク３０５や光ディスク３０７などの記憶部によりその機能を実現する。ここでは、アドレステーブル１２０の初期化時に、実スライス領域のアドレスが割り振られていることとしたが、これに限らない。たとえば、仮想ディスクへの実スライス領域の割当時に、各ディスクノード１０２−１〜１０２−ｎの記憶領域に割り振ることとしてもよい。
【００３９】
（コンピュータ装置のハードウェア構成）
つぎに、図１に示したコンピュータ装置（制御ノード１０１、ディスクノード１０２−１〜１０２−ｎ、クライアントノード１０３）のハードウェア構成について説明する。図３は、コンピュータ装置のハードウェア構成を示すブロック図である。
【００４０】
図３において、コンピュータ装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、ハードディスクドライブ３０４と、ハードディスク３０５と、光ディスクドライブ３０６と、光ディスク３０７と、ディスプレイ３０８と、Ｉ／Ｆ（インターフェース）３０９と、キーボード３１０と、マウス３１１と、スキャナ３１２と、プリンタ３１３と、を備えている。また、各構成部はバス３００によってそれぞれ接続されている。
【００４１】
ここで、ＣＰＵ３０１は、コンピュータ装置の全体の制御を司る。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される。ハードディスクドライブ３０４は、ＣＰＵ３０１の制御にしたがってハードディスク３０５に対するデータのリード／ライトを制御する。ハードディスク３０５は、ハードディスクドライブ３０４の制御で書き込まれたデータを記憶する。
【００４２】
光ディスクドライブ３０６は、ＣＰＵ３０１の制御にしたがって光ディスク３０７に対するデータのリード／ライトを制御する。光ディスク３０７は、光ディスクドライブ３０６の制御で書き込まれたデータを記憶したり、光ディスク３０７に記憶されたデータをコンピュータ装置に読み取らせたりする。
【００４３】
また、光ディスク３０７として、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ）、メモリーカードなどを採用することができる。ディスプレイ３０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ３０８は、たとえば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＴＦＴ（Ｔｈｉｎ  Ｆｉｌｍ  Ｔｒａｎｓｉｓｔｏｒ）液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４４】
Ｉ／Ｆ３０９は、通信回線を通じてインターネットなどのネットワーク１１０に接続され、このネットワーク３１４を介して他の装置に接続される。そして、Ｉ／Ｆ３０９は、ネットワーク３１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ３０９には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００４５】
キーボード３１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス３１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
スキャナ３１２は、画像を光学的に読み取り、コンピュータ装置内に画像データを取り込む。なお、スキャナ３１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ３１３は、画像データや文書データを印刷する。プリンタ３１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００４７】
（ストレージシステムの機能的構成）
つぎに、ストレージシステム１００の機能的構成について説明する。まず、制御ノード１０１の機能的構成について説明する。図４は、制御ノードの機能的構成を示すブロック図である。図４において、制御ノード１０１は、受信部４０１と、割当部４０２と、決定部４０３と、選択部４０４と、送信部４０５と、検出部４０６と、検索部４０７と、変更部４０８と、を備えている。
【００４８】
これら各機能４０１〜４０８は、制御ノード１０１のＲＯＭ３０２，ＲＡＭ３０３，ハードディスク３０５，光ディスク３０７などの記憶部に記憶された当該機能４０１〜４０８に関するプログラムをＣＰＵに実行させることにより、または、入出力Ｉ／Ｆにより、当該機能を実現することができる。また、各機能４０１〜４０８からの出力データは上記記憶部に保持される。また、図４中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶部から読み込んで、当該機能に関するプログラムをＣＰＵに実行させるものとする。
【００４９】
まず、受信部４０１は、任意の記憶容量の割当要求を受信する機能を有する。具体的には、割当要求は、任意の記憶容量（たとえば、１［ＧＢ（ギガバイト）］）のディスクを作成する作成要求である。このディスクは、作成時には、要求されたすべての記憶容量を割り当てない仮想ディスクである。また、割当要求は、クライアントノード１０３（図１参照）から直接受信してもよく、また、ストレージシステム１００のオペレータが使用する外部装置から受信することとしてもよい。
【００５０】
割当部４０２は、受信部４０１によって割当要求が受信された場合、アドレステーブル１２０を参照して、割当が要求された記憶容量の少なくとも一部の容量分にスライス領域に非対応のアドレスを割り当てるとともに、残余の容量分にスライス領域のアドレスを割り当てる機能を有する。
【００５１】
ここで、割当部４０２による割当処理の具体的な処理内容について説明する。以下、要求された記憶容量を１［ＧＢ］とし、各ディスクノード１０２−１〜ディスクノード１０２−ｎが有する仮想スライス領域および実スライス領域の記憶容量をそれぞれ１［ＭＢ（メガバイト）］とする。
【００５２】
まず、割当が要求された記憶容量を割り当てる仮想ディスクに、要求元のクライアントと対応付けられた新規の仮想ディスクＩＤを割り付ける。これにより、要求元のクライアントと仮想ディスクとの対応関係を認識することができる。以下、仮想ディスクＩＤ「ＶＤ１」が割り付けられた仮想ディスクＶＤ１を例に挙げて説明する。
【００５３】
つぎに、決定部４０３は、仮想ディスクＶＤ１を構成するスライス数、つまり、仮想ディスクＶＤ１に割り当てるスライス領域の数を決定する。具体的には、要求された記憶容量の１［ＧＢ］を、各スライス領域の記憶容量の１［ＭＢ］で除算することでスライス数を決定する。この場合、仮想ディスクＶＤ１を構成するスライス数を「１０００」に決定する。
【００５４】
このあと、決定部４０３は、仮想ディスクＶＤ１を構成する１０００個のスライス領域のうち、仮想スライス領域のスライス数と実スライス領域のスライス数とを決定する。具体的には、たとえば、予め設定された仮想スライス領域と実スライス領域との比率に基づいて、それぞれのスライス領域のスライス数を決定する。
【００５５】
ここで、上記比率が『（仮想スライス領域：実スライス領域）＝（１：１）』であった場合、決定部４０３は、仮想スライス領域のスライス数を「５００」、実スライス領域のスライス数を「５００」に決定する。
【００５６】
なお、仮想スライス領域および実スライス領域の記憶容量がディスクノード１０２−１〜１０２−ｎごとに異なる場合には、それぞれの記憶容量を用いて、仮想ディスクを構成するスライス数や仮想スライス領域のスライス数および実スライス領域のスライス数を決定することとなる。
【００５７】
つぎに、選択部４０４は、アドレステーブル１２０を参照して、割当フラグが「ＯＦＦ」の仮想スライス領域の中から、任意の仮想スライス領域を選択する。そして、割当部４０２は、選択部４０４によって選択された仮想スライス領域を仮想ディスクＶＤ１に割り当てる。
【００５８】
具体的には、たとえば、選択部４０４によってディスクノード１０２−ｉの仮想スライス領域Ｓｉ−（ｘ＋１）が選択された場合、仮想スライス領域Ｓｉ−（ｘ＋１）を仮想ディスクＶＤ１に割り当てる。また、割当部４０２によって仮想ディスクにスライス領域が割り当てられると、その都度、アドレステーブル１２０の記憶内容が更新される。
【００５９】
ここでは、仮想スライス領域Ｓｉ−（ｘ＋１）のメタデータＭｉ−（ｘ＋１）の割当フラグを「ＯＦＦ」から「ＯＮ」、仮想ディスクＩＤを「ｎｕｌｌ」から「ＶＤ１」、仮想ディスクアドレスを「ｎｕｌｌ」から「ＶＤ１−ＡＤｒ」に変更する。なお、仮想ディスクアドレス「ＶＤ１−ＡＤｒ」は、仮想ディスクＶＤ１上のアドレスのうち先頭からｒ番目のアドレスであることを意味している。
【００６０】
選択部４０４による仮想スライス領域の選択は、割当部４０２による割当数が決定部４０３によって決定された仮想スライス領域のスライス数に到達するまで繰り返される。このとき、各ディスクノード１０２−１〜１０２−ｎから選ばれた仮想スライス領域のスライス数が均等になるように選択することとしてもよい。
【００６１】
たとえば、各ディスクノード１０２−１〜１０２−ｎが有する仮想スライス領域の中から、仮想スライス領域を１つずつ順に選択して仮想ディスクＶＤ１に割り当てる。なお、すべてのディスクノード１０２−１〜１０２−ｎから選択した結果、決定部４０３によって決定されたスライス数に到達していない場合は、再度、各ディスクノード１０２−１〜１０２−ｎが有する仮想スライス領域の中から仮想スライス領域を選択する。
【００６２】
これにより、ディスクノード１０２−１〜１０２−ｎが有する仮想スライス領域を、仮想ディスクＶＤ１に均一に割り当てることができる。この結果、仮想スライス領域に対する書き込み／読み出し要求を、ディスクノード１０２−１〜１０２−ｎにおいて均等に分散処理することができる。
【００６３】
また、選択部４０４は、アドレステーブル１２０を参照して、割当フラグが「ＯＦＦ」の実スライス領域の中から、任意の実スライス領域を選択する。そして、割当部４０２は、選択部４０４によって選択された実スライス領域を仮想ディスクＶＤ１に割り当てる。
【００６４】
具体的には、たとえば、選択部４０４によってディスクノード１０２−ｉの実スライス領域Ｓｉ−１が選択された場合、実スライス領域Ｓｉ−１を仮想ディスクＶＤ１に割り当てる。また、上述したように割当部４０２によって仮想ディスクにスライス領域が割り当てられると、その都度、アドレステーブル１２０の記憶内容が更新される。
【００６５】
ここでは、実スライス領域Ｓｉ−１のメタデータＭｉ−１の割当フラグを「ＯＦＦ」から「ＯＮ」、仮想ディスクＩＤを「ｎｕｌｌ」から「ＶＤ１」、仮想ディスクアドレスを「ｎｕｌｌ」から「ＶＤ１−ＡＤｐ」に変更する。なお、仮想ディスクアドレス「ＶＤ１−ＡＤｐ」は、仮想ディスクＶＤ１上のアドレスのうち先頭からｐ番目のアドレスであることを意味している。
【００６６】
選択部４０４による実スライス領域の選択は、割当部４０２による割当数が決定部４０３によって決定された実スライス領域のスライス数に到達するまで繰り返される。このとき、各ディスクノード１０２−１〜１０２−ｎから選ばれた実スライス領域のスライス数が均等になるように選択することとしてもよい。
【００６７】
たとえば、各ディスクノード１０２−１〜１０２−ｎが有する実スライス領域の中から、実スライス領域を１つずつ順に選択して仮想ディスクＶＤ１に割り当てる。なお、すべてのディスクノード１０２−１〜１０２−ｎから選択した結果、決定部４０３によって決定されたスライス数に到達していない場合は、再度、各ディスクノード１０２−１〜１０２−ｎが有する実スライス領域の中から実スライス領域を選択する。
【００６８】
これにより、ディスクノード１０２−１〜１０２−ｎが有する実スライス領域を、仮想ディスクＶＤ１に均一に割り当てることができる。この結果、実スライス領域に対する書き込み／読み出し要求を、ディスクノード１０２−１〜１０２−ｎにおいて均等に分散処理することができる。
【００６９】
送信部４０５は、割当部４０２によって割り当てられた割当結果を割当要求の要求元に送信する機能を有する。具体的には、送信部４０５は、仮想ディスクＶＤ１に割り当てたスライス領域のメタデータをクライアントノード１０３に送信する。送信部４０５による割当結果の送信タイミングは、仮想ディスクＶＤ１に対する割当完了時でもよく、また、クライアントノード１０３からの割当結果の参照要求があったときでもよい。
【００７０】
より具体的には、たとえば、受信部４０１によってクライアントノード１０３からの割当結果の参照要求を受信すると、そのクライアントに対応する仮想ディスクに割り当てられたスライス領域のメタデータをアドレステーブル１２０の中から抽出し、抽出されたメタデータを割当結果としてクライアントノード１０３に送信する。
【００７１】
ここで、割当部４０２による割当結果の具体例について説明する。図５は、割当結果の具体例を示す説明図である。図５において、割当結果５００は、仮想ディスクＶＤ１に対して実スライス領域および仮想スライス領域を割り当てた割当結果である。具体的には、仮想ディスクアドレスとして、先頭から順にＶＤ１−ＡＤ１，ＶＤ１−ＡＤ２，…，ＶＤ１−ＡＤｐ，…，ＶＤ１−ＡＤｑ，…，ＶＤ１−ＡＤｒ，…が割り当てられている。
【００７２】
クライアントノード１０３は、この割当結果５００を参照して、仮想ディスクＶＤ１に対するアクセス要求をおこなう。具体的には、たとえば、仮想ディスクＶＤ１上の仮想ディスクアドレス「ＶＤ１−ＡＤ１」を指定する場合、まず、割当結果５００からディスクノードアドレス「ＡＤＤＲ１」を特定する。そして、特定されたディスクノードアドレス「ＡＤＤＲ１」用いてディスクノード１０２−１にアクセスする。このとき、書き込み／読み出し要求とともに、仮想ディスクＩＤ「ＶＤ１」と仮想ディスクアドレス「ＶＤ１−ＡＤ１」とを指定する。
【００７３】
また、送信部４０５は、割当結果とともに、要求された記憶容量の割当完了報告を要求元に送信することとしてもよい。具体的には、たとえば、送信部４０５は、割当結果５００とともに、要求された記憶容量の割当が完了した旨のメッセージをクライアントノード１０３に送信する。
【００７４】
これにより、要求された記憶容量を満たす物理的な記憶領域が割り当てられていないにもかかわらず、要求された記憶容量分の記憶領域が割り当てられたかのようにクライアントノード１０３のユーザにみせることができる。
【００７５】
また、送信部４０５は、割当部４０２による割当結果が反映されたメタデータを、該メタデータを有するディスクノード１０２−１〜１０２−ｎに送信する。このとき、メタデータの変更要求もあわせて送信することとなる。
【００７６】
ここで、ディスクノード１０２−１〜１０２−ｎに送信されるメタデータの変更要求の具体例について説明する。図６は、メタデータの変更要求の具体例を示す説明図である。図６において、変更要求６００は、ディスクノード１０２−ｉが有する各スライス領域に付与されているメタデータＭｉ−１〜Ｍｉ−ｙの変更要求である。
【００７７】
具体的には、図６中網掛け表示された、ディスクノード１０２−ｉが有する実スライス領域Ｓｉ−１のメタデータＭｉ−１と、仮想スライス領域Ｓｉ−（ｘ＋１）のメタデータＭｉ−（ｘ＋１）との変更要求である。なお、変更対象となるメタデータＭｉ−１，Ｍｉ−（ｘ＋１）のみを変更要求としてディスクノード１０２−ｉに送信することとしてもよい。
【００７８】
図４の説明に戻り、検出部４０６は、割当部４０２によって割り当てられたスライス領域に非対応のアドレスに対する書き込み要求を検出する機能を有する。具体的には、たとえば、受信部４０１によってクライアントノード１０３またはディスクノード１０２−１〜１０２−ｎからのエラー通知を受信することで、仮想スライス領域に対する書き込み要求が発生したことを検出する。
【００７９】
エラー通知とは、仮想スライス領域に対する書き込み要求が発生したことをあらわす情報である。このエラー通知には、アクセス元のクライアントノード１０３およびアクセス先の仮想スライス領域を特定する情報（仮想ディスクＩＤ、ディスクノードＩＤ、仮想ディスクアドレス、ディスクノードアドレスなど）が含まれている。これにより、どの仮想ディスクに割り当てられたどの仮想スライス領域に対する書き込み要求が発生したのかを特定することができる。
【００８０】
検索部４０７は、検出部４０６によってスライス領域に非対応のアドレスへの書き込み要求が検出された場合、アドレステーブル１２０の中から、割当部４０２によって割り当てられていない未割当のスライス領域のアドレスを検索する機能を有する。具体的には、割当フラグが「ＯＦＦ」の任意の実スライス領域のアドレスを検索する。
【００８１】
このとき、仮想スライス領域に対する書き込み要求を受信したディスクノード（ディスクノード１０２−１〜１０２−ｎのいずれか）の実スライス領域のうち、割当フラグが「ＯＦＦ」の任意の実スライス領域のアドレスを検索することとしてもよい。
【００８２】
変更部４０８は、書き込み要求が検出されたスライス領域に非対応のアドレスを、検索部４０７によって検索されたアドレスに変更する機能を有する。ここで、ディスクノード１０２−ｉの仮想スライス領域Ｓｉ−（ｘ＋１）に対する書き込み要求が検出され、その結果、ディスクノード１０２−ｉの実スライス領域Ｓｉ−２のアドレス「ＡＤＤＲｉ−２」が検索された場合を例に挙げて、変更部４０８による変更処理について説明する。
【００８３】
図７は、変更前後のメタデータを示す説明図である。図７において、符号７１０は、変更部４０８による変更前のメタデータＭｉ−（ｘ＋１），Ｍｉ−２である。また、符号７２０は、変更部４０８による変更後のメタデータＭｉ−（ｘ＋１），Ｍｉ−２である。
【００８４】
具体的には、変更部４０８は、検索部４０７によってディスクノード１０２−ｉの実スライス領域Ｓｉ−２のアドレス「ＡＤＤＲｉ−２」が検索された場合、メタデータＭｉ−（ｘ＋１）の仮想ディスクＩＤおよび仮想ディスクアドレスを「ｎｕｌｌ」に変更し、メタデータＭｉ−２の仮想ディスクＩＤおよび仮想ディスクアドレスを「ＶＤ１」および「ＶＤ１−ＡＤｒ」に変更する。
【００８５】
これにより、仮想ディスクＶＤ１に対する仮想スライス領域Ｓｉ−（ｘ＋１）の割り当てが解除され、その換わりに、実スライス領域Ｓｉ−２が仮想ディスクＶＤ１に割り当てられる。この結果、仮想ディスクＶＤ１に対して、物理的な記憶領域を持つ実スライス領域Ｓｉ−２が割り当てられる。
【００８６】
また、送信部４０５は、変更部４０８によって変更された変更結果を要求元に送信する機能を有する。具体的には、例えば、送信部４０５は、図７に示した変更後のメタデータＭｉ−（ｘ＋１），Ｍｉ−２をクライアントノード１０３に送信する。同様に、送信部４０５は、変更後のメタデータＭｉ−（ｘ＋１），Ｍｉ−２を変更要求とともにディスクノード１０２−ｉ（変更対象のメタデータを保持するディスクノード）に送信する。
【００８７】
この結果、クライアントノード１０３は、変更後のメタデータＭｉ−（ｘ＋１），Ｍｉ−２を参照して、仮想スライス領域Ｓｉ−（ｘ＋１）に対しておこなった書き込み要求を、実スライス領域Ｓｉ−２におこなうことができる。具体的には、変更後のメタデータＭｉ−２から特定されるディスクノードアドレス「ＡＤＤＲｉ」を用いてディスクノード１０２−１にアクセスする。このとき、書き込み要求とともに、仮想ディスクＩＤ「ＶＤ１」と仮想ディスクアドレス「ＶＤ１−ＡＤｒ」とを指定する。
【００８８】
なお、割当部４０２による仮想ディスクＶＤ１に対する仮想スライス領域または実スライス領域の割当順序は任意であり、仮想スライス領域から割り当ててもよく、実スライス領域から割り当ててもよい。ただし、仮想ディスクＶＤ１に割り当てるアドレスの配列として、先頭から実スライス領域のアドレスを配置し、後尾に仮想スライス領域に対応するアドレスを配置するほうが望ましい。
【００８９】
なぜなら、仮想ディスクに対するアクセス要求は先頭のアドレスから指定されるため、後尾に仮想スライス領域に対応するアドレスを配置することで仮想スライス領域にアクセスするまでの時間を遅らせることができる。この結果、実スライス領域の割り当てを遅らせることができ、ストレージシステム１００全体の記憶領域の割当効率を向上させることができる。
【００９０】
つぎに、ディスクノード１０２−１〜１０２−ｎ（以下、単に「ディスクノード１０２」と表記する）の機能的構成について説明する。図８は、ディスクノードの機能的構成を示すブロック図である。図８において、ディスクノード１０２は、受信部８０１と、変更部８０２と、送信部８０３と、実行部８０４と、を備えている。
【００９１】
これら各機能８０１〜８０４は、ディスクノード１０２のＲＯＭ３０２，ＲＡＭ３０３，ハードディスク３０５，光ディスク３０７などの記憶部に記憶された当該機能８０１〜８０４に関するプログラムをＣＰＵに実行させることにより、または、入出力Ｉ／Ｆにより、当該機能を実現することができる。また、各機能８０１〜８０４からの出力データは上記記憶部に保持される。また、図８中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶部から読み込んで、当該機能に関するプログラムをＣＰＵに実行させるものとする。
【００９２】
まず、受信部８０１は、制御ノード１０１からメタデータの変更要求（たとえば、図６に示した変更要求６００）を受信する機能を有する。ディスクノード１０２は、自ノードの実スライス領域および仮想スライス領域にそれぞれ付与されているメタデータを保持している。
【００９３】
変更部８０２は、受信部８０１によって受信された変更要求に基づいて、自ノードが保持しているメタデータを変更する機能を有する。具体的には、たとえば、変更要求を参照して、変更内容を保持しているメタデータにコピー（上書き）することで、メタデータの変更をおこなうことができる。
【００９４】
送信部８０３は、変更部８０２によるメタデータの変更が完了すると、変更応答を制御ノード１０１に送信する機能を有する。これにより、制御ノード１０１は、ディスクノード１０２におけるメタデータの変更処理が完了したことを認識することができる。
【００９５】
また、受信部８０１は、クライアントノード１０３からアクセス要求を受信する機能を有する。具体的には、特定の仮想ディスクＩＤと仮想ディスクアドレスとを指定する書き込み／読み出し要求をクライアントノード１０３から受信する。
【００９６】
実行部８０４は、受信部８０１によって受信されたアクセス要求を実行する機能を有する。具体的には、自ノードが管理するメタデータ、および受信部８０１によって受信された特定の仮想ディスクＩＤと仮想ディスクアドレスとを指定する書き込み／読み出し要求に基づいて、アクセス先のスライス領域のスライスＩＤを特定する。
【００９７】
このとき、特定されたスライスＩＤのスライス領域が実スライス領域であった場合、その実スライス領域に対するデータの書き込み／読み出しを実行する。また、特定されたスライスＩＤのスライス領域が仮想スライス領域であった場合には、その仮想スライス領域に対する要求内容に応じて以下の処理を実行する。
【００９８】
まず、仮想スライス領域に対するデータの読み出し要求があった場合には、予め設定されている値（たとえば、「０」）をＲＯＭ３０２、ＲＡＭ３０３などの記憶部から読み出す。一方、仮想スライス領域に対するデータの書き込み要求があった場合には、アドレスで指定された記憶領域が存在しない旨のエラーコードを記憶部から読み出す。
【００９９】
送信部８０３は、実行部８０４による実行結果をクライアントノード１０３または制御ノード１０１に送信する機能を有する。たとえば、実スライス領域に対するデータの書き込み／読み出し結果および仮想スライス領域に対する読み出し結果をクライアントノード１０３に送信する。
【０１００】
また、エラーコードが読み出された場合は、そのエラーコードを含むエラー通知をクライアントノード１０３または／および制御ノード１０１に送信する。このエラー通知には、たとえば、自ノードのディスクノードＩＤ、仮想ディスクの仮想ディスクＩＤ、仮想ディスクアドレスなどが含まれている。
【０１０１】
（ストレージシステム１００の各種処理手順）
つぎに、ストレージシステム１００の各種処理手順について説明する。まず、メタデータの初期化処理手順について説明する。図９は、メタデータの初期化処理手順を示すシーケンス図である。図９において、まず、制御ノード１０１の送信部４０５により、メタデータの初期化要求をディスクノード１０２に送信する（ステップＳ９０１）。
【０１０２】
このあと、ディスクノード１０２の受信部８０１により、メタデータの初期化要求を制御ノード１０１から受信し（ステップＳ９０２）、実行部８０４により、メタデータの初期化処理を実行する（ステップＳ９０３）。そして、送信部８０３により、メタデータの初期化処理が完了したことをあらわす初期化応答を制御ノード１０１に送信する（ステップＳ９０４）。
【０１０３】
最後に、制御ノード１０１の受信部４０１により、メタデータの初期化応答をディスクノード１０２から受信する（ステップＳ９０５）。これにより、ストレージシステム１００内のディスクノード１０２が保持するメタデータを初期化することができる。
【０１０４】
つぎに、仮想ディスクに対する記憶容量の割当処理手順について説明する。図１０は、仮想ディスクに対する記憶容量の割当処理手順を示すシーケンス図である。図１０において、まず、制御ノード１０１の受信部４０１により、仮想ディスクに対する記憶容量の割当要求を受信したか否かを判断する（ステップＳ１００１）。
【０１０５】
ここで、割当要求を受信するのを待って（ステップＳ１００１：Ｎｏ）、受信した場合（ステップＳ１００１：Ｙｅｓ）、割当部４０２により、仮想ディスクに対する記憶容量の割当処理を実行する（ステップＳ１００２）。そして、送信部４０５により、メタデータの変更要求をディスクノード１０２に送信する（ステップＳ１００３）。
【０１０６】
このあと、ディスクノード１０２の受信部８０１により、メタデータの変更要求を制御ノード１０１から受信し（ステップＳ１００４）、変更部８０２により、メタデータの内容を変更し（ステップＳ１００５）、送信部８０３により、メタデータの変更応答を制御ノード１０１に送信する（ステップＳ１００６）。
【０１０７】
最後に、制御ノード１０１の受信部４０１により、メタデータの変更応答をディスクノード１０２から受信する（ステップＳ１００７）。
【０１０８】
つぎに、図１０に示したステップＳ１００２における割当処理の具体的処理手順について説明する。図１１は、割当処理の具体的処理手順を示すフローチャートである。図１１のフローチャートにおいて、まず、要求された記憶容量を割り当てる仮想ディスクに、要求元のクライアントと対応付けられた新規の仮想ディスクＩＤを割り付ける（ステップＳ１１０１）。
【０１０９】
このあと、決定部４０３により、仮想ディスクを構成するスライス数を決定し（ステップＳ１１０２）、仮想スライス領域および実スライス領域のスライス数を決定する（ステップＳ１１０３）。つぎに、選択部４０４により、アドレステーブル１２０を参照して、割当フラグが「ＯＦＦ」の実スライス領域の中から、任意の実スライス領域を選択する（ステップＳ１１０４）。
【０１１０】
そして、割当部４０２により、選択部４０４によって選択された実スライス領域のアドレスを仮想ディスクに割り当て（ステップＳ１１０５）、アドレステーブル１２０の記憶内容を更新する（ステップＳ１１０６）。
【０１１１】
このあと、割当部４０２によって割り当てられた実スライス領域のスライス数が、ステップＳ１１０３において決定された実スライス領域のスライス数に到達したか否かを判断し（ステップＳ１１０７）、未到達の場合は（ステップＳ１１０７：Ｎｏ）、ステップＳ１１０４に戻る。
【０１１２】
一方、到達した場合は（ステップＳ１１０７：Ｙｅｓ）、選択部４０４により、アドレステーブル１２０を参照して、割当フラグが「ＯＦＦ」の仮想スライス領域の中から、任意の仮想スライス領域を選択する（ステップＳ１１０８）。
【０１１３】
そして、割当部４０２により、選択部４０４によって選択された仮想スライス領域を仮想ディスクに割り当て（ステップＳ１１０９）、アドレステーブル１２０の記憶内容を更新する（ステップＳ１１１０）。
【０１１４】
このあと、割当部４０２によって割り当てられた仮想スライス領域のスライス数が、ステップＳ１１０３において決定された仮想スライス領域のスライス数に到達したか否かを判断し（ステップＳ１１１１）、未到達の場合は（ステップＳ１１１１：Ｎｏ）、ステップＳ１１０８に戻る。一方、到達した場合は（ステップＳ１１１１：Ｙｅｓ）、図１０に示したステップＳ１００３に移行する。
【０１１５】
つぎに、ディスクノード１０２におけるアクセス要求処理手順について説明する。図１２は、ディスクノードにおけるアクセス要求処理手順を示すフローチャートである。図１２のフローチャートにおいて、まず、受信部８０１により、クライアントノード１０３からアクセス要求を受信したか否かを判断する（ステップＳ１２０１）。
【０１１６】
ここで、アクセス要求を受信するのを待って（ステップＳ１２０１：Ｎｏ）、受信した場合（ステップＳ１２０１：Ｙｅｓ）、アクセス要求が読み出し要求か否かを判断し（ステップＳ１２０２）、読み出し要求であった場合（ステップＳ１２０２：Ｙｅｓ）、アクセス先が実スライス領域か否かを判断する（ステップＳ１２０３）。
【０１１７】
ここで、実スライス領域であった場合（ステップＳ１２０３：Ｙｅｓ）、実行部８０４により、指定されたアドレスの実スライス領域からデータを読み出す（ステップＳ１２０４）。一方、仮想スライス領域であった場合（ステップＳ１２０３：Ｎｏ）、実行部８０４により、予め設定された値を記憶部から読み出す（ステップＳ１２０５）。
【０１１８】
また、ステップＳ１２０２において、アクセス要求が書き込み要求であった場合（ステップＳ１２０２：Ｎｏ）、アクセス先が実スライス領域か否かを判断する（ステップＳ１２０６）。ここで、実スライス領域であった場合（ステップＳ１２０６：Ｙｅｓ）、実行部８０４により、指定されたアドレスの実スライス領域にデータを書き込む（ステップＳ１２０７）。
【０１１９】
一方、仮想スライス領域であった場合（ステップＳ１２０６：Ｎｏ）、実行部８０４により、エラーコードを記憶部から読み出す（ステップＳ１２０８）。最後に、送信部８０３により、アクセス応答をクライアントノード１０３に送信して（ステップＳ１２０９）、本フローチャートによる一連の処理を終了する。
【０１２０】
なお、ステップＳ１２０８においてエラーコードを読み出した場合は、指定されたアドレスが存在しない旨のエラーメッセージをクライアントノード１０３（または／および制御ノード１０１）に送信することとなる。
【０１２１】
つぎに、制御ノード１０１における、仮想スライス領域に換えて実スライス領域を仮想ディスクに割り当てる変更処理手順について説明する。図１３は、制御ノードにおける変更処理手順を示すフローチャートである。図１３のフローチャートにおいて、まず、検出部４０６により、仮想スライス領域に対する書き込み要求が検出されたか否かを判断する（ステップＳ１３０１）。
【０１２２】
ここで、仮想スライス領域に対する書き込み要求が検出されるのを待って（ステップＳ１３０１：Ｎｏ）、検出された場合（ステップＳ１３０１：Ｙｅｓ）、検索部４０７により、アドレステーブル１２０の中から、割当フラグが「ＯＦＦ」の実スライス領域のアドレスを検索し（ステップＳ１３０２）、変更部４０８により、書き込み要求が検出された仮想スライス領域に対応するアドレスを、検索部４０７によって検索されたアドレスに変更する（ステップＳ１３０３）。
【０１２３】
そして、変更部４０８による変更結果に基づいてアドレステーブル１２０の記憶内容を更新し（ステップＳ１３０４）、最後に、送信部４０５により、変更部４０８による変更結果をクライアントノード１０３に送信して（ステップＳ１３０５）、本フローチャートによる一連の処理を終了する。
【０１２４】
なお、ステップＳ１３０５において、変更対象となった仮想スライス領域および実スライス領域のメタデータを保持するディスクノード１０２に変更結果を送信することとしてもよい。
【０１２５】
また、ステップＳ１３０２において、割当フラグが「ＯＦＦ」の実スライス領域のアドレスが検索されなかった場合には、ディスクノード１０２（ディスク装置）を増設する必要がある旨のメッセージをストレージシステム１００の管理者に提示することとしてもよい。
【０１２６】
以上説明したように、本実施の形態によれば、制御ノード１０１により、仮想ディスクに対するストレージシステム１００全体の記憶容量の割当状況を一元管理することができる。これにより、ストレージシステム１００全体での最適な容量割当をおこなうことができる。
【０１２７】
また、ストレージシステム１００全体の記憶容量をディスクプールとすることにより、新たなディスクノードを追加するだけで、単一のディスクプールを拡張することができる。また、物理的な記憶領域が存在しない仮想スライス領域を仮想ディスクに割り当てることができる。これにより、ストレージシステム１００全体の記憶容量以上の容量割当をおこなうことができる。
【０１２８】
さらに、仮想スライス領域に対する書き込み要求が発生した場合に、その仮想スライス領域に換えて、物理的な記憶領域が存在する実スライス領域を仮想ディスクに割り当てることができる。この結果、クライアントからの書き込み要求を適切に処理することができる。
【０１２９】
また、仮想ディスクに割り当てる仮想スライス領域および実スライス領域を複数のディスクノード１０２−１〜１０２−ｎで均等に分散することができる。これにより、仮想スライス領域および実スライス領域に対するアクセス要求を複数のディスクノード１０２−１〜１０２−ｎで分散処理することができる。
【０１３０】
このように、この割当制御プログラム、割当制御装置、および割当制御方法によれば、ストレージシステム１００全体の記憶容量の割当状況を一元管理することにより、効率的かつ効果的な容量割当をおこなうことができる。
【０１３１】
なお、本実施の形態で説明した割当制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【図面の簡単な説明】
【０１３２】
【図１】ストレージシステムのシステム構成図である。
【図２】アドレステーブルのデータ構造を示す説明図である。
【図３】コンピュータ装置のハードウェア構成を示すブロック図である。
【図４】制御ノードの機能的構成を示すブロック図である。
【図５】割当結果の具体例を示す説明図である。
【図６】メタデータの変更要求の具体例を示す説明図である。
【図７】変更前後のメタデータを示す説明図である。
【図８】ディスクノードの機能的構成を示すブロック図である。
【図９】メタデータの初期化処理手順を示すシーケンス図である。
【図１０】仮想ディスクに対する記憶容量の割当処理手順を示すシーケンス図である。
【図１１】割当処理の具体的処理手順を示すフローチャートである。
【図１２】ディスクノードにおけるアクセス要求処理手順を示すフローチャートである。
【図１３】制御ノードにおける変更処理手順を示すフローチャートである。
【符号の説明】
【０１３３】
１００  ストレージシステム
１０１  制御ノード
１０２−１〜１０２−ｎ，１０２  ディスクノード
１２０  アドレステーブル
４０１  受信部
４０２  割当部
４０３  決定部
４０４  選択部
４０５  送信部
４０６  検出部
４０７  検索部
４０８  変更部
８０１  受信部
８０２  変更部
８０３  送信部
８０４  実行部
【図１】
0005298594.tif 000002
【図２】
0005298594.tif 000003
【図３】
0005298594.tif 000004
【図４】
0005298594.tif 000005
【図５】
0005298594.tif 000006
【図６】
0005298594.tif 000007
【図７】
0005298594.tif 000008
【図８】
0005298594.tif 000009
【図９】
0005298594.tif 000010
【図１０】
0005298594.tif 000011
【図１１】
0005298594.tif 000012
【図１２】
0005298594.tif 000013
【図１３】
0005298594.tif 000014