(57)【要約】【課題】仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた実領域に未使用領域が生じることを抑える。【解決手段】仮想化システムは、上位装置からの書込みが前記フォーマットにおける書込みであると判断した場合、該書込みの書込み位置が、割当て済みの実領域の割当て先の仮想領域とは異なる仮想領域であっても、該割当て済みの実領域に未使用領域があれば、該未使用領域に、該書込みに従う管理情報を書き、該割当て済みの実領域に未使用領域が無ければ、未割当ての実領域を新たに割当て、該新たに割り当てた実領域に、該書込みに従う管理情報を書く。【選択図】図４
2008084053.tif 000002
【特許請求の範囲】
【請求項１】
上位装置に提供される仮想的な論理ボリュームである仮想ボリュームに対する書込みに応じて複数の実領域のうちの未割当ての実領域を割り当て、該書込みに従うデータを該割り当てた実領域に書く仮想化システムであって、
上位装置からの前記仮想ボリュームに対する書込みが、該仮想ボリュームのフォーマットにおける書込みであるか否かを判断する判断部と、
前記仮想ボリュームの一領域である仮想領域に実領域を割り当てる割当て制御部と
を備え、
前記フォーマットでは、二以上の管理情報を一定の間隔で書くための複数回の書込みが前記仮想ボリュームに対して発生し、
前記割当て制御部が、前記上位装置からの書込みが前記フォーマットにおける書込みであると判断された場合、該書込みの書込み位置が、割当て済みの実領域の割当て先の仮想領域とは異なる仮想領域であっても、該割当て済みの実領域に未使用領域があれば、該未使用領域に、該書込みに従う管理情報を書き、該割当て済みの実領域に未使用領域が無ければ、未割当ての実領域を新たに割当て、該新たに割り当てた実領域に、該書込みに従う管理情報を書く、
仮想化システム。
【請求項２】
前記仮想領域は、複数のサブ仮想領域で構成され、
前記実領域は、複数のサブ実領域で構成され、
仮想領域と実領域との対応が登録される対応関係情報を記憶する対応関係記憶域を備え、
前記割当て制御部は、
どの仮想領域にどの実領域が割り当てたかを前記対応関係情報に登録し、該対応関係情報を参照することにより、どの仮想領域にどの実領域が割り当たっているかを特定し、
前記フォーマットにおいて前記仮想ボリュームに対して発生した複数の書込みの書込み位置を基に、どのサブ仮想領域に対する管理情報部分がどのサブ実領域に書かれるかを計算で求めるための変換パラメータを算出し、該変換パラメータを用いた所定の計算式により、どのサブ仮想領域とどの管理情報部分とが対応しているのかを特定する、
請求項１記載の仮想化システム。
【請求項３】
前記仮想ボリュームに対する書込みの書込み位置の履歴である書込み位置情報を記憶する書込み位置記憶域を備え、
前記割当て制御部は、前記仮想ボリュームに対する書込みの書込み位置を前記書込み位置情報に含め、該書込み位置情報を参照することにより、前記フォーマットの方式を特定し、該特定した方式に応じて、算出する変換パラメータの種類を決定し、該決定した種類の変換パラメータを算出する、
請求項２記載の仮想化システム。
【請求項４】
前記仮想化システムは、複数の実領域を備えた第一のストレージシステムであり、
前記上位装置から送信されたコピー指示を受信し、該コピー指示に従って、コピー元論理ボリュームからコピー先論理ボリュームへのデータコピーを実行するコピー制御部を備え、
前記コピー元論理ボリュームが、前記仮想ボリュームであり、
前記コピー制御部が、コピー元の前記仮想ボリュームの状況に応じて、前記データコピーの際に実行する処理を違える、
請求項２記載の仮想化システム。
【請求項５】
前記コピー先論理ボリュームが、複数の実領域を備える第二のストレージシステムに存在し、該コピー先論理ボリュームが、仮想ボリュームである場合、
前記コピー制御部は、前記コピー指示を受信した場合、前記仮想ボリュームの状況として、前記コピー元仮想ボリュームが未フォーマットの状態であるならば、前記コピー元仮想ボリュームに対する書込みの書込み位置を同じ書込み位置を指定した、コピー先の前記仮想ボリュームに対する書込み要求を、前記第二のストレージシステムに転送する、
請求項４記載の仮想化システム。
【請求項６】
前記コピー先論理ボリュームが、複数の実領域を備える第二のストレージシステムに存在し、該コピー先論理ボリュームが、仮想ボリュームである場合、
前記コピー制御部は、前記コピー指示を受信した場合、前記仮想ボリュームの状況として、前記コピー元仮想ボリュームについて前記変換パラメータが未算出の状態であるならば、該変換パラメータが算出されるまで待ち、該変換パラメータが算出された後に、該算出された変換パラメータを前記第二のストレージシステムに送信し、且つ、前記第一のストレージシステムにおける割当て済みの各実領域と、前記第二のストレージシステムにおける未割当ての実領域同士でデータコピーを行う、
請求項４記載の仮想化システム。
【請求項７】
前記コピー先論理ボリュームが、複数の実領域を備える第二のストレージシステムに存在し、該コピー先論理ボリュームが、仮想ボリュームである場合、
前記コピー制御部は、前記コピー指示を受信した場合、前記仮想ボリュームの状況として、前記コピー元仮想ボリュームについて前記変換パラメータが算出済みの状態であるならば、該変換パラメータを前記第二のストレージシステムに送信し、且つ、前記第一のストレージシステムにおける割当て済みの各実領域と、前記第二のストレージシステムにおける未割当ての実領域同士でデータコピーを行う、
請求項４記載の仮想化システム。
【請求項８】
前記コピー先論理ボリュームが、仮想ボリュームである場合、
前記コピー制御部は、前記コピー指示を受信した場合、前記仮想ボリュームの状況として、前記コピー元仮想ボリュームについてフォーマット済みの場合、前記コピー元仮想ボリュームの記憶容量に対する割当て済み実領域のトータル記憶容量の比率である割り当て済み比率が所定比率を超えているかどうかを判断する、
請求項４記載の仮想化システム。
【請求項９】
前記コピー制御部は、前記割り当て済み比率が所定比率を超えていれば、前記コピー先論理ボリュームを仮想ボリュームに代えて実体のある論理ボリュームである実ボリュームとすることを推奨することを意味する情報を前記上位装置に送信する、
請求項８記載の仮想化システム。
【請求項１０】
前記コピー制御部は、前記割り当て済み比率が所定比率を超えていれば、前記コピー先論理ボリュームを仮想ボリュームに代えて実体のある論理ボリュームである実ボリュームとする、
請求項８記載の仮想化システム。
【請求項１１】
前記コピー制御部は、前記コピー先論理ボリュームを実ボリュームとする場合、前記変換パラメータを用いた所定の計算式に基づいて、割り当て済みの実領域における各サブ実領域に対応した各サブ仮想領域を特定し、前記対応関係情報を参照することにより前記割り当て済みの実領域に対応する仮想領域を特定し、前記特定した仮想領域及びサブ仮想領域から特定される書込み位置を指定した書込みを前記実ボリュームに対して実行する、
請求項１０記載の仮想化システム。
【請求項１２】
前記コピー制御部は、前記割り当て済み比率が所定比率を超えてなければ、前記算出済みの変換パラメータを前記第二のストレージシステムに送信し、且つ、前記第一のストレージシステムにおける割当て済みの各実領域と、前記第二のストレージシステムにおける未割当ての実領域同士でデータコピーを行う、
請求項８記載の仮想化システム。
【請求項１３】
前記上位装置から送信されたコピー指示を受信し、該コピー指示に従って、コピー元論理ボリュームからコピー先論理ボリュームへのデータコピーを実行するコピー制御部を備え、
前記コピー先論理ボリュームが、前記第一のストレージシステムに存在し、前記コピー先論理ボリュームが、別の仮想ボリュームである場合、
前記コピー制御部は、コピー先の前記別の仮想ボリュームにも、前記コピー元の仮想ボリュームについて算出された変換パラメータを適用する、
請求項２記載の仮想化システム。
【請求項１４】
上位装置に提供される仮想的な論理ボリュームである仮想ボリュームに対する書込みに応じて複数の実領域のうちの未割当ての実領域を割り当て、該書込みに従うデータを該割り当てた実領域に書く領域割当て制御方法であって、
仮想ボリュームのフォーマットでは、二以上の管理情報を一定の間隔で書くための複数回の書込みが前記仮想ボリュームに対して発生するようになっており、
上位装置からの前記仮想ボリュームに対する書込みが、該仮想ボリュームのフォーマットにおける書込みであるか否かを判断し、
前記上位装置からの書込みが前記フォーマットにおける書込みであると判断された場合、該書込みの書込み位置が、割当て済みの実領域の割当て先の仮想領域とは異なる仮想領域であっても、該割当て済みの実領域に未使用領域があれば、該未使用領域に、該書込みに従う管理情報を書き、該割当て済みの実領域に未使用領域が無ければ、未割当ての実領域を新たに割当て、該新たに割り当てた実領域に、該書込みに従う管理情報を書く、
領域割当て制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置が使用する仮想的な論理ボリュームに対して記憶領域を動的に割り当てる技術に関する。
【背景技術】
【０００２】
例えば、文献１（特開２００５−３１９２９号公報）に開示の技術がある。この技術によれば、複数のサーバと記憶装置に接続され、複数のサーバによって使用される記憶装置の物理的な記憶領域を仮想的な領域（ストレージプール）として管理する管理サーバは、サーバから受信する未割当領域以上の領域割当命令に応答して、他のサーバの割当領域の少なくとも一部を開放して、領域割当命令を発行したサーバに割当てる。
【０００３】
【特許文献１】特開２００５−３１９２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上位装置（例えばホスト計算機或いはストレージシステム）に仮想的な論理ボリューム（仮想ボリューム）を提供する仮想化システムが知られている。仮想化システムは、ストレージシステムであっても良いし、サーバマシンであっても良いし、ネットワーク（例えばＳＡＮ（Storage Area Network））を構成するスイッチ装置であっても良い。
【０００５】
仮想化システムが仮想ボリュームに実体のある記憶領域（以下、実領域）を割り当てる方法として、例えば、図３に記載の方法がある。
【０００６】
すなわち、割当て単位である実領域は、実体のある論理ボリューム（以下、実ボリューム）の一領域である。実ボリュームは、一又は複数の物理的な記憶装置（例えばハードディスクドライブ或いはフラッシュメモリ）の記憶空間から提供される論理的な記憶装置である。一又は複数の実ボリュームがプールとして管理されている。仮想ボリュームの或るアドレス（以下、仮想アドレス）に対して書込みが発生する場合には、仮想化システムが、プールにおける複数の実領域から未割当ての実領域を選択し、選択した実領域を、該或るアドレスを含む領域（以下、仮想領域）に割り当て、或る仮想アドレスに対する書込みの対象のデータを、該割り当てた実領域に書込む（例えば、仮想領域の記憶容量と実領域の記憶容量は同じである）。該或る仮想アドレスを含む仮想領域（所定の仮想アドレス範囲）に書込みが発生する場合には、該割当て済みの実領域にデータが書込まれ、該仮想領域とは別の仮想領域に書込みが発生する場合には、該別の仮想領域に未割当ての別の実領域が割り当てられ、該別の実領域に、データが書込まれる。
【０００７】
この方法では、以下の問題が生じる。すなわち、上位装置が仮想ボリュームを使用するためには、該仮想ボリュームをフォーマット（初期化）する必要がある。仮想ボリュームを使用するファイルシステムのフォーマットでは、小サイズの管理情報（メタデータ、具体的には、例えば、スーパーブロック、ｉノードなど）が仮想ボリュームに書かれ、且つ、管理情報の書込み先の仮想アドレスは、規則的な間隔で遷移する。この場合に、上記の方法で実領域の割り当てると、図４Ａに例示するように、適宜に実領域が割り当てられるが、割り当てられた各実領域において、未使用領域のサイズが大きくなってしまうという問題がある。つまり、記憶容量の使用効率が悪いという問題が生じてしまう。
【０００８】
従って、本発明の目的は、仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた実領域に未使用領域が生じることを抑えることにある。
【０００９】
本発明の他の目的は、後の説明から明らかになるであろう。
【課題を解決するための手段】
【００１０】
図４Ｂに例示するように、仮想化システムは、仮想ボリュームのフォーマットにおいて、一旦実領域を割り当てたならば、仮想ボリュームのどこに書込みが発生しても、管理情報を、該割当て済みの実領域に詰めて書く。該実領域に未使用領域が無くなったならば、新たに未割当ての実領域を割り当てるようにする。
【００１１】
具体的には、例えば、仮想化システムに、判断部及び割当て制御部を備える。判断部は、上位装置からの前記仮想ボリュームに対する書込みが、該仮想ボリュームのフォーマットにおける書込みであるか否かを判断する。割当て制御部は、前記上位装置からの書込みが前記フォーマットにおける書込みであると判断された場合、該書込みの書込み位置が、割当て済みの実領域の割当て先の仮想領域とは異なる仮想領域であっても、該割当て済みの実領域に未使用領域があれば、該未使用領域に、該書込みに従う管理情報を書き、該割当て済みの実領域に未使用領域が無ければ、未割当ての実領域を新たに割当て、該新たに割り当てた実領域に、該書込みに従う管理情報を書く。
【００１２】
上述した各部は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【発明の効果】
【００１３】
本発明によれば、仮想ボリュームを使用するファイルシステムのフォーマットにおいて、割り当てられた領域に未使用領域が生じることを抑えることができる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の一実施形態に係る計算機システムの構成を示す。
【００１５】
通信ネットワーク（例えばＳＡＮ）１０３に、一又は複数のホスト計算機１０１と、第一のストレージシステム１０５Ａ及び第二のストレージシステム１０５Ｂが接続されている。
【００１６】
ホスト計算機１０１は、例えば、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたコンピュータ装置であり、例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等として構成される。
【００１７】
第一のストレージシステム１０５Ａと第二のストレージシステム１０５Ｂは、それぞれ同様のハードウェア構成にすることができる。そのため、図１では、同種の構成要素には同一の親番号を付している。そして、第一のストレージシステム及びそれの構成要素には、親番号の後に子符号として"Ａ"を付し、第二のストレージシステム及びそれの構成要素には、親番号の後に子符号として"Ｂ"を付している。以下、両ストレージシステムについて説明する。その際、両ストレージステムを区別する場合には、親番号と子符号の組み合わせで区別するが、格別区別しない場合には、子符号を用いず親番号を用いて説明する。
【００１８】
ストレージシステム１０５は、例えば、アレイ状に配列された多数の物理的な記憶装置１１９を備えるＲＡＩＤシステムとすることができる。但し、これに限らず、ストレージシステム１０５を、高機能化されたインテリジェント型のファイバチャネルスイッチとして構成することもできる。ストレージシステム１０５は、コントローラ部１０７と、ストレージ部１１８とに大別することができる。
【００１９】
コントローラ部１０７は、例えば、チャネルアダプタ（ＣＨＡ）１０９と、ディスクアダプタ（ＤＫＡ）１１７と、キャッシュメモリ１１３と、共有メモリ１１１と、接続部１１５とを備えている。
【００２０】
ＣＨＡ１０９は、ホスト計算機１０１或いは他のストレージシステムとの間のデータ通信を行うインタフェース装置である。ＣＨＡ１０９は、例えば、ＣＰＵ、メモリ、複数の通信ポート等を備えたマイクロコンピュータシステム（例えば回路基盤）として構成することができる。複数の通信ポートには、ホスト計算機１０１或いは他のストレージシステムと通信可能に接続される通信ポートと、接続部１１５に接続される通信ポートとがある。例えば、ＣＨＡ１０９は、ホスト計算機１０１から書込み要求を受信し、受信した書込み要求に従うデータを、キャッシュメモリ１１３に書込み、ＤＫＡ１１７にそのデータの書込みを命じることができる。また、例えば、ＣＨＡ１０９は、ホスト計算機１０１から読出し要求を受信し、受信した読出し要求に従うデータの読出しをＤＫＡ１１７に命令し、その命令に従うデータをキャッシュメモリ１１３から読出し、ホスト計算機１０１に送信することができる。
【００２１】
ＤＫＡ１１７は、物理的な記憶装置１１９との間のデータ通信を行うインタフェース装置である。ＤＫＡ１１７も、ＣＰＵ、メモリ、複数の通信ポート等を備えたマイクロコンピュータシステム（例えば回路基盤）として構成することができる。複数の通信ポートには、物理的な記憶装置１１９と通信可能に接続される通信ポートと、接続部１１５に接続される通信ポートとがある。例えば、ＤＫＡ１１７は、ＣＨＡ１０９からの書込みの命令に応答して、キャッシュメモリ１１３に記憶されているデータを、物理的な記憶装置１１９に書込むことができる。また、例えば、ＤＫＡ１１７は、ＣＨＡ１０９からの読出しの命令に応答して、その命令に従うデータを物理的な記憶装置１１９から読出し、キャッシュメモリ１１３に書込むことができる。
【００２２】
キャッシュメモリ１１３は、例えば、揮発性又は不揮発性のメモリであり、ホスト計算機１０から受信したデータや、物理的な記憶装置１１９から読出されたデータを、一時的に記憶する。
【００２３】
共有メモリ１１１は、例えば、揮発性又は不揮発性のメモリであり、ストレージシステム１０５の制御のためにＣＨＡ１０９或いはＤＫＡ１１７に参照される情報（以下、制御情報）が格納される。制御情報の種類については後に詳述する。
【００２４】
接続部１１５は、ＣＨＡ１０９、ＤＫＡ１１７、キャッシュメモリ２４、及び共有メモリ２５を相互に接続させる。接続部２６は、例えば、高速スイッチング動作によってデータ伝送を行う超高速クロスバスイッチ等のような高速バスとして構成することができる。
【００２５】
ストレージ部１１８には、複数の物理的な記憶装置１１９が含まれている。物理的な記憶装置１１９としては、例えば、ハードディスク、フレキシブルディスク、磁気テープ、半導体メモリ、光ディスク等のようなデバイスを用いることができる。二以上の物理的な記憶装置１１９により、所定のＲＡＩＤレベルのＲＡＩＤグループを構成することができる。ＲＡＩＤグループを構成する二以上の物理的な記憶装置１１９の記憶空間を用いて、実体のある論理ボリューム（実ボリューム）を形成することができる。実ボリュームにおける一領域（つまり実領域）が、ホスト計算機１０１に提供される仮想ボリュームに割り当てられる。
【００２６】
以上が、本実施形態に係る計算機システムの構成である。なお、この構成は、例であり、本発明を図１の構成に限定するものではなく、他の構成が採用されてもよい。例えば、共有メモリ１１１とキャッシュメモリ１１３は、別々のメモリでなく、一つのメモリに共有メモリ領域とキャッシュメモリ領域とが設けられても良い。また、例えば、両ストレージシステム１０５Ａ、１０５Ｂの構成が互いに異なっていても良い。また、例えば、コントローラ部１０７は、ＣＰＵ、メモリ及び複数の通信ポートを備えた回路基盤（すなわち、図１のコントローラ部よりもシンプルな構成）であっても良い。この場合、そのＣＰＵが、複数のＣＨＡやＤＫＡによって行われる処理を実行することができる。
【００２７】
図２は、第一のストレージシステムと第二のストレージシステムとの接続構成と、共有メモリに記憶される制御情報の種類とを示す。
【００２８】
複数のＣＨＡ１０９は、他のストレージシステム１０５と通信するためのＣＨＡと、ホスト計算機１０１と通信するためのＣＨＡとに大別することができる。第一のストレージシステム１０５Ａを代表的に例に採り説明すると、複数のＣＨＡ１０９Ａには、ホスト計算機１０１と通信するＣＨＡ１０９Ａ１と、第二のストレージシステム１０５Ｂと通信するＣＨＡ１０９Ａ２とがある。ＣＨＡ１０９Ａ１が、ホスト計算機１０１に仮想ボリュームを提供したり、仮想ボリュームの或る仮想アドレスに対する書込み要求があった場合に、実領域を割り当てたりすることができる。これは、例えば、図２０に示すように、ＣＨＡ１０９Ａ１に搭載のプロセッサ５１１でＩＯ制御プログラム５０１が実行されることにより、行うことができる。また、ＣＨＡ１０９Ａ１は、第一のストレージシステム１０５Ａ内の論理ボリューム間でデータコピーを行うことができる。これは、例えば、図２０に示すように、ＣＨＡ１０９Ａ１に搭載のプロセッサ５１１でコピー制御プログラム５０３が実行されることにより、行うことができる。一方、ＣＨＡ１０９Ａ２は、第一のストレージシステム１０５Ａの論理ボリューム（仮想ボリュームでも実ボリュームでも良い）から第二のストレージシステム１０５Ｂの論理ボリューム（仮想ボリュームでも実ボリュームでも良い）にデータをコピーする場合に、コピー対象のデータを第二のストレージシステム１０５Ｂに送信することができる。これは、例えば、図２０に示すように、ＣＨＡ１０９Ａ２に搭載のプロセッサ５１３でリモートコピー制御プログラム５０５が実行されることにより、行うことができる。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ（例えばＣＰＵ）によって処理が行われるものとする。
【００２９】
仮想ボリュームに対する実領域の割当て方法としては、図３を参照して説明した方法を採用することができる。すなわち、プールに属している複数の実ボリューム（つまりプール内の複数の実領域）から未割当ての実領域が選択され、選択された実領域が、仮想ボリュームにおける仮想領域に割り当てられる。以下の説明では、便宜上、割当て単位となる領域を「ページ」と称し、割当て元である実領域（実ボリュームの一領域）を「実ページ」と称し、割当て先である仮想領域（仮想ボリュームの一領域）を「仮想ページ」と称する。実ページと仮想ページはそれぞれ同じサイズであり、一つの仮想ページに対して一つの実ページが割り当てられる。
【００３０】
共有メモリ１１１Ａに記憶される制御情報の種類として、例えば、実ページ管理情報１３５Ａ、ホストライト位置情報１３１Ａ、及び仮想ボリューム構成情報１３３Ａがある。
【００３１】
実ページ管理情報１３５Ａは、複数の実ページのうちのどれが仮想ページに割当て済みでどれが未割当てであるかを管理するための情報である。実ページ管理情報１３５Ａには、例えば、各実ページ毎に、実ページの識別子、その実ページが存在する実ボリュームの識別子（例えば論理ユニット番号（ＬＵＮ））、その実ページが割当て済みか否かを表すステータスが含まれる。ＣＨＡ１０９Ａ１は、実ページ管理情報１３５Ａを参照することにより、未割当ての実ページを特定することができる。
【００３２】
ホストライト位置情報１３１Ａは、どの仮想ボリュームのどこに対する書込み要求を受信したかを表す情報である。言い換えれば、ホストライト位置情報１３１Ａは、受信した書込み要求で指定された書込み先の情報（ホストライト位置）の履歴である。ホストライト位置は、例えば、論理ブロックアドレス（ＬＢＡ）或いは仮想スロット番号（以下、「仮想スロット＃」と記載することがある）で表すことができる。「スロット」とは、ページの一領域であり、複数のスロットにより一つのページが構成される。「仮想スロット」とは、仮想ページの一領域である。それに対し、後述する「実スロット」とは、実ページの一領域である。また、ホストライト位置としては、書込み要求で指定された位置（例えば、図７Ａでは、書き始めの仮想スロット＃０、ｍなど）に加えて、例えば、その書込み要求に付随して書かれることになる仮想スロット＃（例えば、図７Ａでは、仮想スロット＃１，２や、ｍ＋１、ｍ＋２など）があっても良い。
【００３３】
仮想ボリューム構成情報１３３Ａは、仮想ボリュームの構成に関する情報であり、仮想ボリューム毎に用意される。仮想ボリューム構成情報１３３Ａには、例えば、仮想ボリューム定義情報と、アドレス変換テーブルと、変換パラメータ群とが含まれる。
【００３４】
仮想ボリューム定義情報とは、仮想ボリュームの定義に関する情報であり、具体的には、例えば、仮想ボリュームの識別子（例えばＬＵＮ）、仮想ボリュームの記憶容量、仮想ボリュームのアドレス範囲（先頭と終端のそれぞれの仮想アドレス）が含まれる。仮想アドレスは、論理ブロックアドレスで表すことができる。
【００３５】
アドレス変換テーブルとは、仮想ページと実ページとの対応関係を管理するためのテーブルであり、どの仮想ページにアクセスされた場合にはどの実ページにアクセスするかを特定するために参照されるものである。アドレス変換テーブルには、例えば、各仮想ページ毎に、仮想ページの番号（仮想ページ＃）と、その仮想ページに実ページが割当て済みか否かを表すステータスと、割当て済みであればどの番号の実ページ（実ページ＃）が割り当てられているかを表す。なお、このアドレス変換テーブルでは、各仮想ページについて管理されているが、各仮想スロットについての管理はされていない。どの仮想スロットがどの実スロットに対応するかは、後述する変換パラメータ群を用いた計算で算出される。これにより、アドレス変換テーブルで各仮想スロットと各実スロットとの対応までをも管理することに比して、アドレス変換テーブルのサイズを抑えることができ、以って、共有メモリ１１１Ａで消費される記憶容量を節約することができる。
【００３６】
変換パラメータ群とは、仮想スロット＃から実スロット＃（具体的には、後述する管理情報＃或いはデータ＃）に変換したり逆に実スロット＃から仮想スロット＃に変換したりするのに必要な一種類以上のパラメータ（変換パラメータ）である。変換パラメータの種類については後述する。
【００３７】
第二のストレージシステム１０５Ｂの共有メモリ１１１Ｂにも、同様の制御情報が格納される。実ページ管理情報１３５Ｂは予め用意されており、他種の制御情報が、適宜に生成される。どのような制御情報が格納されるかについては、後に説明する。
【００３８】
図５は、ホスト計算機からのアクセス要求で指定されているアクセス先仮想ＬＢＡから仮想スロット＃を算出する方法の説明図である。
【００３９】
この図は、データサイズＡ（例えば単位はバイト）のブロック毎にデータサイズＢの管理情報が書かれるファイルシステムの場合の割当て方式の説明図である（Ａ＞Ｂである）。ちなみに、ブロックとは、ホスト計算機１０１のＯＳ（オペレーティングシステム、例えばＵＮＩＸ（登録商標））で管理される単位である。つまり、ホスト計算機１０１からは、データがブロック単位で書かれる。スロットは、そのブロックのデータサイズよりも小さく、例えば、複数のスロットのトータル記憶容量が、一つのブロックのデータサイズと同じになる。また、本実施形態では、前述したように、スロットは、ページの記憶容量よりも小さく、例えば、複数のスロットのトータル記憶容量が、一つのページの記憶容量と同じになる。
【００４０】
ここで、仮想ページの記憶容量をＣ（例えば単位はメガバイト）とした場合、ＩＯ制御プログラム５０１は、以下の流れで、アクセス先仮想ＬＢＡ：Ｄに対応した仮想スロット＃を算出することができる。
【００４１】
まず、
Ｐ＝Ｄ％Ａ…（１）
すなわち、ＤをＡで割った場合の余りＰが算出される。Ｐは、データサイズＡのブロックにおいて、管理情報が書かれる場所か、或いは、ユーザデータが書かれる場所かを判別するための値である。ユーザデータとは、フォーマットが済んだ後に、ホスト計算機１０１によって書き込まれたり読み出されたりするデータである。
【００４２】
また、
Ｑ＝Ｄ／Ａ…（２）
すなわち、ＤをＡで割った場合の商Ｑが算出される。Ｑは、ブロック単位で数えて何番目のブロックであるかを表す値である。
【００４３】
（１）式で算出されたＰと、データサイズＢとが比較される。以下、Ｐ＜Ｂであるか否か（アクセス先仮想ＬＢＡは、管理情報が書かれる場所か或いはユーザデータが書かれる場所か）により、計算される式が異なる。
【００４４】
すなわち、Ｐ＜Ｂであれば、以下の（３）式及び（４）式、
Ｅ＝（Ｂ×Ｑ＋Ｐ）／Ｃ…（３）
Ｆ＝（Ｂ×Ｑ＋Ｐ）％Ｃ…（４）
すなわち、（Ｂ×Ｑ＋Ｐ）をＣで割った場合の商Ｅと、（Ｂ×Ｑ＋Ｐ）をＣで割った場合の余りＦとがそれぞれ算出される。Ｅは、仮想ページ＃であり、Ｆは、該仮想ページ＃の仮想ページにおけるＬＢＡである。算出されたＥ及びＦと、仮想ページの記憶容量Ｃと、仮想スロットの記憶容量とを用いれば、仮想スロット＃を特定することができる。すなわち、仮想ページの記憶容量Ｃを仮想スロットの記憶容量で割れば、仮想ページを構成する仮想スロットの数が求まり、仮想スロットの数に仮想スロット＃を掛けて、一つの仮想ページにおけるＦの値に対応した仮想スロット数を加算すれば、仮想ボリュームにおける先頭からの仮想スロット＃が求まる。本実施形態では、仮想ページ＃、仮想スロット＃、実ページ＃及び実スロット＃は、それぞれ、例えば、０、１、２、…のように、０から連番で整数の番号となっている。
【００４５】
一方、上述のＰとＢの比較の結果、Ｐ＜Ｂでなければ、以下の（５）式及び（６）式、
Ｇ＝（（Ａ−Ｂ）×Ｑ＋Ｐ−Ｂ）／Ｃ…（５）
Ｈ＝（（Ａ−Ｂ）×Ｑ＋Ｐ−Ｂ）％Ｃ…（６）
すなわち、（（Ａ−Ｂ）×Ｑ＋Ｐ−Ｂ）をＣで割った場合の商Ｇと、（（Ａ−Ｂ）×Ｑ＋Ｐ−Ｂ）をＣで割った場合の余りＨとがそれぞれ算出される。Ｇは、仮想ページ＃であり、Ｈは、該仮想ページ＃の仮想ページにおけるＬＢＡである。これら算出されたＧ及びＨを基に、前述したＥ及びＦを用いる方法と同様の方法で、仮想スロット＃を算出することができる。
【００４６】
以上のようにして算出された仮想スロット＃と、仮想ボリュームのフォーマットの際に算出された変換パラメータとを使用することで、仮想スロット＃を実スロット＃に変換することができる。
【００４７】
ところで、仮想ボリュームのフォーマットの方式は、仮想ボリュームを使用するファイルシステムによって異なる。例えば、図６Ａ及び図６Ｂに例示する第一のフォーマット方式もあれば、図９Ａ及び図９Ｂに例示する第二のフォーマット方式もある。
【００４８】
第一のフォーマット方式によれば、或る仮想スロットから一つの管理情報が連続的に書かれた後に、該或る仮想スロットから所定間隔遷移した先の仮想スロットから再び一つの管理情報が連続的に書かれるといったことが繰り返される。それにより、複数の管理情報が所定間隔で仮想ボリュームに書かれる。
【００４９】
第二のフォーマット方式によれば、複数の管理情報のそれぞれの部分が、所定間隔毎に書かれ、次に、それら複数の管理情報のそれぞれの次の部分が、所定間隔毎に書かれるといったことが、複数の管理情報の全てが書かれるまで繰り返される。具体的には、例えば、第一の管理情報の第一部分が第一の仮想スロットに書かれ、第二の管理情報の第一部分が、第一の仮想スロットから所定仮想スロット分離れた第二のスロットに書かれる。こういったことが全ての管理情報の第一部分について行われた後、第一の管理情報の、第一部分の次の第二部分が、第一の仮想スロットの次の第三の仮想スロットに書かれ、第二の管理情報の第二部分が、第二の仮想スロットから所定仮想スロット分離れた第四の仮想スロットに書かれる。こういった処理が、複数の管理情報について繰り返されることにより、複数の管理情報が所定間隔で仮想ボリュームに書かれる。
【００５０】
いずれのフォーマット方式でも、管理情報が所定間隔で書かれていく。ここで、格別の工夫が無いと、フォーマットの際に割り当てられた実ページに書かれる管理情報のサイズは小さいので、該実ページに未使用領域が多く残ってしまうという問題が生じるが、本実施形態では、以下のようにして、その問題を解消することができる。すなわち、仮想ボリュームに一旦実ページを割り当てた後は、仮想ボリュームのどこに管理情報部分の書込みが発生しても、該割り当て済みの実ページに続けて管理情報部分を書いていく。これにより、実ページに未使用領域が生じることを抑えることができる。以下、第一及び第二のフォーマット方式を例に採り詳述する。なお、その際、一つのスロットに書かれるのは、管理情報の一部分或いはユーザデータの一部分であるので、適宜に、「管理情報部分」或いは「ユーザデータ部分」という表現を使用する。
【００５１】
第一のフォーマット方式では、図６Ａに例示するように、仮想スロット＃０〜２に管理情報が書かれた場合、実スロット＃０〜３で構成される実ページ６０１の上位３つの実スロット＃０〜２に管理情報が書かれ、一つの実スロット＃３が余る。次に、仮想スロット＃ｍ〜ｍ＋２に管理情報が書かれた場合、仮想スロット＃ｍに書かれた管理情報部分は、上記余っている実スロット＃３に書かれ、残りの管理情報部分は、実スロット＃４〜７で構成される実ページ６０１が新たに割り当てられそのうちの実スロット＃４〜５に書かれる。このようにして、一つの実ページに連続的に管理情報部分が書かれていく。なお、図６Ａにおいて、「必ずまとめて割り当てる領域」とは、仮想ボリュームが未フォーマットの場合に初めて該仮想ボリュームに対する書込み要求を受信してから書込み要求をＮ回受信するまでに割り当てる実ページを示し、「領域をまとめて割り当てる」とは、実ページを割り当てることにより複数の実スロットがまとめて割り当ることを意味する。また、図６Ａにおいて、「変換パラメータ群確立」とは、Ｎ回書込み要求を受信した場合には後述する各種変換パラメータが求まることを意味する。また、Ｎは、書込み要求の受信回数（換言すれば、ホスト計算機１０１からの書込みの回数）の閾値である。Ｎの値は、各種変換パラメータが求まるのに必要な最低限以上の数とすることができ（図６Ｂ参照）、具体的には、２以上の整数である。これらのことは、図９Ａ及び図９Ｂについても同様である。また、図６Ａにおいて、仮想ボリュームから各ページに対する実線矢印は、書込み要求をＮ回受信した場合の割り当ての結果を示し、仮想ボリュームからページに対する点線矢印は、それ以降に書込み要求を受信した場合の割り当ての結果を示す。これらのことは、図７Ａ、図９Ａ及び図１０Ａについても同様である。
【００５２】
図７Ａは、第一のフォーマット方式において算出される変換パラメータ種類の説明図である。
【００５３】
第一のフォーマット方式において算出される変換パラメータ種類として、管理情報サイズと周期幅とがある。
【００５４】
「管理情報サイズ」とは、管理情報のデータサイズである。管理情報サイズは、例えば、一つの仮想ページにおいて管理情報が連続して占める仮想スロットの数と一つの仮想スロットのサイズとを掛けることにより算出することができる。
【００５５】
「周期幅」とは、或る管理情報が占める複数の仮想スロットのうちの先頭仮想スロット（他の所定位置の仮想スロットでも良い）と、次の管理情報が占める複数の仮想スロットのうちの先頭仮想スロット（他の所定位置の仮想スロットでも良い）との間の間隔である。周期幅は、例えば、先頭仮想スロット同士の番号の差（例えばｍ−０）で表すことができる。なお、一般に、「周期」という言葉は、時間的な間隔を表すのに用いられるが、本実施形態では、便宜上、管理情報の書込み先の間隔を表すのに用いている。
【００５６】
第一のフォーマット方式では、前述したように、一つの管理情報が連続的に書かれた後に、次の一つの管理情報が連続的に書かれるようになっているので、上記Ｎの最小値は、２とすることができる。つまり、未フォーマットの状態で書込み要求を２回受信した場合に、管理情報サイズ及び周期幅を算出することができる。なお、第一のフォーマット方式では、Ｎという閾値が無くても良く、その際には、管理情報の書込み先が連続的でなくなったときに、各種変換パラメータを算出しても良い。以下、仮想ボリュームに対する書込み要求を「ホストライト」と称することがある。また、図７Ａにおいて、「割当サイズ（ユーザ設定）」とは、ページの記憶容量はユーザ可変の値であっても良いことを意味する。
【００５７】
これらの変換パラメータを用いて、仮想スロット＃を管理情報＃に変換する第一の変換を行うことができるし、逆に、管理情報＃を仮想スロット＃に変換する第二の変換を行うことができる。それぞれの変換のための変換式を、図７Ｂに示している。すなわち、
（第一の変換：仮想スロット#→管理情報#）
周期#＝仮想スロット#／周期幅
周期オフセット＝仮想スロット#−周期#×周期幅
管理情報#＝周期#×管理情報サイズ＋周期オフセット
（第二の変換：管理情報#→仮想スロット#）
周期#＝管理情報#／管理情報サイズ
周期オフセット＝管理情報#−周期#×管理情報サイズ
仮想スロット#＝周期#×周期幅＋周期オフセット
である。
【００５８】
なお、「管理情報＃」とは、実スロット＃のうち管理情報部分が書かれる実スロットの番号である。また、複数の管理情報が書かれる場合、管理情報同士の間隔も複数個生じ得るが、周期＃とは、何番目の間隔（周期）であるかを特定するための番号である。周期オフセットとは、各周期毎において、先頭仮想スロット＃を０とした場合の仮想スロット＃を表す。
【００５９】
また、本実施形態では、管理情報＃に対し、図１２Ａに示すように、データ＃がある。「データ＃」とは、実スロット＃のうちユーザデータ部分が書かれる実スロットの番号である。本実施形態では、仮想ボリュームにおいて、管理情報部分が書かれる実ページの集合が、管理情報領域としてあり、ユーザデータ部分が書かれる実ページの集合が、データ領域としてある。管理情報領域を構成する複数の実ページにそれぞれ対応した複数の仮想ページは、仮想ボリュームにおいて一定の間隔で散在する。管理情報が周期的に書かれるためである。管理情報領域を構成する各実ページの各実スロットの実スロット＃が、管理情報＃であり、データ領域を構成する各実ページの各実スロットの実スロット＃が、データ＃である。例えば、図１２Ａに示すように、実スロット＃が０〜ｎ（ｎは１５以降の整数）とある場合、０〜１１が管理情報＃であり、１２〜ｎが、データ＃となる。
【００６０】
図１２Ｂに、仮想スロット＃をデータ＃に変換する第三の変換のための変換式、及び、データ＃を仮想スロット＃に変換する第四の変換のための変換式を示す。すなわち、
（第三の変換：仮想スロット#→データ#）
周期#＝スロット#／周期幅
周期オフセット＝スロット#−周期#×周期幅−管理情報サイス゛
データ#＝周期#×(周期幅−管理情報サイス゛）＋周期オフセット+管理情報データ数
（第四の変換：データ#→仮想スロット#）
周期#＝（データ#−管理情報データ数）／周期幅
周期オフセット＝（データ# −管理情報データ数）−周期#×(周期幅−管理情報サイス゛）
仮想スロット#＝周期#×周期幅＋周期オフセット
である。ユーザデータ部分も、実ページに詰めて書かれる。
【００６１】
なお、「管理情報データ数」とは、管理情報の数のことであり、管理情報が周期的な間隔で書かれる関係上、周期＃の数（図１２Ａの例によれば、４）と置換しても良い。
【００６２】
また、もし、管理情報領域を構成する実ページにおいて、管理情報部分が書かれない実スロットが生じても（つまり実スロットに余りが生じても）、ＩＯ制御プログラム５０１は、ユーザデータ部分をその実スロットには書かず、新たに別の実ページを割り当て、その実ページにユーザデータ部分を書くようにする。
【００６３】
図８は、ＩＯ制御プログラム５０１が行う処理の流れの一例を示す。なお、この図では、ステップを「Ｓ」と略記している。
【００６４】
仮想ボリュームがホスト計算機１０１にマウントされた後に、該仮想ボリュームに対するホストライトが発生し得る。
【００６５】
ＩＯ制御プログラム５０１は、ホストライトがあった場合（Ｓ１０１）、仮想ボリュームの初期化済み（フォーマット済み）であるか否かを判断する（Ｓ１０２）。初期化済みであると判断した場合は（Ｓ１０２でｙｅｓ）、Ｓ１１１に進み、初期化済みでないと判断した場合は（Ｓ１０２でｎｏ）、Ｓ１０３に進む。Ｓ１０２でｎｏの場合としては、初期化が始まっていないか、或いは、初期化中かである。
【００６６】
Ｓ１０３では、ＩＯ制御プログラム５０１は、ホストライトの回数（以下、ライト回数）がＮ回より上かどうかを判別する。ＩＯ制御プログラム５０１は、例えば、仮想ボリュームに対するホストライトの回数をカウントしており、そのカウント値と閾値Ｎとを比較することにより、その判別を行うことができる。ライト回数がＮより上であれば（Ｓ１０３でｙｅｓ）、Ｓ１０７に進み、そうでなければ（Ｓ１０３でｎｏ）、Ｓ１０４に進む。
【００６７】
Ｓ１０４では、ＩＯ制御プログラム５０１は、ライト回数がＮかどうかを判別する。ライト回数がＮであれば（Ｓ１０４でｙｅｓ）、Ｓ１０６に進み、そうでなければ（Ｓ１０４でｎｏ）、Ｓ１０５に進む。
【００６８】
Ｓ１０５では、ＩＯ制御プログラム５０１は、今回のホストライトの位置（つまり書込み先を表す情報）を、ホストライト位置情報１３１Ａに含める。その後、Ｓ１０１に戻る。なお、ホストライト位置情報１３１Ａでは、例えば、時系列で（ホストライト回数の順序で）、ホストライト位置の履歴が並ぶ。これにより、ホストライト位置がどのように変化したかがわかり、故に、フォーマット方式が第一と第二のいずれであるかを判別することができる。
【００６９】
Ｓ１０６では、ＩＯ制御プログラム５０１は、ホストライト位置情報１３１Ａに含まれているホストライト位置の履歴（ホストライト位置の変化の仕方）から、フォーマット方式が第一のフォーマット方式であることを判別し、第一のフォーマット方式に対応した各種変換パラメータとして、前述した管理情報サイズ及び周期幅を算出する。その後、Ｓ１０１に戻る。
【００７０】
Ｓ１０７では、ＩＯ制御プログラム５０１は、ホストライト位置が管理情報領域かどうかを判断する。具体的には、例えば、ＩＯ制御プログラム５０１は、算出された管理情報サイズ（仮想スロットの数）と周期幅を基に、Ｎ＋１回目以降のホストライトで管理情報が書かれる複数の仮想スロット＃を予測し、今回のホストライト位置に対応した仮想スロット＃が、予測された複数の仮想スロット＃にあるかどうかを判断する。今回のホストライト位置に対応した仮想スロット＃を求めるためには、例えば、図５を参照して説明した各式を使用することになるが、このＳ１０７の判断では、Ｐ＜Ｂとなるか否かを判断するだけでも良い）。
【００７１】
今回のホストライト位置が管理情報領域であると判断した場合には（Ｓ１０７でｙｅｓ）、Ｓ１０８に進み、そうでない場合には（Ｓ１０７でｎｏ）、Ｓ１０９に進む。
【００７２】
Ｓ１０８では、ＩＯ制御プログラム５０１は、管理情報を割当て済みの実ページに詰めて書く。割当て済み実ページが満杯であれば、新たに未割当ての実ページを割り当て、その実ページに管理情報を書く。
【００７３】
Ｓ１０９では、ＩＯ制御プログラム５０１は、管理情報領域へのホストライトの回数を所定の記憶域に記憶させる（例えば、ホストライト位置情報１３１Ａに含める）。そして、その仮想ボリュームの初期化を終了する（Ｓ１１０）。なお、ホストライト回数は、図１２Ａ及び図１２Ｂにおける前述した管理情報データ数を求めるために使用することができる。管理情報データ数は、先頭データ（ユーザデータの書かれる先頭位置）を決めるためのオフセットとして使用することができる（管理情報データ数は、データのアドレス変換を行うために必要となる）。
【００７４】
Ｓ１１１では、ＩＯ制御プログラム５０１は、今回のホストライト位置が管理情報領域かどうかを判断する。具体的には、例えば、ＩＯ制御プログラム５０１は、Ｓ１０７と同様の方法で判断する。今回のホストライト位置が管理情報領域であると判断した場合には（Ｓ１１１でｙｅｓ）、Ｓ１１２に進み、そうでない場合には（Ｓ１１１でｎｏ）、Ｓ１１３に進む。
【００７５】
Ｓ１１２では、ＩＯ制御プログラム５０１は、今回のホストライト位置（仮想スロット＃）に対応する管理情報＃を第一の変換の式（図７Ｂ参照）を用いて算出し、且つ、ホストライト位置（仮想ページ＃）に対応する実ページ＃をアドレス変換テーブルから取得し、管理情報＃及び実ページ＃から特定される場所に、管理情報部分を書く。
【００７６】
Ｓ１１３では、ＩＯ制御プログラム５０１は、今回のホストライト位置（仮想スロット＃）に対応するデータ＃を第三の変換の式（図１２Ｂ参照）を用いて算出し、且つ、ホストライト位置（仮想ページ＃）に対応する実ページ＃をアドレス変換テーブルから取得し、管理情報＃及び実ページ＃から特定される場所に、ユーザデータ部分を書く。
【００７７】
以上が、第一のフォーマット方式での実ページの割当てと書込みについての説明である。なお、上記の例では、ホストライトを例に採り説明したが、ホストライトに限らず、ホストリード（すなわち、ホスト計算機から仮想ＬＢＡを指定した読出し要求）があった場合にも、第一の変換及びアドレス変換テーブルの参照が実行される。
【００７８】
次に、第二のフォーマット方式での実ページの割当てと書込みについて説明する。なお、その際、第一のフォーマット方式で説明済みの点については、説明を省略或いは簡略し、相違点を主に説明することにする。
【００７９】
第二のフォーマット方式では、図９Ａ及び図９Ｂに例示するように、書込まれる管理情報の数と同じ数だけホストライト位置が所定間隔でジャンプすること（連続的にならずに一定間隔で遷移すること）が、管理情報を構成する管理情報部分の数と同じ回数繰り返される。図９Ａの例では、管理情報の数が４であり、一つの管理情報を構成する管理情報部分の数が３なので、ホストライト位置（仮想スロット＃）が４回ジャンプすることが３回繰り返される。その繰り返しの際の初めのホストライト位置は、前回の初めのホストライト位置の次のホストライト位置となる。各回でのホストライトによって書かれた管理情報部分が、なるべく一つの実ページに書かれる。
【００８０】
より具体的に言うと、仮想スロット＃０、ｍ、２ｍ、３ｍにそれぞれ書かれる４つの管理情報部分（４つの管理情報のそれぞれの初めの一部分）が、初めに割り当てられた実ページの４つの実スロットにそれぞれ書かれる。次に、仮想スロット＃１、ｍ＋１、２ｍ＋１、３ｍ＋１にそれぞれ書かれる４つの管理情報部分（４つの管理情報のそれぞれの次の一部分）が、次に割り当てられた実ページの４つの実スロットにそれぞれ書かれる。最後に、仮想スロット＃２、ｍ＋２、２ｍ＋２、３ｍ＋２にそれぞれ書かれる４つの管理情報部分（４つの管理情報のそれぞれの最後の一部分）が、最後に割り当てられた実ページの４つの実スロットにそれぞれ書かれる。これにより、仮想ボリュームの初期化の完了となる。
【００８１】
図１０Ａは、第二のフォーマット方式において算出される変換パラメータ種類の説明図である。
【００８２】
第二のフォーマット方式において算出される変換パラメータ種類としては、管理情報サイズと周期幅のうち、管理情報サイズに代えて、周期の総数がある。「周期の総数」とは、周期幅の数であり、言い換えれば、管理情報の数である。
【００８３】
これらの変換パラメータを用いて、仮想スロット＃を管理情報＃に変換する第五の変換を行うことができるし、逆に、管理情報＃を仮想スロット＃に変換する第六の変換を行うことができる。それぞれの変換のための変換式を、図１０Ｂに示している。すなわち、
（第五の変換：仮想スロット#→管理情報#）
周期#＝仮想スロット#／周期幅
周期オフセット＝仮想スロット#−周期#×周期幅
管理情報#＝周期オフセット×管理情報数＋周期#
（第六の変換：管理情報#→仮想スロット#）
周期オフセット＝管理情報#／周期の総数
周期#＝管理情報#−周期オフセット×周期の総数
仮想スロット#＝周期#×周期幅＋周期オフセット
である。
【００８４】
図１１は、ＩＯ制御プログラム５０１が行う処理の流れの一例を示す。この図では、図８と同じ処理が行われるステップには図８で付した番号と同一の番号を付している。
【００８５】
この流れでは、図８のＳ１０６において、ホストライト位置情報１３１Ａから、第二のフォーマット方式であることを判断することができる。そのため、この流れでは、算出される変換パラメータ種類が異なるし（それ故、図１１ではＳ１０６´としている）、Ｓ１０９とＳ１１０との間に、Ｓ１０９Ｂがある。Ｓ１０９Ｂでは、管理情報のサイズが算出される。これにより、第二のフォーマット方式で算出されていない管理情報サイズが算出される。管理情報サイズは、データのアドレス変換を行うために必要となる。
【００８６】
以上が、第二のフォーマット方式での実ページの割当てと書込みについての説明である。
【００８７】
以上の説明によれば、第一及び第二のフォーマット方式のいずれであっても、フォーマットの際に、実ページに未使用領域が生じることを抑えることができる。
【００８８】
ところで、第一のストレージシステム１０５Ａは、前述したように、論理ボリューム間でのデータコピーを実行することができる（以下、論理ボリュームを「ＶＯＬ」と略記することがある）。コピー元ＶＯＬは、第一のストレージシステム１０５Ａに存在し、コピー先ＶＯＬは、ストレージシステム１０５Ａ、１０５Ｂのどちらに存在しても良い。コピー先ＶＯＬが第一のストレージシステム１０５Ａに存在する場合には、ローカルコピー（ストレージシステム１０５Ａ内でのデータコピー）となり、コピー先ＶＯＬが第二のストレージシステム１０５Ａに存在する場合には、リモートコピーとなる。
【００８９】
ここで、例えば、コピー元ＶＯＬ及びコピー先ＶＯＬが仮想ＶＯＬであり、コピー先ＶＯＬが第二のストレージシステム１０５Ｂに存在する場合、リモートコピーの方法として以下の方法が考えられる。すなわち、第一の方法として、実ページ単位でリモートコピーを実行し、リモートコピー実行後に、各コピー先実ページを仮想ＶＯＬに割り当てる方法や、第二の方法として、実ページの各実スロット＃を仮想スロット＃に変換し、仮想スロット＃から仮想ＬＢＡを算出し、該仮想ＬＢＡを指定した書込みを、コピー先ＶＯＬに対して発行する方法が考えられる。第一の方法では、第二の方法のような変換処理を省略できるので、第二の方法に比して高速なコピーが期待できるが、第二のストレージシステム１０５Ｂにおいて、仮想ボリュームのどこに管理情報が書かれているのかを把握することができない。言い換えれば、ホストから見える配置（仮想ボリュームのどこに管理情報を書込んだか等）と実際の格納配置との対応関係を第二のストレージシステム１０５Ｂで維持することができない。一方、第二の方法では、コピー先ＶＯＬで、コピー元ＶＯＬと同じように書込みが発生するので、第一の方法のような問題が生じないようにすることができるものの、上記のような変換処理をいちいち行う必要があるので、コピーに長い時間を要してしまうおそれがある。
【００９０】
そこで、本実施形態では、コピー元ＶＯＬが仮想ＶＯＬである場合のコピー処理が工夫されている。以下、詳述する。
【００９１】
例えば、コピー制御プログラム５０３が、ホスト計算機１０１（或いは図示しない管理計算機）から送信されたコピー指示を受信し、そのコピー指示に従ってＶＯＬ間コピーをする場合、コピー先ＶＯＬが第一のストレージシステム１０５Ａにあるならば、ローカルコピーを実行し、コピー先ＶＯＬが第二のストレージシステム１０５Ｂにあるならば、リモートコピー制御プログラム５０５にリモートコピーを実行させる。コピー制御プログラム５０３は、コピー指示を受信した際、コピー元ＶＯＬが仮想ＶＯＬであるか実ボリュームであるかを判別することができる。コピー元ＶＯＬが仮想ＶＯＬであると判別された場合に、図１６の処理が実行される。
【００９２】
図１６に、コピー元ＶＯＬが仮想ＶＯＬであると判別された場合に実行される処理の流れの一例を示す。
【００９３】
コピー制御プログラム５０３が、コピー元ＶＯＬが未フォーマットであるか否かを判断する（Ｓ３０１）。未フォーマットであると判断した場合（Ｓ３０１でｙｅｓ）、Ｓ３０２に進み、そうではないと判断した場合（Ｓ３０１でｎｏ）、Ｓ３０５に進む。
【００９４】
Ｓ３０２では、コピー制御プログラム５０３は、コピー先ＶＯＬが同一筐体内（つまり第一のストレージシステム１０５Ａ内）かどうかを判断する。これは、例えば、図示しないペア管理テーブル（例えば、コピー元ＶＯＬの識別子、該コピー元ＶＯＬを備えるストレージシステムの識別子、コピー先ＶＯＬの識別子、該コピー先ＶＯＬを備えるストレージシステムの識別子）を参照することにより、判断することができる。同一筐体内と判断した場合（Ｓ３０２でｙｅｓ）、Ｓ３０３に進み、そうではないと判断した場合（Ｓ３０２でｎｏ）、Ｓ３０４に進む。Ｓ３０３及びＳ３０４で実行される処理については後述する。
【００９５】
Ｓ３０５では、コピー制御プログラム５０３は、コピー元ＶＯＬが初期化中か否かを判断する。これは、例えば、コピー元ＶＯＬに対応した仮想ボリューム構成情報１３３Ａを参照し、そこに、変換パラメータ群が記録されているか否かにより、行うことができる。初期化中と判断した場合（Ｓ３０５でｙｅｓ）、Ｓ３０６に進み、初期化済みと判断した場合（Ｓ３０５でｎｏ）、Ｓ３０８に進む。
【００９６】
Ｓ３０６では、Ｓ３０２と同様の判断が実行される。Ｓ３０６でｎｏの場合、Ｓ３０７に進み、Ｓ３０６でｙｅｓの場合、変換パラメータ群が登録されるのを待ち、その後、Ｓ３１１へ進む。Ｓ３０７で実行される処理については後述する。
【００９７】
Ｓ３０８では、コピー制御プログラム５０３は、割当て済み比率が所定の比率を超えるか否かを判断する。割当て済み比率とは、コピー元ＶＯＬの記憶容量に対する割当て済み容量の比率である。割当て済み容量とは、コピー元ＶＯＬに割当て済みの一以上の実ページのトータル記憶容量である。超えていないと判断した場合（Ｓ３０８でｎｏ）、Ｓ３０９に進み、超えていると判断した場合（Ｓ３０８でｙｅｓ）、Ｓ３１２に進む。Ｓ３１２で実行される処理については後述する。
【００９８】
Ｓ３０９では、Ｓ３０２と同様の判断が実行される。Ｓ３０９でｎｏの場合、Ｓ３１０に進み、Ｓ３０９でｙｅｓの場合、Ｓ３１１へ進む。Ｓ３１０及びＳ３１１で実行される処理については後述する。
【００９９】
図１６において、Ｓ３０４、Ｓ３０７、Ｓ３１０は、リモートコピーに特化した処理であり、Ｓ３１２は、リモートコピー及びローカルコピーのいずれにも適した処理であり、Ｓ３０３、Ｓ３１１は、ローカルコピーに特化した処理である。以下、各処理について詳細に説明する。
【０１００】
＜図１６のＳ３０４の処理：ケース１の処理＞。
【０１０１】
図１３Ａを参照して説明する。ケース１とは、仮想ＶＯＬが未フォーマットの状態のときに、コピー元仮想ＶＯＬからコピー先仮想ＶＯＬへのコピー指示を受信したケースである。このケース１では、コピー元仮想ＶＯＬの初期化の際、第一のストレージシステム１０５Ａだけでなく、第二のストレージシステム１０５Ｂでも、図８或いは図１１に記載の処理が実行される。具体的には、例えば、コピー元仮想ＶＯＬにホストライトが発生した場合、図１７Ｂに例示するように、リモートコピー制御プログラム５０５が、そのホストライトで指定された仮想ＬＢＡを同じ仮想ＬＢＡを指定したホストライトをコピー先仮想ＶＯＬに発生させる。その際、既存のリモートコピー技術を採用することができる。すなわち、いわゆる同期型のリモートコピーであっても良いし非同期型のリモートコピーであっても良い。これにより、コピー元仮想ＶＯＬでのフォーマットの進行に応じて、コピー先仮想ＶＯＬでもフォーマットが進行し、その際に、第二のストレージシステム１０５Ｂで図８或いは図１１の処理が実行される。その結果、第二のストレージシステム１０５Ｂの共有メモリ１１１Ｂにも、ホストライト位置情報１３１Ｂや、コピー先仮想ＶＯＬに対応した仮想ボリューム構成情報１３３Ｂが生成される。
【０１０２】
＜図１６のＳ３０７の処理：ケース２の処理＞。
【０１０３】
図１３Ｂを参照して説明する。ケース２とは、仮想ＶＯＬがフォーマット中の状態（変換パラメータ群が未登録の状態）のときに、コピー元仮想ＶＯＬからコピー先仮想ＶＯＬへのコピー指示を受信したケースである。このケース２では、変換パラメータ群が、算出され、コピー元仮想ＶＯＬに対応した仮想ボリューム構成情報１３３Ａに登録されるまで待ち、その登録後に、リモートコピー制御プログラム５０５により、ページ単位でのコピーを実行し、且つ、登録された変換パラメータ群を、第二のストレージシステム１０５Ｂに送信する。それにより、第二のストレージシステム１０５Ｂにおいて、コピー先仮想ＶＯＬ１０５Ｂに対応した仮想ボリューム構成情報１３３Ｂに、変換パラメータ群が登録される。ページ単位のコピーについては、後述のケース３で説明する。
【０１０４】
＜図１６のＳ３１０の処理：ケース３の処理＞。
【０１０５】
図１３Ｃを参照して説明する。ケース３とは、仮想ＶＯＬがフォーマット済みの状態（変換パラメータが登録済みの状態）のときに、コピー元仮想ＶＯＬからコピー先仮想ＶＯＬへのコピー指示を受信したケースである。このケース３では、リモートコピー制御プログラム５０５により、図１８Ｂに例示するように、ページ単位でのコピーを実行し、且つ、登録された変換パラメータ群を、第二のストレージシステム１０５Ｂに送信する。具体的には、例えば、リモートコピー制御プログラム５０５が、実スロット＃の若い実ページから優先的に、実ページ内のデータを第二のストレージシステム１０５Ｂに転送する。第二のストレージシステム１０５Ｂでは（例えばＣＨＡ１０９Ｂ２で実行される所定のプログラムにより）、未割当ての実ページが選択され、選択された実ページに、転送されて来たデータが格納される。その際、コピー元の実ページとコピー先の実ページのそれぞれのサイズが違っていてもよい。その場合にも、コピー先の実ページに、データが詰めて書かれ、満杯になった場合には、新たに未割当ての実ページが選択され、データが書かれていく。そして、コピー先仮想ＶＯＬにおいて仮想ページ＃の若い順に、先に満杯になった実ページが割り当てられていく。具体的には、例えば、初めに実ページ＃３が満杯になり、その次に実ページ＃１が満杯になった場合、仮想ページ＃０である初めの仮想ページには、実ページ＃３の実ページが割り当てられ、次の仮想ページ（仮想ページ＃１）には、実ページ＃１の実ページが割り当てられる。この割当てに応じて、コピー先仮想ＶＯＬに対応したアドレス変換テーブルが構築される。
【０１０６】
また、このケース３では、ケース２と同様、変換パラメータ群が、第一のストレージシステム１０５Ａから第二のストレージシステム１０５Ｂに転送され、コピー先仮想ＶＯＬに対応した仮想ボリューム構成情報１３３Ｂに、その変換パラメータ群が登録される。
【０１０７】
以上の一連の処理により、実スロット＃（管理情報＃、データ＃）から仮想スロット＃に変換する処理をいちいちすることなくコピーできるので、高速なコピーが期待でき、且つ、図１４に示すように、コピー先の第二のストレージシステム１０５Ｂでも、ホストから見える配置と実際の格納は位置との対応関係を維持することができる。すなわち、コピー元の第一のストレージシステム１０５Ａでは、ホスト計算機１０１からコピー元仮想ＶＯＬの仮想ＬＢＡを指定したアクセス要求があった場合、その仮想ＬＢＡを用いて仮想ページ＃及び仮想スロット＃が算出され、仮想スロット＃が変換パラメータ群を用いて管理情報＃に変換される。また、コピー元仮想ＶＯＬに対応したアドレス変換テーブルから、仮想ページ＃に対応した実ページ＃が特定される。コピー先の第一のストレージシステム１０５Ｂでは、前述したように、変換パラメータ群が登録され、且つ、アドレス変換テーブルが構築される。これにより、図１４に示すように、コピー先仮想ＶＯＬがホスト計算機１０１にマウントされた場合に、コピー元仮想ＶＯＬと同じように見せることができる。また、そのホスト計算機１０１から、コピー先仮想ＶＯＬの仮想ＬＢＡを指定した読出し要求を受けた場合、ホストから見える配置と実際の格納配置との対応関係が維持されているので、ホスト計算機１０１の所望のデータを確実に提供することができる。
【０１０８】
＜図１６のＳ３１２の処理：ケース４の処理＞。
【０１０９】
図１３Ｄを参照して説明する。ケース４とは、コピー元仮想ＶＯＬでの割当て済み比率が所定の比率を超えているのときに、コピー元仮想ＶＯＬからコピー先仮想ＶＯＬへのコピー指示を受信したケースである。この場合、コピー制御プログラム５０３は、コピー指示元（例えばホスト計算機１０１）に対し、コピー先ＶＯＬが仮想ＶＯＬとなっている場合には、コピー先ＶＯＬを実ボリュームにすることを推奨する。コピー指示元では、例えば、コピー先ＶＯＬを実ボリュームにすることを推奨するメッセージが表示される。そのメッセージに応答して、実ＶＯＬがユーザによって選択された場合、コピー先を実ＶＯＬとしたコピー指示が第一のストレージシステム１０５Ａに発行される。そして、コピー元仮想ＶＯＬからコピー先実ＶＯＬへのＶＯＬ間コピーが実行される。実ボリュームを推奨する理由としては、
（ａ）コピー先ＶＯＬを仮想ＶＯＬとしても、割当て済み比率が所定比率を超えているので、節約できる（未割当てとする）実ページの数をあまり節約できないこと。
（ｂ）コピー先ＶＯＬを仮想ＶＯＬとすると、ホスト計算機からコピー先仮想ＶＯＬに対してアクセスが或る都度に、所定の変換式を使った変換処理を実行しなければならず、そのため、アクセス性能が低下してしまう。
の２点がある。このケース４の処理は、図１６のＳ３０８でｙｅｓの場合に実行され、Ｓ３０８でｎｏの場合には、仮想ＶＯＬ間コピーが行われる。すなわち、割当て済み比率が所定比率以下の場合には、第二のストレージシステム１０５Ｂにおいて、割当て済みの実容量を節約でき、割当て済み比率が所定比率を超えている場合には、第二のストレージシステム１０５Ｂにおいて、アクセス性能の低下を防止することができる。
【０１１０】
実施形態において、コピー元仮想ＶＯＬからコピー先実ＶＯＬへのＶＯＬ間コピーは、例えば、図１９のように行われる。すなわち、実スロット＃を仮想スロット＃に変換され、仮想スロット＃が仮想ＬＢＡに変換される。すなわち、実際の格納配置が、ホストから見える格納配置に変換し直される。そのホストから見える格納配置のまま、コピー先実ＶＯＬに対してコピーされる。これにより、コピー先実ＶＯＬでは、コピー元仮想ＶＯＬと異なり、ホストから見える配置も実際の格納配置も同じになる。
【０１１１】
＜図１６のＳ３０３の処理＞。
【０１１２】
図１７Ａを参照して説明する。コピー制御プログラム５０３が、ＩＯ制御プログラム５０１に以下の処理を実行させる。すなわち、ＩＯ制御プログラム５０１が、コピー元仮想ＶＯＬにホストライトが発生し、それにより、実ページにデータを書く場合、キャッシュメモリ１１３Ａ上でデータを二重化し、二重化されたデータを、２つの実ページにそれぞれ書く。その際、割り当てるのは、２つの実ページのうちの一方を、コピー元仮想ＶＯＬに割当て、他方を、コピー先仮想ＶＯＬに割り当てる。変換パラメータ群を算出した場合には、コピー元仮想ＶＯＬ及びコピー先仮想ＶＯＬにそれぞれ対応した仮想ボリューム構成情報１３３Ａに、変換パラメータ群を書く。
【０１１３】
＜図１６のＳ３１１の処理＞。
【０１１４】
図１８Ａを参照して説明する。コピー制御プログラム５０３が、コピー元仮想ＶＯＬに割当て済みの実ページの複製を生成する。具体的には、例えば、仮想ページ＃の若い順に、実ページ間のコピーを行う。より具体的には、例えば、未割当ての実ページを選択し、選択した実ページに、割当て済みの実ページ内のデータをコピーする。そして、その実ページを、コピー先仮想ＶＯＬの仮想ページ（コピー元の実ページが割り当てられている仮想ページ＃と同じ仮想ページ＃の仮想ページ）に割り当てる。その際、コピー先仮想ＶＯＬに対応したアドレス変換テーブルを更新する。仮想スロット＃と実スロット＃との変換のための変換パラメータ群は、コピー元仮想ＶＯＬに対応した変換パラメータ群と同じである（例えば、コピー元仮想ＶＯＬに対応した仮想ボリューム構成情報１３３Ａ中の変換パラメータ群が、コピー先仮想ＶＯＬに対応した仮想ボリューム構成情報１３３Ａにコピーされる）。これにより、コピー先仮想ＶＯＬをコピー元仮想ＶＯＬと同様にすることができる。
【０１１５】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【０１１６】
例えば、コピー元仮想ＶＯＬからコピー先実ＶＯＬへのデータコピーも、図１５に例示するように、仮想ＶＯＬ間コピーと同様に行われても良い。その場合、例えば、コピー先実ＶＯＬをコピー元として新たにコピー先仮想ＶＯＬとボリュームペアが形成された場合、変換パラメータ群を、新たなコピー先仮想ＶＯＬに適用することができる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態に係る計算機システムの構成を示す。
【図２】第一のストレージシステムと第二のストレージシステムとの接続構成と、共有メモリに記憶される制御情報の種類とを示す。
【図３】仮想ボリュームへの実領域の割当て方の説明図。
【図４】図４Ａは、仮想ボリュームへの実ページの割当てにおいて生じる課題の説明図。図４Ｂは、その課題を解決する方法の概要図。
【図５】ホスト計算機からのアクセス要求で指定されているアクセス先仮想ＬＢＡから仮想スロット＃を算出する方法の説明図。
【図６】図６Ａは、第一のフォーマット方式での実ページへの格納方法の説明図。図６Ｂは、第一のフォーマット方式におけるホストライト位置とホストライト回数との関係を示す図。
【図７】図７Ａは、第一のフォーマット方式での変換パラメータ種類の説明図。図７Ｂは、第一のフォーマット方式における仮想スロット＃と管理情報＃との変換式を示す。
【図８】図８は、ＩＯ制御プログラム５０１が行う処理の流れの一例を示す。
【図９】図９Ａは、第二のフォーマット方式での実ページへの格納方法の説明図。図９Ｂは、第二のフォーマット方式におけるホストライト位置とホストライト回数との関係を示す図。
【図１０】図１０Ａは、第二のフォーマット方式での変換パラメータ種類の説明図。図１０Ｂは、第二のフォーマット方式における仮想スロット＃と管理情報＃との変換式を示す。
【図１１】図１１は、ＩＯ制御プログラム５０１が行う処理の流れの一例を示す。
【図１２】図１２Ａは、ユーザデータの格納方法と管理情報領域及びデータ領域との説明図。図１２Ｂは、仮想スロット＃とデータ＃との変換式を示す。
【図１３】図１３Ａは、コピー元仮想ＶＯＬが未フォーマット状態のときのリモートコピーの処理の説明図。図１３Ｂは、コピー元仮想ＶＯＬについて変換パラメータ群が未登録の状態のときのリモートコピーの処理の説明図。図１３Ｃは、コピー元仮想ＶＯＬについて変換パラメータ群が登録済みの状態のときのリモートコピーの処理の説明図。図１３Ｄは、コピー元仮想ＶＯＬについての割当て済み比率が所定比率を超えている状態のときのリモートコピーの処理の説明図。
【図１４】図１３Ｂや図１３Ｃのリモートコピー処理が実行された場合にはコピー先の第二のストレージシステムにおいてコピー元の第一のストレージシステムにおける対応関係を維持することができることの説明図。
【図１５】コピー元仮想ＶＯＬからコピー先実ＶＯＬへのコピーの変形例と、該実ＶＯＬをコピー元として新たにコピー先仮想ＶＯＬにコピーする場合の処理の一例を示す。
【図１６】コピー元ＶＯＬが仮想ＶＯＬであると判別された場合に実行される処理の流れの一例を示す。
【図１７】図１７Ａは、図１６のＳ３０３の説明図。図１７Ｂは、図１６のＳ３０４の説明図。
【図１８】図１８Ａは、図１６のＳ３１１の説明図。図１８Ｂは、図１６のＳ３１０の説明図。
【図１９】仮想ＶＯＬから実ＶＯＬにコピーすることの説明図。
【図２０】ＣＨＡ１０９Ａ１及び１０９Ａ２の構成例を示す。
【符号の説明】
【０１１８】
１０１…ホスト計算機  １０５Ａ、１０５Ｂ…ストレージシステム  １０７…コントローラ部  １０９…チャネルアダプタ  １１１…共有メモリ  １１３…キャッシュメモリ  １１７…ディスクアダプタ  １１８…ストレージ部  １１９…物理的な記憶装置  １３５…実ページ管理情報  １３１…ホストライト位置情報  １３３…仮想ボリューム構成情報
【図１】
2008084053.tif 000003
【図２】
2008084053.tif 000004
【図３】
2008084053.tif 000005
【図４】
2008084053.tif 000006
【図５】
2008084053.tif 000007
【図６】
2008084053.tif 000008
【図７】
2008084053.tif 000009
【図８】
2008084053.tif 000010
【図９】
2008084053.tif 000011
【図１０】
2008084053.tif 000012
【図１１】
2008084053.tif 000013
【図１２】
2008084053.tif 000014
【図１３】
2008084053.tif 000015
【図１４】
2008084053.tif 000016
【図１５】
2008084053.tif 000017
【図１６】
2008084053.tif 000018
【図１７】
2008084053.tif 000019
【図１８】
2008084053.tif 000020
【図１９】
2008084053.tif 000021
【図２０】
2008084053.tif 000022