(57)【要約】【課題】仮想ボリュームに対して少なくとも１台のストレージ装置の空き記憶領域を割り当てる技術において、フラグメンテーションを回避し、また記憶領域の使用効率を向上させる実領域割当を行う。【解決手段】仮想化スイッチ１１は、管理コンソール１４から指定された要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで空きの記憶領域から記憶領域を切り出して割り当て、残りサイズが領域サイズ上限値未満となったとき、この残りサイズについて残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を空きの記憶領域から切り出して割り当てる。また仮想化スイッチ１１は、空きの記憶領域が複数の連続空き領域から成るとき、最大サイズをもつ連続空き領域を割当対象として選択する。【選択図】図１
2004164370.tif 000002
【特許請求の範囲】
【請求項１】
仮想ボリュームに対して少なくとも１台のストレージ装置の記憶領域のうちの空きの記憶領域を割り当てる方法において、
要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで前記空きの記憶領域から記憶領域を切り出して割り当て、前記残りサイズが前記領域サイズ上限値未満となったとき、前記残りサイズについて前記残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を前記空きの記憶領域から切り出して割り当てることを特徴とする仮想ボリュームの記憶領域割当方法。
【請求項２】
前記空きの記憶領域が複数の連続空き領域から成るとき、最大サイズをもつ前記連続空き領域を割当対象として選択することを特徴とする請求項１記載の仮想ボリュームの記憶領域割当方法。
【請求項３】
前記空きの記憶領域の両端に隣接する記憶領域が割当済である場合に、解放しにくい方の割当済領域に隣接するように記憶領域を切り出して割り当てることを特徴とする請求項１記載の仮想ボリュームの記憶領域割当方法。
【請求項４】
前記空きの記憶領域が互いに負荷分散可能な複数の空き領域のグループに区分される場合に、前記仮想ボリュームを負荷分散可能な複数の領域に分割して割り当てるよう要求されたとき、指定された分割数に基づいて要求サイズを前記グループに分割して割り当てることを特徴とする請求項１記載の仮想ボリュームの記憶領域割当方法。
【請求項５】
前記グループの数が前記分割数より多いときに、前記グループのうち前記分割数個のグループを空き領域の合計が大きい順に選び、選んだグループに要求されたサイズを分割して割り当てることを特徴とする請求項４記載の仮想ボリュームの記憶領域割当方法。
【請求項６】
前記残りサイズの割当の前に、前記空きの記憶領域から前記領域サイズ上限値の整数倍であって前記要求サイズを越えない最大の記憶領域を割り当てることを特徴とする請求項１記載の仮想ボリュームの記憶領域割当方法。
【請求項７】
前記残りサイズの割当の前に、前記空きの記憶領域から前記要求サイズを越えない最大の２のベキ乗数のサイズをもつ記憶領域を割り当てることを特徴とする請求項１記載の仮想ボリュームの記憶領域割当方法。
【請求項８】
仮想ボリューム上の記憶領域のアドレスとストレージ装置内の論理ユニットのアドレス及び前記論理ユニット内記憶領域のアドレスとの対応情報を格納するアクセス変換テーブル手段と、前記アクセス変換テーブル手段を参照して前記仮想ボリュームに対する入出力要求を前記ストレージ装置内の記憶領域に対する入出力要求に変換する手段とを有する仮想化装置において、
前記仮想ボリュームに対して前記ストレージ装置の記憶領域のうちの空きの記憶領域を割り当てる要求を受け付ける手段と、要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで前記空きの記憶領域から記憶領域を切り出して割り当てる手段と、前記残りサイズが前記領域サイズ上限値未満となったとき、前記残りサイズについて前記残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を前記空きの記憶領域から切り出して割り当てる手段と、割当要求に対して記憶領域の割当が済んだ後に、割当結果に基づいて前記アクセス変換テーブル手段の内容を更新する手段とを有することを特徴とする仮想化装置。
【請求項９】
さらに前記空きの記憶領域が複数の連続空き領域から成るとき、最大サイズをもつ前記連続空き領域を割当対象として選択する手段を有することを特徴とする請求項８記載の仮想化装置。
【請求項１０】
前記空きの記憶領域の両端に隣接する記憶領域が割当済である場合に、解放しにくい方の割当済領域に隣接するように記憶領域を切り出して割り当てる手段を有することを特徴とする請求項８記載の仮想化装置。
【請求項１１】
前記空きの記憶領域が互いに負荷分散可能な複数の空き領域のグループに区分される場合に、前記仮想ボリュームを負荷分散可能な複数の領域に分割して割り当てるよう要求されたとき、指定された分割数に基づいて要求サイズを前記グループに分割して割り当てる手段を有することを特徴とする請求項８記載の仮想化装置。
【請求項１２】
前記グループの数が前記分割数より多いときに、前記グループのうち前記分割数個のグループを空き領域の合計が大きい順に選び、選んだグループに要求されたサイズを分割して割り当てる手段を有することを特徴とする請求項１１記載の仮想化装置。
【請求項１３】
請求項８に記載の仮想化装置を内蔵することを特徴とするストレージ装置。
【請求項１４】
仮想化装置またはホストプロセッサに、仮想ボリュームに対して少なくとも１台のストレージ装置の記憶領域のうちの空きの記憶領域を割り当てる機能を実現させるためのプログラムにおいて、
前記仮想化装置またはホストプロセッサに、要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで前記空きの記憶領域から記憶領域を切り出して割り当てる機能、および前記残りサイズが前記領域サイズ上限値未満となったとき、前記残りサイズについて前記残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を前記空きの記憶領域から切り出して割り当てる機能を実現させるためのプログラム。
【請求項１５】
さらに前記空きの記憶領域が複数の連続空き領域から成るとき、最大サイズをもつ前記連続空き領域を割当対象として選択する機能を実現させるための請求項１４記載のプログラム。
【請求項１６】
前記空きの記憶領域の両端に隣接する記憶領域が割当済である場合に、解放しにくい方の割当済領域に隣接するように記憶領域を切り出して割り当てる機能を実現させるための請求項１４記載のプログラム。
【請求項１７】
前記空きの記憶領域が互いに負荷分散可能な複数の空き領域のグループに区分される場合に、前記仮想ボリュームを負荷分散可能な複数の領域に分割して割り当てるよう要求されたとき、指定された分割数に基づいて要求サイズを前記グループに分割して割り当てる機能を実現させるための請求項１４記載のプログラム。
【請求項１８】
前記グループの数が前記分割数より多いときに、前記グループのうち前記分割数個のグループを空き領域の合計が大きい順に選び、選んだグループに要求されたサイズを分割して割り当てる機能を実現させるための請求項１７記載のプログラム。
【請求項１９】
実記憶領域を保持する少なくとも１台のストレージ装置と、前記ストレージ装置の前記実記憶領域に対するデータ読み書きを起動する少なくとも１台のホストプロセッサと、前記ホストプロセッサと前記ストレージ装置との間に介在し前記ホストプロセッサに対して仮想ボリュームを提供する仮想化装置と、前記仮想化装置に対して記憶領域の割当要求を発行する管理コンソールとを有するシステムにおいて、
前記仮想化装置は、前記仮想ボリューム上の記憶領域のアドレスと前記ストレージ装置内の論理ユニットのアドレス及び前記論理ユニット内記憶領域のアドレスとの対応情報を格納するアクセス変換テーブル手段と、前記アクセス変換テーブル手段を参照して前記ホストプロセッサから受信した前記仮想ボリュームに対する入出力要求を前記ストレージ装置内の記憶領域に対する入出力要求に変換する手段と、前記仮想ボリュームに対して前記ストレージ装置の記憶領域のうちの空きの記憶領域を割り当てる前記管理コンソールからの要求を受け付ける手段と、要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで前記空きの記憶領域から記憶領域を切り出して割り当てる手段と、前記残りサイズが前記領域サイズ上限値未満となったとき、前記残りサイズについて前記残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を前記空きの記憶領域から切り出して割り当てる手段と、割当要求に対して記憶領域の割当が済んだ後に、割当結果に基づいて前記アクセス変換テーブル手段の内容を更新する手段とを有することを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストレージ仮想化システムにおいて仮想ボリュームに対する実ストレージ領域の割り当て技術に関する。
【０００２】
【従来の技術】
ホスト計算機とネットワークで接続されたストレージ装置を仮想化してホスト計算機に見せる技術は、例えば特開２０００−３３９０９８号公報（特許文献１）、米国特許第６，２１６，２０２号明細書（特許文献２）などに記載されている。
【０００３】
また特開２００１−３５０７０７号公報（特許文献３）には、実ストレージ又はその部分領域の性能の評価値とシステム管理者が指定する性能要求値とを比較し、その結果に基づいてストレージの領域をホスト計算機に割り当てる技術が示されている。
【０００４】
さらに米国特許第６，１３１，１５０号明細書（特許文献４）は、ｂｕｄｄｙａｌｇｏｒｉｔｈｍ  （以下  Ｂ．Ａ．と略記する）と呼ばれる技術を開示する。Ｂ．Ａ．は、メモリの空き領域の断片化（フラグメンテーション）を防止するための方法である。メモリ領域を２のベキ乗数のサイズを単位として割り当てるよう管理することによって、メモリ解放時に隣接の空き領域と再統合することができるのでフラグメンテーションを防止できる。
【０００５】
【特許文献１】
特開２０００−３３９０９８号公報
【特許文献２】
米国特許第６，２１６，２０２号明細書
【特許文献３】
特開２００１−３５０７０７号公報
【特許文献４】
米国特許第６，１３１，１５０号明細書
【０００６】
【発明が解決しようとする課題】
ストレージの仮想化により、実ストレージ装置内の記憶領域（以下実領域と呼ぶ）の割当てと解放が頻繁に行われると、ストレージ装置内での空き領域が断片化する。その結果、一つの仮想ボリュームに割り当てる実領域の数が増加する。実領域の数の増加は、管理コストの増大や転送性能の低下、信頼性の低下の原因となる。特許文献１，２及び３に開示される仮想ボリュームの構成方法はフラグメンテーションの回避を考慮していない。第１の本発明が解決しようとする課題は、フラグメンテーションの回避である。
【０００７】
一方、特許文献４に開示されるＢ．Ａ．は、割り当てる領域のサイズが大きくなると効率が低下する。これは割当要求された領域のサイズとこのサイズを越える最小の２のベキ乗数のサイズとの差が無駄になるためである。ストレージの実領域割当では割り当てるサイズが比較的大きい場合があるので、この効率低下が問題になることがある。第２の本発明が解決しようとする課題は、ストレージの実記憶領域割当の効率低下の回避である。
【０００８】
またストレージの仮想化システムでは実領域の割当ては、領域解放と比較しその頻度が多い。実領域の割当は仮想ボリュームの容量追加のたびに行われるが、解放は仮想ボリューム全体を解放するときに限られるためである。従って、連続の空き領域を増加させるためには、解放の時に領域が連続して解放される可能性が大きくなるように、割り当てる実領域を選択する必要がある。第３の本発明が解決しようとする課題は、連続して解放されるような実領域を選択することである。
【０００９】
また仮想ボリュームに割り当てる実領域が複数ある場合は、それらの実領域は性能や信頼性が同等で、かつ負荷の集中を回避するために複数のストレージ装置に分散するように負荷分散を考慮したストレージ装置の選択を行うすることが望ましい。さらに作成した仮想ボリュームに後から実領域を追加するときも、負荷分散を考慮したストレージ装置の選択が望ましい。第４の本発明が解決しようとする課題は、負荷分散を考慮した実領域の選択である。
【００１０】
本発明の目的は、上記課題のうちの少なくとも１つを解決する仮想ボリュームの記憶領域割当技術を提供することにある。
【００１１】
【課題を解決するための手段】
少なくとも上記第２の課題を解決する本発明は、仮想ボリュームに対して少なくとも１台のストレージ装置の記憶領域のうちの空きの記憶領域を割り当てる技術において、要求サイズに対して残りサイズが指定された領域サイズ上限値未満となるまで空きの記憶領域から記憶領域を切り出して割り当て、残りサイズが領域サイズ上限値未満となったとき、この残りサイズについて残りサイズ以上の最小の２のベキ乗数のサイズの記憶領域を空きの記憶領域から切り出して割り当てる仮想ボリュームの記憶領域割当技術を特徴とする。さらに本発明は、上記第１の課題、第３の課題または第４の課題を解決するように構成される。
【００１２】
【発明の実施の形態】
以下、本発明の実施形態について図面を用いて説明する。
【００１３】
図１は、本発明に関係するシステム全体の構成を示す図である。システムは、少なくとも１台のホストプロセッサ１２、少なくとも１台のストレージ装置１３、仮想化スイッチ１１及び管理コンソール１４から構成される。仮想化スイッチ１１は、図示するように伝送路によって他の装置と接続されており、他の装置と通信することができる。ホストプロセッサ１２は、ストレージ装置に対するデータ読み書きを起動する計算機である。
【００１４】
ストレージ装置１３は、それ自身ストレージ制御部を備えたストレージサブシステムであり、少なくとも１つのＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）１３１を有する。ＬＵ１３１は、ストレージ装置１３内の記憶装置上に存在する少なくとも１つの実領域１３２から構成されており、ホストプロセッサ１２など外部に対して論理的に独立した１つのストレージ装置を提供するものである。ＬＵ１３１は、論理ユニットであるが、通常ＲＡＩＤグループなど物理的装置に対応する。実領域１３２は、ＬＵ１３１内の記憶領域を任意に区分する論理領域であり、連続したアドレスをもつ領域である。実領域１３２内の任意領域は、ＬＵアドレスと実領域１３２内アドレスによってアクセスされる。
【００１５】
仮想化スイッチ１１とホストプロセッサ１２との間および仮想化スイッチ１１とストレージ装置１３との間は、ファイバー・チャネルのような伝送路によって接続される。仮想化スイッチ１１は、ホストプロセッサ１２とストレージ装置１３との間の伝送路に介入し、ホストプロセッサ１２側の通信経路をストレージ装置１３側の通信経路にスイッチする機能を有する。また仮想化スイッチ１１は、ホストプロセッサ１２に対して仮想ボリューム１００を提供する。仮想ボリューム１００は、少なくとも１つのＬＵ１３１に属する実領域１３２を１つ以上集めて構成される仮想化された記憶装置である。仮想ボリューム１００内の記憶領域全体には連続したアドレスが付されている。ホストプロセッサ１２は、ストレージ装置１３のＬＵ１３１に直接アクセスする代わりに、仮想ボリューム１００のアドレス及び仮想ボリューム１００内記憶領域のアドレスを指定して仮想ボリューム１００のデータを読み書きすることができる。
【００１６】
管理コンソール１４は、仮想ボリューム１００を新規作成したりその記憶領域の構成を変更するためにシステム管理者によって使用される入出力装置であり、表示装置と入力装置を備える。
【００１７】
図２は、仮想化スイッチ１１の内部構成を示す図である。仮想化スイッチ１１は、入力ポート２４０、出力ポート２５０、転送部２３０、処理部２１０および記憶部２２０から構成される。入力ポート２４０は、仮想化スイッチ１１がホストプロセッサ１２と通信するためのポートである。出力ポート２５０は、仮想化スイッチ１１がストレージ装置１３と通信するためのポートである。転送部２３０は、そのメモリ上に転送情報テーブル２３１を保持する。転送情報テーブル２３１は、各入力ポート２４０と通信可能なホストプロセッサ１２、各出力ポート２５０と通信可能なストレージ装置１３の対応情報を格納する。転送部２３０は、転送情報テーブル２３１を参照し、入力ポート２４０がホストプロセッサ１２から受信した入出力要求を要求先のストレージ装置１３が接続される出力ポート２５０へ転送する。また出力ポート２５０がストレージ装置１３から受信した応答情報やデータを該当するホストプロセッサ１２が接続される入力ポート２４０へ転送する。ただしホストプロセッサ１２から受け取った入出力要求のうち仮想ボリューム１００に対する入出力要求については、後述のアクセス変換部２１２の処理が介入し、その結果として決定されたストレージ装置１３へ入出力要求を送信する。処理部２１０は、プロセッサとメモリとを備え、このプロセッサがメモリに格納されたプログラムを実行することによって以下に詳述する仮想化スイッチ１１の機能を実現する。記憶部２２０は、処理部２１０が参照する管理テーブルやデータを格納する。
【００１８】
図３は、処理部２１０および記憶部２２０の内部構成を示す図である。処理部２１０は、そのメモリ上に仮想ボリューム定義部２１１、アクセス変換部２１２、割当処理部２１３、実領域切出部２１４およびプール作成部２１５の各プログラムを格納し、そのプロセッサによってこれらプログラムを実行する。記憶部２２０は、仮想ボリューム管理テーブル２２１、実領域管理テーブル２２２、プール管理テーブル２２３、アクセス変換テーブル２２４および領域サイズ上限値２２５を記憶する。
【００１９】
アクセス変換テーブル２２４は、仮想ボリューム１００ごとに存在し、仮想ボリューム１００上の記憶領域のアドレスとストレージ装置１３内のＬＵ１３１のアドレス及び実領域１３２内記憶領域のアドレスとの対応情報を保持するテーブルである。アクセス変換テーブル２２４は、仮想ボリューム１００内の記憶領域の構成を変更したとき更新される。
【００２０】
アクセス変換部２１２は、アクセス変換テーブル２２４を参照してホストプロセッサ１２から受け取った仮想ボリューム１００に対する入出力要求を対応するストレージ装置１３およびＬＵ１３１への入出力要求に変換する。なお各入力ポート２４０ごとに分散してアクセス変換テーブル２２４およびアクセス変換部２１２をもつと性能向上できる。
【００２１】
実領域管理テーブル２２２は、ＬＵ１３１ごとに存在し、そのＬＵ１３１に含まれる実領域１３２を管理するために使用されるテーブルである。各実領域管理テーブル２２２は、ストレージ装置ＩＤ３２１、ＬＵ−ＩＤ３２２、グループＩＤ３２３および実領域リスト３２４を格納する。ストレージ装置ＩＤ３２１は、当該ＬＵを保持するストレージ装置１３の識別子である。ＬＵ−ＩＤ３２２は当該ＬＵの識別子である。グループＩＤ３２３は、ストレージ装置１３側の複数のＬＵ１３１を性能によってグループ化するときに当該ＬＵが属するグループの識別子である。
【００２２】
ここで言うグループは、複数のストレージ装置１３あるいはＬＵ１３１にかかるアクセス負荷を分散するときの記憶単位となるものである。例えばストレージ装置１３が保持するＬＵ１３１ごとあるいは実領域１３２ごとに負荷を分散できるなら、各ＬＵ１３１ごとあるいは負荷分散可能な実領域１３２ごとにグループを区分してよい。反対にストレージ装置１３が負荷分散機能をもたない場合には、そのストレージ装置１３が保持するＬＵ１３１はすべて同一グループとなる。すなわち同一のグループに属する記憶装置あるいは記憶領域は、負荷分散のためにはそれ以上分割できない単位となる。負荷分散を要求する仮想ボリュームに対しては、１つの仮想ボリュームについて複数のグループが割り当てられる。
【００２３】
実領域リスト３２４は、少なくとも１つのエントリ３２５から構成される。各エントリ３２５は、実領域１３２に対応して設けられ、領域ＩＤ、サイズ、仮想ボリューム識別子及び実領域の解放し易さの各項目から成る。領域ＩＤは当該実領域１３２を特定するための識別子、サイズは当該実領域１３２のサイズである。仮想ボリューム識別子は、当該実領域１３２が割り当てられている仮想ボリュームの識別子である。実領域の解放のし易さは、その実領域が仮想ボリューム１００に割り当てられた後にその実領域が解放し易いか否かのレベルあるいは優先度を示す情報である。その実領域１３２のデータを他の実領域１３２に移動する可能性が高い場合には解放し易い実領域１３２と言える。逆に移動する可能性が低い場合には解放し難い実領域１３２と言える。実領域リスト３２４内のエントリ３２５は、実領域１３２のアドレス順に配列されている。グループ内の実領域１３２のアドレスは連続しており、エントリ３２５はそのグループのすべての実領域を網羅する。実領域１３２が空きであるようなエントリは、その仮想ボリューム識別子が空となっている。
【００２４】
仮想ボリューム管理テーブル２２１は、仮想ボリューム１００ごとに存在し、識別子３１１、分割数３１２、要求性能３１３、割当てサイズ３１４、割当済実領域リスト３１５及び仮割当実領域リスト３１６を格納する。識別子３１１は、当該仮想ボリューム１００の識別子である。分割数３１２は、当該ボリューム１００を複数の領域に分割し、各々の領域へのアクセスを負荷分散する場合にその分散する領域の数である。要求性能３１３は、システム管理者が当該仮想ボリューム１００に対して要求する性能と信頼性を示す数値である。性能はデータ転送速度によって表現される。また信頼性はランク付けされた信頼度である。割当てサイズ３１４は、割当処理において当該仮想ボリューム１００に割り当てる実領域のサイズである。特許文献３には性能指標についての記載がある。割当済実領域リスト３１５は、当該仮想ボリューム１００に割当済の実領域１３２の実領域ＩＤ３１７のリストである。仮割当実領域リスト３１６は、当該仮想ボリューム１００に割り当てるために予約された実領域１３２の実領域ＩＤ３１７のリストである。
【００２５】
プール管理テーブル２２３は、上記のグループごとに存在し、性能指標３５１、グループＩＤ３２３、空き領域の合計３５３および実領域リスト３５４を格納する。性能指標３５１は、当該プールを構成する実領域１３２の性能と信頼性を示す数値である。グループＩＤ３２３は、当該プールに対応するグループの識別子である。空き領域の合計３５３は、当該プールの空き領域の合計容量である。実領域リスト３５４は、当該プールを構成する空きの実領域１３２の識別子（実領域ＩＤ）のリストである。
【００２６】
領域サイズ上限値２２５は、領域割当において許容し得る無駄になる実領域１３２のサイズの上限値を格納する。領域サイズ上限値２２５は、２のベキ乗数で設定される。領域サイズ上限値２２５は、システム管理者によって設定されるデータである。
【００２７】
仮想ボリューム定義部２１１は、管理コンソール１４を介してシステム管理者から仮想ボリューム１００の割当要求と今回割り当てる実領域について、割当てサイズ３１４、分割数３１２および要求性能３１３を受け取り、仮想ボリューム管理テーブル２２１を新規作成または更新する。仮想ボリューム１００の記憶容量を増やすときは仮想ボリューム管理テーブル２２１の更新となる。次に仮想ボリューム定義部２１１は、プール作成部２１５にプールの作成を依頼する。プール作成部２１５は、すべての実領域管理テーブル２２２について空きの実領域１３２を探し、グループごとにグループＩＤ３２３を作成し、各グループの空きの実領域１３２の識別子の集合を実領域リスト３５４に格納し、空き容量の合計３５３を設定する。またそのグループについてあらかじめ定義された性能指標３５１を設定する。すべてのプール管理テーブル２２３が作成された後、仮想ボリューム定義部２１１は、それらのプール群と、作成または更新された仮想ボリューム管理テーブル２２１を割当処理部２１３に渡し、実領域１３２の割当て処理を依頼する。
【００２８】
図４は、割当処理部２１３の処理の流れを示すフローチャートである。まず割当処理部２１３は、当該仮想ボリューム管理テーブル２２１の割当済実領域リスト３１５と実領域管理テーブル２２２を参照して、当該仮想ボリューム１００が割り当てられている実領域１３２のグループのグループＩＤ３２３を列挙する（ステップ２００１）。仮想ボリューム１００を新規に作成する場合には、列挙すべきグループＩＤ３２３がないので、何もしない。次に割当処理部２１３は、変数ｐｌに分割数３１２から列挙したグループの数（新規割当の場合は０）を差し引いた数を代入する（ステップ２００２）。変数ｐｌは新たに探すプールの数を意味する。
【００２９】
変数ｐｌが０を超える場合（ステップ２００３Ｙ）、割当処理部２１３は、ステップ２００４からステップ２００６までを実行して、実領域１３２を割当てるプールを選択する。すなわちまず割当処理部２１３は、要求仕様３１３とステップ２００１で列挙したグループＩＤ３２３以外をもつプール管理テーブル２２３の性能指標３５１とを比較して要求仕様３１３を満たすプールを選択する（ステップ２００４）。特許文献３には要求仕様と性能指標との比較の方法についての記載がある。次に選択したプールの数と変数ｐｌとを比較する（ステップ２００５）。プールの数＜ｐｌの場合（ステップ２００５Ｙ）には、プールの数が不足するのでステップ２０１３へ行く。プールの数≧ｐｌの場合（ステップ２００５Ｎ）には空き容量の合計３５３が大きな順にｐｌ個のプールを選択し（ステップ２００６）、ステップ２０１３へ進む。ただしｐｌ個のプールの空き容量の合計３５３をすべて加えた総容量が割当てサイズ３１４より小さい場合には、総容量が割当てサイズ３１４に達するまで、空き容量の合計３５３が大きい順にさらにプールを選択する。
【００３０】
一方ｐｌが０を越えない場合（ステップ２００３Ｎ）、割当処理部２１３は、ステップ２００７からステップ２０１２までの処理を実行する。まず割当処理部２１３は、ステップ２００１で列挙したグループＩＤ３２３を持つプール管理テーブル３２３、すなわちプール群を選択する（ステップ２００７）。次に割当処理部２１３は、列挙したグループＩＤ３２３をもつ実領域管理テーブル２２２の実領域リスト３２４を探索し、すでに当該仮想ボリューム１００に割り当てられた実領域１３２に隣接する連続空き領域を選択する（ステップ２００８）。割り当てるべき空き領域が複数ある場合は、割当てサイズ３１４を適当に分割して各々を領域割当の対象とする。次に割当処理部２１３は、割当サイズと選択した連続空き領域群を指定して実領域切出部２１４を呼び出し、実領域切り出し処理を行う（ステップ２００９）。その後、切り出された領域のリストを当該仮想ボリューム管理テーブル２２１の仮割当実領域リスト３１６に追加し、仮割当実領域リスト３１６を更新する（ステップ２０１０）。次に割当処理部２１３は、割当てサイズ３１４からステップ２００９で割り当てた領域のサイズを差し引く（ステップ２０１１）。割当てサイズ３１４が０以下になれば（ステップ２０１２Ｎ）、処理を終了する。
【００３１】
次に割当処理部２１３は、各プールに割り当てる領域のサイズを割り振る（ステップ２０１３）。割り振り方は等分でもよいし、そうでなくてもよい。対象となるプールは、ステップ２０１３に来るまでに選択したプールである。次に割当処理部２１３は、各プールについて実領域管理テーブル２２２を参照し、ステップ２０１３で割り振ったサイズを越える連続の空き領域群があるか否か判定する（ステップ２０１４）。空き領域がない場合には、最大の連続空き領域を選択する（ステップ２０１６）。空き領域がある場合は、その近傍の実領域１３２の解放のしやすさが最も小さい（最も解放され難い）空き領域群を選ぶ（ステップ２０１５）。空き領域に隣接する一方の実領域１３２が解放され難くく、他方の実領域１３２が解放され易い場合に、今回割り当てる領域を前者に隣接するように割り当てると、後者が解放されたときに統合される連続空き領域のサイズがより大きくなる。
【００３２】
次に割当処理部２１３は、ステップ２０１５またはステップ２０１６で選択した実領域群１３２と割当てサイズを指定して実領域切出部２１４を呼び出し、実領域切り出し処理を行う（ステップ２０１７）。切り出された領域のリストを当該仮想ボリューム管理テーブル２２１の仮割当て実領域リスト３１６に追加し、仮割当実領域リスト３１６を更新する（ステップ２０１８）。次に割当処理部２１３は、割当てサイズ３１４からステップ２０１７で割り当てた領域のサイズを差し引く（ステップ２０１９）。割当てサイズ３１４が０を越えていれば（ステップ２０２０Ｙ）、ステップ２０１３に戻る。割当てサイズが０以下になれば（ステップ２０２０Ｎ）、処理を終了する。
【００３３】
上記割当処理部２１３の処理手順によれば、システム管理者が仮想ボリューム１００の割当要求時に指定した割当てサイズ３１４、分割数３１２及び要求性能３１３のうち、割当てサイズ３１４を満足させることが最優先される。次いでステップ２００４、２００５により要求性能３１３を満足させることが優先される。分割数３１２を満足させることは最後の優先となる。また上記割当処理部２１３の処理手順によれば、ステップ２０１５の処理により、できるだけフラグメンテーションが起きないような実領域の割り当て方をする。
【００３４】
図５は、第１の実施例において実領域切出部２１４の処理の流れを示すフローチャートである。まず実領域切出部２１４は、初期化処理として割り当てた実領域１３２を割当処理部２１３に返すためにメモリ上に設けた連絡領域であるリストを空に初期化し（ステップ２１０１）、変数ｓｉｚｅに渡されたサイズを格納する（ステップ２１０２）。次に実領域切出部２１４は、渡された連続空き空き領域群について、１つの空き領域の下位と上位に隣接する割当済の実領域１３２の解放されにくさを判定し、解放されにくい実領域１３２に隣接する空き領域を選択する（ステップ２１０３）。
【００３５】
次に実領域切出部２１４は、ステップ２１０４から２１１６までを繰り返すことによってステップ２１０３で選択した空き領域について順に実領域１３２を切り出していく。まず実領域切出部２１４は、選択した空き領域のサイズがｓｉｚｅ以下の場合には（ステップ２１０４Ｎ）、選択した空きの実領域１３２の全体を切り出すこととし、この実領域１３２とそのサイズをリストに登録する（ステップ２１０５）。ここで切り出すとは、実領域管理テーブル２２２の該当するエントリ３２５に仮想ボリュームの識別子を設定することである。以下切り出すとは、一般に実領域管理テーブル２２２の該当するエントリ３２５を割当済のエントリ３２５と空きのエントリ３２５とに分割し、必要な領域ＩＤ、サイズ及び仮想ボリューム１００の識別子を設定することである。次にステップ２１０３と同様の処理によって渡された連続空き領域群について次の空き領域を選択する（ステップ２１０６）。次にｓｉｚｅからステップ２１０５で登録した実領域１３２のサイズを差し引く（ステップ２１０７）。ｓｉｚｅが０になった場合（ステップ２１０８Ｙ）には、ステップ２１１７へ進む。それ以外の場合はステップ２１０４に戻る。
【００３６】
選択した空き領域のサイズがｓｉｚｅより大きい場合（ステップ２１０４Ｙ）には、ステップ２１０９からステップ２１１６までを実行し、選択された空き領域を分割して割り当てる実領域１３２を切り出す。まず実領域切出部２１４は、ｓｉｚｅが領域サイズ上限値２２５以上か否か判定する（ステップ２１０９）。ｓｉｚｅが領域サイズ上限値２２５以上の場合（ステップ２１０９Ｙ）には、実領域切出部２１４は、選択した空き領域から領域サイズ上限値２２５の整数倍であってｓｉｚｅを越えない最大の領域を切り出す（ステップ２１１０）。次に切り出した実領域１３２とそのサイズをリストに登録する（ステップ２１１１）。次にステップ２１０３と同様の処理によって渡された連続空き領域群について残りの空き領域を選択する（ステップ２１１２）。次にｓｉｚｅからステップ２１１１で登録した実領域１３２のサイズを差し引く（ステップ２１１３）。ステップ２１１２において、残りの空き領域を選択することにより、今回のステップ２１１０で切出した実領域１３２と以降で実行するステップ２１０５、ステップ２１１５またはステップ２１１０で切り出す空き領域とは連続することになる。ｓｉｚｅが０になった場合（ステップ２１１４Ｙ）には、ステップ２１１７へ進む。それ以外の場合は、ステップ２１０４に戻る。
【００３７】
ｓｉｚｅが領域サイズ上限値２２５未満の場合（ステップ２１０９Ｎ）には、実領域切出部２１４は、Ｂ．Ａ．で領域を切り出す（２１１５）。すなわちｓｉｚｅをｓｉｚｅ以上の最小の２のベキ乗数のサイズに切り上げる。そして選択された空き領域からこの切り上げたサイズの領域を切り出し、残りの領域があればそれを空き領域とする。次に実領域切出部２１４は、切り出した実領域１３２とそのサイズをリストに登録する（ステップ２１１６）。最後に実領域切出部２１４は、リストを割当処理部２１３に返して（ステップ２１１７）、処理を終了する。
【００３８】
上記実施形態の割当処理部２１３及び領域切出部２１４によれば、実領域の割当に際して、空き容量の大きな順に空き領域を選択しかつ連続する空き領域を選択することによって、割当済領域のフラグメンテーションと空き領域のフラグメンテーションを回避でき、発明が解決しようとする４つの課題のうちの第１の課題を解決することができる。また空き領域から割り当てる実領域を切り出していき、残りサイズが領域サイズ上限値未満となったときに始めてＢ．Ａ．を適用するので、領域の使用効率を向上させることができ、第２の課題を解決することができる。また隣接する割当済領域が解放しにくいような空き領域を選択し、解放されにくい割当済領域に隣接して実領域を割り当てることによって、連続して解放され空き領域を拡大させる可能性が大きくなり、第３の課題を解決することができる。また分割数３１２に応じて仮想ボリューム１００を負荷分散可能な領域に分割することができるので仮想ボリューム１００への負荷を分散させることができ、第４の課題を解決することができる。特に第１の実施例では、ステップ２１１０で選択した空き領域から領域サイズ上限値２２５の整数倍であって残りサイズを越えない最大の領域を切り出すので、空き領域の残りが領域サイズ上限値２２５未満になる可能性が生じ、領域の使用効率を向上させる第２の課題解決に寄与する。
【００３９】
図６は、第２の実施例において実領域切出部２１４の処理の流れを示すフローチャートである。第２の実施例は、第１の実施例の実領域切出部２１４のステップ２１１０の代わりにステップ２１２０を実行する。ステップ２１２０では、実領域切出部２１４は、ｓｉｚｅを越えない最大の２のベキ乗数のサイズをもつ実領域１３２を切り出す。
【００４０】
第２の実施例によれば、仮想ボリューム１００に割り当てられる実領域は、領域サイズ上限値２２５を越える２ベキ乗数のサイズの複数の実領域１３２に分割され、一見すると割当済領域のフラグメンテーションが生じるように見える。しかし、ステップ２１１２により切り出した実領域１３２の隣の空き領域が必ず選択されるので、切り出された複数の領域は連続することになり、フラグメンテーションを回避できる。なお第２の実施例の場合も上述したように発明が解決しようとする４つの課題を解決していることが理解される。
【００４１】
割当処理部２１３の処理が終了すると、仮想ボリューム定義部２１１は、新規作成又は更新された仮想ボリューム管理テーブル２２１の内容を管理コンソール１４に表示する。システム管理者がこの表示内容を確認する。管理コンソール１４を介して修正の入力があれば、仮想ボリューム定義部２１１は、この入力情報に基づいて当該仮想ボリューム管理テーブル２２１の実領域割当を修正する。
【００４２】
以上の確認及び修正が済んだ後に、仮想ボリューム定義部２１１は、仮割当て実領域リスト３１６内の実領域ＩＤ３１７を実領域１３２のアドレス順にソートし、その結果の実領域ＩＤ３１７群を割当済実領域リスト３１５の末尾に移動する。次に当該仮想ボリューム１００の新規作成又は更新に伴って対応するアクセス変換テーブル２２４を作成又は更新し、処理を終了する。
【００４３】
仮割当て実領域リスト３１６内の実領域ＩＤ３１７をソートするのは、割当処理部２１３の処理と協調して仮想ボリューム１００に割り当てた実領域１３２をなるべく連続させるためである。このソート処理により実領域１３２が連続すれば、対応付ける仮想ボリューム１００上のアドレス範囲とストレージ装置１３上の実領域１３２のアドレス範囲の組の数を減少させることができ、アドレス変換テーブル２２４のサイズを小さくすることができる。すなわち本発明が解決しようとする課題のうちの第１の課題の解決に寄与できる。
【００４４】
図７は、本実施形態において仮想ボリュームに実領域を割り当てるときの原理を説明する図である。図７（ａ）は、ストレージ群Ａ，Ｂ，Ｃがあり、その転送性能が各々８０ＭＢ／ｓ，６０ＭＢ／ｓ，４０ＭＢ／ｓとする。また空き容量の合計が各々８０ＧＢ，２００ＧＢ，３００ＧＢとする。割当処理部２１３は、要求性能を満足する空き容量の合計が最も大きいストレージ群を選択する。例えば５０ＭＢ／ｓ以上の転送性能をもつ６０ＧＢの領域が要求されたとき、割当処理部２１３は、ストレージ群Ｂを選択する。またストレージ群Ｂの空き容量の中でできるだけ連続する大きい空き領域を選択する。これによって記憶領域のフラグメンテーションの回避が可能となる。
【００４５】
図７（ｂ）は、あるストレージ群上の連続領域において、解放しやすさが０．５と１０．０の割当済領域の間に空き領域Ａが存在し、解放しやすさが１０．０と２０．０の割当済領域の間に空き領域Ｂが存在している状態を示している。このとき割当処理部２１３は、解放のしやすさが最も小さい割当領域に隣接する空き領域Ａを選択する。また実領域切出部２１４は、解放のしやすさが最も小さい割当領域に連続するように実領域を割り当てる。解放しやすさが１０．０及び２０．０の割当済領域が将来解放される可能性が高く、従って連続空き領域が拡大する可能性が大きいためである。
【００４６】
図７（ｃ）は、第１の実施例の効果を説明する図である。例えば２５６ＧＢ以上の連続空き領域があるとし、この領域に要求サイズが１５０ＧＢの実領域を割り当てるものとする。領域サイズ上限値２２５は３２ＧＢとする。従来方式により、１５０ＧＢ以上で最小の２のベキ乗数のサイズの領域を割り当てるとすると、２５６ＧＢの実領域を割り当てることになる。第１の実施例の実領域切出部２１４によれば、領域サイズ上限値２２５の整数倍で実領域を割り当てるために１６０ＧＢの実領域の割当で済み、従来方式に比べて３２ＧＢ×３＝９６ＧＢの無駄な割当を回避できる。より詳細に言えば、１回目の割当で１５０ＧＢを越えない３２ＧＢ×４の領域を割り当て、２回目の割り当てで残り２２ＧＢについてＢ．Ａ．を適用するので３２ＧＢの領域を割り当て、結局３２ＧＢ×５＝１６０ＧＢの実領域を割り当てることになる。また１６０ＧＢの領域は解放しにくい割り当て済領域に連続するように割り当てられるので、図の空き領域の左端又は右端に寄せて割り当てられる。また第１の実施例で無駄になる領域は常に領域サイズ上限値２２５未満であることが理解される。
【００４７】
第２の実施例では、図７（ｃ）について第１の実施例と割当方式が異なるだけである。第２の実施例ではまず１５０ＧＢを越えない最大の２のベキ乗数のサイズの３２ＧＢ×４の領域を割り当てると、残りサイズが２２ＧＢとなり、領域サイズ上限値２２５未満となり２回目の割当で残り２２ＧＢについてＢ．Ａ．を適用するので３２ＧＢの領域を割り当て、結局３２ＧＢ×５＝１６０ＧＢの実領域を割り当てることになり、その効果は第１の実施例の場合と変わらない。第２の実施例の場合も無駄になる領域は常に領域サイズ上限値２２５未満となることが理解される。
【００４８】
図８を用いて本発明の第３の実施例について説明する。図８は、第３の実施例のシステム構成図である。図８の構成と図１の構成との違いは、仮想化スイッチ１１がストレージ装置８１３に内蔵されていることである。すなわち仮想化スイッチ１１とストレージ装置８１３は同じ筐体に格納されている。ストレージ装置８１３は、自身のＬＵを仮想化ボリューム１００としてホストプロセッサ１２がアクセスすることを可能にする。またストレージ装置８１３の仮想化スイッチ１１には、他のストレージ装置１３も接続可能である。仮想化スイッチ１００は、上記第１または第２の実施例と同様の機能をもつので説明を省略する。第３の実施例によれば、仮想化機能と仮想ボリューム割当機能をもつストレージ装置８１３は、第１または第２の実施例と同様に本発明が解決しようとする課題を解決することができる。
【００４９】
図９及び図１０を用いて本発明の第４の実施例について説明する。図９は、第４の実施例のシステム構成図である。本実施例では、ストレージ装置１３及び管理コンソール１４はホストプロセッサ１２に接続される。図９の構成と図１の構成との違いは、ホストプロセッサ１２の処理部１２１および記憶部１２２を明示したことであり、処理部１２１および記憶部１２２は、そのプログラムを実行することによって仮想化スイッチ１１が持つ仮想化機能を実現する。
【００５０】
図１０は、第４の実施例における記憶部１２２内のプログラム及びデータの構成を示している。図１０の記憶部１２２は、図３の記憶部２２０と異なり、仮想ボリューム定義プログラム３８１、アクセス変換プログラム３８２、割当処理プログラム３８３、実領域切出プログラム３８４およびプール作成プログラム３８５を格納する。アクセス変換プログラム３８２は、処理部１２１によって記憶部１２２にロードして実行され、実行されるアプリケーションプログラムまたはファイルシステム制御プログラム（図示せず）が発行する仮想ボリューム１００への入出力要求をストレージ装置１３のＬＵ１３１への入出力要求に変換する。
【００５１】
仮想ボリューム定義プログラム３８１、割当処理プログラム３８３、実領域切出プログラム３８４およびプール作成プログラム３８５は、処理部１２１によって記憶部１２２にロードされて実行され、それぞれ図３に示す仮想ボリューム定義部２１１、割当処理部２１３、実領域切出部２１４およびプール作成部２１５が持つ機能を実現する。その他の構成及び機能は、上記第１または第２の実施例と同様なので説明を省略する。第４の実施例によれば、ホストプロセッサ１２の上記プログラム実行によってストレージ装置１３の仮想化機能と仮想ボリューム割当機能を実現でき、第１または第２の実施例と同様に本発明が解決しようとする課題を解決することができる。
【００５２】
【発明の効果】
以上述べたように本発明によれば、記憶領域のフラグメンテーションを回避することができる。また記憶領域の使用効率を向上させることができる。また連続する空き領域のサイズを拡大することが可能となる。さらに負荷分散を考慮する記憶領域の割当が可能である。
【図面の簡単な説明】
【図１】実施形態のシステム構成図である。
【図２】実施形態の仮想化スイッチ１１の内部構成を示す図である。
【図３】実施形態の処理部２１０および記憶部２２０の内部構成を示す図である。
【図４】実施形態の割当処理部２１３の処理の流れを示すフローチャートである。
【図５】第１の実施例の実領域切出部２１４の処理の流れを示すフローチャートである。
【図６】第２の実施例の実領域切出部２１４の処理の流れを示すフローチャートである。
【図７】実施形態の実領域割当の原理を説明する図である。
【図８】第３の実施例のシステム構成図である。
【図９】第４の実施例のシステム構成図である。
【図１０】第４の実施例の記憶部１２２の内部構成を示す図である。
【符号の説明】
１１：仮想化スイッチ、１２：ホストプロセッサ、１３：ストレージ装置、１３１：ＬＵ、１３２：実領域、２１１：仮想ボリューム定義部、２１３：割当処理部、２１４：実領域切出部、２２１：仮想ボリューム管理テーブル、２２２：実領域管理テーブル、２２３：プール管理テーブル、２２５：領域サイズ上限値。
【図１】
2004164370.tif 000003
【図２】
2004164370.tif 000004
【図３】
2004164370.tif 000005
【図４】
2004164370.tif 000006
【図５】
2004164370.tif 000007
【図６】
2004164370.tif 000008
【図７】
2004164370.tif 000009
【図８】
2004164370.tif 000010
【図９】
2004164370.tif 000011
【図１０】
2004164370.tif 000012