(57)【要約】【課題】サーバから未割当領域以上の割当要求が発生した場合にも記憶領域を当該サーバに対し、割当てられるようにすること。また、ストレージプール上の記憶領域を効率よく利用することが可能な方法とシステムを提供すること。【解決手段】複数のサーバと記憶装置に接続され、複数のサーバによって使用される記憶装置の物理的な記憶領域を仮想的な領域（ストレージプール）として管理する管理サーバは、サーバから受信する未割当領域以上の領域割当命令に応答して、他のサーバの割当領域の少なくとも一部を開放して、領域割当命令を発行したサーバに割当てる。【選択図】  図１
2005031929.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置が有する記憶領域を仮想的な記憶領域として管理する、
複数のサーバに接続されている管理サーバであって、
前記記憶装置は前記複数のサーバに共有され、
前記記憶装置は、前記複数のサーバの少なくとも１つに割当てられた記憶領域である割当領域を有しており、
前記管理サーバは、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする管理サーバ。
【請求項２】
請求項１記載の管理サーバであって、
前記記憶装置の前記割当領域には、
使用されている使用領域と使用されていない未使用領域が存在し、
前記管理サーバは、
前記割当領域の使用領域および未使用領域を識別するための情報を有し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
前記識別するための情報に基づいて、
他のサーバの割当領域のうち未使用領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする管理サーバ。
【請求項３】
請求項１記載の管理サーバであって、
前記記憶装置の前記割当領域に格納されているデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバは、
サーバからのデータの書き込み要求に基づいて、
前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、
判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち低優先度データが格納されている領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする管理サーバ。
【請求項４】
請求項２記載の管理サーバであって
前記記憶装置の前記割当領域の使用領域に格納されているデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバは、
サーバからのデータの書き込み要求に基づいて、
前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、
判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つからから受信する未割当て領域以上の前記領域割当命令に応答して、
他のサーバの割当領域のうち、未使用領域の少なくとも一部と低優先度データが格納されている領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする管理サーバ。
【請求項５】
請求項１記載の管理サーバにおいて、
前記記憶装置を利用する複数のサーバの各々に対する課金処理を一定時間ごとに行うことを特徴とする管理サーバ。
【請求項６】
請求項５記載の管理サーバにおいて、
低優先度データを格納する場合と高優先度データを格納する場合とで、
各々異なるの課金額を設定することを特徴とする管理サーバ。
【請求項７】
記憶装置と、複数のサーバと前記記憶装置に接続される管理サーバを有し、
前記管理サーバが、記憶装置の記憶領域を仮想的な記憶領域として管理する記憶装置システムであって、
前記記憶装置は前記複数のサーバに共有され、
前記記憶装置は、前記複数のサーバの少なくとも１つに割当てられてた記憶領域である割当領域を有しており、
前記管理サーバは、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする記憶装置システム。
【請求項８】
請求項７記載の記憶装置システムであって、
前記記憶装置の前記割当領域には、
使用されている使用領域と使用されていない未使用領域が存在し、
前記管理サーバは、
前記割当領域の使用領域及び未使用領域を識別するための情報を有し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
前記識別するための情報に基づいて、
他のサーバの未使用領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする記憶装置システム。
【請求項９】
請求項７記載の記憶装置システムであって、
前記記憶装置の前記割当領域に格納されるデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバは、
サーバからのデータの書き込み要求に基づいて、
前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、
判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち、低優先度データが格納されている領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする記憶装置システム。
【請求項１０】
請求項８記載の記憶装置システムであって、
前記記憶装置の前記使用領域に格納されているデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバは、
サーバからのデータの書き込み要求に基づいて、前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つから受信する未割当領域以上の前記領域割当命令に応答して、
他のサーバの割当領域のうち、未使用領域の少なくとも一部と低優先度データが格納されている領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てることを特徴とする記憶装置システム。
【請求項１１】
請求項７記載の記憶装置システムであって、
前記記憶装置を利用する複数のサーバ各々に対する
課金処理を一定時間ごとに行うことを特徴とする記憶装置システム。
【請求項１２】
請求項１１記載の記憶装置システムであって、
低優先度データを格納する場合と高優先度データを格納する場合とで各々異なる課金額を設定することを特徴とする記憶装置システム。
【請求項１３】
記憶装置が有する記憶領域を、仮想的な記憶領域として管理する管理サーバのプログラムであって、
前記管理サーバは複数のサーバに接続され、
前記記憶装置は、前記管理サーバを介して複数のサーバに共有され、
前記記憶装置は、前記複数のサーバの少なくとも１つに割当てられた記憶領域である割当領域を有しており、
前記管理サーバのプログラムは、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てる処理を前記管理サーバに実行させることを特徴とするプログラム。
【請求項１４】
請求項１３記載の管理サーバのプログラムであって、
前記記憶装置の前記割当領域には、
使用されている使用領域と使用されていない未使用領域が存在し、
前記管理サーバのプログラムは、
前記割当領域の使用領域及び未使用領域を識別するための情報を有し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
前記識別するための情報に基づいて、
他のサーバの未使用領域のうち少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てる処理を前記管理サーバに実行させることを特徴とするプログラム。
【請求項１５】
請求項１３記載の管理サーバのプログラムであって、
前記記憶装置の前記割当領域に格納されているデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバのプログラムは、
サーバからのデータの書き込み要求に基づいて、前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つから受信する未割当領域以上の領域割当命令に応答して、
他のサーバの割当領域のうち低優先度データが格納されている領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てる処理を前記管理サーバに実行させることを特徴とするプログラム。
【請求項１６】
請求項１４記載の管理サーバのプログラムであって、
前記記憶装置の前記使用領域に格納されているデータには、
優先度が高い高優先度データと優先度が低い低優先度データが存在し、
前記管理サーバのプログラムは、
サーバからのデータの書き込み要求に基づいて、前記記憶装置に書き込まれるデータが、
高優先度データか低優先度データかを判断して、判断結果と前記データが書き込まれる記憶領域の位置情報を保持し、
前記複数のサーバの１つから受信する未割当領域以上の前記領域割当命令に応答して、
他のサーバの割当領域のうち、未使用領域の少なくとも一部と低優先度データが格納されている領域の少なくとも一部を開放して未割当領域とし、
前記複数のサーバの１つへ領域を割当てる処理を管理サーバに実行させることを特徴とするプログラム。
【請求項１７】
請求項１３記載の管理サーバのプログラムであって、
前記記憶装置を利用する複数のサーバ各々に対する課金処理を一定時間ごと管理サーバに実行させることを特徴とするプログラム。
【請求項１８】
請求項１７記載の管理サーバのプログラムであって、
低優先度データを格納する場合と高優先度データを格納する場合とで各々異なるの課金額を設定し、
前記課金額に基づいて、
課金処理を管理サーバに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、管理サーバが、記憶装置の記憶領域を仮想的な記憶領域として管理するシステムに関する。
【０００２】
【従来の技術】
近年、記憶装置に記憶されるデータ量が著しく増大し、それに伴い、記憶装置自体の記憶容量や、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に接続される記憶装置などの台数が増加している。その結果、大容量となった記憶領域の管理の複雑化、及び記憶装置への負荷集中、高コストなど、様々な問題が現れている。現在、これらの問題を解決することを目的として、バーチャリゼーションと呼ばれる技術が研究、開発されている。
【０００３】
バーチャリゼーション技術は、非特許文献１に記載されている。バーチャリゼーション技術によれば、記憶装置と記憶装置を使用するサーバに接続される管理サーバが、ＳＡＮに接続された記憶装置の記憶領域を一括して仮想記憶領域（ストレージプール）として管理しており、管理サーバは、各サーバから記憶装置へのリクエストを受け付け、配下の記憶装置の記憶領域にアクセスし、その結果をサーバに返信する。また、他のバーチャリゼーション技術によれば記憶装置と記憶装置を使用するサーバに接続される管理サーバが、ＳＡＮに接続された記憶装置の記憶領域を一括して仮想記憶領域として管理しており、管理サーバが、サーバから記憶装置へのアクセスのリクエストを受けた場合、実際にデータを記憶している記憶領域の位置情報をサーバに返信し、サーバは、返信された情報を元に、記憶装置の記憶領域に自らアクセスする。
【０００４】
【非特許文献１】
「Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｏｆ  Ｄｉｓｋ  Ｓｔｏｒａｇｅ」、Ｅｖａｌｕａｔｏｒ  Ｇｒｏｕｐ社、２０００年９月、ＷＰ−０００７−１
【０００５】
【発明が解決しようとする課題】
バーチャリゼーション技術を用いたシステム形態では、サーバが、将来に備えて多めに記憶領域を確保しておき、データを書き込む必要が生じた際にその都度確保された領域にデータを書き込んでいくことが考えられる。この場合、あるサーバに割当てられてはいるがデータは書き込まれていない記憶領域が記憶装置内に存在し得る。しかし、管理サーバは、未だいずれのサーバにも割当てられていない未割当領域以上の記憶領域の割当要求を他のサーバから受信した場合、使用されていない領域が記憶装置内にあるにもかかわらず、他のサーバに記憶領域を割当てることができず、新たに割当てるためには、記憶領域の全体容量を増加させなければならない。また、記憶領域の全体容量を増加するまでの期間、他のサーバに対して記憶領域を割当ることができない。
【０００６】
そこで、本発明の目的は、サーバから未割当領域以上の割当要求が発生した場合にも記憶領域を当該サーバに対し、割当てられるようにすることである。また、本発明の他の目的は、ストレージプール内の記憶領域を効率的に利用することができる技術を提供することである。
【０００７】
【課題を解決するための手段】
上記目的を解決するために、本発明においては、記憶装置が有する記憶領域を仮想的な記憶領域として管理する、複数のサーバに接続されている管理サーバが、サーバから受信する未割当領域以上の領域割当命令に応答して、他のサーバの割当領域の少なくとも一部を開放して未割当領域とし、領域割当命令を送信したサーバに、開放された記憶領域を割当てる。
【０００８】
【発明の実施の形態】
以下、本発明の実施例を図面を参照にして説明する。なお、これにより本発明が限定されるものではない。
【０００９】
図１は、本発明が適用される計算機システムの一例を示す図である。
【００１０】
図１の計算機システムにおいて、サーバ１３０は、管理サーバ１００を介して、記憶装置１２０に接続されている。サーバ１３０と管理サーバ１００はネットワーク１５０で接続されており、管理サーバ１００と記憶装置はネットワーク１５２で接続されている。
【００１１】
サーバ１３０は、制御装置１３２と、入出力装置１３４と、メモリ１３６と、ネットワーク１５０と接続するインタフェース１３８を有する。制御装置１３２上では、メモリ１４０に格納されているアプリケーションプログラム１４０が動作する。
【００１２】
管理サーバ１３０は、制御装置１０２と、入出力装置１０３と、メモリ１０４と、ネットワーク１５０を接続するインタフェース１０６と、ネットワーク１５２と接続するインタフェース１０８を有する。
【００１３】
メモリ１０４には、ストレージ管理プログラム１１０、マッピング情報１１２、ストレージプール管理情報１１４、ストレージプール状態情報１１６が格納されている。
【００１４】
ストレージプール管理プログラム１１０は、制御情報１０２上で動作するプログラムであり、マッピング情報１１２、ストレージプール管理情報１１４、ストレージプール状態情報１１６を用いて、記憶装置１２０の物理的な記憶領域を仮想的なデータ記憶領域（ストレージプール）として管理する。また、プログラムを実行することにより制御装置１０２は、サーバ１３０からの要求に応じて、データ領域の割当、データの書き込み、データ領域の開放を行う。更に、ストレージプール中の未割当領域が不足し、サーバ１３０から要求された領域の割当ができない場合、制御装置はストレージ管理プログラム１１０を実行して割当中の領域で未使用（データが記憶されていない）の領域を持つサーバ１３０、もしくは低優先度のデータが格納されている記憶領域について、当該記憶領域が割当てられているサーバ１３０に対して領域の返還要求を発行し、未割当領域を確保する。なお、当プログラムの具体的な処理内容については、処理フローの説明と合わせて後述する。
【００１５】
記憶装置１２０は、制御装置（制御プロセッサ）１２２、キャッシュ１２４、ネットワーク１５２と接続するインタフェース１２６、ディスク１２８を有し、制御装置１２２により、キャッシュ１２４やディスク１２８等を制御する。
【００１６】
サーバ１３０と記憶装置１２０は、図１では、各々３台で示されているが、この台数に関しては制限はなく、任意である。
【００１７】
図２は、マッピング情報１１２の一例を示す図である。マッピング情報情報１１２は、ストレージプールブロック番号２００と、記憶装置ＩＤ２０２と、物理ディスクＩＤ２０４と、物理ブロック番号２０６とを有する。
【００１８】
ストレージプールブロック番号２００は、ストレージプール上のブロック位置を示す番号である。記憶装置ＩＤ２０２は、ストレージプールブロック番号２００が指すブロックのデータを実際に記憶する記憶装置１２０の識別子である。物理ディスクＩＤ２０４は、記憶装置１２０上の物理ディスク１２８の識別子である。物理ブロック番号２０６は、その物理ディスク１２８上の物理ブロック番号である。
【００１９】
マッピング情報１１２の一番目のエントリを例にあげると、ブロック０番からブロック４９９９番のストレージプールブロックは、実際には「Ｓ０１」で識別される記憶装置１２０の「Ｄ０１」で識別される物理ディスク１２８上の物理ブロック０番から４９９９番に存在するということである。
【００２０】
図３は、ストレージプール管理情報１１４とストレージプール状態情報１１６の一例を示す図である。
【００２１】
ストレージプール管理情報１１４は、ストレージプール割当て情報３００と、未割当てブロックリスト３１４と、総ブロック数３１６と、割当て済みブロック数３１８と、未割当てブロック数３２０と、使用中ブロック数３２２と、高優先度データブロック数３２４と、高優先度データ課金額３２６と、低優先度データ課金額３２８とを有する。
【００２２】
ストレージプール割当て情報３００は、仮想記憶領域ＩＤ３０１と、サーバＩＤ３０２と、プロセスＩＤ３０４と、ストレージプールブロック番号３０６と、割当てブロック数３０７と、使用中ブロック数３０８と、高優先度データブロック数３１０と、課金累計３１２とを有する。
【００２３】
仮想記憶領域ＩＤ３０１は、各サーバ１３０に割当てたストレージプール上の領域を識別するＩＤである。サーバＩＤ３０２は、仮想記憶領域ＩＤ３０１で識別される領域を割り当てたサーバ１３０を識別するＩＤである。プロセスＩＤ３０４は、サーバ１３０内のプロセスを識別するＩＤである。ストレージプールブロック番号３０６は、仮想記憶領域ＩＤ３０１で識別される領域に割当てているストレージプール上のブロック番号である。割当てブロック番号３０７は割当てられているブロックの数である。使用中ブロック数３０８は既にデータを記憶しているブロックの数である。高優先度データブロック数３１０は優先度の高いデータを記憶しているブロックの数を示す。課金累計３１２は、その時点の課金累計額である。
【００２４】
本実施の形態では、ストレージプール割当情報３００は、使用中ブロック数３００、高優先度データブロック数３１０の情報を保持しているが、それぞれ、未使用ブロック数、低優先度データブロック数の情報を保持してもよい。
【００２５】
ストレージプール割当て情報３００の一番目のエントリを例にあげると、仮想記憶領域ＩＤ３０１「ＶＡＲＥＡ０１」で識別される領域は、ブロック０からブロック９９９９９までのストレージプールブロックであり、サーバＩＤ３０２「ＳＲＶ０１」のプロセスＩＤ３０４「３０８８」が示すプロセスに割当てられている。また、割当てられているブロックは「１０００００」ブロックであり、その中で、現在使用中（データを記憶している）ブロックは５００００ブロック、更にその中で優先度の高いデータを記憶しているブロックは４００００ブロック、その時点での課金累計額は「１２９４０００」であるということを示している。
【００２６】
未割当てブロックリスト３１４は、サーバ１３０に割当てられていないブロックのリスト情報である。サーバ１３０から領域割当て要求を受けつけた際は、管理サーバは、この未割当てブロックリストから要求された大きさの領域を割当てる。総ブロック数３１６は、ストレージプール上の全ブロックの数であり、その中で割当て済みブロック数３１８は各サーバ１３０に割当てられているブロックの数、未割当てブロック数３２０はサーバ１３０に割当てられていないブロックの数、使用中ブロック数３２２はサーバ１３０に割当てられているブロックで、且つデータを記憶しているブロックの数、高優先度データブロック数３２４は優先度の高いデータを記憶しているブロックの数を示す。高優先度データ課金額３２６は、優先度の高いデータを記憶しているブロックへの課金額、低優先度データ課金額３２８は、優先度の低いデータを記憶しているブロックへの課金額を示す。管理サーバ１００は、これらの課金額を課金単位として、仮想記憶領域ＩＤ毎に高優先度データと低優先度データのブロック数から課金を行って時間毎に計算する。
【００２７】
本実施の形態では、ストレージプール管理情報１１４は、使用中ブロック数３２２、高優先度データブロック数の情報を保持しているが、それぞれ、未使用ブロック数、低優先度データブロック数の情報を保持してもよい。
【００２８】
ストレージプール状態情報１１６は、割当て状態ビットマップ３３０と、使用状態ビットマップ３３２と、データ優先度ビットマップ３３４とを有する。これらのビットマップの各ビットは、ストレージプールのブロックと一対一で対応し、各ブロックの状態を表す。割当て状態ビットマップ３３０は、ストレージプールの各ブロックの割当て状態を示すビットマップであり、ビットが「０」の場合は、そのビットに対応するブロックは未割当ての状態、「１」の場合は割当て中の状態を意味する。使用状態ビットマップ３３２は、ストレージプールの各ブロックの使用状態を示すビットマップであり、ビットが「０」の場合は、そのビットに対応するブロックは未使用（データが記憶されていない）の状態、「１」の場合は使用中（データが記憶されている）の状態を意味する。データ優先度ビットマップ３３４は、ストレージプールの各ブロックに記憶されているデータの優先度を示すビットマップであり、ビットが「０」の場合は、そのビットに対応するブロックには優先度の低いデータが記憶されている状態、「１」の場合は優先度の高いデータが記憶されている状態であることを意味する。
【００２９】
図４は、サーバ１３０がストレージプール上のデータ領域を確保する際に管理サーバ１００に発行する領域割当て命令４００と、確保したストレージプール上のデータ領域にデータを書き込む際にサーバ１３０が管理サーバ１００に発行するデータ書き込み命令４１０と、確保していたストレージプール上のデータ領域を解放する際にサーバ１３０が発行する領域解放命令４３０と、管理サーバ１００が未割当て領域を作るためにサーバ１３０に発行する領域返還命令４５０の一例を示す図である。
【００３０】
領域割当て命令４００は、命令コード４０２と、サーバＩＤ４０４と、プロセスＩＤ４０６と、領域サイズ４０８とを有する。
【００３１】
サーバ１３０は、領域割当て命令４００を発行する際、命令コード４０２に本命令が領域割当て命令であることを示すコード、サーバＩＤ４０４に自サーバのＩＤ、プロセスＩＤ４０６に自プロセスのＩＤ、領域サイズ４０８に確保する領域のサイズを格納する。尚、本実施の形態では、確保する領域のサイズをブロック数としている。
【００３２】
データ書き込み命令４１０は、命令コード４１２と、サーバＩＤ４１４と、プロセスＩＤ４１６と、仮想記憶領域ＩＤ４１８と、仮想ブロック番号４２０と、バッファアドレス４２２と、データ優先度４２４とを有する。
【００３３】
サーバ１３０は、データ書き込み命令４１０を発行する際、命令コード４０２に本命令がデータ書き込み命令であることを示すコード、サーバＩＤ４０４に自サーバのＩＤ、プロセスＩＤ４０６に自プロセスのＩＤ、仮想記憶領域ＩＤ４１８にデータ書き込み先の領域を示すＩＤ、仮想ブロック番号４２０にデータ書き込み先のブロックを示す仮想ブロック番号、バッファアドレス４２２に書き込むデータを有しているバッファのアドレス、データ優先度４２４に書き込むデータの優先度を格納する。尚、本実施の形態では、低優先度のデータを示す場合は「０」を、高優先度のデータを示す場合は「１」をデータ優先度４２４に格納することとしている。
【００３４】
領域解放命令４３０は、命令コード４３２と、サーバＩＤ４３４と、プロセスＩＤ４３６と、仮想記憶領域ＩＤ４３８と、仮想ブロック番号４４０とを有する。
【００３５】
サーバ１３０は、領域解放命令４３０を発行する際、命令コード４３２に本命令が領域解放命令であることを示すコードと、サーバＩＤ４３４に自サーバのＩＤと、プロセスＩＤ４３６に自プロセスのＩＤと、仮想記憶領域ＩＤ４３８に解放する領域を示すＩＤと、仮想ブロック番号４４０に解放するブロックを示す仮想ブロック番号とを格納する。
【００３６】
領域返還命令４５０は、命令コード４５２と、サーバＩＤ４５４と、プロセスＩＤ４５６と、仮想記憶領域ＩＤ４５８と、仮想ブロック番号４６０とを有する。
【００３７】
管理サーバ１００が領域返還命令４５０を発行する際、命令コード４５２に本命令が領域返還命令であることを示すコードと、サーバＩＤ４５４とプロセスＩＤ４５６に返還対象の領域を割当てているサーバ１３０のＩＤと、プロセスのＩＤと、仮想記憶領域ＩＤ４５８に返還対象の領域を示すＩＤと、仮想ブロック番号４６０に返還対象のブロックを示す仮想ブロック番号とを格納する。この領域返還命令４５０を受けつけたサーバ１３０は、指定された領域の解放要求を管理サーバ１００に発行する。
【００３８】
図５は、ストレージ管理プログラム１１０のアイドルルーチンの処理の一例を示す図である。
【００３９】
処理５００で管理サーバ１００は、サーバ１３０からの領域割当命令４００を受信したと判定した場合は、領域割当処理５０２を実行する。
【００４０】
処理５０４で管理サーバ１００は、サーバ１３０からのデータ書き込み命令４１０を受信したと判定した場合は、データ書き込み処理５０６を実行する。
【００４１】
処理５０８で管理サーバは、サーバ１３０からの領域解放命令４３０を受信したと判定した場合は、領域解放処理５１０を実行する。
【００４２】
処理５１２で管理サーバ１００は、前回課金処理を実行した時間から一定時間が経過したと判定した場合は、課金処理５１４を実行する。
【００４３】
図６は、前述の領域割当処理５０２の一例を示す図である。
【００４４】
処理６００で管理サーバ１００は、サーバ１３０から受信した領域割当命令４００内の領域サイズ４０８で指定された大きさの領域（ブロック数）の割当てが可能か判定する。
【００４５】
判定条件は、３種類の条件があり、１つ目の条件は、未割当てブロック数３２０が領域サイズ４０８で指定されたブロック数より多い、２つ目の条件は、未割当てブロック数３２０と未使用ブロック数の合計が領域サイズ４０８で指定されたブロック数より多い、３つ目の条件は、未割当てブロック数３２０と未使用ブロック数と低優先度データを記憶しているブロック数の合計が領域サイズ４０８で指定されたブロック数より多い、という３種類の条件であり、この３つの条件を少なくとも１つの条件を満たしていれば、管理サーバ１００は、割当て可能と判定し、処理６０４から処理を継続する。３種類の条件を全て満たしていなければ、管理サーバ１００は、割当て不可と判定し、処理６０２を実行した後、領域割当て処理５０２を終了する。
【００４６】
処理６０２で管理サーバ１００は、要求元のサーバ１３０に割当て不可を意味する応答を返信する。
【００４７】
処理６０４で管理サーバ１００は、領域サイズ４０８で指定された大きさの未割当て領域が不足しているか判定する。
【００４８】
判定条件は、未割当てブロック数３２０が領域サイズ４０８で指定されたブロック数より多いかである。未割当てブロック数３２０が領域サイズ４０８で指定されたブロック数より少ない場合は、領域返還処理６０６を実行した後、処理６０８から処理を継続し、多い場合はそのまま処理６０８から処理を継続する。
【００４９】
処理６０８で管理サーバ１００は、未割当てブロックリスト３１４から領域サイズ４０８で指定されたブロック数分の未割当てブロックを切り離し、割当て領域として確保する。
【００５０】
処理６１０で管理サーバ１００は、ストレージプール割当て情報３００に新しくエントリを追加し、仮想記憶領域ＩＤ３０１に任意のＩＤ、サーバＩＤ３０２に要求元のサーバ１３０を示すＩＤ、プロセスＩＤ３０４に要求元のサーバ１３０上のプロセスを示すＩＤ、ストレージプールブロック番号３０６に割当てた領域のブロック番号、割当てブロック数３０７に割当てた領域のブロック数、使用中ブロック数３０８に０、高優先度データブロック数３１０に０、課金累計３１２に０をセットする。
【００５１】
処理６１２で管理サーバ１００は、割当て済みブロック数３１８に今回割当てた領域のブロック数を加算し、未割当てブロック数３２０から今回割当てた領域のブロック数を減算する。また、今回割当てた領域のブロックに対応する割当て状態ビットマップ３３０の各ビットを「１」にする。
【００５２】
処理６１４で管理サーバは、要求元のサーバ１３０に割当てた領域の仮想記憶領域ＩＤ３０１を返信し、領域割り当て処理５０２を終了する。
【００５３】
図７は、前述の領域返還処理６０６の一例を示す図である。
【００５４】
処理７００で管理サーバは、ストレージプール割当て情報３００を検索し、未使用ブロックを一番多く有している仮想記憶領域を割り出す。未使用ブロックは、割当てブロック数３０７から使用中ブロック数３０８を減算して求める。
【００５５】
処理７０２で管理サーバ１００は、処理７００で未使用ブロックを有する仮想記憶領域が見つからなかった場合は処理７０４、見つかった場合は処理７０６から処理を継続する。
【００５６】
処理７０４で管理サーバ１００は、ストレージプール割当て情報３００を検索し、優先度の低いデータを記憶しているブロックを一番多く有している仮想記憶領域を割り出す。
【００５７】
処理７０６で管理サーバ１００は、処理７００、もしくは処理７０４で割り出した仮想記憶領域を割当てているサーバ１３０に対し、領域返還命令４５０を発行する。尚、この領域返還命令４５０を受けつけたサーバ１３０内のアプリケーションプログラム１４０は、仮想記憶領域ＩＤ４５８と仮想ブロック番号４６０で指定された領域の解放要求を管理サーバ１００に発行する。
【００５８】
処理７０８で管理サーバ１００は、領域サイズ４０８で指定された大きさの未割当て領域が不足しているか判定する。判定条件は、処理６０４と同じである。未割当てブロック数３２０が領域サイズ４０８で指定されたブロック数より少ない場合は、処理７００から再度処理を実行し、多い場合は領域返還処理６０６を終了する。
【００５９】
図８は、前述のデータ書き込み処理５０６の一例を示す図である。
【００６０】
処理８００で管理サーバ１００は、サーバ１３０から受信したデータ書き込み命令４１０内の仮想記憶領域ＩＤ４１８と仮想ブロック番号４２０から、指定された領域のストレージプールブロックを割り出し、それを基にマッピング情報１１２を検索して、対応する物理ブロック位置に変換する。尚、ここで言う物理ブロック位置とは、物理ブロックを特定するための、記憶装置ＩＤ２０２、物理ディスクＩＤ２０４、物理ブロック番号２０６を合わせた情報である。
【００６１】
処理８０２で管理サーバ１００は、データ書き込み命令４１０内のバッファアドレス４２２で指定された要求元のサーバ１３０上のバッファからデータを読み出し、処理８００で割り出した物理ブロック位置に書き込む。
【００６２】
処理８０４で管理サーバ１００は、データ書き込み命令４１０内の仮想記憶領域ＩＤ４１８と同一ＩＤを有するストレージプール割当て情報３００のエントリを割り出し、そのエントリの使用中ブロック数３０８に、今回データを書き込んだブロック数を加算する。
【００６３】
処理８０６で管理サーバ１００は、使用中ブロック数３２２に、今回データを書き込んだブロック数を加算する。また、今回データを書き込んだブロックに対応する使用状態ビットマップ３３２の各ビットを「１」にする。
【００６４】
処理８０８で管理サーバ１００は、データ書き込み命令４１０内のデータ優先度４２４から、書き込んだデータの優先度を判定する。書き込んだデータが高優先度の場合は処理８１０、低優先度の場合は処理８１４から処理を継続する。
【００６５】
処理８１０で管理サーバ１００は、処理８０４で割り出したストレージプール割当て情報３００のエントリの高優先度データブロック数３１０に、今回データを書き込んだブロック数を加算する。
【００６６】
処理８１２で管理サーバ１００は、高優先度データブロック数３２４に、今回データを書き込んだブロック数を加算する。また、今回データを書き込んだブロックに対応するデータ優先度ビットマップ３３４の各ビットを「１」にする。
【００６７】
処理８１４で管理サーバ１００は、要求元のサーバ１３０に処理結果を返信し、データ書き込み処理５０６を終了する。
【００６８】
図９は、前述の領域解放処理５１０の一例を示す図である。
【００６９】
処理９００で管理サーバ１００は、サーバ１３０から受信した領域解放命令４３０内の仮想記憶領域ＩＤ４３８と仮想ブロック番号４４０で指定されたストレージプールブロックのブロック番号を未割当てブロックリスト３１４に追加する。
【００７０】
処理９０２で管理サーバ１００は、ストレージプール状態情報１１６の各ビットマップを参照し、解放対象領域のブロックの各状態別にその数をカウントする。
【００７１】
処理９０４で管理サーバ１００は、処理９０２の結果を基に、解放対象領域が属するストレージプール割当て情報３００のエントリを次のように更新する。ストレージプールブロック番号３０６から、解放対象領域のストレージプールブロック番号を削除する。割当てブロック数３０７から、解放対象領域のブロック数を減算する。使用中ブロック数３０８から、解放対象領域で使用中であったブロック数を減算する。高優先度データブロック数３１０から、解放対象領域で優先度の高いデータを記憶していたブロック数を減算する。
【００７２】
処理９０６で管理サーバ１００は、処理９０２の結果を基に、割当て済みブロック数３１８、未割当てブロック数３２０、使用中ブロック数３２２、高優先度データブロック数３２４を次のように更新する。割当て済みブロック数３１８から解放対象領域のブロック数を減算、未割当てブロック数３２０には加算する。使用中ブロック数３２２から、解放対象領域で使用中であったブロック数を減算する。高優先度データブロック数３２４から、解放対象領域で優先度の高いデータを記憶していたブロック数を減算する。
【００７３】
処理９０８で管理サーバ１００は、解放対象領域のブロックと対応する、割当て状態ビットマップ３３０、使用状態ビットマップ３２２、データ優先度ビットマップ３３４の各ビットを「０」にする。
【００７４】
処理９１０で管理サーバ１００は、要求元のサーバ１３０に処理結果を返信し、領域解放処理５１０を終了する。
【００７５】
図１０は課金処理５１４の一例を示す図である。
【００７６】
処理９２０で管理サーバ１００は、ストレージプール割当て情報３００のエントリ（仮想記憶領域）毎に課金を行う。課金方法は、課金対象のエントリの高優先度データブロック数３１０に高優先度データ課金額３２６を乗算し、同一エントリの課金累計３１２に加算する。また、使用中ブロック数３０８から高優先度データブロック数３１０を減算して、低優先度データブロック数を割り出し、それに低優先度データ課金額３２８を乗算し、これも課金累計３１２に加算する。
【００７７】
処理９２２で管理サーバ１００は、処理９２０を、ストレージプール割当て情報３００内の全てのエントリに対して実行したか判定する。全てのエントリに対し、処理９２０を実行した場合は、課金処理５１４を終了する。まだ、全てのエントリに対し、処理９２０を実行していな場合は、次エントリを対象として処理９２０を実行する。
【００７８】
図１１は、本発明を適用する計算機システムの他の一例を示す図である。
【００７９】
図１１の計算機システムにおいて、サーバ１３０は、ネットワーク１５２、管理サーバ１００、ネットワーク１５４を介して、記憶装置１２０に接続され、さらに、ネットワーク１５０を介しても記憶装置１２０と接続されている。
【００８０】
サーバ１３０は、制御装置１３２と、入出力装置１３４と、メモリ１３６と、ネットワーク１５０と接続するインタフェース（Ｅ）１３８と、ネットワーク１５２と接続するインタフェース（Ｄ）を有する。
【００８１】
管理サーバ１３０は、制御装置１０２と、入出力装置１０３と、メモリ１０４と、ネットワーク１５０を接続するインタフェース（Ａ）１０６と、ネットワーク１５２と接続するインタフェース（Ｃ）と、ネットワーク１５４と接続するインタフェース（Ｂ）１０８を有する。
【００８２】
記憶装置１２０は、制御装置（制御プロセッサ）１２２、キャッシュ１２４、ネットワーク１５２と接続するインタフェース（Ｆ）１２６、ネットワーク１５４と接続するインタフェース（Ｇ）と、ディスク１２８を有する。
【００８３】
サーバ１３０と記憶装置１２０は、図１では、各々３台で示されているが、この台数に関しては制限はなく、任意である。
【００８４】
図１１の計算機システムにおいて管理サーバ１００は、サーバ１３０からネットワーク１５２を介して記憶装置１２０へのアクセスリクエストを受け付けた場合、実際のデータを記憶している記憶領域の位置情報をサーバに返信し、サーバ１３０は返信された情報を元に、記憶装置１２０の記憶領域にネットワーク１５０を介してアクセスする。図４に示す命令各々もネットワーク１５２を介してサーバ１３０と管理サーバ１００でやりとりされる。その他の動作は図１に示す本発明を適用する一例と同様である。
【００８５】
以上説明した実施形態によれば、未割当領域が不足した場合にも、ＳＡＮ内に新たな記憶装置を増設するなどして記憶容量が増加されるまで待つことなく、割当要求を発行するサーバ１３０に対して、記憶領域の割当処理を実行できる。
【００８６】
【発明の効果】
本発明により、サーバから未割当領域以上の割当要求が発生した場合にも記憶領域を当該サーバに対し、割当てることができ、ストレージプール上の記憶領域を効率よく利用できる。
【図面の簡単な説明】
【図１】本発明を適用した計算機システムの一例を示す図である。
【図２】マッピング情報１１２の一例を示す図である。
【図３】ストレージプール管理情報１１４とストレージプール状態情報１１６の一例を示す図である。
【図４】サーバ１３０が管理サーバ１００に発行する領域割当て命令４００、データ書き込み命令４１０、領域解放命令４３０、管理サーバ１００がサーバ１３０に発行する領域返還命令４５０の一例を示す図である。
【図５】ストレージ管理プログラム１１０のアイドルルーチンを示した処理の一例を示す図である。
【図６】領域割当て処理５０２の一例を示す図である。
【図７】領域返還処理６０６の一例を示す図である。
【図８】データ書き込み処理５０６の一例を示す図である。
【図９】領域解放処理５１０と課金処理５１４の一例を示す図である。
【図１０】課金処理５１４の一例を示す図である。
【図１１】本発明を適用した計算機システムの他の一例を示す図である。
【符号の説明】
１００：管理サーバ
１０２：制御装置
１０３：入出力装置
１０４：メモリ
１０６：Ｉ／Ｆ（Ａ）
１０８：Ｉ／Ｆ（Ｂ）
１０９：Ｉ／Ｆ（Ｃ）
１１０：ストレージ管理プログラム
１１２：マッピング情報
１１４：ストレージプール管理情報
１１６：ストレージプール状態情報
１２０：記憶装置
１２２：制御装置
１２４：キャッシュ
１２６：Ｉ／Ｆ（Ｆ）
１２７：Ｉ／Ｆ（Ｇ）
１２８：ディスク
１３０：サーバ
１３２：制御装置
１３４：入出力装置
１３６：メモリ
１３８：Ｉ／Ｆ（Ｄ）
１３９：Ｉ／Ｆ（Ｅ）
１４０：アプリケーションプログラム
１５０：ネットワーク
１５２：ネットワーク
１５４：ネットワーク
【図１】
2005031929.tif 000003
【図２】
2005031929.tif 000004
【図３】
2005031929.tif 000005
【図４】
2005031929.tif 000006
【図５】
2005031929.tif 000007
【図６】
2005031929.tif 000008
【図７】
2005031929.tif 000009
【図８】
2005031929.tif 000010
【図９】
2005031929.tif 000011
【図１０】
2005031929.tif 000012
【図１１】
2005031929.tif 000013