(57)【要約】【課題】  計算機に記憶装置が接続されたシステムにおいて、記憶装置内の記憶領域を計算機に効率的に割り当てる。【解決手段】  仮想化スイッチ１１は、仮想ボリュームの作成時に、仮想ボリュームに実領域を割当てず、後にホストプロセッサ１２が仮想ボリュームへ書き込みを行ったときに初めて、書き込みが行われた仮想ボリューム上の領域に実領域を割当てる。  さらに、仮想化スイッチ１１は、割当が不要となった実領域を解放する。また仮想化スイッチ１１は、入出力要求の内容に応じて、割当てる実領域の割当単位を小さくする。【選択図】  図２
2005011316.tif 000002
【特許請求の範囲】
【請求項１】
各々制御部とディスク装置とを有する複数のストレージシステムと、
前記複数のストレージシステムと接続される仮想化装置とを有するシステムであって、
前記仮想化装置は、計算機と接続される入力ポートと、ストレージシステムと接続される出力ポートと、入力ポートと出力ポート間でデータを転送する転送部と、制御部と、計算機からのアクセス要求の対象となる仮想ボリュームと該仮想ボリュームに割り当てられている前記複数のストレージシステム内の記憶領域との対応関係を記録したアクセス変換テーブルとを有しており、
前記制御部は、計算機から仮想ボリュームに対する書き込み要求を受信した際に、該書き込み要求に応じて、前記複数のストレージシステムが有する記憶領域を前記仮想ボリュームに割り当てると共に前記アクセス変換テーブルを更新し、
更新後の前記アクセス変換テーブルに基づいて、計算機から受信した前記書き込み要求を、前記仮想ボリュームに新たに割り当てられた記憶領域を有するストレージシステム宛ての書き込み要求に変換し、
前記転送部は、前記仮想ボリュームに新たに割り当てられた記憶領域を有するストレージシステムに対して、変換後の書き込み要求を送信するよう制御することを特徴とするシステム。
【請求項２】
計算機に接続される仮想化装置と、
前記仮想化装置に接続される複数のストレージ装置とを有し、
前記仮想化装置は、前記計算機からの要求に基づいて、前記計算機に所定の大きさの仮想ボリュームが割り当てられた旨の通知を発行し、
前記計算機から前記仮想ボリュームに対するアクセス要求を受信した際に、前記複数のストレージ装置内に存在する記憶領域を前記仮想ボリュームに割り当てて、前記計算機から受信したアクセス要求を、前記仮想ボリュームに割り当てた記憶領域を有するストレージ装置宛てのアクセス要求に変換して、該ストレージ装置に送信することを特徴とするシステム。
【請求項３】
請求項２記載のシステムであって、
前記所定の大きさの仮想ボリュームが割り当てられた旨の通知には、仮想ボリューム識別子と前記仮想ボリュームのサイズとが含まれており、
前記計算機から前記仮想ボリューム識別子を有するアクセス要求を受信した際に、前記仮想化装置は、該仮想ボリューム識別子によって特定される仮想ボリュームに前記複数のストレージ装置内に存在する記憶領域を割り当てて、前記計算機から受信したアクセス要求を、該仮想ボリュームに割り当てられた記憶領域を有するストレージ装置宛てのアクセス要求に変換して、該ストレージ装置に送信することを特徴とするシステム。
【請求項４】
請求項３記載のシステムであって、
前記仮想化装置は、仮想ボリュームと該仮想ボリュームに割り当てられている前記複数のストレージ装置内の記憶領域との対応関係を示すアクセス変換テーブルを有しており、
前記仮想ボリュームに前記複数のストレージ装置内に存在する記憶領域を割り当てた場合に、前記アクセス変換テーブルを更新することを特徴とするシステム。
【請求項５】
請求項４記載のシステムであって、
前記仮想化装置は、更新後のアクセス変換テーブルを参照して前記計算機から受信したアクセス要求を変換し、変換後のアクセス要求をストレージ装置に送信することを特徴とするシステム。
【請求項６】
請求項４記載のシステムであって、
前記仮想化装置は、前記アクセス変換テーブルを更新して、仮想ボリュームに割り当てられている記憶領域のうち、前記計算機に使用されなくなった記憶領域の割り当てを解放することを特徴とするシステム。
【請求項７】
請求項３記載のシステムであって、
前記仮想化装置は、ファイルシステムの初期化に基づく管理データの書き込み時には、前記計算機からアクセス要求を受信した際より小さい容量の記憶領域を前記仮想ボリュームに割り当てて、割り当てられた記憶領域に管理データを書き込むことを特徴とするシステム。
【請求項８】
請求項６記載のシステムであって、
前記仮想化装置は、ファイルシステムのログ情報を利用して、仮想ボリュームに割り当てられている記憶領域のうち、前記計算機に使用されなくなった記憶領域を特定することを特徴とするシステム。
【請求項９】
請求項３記載のシステムであって、
前記仮想化装置は更に、仮想ボリュームに割り当て可能な前記複数のストレージ装置内に存在する空き記憶領域の容量が記録された空き容量管理テーブルを有しており、前記計算機に該空き容量管理テーブルに記録されている情報を出力することを特徴とするシステム。
【請求項１０】
請求項９記載のシステムであって、
前記仮想化装置は、仮想ボリュームに前記複数のストレージ装置内に存在する記憶領域を割り当てた場合に、前記空き容量管理テーブルを更新することを特徴とするシステム。
【請求項１１】
複数のストレージ装置と、該複数のストレージに格納されているデータにアクセスする計算機に接続される仮想化装置であって、
計算機に接続される第一のポートと、
ストレージ装置に接続される第二のポートと、
第一のポートと第二のポートとの間のデータの転送を実行する転送部と、
制御部とを有しており、
前記第一のポートは計算機から仮想ボリュームに対する書き込み要求を受信し、
前記制御部は、受信した書き込み要求に基づいて、前記仮想ボリュームに前記複数のストレージ装置に存在する記憶領域を割当てて、受信した書き込み要求を前記仮想ボリュームに割り当てられた記憶領域を有するストレージ装置宛ての書き込み要求に変換し、
前記転送部は、変換後の書き込み要求を、前記仮想ボリュームに割り当てられた記憶領域を有するストレージ装置と接続している第二のポートを介して該ストレージ装置に送信するよう制御することを特徴とする仮想化装置。
【請求項１２】
請求項１１記載の仮想化装置であって、
仮想化装置は、計算機からの要求に従って、前記仮想ボリュームを識別するための仮想ボリューム識別情報と、前記仮想ボリュームのサイズとを、前記計算機に通知し、
前記計算機から受信する書き込み要求には、前記仮想ボリューム識別情報が含まれることを特徴とする仮想化装置。
【請求項１３】
請求項１２記載の仮想化装置であって、
前記仮想化装置は更に、仮想ボリュームと該仮想ボリュームに割り当てられている前記複数のストレージ装置内の記憶領域との対応関係を示すアクセス変換テーブルを有しており、
前記制御部は、前記仮想ボリュームに前記複数のストレージ装置内に存在する記憶領域を割り当てた場合に、前記アクセス変換テーブルを更新することを特徴とする仮想化装置。
【請求項１４】
請求項１３記載の仮想化装置であって、
前記制御部は、更新後の前記アクセス変換テーブルを参照して前記計算機から受信した書き込み要求を変換することを特徴とする仮想化装置。
【請求項１５】
請求項１３記載の仮想化装置であって、
前記制御部は、前記アクセス変換テーブルを更新して、仮想ボリュームに割り当てられている記憶領域のうち、前記計算機に使用されなくなった記憶領域の割り当てを解放することを特徴とする仮想化装置。
【請求項１６】
請求項１２記載の仮想化装置であって、
前記制御部は、ファイルシステムの初期化に基づく管理データの書き込み時には、前記計算機から書き込み要求を受信した際より小さい容量の記憶領域を前記仮想ボリュームに割り当てて、割り当てられた記憶領域に管理データを書き込むことを特徴とする仮想化装置。
【請求項１７】
請求項１５記載の仮想化装置であって、
前記制御部は、ファイルシステムのログ情報を利用して、仮想ボリュームに割り当てられている記憶領域のうち、前記計算機に使用されなくなった記憶領域を特定することを特徴とする仮想化装置。
【請求項１８】
請求項１２記載の仮想化装置であって、
前記仮想化装置は更に、仮想ボリュームに割り当て可能な前記複数のストレージ装置内に存在する空き記憶領域の容量が記録された空き容量管理テーブルを有しており、前記計算機からの要求に応じて、前記空き容量管理テーブルに記録されている情報を出力することを特徴とする仮想化装置。
【請求項１９】
請求項１８記載の仮想化装置であって、
前記制御部は、仮想ボリュームに前記複数のストレージ装置内に存在する記憶領域を割り当てた場合に、前記空き容量管理テーブルを更新することを特徴とする仮想化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置システムが有する記憶領域の計算機への割り当て技術に関する。
【背景技術】
【０００２】
複数の記憶装置システムが有する複数の記憶領域をまとめて、一つの記憶領域として計算機にアクセスさせるスイッチが特許文献１に開示されている。特許文献１によれば、スイッチは複数の記憶装置システムとホストとに接続されている。スイッチはホストから、複数の記憶装置システムが有する複数の記憶領域（論理ユニット）から構成される統合論理ユニットに対するアクセス要求を受信する。そしてスイッチは、受信したアクセス要求を、アクセス対象のデータが格納されている論理ユニットに対するアクセス要求に変換して、この論理ユニットを有する記憶装置システムに変換後のアクセス要求を送信する。
【０００３】
一方、計算機に割り当てられている論理的な記憶領域が拡大された場合に、記憶領域の拡大を計算機側で認識するためのソフトウェア技術は、非特許文献１に開示されている。
【０００４】
【特許文献１】特開２０００−２４２４３４号公報
【非特許文献１】“エルヴイエム  ハウツゥ９．９（LVM  HOWTO９．９）”、[online]、リナックスオンライン(Linux online)、[平成16年2月10日検索]、インターネット＜URL:http://www.linux.org/docs/ldp/howto/LVM-HOWTO/x592.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
計算機に割り当てられている記憶領域のサイズを拡大する場合、非特許文献１に示すように、計算機が記憶領域のサイズの拡大を認識するためのソフトウェアが必要となる。従って、記憶装置システムに計算機を接続して、計算機が記憶装置システム内の記憶領域にアクセスしてこの記憶領域に格納されたデータを使用するシステムにおいて、計算機に割り当てられた（即ち、計算機からアクセス可能な）記憶領域のサイズを変更する場合には、計算機にこのソフトウェアをインストールしておく必要がある。
【０００６】
しかし、記憶装置システムに複数の計算機が接続されている場合には、複数の計算機全てにこのソフトウェアを追加する必要があり、また複数の計算機の種類が各々異なる場合には計算機の種類に応じたソフトウェアをインストールする必要がある。さらに、計算機で使用されるオペレーティングシステムがバージョンアップした場合に、それに追随して、対応するソフトウェアを更新する必要がある。従って、計算機に記憶領域のサイズの拡大を認識させるためにソフトウェアをインストールしておくのは、管理負荷が大きく、コストも高くなる。
【０００７】
ところで、計算機に割り当てられている記憶領域のサイズが拡大されるのは、計算機が扱うデータ量が増大し、当初割り当てられていた記憶領域では記憶容量が足りなくなってしまうからである。従って最初から大きなサイズの記憶領域を計算機に割り当てておけば、記憶容量の不足は起こらず、途中で計算機に割り当てられている記憶領域のサイズを拡大する必要もないので、計算機に上述の様なソフトウェアをインストールしておく必要もない。しかしそうすると、計算機がそれほど大量のデータを使わない場合には、計算機に割り当てられた記憶領域に未使用領域が発生して記憶領域に無駄が生じる。
【０００８】
そこで、計算機に対して効率的に記憶領域を割当てることが可能なシステムを開示する。
【課題を解決するための手段】
【０００９】
システムは、計算機に接続される仮想化装置と、仮想化装置に接続される複数の記憶装置とを有する。仮想化装置は、計算機からの要求に応じて、計算機に所定の大きさの仮想ボリュームを割り当てた旨の通知を発行する。計算機から仮想ボリュームに対するアクセス要求を受信した際に仮想化装置は、複数の記憶装置内に存在する記憶領域を仮想ボリュームに割り当て、計算機から受信したアクセス要求を、仮想ボリュームに割り当てた記憶領域を有する記憶装置宛てのアクセス要求に変換して、この記憶装置に変換後のアクセス要求を送信する。
【発明の効果】
【００１０】
本発明によれば、効率的に計算機に記憶領域を割当てることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態を、図面を用いて説明する。尚、本発明は以下に説明する実施形態に限定されるものではない。
【実施例１】
【００１２】
図１は、本発明を適用したシステムの、第一の実施形態の構成例を示す図である。
【００１３】
システムは、少なくとも１台のホストプロセッサ１２、少なくとも１台のストレージ装置１３、仮想化スイッチ１１及び管理コンソール１４を有する。
【００１４】
ホストプロセッサ１２は、ストレージ装置１３に格納されたデータを使用する計算機である。ホストプロセッサ１２は、仮想化スイッチ１１が提供する記憶領域を仮想化スイッチ１１に接続されていない他の計算機に提供する機能を有するファイルサーバでも良い。
【００１５】
ストレージ装置１３は記憶装置又は記憶装置システムである。ここで、記憶装置とは、ハードディスクドライブやDVDドライブ等の単体の記憶装置を指し、記憶装置システムとは、制御部及び制御部に接続された一又は複数のハードディスクドライブ等のディスク装置を有し、制御部が各ディスク装置への入出力を制御するストレージサブシステムを指すものとする。尚記憶装置システムは、複数のハードディスクドライブがRAID構成を有しているディスクアレイシステムであっても良い。
【００１６】
ストレージ装置１３は、少なくとも１つの論理ユニット（以下「ＬＵ」と呼ぶ。）１３１を有する。ＬＵ１３１は、ストレージ装置１３が有する物理的な記憶領域から構成されている論理的な記憶領域である。ＬＵ１３１は、ホストプロセッサ１２などストレージ装置１３に接続される装置には、論理的に独立した１つのストレージ装置として認識される。
【００１７】
また、ＬＵ１３１は、複数の部分的な論理的記憶領域（以下「実領域」と呼ぶ。）１３２から構成される。実領域１３２の各々も、ストレージ装置１３が有する物理的な記憶領域に対応する。実領域１３２のサイズは任意であり、実領域１３２は、連続したアドレスをもつ領域である。
【００１８】
仮想化スイッチ１１は、図示するように通信線やスイッチによって他の装置（ホストプロセッサ１２、管理コンソール１４、若しくはストレージ装置１３）と接続されており、他の装置と通信することができる装置である。また、仮想化スイッチ１１は、仮想化スイッチ１１に接続されている一つ又は複数のストレージ装置１３が有する一又は複数の記憶領域をまとめて一の記憶領域として管理する（一又は複数のストレージ装置が有する一又は複数の記憶領域をまとめて、一の記憶領域として管理することを、「仮想化する」と称する）仮想化装置である。そして仮想化スイッチ１１は、仮想化された記憶領域に対するアクセス要求をホストプロセッサ１２から受け付けると、この仮想化された記憶領域に対応するストレージ装置１３内の記憶領域を特定し、受信したアクセス要求を特定された記憶領域に対するアクセスアクセス要求に変換して、変換後のアクセス要求をストレージ装置１３に送信する（仮想化された記憶領域に対するアクセス要求を受領して、これに対応するストレージ装置１３内の記憶領域へのアクセス要求をストレージ装置１３に送信することにより、仮想化された記憶領域に対するアクセス要求を処理することを、「仮想化された記憶領域を提供する」と呼ぶ）。
【００１９】
仮想化スイッチ１１とホストプロセッサ１２との間、および仮想化スイッチ１１とストレージ装置１３との間で使用される通信線やスイッチでは、ファイバチャネル等のプロトコルが使用される。ただし、使用される通信線やプロトコルはローカルエリアネットワーク等で使用される通信線やプロトコルでも良い。
【００２０】
仮想化スイッチ１１は、ホストプロセッサ１２とストレージ装置１３との間に接続され、ホストプロセッサ１２が発行するコマンドをストレージ装置１３側に転送する機能を有する。また、仮想化スイッチ１１がホストプロセッサ１２に対して提供する仮想的な記憶領域（即ち仮想化スイッチによって仮想化された記憶領域）を以下仮想ボリューム１００と称する。
【００２１】
仮想ボリューム１００は、仮想化スイッチ１１によって、少なくとも１つの実領域１３２と対応づけられる。仮想化スイッチ１１は、複数の仮想ボリューム１００をホストプロセッサ１２等に提供することが出来る。仮想ボリューム１００の各々には、仮想ボリュームを特定するための仮想化スイッチ１１内で一意の識別子（以下「仮想ボリューム識別子」）が与えられている。また、個々の仮想ボリューム１００の記憶領域には連続したアドレス（以下仮想アドレスとも呼ぶ）が付されている。ホストプロセッサ１２は、ストレージ装置１３のＬＵ１３１内の実領域１３２を直接指定する代わりに、仮想ボリューム識別子及び仮想ボリューム１００内の場所を示す仮想アドレスを指定してアクセス要求を発行する。仮想化スイッチは、仮想ボリューム識別子及び仮想アドレスから、これに対応するLU１３１内の実領域１３２を特定し、特定された実領域１３２へのアクセス要求を発行する。従って、ホストプロセッサ１２は、仮想ボリューム識別子と仮想ボリューム１００内の記憶領域を示す仮想アドレスを用いて、ストレージ装置１３の実領域１３２に格納されたデータを利用できる。
【００２２】
管理コンソール１４は、仮想ボリューム１００を作成（設定）するためにシステム管理者によって使用される計算機であり、表示装置と入力装置を備える。管理コンソール１４は、仮想化スイッチ１１とネットワークを介して接続されている。
【００２３】
図２は、仮想化スイッチ１１の内部構成例を示す図である。
【００２４】
仮想化スイッチ１１は、入力ポート２４０、出力ポート２５０、転送部２３０、制御部２１０及び記憶部２２０を有する。
【００２５】
入力ポート２４０は、仮想化スイッチ１１がホストプロセッサ１２と通信するための通信線と接続されるポートである。出力ポート２５０は、仮想化スイッチ１１がストレージ装置１３と通信するための通信線と接続されるポートである。尚、入力ポート２４０及び出力ポート２５０を構成する装置は同一であっても良い。この場合、どのポートを入力ポートあるいは出力ポートとして使用するかは、使用者が選択する。仮想スイッチ１１は入力ポート２４０及び出力ポート２５０を各々一若しくは複数有する。
【００２６】
転送部２３０はメモリを有し、そのメモリに転送情報テーブル２３１を保持する。転送情報テーブル２３１には、入力ポート２４０と該入力ポート２４０を介して仮想化スイッチ１１と通信可能なホストプロセッサ１２との間の対応関係、及び出力ポート２５０と該出力ポート２５０を介して仮想化スイッチ１１と通信可能なストレージ装置１３との間の対応関係についての情報が格納される。
【００２７】
転送部２３０は、転送情報テーブル２３１を参照し、入力ポート２４０がホストプロセッサ１２から受信した入出力要求を、要求先のストレージ装置１３と仮想化スイッチ１１との間の通信に使用される出力ポート２５０へ転送する。また、転送部２３０は、出力ポート２５０がストレージ装置１３から受信した応答情報やデータを、データ等を受信すべきホストプロセッサ１２と仮想化スイッチ１１の間の通信に使用される入力ポート２４０へ転送する。ただし、ホストプロセッサ１２から受け取った入出力要求が仮想ボリューム１００に対する入出力要求である場合には、後述のアクセス変換プログラム２１２を制御部２１０が実行した結果選択されるストレージ装置１３へ、入出力要求を送信すべく、転送部２３０は、このストレージ装置１３との間の通信に使用される出力ポート２５０に入出力要求を転送する。
【００２８】
制御部２１０はプロセッサ及びメモリを有し、そのメモリに仮想ボリューム定義プログラム２１１、アクセス変換プログラム２１２及び割当処理プログラム２１３の各プログラムが格納される。これらのプログラムは、制御部２１０のプロセッサで実行される。
【００２９】
記憶部２２０は、仮想ボリューム管理テーブル２２１、実領域管理テーブル２２２及びアクセス変換テーブル２２４を記憶する。
【００３０】
アクセス変換テーブル２２４は、仮想化スイッチ１１がホストプロセッサ１２に提供する仮想ボリューム１００ごとに存在する。アクセス変換テーブル２２４は、一又は複数のエントリ３３１と、対応する仮想ボリューム１００の仮想ボリューム識別子を登録するエントリ３３２とを保持する。個々のエントリ３３１には、仮想ボリューム１００内の記憶領域を示す仮想アドレス範囲と、その仮想アドレス範囲に対応する実領域１３２が属するＬＵ１３１を指定する識別子であるＬＵアドレスと、当該実領域１３２のＬＵ１３１内における位置を示すＬＵ内アドレスとが対応付けられて登録される。即ちアクセス変換テーブル２２４は、仮想ボリューム１００内の記憶領域を指定するための仮想アドレスと、ストレージ装置１３内の記憶領域を指定するためのアドレスとの対応情報を保持している。
【００３１】
なお、仮想ボリューム１００内に実領域１３２が割当てられていない記憶領域が存在する場合、当該記憶領域に対応するエントリ３３１には、当該記憶領域の仮想アドレス範囲と、ＬＵアドレスとして実領域１３２が割当てられていないことを示す「−１」、ＬＵ内アドレスとして同じく実領域１３２が割り当てられていないことを示す「−１」が登録される。アクセス変換テーブル２２４は、仮想ボリューム１００の記憶領域の構成が変更されたとき、即ち仮想ボリューム１００内の記憶領域に対応づけられている実領域１３２に変更があったとき、制御部２１０によって更新される。  制御部２１０は、アクセス変換プログラム２１２を実行し、アクセス変換テーブル２２４を参照して、ホストプロセッサ１２から受け取った仮想ボリューム１００に対する入出力要求を、対応するストレージ装置１３が有するＬＵ１３１への入出力要求に変換する。また、制御部２１０は変換後の入出力要求のターゲットであるLU１３１を有する記憶装置１３を転送部２３０に通知する。従って、転送部２３０は転送情報テーブル２３１を参照して、通知された記憶装置１３と接続されている出力ポート２５０に、変換後の入出力要求を転送することになる。
【００３２】
尚、ホストプロセッサから受信した入出力要求によって指定される仮想ボリューム１００内の記憶領域に対応するＬＵ１３１が存在しない場合（即ち、当該仮想ボリューム１００内の記憶領域に対して未だ実領域が割り当てられておらず、アクセス変換テーブル２２４のエントリ３３１に、LUアドレス及びLU内アドレスとして「-1」が登録されている場合）、制御部２１０は、仮想ボリューム定義プログラム２１１を実行して、仮想ボリューム１００の定義変更処理を実行する。
【００３３】
性能向上のために、仮想化スイッチ１１は、アクセス変換テーブル２２４およびアクセス変換プログラム２１２を各入力ポート２４０ごとに有していても良い。  実領域管理テーブル２２２は、ＬＵ１３１ごとに存在する。実領域管理テーブル２２２は、ＬＵ１３１に含まれる実領域１３２を管理するために使用されるテーブルである。各実領域管理テーブル２２２には、ストレージ装置ＩＤ３２１、ＬＵアドレス３２２及び実領域リスト３２４が格納される。
【００３４】
ストレージ装置ＩＤ３２１は、ＬＵ１３１を保持するストレージ装置１３を示す識別子である。LUアドレス３２２は、当該LU１３１の識別子である。
【００３５】
実領域リスト３２４は、少なくとも１つのエントリ３２５を有する。各エントリ３２５は、ＬＵ１３１を構成する個々の実領域１３２に対応して設けられ、実領域ＩＤ、実領域のサイズ及び仮想ボリューム識別子の情報を登録する項目を有する。実領域ＩＤはエントリ３２５に対応する実領域１３２を特定するための識別子、サイズは実領域１３２のサイズである。またエントリ３２５に登録される仮想ボリューム識別子は、実領域１３２が割当てられている仮想ボリューム１００を識別するための仮想ボリューム識別子である。実領域リスト３２４内のエントリ３２５は、実領域１３２のアドレス順に配列されている。
【００３６】
なお、本実施形態では、実領域１３２のサイズは固定であると仮定するため、エントリ３２５に実領域１３２のサイズを登録する項目を含めなくても良い。また、未使用である実領域１３２については、エントリ３２５の仮想ボリューム識別子を登録する項目には、未使用であることを示すnullが登録される。
【００３７】
このように、実領域管理テーブル２２２は、ＬＵ１３１に属する各実領域１３２が仮想ボリューム１００として利用されているか否かを示す情報を保持しており、仮想化スイッチ１１が仮想化ボリューム１００に新たに割当てる実領域１３２を選択する際に使用される。
【００３８】
尚、実領域管理テーブル２２２は、仮想化スイッチ１１にストレージ装置１３が接続された時等のタイミングで、管理端末１４を介した管理者の指示に基づいて作成される。さらに、この際ＬＵ１３１とそれを構成する実領域１３２の記憶容量等が決定される。尚、実領域管理テーブル２２２が作成された時点では、全てのエントリ３２５について、実領域ＩＤには仮想化スイッチ１１内で一意に決定される識別子が書き込まれ、仮想ボリューム識別子にはnullが設定される。
【００３９】
仮想ボリューム管理テーブル２２１は、仮想ボリューム１００ごとに存在する。各仮想ボリューム管理テーブル２２１には、識別子エントリ３１１及び実領域リスト３１５が格納される。識別子エントリ３１１には、仮想ボリューム管理テーブル２２１に対応する仮想ボリューム１００の仮想ボリューム識別子が登録される。実領域リスト３１５は、仮想ボリューム管理テーブル２２１に対応する仮想ボリューム１００にどの実領域１３２が割当てられているかを示すリストである。実領域リスト３１５内では、仮想ボリューム１００上の仮想アドレス順に対応する実領域１３２のエントリ３１７が並んでおり、各エントリ３１７には仮想アドレスに対応する実領域１３２の実領域ＩＤが格納されている。当該仮想ボリューム１００のうち、実領域１３２が割当てられていない記憶領域に相当するエントリ３１７には、有効な実領域ＩＤ３１７の代わりに空きを示すnull値が格納される。
【００４０】
このように、仮想ボリューム管理テーブル２２１は、仮想ボリューム１００の記憶領域がどの実領域１３２と対応付けられているかを示す情報を保持しており、仮想化スイッチ１１が解放可能な実領域１３２を選択する際に使用される。
【００４１】
以下、本実施形態における仮想化スイッチ１１が行う記憶領域の割当て処理について説明する。
【００４２】
制御部２１０は、仮想ボリューム定義プログラム２１１を実行することで、仮想ボリューム１００の定義を作成または変更する。制御部２１０は、管理コンソール１４を介してシステム管理者から仮想ボリューム１００の作成要求を受け取ると、仮想ボリューム定義プログラム２１１を実行して、仮想ボリューム管理テーブル２２１及びアクセス変換テーブル２２４を新規作成する。この場合、制御部２１０は、既に作成された他の仮想ボリューム１００と重複しない仮想ボリューム識別子を生成して、これを仮想ボリューム管理テーブル２２１の識別子エントリ３１１に格納し、実領域リスト３１５内の各エントリ３１７に空の値（null値）を設定することで実領域リスト３１５を初期化する。このように、仮想ボリューム１００の生成直後は、仮想ボリューム１００に実領域１３２が対応付けられない。従って、このとき制御部２１０は、新規作成された仮想ボリューム管理テーブル２２１によって定義される仮想ボリューム１００に対応するアクセス変換テーブル２２４についても、エントリ３３２には当該仮想ボリューム１００の仮想ボリューム識別子を登録するが、エントリ３３１のLUアドレス及びLU内アドレスには空の値（「−１」）を登録し、アクセス変換テーブル２２４を初期設定する。
【００４３】
このようにアクセスボリューム管理テーブル２２１とアクセス変換テーブル２２４が初期設定されていれば、ホストプロセッサ１２が仮想化スイッチ１１に接続されて仮想化スイッチ１１に記憶領域を検出するためのコマンドを発行した際には、仮想化スイッチ１１の制御部２１０は所定の大きさの仮想ボリューム１００がホストプロセッサ１２からアクセス可能であることを示す情報を通知する。この制御部２１０がホストプロセッサ１２に通知する情報には、仮想ボリューム識別子と仮想ボリュームのサイズ（所定のサイズ）が含まれる。しかし、その仮想ボリューム１００にはストレージ装置１３が有する論理的な記憶領域である実領域１３２は実際には割当てられていない状態となる。仮想化スイッチ１１は、その後、ホストプロセッサ１２等からデータの書き込み要求を受信したタイミングで、仮想ボリューム１００に実領域１３２を割当てる。この結果、実際に計算機が記憶装置にアクセス要求を発行した際にこの計算機に対して実領域１３２を割り当てることができるので、予め容量に余裕を持って計算機に実領域１３２を割り当てておく必要がなく、計算機に割当てる記憶領域の無駄を省くことが出来る。
【００４４】
実領域１３２を仮想ボリューム１００に割当てる際には、制御部２１０は、ホストプロセッサ１２のデータ書き込み要求等の要求に従い、仮想ボリューム管理テーブル２２１を変更する。この場合、制御部２１０は、仮想ボリューム１００に実領域１３２を割当てた後、アクセス変換テーブル２２４を更新する。尚、実際には、入力ポート２４０から受信した入出力要求の宛先が仮想ボリューム１００であった場合に、転送部２３０は、その入出力要求を制御部２１０に転送する。制御部２１０は、転送された入出力要求について、図３に示す以下の処理を実行する。また、図３の処理終了後、制御部２１０は変換した入出力要求の要求先の情報を転送部２３０に送信し、転送部２３０はその情報に基づいて入出力要求を各ストレージ装置１３に転送する。
【００４５】
図３は、制御部２１０がホストプロセッサ１２から入出力要求を受け取った際に行う処理の一例を示すフローチャートである。
【００４６】
まず、制御部２１０は、ホストプロセッサ１２から受け取った仮想ボリューム１００に対する入出力要求が書き込み要求であるかどうかを判断する（ステップ２００１）。
【００４７】
ホストプロセッサ１２からの入出力要求が書き込み要求である場合、制御部２１０は、書き込み要求で指定された仮想ボリューム１００の仮想アドレスに実領域１３２が対応付けられているかどうかを、アクセス変換テーブル２２４で確認する（ステップ２００２）。
【００４８】
指定された仮想ボリューム１００の仮想アドレスに対応する実領域１３２がアクセス変換テーブル２２４に登録されていない場合（即ち入出力要求中に含まれる仮想ボリューム識別子と仮想アドレスに対応する、アクセス変換テーブル２２４のエントリ３３１にLUアドレス及びLU内アドレスとして「−１」が登録されている場合）、制御部２１０は、仮想ボリューム定義プログラム２１１を実行して仮想ボリューム１００の定義変更処理を行う。
【００４９】
具体的には、制御部２１０は、入出力要求中で指定された仮想ボリュームの仮想アドレス範囲に実領域１３２を割当てる。このために、制御部２１０はまず実領域管理テーブル２２２を検索して、未使用の実領域１３２（即ち、実領域管理テーブル２２２のエントリ３２５に仮想ボリューム識別子としてnull値が登録されている実領域１３２）を探し出す。そして制御部２１０は、探し出した未使用の実領域１３２を、入出力要求で指定された仮想ボリューム１００の仮想アドレスに対応する記憶領域に割当てる。即ち制御部は、実領域管理テーブル２２２のうち、当該未使用の実領域１３２に対応するエントリ３２５に、入出力要求中に含まれる仮想ボリューム識別子を登録し、入出力要求中に含まれる仮想ボリューム識別子に対応する仮想ボリューム管理テーブル２２１のエントリ３１５に、探し出された未使用の実領域１３２の実領域IDを登録する。更に制御部は、アクセス変換テーブル２２４のうち、入出力要求中に含まれる仮想ボリューム識別子及び仮想アドレスに対応するエントリ３３１に、探し出された未使用の実領域１３２のLUアドレス及びLU内アドレスを登録する。
【００５０】
尚、検索された未使用の実領域１３２の記憶容量が、入出力要求中で指定される仮想ボリューム１００の仮想アドレス領域に対して不足する場合、制御部２１０は更に空きの（未使用の）実領域１３２を検索し、仮想アドレス領域に充当するまで検索を行う（ステップ２００６）。
【００５１】
ステップ２００６の処理の後、若しくはステップ２００２で入出力要求中で指定された仮想ボリュームの仮想アドレスに対応する実領域１３２が登録されていると判断された場合、若しくはステップ２００１で書き込み要求ではないと判断された場合は、制御部２１０は、アクセス変換テーブル２２４を参照して、ホストプロセッサ１２から受け取った仮想ボリューム１００の仮想アドレスに対する入出力要求を、対応するストレージ装置１３のＬＵ１３１の実領域１３２への入出力要求に変換して（ステップ２００９）、処理を完了する。
【００５２】
尚、制御部２１０は、変換後の入出力要求を転送部２３０へ渡し、転送部２３０は変換後の入出力要求のあて先であるストレージ装置13に基づいて、転送情報テーブル２３１を参照し、この記憶装置１３に変換後の入出力要求を、出力ポート２５０を介して送信する。
【００５３】
このように図３のステップ２００６の処理によって、仮想ボリューム１００へデータが書き込まれる際に、データが書き込まれる仮想ボリューム上の記憶領域に対応する実領域１３２を仮想ボリューム１００に実際に割当てることができる。従って、計算機は初期設定当初から大きな容量を有する記憶領域（仮想ボリューム）が割り当てられていると認識しているが、実際には計算機が必要とする容量の実領域１３２を割り当てておけばよく、効率的な記憶領域の割当てが可能である。
【実施例２】
【００５４】
次に、本発明の第二の実施形態を説明する。
【００５５】
第一の実施形態では、仮想ボリュームに対して実領域１３２が割り当てられた後、その実領域１３２に格納されたデータが使用されなくなる場合についての考慮がされていない。そこで、第二の実施形態では、第一の実施形態に加え、使用されなくなった実領域１３２の仮想ボリューム１００への割当てを止める（以下「解放する」と呼ぶ）ことを考慮する。
【００５６】
本実施形態においては、第一の実施形態の構成に加え、制御部２１０のメモリには、デフラグ処理プログラム２１４が格納されている。制御部２１０は、システム管理者からのデフラグ処理開始指示を管理コンソール１４を通して受け取り、デフラグ処理プログラム２１４を実行して、仮想ボリューム１００に格納されたファイル等のデータを再配置する。
【００５７】
具体的には、制御部２１０は、ストレージ装置１３に格納されたファイルシステムの管理情報（ファイルシステムに格納されている各ファイルのデータ部が、仮想ボリューム１００上のどこに配置されているかを示す仮想アドレスのリストの集合）を読み取って、読み出したファイルシステムの管理情報に基づいて、実領域１３２に格納されたデータがなるべく仮想ボリューム内の連続した記憶領域に格納されるよう、データを実領域１３２内の空きの領域にコピーし、管理情報に格納されている仮想アドレスをコピー元を示す値からコピー先を示す値へ書き換えることにより配置を変更する。なお、この再配置処理によるデータ破壊を防止するために、本実施形態ではシステム管理者は該仮想ボリューム１００を使用するファイルシステムを、デフラグ処理開始指示の前にアンマウントしておく必要がある。
【００５８】
その後、制御部２１０は、仮想ボリューム１００内の記憶領域のうち、実領域１３２の割当てが不要になった記憶領域の仮想アドレス範囲を特定し、特定された仮想アドレス範囲に対応する実領域１３２を解放する（即ち、ファイルシステムの管理情報から、全てのファイルについて、そのデータ部が格納されている仮想ボリューム１００上の記憶領域がわかるので、それらの記憶領域以外でかつ管理情報自身が格納されている仮想ボリューム１００上の記憶領域以外の、仮想ボリューム１００上の記憶領域に割当てられている実領域１３２を検索し、検索により特定された実領域１３２を解放する）。この際制御部２１０は、当該仮想ボリューム１００についての仮想ボリューム管理テーブル２２１のうち、解放される実領域１３２の実領域IDが登録されているエントリ３１７にnull値を登録し、更に制御部２１０は、当該仮想ボリューム１００に関するアクセス変換テーブル２２４のうち、解放される実領域１３２のLU131内での位置を示すLU内アドレスが登録されているエントリ３３１に、LUアドレス及びLU内アドレスとして「−１」を登録する。また制御部は、実領域管理テーブル２２２も更新し、解放される実領域１３２の実領域IDが登録されているエントリ３２５の仮想ボリューム識別子としてnull値を登録する。
【００５９】
図４は、第二の実施形態において、仮想ボリュームへの割当てが不要となり解放可能となった実領域１３２を特定する処理の概念を示す図である。
【００６０】
図４は仮想ボリューム１００におけるファイルの配置及び仮想ボリューム１００と実領域１３２との対応関係を例示しており、図４（１）は制御部２１０のデフラグ処理プログラム２１４が実行される前の例を、図４（２）はデフラグ処理プログラム２１４が実行された後の例を示す。
【００６１】
図４（１）において、仮想ボリューム１００の図示された範囲の記憶領域には、３個のファイル（ファイルA、ファイルB、ファイルC）が格納されており、ファイルAのデータは仮想ボリューム１００内の記憶領域５０１a1及び記憶領域５０１a2に分割されて格納されており、ファイルBのデータは記憶領域５０１bに、ファイルCのデータは記憶領域501cに格納されている。一方、仮想ボリューム１００の図示された範囲の記憶領域には、２個の実領域１３２（実領域１３２−１と実領域１３２−２）が対応付けられている。
【００６２】
ここで制御部２１０はデフラグ処理プログラム２１４を実行して、ファイルA、ファイルB、ファイルCが、仮想ボリューム１００内の連続する記憶領域にアドレス順に格納されるよう、これらのファイルを再配置する。
【００６３】
その結果、再配置処理後は、図４（２）のように、仮想ボリューム１００の記憶領域中左（左の方がアドレスが小さいと仮定する）から順に、ファイルAのデータが記憶領域５０１ａ１及び記憶領域５０１ａ２に、ファイルBのデータが記憶領域５０１ｂに、ファイルCのデータが記憶領域５０１ｃに連続して配置される。すると、記憶領域５０１ｃの後ろにはまとまった空き領域が出現する。この仮想ボリューム上での空き領域には実領域１３２を割当てておく必要がない。従って図４(２)の例では、仮想ボリューム上の空き領域に対応する実領域１３２−２は解放することが出来る。
【００６４】
制御部２１０は、デフラグ処理プログラム２１４の実行後に出現した仮想ボリューム上の空き領域に対応する実領域１３２を、仮想ボリューム管理テーブル２２１から検索する。つまり制御部２１０は、仮想ボリューム管理テーブル２１１を検索して、空き領域の仮想アドレス範囲に対応する実領域を見つけ出す。そして見つかった実領域１３２を制御部２１０は解放する。具体的には、制御部２１０は解放する実領域１３２の実領域IDを仮想ボリューム管理テーブル２２１から削除してこの実領域IDが登録されていたエントリ３１７にnull値を登録し、実領域管理テーブル２２２内で解放される実領域１３２と対応付けられていた仮想ボリューム識別子を削除してこの仮想ボリューム識別子が登録されていたエントリ３２５にnull値を設定する。更に制御部２１０は、アクセス変換テーブル２２４に登録されている、解放される実領域１３２が属するLU１３１の識別情報（LUアドレス）とこのLU131内での解放される実領域１３２の位置情報（LU内アドレス）情報を削除して代わりに「-1」を設定する。
【実施例３】
【００６５】
次に、本発明の第三の実施形態を説明する。
【００６６】
第一の実施形態では、仮想ボリューム１００に割当てられる実領域１３２のサイズは固定であった。しかし、所定の処理、例えばフォーマット処理に基づくデータの書き込み要求では、比較的記憶領域の使用量が小さい書き込み処理が発生する。この場合にも他の実施形態と同様に仮想ボリューム１００に固定サイズの実領域１３２を割当てると、割当てた記憶領域に無駄が発生する。そこで、本実施形態では、処理内容に見合ったサイズの実領域１３２を仮想ボリューム１００に割当てる。
【００６７】
本実施形態は第一の実施形態の構成に加え、制御部２１０のメモリにフォーマット処理プログラム２１５が格納されている。また、仮想ボリューム管理テーブル２２１のエントリ３１７に、対応する実領域１３２のサイズを示す情報が含まれる。また、実領域管理テーブル２２２のエントリ３２５に含まれる実領域１３２のサイズは、本実施形態では第一の実施形態と異なり省略されない。仮想ボリューム管理テーブル２２１のエントリ３１７及び実領域管理テーブル２２２のエントリ３２５にサイズを含めるのは、上述したように、実領域１３２のサイズを可変長として、割当効率を上げるためである。
【００６８】
制御部２１０は、フォーマット処理プログラム２１５を実行することで、ホストプロセッサ１２に代わり、仮想ボリューム１００を使用するファイルシステムを初期化、即ちファイルシステム上のファイル及びディレクトリを全て消去し、新規にファイル及びディレクトリを作成可能な状態にする。このとき、制御部２１０は仮想ボリューム１００に、メタデータと呼ぶ管理データを書き込むための入出力要求を自分自身に対して発行する。なお、制御部２１０は、この入出力要求の送信元アドレス（具体的にはFibreChannelのPortID）に制御部２１０自身を示す特別な値、具体的には0xFFFF00を含める。このとき書き込まれるメタデータのサイズはそれほど大きくないが、メタデータは仮想ボリューム１００の記憶領域に一定の間隔に書き込まれるため、仮想ボリューム１００のサイズが大きい場合は１つの仮想ボリュームに多数のメタデータが一定の記憶領域間隔で書き込まれる。従ってメタデータが仮想ボリュームに書き込まれるたびにメタデータサイズより大きな実領域１３２を当該仮想ボリュームに割り当てていると、仮想ボリュームに割り当てられた実領域１３２内にはデータが書き込まれていない未使用領域が発生し、実領域１３２の割当効率が低下する。実領域１３２のサイズを可変長とするのは、この割当効率の低下を防ぐためである。
【００６９】
尚、フォーマット処理プログラム２１５は、管理者等の管理端末１４を介した指示に基づき、あるいはホストプロセッサ１２からの指示に基づき実行される。
【００７０】
図５は、第三の実施形態において、ホストプロセッサ１２から入出力要求を受信した場合、又は制御部２１０自身が入出力要求を生成した場合の、制御部２１０の処理の一例を示すフローチャートである。
【００７１】
本処理手順には、第一の実施形態の図３で示した処理手順に加え、入出力要求がフォーマット処理に基づく入出力要求かどうかを判断する処理（ステップ２００３）、及びフォーマット処理に基づく入出力要求である場合に、仮想ボリューム１００に割当てる実領域１３２のサイズを変更する処理（ステップ２００４）が含まれる。尚、その他のステップの処理は第一の実施形態と同様であるので、ここでは説明しない。
【００７２】
制御部２１０は、処理対象の入出力要求が書き込み要求であって（ステップ２００１でYの場合）、入出力要求で指定された仮想ボリューム１００の仮想アドレスに対応する実領域１３２がアクセス変換テーブル２２４に登録されていない場合（ステップ２００２でNの場合）、その入出力要求がフォーマット処理に基づく入出力要求か否かを判別する。
【００７３】
具体的には、制御部２１０は、入出力要求がフォーマット処理プログラム２１５の実行により制御部２１０自身によって生成されたものである場合（入出力要求の送信元アドレスが制御部２１０自身を示す値（0xFFFF00）である場合）はフォーマット処理に基づく入出力要求であると判断し、それ以外、即ちホストプロセッサ１２から受信した入出力要求である場合はフォーマット処理に基づく入出力要求ではないと判断する（ステップ２００３）。
【００７４】
処理対象の入出力要求が、フォーマット処理に基づく入出力要求であった場合には、制御部２１０は、仮想ボリューム１００に割当てる実領域１３２のサイズを、他のデータ書き込み処理の際に仮想ボリューム１００に対して割当てる実領域１３２のサイズの１／３２と指定する。この除数はシステム管理者が任意に定めることができる。また制御部２１０は、フォーマット処理に基づく入出力要求があった際に仮想ボリューム１００に割り当てる実領域１３２のサイズを直接指定しても良い。
【００７５】
さらに、制御部２１０は図３に示すステップ２００６と同様に実領域管理テーブル２２２から未使用の実領域１３２を検索する。その際、指定された大きさの空き実領域１３２がない場合は、制御部２１０はそれより大きな実領域１３２を２個に分割する処理を、指定された大きさの未使用実領域１３２が生成されるまで繰り返す。制御部２１０は、指定されたサイズの未使用の実領域１３２が見つかったら、その実領域１３２を仮想ボリュームに割当て、図３のステップ２００６で説明したのと同様の方法でアクセス変換テーブル２２４、実領域管理テーブル２２２及び仮想ボリューム管理テーブル２２１を更新する。
【００７６】
図６は、第三の実施形態における、フォーマット処理の概要を示す図である。
【００７７】
図６は仮想ボリューム１００のメタデータの配置及び実領域１３２との対応を示しており、図６（１）は実領域１３２のサイズが固定されていると仮定した場合、図６（２）は実領域１３２のサイズが可変である場合を示す。
【００７８】
図６（１）及び図６（２）では共に、仮想ボリューム１００に対して２つのメタデータ５０２が書き込まれている。
【００７９】
図６（１）では実領域１３２のサイズは固定されているので、フォーマット処理が実行された際、制御部２１０は、第一のメタデータを書き込むために実領域１３２−１を、第二のメタデータを書き込むために実領域１３２−２を、各々仮想ボリュームに割り当てる必要がある。図６（１）に示すように、メタデータ５０２のサイズが、実領域１３２のサイズより小さい場合には、仮想ボリューム１００に割り当てられた実領域内に、実際にはデータが書き込まれない空き領域が発生し、記憶領域の効率的な使用の妨げとなる。
【００８０】
一方図６（２）では実領域１３２のサイズは１つには限られず可変であるので、フォーマット処理が実行された際、第一のメタデータを書き込むためには図６（１）の実領域よりサイズの小さい実領域１３２−１を、第２のメタデータを書き込むためには同じくサイズの小さい実領域１３２−２が仮想ボリューム１００に割り当てられる。そして、仮想ボリューム１００の他の部分については、実際にホストプロセッサからデータの書き込み要求が発行された際に、実領域１３２−３や実領域１３２−４を割り当てれば良い。従って、図６（１）の場合と比べて、仮想ボリュームに割り当てられた実領域内に、空き領域が発生し難い。
【００８１】
このように、図５のステップ２００４で仮想ボリューム１００に割り当てる実領域１３２のサイズを縮小することで、仮想ボリューム１００に割当てた実領域１３２中に実際には使用されない空き記憶領域が発生する確率を小さくし、記憶領域を効率的に割り当てることができる。
【実施例４】
【００８２】
次に、本発明の第四の実施形態を説明する。
【００８３】
本実施形態では、第二の実施形態と同様に、制御部２１０は、一度仮想ボリューム１００に割当てられた実領域１３２のうち、解放可能な実領域１３２を検索し解放する。ただし、実領域の解放のために本実施形態では、制御部２１０はジャーナルファイルシステムにおけるログ情報を使用する。
【００８４】
本実施形態では、ホストプロセッサ１２でジャーナルファイルシステムが使用される。また本実施形態では、第一の実施形態の構成に加え、制御部２１０のメモリにジャーナル解析プログラム２１６が格納され、仮想ボリューム管理テーブル２２１に、ジャーナル領域の仮想アドレス範囲を登録するエントリ３１８及びメタデータの複製を登録するエントリ３１９が含まれる。
【００８５】
本実施形態においては、制御部２１０はジャーナル解析プログラム２１６を実行して、仮想ボリューム１００に配置されたジャーナル領域に書き込まれた情報を解析し、解放可能な実領域１３２がある場合に実領域１３２の解放処理を行う。
【００８６】
仮想ボリューム管理テーブル２２１内の、ジャーナル領域の仮想アドレス範囲が登録されるエントリ３１８は、入出力要求がジャーナル領域への書き込み要求か否かを判定するために制御部２１０によって参照される。仮想ボリューム１００がジャーナルファイルシステムとしてフォーマットされていない場合、仮想ボリューム管理テーブル２２１内のジャーナル領域の仮想アドレス範囲エントリ３１８は空である（即ち当該エントリ３１８にはnull値が登録されている）。仮想ボリューム１００がジャーナルファイルシステムとして初期化されるときには、管理者が管理コンソール１４を介して、ジャーナルファイルシステムのジャーナルが格納される仮想ボリューム中の仮想アドレス範囲を、仮想ボリューム管理テーブル２２１のエントリ３１８に書き込む。尚、ジャーナルが格納される仮想ボリューム中の仮想アドレス範囲は、ジャーナルファイルシステムのフォーマットプログラム（フォーマットプログラムは、制御部２１０のメモリに格納されている）が制御部２１０に実行されることによって、仮想ボリューム管理テーブル２１１のエントリ３１８に書き込まれることとしても良い。
【００８７】
仮想ボリューム管理テーブル２１１内の、メタデータの複製エントリ３１９は、制御部２１０が仮想ボリューム１００に格納されるメタデータの複製を保存する際に使用される。
【００８８】
図７は、第四の実施形態において、入出力要求を受け付けた制御部２１０が実行する処理の一例を示すフローチャートである。
【００８９】
本処理では、第一の実施形態の図３に示した処理に加え、入出力要求がジャーナル領域への書き込みか否かを判断する処理（ステップ２００７）、及び解放可能な実領域１３２の解放を行う処理（ステップ２００８）が、制御部２１０によって行われる。
【００９０】
ステップ２００７において制御部２１０は、処理対象の書き込み要求が、ジャーナル領域への書き込み要求か否かを判断する。この際制御部２１０は、書き込み要求中に含まれる書き込み先のアドレスが、仮想ボリューム管理テーブル２２１のエントリ３１８に登録されている仮想アドレス範囲に含まれるか否かに基づいて、書き込み要求がジャーナル領域への書き込み要求か否かを判断する。書き込み先のアドレスが仮想ボリューム管理テーブル２２１のエントリ３１８に登録された仮想アドレス範囲に入る場合には、書き込み要求はジャーナル領域に対する書き込み要求であるため、ジャーナル解析プログラム２１６の処理、即ちステップ２００８へ進む。
【００９１】
ステップ２００８において制御部２１０は、ジャーナル解析プログラム２１６を実行してジャーナル領域に書き込まれる情報を解析する。ジャーナル領域に書き込まれる情報とは具体的には、メタデータの一部と当該一部のメタデータのメタデータ全体における（メタデータ内での）オフセットである。そして、ジャーナル領域に書き込まれる情報を元に制御部２１０はメタデータを構築して、仮想ボリューム管理テーブル２２１のエントリ３１９に格納する。
【００９２】
メタデータにはファイルシステム上のファイルと、ファイルが格納されている仮想ボリューム上の記憶領域の仮想アドレスとの対応情報が含まれている。従って制御部２１０はメタデータを参照することによって、ファイルが格納されていない仮想ボリューム内の記憶領域の仮想アドレスを特定することができる。そして制御部２１０は、ファイルが格納されていない（即ち、実領域１３２を割り当てる必要のない）仮想ボリューム上の記憶領域の仮想アドレス範囲を特定すると、その特定された仮想アドレス範囲を元に仮想ボリューム管理テーブル２２１を検索し、当該仮想アドレス範囲に対応する実領域１３２を特定する。そして、特定された実領域１３２を解放すべく、仮想ボリューム管理テーブル２２１、アクセス変換テーブル２２４及び実領域管理テーブル２２２を更新する。尚、仮想ボリューム管理テーブル２１１、アクセス変換テーブル２２４、実領域管理テーブル２２２の更新処理は第二の実施形態と同様であるので説明を省略する。
【００９３】
図８は、第四の実施形態における、実領域１３２の解放処理の概要を示す図である。
【００９４】
図８は、仮想ボリューム１００におけるジャーナル領域、メタデータ、ファイルの配置及び仮想ボリューム１００と実領域１３２との対応を示している。
【００９５】
図８（１）は、ジャーナルファイルシステム上のファイル５０１のサイズが縮小される前を、図８（２）はファイル５０１が更新されてファイルサイズが縮小された後の様子を示している。
【００９６】
ファイル５０１のサイズが更新によって縮小される場合、縮小されるファイル５０１を管理しているメタデータ５０２は、ファイルの更新時にホストプロセッサ１２によって更新される。それに先立ち、ホストプロセッサ１２は処理内容をジャーナルログとして記録するために、仮想ボリューム１００内のジャーナル領域５０３に情報を書き込む。このジャーナル領域５０３には、メタデータ５０２の内容も書き込まれるので、ジャーナル領域５０３に書き込まれたメタデータ５０２を読み出せば、制御部２１０は読み出したメタデータの内容からファイル５０１が更新されてサイズが縮小され、更新後のファイルは図８（２）に示した記憶領域に格納されることが分かる。
【００９７】
その結果、図８（２）の場合は、実領域１３２−４に対応する仮想ボリューム１００上の記憶領域が空きになることが分かるので、制御部２１０は仮想ボリューム管理テーブル２１１を用いてこの記憶領域に対応する実領域１３２−４が解放可能である旨を特定できる。
【００９８】
なお、メタデータ５０２にはファイルシステム内の全てのファイル５０１各々について、仮想ボリューム１００内のどの記憶領域に格納されているかを示す情報が登録されている。従って、制御部２１０は、メタデータ５０２に登録された情報から、仮想ボリューム１００内の記憶領域の内空き状態にある記憶領域を判断できる。
【００９９】
さらに制御部２１０は、ジャーナル領域５０３へデータが書き込まれると、ジャーナル領域５０３に書き込まれたデータから構築した最新のメタデータを仮想ボリューム管理テーブル２２１内のエントリ３１９に保存し、エントリ３１９に保存された最新のメタデータを参照して実領域１３２−４を解放する。
【０１００】
以上に述べた、（１）ファイル５０１の更新によるのファイルサイズの縮小、（２）ファイルの更新に伴うジャーナル領域５０３への情報の書き込み、（３）ジャーナル領域５０３に書き込まれたデータに基づく最新メタデータの生成及び、生成された最新メタデータによる仮想ボリューム管理テーブル２１１のエントリ３１９の更新、（４）実領域１３２−４の解放、はこの順で行われることになる。
【０１０１】
尚、ホストプロセッサ１２によるメタデータ５０２の書き込みは、ジャーナル領域５０３への情報の書き込み以降に、制御部２１０の処理とは非同期に行われる。そのために本実施形態では、制御部２１０はホストプロセッサによって仮想ボリューム１００に書き込まれるメタデータ５０２を読み込むのではなく、代わりにジャーナル領域５０３に書き込まれたデータから生成され、仮想ボリューム管理テーブル２１１のエントリ３１９に格納されたメタデータを使用する。
【０１０２】
尚、上述の第四の実施形態においては、ファイルの更新によりファイルのサイズが縮小される場合を例に説明をしたが、ファイル５０１の削除によって実領域１３２が解放可能になる場合にも、同様の方法によって実領域１３２の解放が可能である。ファイル５０１が削除される場合にも、ジャーナル領域にはその削除処理についての内容（メタデータ）が記録されるので、制御部２１０は上述した処理と同様の方法で実領域１３２を解放することができる。
【０１０３】
このように、制御部２１０は、仮想ボリューム１００内の記憶領域で、実際にはデータが格納されていない記憶領域に対応する実領域１３２を解放できる。
【実施例５】
【０１０４】
次に、本発明の第五の実施形態を説明する。
【０１０５】
本実施形態では、上述の第二、第三の実施形態において仮想化スイッチ１１で実行されていたデフラグ処理プログラム２１４やフォーマット処理プログラム２１５等が専用の計算機にて実行される。
【０１０６】
本実施形態では、図１で示した第一の実施形態の構成に、仮想化スイッチ１１に接続される計算機である専用サーバ１５が追加される。専用サーバ１５は、制御部２１０に代わり、デフラグ処理プログラム２１４およびフォーマット処理プログラム２１５の実行を行う。制御部２１０の処理能力やメモリ容量には限りがあり、仮想ボリューム１００の数や対応するファイルシステムの種類には限界がある。そのため、専用サーバ１５でデフラグ処理やフォーマット処理を代行する。
【０１０７】
したがって、第五の実施形態においては、仮想化スイッチ１１の制御部２１０のメモリには、上述した実施形態で説明したデフラグ処理プログラム２１４やフォーマット処理プログラム２１５は格納されておらず、その代わり、仮想化スイッチ１１に接続される専用サーバ１５と仮想化スイッチ１１との間の遣り取りを制御部２１０が制御するために実行されるプログラムであるサーバ連携プログラム２１７がメモリに格納されている。
【０１０８】
制御部２１０は、デフラグ処理を行うときに、デフラグ処理プログラム２１４を実行する代わりに、サーバ連携プログラム２１７を実行し、専用サーバ１５にデフラグ処理開始要求を送信し、専用サーバ１５から仮想ボリューム１００上で空きになった記憶領域のリストを受信する。次に制御部２１０は、この空きになった記憶領域のリストから対応する実領域１３２を仮想ボリューム管理テーブル２２１を検索して特定し、特定された実領域１３２を解放する。
【０１０９】
制御部２１０は、フォーマット処理を行うときに、フォーマット処理プログラム２１５を実行する代わりにサーバ連携プログラム２１７を実行し、専用サーバ１５にフォーマット処理開始要求を送信する。その後制御部２１０の処理は第三の実施形態と同様である。
【０１１０】
このように、本実施形態では専用サーバ１５でデフラグ処理やフォーマット処理等を実行することにより、仮想化スイッチ１１の処理負荷を軽くすることができるので、仮想化スイッチ１１が管理する仮想ボリューム１００の数や、仮想化スイッチ１１が対応可能なファイルシステムの種類を増やすことが出来る。
【実施例６】
【０１１１】
図９から図１０を用いて、本発明の第六の実施形態を説明する。
【０１１２】
本実施形態では、第一の実施形態に対して、仮想化スイッチ１１がホストプロセッサ１２に対して未使用の実領域１３２の合計サイズを報告することが異なる。これは以下の理由による。
【０１１３】
本発明ではホストプロセッサ１２に対し、仮想ボリューム１００の作成時または利用開始時に、所定の大きさの記憶領域（仮想ボリューム１００）がホストプロセッサ１２に割り当てられ利用可能となったことを示す情報が通知されるが、実際には当該ホストプロセッサに割り当てられた仮想ボリューム１００全体には実領域１３２は割当てられていない。従って、後にホストプロセッサからの書き込み要求の受領時等に、新たにその仮想ボリューム１００に実領域１３２を割り当てようとしても、未使用の実領域１３２が不足していて十分なサイズの実領域１３２を仮想ボリューム１００に割り当てられない可能性がある。
【０１１４】
そこで本実施形態では、割り当て可能な空きの（未使用の）実領域１３２のサイズの合計を管理者が確認可能とすることにより、ストレージ装置１３を追加するなどして、仮想ボリューム１００への実領域１３２の割り当て時に空きの実領域１３２が不足する事態を回避できるようにする。
【０１１５】
図９は、仮想化スイッチ１１が記憶部２２０内に有する、空き容量管理テーブル２２５の一例を示している。
【０１１６】
空き容量管理テーブル２２５は仮想ボリューム識別子３３２と空き容量２２６とを列挙したテーブルである。空き容量２２６は、対になっている仮想ボリューム識別子３３２で特定される仮想ボリューム１００に対して割り当て可能な空きの（即ち未使用の）実領域１３２のサイズの合計である。空き容量２２６は、システム管理者が個別に設定する。尚、実領域管理テーブル２２２に登録されている全ての空きの実領域１３２のサイズの合計を仮想ボリューム１００の総数で等分した値を、空き容量管理テーブル２２５の空き容量２２６に設定しても、またはシステム管理者が設定した空き実領域１３２の各仮想ボリューム１００への配分比に応じて空き容量２２６を設定しても良く、空き容量２２６の合計が実領域管理テーブル２２２に登録されている全ての空きの実領域１３２のサイズの合計を超えなければ、各仮想ボリューム１００の空き容量２２６の設定方法は任意でよい。
【０１１７】
この空き容量管理テーブル２２５はホストプロセッサ１２から、ある特別な仮想ボリューム（以下、空き容量管理仮想ボリュームと呼ぶ）として参照可能とし、その仮想ボリューム識別子として、仮想ボリューム１００に割当てられている仮想ボリューム識別子とは別の仮想ボリューム識別子（以下、空き容量管理仮想ボリューム識別子と呼ぶ）を付与しておく。ホストプロセッサは、通常の入出力要求と同様の形式のコマンドを用いて、空き容量管理仮想ボリューム識別子を指定して空き容量管理テーブル２５５の読み出し要求を仮想化スイッチに送信する。これを受信した仮想化スイッチは、空き容量管理テーブル２２５の内容を返す。
【０１１８】
なお、空き容量管理仮想ボリューム識別子は後述する空き容量表示プログラムに直接書き込まれるか、空き容量表示プログラムが参照するホストプロセッサ上の設定ファイルにシステム管理者が書き込む。
【０１１９】
また、仮想化スイッチ１１とホストプロセッサ１２がＬＡＮなど他の通信手段で互いに通信可能であれば、その通信手段に従った方法によってホストプロセッサ１２は空き容量管理テーブル２５５の読み出しを行っても良い。
【０１２０】
図１０は、制御部２１０がホストプロセッサ１２から入出力要求を受取った際に行う処理の手順を示すフローチャートである。
【０１２１】
図３と異なり、図１０において制御部２１０は、ステップ２００６を実行する代わりにステップ２０１０を実行する。ステップ２０１０において制御部２１０は、仮想ボリューム定義プログラム２１１を実行して図３のステップ２００６と同様に仮想ボリューム１００の定義変更処理を実行すると共に更に空き容量管理テーブル２２５の更新処理を行う。
【０１２２】
具体的には、ステップ２００６の処理に加えて制御部２１０は、空き容量管理テーブル２２５内を検索して、書き込み要求の対象となっている仮想ボリューム１００の仮想ボリューム識別子３３２を探す。そして制御部２１０は、この仮想ボリューム識別子３３２に対応する空き容量２２６の値から、ステップ２０１０においてこの仮想ボリュームに対して割当てた実領域１３２の合計サイズを減算し、その値を空き容量２２６に書き戻す。
【０１２３】
一方、ホストプロセッサ１２は内蔵するメモリに空き容量表示プログラムを格納している。ホストプロセッサ１２に内蔵されたＣＰＵは、空き容量表示プログラムを実行して、管理者に対し、ホストプロセッサ１２が使用している仮想ボリューム１００に今後割当て可能な実領域の容量を表示する。この「今後割当て可能な実領域の容量」として、仮想化スイッチからホストプロセッサが受信した、空き容量管理テーブル２２５の情報の内、当該仮想ボリューム１００の空き容量２２６の値を使用が使用される。
【０１２４】
以上に述べた通り本実施形態では、管理者が仮想ボリューム１００に割り当て可能な実領域１３２のサイズの合計を知ることができる。
なお、本実施例に示した方法は、上述した第二から第五の実施形態に対しても適用することができる。  尚、上述の実施例１から実施例６に示した実施形態では、仮想化を実現する装置としてスイッチを例にあげて説明したが、それ以外の装置、例えば計算機でもルーターでも良い。
【図面の簡単な説明】
【０１２５】
【図１】本発明を適用したシステムの全体構成の一例を示す図である。
【図２】仮想化スイッチ１１の内部構成の一例を示す図である。
【図３】制御部２１０の入出力要求の処理手順の一例を示すフローチャートである。
【図４】第二の実施形態におけるデータの再配置の処理概要の一例を示す図である。
【図５】第三の実施形態における制御部２１０の入出力要求の処理手順の一例を示すフローチャートである。
【図６】第三の実施形態におけるフォーマット処理の一例を示す図である。
【図７】第四の実施形態における制御部２１０の入出力要求の処理手順の一例を示すフローチャートである。
【図８】第四の実施形態における、実領域１３２の解放処理の一例を示す図である。
【図９】第六の実施形態における、空き容量管理テーブル２２５の一例を示す図である。
【図１０】第六の実施形態における、制御部２１０の入出力要求の処理手順の一例を示すフローチャートである。
【符号の説明】
【０１２６】
１１…仮想化スイッチ
１２…ホスト
１３…ストレージ装置
２１０…制御部
２２０…記憶部
【図１】
2005011316.tif 000003
【図２】
2005011316.tif 000004
【図３】
2005011316.tif 000005
【図４】
2005011316.tif 000006
【図５】
2005011316.tif 000007
【図６】
2005011316.tif 000008
【図７】
2005011316.tif 000009
【図８】
2005011316.tif 000010
【図９】
2005011316.tif 000011
【図１０】
2005011316.tif 000012