図1は、実施例1の全体図を示す。管理サーバ101は、仮想化機構管理部102、ワークロード管理部103、及び各種テーブル(104〜107)から構成される。管理サーバ101は、ネットワーク108を介して物理サーバ112に接続されている。物理サーバ112は、仮想化機構(仮想サーバの生成及び削除、並びに仮想サーバの実行制御するソフトウェア及び/又はハードウェアであり、仮想化機構と呼ぶが、仮想サーバ制御プログラム、仮想サーバモニターシステムと呼んでもよい。)110を搭載し、仮想化機構110は複数の仮想サーバ109を生成し、独立に実行させることができる。仮想化機構110は、リソース処理部111を有している。
物理サーバ112は複数のディスクボリューム114からなるストレージ装置113に接続している。ストレージ装置113は、サーバ内蔵型のディスク装置でも、ファイバーチャネル等のネットワークを介した外部装置(RAIDシステム等)でもよい。
物理サーバ112はハードウェアとしてのサーバ装置であり、用語を明確に使い分けるために物理サーバと呼ぶ。管理サーバ101も、一般にハードウェアとしてのサーバ装置であるが、ここでは実現する機能に着目して管理サーバと呼ぶ。
管理サーバ101は、ユーザまたは管理者(以下、ユーザ)から仮想サーバ109に割り当てているディスクボリューム114内の仮想ディスクの削除要求を受け取った後、他の仮想サーバに影響を与えない低負荷な状態で、仮想ディスク領域の情報を消去するために、負荷の低い仮想化機構を選択する。具体的には、後述するように仮想化機構を有する物理サーバの中から負荷の低い物理サーバを選択する。
仮想化機構管理部102は、リソースの割り当て及び開放、並びに負荷状況に応じて、仮想ディスクの情報の消去を制御する。ワークロード管理部103は、仮想化機構の負荷に応じて、仮想ディスクの情報の消去に対するCPUの割り当て量の調整や、ワークロードを監視する。
物理サーバ管理テーブル104は、CPUやディスク情報といった、物理サーバ112毎のリソースに関する情報を格納する。仮想サーバ管理テーブル105は、仮想サーバ109毎の割り当てリソース情報を格納する。ワークロード管理テーブル106は、管理サーバ101が管理している仮想化機構110毎のCPU割り当て量や使用率情報を格納する。削除管理テーブル107は、削除する仮想ディスクを分割した領域情報と、その分割領域の削除状況とを格納する。
仮想化機構110は、仮想ディスク領域の情報の消去を制御し、消去した領域から順次開放する。リソース処理部111は、仮想化機構管理部102からの要求に応じてリソースを処理する。
本実施例では、管理サーバ101が、ユーザからのリソース開放要求を受け取った後、最も負荷の低い仮想化機構で、他の仮想サーバに影響を与えない低負荷な状態で、仮想ディスク領域の情報を消去し、消去した領域から開放していく例を示す。
図2は、管理サーバ101の構成を示す。管理サーバ101は、メモリ201、プロセッサ202、ネットワークインターフェース203、ディスクインターフェース204などから構成される。メモリ201内には、仮想化機構管理部102、ワークロード管理部103、物理サーバ管理テーブル104、仮想サーバ管理テーブル105、ワークロード管理テーブル106、削除管理テーブル107が格納される。仮想化機構管理部102は、リソース管理部205、リソース割当管理部206、リソース開放管理部207、仮想ディスク削除部208を含み、これらを纏めた総称である。ワークロード管理部103は、ワークロード制御部210、ワークロード監視部211を含み、これらを纏めた総称である。
メモリ201に格納されたリソース管理部205、リソース割当管理部206、リソース開放管理部207、仮想ディスク削除部208、ワークロード制御部210、ワークロード監視部211などの各プログラムをプロセッサ202が実行することで、リソース管理、リソース割当管理、リソース開放管理、仮想ディスク削除、ワークロード制御、ワークロード監視の各処理が進められる。ネットワークインターフェース203は、ネットワーク108に接続され、物理サーバ112との間で各種情報が授受される。
リソース管理、リソース割当管理、リソース開放管理、仮想ディスク削除、ワークロード制御、ワークロード監視の各処理を、各プログラムをプロセッサ202で実行することにより実現するが、これらの処理を、集積回路化などにより、ハードウェア/ファームウェアで実現することもできる。
図3は、物理サーバ112の構成を示す。物理サーバ112は、メモリ305、プロセッサ306、ネットワークインターフェース307、ディスクインターフェース308などから構成される。ディスクインターフェース308は、ストレージ装置113又は専用のディスク装置に接続する。
メモリ305内には、仮想サーバ109、仮想化機構110が格納される。仮想化機構110上リソース処理部111がある。リソース処理部111のリソース開放部302、リソース割当部303、ディスク消去部304などの各種プログラムをプロセッサ306が実行する。
各仮想サーバ109には、OS301がそれぞれインストールされ、各仮想サーバ109は独立に動作することができる。仮想化機構110は、仮想サーバ109にメモリ305やプロセッサ306等のリソースを分割して割り当てる処理(仮想サーバの生成)や仮想サーバ109の実行スケジュールを制御する処理を実行する。
リソース開放部302は、仮想サーバ109の削除時に、この仮想サーバ109に割り当てられていたメモリ305、プロセッサ306、ディスクインターフェース308を介して接続されているストレージ装置113内のディスクボリューム114などのリソースを開放する。
リソース割当部303は、仮想サーバ109の生成時に、メモリ305、プロセッサ306、ディスクインターフェース308を介して接続されているストレージ装置113内のディスクボリューム114などのリソースを割り当てる。
ディスク消去部304は、仮想サーバ109の削除時に、この仮想サーバ109が使用していたディスクボリューム114内の情報を消去する。
なお、ディスク消去部304には、仮想サーバ109と同じように、プロセッサ306を割り当てることができる。すなわち、仮想サーバ109と同じようにワークロードを設定することができ、ディスク消去部304の処理量を調整することができる。
リソース処理、リソース開放、リソース割当、ディスク消去の各処理は、各プログラムをプロセッサ306で実行することにより実現するが、これらは、集積回路化などにより、ハードウェア/ファームウェアで実現することもできる。
図4は、仮想サーバ109に対するリソースの割り当て状況を示している。図4では、仮想化機構110が、仮想サーバ109(a)に対して、物理サーバ112内のメモリ305(a)及びプロセッサ306(a),並びにディスクボリューム114内に仮想ディスク401(a)として設けたディスク領域を割り当て、仮想サーバ109(b)に対して、物理サーバ112内のメモリ305(b)及びプロセッサ306(b),並びにディスクボリューム114内に仮想ディスク401(b)として設けたディスク領域を割り当てている状況を示している。ここで、メモリ305(a)及び305(b)の各々は、図3に示したメモリ305の異なる部分領域である。この部分領域は、仮想メモリ技術を用いると物理的には同じ領域になることもあるが、論理的には異なる領域(ページ)である。プロセッサ306(a)及び306(b)の各々は、同じプロセッサ306を所定の時間割合で使用するようにした部分使用状況を示す。仮想ディスク401(a)及び401(b)のそれぞれは、ディスクボリューム114内の異なる部分領域である。
以上のように、メモリ305の割り当てとは、仮想化機構110が管理している物理サーバ112が有するメモリ305の一部を、仮想サーバ109の専用領域として割り当てることである。プロセッサ306の割り当てとは、仮想サーバ109に対して所定の時間割合に応じてプロセッサ306を使用するようにスケジュールすることである。仮想ディスク401の割り当てとは、ディスクボリューム114の一部の領域を、仮想サーバ109の専用領域として割り当てることである。
仮想ディスク401は、ディスクボリューム114の部分領域であり、仮想サーバ109上で稼動するOS301からは一般的なディスクに見えるが、実際はディスクボリューム114内に設けられた一部の領域しか使用していない。
ディスクボリューム114内に、仮想ディスクを設ける方法はいくつかある。例えば仮想ディスク401をファイルとして管理する方法などがある。なお、仮想ディスク401の容量は、仮想サーバ109の生成時にユーザが自由に設定できる。複数のディスクボリューム114がある場合は、複数のディスクボリュームに114に渡って一つの仮想ディスク401を生成しても良い。
図5はディスクボリューム114の構成を示している。ディスクボリューム114は、仮想ディスク401として割り当てる領域503、使用領域リスト501、及び未使用領域リスト502から構成される。使用領域リスト501は、領域503内の仮想ディスク401の割り当て情報を格納する。未使用領域リスト502は、領域503内の空き領域(仮想ディスクとして割り当てられていない領域)に関する情報を格納する。
領域503は仮想ディスク401として割り当てる領域である。領域503は、例えば固定長のブロックに区切られ、ブロック単位で使用/未使用を管理される。こうすることにより、ディスクボリューム114の領域を仮想ディスク401に割り当てる際に、必要な容量のブロック数を割り当てればよく、連続領域を割り当てる必要がなくなる。その結果、ディスクボリューム114の領域を有効に使用することができる。
図6は、本実施例の処理の概要を示す。ユーザ601から仮想サーバ109の削除要求602が発行されると、管理サーバ101内のリソース開放管理部207は、仮想サーバ109が使用していたリソースの開放要求を仮想化機構110に発行する。仮想化機構110のリソース開放部302は、仮想サーバ109に割り当てられていたリソースを開放する。リソース開放の一環である仮想ディスク401を開放するために、管理サーバ101内の仮想ディスク削除部208に処理が移行する。仮想ディスク削除部208は、仮想化機構110の負荷の状態に応じてディスク領域を消去する仮想化機構を選択したり、一回の消去処理の対象ブロック数の選択したり、選択した仮想化機構110の負荷の状況に応じて、その物理サーバ112のCPU306の割り当て量(ワークロード)を変更する。
これにより、負荷が高いディスク領域の消去処理を他の仮想サーバ109の処理に影響を与えることなく実行できる。仮想ディスク削除部208は、仮想ディスク401を分割して、ディスク領域の消去処理を実行することでディスクボリューム114の開放を迅速に行うことができる。仮想化機構110のディスク消去部304が仮想ディスクの消去処理を実行する。
この際、ワークロード管理部103は、ディスク消去部304が実行される物理サーバ112のCPU306負荷の状況に応じて、ディスク消去部304のワークロードを変更し、他の仮想サーバの処理性能に影響を与えないようにする。ディスク消去部304によって、仮想ディスク401の領域の情報は消去され(603)、消去された領域は仮想ディスク削除部208によって未使用領域リスト502に登録される。未使用領域リスト502に登録された領域は、情報の消去が完了した領域であり、他の仮想サーバ109にその領域を再度割り当てたとしても、削除した仮想ディスク401の内容が読まれること無く、高いセキュリティを保つことができる。
図7は、物理サーバ管理テーブル104の構成を示す。カラム701は、物理サーバ識別子を示す。複数の物理サーバ110が存在する場合は、複数の物理サーバ識別子が格納される。カラム702には、CPU(プロセッサ)の性能仕様が格納される。たとえば、物理サーバ識別子がサーバ1の物理サーバ112は、動作クロック周波数2GHzのCPU2個が搭載されていることを示す。カラム703には、物理サーバ112のメモリ306の容量が格納される。
カラム704は、物理サーバ112に接続されているデバイスに関する情報が格納される。例えば、NIC(Network interface Card)であれば、種類や固有の識別子であるMACアドレス(Media Access Control Address)、HBA(Host Bus Adapter)であれば、WWN(World Wide Name)である。
カラム705は、物理サーバ112に接続するディスクに関する情報が格納される。ストレージ装置113内のディスクボリューム114のボリューム識別子や容量が格納される。ここに格納されたディスクボリューム114は、他の物理サーバ112からそれぞれ共有されていても良い。その場合は、ディスクボリューム114を共有する各物理サーバ112に対して、同じボリューム識別子が格納される。
図8は、仮想サーバ管理テーブル105の構成を示す。カラム801には、仮想化機構識別子が格納される。通常、1つの物理サーバ112には一つの仮想化機構110が含まれるが、1つの物理サーバ112が複数の仮想化機構110を含んだシステムも実現できる。カラム802には、仮想化機構110が稼動している物理サーバ識別子が格納される。
カラム803には、仮想サーバ識別子が格納される。仮想サーバ識別子は、複数の仮想化機構110に渡ってユニークな値(符号)である必要はないが、一つの仮想化機構110内ではユニークな値(符号)である。仮想サーバ識別子803に登録される仮想サーバ109の数は、仮想化機構110による仮想サーバ109の生成及び削除に伴って増減する。
カラム804には、それぞれの仮想サーバ109に割り当てられたリソースが格納される。例えば、CPUの割り当て状態、メモリ容量、NICの情報、仮想ディスク識別子などである。カラム805は、各仮想サーバ109のステータスを示している。ステータスは、稼動中や非稼動(生成されているが、現時点は稼動していない。)などの情報である。このステータス情報により、稼動している仮想サーバ109を把握でき、物理サーバ112の負荷を得やすくなる。
図9は、ワークロード管理テーブル106の構成を示す。カラム901には、仮想化機構識別子が格納される。カラム902には、稼動物理サーバ識別子が格納される。稼動物理サーバ識別子は、カラム901で示した仮想化機構識別子の仮想化機構110が稼動している物理サーバ112の識別子である。一つの物理サーバ112上で複数の仮想化機構110が稼動している場合は、その複数の仮想化機構識別子901に対応して同じ稼動物理サーバ識別子902が格納される。
カラム903には、仮想サーバ識別子が格納される。仮想化機構識別子901で示される仮想化機構110によって生成され、ワークロード制御の対象の仮想サーバ109の識別子が格納される。本実施例では、仮想ディスクに格納されている情報の消去のためのディスク消去部304の処理も、ワークロード制御の対象にするために、ワークロード管理テーブル106に登録される。ディスク消去処理は、仮想サーバ109の削除指示に対応した仮想ディスク401の削除要求に応じてワークロード管理テーブル106に登録され、仮想ディスク401内の情報の消去完了に応じてワークロード管理テーブル106から削除される。
カラム904には、CPU割り当て量が格納される。CPU割り当て量は、仮想サーバ109に対して割り当てるCPUの量(時間割合の量であり、性能割合の量を表す。)である。CPU割り当て量が大きいほど仮想サーバ109の処理性能は高い。
なお、CPU割り当て量及びその単位はユーザが任意に指定できる。例えば、仮想化機構110毎に全体を100%として、仮想サーバ109毎に割り当て率として値を格納しても良い。仮想化機構110が有する性能の全てを仮想サーバ109に割り当てる必要はない。仮想サーバ109の急な負荷増大に備えて、未使用のCPUを残しておいても良い。
カラム905は、物理CPU使用率が格納される。物理CPU使用率は、物理サーバ識別子902が有するCPU306の全処理量を100%とした時の使用率であり、後述するワークロード監視部211によって収集され、格納される。
なお、物理CPU使用率は、仮想化機構110が各仮想サーバ109のCPU利用率をスケジューリングした時間から算出しても良いし、仮想サーバ109上で仮想サーバ109自身の使用率を収集し、これにCPU割り当て量904を乗算しても良い。物理CPU使用率905によって、稼動物理サーバ識別子902が示す物理サーバ112の負荷を知ることができる。
図10は、削除管理テーブル107の構成を示している。削除管理テーブル107は、仮想ディスク401の情報の消去処理に用いられるテーブルであり、情報の消去処理を実行中の仮想ディスク401や、仮想ディスク401を部分開放するための情報が格納される。カラム1001には、仮想ディスク識別子が格納される。カラム1002には、仮想ディスク識別子1001で示される仮想ディスク401が含まれるディスクボリューム114の識別子が格納される。1つのディスクボリューム114には、複数の仮想ディスク401が含まれていても構わない。
カラム1003には、論理ブロック番号が格納される。論理ブロック番号1003は、物理ブロック番号1004に対応して設けら、ユーザからは連続領域に見えるように番号が付してある。物理ブロック番号に関しては後に説明する。カラム1005には、分割ファイル名が格納される。ここで、分割ファイルとは、一つ以上の論理ブロック番号1003で示されるブロックに対応付けられるファイル名である。仮想ディスク401のファイル名としての仮想ディスク識別子1001に対して、仮想ディスク401をいくつかに分割した各々の領域(分割ファイル)を示すのが分割ファイル名1005である。
本実施例は、新たな仮想サーバ109の生成に応じて必要な容量の仮想ディスク401を割り当てられるようにするために、仮想ディスク401単位の開放ではなく、分割ファイル単位の開放を実現する。分割ファイル単位で、格納している情報の消去処理を実行し、消去処理が完了したならば、その分割ファイルを開放することにより、ディスクボリューム114の空き容量(未使用領域)を大きくし、新たな仮想サーバ109への仮想ディスク401の割り当てに、より高い自由度を持たせることができる。仮想ディスク401の領域を仮想ディスク401単位で開放すると、仮想ディスク401の容量が大きい場合、そこに格納されている情報の消去に長時間を要し、新たな仮想サーバ109に対して仮想ディスク401の領域を割り当てることができない状況(割り当ての自由度が低い状況)が発生するからである。
カラム1006には、分割ファイルのステータスが格納される。ステータスは、分割ファイルの情報の「消去完了」、消去処理を「実行中」、消去は「未処理」などの状態を示す。なお、「未処理」は、後の説明から分かるように、「未処理」が格納されるのではなく、空欄になっている。カラム1007には、仮想ディスク401の情報の消去処理を実行する物理サーバの識別子が格納される。これは、仮想ディスク401の情報の消去処理のCPU負荷が高いことから、消去処理がシステム全体の性能に与える影響が低くなるように処理を分散するため、また負荷が低い物理サーバ112で消去処理が実行できるように制御するために用いられる。なお、1台の物理サーバ112で複数の仮想化機構110を稼動させる場合は、カラム1007に仮想化機構識別子を格納するようにすれば良い。
以上の物理サーバ管理テーブル104、仮想サーバ管理テーブル105、ワークロード管理テーブル106及び削除管理テーブル107は、管理サーバ101にあるものとして説明したが、個々の物理サーバ112又は仮想化機構110固有の情報は、個々の物理サーバ112又は仮想化機構110内にテーブルを設けて格納しておくことが望ましい。各情報を管理サーバ101と個々の物理サーバ112又は仮想化機構110との双方に保持するか、それらの一方に保持するかは、管理サーバ101と個々の物理サーバ112との間の転送データ量やその転送頻度を考慮して実装上決定される。
図11は、使用領域リスト501の構成を示す。カラム1101には、仮想ディスク識別子が格納される。カラム1102及びカラム1103には、それぞれ論理ブロック番号、物理ブロック番号が格納される。仮想サーバ109上で稼動するOS301からは、仮想ディスク401が論理ブロック番号で表される値の順に連続領域に見える。論理ブロック番号1102に対応する領域が物理ブロック番号1103に示される。
このように、仮想サーバ109上のOS301から見える論理的に連続した領域と、物理ブロック番号で表される領域とマッピングすることにより、ディスクボリューム114の不連続な領域に対応する物理ブロックを論理ブロックに対応つけることができ、ディスクボリューム114の領域を有効に使用することができる。つまり、OS301から見える連続領域が、実際には物理ブロックが不連続であっても構わないため、ディスクボリューム114の空き領域を有効に使用することができるようになる。なお、使用領域リスト501は、ディスクボリューム114内に生成された仮想ディスク401毎の論理ブロック番号1102と物理ブロック番号1103の対応付けの情報を有する。
図12は、未使用領域リスト502の構成を示す。未使用領域リスト502は、ディスクボリューム114において、仮想ディスク401として割り当てていない未使用領域の物理ブロック番号1201が格納される。新たに仮想ディスク401を割り当てる際は、未使用領域リスト502に示される物理ブロック番号1201から必要な量が確保され、使用領域リスト501に登録される。
使用領域リスト501から、仮想ディスク401が削除された場合は、削除された仮想ディスクに割り当てられていた領域が、未使用領域リスト502に追加される。
なお、ストレージ装置113から仮想化機構110にディスクボリューム114として提供された領域のすべてを表す物理ブロック番号が、使用領域リスト501及び未使用領域リスト502のいずれかに存在するわけではない。使用領域リスト501及び未使用領域リスト502のいずれかに存在する物理ブロック番号に対応する領域は、仮想ディスク401として仮想サーバ109に割り当て可能な領域である。ディスクボリューム114を表す物理ブロック番号で、使用領域リスト501及び未使用領域リスト502のいずれにも存在しない物理ブロック番号の領域は、仮想化機構110自身が使用するか、仮想化機構110の管理の下で仮想ディスク以外の用途に使用される。
実施例1における物理ブロック番号は、ディスク装置の物理的なブロック(ディスクの物理アドレスで表されるブロック)を示す必要はなく、仮想化機構110から見えるディスクボリュームの領域を表すブロックを示していれば良い。したがって、1台の物理サーバ112上に複数の仮想化機構110が含まれる場合、一般に仮想化機構110で認識するブロックと物理サーバ112で認識するブロックとの間で、一般に、さらにマッピングが必要となる。
仮想化機構110又は物理サーバ112で認識するブロック(アドレス)は、ストレージ装置113から提供されるブロック(アドレス)である。仮想化機構110又は物理サーバ112にストレージ装置113から提供されるディスクボリューム114の領域を示すブロックの番号は連続し、ディスクボリューム114は連続領域のように仮想化機構110又は物理サーバ112から見えるが、ストレージ装置内で仮想化が図られ、必ずしも物理的にはディスク上の連続領域が対応するものではない。以上のように、本実施例では物理ブロック番号を用語として用いるが、必ずしも物理的にはディスク上の領域を表すものではない。
以下、管理サーバ101及び物理サーバ112の各部の処理を各々のフローチャートに沿って説明する。以下の説明では、フローチャートの各処理ステップを、たとえばステップ1301をS1301と表記する。
図13は、リソース管理部205によるリソース制御フローを示す。本リソース制御は、ユーザからのリソース割り当て要求やりソース開放要求を振り分ける処理である。
リソースの割り当て要求とは、仮想サーバ109の生成要求である。ユーザは、仮想サーバ109の生成要求を、仮想サーバを生成する物理サーバ識別子701または仮想化機構識別子801、生成する仮想サーバ109に対するCPU割り当て量、メモリ容量、仮想ディスク401の容量、必要に応じてI/Oデバイスの種類や数などをパラメータとして発行する。
リソースの開放要求とは、仮想サーバ109の削除の要求である。開放要求は、仮想サーバ109にはCPU、メモリ、仮想ディスク401などが割り当てられているが、これらの割り当てられているリソースを開放するための要求である。開放要求は、削除したい仮想サーバ識別子(803)をパラメータとして発行される。
リソース管理部205はユーザからのリソース要求を受け付ける(S1300)。ユーザからの要求が割り当て要求かどうかが判断される(S1305)。割り当て要求は、仮想サーバを新規に生成する場合や、既存の仮想サーバにリソースを追加で割り当てる場合に発行される。ユーザからの要求が割り当て要求の場合は、リソース管理部205はリソース割り当て管理部206に制御を移し(S1310)、リソース割り当て管理部206からの応答を待つ。
リソース管理部205は、リソース割り当て管理部206からの応答を確認し(S1315)、割り当て要求に対する処理結果をユーザに報告する(S1320)。仮想サーバが新規に生成された場合は、仮想サーバ管理テーブル105に仮想サーバ識別子803と、割り当てられたリソース(804)が追加される。既存の仮想サーバにリソースを追加で割り当てる場合は、仮想サーバ管理テーブル105に指定された既存の仮想サーバに対応して割り当てられたリソース(804)が追加される。
割り当て要求でない場合は、リソース管理部205はユーザからの要求が開放要求かどうかを判断する(S1325)。開放要求は、仮想サーバを削除する場合や仮想サーバから特定のリソースを削除する場合に、発行される。開放要求の場合は、リソース開放管理部207に制御を移し(S1330)、リソース開放管理部207からの応答を待つ。
リソース管理部205は、リソース開放管理部207からの応答を確認し(S1335)、割り当て要求に対する処理結果をユーザに報告する(S1340)。
図14は、リソース割当管理部206の処理フローを示す。この処理は、仮想サーバを新規に生成する場合や、既存の仮想サーバにリソースを追加で割り当てる場合にリソース管理部205から呼び出され、実行される。
リソース割当管理部206は、新規に仮想サーバを生成する場合はその仮想サーバを生成する仮想化機構110の、既存の仮想サーバにリソースを追加割り当てする場合は既存の仮想サーバがある仮想化機構110の、リソース割当部303に、CPU、メモリ、I/Oデバイスの割り当てを要求する(S1400)。この要求のパラメータは、仮想サーバの新規生成の場合とリソースの追加割り当ての場合によって異なるが、仮想サーバ109に対するCPU割り当て量、メモリ容量、必要に応じてI/Oデバイスの種類や数などがある。
リソース割当管理部206はリソース割当部303からの応答を確認する(S1405)。リソース割当管理部206は、リソース管理部205から指定された仮想ディスクを生成するために、物理サーバ管理テーブル104及び仮想サーバ管理テーブル105を参照し、仮想サーバを生成する又はリソース追加する仮想サーバが稼動する仮想化機構110が利用可能なディスクボリューム114を特定する(S1410)。リソース割当管理部206は、リソース管理部205から指定された仮想ディスクの容量のディスク領域を、特定したディスクボリューム114の未使用領域リスト502から確保し、確保した領域を未使用領域リスト502から削除する(S1415)。確保する領域は、可能な限り仮想ディスクサイズに近い、連続した空き領域が望ましい。
確保した領域は、使用領域リスト501に登録される(S1420)。確保された領域の未使用領域502からの削除及び使用領域リスト501への登録により、この確保された領域は要求された仮想サーバが使用する仮想ディスクとなり、他の仮想サーバからはアクセスできない。
リソース割当管理部206は、S1405で応答を確認したリソース割当部303によるリソース割り当て結果及び仮想ディスクの生成結果を、仮想サーバ管理テーブル105、物理サーバ管理テーブル104、及びワークロード管理テーブル106にリソース割り当て情報として登録する(S1425)。リソース割当管理部206は、リソース割り当て結果を、対象とした仮想サーバ109が稼動する仮想化機構110に通知する(S1430)。仮想化機構110は、この通知に応答して、仮想サーバ109を稼動させる。仮想サーバ109の起動に関しては、詳細を省略する。リソース割当管理部206は、リソース割り当て結果を応答として、リソース管理部205に報告する(S1435)。
図15は、リソース開放管理部207の処理フローを示す。この処理は、仮想サーバを削除する場合や、仮想サーバから特定のリソースを開放する場合にリソース管理部205から呼び出され、実行される。
リソース開放管理部207は、リソース管理部205により指定された仮想サーバ109へ割り当てられているリソースを、仮想サーバ管理テーブル105を参照し、把握する(S1500)。
リソース開放管理部207は、把握した割り当てリソース(CPU・メモリ・I/Oデバイス等)の開放を、指定された仮想サーバ109が稼動していた仮想化機構110のリソース開放部302に要求する(S1505)。この要求のパラメータは、リソースを開放する仮想サーバ識別子803である。仮想サーバ識別子803がわかれば、仮想サーバに割り当てられているリソース(CPU割り当て量、メモリ容量、必要に応じてI/Oデバイスの種類や数)は、仮想サーバ管理テーブル105を参照することで把握することができる。しかし、説明を省略したが、図14のS1430で通知されたリソース割り当て結果が仮想化機構110に保存されているので、この保存されている情報をリソース開放部302は用いればよい。リソース開放管理部207は、リソース開放部302から通知された応答を確認する(S1510)。
S1500で把握した仮想ディスク401を削除するために、仮想ディスク削除部208に制御を移す(S1515)。仮想ディスク削除部208からの応答確認する(S1520)。この応答には、指定した仮想ディスク401に格納されていた情報を消去したこと、及び仮想ディスク401として使用していた領域を使用領域リスト501から削除し、未使用領域リストに加えたことを含む。
リソース開放管理部207は、仮想サーバ管理テーブル105及びワークロード管理テーブル106から、削除した仮想サーバの情報を削除する(S1525)。リソース開放管理部207は、仮想サーバを削除する場合はその仮想サーバの削除及びその仮想サーバが使用していたリソースの開放を、仮想サーバから特定のリソースを開放する場合はそのリソースの開放を、リソース管理部205に応答として通知する。
図16及び図17は、仮想ディスク削除部208の処理フローを示す。仮想ディスク削除部208は、ワークロード管理テーブル106からCPU使用率の合計が最も小さい仮想化機構110を選択する(S1600)。CPU使用率の合計が最も小さい仮想化機構110とは、例えば、ワークロード管理テーブル106の、仮想サーバ109のCPU割当量904と物理CPU使用率とを掛け合わせて算出することができる。
例えば、図9のワークロード管理テーブル106を参照すると次のようになる。仮想化機構1上で、仮想化サーバ1(CPU割当量20、物理CPU使用率10%)及び仮想化サーバ2(CPU割当量30、物理CPU使用率20%)が稼動中であり、仮想化機構1のCPU使用率は20×0.1+30×0.2=8%である。仮想化機構2上では仮想化サーバ3(CPU割当量30、物理CPU使用率20%)が稼動中であり、仮想化機構2のCPU使用率は30×0.2=6%である。仮想化機構3上では仮想サーバ4(CPU割当量50、物理CPU使用率40%)及び仮想サーバ5(CPU割当量30、物理CPU使用率20%)が稼働中であり、仮想化機構3のCPU使用率は50×0.4+30×0.2=26%である。仮想ディスク削除部208は、これらのCPU使用率を比較し、CPU使用率が最も小さい仮想化機構2を、仮想ディスクを削除する仮想化機構として選択する。
他の方法として、仮想化機構110が各仮想サーバ109へのCPU使用をスケジューリングした時間を、仮想ディスク削除部208が各仮想化機構110から取得して算出することも可能である。また、各仮想サーバ109を含めて各仮想化機構110のCPU使用率を実測して、この実測値を利用する方法もある。
これにより、最も負荷の低い仮想化機構110で、仮想ディスク401の情報を消去できるので、複数の物理サーバ112に渡って負荷を分散でき、システム全体の負荷のバランスを保つことができる。仮想ディスク削除部208は、ワークロード管理テーブル106の選択した仮想化機構の仮想サーバ識別子欄に「ディスク消去処理」と登録することで(S1605)、ディスク消去処理のためにワークロードを割り当てることができる。
仮想ディスク削除部208は、仮想サーバ管理テーブル105から、ディスク消去処理の対象の仮想ディスク識別子を取得する(S1610)。仮想ディスク削除部208は、ディスク消去処理の対象の仮想ディスクに関する情報を削除管理テーブル107に格納する(S1615)。仮想ディスク削除部208が削除管理テーブル107に格納するのは、取得した仮想ディスク識別子、この仮想ディスク識別子に基づいて物理サーバ管理テーブル104及び仮想サーバ管理テーブル105から得た接続ディスクのディスクボリューム識別子、このディスクボリューム識別子で示されるディスクボリュームの使用リスト501を参照して得られるこの仮想ディスク識別子で示される仮想ディスクの論理ブロック番号、及び処理物理サーバ識別子である。
たとえば、図10に示すように、仮想ディスク1を削除対象とし、そこに格納されている情報を消去する場合である。図8の仮想サーバ管理テーブル105を参照すると、仮想ディスク1は、(物理)サーバ1上の仮想化機構1に制御されている仮想サーバ1によって使用されていることが分かる。図7の物理サーバ管理テーブル104を参照すると、(物理)サーバ1の接続ディスクはディスクボリューム1である。仮想ディスクの論理ブロック番号は、ディスクボリューム1の使用リスト501から得られる。
しかし、図10に示す仮想ディスク2を削除対象とする場合は、ディスクボリューム1はサーバ1に接続されている。仮想ディスク2の削除を実行するために仮想化機構2が選択されたとすると、物理サーバは仮想化機構2を稼動させているサーバ2であり、物理サーバ管理テーブル104を参照すると、サーバ2にはディスクボリューム1が接続されていないことが分かる。このように物理サーバが認識(接続)していないディスクボリュームの仮想ディスクを削除する場合については後述する。ただし、処理物理サーバ識別子(図10の1007)には、選択された仮想化機構2を稼動させているサーバ2を格納する。
なお、この時点では、物理ブロック番号1003と分割ファイル名1005、ステータス1006欄は空白である。
次に仮想ディスク削除部208は、削除対象の仮想ディスクのあるディスクボリュームの使用領域リスト501から仮想ディスクに割り当てられた物理ブロック番号を順次取得し、削除管理テーブル107に格納する(S1620)。仮想ディスク削除部208は、使用領域リスト501を更新する(S1625)。具体的には、使用領域リスト501から削除対象の仮想ディスクの仮想ディスク識別子1006を削除し、論理ブロック番号1102と物理ブロック番号1103は残す。これは、使用領域リスト501から、情報の消去を完了した領域を、仮想ディスク単位ではなく、分割領域単位で、除外できるようにするためである。
仮想ディスク削除部208は、S1600で求めたCPU使用率を再度求め(時間経過と共に変わる可能性があるためである。)、そのCPU使用率とフリー領域(未使用物理ブロックの割合)に基づいて、情報を消去するブロック数を求める(S1630)。例えば、図28に示すCPU使用率と、未使用領域リスト502に登録されている未使用物理ブロック数とからなる、ブロック数マトリクスなどに基づいて、ブロック数を求める。図28に示すブロック数マトリクスの一つの軸はCPU使用率であり、例えばCPU使用率が20%以下のときにブロック数10とし、CPU使用率が20%多くなるに従って、消去するブロック数を1つ減少させる。他の一つの軸は、ディスクボリューム114の全体の容量に対する未使用物理ブロック数の割合に応じて、割合が20%以下のときにブロック数を10として割合が20%増加するに従って、消去するブロック数を1つ少なくする。この2つの軸のマトリクスによって得られるブロック数を消去するブロック数として選択する。
図28に示すブロック数マトリクスに関する考え方は次のとおりである。消去するブロック数は、CPU使用率が低い、又は未使用物理ブロック数(又は、その割合)が少ないほど多い。消去するブロック数が多くても、CPU使用率が低いのでシステム全体に与える負荷の影響が少なく、未使用物理ブロック数を増加させることができ、仮想ディスク割り当てに自由度を持たせることができる。一方、未使用物理ブロック数が多く仮想ディスク割り当てに自由度ある場合であり、CPU使用率が高い場合は、システム全体に与える負荷の影響を抑制するために、消去するブロック数を少なくする。このように、システム全体としての負荷と、ディスクボリューム114領域の可用性という2つの観点のバランスを考慮した、仮想ディスクの削除及びその仮想ディスクの情報の消去を実現することができる。図28では、ブロック数の最大を10としたが、ディスクボリューム114の容量や物理サーバ112毎CPUの処理性能に応じて変えても良い。CPU性能が高い場合はブロック数の最大値を少なくし、ディスクボリューム114の容量が大きい場合はブロック数の最大値を大きくするなど、CPU使用率などの割合ではなく、性能や容量の絶対値に着目して、ブロック数マトリクスを設けてもよい。
仮想ディスク削除部208は、削除管理テーブル107の分割ファイル名欄1105に、S1630で求めた物理ブロック数に対応して分割ファイルを登録する(S1635)。仮想ディスク削除部208は、ワークロード制御部210に処理を移す(S1640)。ワークロード制御部210は、後で詳細を説明するが、ワークロード管理テーブル106を使って、現状の負荷に応じてディスク消去処理のワークロードを動的に調整する。ワークロード制御部210からのCPU割当量を確認する(S1645)。このCPU割当量は、ワークロード制御部210から、仮想ディスクの消去のために選択された仮想化機構110にも通知されるので、後のディスク消去処理は、仮想化機構110によって、このCPU割当量に制御される。
仮想ディスク削除部208は、削除管理テーブル107の、S1635で登録した分割ファイル名に対応したステータス1006を「実行中」に変更し(S1650)、選択した仮想化機構110のディスク消去部304に処理を移す(S1655)。ディスク消去部304に処理を移す際に、仮想ディスク削除部208は、仮想ディスクの情報の消去対象である分割ファイルの物理ブロック番号と仮想ディスクが割り当てられているディスクボリューム識別子(必要に応じて、ディスクボリューム114のアドレスを示す情報)をパラメータとしてディスク消去部304に渡す。
仮想ディスク削除部208は、ディスク消去部304の処理の完了を確認し(S1660)、消去処理が完了した分割ファイルの物理ブロック番号を、ディスクボリューム114の未使用領域リスト502に格納し、使用領域リスト501から削除する(S1665)。仮想ディスク削除部208は、削除管理テーブル107の、消去した分割ファイルのステータス1006を、"消去完"に変更する(S1670)。
仮想ディスク削除部208は、消去すべき仮想ディスク領域をすべて消去したか否かを判定し(S1675)、すべて消去していない場合は、S1630に戻り、仮想ディスク領域をすべて削除するまで、分割ファイルの登録、及びその内容の消去の処理を繰り返す。
消去すべき仮想ディスク領域をすべて消去した場合は、消去完了をリソース開放管理部207に通知する。
なお本実施例では、仮想ディスク消去部203は、仮想化機構110内に設けたが、他の方法として、仮想ディスクの情報の消去のための仮想サーバ109を生成し、これを用いて消去することもできる。これらの方法は、システムの構造や制御の複雑さ、処理のオーバーヘッドの大きさなどを基に適宜選択される。
また、本実施例において、仮想ディスク領域に格納されている情報の消去時間を調整する目的で、分割ファイル登録によるブロック数の調整と分割ファイル単位の情報の消去のためのワークロードの調整とを実施しているが、双方を実施しなくても、仮想ディスク単位での情報の消去という主たる課題は解決でき、いずれか一方を実施することにより、情報消去の際の他の仮想サーバの性能劣化の削減という従たる課題は解決できる。
仮想ディスク完全削除部208は、複数の仮想ディスク401の削除及び情報の消去を同時に行うために、同時に複数の仮想ディスク完全削除部208を設けることや仮想ディスク完全削除部208をリエントラント可能なプログラム構成にすることは、当業者であれば、本実施例から容易に推考できるであろう。
本実施例では、S1630のブロック数を求める処理を分割ファイル単位で繰り返すようにしているので、未使用物理ブロック数の割合やCPU使用率などの動的な変化にも対応できる。
図18は、ワークロード制御部210の処理フローを示す。ここでは、仮想ディスの情報の消去処理304に関わるワークロードを設定する処理として説明する。図9に示したワークロード管理テーブル106に記載のように、ワークロードは仮想サーバ109にも設定される。仮想サーバ109へのワークロードは、仮想サーバ上で実行されるアプリケーションプログラムの応答時間などの要求性能に基づいて設定される。したがって、消去処理304に関わるワークロードの設定に際して、仮想サーバ109に設定されたワークロードは、与えられた条件として扱うことができる。この与えられた条件は動的に変化するが、前述のように、本実施例ではその動的な変化に対応できるようにしている。
ワークロード制御部210は、CPU使用率に基づいて、CPU割当量、すなわちワークロードを決定する(S1800)。ワークロード制御部210は、既に仮想サーバに割り当てられているワークロード、及び仮想化機構110の負荷を考慮し、物理サーバ112の処理性能を超えない範囲でCPU割当量を決定する。負荷の低い仮想化機構110が選択されているのであるから、一般に、消去処理304へのワークロード設定には余裕がある。
ここでは、S1600で用いたCPU使用率と、フリー領域(未使用領域)の割合(未使用物理ブロック数のボリューム全体のブロック数に対する割合)から、CPU割当量を求める方法を説明する。図29は、そのためのCPU割当量マトリクスの例を示す。CPU割当量マトリクスの一つの軸はCPU使用率であり、例えばCPU使用率が20%以下のときのCPU割当量を10とし、CPU使用率が20%多くなるに従ってCPU割当量を1減少させる。他の一つの軸は、ディスクボリューム114の全体の容量に対する未使用物理ブロックの容量の割合に応じて、割合が20%以下のときのCPU割当量を10として割合が20%増加するに従ってCPU割当量を1減少させる。このマトリクスによって得られるCPU割当量を選択する。
なお、CPU割当量は、CPU使用率が低い、または未使用物理ブロック数が少ないほど多くなる。CPU割当量が多いと、仮想ディスクの情報の消去時間が短くなる。CPU割当量が少ないと、仮想ディスクの情報の消去時間が長くなり、システムに与える負荷を少なくできる。したがって、CPU利用率が低い場合はシステムに与える負荷が軽いためCPU割当量を大きくし、短時間で空き領域を確保することができる。一方、ディスクボリューム114の空き領域が少ないと、新規に仮想サーバを生成することができない場合が発生するので、これを回避するためにCPU割当量を大きくし、短時間で未使用領域を確保する。
このようにCPU割当量を調整することにより、システム全体としての負荷と、ディスクボリューム114領域の可用性という2つの観点のバランスを考慮した、仮想ディスクの削除及びその仮想ディスクの情報の消去を実現することができる。
なお、図29では、CPU割当量の最大を10としたが、ディスクボリューム114の容量や物理サーバ112毎CPUの処理性能に応じて変えても良い。CPU性能が高い場合はCPU割当量の最大値を少なくし、ディスクボリューム114の容量が大きい場合はCPU割当量の最大値を大きくするなど、CPU使用率などの割合ではなく、性能や容量の絶対値に着目して、CPU割当量マトリクスを設けてもよい。
物理サーバ112毎にCPU割当量マトリクスを設け、システム全体として複数のCPU割当量マトリクスを保持しても良い。CPU割当量をCPU割当量マトリクス(図29)から求め、状態によってCPU割当量を変えても良い。例えば、ワークロード管理テーブル106の仮想サーバ識別子901又は物理サーバ識別子902毎に物理CPU使用率の空きを求め、CPU割当量マトリクスから求めた値が物理CPU使用率の空きを超えていた場合は、物理CPU使用率の空きをディスクの消去処理に割り当てるCPU割当量としても良い。
ワークロード制御部210は、決定したCPU割当量を、ワークロード管理テーブル106のディスク消去に対応させてCPU割当量904に格納し(S1805)、該当する仮想化機構110に決定したCPU割当量の割り当てを要求する(S1810)。さらに、ワークロード制御部210の呼び出し元である仮想ディスク削除部208に決定したCPU割当量を通知する。
図19は、ワークロード監視部211の処理フローを示す。ワークロード監視部211は、各仮想化機構110のリソース情報を取得し、ワークロード管理テーブル106に格納する(S1900)。ワークロード監視部211は、一般には、各物理サーバ及び各仮想化機構の負荷や障害発生状況等を監視するが、本実施例では少なくとも各物理サーバの物理CPU使用率を監視し、ワークロードテーブル106に監視結果を格納する。物理CPU使用率は前述のように、仮想ディスクの情報の消去処理へのCPU割り当て及び消去処理のための分割ファイルの設定などに用いられる。ワークロード監視部211は、S1900の処理を所定時間毎に繰り返すために、その所定時間の経過を待つ(S1905)。所定時間の経過を待つために、ここでは、その都度所定時間間隔を変えることができるWAITタイマを用いる処理フローを示しているが、所定時間間隔の周期タイマによって起動されても良い。物理CPU使用率の変動が激しい場合は、所定時間間隔を短くすることによって、精度よく状態を監視できる。
図20は、リソース開放部302の処理フローを示す。リソース開放部302は、リソース開放管理部207から要求のあったリソースを開放する。リソース開放部302は、リソース開放管理部207から要求に応じて、CPUを開放し(2000)、メモリを開放し(S2005)、I/Oデバイスを開放する(S2010)。図20の処理フローは簡略化してあるが、たとえばメモリの開放に当たっては、メモリ開放の要否の指定、及び要の場合はメモリアドレスの指定を受けて開放する。最後に、要求に応じてリソースの開放が完了したことをリソース開放管理部207へ通知する(S2015)。
図21は、リソース割当部303の処理フローを示す。リソース割当部303は、リソース割当管理部206から要求のあったリソースを、リソース割当管理部206から指定された仮想サーバに割り当てる。リソース割当部303は、リソース割当管理部206から要求のあった、CPUを割り当て(S2100)、メモリを割り当て(S2105)、I/Oデバイスを割り当てる(S2110)。図21の処理フローも簡略化してあるが、たとえばメモリの割り当てに当たっては、メモリ割り当ての要否の指定、及び要の場合はメモリ容量の指定を受けて割り当てる。最後に、要求に応じてリソースの割り当てが完了したことをリソース割り当て管理部206へ通知する。この通知に際して、たとえばメモリ割り当てに関しては、割り当てたメモリアドレスを含めて通知する(S2115)。
図22は、ディスク消去部304の処理フローを示す。ディスク消去部304は、仮想ディスク削除部208から要求のあった領域に格納さえている情報を消去する。領域の情報(プログラム又はデータ)の消去は、乱数を発生させて、発生したランダムな値、ビット0、ビット1、又はNullデータを指定された領域に複数回書き込むことである。どのようなデータを書き込むかは、一義的に決めても良いし、その領域を使用していたアプリケーションでは生じにくいデータを選択しても良い。また、書き込みのエラーに対処するために、同じ領域に複数回書き込む。書き込み回数を増やせば増やすほど、ディスク消去部304の負荷がシステム全体に影響するので、情報の消去に伴うワークロード調整の必要性を既に説明した。
ディスク消去部304は、仮想ディスク削除部208から、仮想ディスクの情報の消去対象である分割ファイルの物理ブロック番号と仮想ディスクが割り当てられているディスクボリューム識別子(必要に応じて、ディスクボリューム114のアドレスを示す情報)をパラメータとして渡される。渡されたディスクボリューム識別子からディスク消去部304がそのディスクボリュームを認識できるか否かをチェックし(S2200)、認識できないならば、そのディスクボリュームを認識できるようにするためにマウントする(S2205)。ディスク消去部304は、物理サーバ112に搭載された仮想化機構110上で実行される。したがって、このチェックのための情報は、物理サーバ管理テーブル104に集約されているが、たとえば、サーバ1という物理サーバ112が認識できるのはディスクボリューム1であることは、物理サーバ112自身がサーバ1固有の情報として保持している。
ディスク消去部304は、仮想ディスク削除部208から要求のあった分割ファイルの情報を消去する(S2210)。分割ファイルは、上述のように、ディスクボリュームのブロック番号で与えられるので、ブロック番号で指定された領域ごとに格納されている情報を消去する。分割ファイルの情報の消去が完了したならば、ディスクボリュームのアンマウントの必要性をチェックし(S2215)、必要ならばアンマウントする(S2220)。アンマウントの必要性は、S2200でマウント要と判断した場合はアンマウントも要であり、マウント不要と判断した場合はアンマウントも不要である。このように、ディスク消去部304の処理を実行する物理サーバ112及び仮想化機構110が認識できないディスクボリュームは、分割ファイルの情報の消去処理の実行の間、一時的に認識される。最後に、ディスク消去部304は、要求された分割ファイルの情報の消去が完了したことを仮想ディスク削除部208へ通知する。このようにして、仮想サーバの削除に伴う仮想ディスクの情報の消去が実現されるので、仮想ディスク領域が新たな仮想サーバに新たな仮想ディスクとして割り当てられても、新たな仮想サーバから元々格納されていた情報を読むことはできない。
本実施例では、仮想ディスク401の情報が、仮想サーバ109の削除に連動して、消去されるので、使用済の仮想ディスク401の情報を第3者によって読まれることはない。なお、本実施例では、情報消去の対象を仮想ディスク401としたが、本実施例の技術及びその考え方を仮想化されたサーバのメモリにも適用できることは、当業者であれば容易に推考できるであろう。