(57)【特許請求の範囲】
【請求項１】
ストレージ装置には仮想ディスクに割り当てる領域を有し、
前記割り当てた仮想ディスクを用いて処理を実行する仮想サーバを有する一台以上のサーバ装置と、前記サーバ装置に接続する管理サーバ装置を備えたサーバシステムであって、
前記仮想ディスクは、物理領域を有し、
前記ストレージ装置は、さらに前記物理領域の未使用領域を示す未使用領域リストを有し、
前記管理サーバ装置は、
前記物理領域に対応して消去の状態を示す情報を保持する手段と、
前記消去の状態は、少なくとも消去完了と消去実行中の状態を有し、
前記仮想ディスクの割り当て要求と開放要求を受け付けるリソース管理部と、
前記リソース管理部からの開放要求を受けて前記仮想ディスクの削除を実行する仮想ディスク削除部とを有し、
前記リソース管理部は、前記仮想ディスクの開放要求に応じて、
前記仮想ディスク削除部を呼び出し、
前記仮想ディスク削除部は、当該仮想ディスクに割り当てられた前記物理領域を消去し、
前記消去の状態を更新し、前記消去の状態が消去完了となった場合に、消去した前記物理領域を前記未使用領域に登録する
ことを特徴とするサーバシステム。
【請求項２】
前記仮想サーバを有する前記サーバ装置のＣＰＵ使用率に応じて、前記仮想ディスク削除部は、消去する前記物理領域を分割して消去するためのブロック数を選択する請求項１記載のサーバシステム。
【請求項３】
前記仮想ディスク削除部は、前記仮想ディスクを分割して消去する請求項１記載のサーバシステム。
【請求項４】
ストレージ装置には仮想ディスクに割り当てる領域を有し、前記割り当てた仮想ディス
クを用いて処理を実行する仮想サーバを有する一台以上のサーバ装置と、前記サーバ装置に接続する管理サーバ装置を備えたサーバシステムにおける仮想計算機制御方法であって、
前記仮想ディスクは、物理領域を有し、
前記ストレージ装置は、さらに前記物理領域の未使用領域を示す未使用領域リストを有し、
前記管理サーバ装置は、
前記物理領域に対応して消去の状態を示す情報を保持する手段と、
前記消去の状態は、少なくとも消去完了と消去実行中の状態を有し、
前記仮想ディスクの割り当て要求と開放要求を受け付けるリソース管理部と、
前記リソース管理部からの開放要求を受けて前記仮想ディスクの削除を実行する仮想デ
ィスク削除部とを有し、
前記リソース管理部は、前記仮想ディスクの開放要求に応じて、
前記仮想ディスク削除部を呼び出し、
前記仮想ディスク削除部は、当該仮想ディスクに割り当てられた前記物理領域を消去し、
前記消去の状態を更新し、前記消去の状態が消去完了となった場合に、消去した前記物理領域を前記未使用領域に登録する
ことを特徴とする仮想計算機制御方法。
【請求項５】
前記仮想サーバを有する前記サーバ装置のＣＰＵ使用率に応じて、前記仮想ディスク削除部は、消去する前記物理領域を分割して消去するためのブロック数を選択する請求項４
記載の仮想計算機制御方法。
【請求項６】
前記仮想ディスク削除部は、前記仮想ディスクを分割して消去する請求項４記載の仮想計算機制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機システム及びその制御方法に関する。特に仮想計算機におけるセキュリティを向上するためのシステム及びその制御方法に関する。
【背景技術】
【０００２】
サーバ装置に接続されるディスク装置（ストレージシステム）には、サーバ装置上で稼動するオペレーティング・システム（ＯＳ）、アプリケーションプログラム、ユーザデータなどが格納されている。特にRAID（Redundant Arrays of Inexpensive Disks）装置に見られるように、ディスク装置（ストレージシステム）の記憶容量の伸びは大きく、多量のプログラムやデータが格納できるようになってきている。
【０００３】
ディスク装置の大容量化はセキュリティの問題を表面化させる要因になっている。すなわち、ディスク装置内の多量のプログラムやデータが、第３者に読まれてしまうリスクが増加している。多数のプログラムやデータなどのファイルの保存、追加、及び更新が容易に実行されるようにするために、ディスク装置は、一般にＯＳのファイルシステムと呼ばれる機能によって管理されている。
【０００４】
ユーザにとっては連続したファイルであっても、ファイルシステムはディスク装置内の不連続な領域に書き込むことができる。こうすることで、ファイルシステムはディスク装置内の領域を有効に利用するとともに、ユーザに使いやすさを提供している。
【０００５】
ファイルシステムにおいて、ファイルの削除はファイルが格納されていたディスク領域を、他のファイルが割り当てられるように開放することであり、格納されているプログラムやデータを消去しない。したがって、ファイルシステムの管理上は、削除されたファイルであっても、ファイルの内容（プログラムやデータなど）はディスク装置に残っている。このような状況で、第３者がファイルシステムを介さずに直接ディスク装置の内容を参照すると、削除したファイルの内容が読まれる危険性がある。
【０００６】
このような問題に対して、ディスク装置の内容を第３者に読まれないようにするため、ディスク装置の内容を消去する機能がある。この機能は、一般にサーバ装置の廃棄時やレンタル元への返却時などのようにサーバ装置の使用を終える際に用いられ、ディスク装置の全ての内容を強制的にランダムなデータで上書きすることで、プログラムやデータの情報を消去する（特許文献1）。これにより、ディスク装置が第３者に渡ったとしてもユーザ情報などのファイル内容が読まれることはない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許公開公報US20050050342
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ハードウェアとしてのサーバ装置（計算機）上にＯＳを独立に動作可能な複数の仮想サーバを生成するサーバ仮想化技術がある。サーバ仮想化技術は、プロセッサ，メモリ，ディスク装置（ストレージシステム）などのサーバ装置が有するリソースを、それぞれの仮想サーバに分割して割り当てることで、リソースの有効利用を図る技術である。リソースの割り当てや仮想サーバのスケジューリングは、サーバ装置上で稼動する仮想化機構（サーバの仮想化を実現するソフトウェア及び/又はハードウェア）が行う。仮想サーバの削除や生成は、一般に仮想化機構の管理者の指示に基づいて実行される。仮想サーバの生成や削除は、リソースの確保や開放により実現される。
【０００９】
上記従来技術は、ハードウェアとしてのサーバ装置を単位としてディスク装置内のプログラムやデータを消去することができる。
【００１０】
仮想サーバの環境において、ディスク装置のセキュリティを確保するためには、上記従来技術のようにサーバ装置単位の情報の消去では十分ではない。主たる課題は、データ消去のタイミングである。仮想サーバ環境では、ハードウェアとしてのサーバ装置上で、仮想サーバの生成と削除とが繰り返されるので、ディスク装置の領域が複数の仮想サーバ間で結果的に共有され（削除された仮想サーバが使用していたディスク領域が、新たに生成された仮想サーバに割り当てられる）、新たな仮想サーバによって、仮想サーバの削除に対応して開放したディスク領域の内容（プログラムやデータなどの情報）が読まれるという問題がある。
【００１１】
従たる課題は、ディスク装置の情報を消去できるとしても、情報の消去のための負荷の高さである。ディスク装置の情報の消去は、消去する領域に第3者にとって無意味なデータを連続して書きつづける処理であるため、サーバ装置のプロセッサの負荷とディスク装置の負荷が高くなる。仮想サーバ環境では、ディスク装置の情報を消去する処理を実行するサーバ装置上で、他の仮想サーバが稼動しているため、他の仮想サーバの性能を低下させてしまうという問題がある。
【課題を解決するための手段】
【００１２】
本発明は次のような態様により実現される。ディスクボリューム、そのディスクボリュームに接続し、その領域を仮想ディスクとして割り当てられ、割り当てられた仮想ディスクを用いて処理を実行する仮想サーバを制御する仮想計算機システムにおいて、仮想サーバの削除に対応して、削除する仮想サーバに割り当てられていた仮想ディスクに格納されている情報を消去する仮想計算機システム及びその制御方法である。
【００１３】
他の態様は、管理サーバを設け、仮想サーバを制御する複数のサーバ装置の中で負荷の低いサーバ装置を、削除する仮想サーバに割り当てられていた仮想ディスクに格納されている情報を消去するサーバ装置として選択する仮想計算機システム及びその制御方法である。
【発明の効果】
【００１４】
本発明によれば，仮想サーバの削除に伴って、その仮想サーバが使用していた仮想ディスクの内容（プログラムやデータなどの情報）を消去でき、情報のセキュリティを確保できる。本発明の他の態様によれば、仮想ディスクの内容を消去を、負荷の低いサーバ装置により実行でき、仮想ディスクの内容の消去処理負荷の他の仮想サーバに与える影響を軽減できる。
【図面の簡単な説明】
【００１５】
【図１】実施例1の全体図を示す。
【図２】管理サーバの構成図を示す。
【図３】物理サーバの構成図を示す。
【図４】仮想サーバに対するリソースを割り当て状況示す。
【図５】ディスクボリュームの構成を示す。
【図６】実施例１の処理の概要を示す。
【図７】物理サーバ管理テーブルの構成を示す。
【図８】仮想サーバ管理テーブルの構成を示す。
【図９】ワークロード管理テーブルの構成を示す。
【図１０】削除管理テーブルの構成を示す。
【図１１】使用領域リストの構成を示す。
【図１２】未使用領域リストの構成を示す。
【図１３】リソース管理部のフローチャートを示す。
【図１４】リソース割当管理部のフローチャートを示す。
【図１５】リソース開放管理部のフローチャートを示す。
【図１６】仮想ディスク削除部のフローチャートを示す。
【図１７】仮想ディスク削除部のフローチャートの続きを示す。
【図１８】ワークロード制御部のフローチャートを示す。
【図１９】ワークロード監視部のフローチャートを示す。
【図２０】リソース開放部のフローチャートを示す。
【図２１】リソース割当部のフローチャートを示す。
【図２２】ディスク消去部のフローチャートを示す。
【図２３】実施例２における全体図を示す。
【図２４】ディスク消去コマンドの形式を示す。
【図２５】実施例２における仮想ディスク削除部のフローチャート。
【図２６】実施例２における仮想ディスク削除部のフローチャート続き。
【図２７】コマンド管理部のフローチャート。
【図２８】ブロック数マトリクスの例を示す。
【図２９】ＣＰＵ割当量マトリクスの例を示す。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を、図面を用いて詳細に説明する。
【実施例１】
【００１７】
図１は、実施例1の全体図を示す。管理サーバ１０１は、仮想化機構管理部１０２、ワークロード管理部１０３、及び各種テーブル(１０４〜１０７)から構成される。管理サーバ１０１は、ネットワーク１０８を介して物理サーバ１１２に接続されている。物理サーバ１１２は、仮想化機構（仮想サーバの生成及び削除、並びに仮想サーバの実行制御するソフトウェア及び/又はハードウェアであり、仮想化機構と呼ぶが、仮想サーバ制御プログラム、仮想サーバモニターシステムと呼んでもよい。）１１０を搭載し、仮想化機構１１０は複数の仮想サーバ109を生成し、独立に実行させることができる。仮想化機構１１０は、リソース処理部１１１を有している。
【００１８】
物理サーバ１１２は複数のディスクボリューム１１４からなるストレージ装置１１３に接続している。ストレージ装置１１３は、サーバ内蔵型のディスク装置でも、ファイバーチャネル等のネットワークを介した外部装置（RAIDシステム等）でもよい。
【００１９】
物理サーバ１１２はハードウェアとしてのサーバ装置であり、用語を明確に使い分けるために物理サーバと呼ぶ。管理サーバ１０１も、一般にハードウェアとしてのサーバ装置であるが、ここでは実現する機能に着目して管理サーバと呼ぶ。
【００２０】
管理サーバ１０１は、ユーザまたは管理者（以下、ユーザ）から仮想サーバ１０９に割り当てているディスクボリューム１１４内の仮想ディスクの削除要求を受け取った後、他の仮想サーバに影響を与えない低負荷な状態で、仮想ディスク領域の情報を消去するために、負荷の低い仮想化機構を選択する。具体的には、後述するように仮想化機構を有する物理サーバの中から負荷の低い物理サーバを選択する。
【００２１】
仮想化機構管理部１０２は、リソースの割り当て及び開放、並びに負荷状況に応じて、仮想ディスクの情報の消去を制御する。ワークロード管理部１０３は、仮想化機構の負荷に応じて、仮想ディスクの情報の消去に対するCPUの割り当て量の調整や、ワークロードを監視する。
【００２２】
物理サーバ管理テーブル１０４は、ＣＰＵやディスク情報といった、物理サーバ１１２毎のリソースに関する情報を格納する。仮想サーバ管理テーブル１０５は、仮想サーバ１０９毎の割り当てリソース情報を格納する。ワークロード管理テーブル１０６は、管理サーバ１０１が管理している仮想化機構１１０毎のCPU割り当て量や使用率情報を格納する。削除管理テーブル１０７は、削除する仮想ディスクを分割した領域情報と、その分割領域の削除状況とを格納する。
【００２３】
仮想化機構110は、仮想ディスク領域の情報の消去を制御し、消去した領域から順次開放する。リソース処理部１１１は、仮想化機構管理部１０２からの要求に応じてリソースを処理する。
【００２４】
本実施例では、管理サーバ１０１が、ユーザからのリソース開放要求を受け取った後、最も負荷の低い仮想化機構で、他の仮想サーバに影響を与えない低負荷な状態で、仮想ディスク領域の情報を消去し、消去した領域から開放していく例を示す。
【００２５】
図２は、管理サーバ１０１の構成を示す。管理サーバ１０１は、メモリ２０１、プロセッサ２０２、ネットワークインターフェース２０３、ディスクインターフェース２０４などから構成される。メモリ２０１内には、仮想化機構管理部１０２、ワークロード管理部１０３、物理サーバ管理テーブル１０４、仮想サーバ管理テーブル１０５、ワークロード管理テーブル１０６、削除管理テーブル１０７が格納される。仮想化機構管理部１０２は、リソース管理部２０５、リソース割当管理部２０６、リソース開放管理部２０７、仮想ディスク削除部２０８を含み、これらを纏めた総称である。ワークロード管理部１０３は、ワークロード制御部２１０、ワークロード監視部２１１を含み、これらを纏めた総称である。
【００２６】
メモリ２０１に格納されたリソース管理部２０５、リソース割当管理部２０６、リソース開放管理部２０７、仮想ディスク削除部２０８、ワークロード制御部２１０、ワークロード監視部２１１などの各プログラムをプロセッサ２０２が実行することで、リソース管理、リソース割当管理、リソース開放管理、仮想ディスク削除、ワークロード制御、ワークロード監視の各処理が進められる。ネットワークインターフェース２０３は、ネットワーク１０８に接続され、物理サーバ１１２との間で各種情報が授受される。
【００２７】
リソース管理、リソース割当管理、リソース開放管理、仮想ディスク削除、ワークロード制御、ワークロード監視の各処理を、各プログラムをプロセッサ２０２で実行することにより実現するが、これらの処理を、集積回路化などにより、ハードウェア/ファームウェアで実現することもできる。
【００２８】
図３は、物理サーバ１１２の構成を示す。物理サーバ１１２は、メモリ305、プロセッサ306、ネットワークインターフェース307、ディスクインターフェース308などから構成される。ディスクインターフェース308は、ストレージ装置113又は専用のディスク装置に接続する。
【００２９】
メモリ305内には、仮想サーバ１０９、仮想化機構１１０が格納される。仮想化機構１１０上リソース処理部１１１がある。リソース処理部１１１のリソース開放部３０２、リソース割当部３０３、ディスク消去部３０４などの各種プログラムをプロセッサ306が実行する。
【００３０】
各仮想サーバ１０９には、ＯＳ３０１がそれぞれインストールされ、各仮想サーバ１０９は独立に動作することができる。仮想化機構１１０は、仮想サーバ１０９にメモリ305やプロセッサ306等のリソースを分割して割り当てる処理（仮想サーバの生成）や仮想サーバ１０９の実行スケジュールを制御する処理を実行する。
【００３１】
リソース開放部３０２は、仮想サーバ１０９の削除時に、この仮想サーバ１０９に割り当てられていたメモリ305、プロセッサ306、ディスクインターフェース308を介して接続されているストレージ装置１１３内のディスクボリューム１１４などのリソースを開放する。
【００３２】
リソース割当部３０３は、仮想サーバ１０９の生成時に、メモリ305、プロセッサ306、ディスクインターフェース308を介して接続されているストレージ装置１１３内のディスクボリューム１１４などのリソースを割り当てる。
【００３３】
ディスク消去部３０４は、仮想サーバ１０９の削除時に、この仮想サーバ１０９が使用していたディスクボリューム１１４内の情報を消去する。
【００３４】
なお、ディスク消去部３０４には、仮想サーバ１０９と同じように、プロセッサ306を割り当てることができる。すなわち、仮想サーバ１０９と同じようにワークロードを設定することができ、ディスク消去部３０４の処理量を調整することができる。
【００３５】
リソース処理、リソース開放、リソース割当、ディスク消去の各処理は、各プログラムをプロセッサ306で実行することにより実現するが、これらは、集積回路化などにより、ハードウェア/ファームウェアで実現することもできる。
【００３６】
図４は、仮想サーバ１０９に対するリソースの割り当て状況を示している。図４では、仮想化機構１１０が、仮想サーバ109(a)に対して、物理サーバ１１２内のメモリ305(a)及びプロセッサ306(a)，並びにディスクボリューム１１４内に仮想ディスク４０１(a)として設けたディスク領域を割り当て、仮想サーバ109(b)に対して、物理サーバ１１２内のメモリ305(b)及びプロセッサ306(b)，並びにディスクボリューム１１４内に仮想ディスク４０１(b)として設けたディスク領域を割り当てている状況を示している。ここで、メモリ305(a)及び305(b)の各々は、図3に示したメモリ305の異なる部分領域である。この部分領域は、仮想メモリ技術を用いると物理的には同じ領域になることもあるが、論理的には異なる領域（ページ）である。プロセッサ306(a)及び306(b)の各々は、同じプロセッサ306を所定の時間割合で使用するようにした部分使用状況を示す。仮想ディスク４０１(a)及び４０１(b)のそれぞれは、ディスクボリューム１１４内の異なる部分領域である。
【００３７】
以上のように、メモリ305の割り当てとは、仮想化機構１１０が管理している物理サーバ１１２が有するメモリ305の一部を、仮想サーバ１０９の専用領域として割り当てることである。プロセッサ306の割り当てとは、仮想サーバ１０９に対して所定の時間割合に応じてプロセッサ306を使用するようにスケジュールすることである。仮想ディスク４０１の割り当てとは、ディスクボリューム１１４の一部の領域を、仮想サーバ１０９の専用領域として割り当てることである。
【００３８】
仮想ディスク４０１は、ディスクボリューム１１４の部分領域であり、仮想サーバ１０９上で稼動するＯＳ３０１からは一般的なディスクに見えるが、実際はディスクボリューム１１４内に設けられた一部の領域しか使用していない。
【００３９】
ディスクボリューム１１４内に、仮想ディスクを設ける方法はいくつかある。例えば仮想ディスク４０１をファイルとして管理する方法などがある。なお、仮想ディスク４０１の容量は、仮想サーバ１０９の生成時にユーザが自由に設定できる。複数のディスクボリューム１１４がある場合は、複数のディスクボリュームに１１４に渡って一つの仮想ディスク４０１を生成しても良い。
【００４０】
図５はディスクボリューム１１４の構成を示している。ディスクボリューム１１４は、仮想ディスク４０１として割り当てる領域５０３、使用領域リスト５０１、及び未使用領域リスト５０２から構成される。使用領域リスト５０１は、領域５０３内の仮想ディスク４０１の割り当て情報を格納する。未使用領域リスト５０２は、領域５０３内の空き領域（仮想ディスクとして割り当てられていない領域）に関する情報を格納する。
【００４１】
領域５０３は仮想ディスク４０１として割り当てる領域である。領域５０３は、例えば固定長のブロックに区切られ、ブロック単位で使用／未使用を管理される。こうすることにより、ディスクボリューム１１４の領域を仮想ディスク４０１に割り当てる際に、必要な容量のブロック数を割り当てればよく、連続領域を割り当てる必要がなくなる。その結果、ディスクボリューム１１４の領域を有効に使用することができる。
【００４２】
図６は、本実施例の処理の概要を示す。ユーザ６０１から仮想サーバ１０９の削除要求６０２が発行されると、管理サーバ１０１内のリソース開放管理部２０７は、仮想サーバ１０９が使用していたリソースの開放要求を仮想化機構１１０に発行する。仮想化機構１１０のリソース開放部３０２は、仮想サーバ１０９に割り当てられていたリソースを開放する。リソース開放の一環である仮想ディスク４０１を開放するために、管理サーバ１０１内の仮想ディスク削除部２０８に処理が移行する。仮想ディスク削除部２０８は、仮想化機構１１０の負荷の状態に応じてディスク領域を消去する仮想化機構を選択したり、一回の消去処理の対象ブロック数の選択したり、選択した仮想化機構１１０の負荷の状況に応じて、その物理サーバ112のＣＰＵ306の割り当て量（ワークロード）を変更する。
【００４３】
これにより、負荷が高いディスク領域の消去処理を他の仮想サーバ１０９の処理に影響を与えることなく実行できる。仮想ディスク削除部２０８は、仮想ディスク４０１を分割して、ディスク領域の消去処理を実行することでディスクボリューム１１４の開放を迅速に行うことができる。仮想化機構110のディスク消去部３０４が仮想ディスクの消去処理を実行する。
【００４４】
この際、ワークロード管理部１０３は、ディスク消去部３０４が実行される物理サーバ112のＣＰＵ306負荷の状況に応じて、ディスク消去部３０４のワークロードを変更し、他の仮想サーバの処理性能に影響を与えないようにする。ディスク消去部３０４によって、仮想ディスク４０１の領域の情報は消去され（６０３）、消去された領域は仮想ディスク削除部２０８によって未使用領域リスト502に登録される。未使用領域リスト502に登録された領域は、情報の消去が完了した領域であり、他の仮想サーバ１０９にその領域を再度割り当てたとしても、削除した仮想ディスク４０１の内容が読まれること無く、高いセキュリティを保つことができる。
【００４５】
図７は、物理サーバ管理テーブル１０４の構成を示す。カラム７０１は、物理サーバ識別子を示す。複数の物理サーバ１１０が存在する場合は、複数の物理サーバ識別子が格納される。カラム７０２には、ＣＰＵ（プロセッサ）の性能仕様が格納される。たとえば、物理サーバ識別子がサーバ1の物理サーバ112は、動作クロック周波数2GHzのCPU２個が搭載されていることを示す。カラム７０３には、物理サーバ１１２のメモリ306の容量が格納される。
【００４６】
カラム７０４は、物理サーバ112に接続されているデバイスに関する情報が格納される。例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）であれば、種類や固有の識別子であるＭＡＣアドレス（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ａｄｄｒｅｓｓ）、ＨＢＡ（Ｈｏｓｔ  Ｂｕｓ  Ａｄａｐｔｅｒ）であれば、ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）である。
【００４７】
カラム７０５は、物理サーバ１１２に接続するディスクに関する情報が格納される。ストレージ装置１１３内のディスクボリューム１１４のボリューム識別子や容量が格納される。ここに格納されたディスクボリューム１１４は、他の物理サーバ１１２からそれぞれ共有されていても良い。その場合は、ディスクボリューム１１４を共有する各物理サーバ１１２に対して、同じボリューム識別子が格納される。
【００４８】
図８は、仮想サーバ管理テーブル１０５の構成を示す。カラム８０１には、仮想化機構識別子が格納される。通常、１つの物理サーバ１１２には一つの仮想化機構１１０が含まれるが、１つの物理サーバ１１２が複数の仮想化機構１１０を含んだシステムも実現できる。カラム８０２には、仮想化機構１１０が稼動している物理サーバ識別子が格納される。
【００４９】
カラム８０３には、仮想サーバ識別子が格納される。仮想サーバ識別子は、複数の仮想化機構１１０に渡ってユニークな値（符号）である必要はないが、一つの仮想化機構１１０内ではユニークな値（符号）である。仮想サーバ識別子８０３に登録される仮想サーバ１０９の数は、仮想化機構１１０による仮想サーバ１０９の生成及び削除に伴って増減する。
【００５０】
カラム８０４には、それぞれの仮想サーバ１０９に割り当てられたリソースが格納される。例えば、ＣＰＵの割り当て状態、メモリ容量、ＮＩＣの情報、仮想ディスク識別子などである。カラム８０５は、各仮想サーバ１０９のステータスを示している。ステータスは、稼動中や非稼動（生成されているが、現時点は稼動していない。）などの情報である。このステータス情報により、稼動している仮想サーバ１０９を把握でき、物理サーバ112の負荷を得やすくなる。
【００５１】
図９は、ワークロード管理テーブル１０６の構成を示す。カラム９０１には、仮想化機構識別子が格納される。カラム９０２には、稼動物理サーバ識別子が格納される。稼動物理サーバ識別子は、カラム９０１で示した仮想化機構識別子の仮想化機構１１０が稼動している物理サーバ１１２の識別子である。一つの物理サーバ１１２上で複数の仮想化機構１１０が稼動している場合は、その複数の仮想化機構識別子９０１に対応して同じ稼動物理サーバ識別子９０２が格納される。
【００５２】
カラム９０３には、仮想サーバ識別子が格納される。仮想化機構識別子９０１で示される仮想化機構110によって生成され、ワークロード制御の対象の仮想サーバ１０９の識別子が格納される。本実施例では、仮想ディスクに格納されている情報の消去のためのディスク消去部304の処理も、ワークロード制御の対象にするために、ワークロード管理テーブル１０６に登録される。ディスク消去処理は、仮想サーバ109の削除指示に対応した仮想ディスク401の削除要求に応じてワークロード管理テーブル１０６に登録され、仮想ディスク401内の情報の消去完了に応じてワークロード管理テーブル１０６から削除される。
【００５３】
カラム９０４には、CPU割り当て量が格納される。CPU割り当て量は、仮想サーバ１０９に対して割り当てるCPUの量（時間割合の量であり、性能割合の量を表す。）である。CPU割り当て量が大きいほど仮想サーバ１０９の処理性能は高い。
【００５４】
なお、CPU割り当て量及びその単位はユーザが任意に指定できる。例えば、仮想化機構１１０毎に全体を１００％として、仮想サーバ１０９毎に割り当て率として値を格納しても良い。仮想化機構１１０が有する性能の全てを仮想サーバ１０９に割り当てる必要はない。仮想サーバ１０９の急な負荷増大に備えて、未使用のCPUを残しておいても良い。
【００５５】
カラム９０５は、物理CPU使用率が格納される。物理CPU使用率は、物理サーバ識別子９０２が有するCPU306の全処理量を１００％とした時の使用率であり、後述するワークロード監視部211によって収集され、格納される。
【００５６】
なお、物理CPU使用率は、仮想化機構１１０が各仮想サーバ１０９のCPU利用率をスケジューリングした時間から算出しても良いし、仮想サーバ１０９上で仮想サーバ１０９自身の使用率を収集し、これにCPU割り当て量９０４を乗算しても良い。物理CPU使用率９０５によって、稼動物理サーバ識別子９０２が示す物理サーバ１１２の負荷を知ることができる。
【００５７】
図１０は、削除管理テーブル１０７の構成を示している。削除管理テーブル１０７は、仮想ディスク４０１の情報の消去処理に用いられるテーブルであり、情報の消去処理を実行中の仮想ディスク４０１や、仮想ディスク４０１を部分開放するための情報が格納される。カラム１００１には、仮想ディスク識別子が格納される。カラム１００２には、仮想ディスク識別子１００１で示される仮想ディスク401が含まれるディスクボリューム１１４の識別子が格納される。１つのディスクボリューム１１４には、複数の仮想ディスク４０１が含まれていても構わない。
【００５８】
カラム１００３には、論理ブロック番号が格納される。論理ブロック番号１００３は、物理ブロック番号１００４に対応して設けら、ユーザからは連続領域に見えるように番号が付してある。物理ブロック番号に関しては後に説明する。カラム１００５には、分割ファイル名が格納される。ここで、分割ファイルとは、一つ以上の論理ブロック番号１００３で示されるブロックに対応付けられるファイル名である。仮想ディスク401のファイル名としての仮想ディスク識別子１００１に対して、仮想ディスク401をいくつかに分割した各々の領域（分割ファイル）を示すのが分割ファイル名１００５である。
【００５９】
本実施例は、新たな仮想サーバ109の生成に応じて必要な容量の仮想ディスク401を割り当てられるようにするために、仮想ディスク401単位の開放ではなく、分割ファイル単位の開放を実現する。分割ファイル単位で、格納している情報の消去処理を実行し、消去処理が完了したならば、その分割ファイルを開放することにより、ディスクボリューム１１４の空き容量（未使用領域）を大きくし、新たな仮想サーバ109への仮想ディスク401の割り当てに、より高い自由度を持たせることができる。仮想ディスク401の領域を仮想ディスク401単位で開放すると、仮想ディスク401の容量が大きい場合、そこに格納されている情報の消去に長時間を要し、新たな仮想サーバ１０９に対して仮想ディスク４０１の領域を割り当てることができない状況（割り当ての自由度が低い状況）が発生するからである。
【００６０】
カラム１００６には、分割ファイルのステータスが格納される。ステータスは、分割ファイルの情報の「消去完了」、消去処理を「実行中」、消去は「未処理」などの状態を示す。なお、「未処理」は、後の説明から分かるように、「未処理」が格納されるのではなく、空欄になっている。カラム１００７には、仮想ディスク401の情報の消去処理を実行する物理サーバの識別子が格納される。これは、仮想ディスク401の情報の消去処理のCPU負荷が高いことから、消去処理がシステム全体の性能に与える影響が低くなるように処理を分散するため、また負荷が低い物理サーバ112で消去処理が実行できるように制御するために用いられる。なお、1台の物理サーバ112で複数の仮想化機構110を稼動させる場合は、カラム１００７に仮想化機構識別子を格納するようにすれば良い。
【００６１】
以上の物理サーバ管理テーブル104、仮想サーバ管理テーブル105、ワークロード管理テーブル106及び削除管理テーブル107は、管理サーバ101にあるものとして説明したが、個々の物理サーバ112又は仮想化機構110固有の情報は、個々の物理サーバ112又は仮想化機構110内にテーブルを設けて格納しておくことが望ましい。各情報を管理サーバ101と個々の物理サーバ112又は仮想化機構110との双方に保持するか、それらの一方に保持するかは、管理サーバ101と個々の物理サーバ112との間の転送データ量やその転送頻度を考慮して実装上決定される。
【００６２】
図１１は、使用領域リスト５０１の構成を示す。カラム１１０１には、仮想ディスク識別子が格納される。カラム１１０２及びカラム１１０３には、それぞれ論理ブロック番号、物理ブロック番号が格納される。仮想サーバ１０９上で稼動するＯＳ３０１からは、仮想ディスク401が論理ブロック番号で表される値の順に連続領域に見える。論理ブロック番号１１０２に対応する領域が物理ブロック番号１１０３に示される。
【００６３】
このように、仮想サーバ１０９上のＯＳ３０１から見える論理的に連続した領域と、物理ブロック番号で表される領域とマッピングすることにより、ディスクボリューム１１４の不連続な領域に対応する物理ブロックを論理ブロックに対応つけることができ、ディスクボリューム１１４の領域を有効に使用することができる。つまり、ＯＳ３０１から見える連続領域が、実際には物理ブロックが不連続であっても構わないため、ディスクボリューム１１４の空き領域を有効に使用することができるようになる。なお、使用領域リスト501は、ディスクボリューム１１４内に生成された仮想ディスク４０１毎の論理ブロック番号１１０２と物理ブロック番号１１０３の対応付けの情報を有する。
【００６４】
図１２は、未使用領域リスト５０２の構成を示す。未使用領域リスト５０２は、ディスクボリューム１１４において、仮想ディスク401として割り当てていない未使用領域の物理ブロック番号１２０１が格納される。新たに仮想ディスク４０１を割り当てる際は、未使用領域リスト５０２に示される物理ブロック番号１２０１から必要な量が確保され、使用領域リスト５０１に登録される。
【００６５】
使用領域リスト５０１から、仮想ディスク４０１が削除された場合は、削除された仮想ディスクに割り当てられていた領域が、未使用領域リスト５０２に追加される。
【００６６】
なお、ストレージ装置113から仮想化機構110にディスクボリューム114として提供された領域のすべてを表す物理ブロック番号が、使用領域リスト５０１及び未使用領域リスト５０２のいずれかに存在するわけではない。使用領域リスト５０１及び未使用領域リスト５０２のいずれかに存在する物理ブロック番号に対応する領域は、仮想ディスク401として仮想サーバ109に割り当て可能な領域である。ディスクボリューム114を表す物理ブロック番号で、使用領域リスト５０１及び未使用領域リスト５０２のいずれにも存在しない物理ブロック番号の領域は、仮想化機構110自身が使用するか、仮想化機構110の管理の下で仮想ディスク以外の用途に使用される。
【００６７】
実施例１における物理ブロック番号は、ディスク装置の物理的なブロック（ディスクの物理アドレスで表されるブロック）を示す必要はなく、仮想化機構１１０から見えるディスクボリュームの領域を表すブロックを示していれば良い。したがって、１台の物理サーバ112上に複数の仮想化機構110が含まれる場合、一般に仮想化機構110で認識するブロックと物理サーバ112で認識するブロックとの間で、一般に、さらにマッピングが必要となる。
【００６８】
仮想化機構110又は物理サーバ112で認識するブロック（アドレス）は、ストレージ装置113から提供されるブロック（アドレス）である。仮想化機構110又は物理サーバ112にストレージ装置113から提供されるディスクボリューム114の領域を示すブロックの番号は連続し、ディスクボリューム114は連続領域のように仮想化機構110又は物理サーバ112から見えるが、ストレージ装置内で仮想化が図られ、必ずしも物理的にはディスク上の連続領域が対応するものではない。以上のように、本実施例では物理ブロック番号を用語として用いるが、必ずしも物理的にはディスク上の領域を表すものではない。
【００６９】
以下、管理サーバ101及び物理サーバ112の各部の処理を各々のフローチャートに沿って説明する。以下の説明では、フローチャートの各処理ステップを、たとえばステップ1301をS1301と表記する。
【００７０】
図１３は、リソース管理部２０５によるリソース制御フローを示す。本リソース制御は、ユーザからのリソース割り当て要求やりソース開放要求を振り分ける処理である。
【００７１】
リソースの割り当て要求とは、仮想サーバ１０９の生成要求である。ユーザは、仮想サーバ１０９の生成要求を、仮想サーバを生成する物理サーバ識別子７０１または仮想化機構識別子８０１、生成する仮想サーバ１０９に対するＣＰＵ割り当て量、メモリ容量、仮想ディスク４０１の容量、必要に応じてＩ／Ｏデバイスの種類や数などをパラメータとして発行する。
【００７２】
リソースの開放要求とは、仮想サーバ１０９の削除の要求である。開放要求は、仮想サーバ１０９にはＣＰＵ、メモリ、仮想ディスク４０１などが割り当てられているが、これらの割り当てられているリソースを開放するための要求である。開放要求は、削除したい仮想サーバ識別子（８０３）をパラメータとして発行される。
【００７３】
リソース管理部２０５はユーザからのリソース要求を受け付ける（S1300）。ユーザからの要求が割り当て要求かどうかが判断される（S1305）。割り当て要求は、仮想サーバを新規に生成する場合や、既存の仮想サーバにリソースを追加で割り当てる場合に発行される。ユーザからの要求が割り当て要求の場合は、リソース管理部２０５はリソース割り当て管理部２０６に制御を移し（S1310）、リソース割り当て管理部２０６からの応答を待つ。
【００７４】
リソース管理部２０５は、リソース割り当て管理部２０６からの応答を確認し（S1315）、割り当て要求に対する処理結果をユーザに報告する（S1320）。仮想サーバが新規に生成された場合は、仮想サーバ管理テーブル１０５に仮想サーバ識別子８０３と、割り当てられたリソース（８０４）が追加される。既存の仮想サーバにリソースを追加で割り当てる場合は、仮想サーバ管理テーブル１０５に指定された既存の仮想サーバに対応して割り当てられたリソース（８０４）が追加される。
【００７５】
割り当て要求でない場合は、リソース管理部２０５はユーザからの要求が開放要求かどうかを判断する（S1325）。開放要求は、仮想サーバを削除する場合や仮想サーバから特定のリソースを削除する場合に、発行される。開放要求の場合は、リソース開放管理部２０７に制御を移し（S1330）、リソース開放管理部２０７からの応答を待つ。
【００７６】
リソース管理部２０５は、リソース開放管理部２０７からの応答を確認し（S1335）、割り当て要求に対する処理結果をユーザに報告する（S1340）。
【００７７】
図１４は、リソース割当管理部２０６の処理フローを示す。この処理は、仮想サーバを新規に生成する場合や、既存の仮想サーバにリソースを追加で割り当てる場合にリソース管理部２０５から呼び出され、実行される。
【００７８】
リソース割当管理部２０６は、新規に仮想サーバを生成する場合はその仮想サーバを生成する仮想化機構110の、既存の仮想サーバにリソースを追加割り当てする場合は既存の仮想サーバがある仮想化機構110の、リソース割当部３０３に、CPU、メモリ、I/Oデバイスの割り当てを要求する（S1400）。この要求のパラメータは、仮想サーバの新規生成の場合とリソースの追加割り当ての場合によって異なるが、仮想サーバ１０９に対するＣＰＵ割り当て量、メモリ容量、必要に応じてＩ／Ｏデバイスの種類や数などがある。
【００７９】
リソース割当管理部２０６はリソース割当部３０３からの応答を確認する（S1405）。リソース割当管理部２０６は、リソース管理部２０５から指定された仮想ディスクを生成するために、物理サーバ管理テーブル104及び仮想サーバ管理テーブル１０５を参照し、仮想サーバを生成する又はリソース追加する仮想サーバが稼動する仮想化機構110が利用可能なディスクボリューム114を特定する（S1410）。リソース割当管理部２０６は、リソース管理部２０５から指定された仮想ディスクの容量のディスク領域を、特定したディスクボリューム114の未使用領域リスト５０２から確保し、確保した領域を未使用領域リスト５０２から削除する（S1415）。確保する領域は、可能な限り仮想ディスクサイズに近い、連続した空き領域が望ましい。
【００８０】
確保した領域は、使用領域リスト５０１に登録される（S1420）。確保された領域の未使用領域502からの削除及び使用領域リスト501への登録により、この確保された領域は要求された仮想サーバが使用する仮想ディスクとなり、他の仮想サーバからはアクセスできない。
【００８１】
リソース割当管理部２０６は、S1405で応答を確認したリソース割当部３０３によるリソース割り当て結果及び仮想ディスクの生成結果を、仮想サーバ管理テーブル１０５、物理サーバ管理テーブル１０４、及びワークロード管理テーブル１０６にリソース割り当て情報として登録する（S1425）。リソース割当管理部２０６は、リソース割り当て結果を、対象とした仮想サーバ109が稼動する仮想化機構110に通知する（S1430）。仮想化機構110は、この通知に応答して、仮想サーバ109を稼動させる。仮想サーバ109の起動に関しては、詳細を省略する。リソース割当管理部２０６は、リソース割り当て結果を応答として、リソース管理部２０５に報告する（S1435）。
【００８２】
図１５は、リソース開放管理部２０７の処理フローを示す。この処理は、仮想サーバを削除する場合や、仮想サーバから特定のリソースを開放する場合にリソース管理部２０５から呼び出され、実行される。
【００８３】
リソース開放管理部２０７は、リソース管理部２０５により指定された仮想サーバ109へ割り当てられているリソースを、仮想サーバ管理テーブル１０５を参照し、把握する（S1500）。
【００８４】
リソース開放管理部２０７は、把握した割り当てリソース(CPU・メモリ・I/Oデバイス等)の開放を、指定された仮想サーバ109が稼動していた仮想化機構110のリソース開放部３０２に要求する（S1505）。この要求のパラメータは、リソースを開放する仮想サーバ識別子８０３である。仮想サーバ識別子８０３がわかれば、仮想サーバに割り当てられているリソース（ＣＰＵ割り当て量、メモリ容量、必要に応じてＩ／Ｏデバイスの種類や数）は、仮想サーバ管理テーブル105を参照することで把握することができる。しかし、説明を省略したが、図１４のS1430で通知されたリソース割り当て結果が仮想化機構110に保存されているので、この保存されている情報をリソース開放部３０２は用いればよい。リソース開放管理部２０７は、リソース開放部３０２から通知された応答を確認する（S1510）。
【００８５】
S1500で把握した仮想ディスク401を削除するために、仮想ディスク削除部２０８に制御を移す（S1515）。仮想ディスク削除部２０８からの応答確認する（S1520）。この応答には、指定した仮想ディスク401に格納されていた情報を消去したこと、及び仮想ディスク401として使用していた領域を使用領域リスト501から削除し、未使用領域リストに加えたことを含む。
【００８６】
リソース開放管理部２０７は、仮想サーバ管理テーブル105及びワークロード管理テーブル106から、削除した仮想サーバの情報を削除する（S1525）。リソース開放管理部２０７は、仮想サーバを削除する場合はその仮想サーバの削除及びその仮想サーバが使用していたリソースの開放を、仮想サーバから特定のリソースを開放する場合はそのリソースの開放を、リソース管理部２０５に応答として通知する。
【００８７】
図１６及び図１７は、仮想ディスク削除部２０８の処理フローを示す。仮想ディスク削除部２０８は、ワークロード管理テーブル１０６からＣＰＵ使用率の合計が最も小さい仮想化機構１１０を選択する（S1600）。CPU使用率の合計が最も小さい仮想化機構１１０とは、例えば、ワークロード管理テーブル１０６の、仮想サーバ１０９のＣＰＵ割当量９０４と物理ＣＰＵ使用率とを掛け合わせて算出することができる。
【００８８】
例えば、図９のワークロード管理テーブル１０６を参照すると次のようになる。仮想化機構１上で、仮想化サーバ１(ＣＰＵ割当量20、物理ＣＰＵ使用率１０%)及び仮想化サーバ２(ＣＰＵ割当量３０、物理ＣＰＵ使用率２０%)が稼動中であり、仮想化機構１のＣＰＵ使用率は２０×０．１＋３０×０．２=８%である。仮想化機構２上では仮想化サーバ３(ＣＰＵ割当量３０、物理ＣＰＵ使用率２０%)が稼動中であり、仮想化機構２のＣＰＵ使用率は３０×０．２=６%である。仮想化機構３上では仮想サーバ４（ＣＰＵ割当量５０、物理ＣＰＵ使用率４０％）及び仮想サーバ５（ＣＰＵ割当量３０、物理ＣＰＵ使用率２０％）が稼働中であり、仮想化機構３のＣＰＵ使用率は５０×０．４＋３０×０．２＝26％である。仮想ディスク削除部２０８は、これらのＣＰＵ使用率を比較し、ＣＰＵ使用率が最も小さい仮想化機構２を、仮想ディスクを削除する仮想化機構として選択する。
【００８９】
他の方法として、仮想化機構１１０が各仮想サーバ１０９へのCPU使用をスケジューリングした時間を、仮想ディスク削除部２０８が各仮想化機構１１０から取得して算出することも可能である。また、各仮想サーバ１０９を含めて各仮想化機構１１０のＣＰＵ使用率を実測して、この実測値を利用する方法もある。
【００９０】
これにより、最も負荷の低い仮想化機構１１０で、仮想ディスク４０１の情報を消去できるので、複数の物理サーバ１１２に渡って負荷を分散でき、システム全体の負荷のバランスを保つことができる。仮想ディスク削除部２０８は、ワークロード管理テーブル１０６の選択した仮想化機構の仮想サーバ識別子欄に「ディスク消去処理」と登録することで（S1605）、ディスク消去処理のためにワークロードを割り当てることができる。
【００９１】
仮想ディスク削除部２０８は、仮想サーバ管理テーブル１０５から、ディスク消去処理の対象の仮想ディスク識別子を取得する（S1610）。仮想ディスク削除部２０８は、ディスク消去処理の対象の仮想ディスクに関する情報を削除管理テーブル１０７に格納する（S1615）。仮想ディスク削除部２０８が削除管理テーブル１０７に格納するのは、取得した仮想ディスク識別子、この仮想ディスク識別子に基づいて物理サーバ管理テーブル104及び仮想サーバ管理テーブル105から得た接続ディスクのディスクボリューム識別子、このディスクボリューム識別子で示されるディスクボリュームの使用リスト501を参照して得られるこの仮想ディスク識別子で示される仮想ディスクの論理ブロック番号、及び処理物理サーバ識別子である。
【００９２】
たとえば、図10に示すように、仮想ディスク1を削除対象とし、そこに格納されている情報を消去する場合である。図8の仮想サーバ管理テーブル105を参照すると、仮想ディスク1は、（物理）サーバ１上の仮想化機構1に制御されている仮想サーバ1によって使用されていることが分かる。図7の物理サーバ管理テーブル104を参照すると、（物理）サーバ１の接続ディスクはディスクボリューム1である。仮想ディスクの論理ブロック番号は、ディスクボリューム1の使用リスト501から得られる。
【００９３】
しかし、図10に示す仮想ディスク2を削除対象とする場合は、ディスクボリューム1はサーバ1に接続されている。仮想ディスク2の削除を実行するために仮想化機構2が選択されたとすると、物理サーバは仮想化機構2を稼動させているサーバ2であり、物理サーバ管理テーブル104を参照すると、サーバ2にはディスクボリューム1が接続されていないことが分かる。このように物理サーバが認識（接続）していないディスクボリュームの仮想ディスクを削除する場合については後述する。ただし、処理物理サーバ識別子（図10の1007）には、選択された仮想化機構2を稼動させているサーバ2を格納する。
【００９４】
なお、この時点では、物理ブロック番号１００３と分割ファイル名１００５、ステータス１００６欄は空白である。
【００９５】
次に仮想ディスク削除部２０８は、削除対象の仮想ディスクのあるディスクボリュームの使用領域リスト５０１から仮想ディスクに割り当てられた物理ブロック番号を順次取得し、削除管理テーブル１０７に格納する（S1620）。仮想ディスク削除部２０８は、使用領域リスト５０１を更新する（S1625）。具体的には、使用領域リスト５０１から削除対象の仮想ディスクの仮想ディスク識別子１００６を削除し、論理ブロック番号１１０２と物理ブロック番号１１０３は残す。これは、使用領域リスト５０１から、情報の消去を完了した領域を、仮想ディスク単位ではなく、分割領域単位で、除外できるようにするためである。
【００９６】
仮想ディスク削除部２０８は、S1600で求めたＣＰＵ使用率を再度求め（時間経過と共に変わる可能性があるためである。）、そのＣＰＵ使用率とフリー領域（未使用物理ブロックの割合）に基づいて、情報を消去するブロック数を求める（S1630）。例えば、図２８に示すＣＰＵ使用率と、未使用領域リスト５０２に登録されている未使用物理ブロック数とからなる、ブロック数マトリクスなどに基づいて、ブロック数を求める。図２８に示すブロック数マトリクスの一つの軸はＣＰＵ使用率であり、例えばＣＰＵ使用率が20％以下のときにブロック数１０とし、ＣＰＵ使用率が２０％多くなるに従って、消去するブロック数を１つ減少させる。他の一つの軸は、ディスクボリューム１１４の全体の容量に対する未使用物理ブロック数の割合に応じて、割合が20％以下のときにブロック数を１０として割合が２０％増加するに従って、消去するブロック数を１つ少なくする。この２つの軸のマトリクスによって得られるブロック数を消去するブロック数として選択する。
【００９７】
図２８に示すブロック数マトリクスに関する考え方は次のとおりである。消去するブロック数は、ＣＰＵ使用率が低い、又は未使用物理ブロック数（又は、その割合）が少ないほど多い。消去するブロック数が多くても、ＣＰＵ使用率が低いのでシステム全体に与える負荷の影響が少なく、未使用物理ブロック数を増加させることができ、仮想ディスク割り当てに自由度を持たせることができる。一方、未使用物理ブロック数が多く仮想ディスク割り当てに自由度ある場合であり、ＣＰＵ使用率が高い場合は、システム全体に与える負荷の影響を抑制するために、消去するブロック数を少なくする。このように、システム全体としての負荷と、ディスクボリューム１１４領域の可用性という２つの観点のバランスを考慮した、仮想ディスクの削除及びその仮想ディスクの情報の消去を実現することができる。図28では、ブロック数の最大を１０としたが、ディスクボリューム１１４の容量や物理サーバ１１２毎ＣＰＵの処理性能に応じて変えても良い。ＣＰＵ性能が高い場合はブロック数の最大値を少なくし、ディスクボリューム１１４の容量が大きい場合はブロック数の最大値を大きくするなど、ＣＰＵ使用率などの割合ではなく、性能や容量の絶対値に着目して、ブロック数マトリクスを設けてもよい。
【００９８】
仮想ディスク削除部２０８は、削除管理テーブル１０７の分割ファイル名欄１１０５に、S1630で求めた物理ブロック数に対応して分割ファイルを登録する（S1635）。仮想ディスク削除部２０８は、ワークロード制御部210に処理を移す（S1640）。ワークロード制御部210は、後で詳細を説明するが、ワークロード管理テーブル１０６を使って、現状の負荷に応じてディスク消去処理のワークロードを動的に調整する。ワークロード制御部210からのCPU割当量を確認する（S1645）。このCPU割当量は、ワークロード制御部210から、仮想ディスクの消去のために選択された仮想化機構110にも通知されるので、後のディスク消去処理は、仮想化機構110によって、このCPU割当量に制御される。
【００９９】
仮想ディスク削除部２０８は、削除管理テーブル１０７の、S1635で登録した分割ファイル名に対応したステータス１００６を「実行中」に変更し（S1650）、選択した仮想化機構110のディスク消去部３０４に処理を移す（S1655）。ディスク消去部３０４に処理を移す際に、仮想ディスク削除部２０８は、仮想ディスクの情報の消去対象である分割ファイルの物理ブロック番号と仮想ディスクが割り当てられているディスクボリューム識別子（必要に応じて、ディスクボリューム１１４のアドレスを示す情報）をパラメータとしてディスク消去部３０４に渡す。
【０１００】
仮想ディスク削除部２０８は、ディスク消去部３０４の処理の完了を確認し（S1660）、消去処理が完了した分割ファイルの物理ブロック番号を、ディスクボリューム１１４の未使用領域リスト５０２に格納し、使用領域リスト５０１から削除する（S1665）。仮想ディスク削除部２０８は、削除管理テーブル１０７の、消去した分割ファイルのステータス１００６を、"消去完"に変更する（S1670）。
【０１０１】
仮想ディスク削除部２０８は、消去すべき仮想ディスク領域をすべて消去したか否かを判定し（S1675）、すべて消去していない場合は、S1630に戻り、仮想ディスク領域をすべて削除するまで、分割ファイルの登録、及びその内容の消去の処理を繰り返す。
【０１０２】
消去すべき仮想ディスク領域をすべて消去した場合は、消去完了をリソース開放管理部207に通知する。
【０１０３】
なお本実施例では、仮想ディスク消去部２０３は、仮想化機構１１０内に設けたが、他の方法として、仮想ディスクの情報の消去のための仮想サーバ１０９を生成し、これを用いて消去することもできる。これらの方法は、システムの構造や制御の複雑さ、処理のオーバーヘッドの大きさなどを基に適宜選択される。
【０１０４】
また、本実施例において、仮想ディスク領域に格納されている情報の消去時間を調整する目的で、分割ファイル登録によるブロック数の調整と分割ファイル単位の情報の消去のためのワークロードの調整とを実施しているが、双方を実施しなくても、仮想ディスク単位での情報の消去という主たる課題は解決でき、いずれか一方を実施することにより、情報消去の際の他の仮想サーバの性能劣化の削減という従たる課題は解決できる。
【０１０５】
仮想ディスク完全削除部２０８は、複数の仮想ディスク４０１の削除及び情報の消去を同時に行うために、同時に複数の仮想ディスク完全削除部２０８を設けることや仮想ディスク完全削除部２０８をリエントラント可能なプログラム構成にすることは、当業者であれば、本実施例から容易に推考できるであろう。
【０１０６】
本実施例では、S1630のブロック数を求める処理を分割ファイル単位で繰り返すようにしているので、未使用物理ブロック数の割合やCPU使用率などの動的な変化にも対応できる。
【０１０７】
図１８は、ワークロード制御部２１０の処理フローを示す。ここでは、仮想ディスの情報の消去処理304に関わるワークロードを設定する処理として説明する。図9に示したワークロード管理テーブル106に記載のように、ワークロードは仮想サーバ109にも設定される。仮想サーバ109へのワークロードは、仮想サーバ上で実行されるアプリケーションプログラムの応答時間などの要求性能に基づいて設定される。したがって、消去処理304に関わるワークロードの設定に際して、仮想サーバ109に設定されたワークロードは、与えられた条件として扱うことができる。この与えられた条件は動的に変化するが、前述のように、本実施例ではその動的な変化に対応できるようにしている。
【０１０８】
ワークロード制御部２１０は、ＣＰＵ使用率に基づいて、ＣＰＵ割当量、すなわちワークロードを決定する（S1800）。ワークロード制御部２１０は、既に仮想サーバに割り当てられているワークロード、及び仮想化機構110の負荷を考慮し、物理サーバ１１２の処理性能を超えない範囲でＣＰＵ割当量を決定する。負荷の低い仮想化機構110が選択されているのであるから、一般に、消去処理304へのワークロード設定には余裕がある。
【０１０９】
ここでは、S1600で用いたＣＰＵ使用率と、フリー領域（未使用領域）の割合（未使用物理ブロック数のボリューム全体のブロック数に対する割合）から、ＣＰＵ割当量を求める方法を説明する。図２９は、そのためのＣＰＵ割当量マトリクスの例を示す。ＣＰＵ割当量マトリクスの一つの軸はＣＰＵ使用率であり、例えばＣＰＵ使用率が20％以下のときのCPU割当量を１０とし、ＣＰＵ使用率が２０％多くなるに従ってCPU割当量を１減少させる。他の一つの軸は、ディスクボリューム１１４の全体の容量に対する未使用物理ブロックの容量の割合に応じて、割合が20％以下のときのＣＰＵ割当量を１０として割合が２０％増加するに従ってＣＰＵ割当量を１減少させる。このマトリクスによって得られるＣＰＵ割当量を選択する。
【０１１０】
なお、ＣＰＵ割当量は、ＣＰＵ使用率が低い、または未使用物理ブロック数が少ないほど多くなる。ＣＰＵ割当量が多いと、仮想ディスクの情報の消去時間が短くなる。ＣＰＵ割当量が少ないと、仮想ディスクの情報の消去時間が長くなり、システムに与える負荷を少なくできる。したがって、CPU利用率が低い場合はシステムに与える負荷が軽いためＣＰＵ割当量を大きくし、短時間で空き領域を確保することができる。一方、ディスクボリューム１１４の空き領域が少ないと、新規に仮想サーバを生成することができない場合が発生するので、これを回避するためにＣＰＵ割当量を大きくし、短時間で未使用領域を確保する。
【０１１１】
このようにＣＰＵ割当量を調整することにより、システム全体としての負荷と、ディスクボリューム１１４領域の可用性という２つの観点のバランスを考慮した、仮想ディスクの削除及びその仮想ディスクの情報の消去を実現することができる。
【０１１２】
なお、図29では、ＣＰＵ割当量の最大を１０としたが、ディスクボリューム１１４の容量や物理サーバ１１２毎ＣＰＵの処理性能に応じて変えても良い。ＣＰＵ性能が高い場合はＣＰＵ割当量の最大値を少なくし、ディスクボリューム１１４の容量が大きい場合はＣＰＵ割当量の最大値を大きくするなど、ＣＰＵ使用率などの割合ではなく、性能や容量の絶対値に着目して、ＣＰＵ割当量マトリクスを設けてもよい。
【０１１３】
物理サーバ１１２毎にＣＰＵ割当量マトリクスを設け、システム全体として複数のＣＰＵ割当量マトリクスを保持しても良い。ＣＰＵ割当量をＣＰＵ割当量マトリクス（図２９）から求め、状態によってＣＰＵ割当量を変えても良い。例えば、ワークロード管理テーブル１０６の仮想サーバ識別子９０１又は物理サーバ識別子９０２毎に物理ＣＰＵ使用率の空きを求め、ＣＰＵ割当量マトリクスから求めた値が物理ＣＰＵ使用率の空きを超えていた場合は、物理ＣＰＵ使用率の空きをディスクの消去処理に割り当てるＣＰＵ割当量としても良い。
【０１１４】
ワークロード制御部２１０は、決定したＣＰＵ割当量を、ワークロード管理テーブル１０６のディスク消去に対応させてＣＰＵ割当量９０４に格納し（S1805）、該当する仮想化機構110に決定したＣＰＵ割当量の割り当てを要求する（S1810）。さらに、ワークロード制御部２１０の呼び出し元である仮想ディスク削除部208に決定したＣＰＵ割当量を通知する。
【０１１５】
図１９は、ワークロード監視部２１１の処理フローを示す。ワークロード監視部２１１は、各仮想化機構１１０のリソース情報を取得し、ワークロード管理テーブル１０６に格納する（S1900）。ワークロード監視部２１１は、一般には、各物理サーバ及び各仮想化機構の負荷や障害発生状況等を監視するが、本実施例では少なくとも各物理サーバの物理CPU使用率を監視し、ワークロードテーブル106に監視結果を格納する。物理CPU使用率は前述のように、仮想ディスクの情報の消去処理へのＣＰＵ割り当て及び消去処理のための分割ファイルの設定などに用いられる。ワークロード監視部２１１は、S1900の処理を所定時間毎に繰り返すために、その所定時間の経過を待つ（S1905）。所定時間の経過を待つために、ここでは、その都度所定時間間隔を変えることができるWAITタイマを用いる処理フローを示しているが、所定時間間隔の周期タイマによって起動されても良い。物理CPU使用率の変動が激しい場合は、所定時間間隔を短くすることによって、精度よく状態を監視できる。
【０１１６】
図２０は、リソース開放部３０２の処理フローを示す。リソース開放部３０２は、リソース開放管理部２０７から要求のあったリソースを開放する。リソース開放部３０２は、リソース開放管理部２０７から要求に応じて、ＣＰＵを開放し（2000）、メモリを開放し（S2005）、Ｉ／Ｏデバイスを開放する（S2010）。図20の処理フローは簡略化してあるが、たとえばメモリの開放に当たっては、メモリ開放の要否の指定、及び要の場合はメモリアドレスの指定を受けて開放する。最後に、要求に応じてリソースの開放が完了したことをリソース開放管理部２０７へ通知する（S2015）。
【０１１７】
図２１は、リソース割当部３０３の処理フローを示す。リソース割当部３０３は、リソース割当管理部２０６から要求のあったリソースを、リソース割当管理部２０６から指定された仮想サーバに割り当てる。リソース割当部３０３は、リソース割当管理部２０６から要求のあった、ＣＰＵを割り当て（S2100）、メモリを割り当て（S2105）、Ｉ／Ｏデバイスを割り当てる（S2110）。図21の処理フローも簡略化してあるが、たとえばメモリの割り当てに当たっては、メモリ割り当ての要否の指定、及び要の場合はメモリ容量の指定を受けて割り当てる。最後に、要求に応じてリソースの割り当てが完了したことをリソース割り当て管理部206へ通知する。この通知に際して、たとえばメモリ割り当てに関しては、割り当てたメモリアドレスを含めて通知する（S2115）。
【０１１８】
図２２は、ディスク消去部３０４の処理フローを示す。ディスク消去部３０４は、仮想ディスク削除部２０８から要求のあった領域に格納さえている情報を消去する。領域の情報（プログラム又はデータ）の消去は、乱数を発生させて、発生したランダムな値、ビット0、ビット1、又はNullデータを指定された領域に複数回書き込むことである。どのようなデータを書き込むかは、一義的に決めても良いし、その領域を使用していたアプリケーションでは生じにくいデータを選択しても良い。また、書き込みのエラーに対処するために、同じ領域に複数回書き込む。書き込み回数を増やせば増やすほど、ディスク消去部３０４の負荷がシステム全体に影響するので、情報の消去に伴うワークロード調整の必要性を既に説明した。
【０１１９】
ディスク消去部３０４は、仮想ディスク削除部２０８から、仮想ディスクの情報の消去対象である分割ファイルの物理ブロック番号と仮想ディスクが割り当てられているディスクボリューム識別子（必要に応じて、ディスクボリューム１１４のアドレスを示す情報）をパラメータとして渡される。渡されたディスクボリューム識別子からディスク消去部３０４がそのディスクボリュームを認識できるか否かをチェックし（S2200）、認識できないならば、そのディスクボリュームを認識できるようにするためにマウントする（S2205）。ディスク消去部３０４は、物理サーバ112に搭載された仮想化機構110上で実行される。したがって、このチェックのための情報は、物理サーバ管理テーブル104に集約されているが、たとえば、サーバ1という物理サーバ112が認識できるのはディスクボリューム1であることは、物理サーバ112自身がサーバ1固有の情報として保持している。
【０１２０】
ディスク消去部３０４は、仮想ディスク削除部２０８から要求のあった分割ファイルの情報を消去する（S2210）。分割ファイルは、上述のように、ディスクボリュームのブロック番号で与えられるので、ブロック番号で指定された領域ごとに格納されている情報を消去する。分割ファイルの情報の消去が完了したならば、ディスクボリュームのアンマウントの必要性をチェックし（S2215）、必要ならばアンマウントする（S2220）。アンマウントの必要性は、S2200でマウント要と判断した場合はアンマウントも要であり、マウント不要と判断した場合はアンマウントも不要である。このように、ディスク消去部３０４の処理を実行する物理サーバ112及び仮想化機構110が認識できないディスクボリュームは、分割ファイルの情報の消去処理の実行の間、一時的に認識される。最後に、ディスク消去部３０４は、要求された分割ファイルの情報の消去が完了したことを仮想ディスク削除部２０８へ通知する。このようにして、仮想サーバの削除に伴う仮想ディスクの情報の消去が実現されるので、仮想ディスク領域が新たな仮想サーバに新たな仮想ディスクとして割り当てられても、新たな仮想サーバから元々格納されていた情報を読むことはできない。
【０１２１】
本実施例では、仮想ディスク４０１の情報が、仮想サーバ１０９の削除に連動して、消去されるので、使用済の仮想ディスク４０１の情報を第3者によって読まれることはない。なお、本実施例では、情報消去の対象を仮想ディスク４０１としたが、本実施例の技術及びその考え方を仮想化されたサーバのメモリにも適用できることは、当業者であれば容易に推考できるであろう。
【実施例２】
【０１２２】
図２３は、実施例２の全体図を示す。実施例２において、実施例1と同じものには同じ符号を付し、可能な限り説明を省略する。実施例２では、仮想ディスクの情報をストレージ装置（ディスク装置）１１５で消去する。ストレージ装置１１５には、コマンド管理部２３０１とディスク消去部2302が含まれる。ディスク消去部2302は、実施例１と同じく、例えばランダムな数値を同じ領域に複数回書き込む。コマンド管理部2301は、ディスク消去の優先度を制御する。管理サーバ１０１上の仮想ディスク削除部2303から発行されたディスク消去コマンドを、ストレージ装置115が受け付け、管理サーバ１０１が指定した優先度に従ってディスクの情報を消去する。
【０１２３】
図２４は、仮想ディスク削除部2303がストレージ装置１１５に対して発行するディスク消去コマンドの形式を示す。２４０１には、ディスク消去コマンドのコードが格納される。２４０２には、ディスク消去の対象となるディスク識別子が格納される。２４０３には、ディスク消去の優先度が格納される。２４０４には、ディスク消去の対象のセクター数が格納される。２４０５〜２４０８には、２４０４に示されるセクター数に対応するセクター番号がリストとして格納される。セクター番号のリスト構造によって、不連続な領域のディスク消去を１つのコマンドで実行することができる。
【０１２４】
図２５及び図２６は、実施例２における仮想ディスク削除部2303の処理フローを示す。仮想ディスク削除部2303は、仮想サーバ管理テーブル１０５からディスク消去処理の対象の仮想ディスク識別子を取得する（S2500）。仮想ディスク削除部2303は、ディスク消去処理の対象の仮想ディスクに関する情報を削除管理テーブル１０７に格納する（S2505）。仮想ディスク削除部2303が削除管理テーブル１０７に格納するのは、取得した仮想ディスク識別子、この仮想ディスク識別子に基づいて物理サーバ管理テーブル104及び仮想サーバ管理テーブル105から得た接続ディスクのディスクボリューム識別子、このディスクボリューム識別子で示されるディスクボリュームの使用リスト501を参照して得られるこの仮想ディスク識別子で示される仮想ディスクの論理ブロック番号、及び処理物理サーバ識別子である。仮想ディスク削除部2303は、削除対象の仮想ディスクのあるディスクボリュームの使用領域リスト５０１から仮想ディスクに割り当てられた物理ブロック番号を順次取得し、削除管理テーブル１０７に格納する（S2510）。仮想ディスク削除部2303は、使用領域リスト５０１を更新する（S2515）。仮想ディスク削除部は、使用領域リスト５０１を更新する。使用領域リスト５０１の更新に関しては、実施例1と同様である。
【０１２５】
仮想ディスク削除部2303は、フリー領域に基づいて、ブロック数を求め（S2520）、求めたブロック数に対応した分割ファイルを削除管理テーブル１０７に登録する（S2525）。例えば、ディスクボリューム１１４の全体の容量に対する未使用物理ブロック数の割合に応じて、ブロック数を求める。ブロック数の求め方やブロック数（分割ファイル）の考え方は実施例1と同様である。仮想ディスク削除部2303は、削除管理テーブル１０７のステータス１００６を「実行中」に変更する（S2530）。
【０１２６】
仮想ディスク削除部2303は、物理ブロック番号をストレージ装置115の入出力単位であるセクター番号に変換する（S2535）。S2535は、仮想ディスク４０１の管理単位と、ストレージ装置115のセクターの大きさが異なっている場合に必要となる。例えばブロックの大きさが1024バイトで、セクターの大きさが512バイトであった場合は、１つのブロックに２つのセクターが含まれるため、１つのブロック番号から２つのセクター番号を算出し、消去削除の対象となるセクター番号を求める。
【０１２７】
仮想ディスク削除部2303は、ストレージ装置115に図24に示した形式でコマンドを発行する（S2540）。ディスクボリューム１１４の空き領域の割合によって優先度を変える。優先度の一例として、ディスクボリューム１１４の空き領域の割合が少ない場合の優先度を０とし、空き領域の割合が大きくなるにつれ優先度を表す数値を大きくする。この優先度は、数値が大きいほどストレージ装置115に負荷をかけずに所定のディスク領域の情報を消去することを意味する。優先度に応じた所定のディスク領域の情報消去の実行に関しては後述する。
【０１２８】
仮想ディスク削除部2303の以下のS2545〜S2565の各ステップは、実施例1（図17のS1660〜S1680）と同様であるので、説明を省略する。
【０１２９】
図２７は、ストレージ装置115内のコマンド管理部２５０１の処理フローを示す。コマンド管理部２５０１は、コマンドキューから先頭のコマンドを取り出す（S2700）。コマンドキューとは、ストレージ装置１１５が、外部から受け付けた未実行のコマンドが格納されているキューである。コマンド管理部２５０１は、取り出したコマンドに優先度が格納されたフィールドがあるかどうか判定し（S2705）、優先度フィールドがある場合は、優先度が０かどうかを判定する（S2710）。
【０１３０】
優先度フィールドがない場合、及び優先度の値が０の場合は、コマンドキューから取り出したコマンドの実行する（S2725）。優先度の値が０でない場合は、優先度の値を−１（マイナス1）し（S2715）、そのコマンドをコマンドキューの最後に移動する（S2720）。S2725の処理によって、仮想ディスク削除部2303から発行されたディスク消去のコマンドは、ディスク消去部2302に移され、実行される。ここでは、ディスク消去部2302の処理の詳細を省略するが、図24の形式で与えられたコマンドの実行は、単にセクター番号のセクターに所定の値を書き込むことにより、既に格納されていた情報を消去するものである。
【０１３１】
コマンド管理部２５０１の処理によって、優先度が付加されたディスク消去要求の処理を他のコマンドよりも低くし、ストレージ装置115の負荷を制御することができる。前述したように、ディスクボリュームの空き容量の割合が大きい場合は、優先度として大きな値を設定したコマンドが発行されるためである。
【０１３２】
本実施例では、コマンドキューを操作することでディスク消去処理の優先度を変更したが、コマンドキューの操作の際に、ストレージ装置115の負荷を考慮しても良い。例えば、ストレージ装置115の負荷が所定値より高い場合は、コマンドキューの最後に移動する際に優先度を減算しない、又はコマンドキューを見る頻度を少なくすることにより、ストレージ装置115の負荷を考慮したコマンドキュー操作が実現できる。
【符号の説明】
【０１３３】
１０１：管理サーバ、１０２：仮想化機構管理部、１０４：物理サーバ管理テーブル、１０５：仮想サーバ管理テーブル、１０６：ワークロード管理テーブル、１０７：削除管理テーブル、１０９：仮想サーバ、２０５：リソース管理部、２０６：リソース割当管理部、２０７：リソース開放管理部、２０８：仮想ディスク削除部、３０２：リソース開放部、３０３：リソース割当部、３０４：ディスク消去部、４０１：仮想ディスク、５０１：使用領域リスト、５０２：未使用領域リスト。
【図１】
0005458144.tif 000002
【図２】
0005458144.tif 000003
【図３】
0005458144.tif 000004
【図４】
0005458144.tif 000005
【図５】
0005458144.tif 000006
【図６】
0005458144.tif 000007
【図７】
0005458144.tif 000008
【図８】
0005458144.tif 000009
【図９】
0005458144.tif 000010
【図１０】
0005458144.tif 000011
【図１１】
0005458144.tif 000012
【図１２】
0005458144.tif 000013
【図１３】
0005458144.tif 000014
【図１４】
0005458144.tif 000015
【図１５】
0005458144.tif 000016
【図１６】
0005458144.tif 000017
【図１７】
0005458144.tif 000018
【図１８】
0005458144.tif 000019
【図１９】
0005458144.tif 000020
【図２０】
0005458144.tif 000021
【図２１】
0005458144.tif 000022
【図２２】
0005458144.tif 000023
【図２３】
0005458144.tif 000024
【図２４】
0005458144.tif 000025
【図２５】
0005458144.tif 000026
【図２６】
0005458144.tif 000027
【図２７】
0005458144.tif 000028
【図２８】
0005458144.tif 000029
【図２９】
0005458144.tif 000030