本発明は、コンピュータ装置と方法とプログラムに関する。
近時、クラウドコンピューティング、シンクライアントシステム等のIT(Information Technology)システムにおいて、サーバ仮想化技術が重要となっている。サーバ仮想化によれば、1台の物理的なサーバが、複数台のコンピュータであるかのように論理的に分割され、分割されたそれぞれのコンピュータでOS(Operating System)やアプリケーションが実行される。それぞれのコンピュータを仮想マシンという。
サーバ仮想化では、例えばハードウェアとOS間に仮想化レイヤを設け、その上に複数の仮想マシンが実装され、ハードウェア・リソースの仮想化が行われる。ハードウェア・リソースの仮想化として、特に制限されないが、例えばボード単位(システムボード、IOボード、ネットワークインタフェースボード等)に複数のパーティションに分割し、各パーティションを独立した仮想マシンとして利用可能としたもののほか、ソフトウェアにより、CPU(Central Processing Unit)、メモリデバイス、ネットワークインタフェースデバイス(カード)、ディスク等のハードウェア・リソースを論理的に分割して、仮想マシンを構成する仮想マシンモニタ(Virtual Machine Monitor:VMM)がある。
仮想マシンモニタ(VMM)には、代表的には、
(a)ハードウェア上で直接動作するハイパーバイザ(Hypervisor)型仮想マシンモニタ(「ハイパーバイザ」ともいう)と、
(b)サーバのOS上のアプリケーションとして実装されているホストOS型仮想マシンモニタ等がある。
図9は、ハイパーバイザ(Hypervisor)型仮想マシンモニタ構成のサーバ仮想化技術のいくつかの典型例のうちの一例(関連技術1)を模式的に示す図である。図9を参照すると、サーバ10Bにおいて、ハードウェア15Bの上に、ハイパーバイザ型仮想マシンマシンモニタ(単に「ハイパーバイザ」という)14Bを備えている。ハイパーバイザ14Bの上に複数の仮想マシンが実装される。複数の仮想マシンは、管理OS用仮想マシン11B、ゲストOS用仮想マシン12B、13Bを備えている。仮想マシンを管理するドメインはドメイン0ともいう。また、例えば業務等を稼動させるドメインは、ゲストドメインともいう。ドメイン0では管理OS115B(例えばLinux:登録商標等)が動作し、ゲストドメインを管理する。ゲストドメインでは、例えばサーバ10Bで動作するOSがゲストOS125、135として動作する。なお、ゲストOS用仮想マシンは2つに限定されるものでないことは勿論である。
図9の例では、管理OS用仮想マシン11Bは、管理OS115B、仮想CPU111、メモリ112、ネットワークデバイスドライバ113、実デバイスドライバ114B、仮想ネットワーク116、仮想デバイス117Bを備えている。
ゲストOS用仮想マシン12B(13B)は、アプリケーション(Application)126(136)、ゲストOS125(135)、仮想ネットワークインタフェース(Virtual Network Interface )123(133)、仮想デバイスドライバ124B(134B)、仮想CPU121(131)、メモリ122(132)を備えている。なお、アプリケーション126(136)とゲストOS125(135)の間には、例えばミドルウェア、API(Application Interface)等が配置されるが、図9では省略されている(他の図も同様とされる)。
ハードウェア15Bは、CPU(物理CPU)151、DRAM(Dynamic Random Access Memory)等からなるメモリ152、ネットワークインタフェース153、デバイスインタフェース154B、デバイスインタフェース154Bに接続される実デバイス20B等を含むハードウェア装置群からなる。ただし、ハードウェア15Bが、これらのハードウェア装置に制限されるものでないことは勿論である。CPU151は、複数のCPU(CPUコア)で構成してもよい。特に制限されないが、実デバイス20Bは、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)からなるローカルストレージ(例えばサーバコンピュータに直接接続されたストレージ(内蔵又は外付ストレージ))や、その他の任意の周辺機器を含む。ローカルストレージは、デバイスインタフェース154Bとして例えばHBA(Host Bus Adapter)等を用いファイバチャネル(FC)等で接続されるSAN(Storage Area Network)装置を備えた構成としてもよい(SANでは遠隔のストレージがローカルストレージとして扱われる)。
NIC(Network Interface Card)等のネットワークインタフェース153は、特に制限されないが、例えばLAN(Local Area Network)、WAN(Wide Area Network)等のネットワーク30に接続される。ネットワーク30には、ネットワークノード(デバイス)40B、50Bが接続される。ネットワークノード40B、50Bとして、例えばTCP(Transport Control Protocol)/IP(Internet Protocol)ネットワークに接続され、例えばNFS(Network File System)プロトコル等でアクセスされるNAS(Network Attached Storage)装置等をサーバのリモートストレージとして接続してもよい。
特に制限されないが、ハイパーバイザ14Bは、CPU151、メモリ152、ネットワーク30、実デバイス20B等のハードウェアリソース(物理的資源)を仮想資源に分割し、仮想資源を単位として、仮想マシンへの仮想化資源の割り当ての制御・管理を行う。図9では、仮想マシンに、CPU151の割当をスケジュールするCPUスケジューラ141、メモリ152の割当を行うメモリ管理ユニット142Bを備えたハイパーバイザ14Bが例示されている。
ハイパーバイザ14Bにおいて、CPUスケジューラ141は、仮想マシン11B、12B、13Bに対して、仮想CPU111、121、131の割当てのスケジューリングを行う。すなわち、CPUスケジューラ141では、仮想CPU111、121、131として、CPU(物理CPU)151をどれだけ割当てるか、その配分を決定する。配分としては、仮想マシンに割当てる、単位仮想CPUの個数の比、あるいは、CPU能力の配分比(ウェイト)が用いられる。なお、CPUスケジューラ141として、仮想マシンの負荷等に応じて、仮想マシンへのCPU151の割当(配分比)を動的に調整する構成等を用いてもよい。
またハイパーバイザ14Bにおいて、メモリ管理部142Bは、メモリ(物理メモリ)152を分割し、分割したメモリ領域を、仮想マシン11B、12B、13Bに割り当てる。図9の例において、仮想マシン11B、12B、13Bに割当てられるメモリの容量の合計は、例えば、メモリ152のメモリ容量以下となるように設定される。仮想マシン11B、12B、13Bは、各仮想マシンに割り当てられたメモリをそれぞれ占有する(ただし、メモリは仮想マシン間で共有される共有メモリ構成としてもよい)。仮想マシン11B、12B、13Bへのメモリの割当ては、例えば、
・仮想マシンを停止した状態等で設定するものや、あるいは、
・仮想マシンの稼動状況(現在のワークロード)に基づいて仮想マシンへ割当てるリソース(メモリ割当て量)を動的に変更する機能が実装される場合もある。
ゲストOS用仮想マシン12B(13B)において、仮想ネットワークインタフェース(仮想ネットワークデバイスドライバ)123(133)は、仮想デバイスドライバ方式で各ドメインに割当てられたネットワークインタフェースである。
ゲストOS用仮想マシン12B(13B)は、仮想デバイスドライバ124B(134B)を介して、バックエンド(ドメイン0)側の実デバイス20Bにアクセスする。
ハードウェアを完全に仮想化しゲストOSの改造等を不要とした完全仮想化方式(Full Virtualization)でサーバ仮想化を実現する場合、管理OS用仮想マシン11B上の仮想デバイス117Bは、デバイスエミュレータとして実装してもよい。デバイスエミュレータで構成された仮想デバイス117Bは、実デバイス20Bのエミュレーションを行う。ここでエミュレーションとは、特定のハードウェア向けのソフトウェアを別のハードウェアで実行することをいう。デバイスエミュレータは、例えば、デバイス内のコントローラ(ストレージデバイスでは、ストレージコントローラ)における割り込み等のエミュレーションを行う。
特に制限されないが、図9に示したサーバ仮想化の関連技術において、デバイスエミュレータとして実装された仮想デバイス117Bは、ユーザプロセスとしてユーザ空間(User Space)上で動作する。この場合、仮想ネットワーク116も同様とされる。管理OS用仮想マシン11Cの仮想デバイス117Bは、管理用OS115Bの上層のユーザ空間に配置され、ゲストOS用仮想マシン12B、13Bのアプリケーション126、136と同様のレイヤとして図示されている。
管理OS用仮想マシン11Bの仮想デバイス117Bは、物理的な実デバイス20BをゲストOS用仮想マシン12、13に対して、仮想的なデバイスとして見せる。後述される本発明の実施形態では、仮想デバイス117Bを、仮想ストレージとした例が説明される。
仮想マシン12B(13B)上のアプリケーション126(136)は、以下の手順で、実デバイス20Cにアクセスする。以下では、仮想マシン12Bからのアクセスを例に説明するが、仮想マシン13Bについても、同様とされる。また、アクセスの順序を示す番号は、図9の矢線に付加された番号(括弧内の数字)に対応する。
(1)仮想マシン(ゲストOS用仮想マシン)12B上で実行されるアプリケーション126からのデバイスアクセス要求は、ゲストOS125に入力されて解析され、ゲストOS125から、仮想デバイスドライバ124Bに対して、アクセス要求が発行される。なお、アプリケーション126のアクセス要求は、コンパイラ等で当該アクセスに対応するシステムコールあるいはSVC(Supervisor Call)命令に展開され、アクセス要求実行時は、当該システムコール(SVC命令)がゲストOS125に発行される。
(2)仮想デバイスドライバ124Bはアクセス要求を受け、該アクセス要求をハイパーバイザ14Bに出力する。
(3)ハイパーバイザ14Bでは、仮想デバイスドライバ124Bからのアクセス要求を、管理OS用仮想マシン11Bの管理OS115Bを介して、デバイスエミュレータからなる仮想デバイス117Bに渡す。
(4)仮想デバイス117Bは、アクセス要求を受信すると、実デバイスドライバ114Bに、アクセス要求を発行する。
(5)実デバイスドライバ114Bからのアクセス要求は、デバイスインタフェース154Bを介して、実デバイス20Bに設定され、実デバイス20Bで実際のアクセスが行われる。実デバイス20Bをストレージデバイスとし、仮想デバイス117Bを仮想ストレージとした場合、同様な手順で、アクセスが行われる(アクセスコマンドは、例えばOpen/Close、Read/Write等からなる)。
特に制限されないが、上記(2)において、例えば以下の実装が用いられる。仮想デバイスドライバ124Bは、アプリケーション126からゲストOS125を介して伝達されたアクセス要求を受け、ハードウェア命令(例えばトラップ命令等)に変換し、ハイパーバイザ14Bを経由して、CPU151に渡す。当該ハードウェア命令(トラップ命令等)は、例えばCPU151に例外(exception)を発生させる所定の命令(例えばCPU151で直接実行できない命令等)とする。CPU151で、当該ハードウェア命令(トラップ命令等)を実行し、例外(exception)発生時(ソフトウェア割り込み発生時)、CPU151では、CPU151の現在の(その時点における)状態レジスタ等を退避して、コンテキスト・スイッチングを行い、当該例外(exception)に関連付けされたハイパーバイザ14B内の例外処理ハンドラ(トラップハンドラ)に制御を移す。
ハイパーバイザ14Bにおける例外処理ハンドラは、当該アクセス要求(システムコールで指定されたパラメータやデータあるいはアドレスポインタ等を含む)を、管理OS用仮想マシン11BのゲストOS125を介して、例えば、ユーザプロセスでアクセス可能なアドレス空間(ユーザ空間)に変換した上で、仮想デバイス117Bに、当該アクセス要求を渡す。ハイパーバイザ14Bにおける例外処理ハンドラでは、この段階で、例外処理を終了し(ソフトウェア割り込み処理終了)、先に退避しておいた状態レジスタ等を復帰し、CPU151では、前記例外トラップを発生させた命令の次の命令の実行等が行われる。アクセス要求に対する実デバイス20Bからの完了通知等の応答は、実デバイスドライバ114Bから、例えば割り込み等を用いて、アクセス要求とは反対方向に、アプリケーション126にまで通知される。
仮想マシン12Bの仮想デバイスドライバ124Bでは、アクセス要求に対して、CPU151に例外を発生させるトラップ命令を生成するが、仮想マシン11Bの仮想デバイス117Bでは、ハイパーバイザ14Bから渡されたアクセス要求を解釈し、CPU151で実行可能な命令に変換した上、実デバイスドライバ114Bに渡す(上記(4))。仮想マシン11Bの実デバイスドライバ114Bでは、アクセス要求に対応して、CPU151で実行可能な命令を実行することで、デバイスインタフェース154Bを制御する。
入出力デバイス(ハードウェア)の仮想化において、仮想デバイス117Bをデバイスエミュレーションにて構成するのではなく、図10に示す例のように、ゲストOS用仮想マシン12C、13Cにおいて、準仮想化方式(Para Virtualization)の仮想デバイスドライバであるフロントエンドデバイスドライバ128、138の出力を、ハイパーバイザ14Cを介して、管理OS用仮想マシン11Cのバックエンドデバイスドライバ(back end device driver)118に入力し、バックエンドデバイスドライバ118から、実デバイスドライバ114Cにアクセス要求を転送する構成としてもよい。なお、図10では、仮想ネットワーク、ネットワークデバイスドライバ、ネットワークインタフェース等は省略されている。
図9において、管理OS用マシン11B(ドメイン0)の仮想ネットワーク116は、仮想マシン12B、13Bと外部のネットワーク30を接続するためのネットワークである。特に制限されないが、仮想ネットワーク116は、例えば、仮想マシン12B、13Bの仮想ネットワークインタフェース123、133と、ネットワークインタフェース(物理ネットワークインタフェース)153間の通信接続を制御する仮想ブリッジ(仮想スイッチ)として構成してもよい。各仮想マシン12B、13Bは、仮想ネットワーク116を介して外部のネットワーク30へのアクセスを行う。また仮想ネットワーク116を介して、仮想マシン間通信が行われる。なお、仮想マシン12B、13Bの仮想ネットワークインタフェース123、133は、管理OS115(例えばLinux:登録商標)内のTAPデバイス(Ethernet(登録商標)をシミュレートするデバイス)を介して仮想ブリッジ(仮想ネットワーク116)に接続するようにしてもよい。特に制限されないが、例えば、この仮想ブリッジにIPアドレスを割り振り、仮想マシン12B、13Bから仮想ネットワーク116に到着したパケットの送信元アドレス(source address)を、ネットワークインタフェース153のIPアドレスに変換してネットワーク30に送出するようにしてもよい。あるいは、仮想ブリッジを、ネットワークインタフェース153に接続し、仮想マシンに、ネットワーク30と同じサブネットのIPアドレスを割当てるようにしてもよい。なお、図9では、仮想ネットワーク116をデバイスエミュレーション方式の仮想デバイス117Bに対応させて図示しているが、仮想ネットワーク116を、管理OS115B内に組み込んだ構成としてもよい。あるいは、仮想マシン12B、13Bの仮想ネットワークインタフェース123、133を、図10のフロントエンドドライバ128、138で構成し、管理OS用仮想マシン11Bにバックエンドドライバ(図10のバックエンドドライバ118)を備え、管理OS用仮想マシン11Bのバックエンドデバイスドライバから、実デバイスドライバであるネットワークデバイスドライバにアクセス要求を渡す構成としてもよい。
なお、仮想化されたハードウェア資源の仮想マシンへの動的割り当てに関して例えば特許文献1が参照される。また、特許文献2には、ファイルシステムのデータキャッシングが開示され、ディスクアレイ装置がホストコンピュータからの情報によってキャッシュメモリ上に配置するデータの優先度を決定してキャッシュメモリを効果的に使用する例として、シーケンシャルアクセスの頻度が高ければ、キャッシュメモリには、なるべく多くのデータは残さないように、逆に、ランダムアクセスの頻度が高ければ、キャッシュメモリにできるように多くのデータを配置し、ホストコンピュータ側のデータ使用上の特性に応じてキャッシュするデータを選定し、データアクセス要求に対し高速な応答が可能となることが記載されている。特許文献3には、情報収集部が定期的にまたは不定期に、各サーバ管理部、各ストレージ管理部から、情報(負荷状態を示す情報、リソースの分配状況を示す情報、物理的または論理的な各要素の接続関係を示す情報等)を収集し、配置管理部が、各管理部にそれぞれリソースの再配置を要求し、どのリソースを削除するか、どのリソースを追加するか等は、情報収集部によって収集された情報に基づいて決定し、ストレージシステム内の各リソースの負荷状態に基づいて、アプリケーションプログラム単位で、リソースを再配置させる、構成が開示されている。
いくつかの好ましい形態の1つにおいては、図11を参照すると、サーバ等のコンピュータ装置(10)は、仮想マシン(VM)に対してストレージ装置の仮想化を行う仮想ストレージ(117)を備えている。前記仮想化ストレージ(117)は、
・仮想マシン(VM)からのストレージ装置へのライトデータ、及び、前記ストレージ装置から読み出されたリードデータを一時的に蓄積するキャッシュメモリ(117−1)と、
・仮想マシン(VM)から前記ストレージ装置への複数のアクセス要求を解析しアクセスのパタンがランダムであるか否か判定するアクセスパタン解析手段(117−2)と、
・前記アクセスパタン解析手段(117−2)により、前記仮想マシンから前記ストレージ装置へのアクセスのパタンがランダムであると判定された場合、前記キャッシュメモリ(117−1)の利用度に応じて、前記キャッシュメモリ(117−1)のメモリ容量の増減を制御するキャッシュ管理手段(117−3)と、
を備えている。
好ましい形態の1つにおいて、前記キャッシュ管理手段(117−3)は、
・前記アクセスパタン解析手段(117−2)により、前記仮想マシンから前記ストレージ装置へのアクセスのパタンがランダムであると判定された場合、
前記キャッシュメモリ(117−1)の利用度が予め定められた第1の閾値以上の場合、前記キャッシュメモリ(117−1)のメモリ容量を増大させ、
前記キャッシュメモリ(117−1)の利用度が予め定められた第2の閾値(第1の閾値よりも小)以下の場合には、前記キャッシュメモリ(117−1)のメモリ容量を減少させる構成としてもよい。
好ましい形態の1つにおいて、前記キャッシュ管理手段(117−3)は、前記アクセスパタン解析手段(117−2)により、前記仮想マシン(VM)から前記ストレージ装置へのアクセスのパタンがランダムでないと判定された場合、
前記キャッシュ管理手段(117−3)は、前記キャッシュメモリ(117−1)のメモリ容量を減少させる構成としてもよい。
好ましい形態の1つにおいて、前記キャッシュ管理手段(117−3)は、
・前記キャッシュメモリ(117−1)のメモリ容量の増大を、
前記コンピュータ装置(10)の物理メモリから取得したメモリ領域を、前記キャッシュメモリへ追加することで行い、
・前記キャッシュメモリ(117−1)のメモリ容量の減少を、
前記キャッシュメモリ(117−1)のメモリ領域の一部を削除し、前記物理メモリへ返却することで行う
構成としてもよい。
いくつかの実施形態の1つにおいて、サーバ(図1の10)上の仮想マシン(VM)に対して、ストレージ装置(例えば図1の20)の仮想化を行う仮想ストレージ(例えば図1の117)は、
・前記仮想マシンのアプリケーションからの前記ストレージ装置へのライトデータ、及び、前記ストレージ装置から読み出されたリードデータを一時的に蓄積するキャッシュメモリ(図2の117−1)と、
・前記仮想マシンのアプリケーションから前記ストレージ装置へのアクセス要求を解析し、アクセスのパタンがランダムであるか否かを判定するアクセスパタン解析手段(図2の117−2)と、
・前記アクセスパタン解析手段(図2の117−2)により、仮想マシンから前記ストレージ装置へのアクセスのパタンがランダムであると判定された場合、
前記キャッシュメモリ(図2の117−1)の利用率が予め定められた第1の閾値以上の場合、前記キャッシュメモリのメモリ容量を増大させ、
前記キャッシュメモリの利用率が予め定められた第2の閾値未満(第2の閾値<第1の閾値)の場合には、前記キャッシュメモリのメモリ容量を減少させる、
制御を行うキャッシュ管理手段(図2の117−3)と、
を備えている。
いくつかの実施形態の1つにおいて、仮想マシンのアプリケーションからの仮想ストレージに対するアクセスについて、アクセスパタン解析手段(図2の117−2)でアクセスパタンの解析を行い。解析の結果、
ランダムアクセスに関して、仮想ストレージのキャッシュメモリ(図2の117−1)の利用率が第1の閾値以上の場合、
キャッシュ管理手段(図2の117−3)は、VMM(ハイパーバイザ)(図1の14)に依頼して、キャッシュメモリ(図2の117−1)のメモリ容量を増加させ、
仮想ストレージのキャッシュメモリ(図2の117−1)の利用率が第2の閾値に満たない場合、
キャッシュ管理手段(図2の117−3)は、キャッシュメモリ(図2の117−1)の余剰メモリをVMM(ハイパーバイザ)(例えば図1の14)を介して物理メモリ(例えば図1の152)に返却する。シーケンシャルなアクセスに関して、キャッシュによる性能改善効果が見込めないと判定し、キャッシュ管理手段(図2の117−3)は、仮想ストレージのキャッシュメモリ(図2の117−1)のメモリ容量を減らす。
例えば複数の情報源からストレージへの書き込み等により、負荷が高い場合には、ストレージアクセスとして、ランダムライトとなる。例えば、ハードディスクドライブ(HDD)等の媒体(ディスク)において、シーク時間(磁気ヘッドをアクセス対象データのトラックまで移動)、サーチ時間(アクセス対象データが磁気ヘッドの下に来るまでの時間)等により、ランダムライトでは、先頭のアクセスアドレスから順に書き込むシーケンシャルなライトよりも、アクセス性能が低くなる。そこで、一実施形態では、ランダムライトのアクセス要求に対して、キャッシュメモリにキャッシュされたライトデータを、アクセスアドレス順にソートし、アクセスアドレス順に、ライトコマンドをデバイスドライバに出力し、ストレージに書き出すことで、ストレージの性能、スループットを改善する。このとき、仮想ストレージのキャッシュメモリのメモリ容量を多く確保した方が、アクセス性能上、有利であることから、VMM(ハイパーバイザ)に依頼して、仮想ストレージのキャッシュメモリのメモリ容量を増加させる。
また、例えばサーバでWebアクセス等のサービス等の実行により負荷が高い場合、ストレージのアクセスパタンとしては、ストレージのデータを参照するリードアクセスが多くなる。サーバ仮想化技術において、複数の仮想マシン上でこれらのサービスが行うと、ストレージへのアクセスはランダムリードとなる。
Webアクセスにおいて、同一のWebページが参照されることで、負荷が急増する場合がある。一実施形態では、同一Webページのデータ(リードデータ)等、参照頻度の高いデータをキャッシュメモリ上に保持し、参照頻度の低いデータを消去することで、仮想マシンのアクセス応答が改善される。
上記の通り、実施形態によれば、ランダムなライトあるいはランダムなリードアクセスの場合、ストレージのキャッシュメモリの利用率が予め定められた第1の閾値以上である場合、キャッシュメモリのメモリ容量の拡張を行う。
シーケンシャルライトの場合、キャッシュメモリ上でのアドレス順による並び替えによるアクセス時間の短縮効果や、同一データ読み出しによる性能改善は見込めない。また、シーケンシャルアクセスのデータに対して、キャッシュメモリのメモリ容量を多く確保すると、VMM(ハイパーバイザ)で管理するメモリ容量を使い果たす可能性もある。
そこで、実施形態によれば、シーケンシャルアクセスでは、ランダムアクセスとは異なり、VMM(ハイパーバイザ)に対して、キャッシュメモリのメモリの容量を削減する依頼を行い、その分、他の仮想マシン上のメモリ割当容量を増加させる。実施形態によれば、仮想ストレージへのアクセスにおいて、例えば仮想マシン上の特定のアプリケーションの負荷が増加(ピークの発生)した際に、仮想マシンでの仮想ストレージへのアクセスのボトルネックを改善する。VMM(ハイパーバイザ)のCPUスケジューラ、メモリ管理部は、ボトルネックとなりやすい仮想ストレージに対するリソースを、動的に増減し、アプリケーションの負荷のピークに対応可能としている。以下、実施形態について詳細に説明する。
<実施形態1>
図1は、実施形態1の構成を示す図である。図1において、図9と同一の要素には同一参照符号が付されている。実施形態1では、前述したように、図9の仮想デバイス117Bを仮想ストレージ117とし、図9の管理OS用仮想マシン11Bの実デバイスドライバ114Bを、ストレージデバイスドライバ114とし、図9のデバイスインタフェース154Bを、ストレージインタフェース154とし、ゲストOS用仮想マシン12B、13Bの仮想デバイスドライバ124B、134Bを、仮想ストレージデバイスドライバ124、134とし、図9のハイパーバイザ14Bのメモリ管理部142Bをメモリ管理部142とし、図9の実デバイス20Bを、ストレージデバイス20(ローカルストレージ)としている。ストレージデバイス20は、サーバ10内に内蔵又は外付けされ、コントローラ(ストレージコントローラ)21と、1台以上で構成されるHDDやSSD等の媒体22を備えている。
仮想ストレージ117は、物理的なストレージデバイス20のコントローラ21を、ゲストOS用仮想マシン12、13に対して、仮想的なストレージとして見せる。ストレージデバイス20の仮想化は、ディスク、イメージファイル(ディスク等と同じ構造を持つファイル)、パーティション(物理ディスクを論理的に区分した領域)、LVM(Logical Volume Manager:複数のディスクやパーティションの記憶領域を1つの論理的ディスクとして扱う)等の形式で割当が行われる。以下では、主に、図9との相違点について説明し、同一部分の説明は重複を回避するため、適宜省略する。
管理OS用仮想マシン11(ドメイン0)の仮想ストレージ117は、特に制限されないが、例えば図9と同様に、デバイスエミュレーション方式で構成され、仮想マシン12、13に対して、仮想的なストレージとして見せる。仮想マシンのアプリケーション126(136)は、ゲストOS125(135)を経由して仮想ストレージ117にアクセスする。
仮想マシン12又は13のアプリケーション126(136)からのアクセス要求を、管理OS115を介して受け取った仮想ストレージ117は、ストレージデバイスドライバ154を介してストレージデバイス20にアクセスする。以下、仮想マシン12(又は13)からストレージデバイス20のアクセスの手順を説明する。
(1)仮想マシン(ゲストOS用仮想マシン)12(13)のアプリケーション126(136)で発行されたストレージアクセス要求は、ゲストOS125(135)に入力されて解析され、仮想ストレージデバイスドライバ124(134)のアクセス要求が入力される。
(2)仮想ストレージデバイスドライバ124(134)は、アクセス要求をハイパーバイザ14に渡す。
(3)ハイパーバイザ14は、アクセス要求を、管理OS用仮想マシン11の管理OS115を介して仮想ストレージ117に入力する。
(4)ストレージデバイス20へのアクセス要求は、仮想ストレージ117から管理OS115に発行され、ストレージデバイスドライバ114に入力され、
(5)ストレージインタフェース154からローカルなストレージデバイス20のコントローラ21に転送され、媒体22へのアクセスが行われる。
ストレージデバイス20からのアクセスの応答(リードアクセスの場合、リードデータ)は、ストレージデバイスドライバ114、管理OS用仮想マシン11の仮想ストレージ117、ハイパーバイザ14を介して、アクセス要求と逆順の経路で仮想マシン12のアプリケーション126に転送される。
完全仮想化方式でサーバ仮想化を構成し、仮想ストレージ117をデバイスエミュレータで構成した場合、前述したように、仮想ストレージデバイスドライバ124(134)は、アクセス要求をハードウェア命令(トラップ命令)に変換し、ハイパーバイザ14を経由してCPU151に渡し、CPU151では例えば例外トラップを発生させ、ハイパーバイザ14は、該アクセス要求を管理OS用仮想マシン11の管理OS115に渡し、仮想ストレージ117に入力する。実施形態において、ハードウェア仮想化の実装方式は、特定の方式に制限されない。例えば、図10に示したような準仮想化方式(Para Virtualization)において、ゲストOS用仮想マシンの仮想ストレージデバイスドライバであるフロントエンドドライバの出力をハイパーバイザを介して、管理OS用仮想マシンのバックエンドデバイスドライバに入力し、バックエンドデバイスドライバから実デバイスドライバ(図1のストレージデバイスドライバ114)に転送する構成としてもよい。この場合、管理OS用仮想マシン11のバックエンドデバイスドライバに、図1の仮想ストレージ117が実装される。バックエンドデバイスドライバ(仮想ストレージ)は、ユーザ空間で走行するユーザデバイスドライバとして実装する構成としてもよい(あるいは、カーネル空間に実装する構成としてもよい)。また、図1では、ハーパイバイザ型VMMを例に説明したが、VMMは、ハーパイバイザに制限されるものでなく、ホストOS型VMMに対しても適用可能であることは勿論である。
図2は、図1の実施形態1の仮想ストレージ117を例示する図である。図2を参照すると、仮想ストレージ117は、キャッシュメモリ117−1、アクセスパタン解析手段117−2、キャッシュ管理手段117−3、アクセス要求処理手段117−4、コマンド・キャッシュ管理用の管理テーブル117−5、ストレージアクセス手段117−6を備えている。
アクセス要求処理手段117−4は、仮想マシン(図1の12又は13)からハイパーバイザ14を経由して転送されたアクセス要求を受ける。また、該アクセス要求に対する応答を仮想マシン12、13に返す。アクセス要求処理手段117−4は、各仮想マシン12、13からのアクセス要求を受けると、アクセスコマンドを例えばキャッシュにプールする。特に制限されないが、アクセスコマンド(コマンド種別、先頭アクセスアドレス、データサイズ(バイト長)等)は、コマンドをプールするバッファとしても機能する管理テーブル117−5に格納し、ライトコマンドの場合、ライトデータを、データキャッシュとして機能するキャッシュメモリ117−1に格納する。
ライトアクセスの場合、アクセス要求処理手段117−4は、ライトデータを一時的にキャッシュメモリ117−1に蓄積するが、その際、管理テーブル117−5を参照して、キャッシュメモリ117−1にライトデータを格納するに足る空き領域があるか否か、すなわち、Write Hit/Missを判定する。十分な空き領域がある場合(Write Hit)、ライトデータを未使用領域(ページ)に格納し、当該ライトデータ格納先の先頭キャッシュアドレスを管理テーブル117−5の該当するアクセスコマンドのエントリに設定する。ライトデータのキャッシュへの書き込みが完了した時点で、アクセス要求処理手段117−4は、要求元である仮想マシンに対してライトアクセスの応答を返すようにしてもよい。
十分な空き領域がない場合(Write Miss)、アクセス要求処理手段117−4は、キャッシュ管理手段117−3に依頼して、キャッシュメモリ117−1からライトデータを格納するのに必要な領域分(ページ)のストレージへの書き出しを行うことで空き領域(空ページ)を確保する。アクセス要求処理手段117−4は、空き領域へのライトデータの書き込みを行う。この場合も、Write Hit時と同様、ライトデータのキャッシュへの書き込みが完了した時点で、アクセス要求処理手段117−4は、当該アクセス要求元の仮想マシンに応答を返す。
仮想マシン(図1の12又は13)からのアクセス要求がリードアクセス要求である場合、アクセス要求処理手段117−4は、アクセス対象のリードデータがキャッシュメモリ117−1に保持されている場合(Read Hit)、キャッシュメモリ117−1に保持されているHitしたリードデータを、要求元の仮想マシンに応答として返す。一方、アクセス対象のリードデータがキャッシュメモリ117−1に保持されていない場合(Read Miss)、ストレージアクセス手段117−6を介してストレージデバイス20に対してリードアクセス要求が発行され、ストレージデバイス20から読み出されたリードデータを、アクセス要求処理手段117−4を介して、当該リードアクセスの要求元の仮想マシンに応答として返却するとともに、キャッシュメモリ117−1に格納する。
本実施形態において、キャッシュメモリ117−1は、図1のハイパーバイザ14のメモリ管理部142で割当てられたメモリ152の一部のメモリ領域を用いる。なお、管理テーブル117−5も、図1のメモリ152の一部のメモリ領域を用いてもよいし、図1の管理OS用仮想マシン11に確保されたメモリ112の一部を専用で用いてもよい。また、仮想のストレージキャッシュを構成するキャッシュメモリ117−1として、ライトキャッシュとリードキャッシュをそれぞれ別々に備え、管理テーブル117−5として、ライトキャッシュ、リードキャッシュに対応して別々に備えた構成としてもよい。なお、本実施形態では、図1のメモリ管理部142は、キャッシュメモリ117−1のメモリ容量の増減によるメモリ(物理メモリ)152の増減管理、及び、仮想マシン11、12、13の全て又は一部に対するメモリの容量の動的な割り当てを行う。
アクセスパタン解析手段117−2は、仮想マシン12、13から仮想ストレージ117に入力された一連のアクセスコマンド群(例えば数個ないし数十個のアクセスコマンド)を解析し、それがランダムアクセスであるかそれともシーケンシャルアクセスであるか判定する。アクセスパタン解析手段117−2はコマンドバッファ(管理テーブル117−5)にプールされているアクセスコマンド群(例えばライトアクセスの場合、ストレージへの書き出しを行う前の待機状態のコマンド群)を解析し、それがランダムアクセスであるかそれともシーケンシャルアクセスであるか判定する。アセスパタン解析手段117−5は、解析対象のアクセスコマンド群から、アクセスアドレスが連続である(すなわち、先頭アクセスアドレスが、一連のアクセスコマンド間で昇順に並ぶか、又は降順に並ぶ)場合に、シーケンシャルと判定し、それ以外はランダムと判定する。
なお、特に制限されないが、図2の管理テーブル117−5(コマンドバッファ)にプールされているアセスコマンドは、アクセスパタン解析手段117−2による解析が終了し、キャッシュメモリ117−1において、保持された当該アクセスコマンド(ライトコマンド)で指定したライトデータのストレージデバイス20への書き込みが完了し、キャッシュメモリ117−1においてライトデータを格納していた領域(ページ)を、未使用領域とする時点で、クリア(削除)する構成としてもよい。リードアクセスの場合、リード処理が完了した時点(仮想マシンに応答返却時)で、アクセスパタン解析手段117−2は、コマンドバッファ(管理テーブル117−5)にプールされているリードコマンドをクリア(削除)するようにしてもよい。
アクセスパタン解析手段117−2により、アクセス状況がランダムアクセスであると判定されると、これを受けて、キャッシュ管理手段117−3は、キャッシュメモリ117−1の利用率の判定を行う。
キャッシュメモリ117−1は、例えば所定サイズ(例えば512バイト、1024バイト(=1Kバイト)、4Kバイト、8Kバイト等)のページ単位でキャッシュ管理手段117−3内に記憶管理される、管理テーブル117−5で管理される。この場合、アクセス対象データは、ページアドレスとページ内のオフセットアドレスでアクセスされる。キャッシュメモリ117−1のデータの置換(追い出し)は、ページ単位に行われる。
キャッシュメモリ117−1の利用率(%)は、例えば、キャッシュメモリ117−1の全ページのうちどれだけのページが使用されているかを表し、次式で与えられる。
利用率=(使用ページ数/ページ総数)×100
キャッシュ管理手段117−3は、キャッシュメモリ117−1の利用率が予め定められた第1の閾値以上(例えば80%以上)である場合、ハイパーバイザ14のメモリ管理部142に対して、キャッシュメモリ117−1に用いるメモリ152の一部の領域の取得を依頼する。メモリ152の一部の領域が獲得されると、キャッシュ管理手段117−3は、獲得したメモリ領域を、キャッシュメモリ117−1の新たなデータ格納領域として配置し、管理テーブル117−5を更新する。なお、管理OS用仮想マシン11に割当てられたメモリ112からキャッシュメモリ117−1用のメモリ領域を割当てるようにしてもよい。
キャッシュメモリ117−1の利用率が第2の閾値未満(例えば60%未満)の場合、キャッシュ管理手段117−3は、ハイパーバイザ14のメモリ管理部142に、キャッシュメモリ117−1において、不要なメモリ領域(ページ)を解放する旨をハイパーバイザ14のメモリ管理部142に通知する。メモリ管理部142は、解放されたメモリ領域をメモリ152に戻す。なお、キャッシュメモリ117−1の不要メモリ領域を、管理OS用仮想マシン11に割当てられたメモリ112に戻すようにしてもよい。
キャッシュ管理手段117−3は、キャッシュ管理手段117−3内の管理テーブル(不図示)を参照して、キャッシュメモリ117−1上のデータのアクセス頻度のチェックを行う。
管理テーブル117−5には、ライトコマンド用に、特に制限されないが、各エントリ毎に、
・アクセス時間
・アクセスアドレス(論理アドレス)、
・ライトデータを格納したキャッシュメモリ117−1の先頭アドレス(ページアドレス)、
・ライトデータのサイズ(バイト長、ブロック長、又はページ数)
等を含むようにしてもよい。
アクセス時間は、キャッシュメモリ117−1において当該ライトデータを格納したキャッシュ領域に対して最後にアクセスが行われた時間(例えば当該ライトデータがキャッシュ領域に格納された時間)である。アクセス時間が過去であればあるほど、アクセス頻度は低いことになる。なお、アクセス時間を、置換優先度情報(例えば非負の整数)に置き換えてもよい。
管理テーブル117−5は、特に制限されないが、リードコマンド用に、各エントリ毎に、
・アクセス時間
・アクセスアドレス(論理アドレス)、
・参照頻度
・リードデータを格納したキャッシュメモリ117−1の先頭アドレス(ページアドレス)、
・リードデータのサイズ(バイト長、ブロック長、又はページ数)
等を含むようにしてもよい。参照頻度は、現時点から過去所定時間内に当該ページが参照された回数である。なお、参照頻度を、置換優先度情報(例えば非負の整数)に置き換えてもよい。
キャッシュ管理手段117−3は、任意のタイミングでキャッシュメモリ117−1上のデータ(ページ)のチェックを行う。例えばライトアクセスに対してライトデータを格納するに足るキャッシュ領域が存在しない場合(Write Miss)、キャッシュ管理手段117−3は、ライトデータを格納する領域を確保するため、ページ置換を行う。あるいは、キャッシュ管理手段117−3は、定期的に(例えば一定時間間隔で)、キャッシュメモリ117−1上のデータ(ページ)のチェックを行う。キャッシュ管理手段117−3は、例えばキャッシュメモリ117−1に格納されてからその時点までに経過した時間が長いページから順に(あるいは、予め定められた所定時間を経過したページを全て)追い出しを行う。
キャッシュ管理手段117−3からのページ追い出しの指示を受けたストレージアクセス手段117−6は、追い出し対象ページのライトデータに関して、アクセスアドレスの順に、ストレージデバイス20への書き出し(ディステージ)処理を行う。その際、ストレージアクセス手段117−6は、アクセスアドレスの最も小さい順ものから昇順、あるいは、アクセスアドレスの最も大きいものから降順にソートし、順次、ストレージデバイス20に書き出すようにしてもよい。ソート用のワークメモリは、仮想ストレージ117内に専用で設けるようにしてもよいし、管理OS用仮想マシン11のメモリ112のメモリ領域をワークメモリとして用いてもよい。
ストレージアクセス手段117−6は、キャッシュメモリ117−1のライトデータをストレージデバイス20に書き出すディステージ処理にあたり、アクセスコマンド(ライトコマンド、アクセスアドレス、データサイズ等)をライトデータからなるアクセス要求を、書き込み対象ストレージデバイス20のデバイスドライバであるストレージデバイスドライバ114に出力する。
キャッシュ管理手段117−3は、キャッシュメモリ117−1において、ストレージデバイス20への書き出しが行われた格納領域(ページ)を、空領域(未使用ページ)として管理テーブルで管理する。
ストレージデバイスドライバ114はストレージインタフェース154を介してストレージデバイス20のコントローラ21へアクセス要求を転送し、該当する媒体22へのアクセス(ライトアクセス)を行う。
キャッシュ管理手段117−3は、キャッシュメモリ117−1上のデータ(ページ)のチェックを行った結果、キャッシュメモリ117−1上に、蓄積されたリードデータについて、参照頻度の高いデータ(ページ)は保持し、参照頻度の低いデータ(ページ)を破棄する。破棄された参照頻度の低いページは、空ページとされる。
図3は、本実施形態の仮想ストレージ117の動作を説明する流れ図である。図1乃至図3を参照して、仮想ストレージ117の動作を説明する。
仮想ストレージ117のアクセス要求処理手段117−4は、仮想マシン12又は13からのアクセス要求を受信すると、管理テーブル117−5にコマンドを蓄積し、ライトデータの場合、キャッシュメモリ117−1(ライトキャッシュ)でWrite Hitするか否か(ライトデータを書き込むだけの十分な空き領域(ページ)があるか否か)を判定し、Write Hitの場合、ライトデータをキャッシュメモリ117−1の空き領域(ページ)に書き込む。Write Missの場合、キャッシュメモリ117−1内のライトキャッシュのページの追い出しを行い空き領域を作成する。
仮想ストレージ117のアクセス要求処理手段117−4は、リードアクセスの場合、管理テーブル117−5(リードキャッシュの管理テーブル)を参照して、キャッシュメモリ117−1にリードデータを格納したページが存在するか(Read Hitするか)否かを判定し、Read Hitの場合、リードデータをキャッシュメモリ117−1から読み出し、要求元の仮想マシンに返し、Read Missの場合、ストレージからデータを読み出し、空き領域(ページ)に書き込むとともに、要求元の仮想マシンにリードデータを応答として返す。
アセスパタン解析手段117−2は、その時点で、管理テーブル117−5にプールされている所定個数コマンド(Read/Write、アクセスアドレス等)を解析し、ランダムなアクセスか、シーケンシャルなアクセスであるか判定を行う(図3のS101)。
アクセスパタン解析手段117−2でランダムであると判定すると(図3のS102のYes分岐)、キャッシュ管理手段117−3を介してキャッシュメモリ117−1の利用率の判定を行う(図3のS103)。
キャッシュメモリ117−1の利用率が第1の閾値以上(例えば80%以上)である場合(図3のS104のYes分岐)、ハイパーバイザ14のメモリ管理部142に対してキャッシュメモリ117−1に用いるメモリ領域の割当を要求する(図3のS105)。
キャッシュ管理手段117−3は、メモリ領域が確保できると(図3のS106のYes分岐)、キャッシュメモリ117−1の領域として配置する。
キャッシュメモリ117−1の利用率が第1の閾値未満(例えば80%未満以上)である場合(図3のS104のNo分岐)の場合、キャッシュメモリ117−1の利用率が閾値未満(例えば60%以下)である場合(図3のS108のYes分岐)、キャッシュ管理手段117−3は、メモリ管理部142に不要になったキャッシュメモリ117−1の領域を返却(解放)する旨を通知し(図3のS109)、キャッシュメモリ117−1の総メモリ容量を縮小する(図3のS110)。メモリ管理部142は、キャッシュ管理手段117−3から返却されたメモリを、サーバ10全体の物理メモリとする。
アクセスパタン解析手段117−2でランダムアクセスでない(シーケンシャルアクセス)と判定すると(図3のS102のNo分岐)、キャッシュ管理手段117−3は、メモリ管理部142に不要になったキャッシュメモリ117−1の領域を返却する旨を通知し(図3のS109)、キャッシュメモリ117−1の総メモリ容量を縮小する(図3のS110)。メモリ管理部142は、キャッシュ管理手段117−3から返却されたメモリを、サーバ10全体の物理メモリとする。
次に、仮想ストレージ117において、キャッシュメモリ117−1上のデータのチェックを行う場合の処理について図4を参照して説明する。
キャッシュ管理手段117−3は、キャッシュメモリ117−1上のデータのチェックを行う(図4のS201)。
ライトデータの場合(図4のS202のYes分岐)、例えば、キャッシュメモリ117−1(ライトキャッシュ)に格納された状態でストレージデバイス20に書き込まれないまま一定時間経過したライトデータであるか否か判定し、一定時間経過したライトデータの場合(図4のS203のYes分岐)、ストレージアクセス手段117−6は、アクセスアドレス順に並び替え(図4のS204)。そして、ストレージアクセス手段117−6は、アクセスアドレス順に、ストレージデバイスドライバ114にアクセス要求を出力し、アクセスアドレス順に、ライトデータをストレージデバイス20へ書き出す(図4のS205)。
また、キャッシュメモリ117−1上に蓄積されたリードデータの場合は、参照頻度の高いページをキャッシュメモリ117−1に保存し(図4のS206のNo分岐)。参照頻度の低い(一定期間の参照回数が所定値以下)のページの破棄を行う(図4のS207)。
ライトアクセスのあった場合は、キャッシュ管理手段117−3により、ライトキャッシュの管理テーブル117−5として、例えば図5に模式的に示すような、LRU(Least Recently Used)リストが作成される。図5のLRUリストは、ライト管理テーブル内のエントリを、置換優先度の値の順に、各エントリを、線形に繋いで示したものである(先頭のエントリが最も置換され易く(追い出され易い)、最後尾のエントリが最も置換され難い)。
図5の例では、LRUリストの先頭のエントリから先に、キャッシュメモリ117−1から追い出される。なお、図5では、LRUリストが構成された状態が模式的に示されているが、アクセスがあると、例えばLRUリストの最後(エントリN404の直後)に追加が行われる。LRUリストに登録されたエントリと同じ場所にアクセスのあった場合は、そのエントリを再びリストの最後尾に接続する。図5の先頭で示される直後のエントリが一番アクセスされていないエントリになる。それぞれのエントリには、アクセスアドレス(ストレージアクセスアドレス)と、アクセス時間情報、ライトデータを格納するキャッシュメモリ117−1のアドレス(ページアドレス)を含む。
キャッシュ管理の書き出し処理(ディステージ)は、例えば、一定時間毎のインターバル時間(通常数百ms〜数秒)を設け、該一定時間毎に、LRUリストの先頭から、エントリ中のアクセス時間情報を利用し、ある時間以上(通常数秒程度)経っているエントリを対象に、ストレージアクセス手段117−6で、アクセスアドレス順に、ライトデータの書き出しを実行する。その際、ストレージアクセス手段117−6は当該ライトデータのライトアクセス要求をストレージデバイスドライバ114に出力する。
仮想ストレージ117において、アクセス要求処理手段117−4で受信されるランダムライトアクセス(仮想マシン12、13からのライトアクセス要求)が多い場合、キャッシュメモリ117−1に一旦蓄積される処理に、掃き出し(ディステージ)処理が間に合わず、ライトデータがキャッシュメモリ117−1に蓄積される割合が多くなる。この場合に、キャッシュ管理手段117−3では、キャッシュメモリ117−1の利用率が第1の閾値以上となると、ハイパーバイザ14のメモリ管理部142に依頼して、メモリ152のメモリ領域をキャッシュメモリ117−1(ライトキャッシュ)に割り当てる。このため、キャッシュメモリ117−1において、より多くのライトデータ(ページ)の蓄積(プール)、及び、掃き出し(ディステージ)が可能となり、一時的なライトアクセスのピークを吸収可能とし、ライトデータをアクセスアドレス順に、ストレージデバイス20に掃き出されることになる。この結果、ストレージデバイス20へのスループットの向上が期待される。
ライトアクセスのピークを越えると、キャッシュメモリ117−1からのディステージ量が、キャッシュメモリ117−1(ライトキャッシュ)へのライトデータ蓄積量を上回り、空き領域(空ページ)が増大し、キャッシュメモリ117−1(ライトキャッシュ)の利用率が下がる。キャッシュメモリ117−1(ライトキャッシュ)の利用率が低下し第2の閾値を下回ると、キャッシュ管理手段117−3は、キャッシュメモリ117−1(ライトキャッシュ)における余剰のメモリ領域をメモリ152に返却する。この結果、キャッシュメモリ117−1(ライトキャッシュ)における余剰のメモリ領域を、仮想ストレージ117のキャッシュメモリ117−1以外の用途への利用が可能となる。
リードアクセスの場合には、ライトアクセスと同様に、キャッシュ管理手段117−3により、リードキャッシュの管理テーブル117−5の情報から、図6に模式的に示すようなLRUリストが作成される。図6は、既にLRUリストが構成された状態であるが、アクセスがあると、LRUリストの最後(最後尾のエントリN504の直後)に追加が行われる。LRUリストに登録されたエントリと同じ場所にアクセスのあった場合は、そのエントリを再びリストの最後尾に接続する。図6の先頭で示される直後のエントリが一番アクセスされていないエントリになる。それぞれのエントリには、ストレージのアクセスアドレス、アクセス時間情報、リードアクセスの頻度情報(同一アドレスのデータに何回アクセスを行ったか)、データを格納するキャッシュメモリ117−1のアドレス(ページアドレス)を含む。
キャッシュメモリ117−1(リードキャッシュ)に保持されるリードデータは、一定時間参照されない状態の場合(あるいは参照頻度が所定値以下の場合)、キャッシュ管理手段117−3は、ライトアクセスとは異なり、そのまま破棄(キャッシュデータとしては無効にする)する。キャッシュメモリ117−1において、破棄されたリードデータをそれまで格納していた領域(ページ)は空き領域ジとなり、キャッシュメモリ117−1上で未使用領域(未使用ページ)となる。
リードキャッシュの破棄の処理は、キャッシュ管理手段117−3が、例えば一定時間毎(数秒程度)、図6のLRUの先頭からたどり、エントリ中のアクセス時間情報を参照して、ある時間以上(通常数秒程度)経っているエントリを対象に、アクセス頻度の少ないエントリから破棄の処理を行う。破棄にあたり、当該エントリに格納されているキャッシュメモリ117−1のアドレスで示されるメモリ領域(ページ)を解放する。この結果、キャッシュメモリ117−1内に空領域(未使用領域)が確保される。
ライトアクセスと同様に、アクセス要求処理手段117−4で受信されるランダムリードアクセスが多い場合、キャッシュメモリ117−1(リードキャッシュ)において、参照頻度の低い格納領域(ページ)の破棄よりも、ストレージデバイス20から読み出されキャッシュメモリ117−1(リードキャッシュ)に保持されるリードデータの蓄積量が多くなる。キャッシュ管理手段117−3で、キャッシュメモリ117−1(リードキャッシュ)の利用率が第1の閾値を超えると、メモリ管理部142は、キャッシュメモリ117−1にメモリを割り当てられることで、より多くのリードデータを蓄積可能となる。この状態では、各種雑多なリードデータがキャッシュされることになり、より多くのキャッシュメモリ117−1(リードキャッシュ)に保持される。しかしながら、参照頻度の低いデータは破棄され、キャッシュメモリ117−1(リードキャッシュ)には、参照頻度が相対的に高いリードデータが残ることとなる。この結果、キャッシュメモリ117−1(リードキャッシュ)は、利用効率の良い状態に近づく。
リードアクセスのピークを越えると、キャッシュメモリ117−1(リードキャッシュ)において、データ格納領域(ページ)の破棄の処理が、リードデータの蓄積を上回るため、キャッシュメモリ117−1の利用率が下がる。メモリ管理部142は、余分に確保されていたキャッシュメモリ117−1の一部がハイパーバイザ14のメモリ管理部142を介してメモリ152に返却され、仮想ストレージ117以外の用途に利用可能となる。
仮想ストレージ117のアクセスパタン解析手段117−2で、シーケンシャルアクセスの判定を行った場合、ランダムアクセスの場合のような、並び替えによるアクセス時間の短縮効果や同一データ読み出しによる性能改善が見込めず、逆に、これらのデータに対してキャッシュメモリの容量を多く確保すると、サーバ10のメモリ152が枯渇してしまう可能性がある。このため、ランダムアクセスの場合と異なり、キャッシュ管理手段117−3は、ハイパーバイザ14のメモリ管理部142に対して、キャッシュメモリ117−1(リードキャッシュ)のメモリ容量を削減する依頼を行い、解放したメモリの、仮想マシンのメモリへの割当を可能とする。
実施形態1によれば、仮想マシンが仮想ストレージにアクセスを行うに際して、仮想マシン上の特定アプリケーションの負荷が増加(ピークの発生)した際に、ボトルネックとなりやすいストレージのキャッシュメモリ容量を動的に増減し、これらのピークへの対応を可能とし、仮想ストレージへの負荷等により生じるアクセス性能の低下を改善可能としている。
なお、上記実施形態1において、サーバ10における仮想ストレージ117は、コンピュータプログラムで実現される。実施形態1によれば、仮想ストレージ117を実現するプログラムは、該プログラムを記録した記録媒体(半導体メモリ、磁気/光ディスク)として提供される。
<実施形態2>
図7は、実施形態2の構成を示す図である。図7において、図1と同一の要素には同一の参照番号が付されている。実施形態2において、仮想ストレージ117Aは、ネットワーク30に接続されるストレージデバイス40、50を、仮想マシン12、13に対して仮想化して見せる。なお、ネットワーク30に接続されるストレージデバイスは2台に制限されるものでなく1台であってもよいし、3台以上であってもよい。また、ストレージデバイス40、50において、媒体42、52を複数備えた構成が例示されているが、それぞれ1台の媒体で構成してもよいことは勿論である(ただし、媒体42(52)の本数を増やした方が、一般に、Write(書き込み)のパーフォマンスは向上する。図7において、NIC(Network Interface Card)等のネットワークインタフェース153は、特に制限されないが、例えばLAN(Local Area Network)、WAN(Wide Area Network)等のネットワーク30に接続される。ネットワークストレージデバイス40、50として、例えばTCP(Transport Control Protocol)/IP(Internet Protocol)ネットワークに接続され、NFS(Network File System)プロトコル等でアクセスされるNAS(Network Attached Storage)装置としてもよい。ストレージデバイス40(50)はコントローラ41(51)とHDD、SSD等の媒体42(52)を備えている。なお、媒体42(52)は1つであってもよい。ストレージデバイス40(50)はRAID(Redundant Inexpensive Disk Array)構成等としてもよい。サーバ10Aは、ストレージデバイス40(50)の論理ボリューム等がマウントされ、ファイルのトリー構造に繋がれ、ローカルなストレージとしてアクセスが行われる。特に制限されないが、仮想ストレージ117Aは、図1と同様、ストレージのデバイスエミュレータとして構成されている。ただし、仮想ストレージ117Aを、図10のバックエンドドライバ118に実装する構成としてもよいことは勿論である。また、VMMをハイパーバイザのかわりに、ホストOS型としてもよいことは勿論である。また、図7は、仮想ストレージ117Aが、ネットワーク接続されるストレージを仮想化させたものである点を例示したものであり、サーバ10Bは、内蔵ストレージ、あるいはローカストレージを備えた構成としてもよい。
ゲストOS用仮想マシン12(13)の仮想ストレージデバイスドライバ124(134)からのアクセス要求は、ハイパーバイザ14、管理OS115を介して仮想ストレージ117Aに受け渡される。仮想ストレージ117Aは、当該アクセス要求がネットワーク30に接続されたストレージデバイス40又は50宛てのアクセス要求であると判定すると、アクセス要求を、ネットワーク30及びストレージデバイス40又は50の通信プロトコルに対応してパケット化し(例えばパケットヘッダをTCPヘッダとし、ペイロードにハイパーバイザ14から受信したアクセス要求(アクセスコマンド)を格納する)、このアクセス要求パケットをハイパーバイザ14を介して仮想ネットワーク116Aに転送する(図7)。仮想ネットワーク116Aは、仮想ストレージ117Aからのハイパーバイザ14を介して転送されたアクセス要求を、仮想マシン12(13)の仮想ネットワークインタフェース123(133)からハイパーバイザ14を経由して転送されたネットワークアクセス要求と同様に処理し、アクセス要求パケット(送信先(destination)アドレスはストレージデバイス40又は50)を、ネットワークデバイスドライバ113、ネットワークインタフェース153を介してネットワーク30に送出する。なお、アクセス要求パケットの送信元(source)アドレスとしては、例えばネットワークインタフェース153のIPアドレスが設定される。なお、仮想ストレージ117Aは、アクセス要求がローカルストレージ宛ての場合、実施形態1で説明したのと同様に、ストレージデバイスドライバにアクセス要求を出力する
以下では、実施形態2を、主に実施形態1との相違点について説明する。実施形態2のストレージのアクセスの手順を説明する。
(1)仮想マシン(ゲストOS用仮想マシン)12(13)のアプリケーション126(136)で発行されたストレージアクセス要求(システムコール)は、ゲストOS125(135)に入力されて解析され、仮想ストレージデバイスドライバ124(134)のアクセス要求が入力される。
(2)仮想ストレージデバイスドライバ124(134)は、アクセス要求をハイパーバイザ14に渡す。
(3)ハイパーバイザ14は、アクセス要求を、管理OS用仮想マシン11の管理OS115を介して仮想ストレージ117に入力する。
管理OS用仮想マシン11Aの仮想ストレージ117Aは、アクセス要求を解析し、デバイス名等から、アクセス対象は、ネットワーク30に接続されたストレージデバイス40、50であるかを判別する。なお、ローカルストレージへのアクセス要求は、前記実施形態1と同様、仮想ストレージ117Aから管理OS115に発行され、図1と同様、ストレージデバイスドライバに入力され、ストレージインタフェースからローカルストレージに転送される。
(4)ネットワーク30経由のストレージへのアクセス要求は、仮想ストレージ117Aからハイパーバイザ14を介して仮想ネットワーク116Aに転送される。仮想ストレージ117Aから仮想ネットワーク116Aに転送されるアクセス要求は、ゲストOS用仮想マシン12(13)上のアプリケーション126(136)で発行されたネットワークアクセス要求を仮想ネットワークインタフェース(仮想ネットワークデバイスドライバ)123(133)、ハイパーバイザ14を経由して仮想ネットワーク116Aに転送される形式と同様のパケット形式とされる。
(5)仮想ネットワーク116Aは転送先としてストレージデバイス40又は50を指定したネットワークアクセス要求を、ネットワークデバイスドライバ113に転送する。
(6)ネットワークデバイスドライバ113は、アクセス要求パケットを、ネットワーク30を介して宛先のストレージデバイス40又は50に送信する。ストレージデバイス40又は50は、サーバ10Aから送信されたアクセス要求を受け、アクセス要求をデコードし、アクセス対象の論理ユニット番号(LUN)等に対応した媒体へのアクセスが行われる。
ストレージデバイス40(又は50)のコントローラ41(又は51)は、ネットワークアクセス要求パケットをデパケット化し、ペイロードに含まれるストレージアクセス要求に基づき、媒体42(又は52)へのアクセスを行う。
ストレージデバイス40又は50からのアクセスの応答(リードの場合、リードデータ)は、ネットワーク30、ネットワークデバイスドライバ113、仮想ネットワーク116Aから仮想ストレージ117Aに転送され、ハイパーバイザ14を介してアクセス要求と逆順の経路で仮想マシン12のアプリケーション126に転送される。
完全仮想化方式でサーバ仮想化を構成し、仮想ストレージ117Aをデバイスエミュレータで構成した場合、仮想ストレージデバイスドライバ124(134)は、アクセス要求をハードウェア命令(トラップ命令)に変換し、ハイパーバイザ14を経由してCPU151に渡し、CPU151で該命令の実行により例外トラップが発生し、ハイパーバイザ14の例外処理ハンドラで、該アクセス要求を管理OS用仮想マシン11の管理OS115に渡し、仮想ストレージ117Aに入力する構成とされる。
実施形態2においても、ハードウェア仮想化の実装方式自体は特定の方式に制限されない。例えば、上記(3)の手順で、また、図10に示したような準仮想化方式(para−virtualization)において、ゲストOS用仮想マシン12の仮想ストレージデバイスドライバ(front end device driver)の出力をハイパーバイザ14を介して、管理OS用仮想マシンのバックエンドデバイスドライバ(back end device driver)に入力し、バックエンドデバイスドライバから、実デバイスドライバ(ネットワークデバイスドライバ114)に転送する構成としてもよい。この場合、管理OS用仮想マシンのバックエンドデバイスドライバに、図1の仮想ストレージ117が実装される。なお、図1では、ハーパイバイザ型VMMを例に説明したが、ホストOS型VMMに対しても適用可能であることは勿論である。
図8は、実施形態2の仮想ストレージ117Aの構成を示す図である。図8において、図2との相違点は、
・アクセス要求変換手段117−7をさらに備え、
・ストレージアクセス手段117−6が、アクセス要求を仮想ネットワーク117Aに出力してネットワーク30に接続されたストレージデバイス40又は50にアクセスする、
点である。
ストレージアクセス手段117−6からライトデータをストレージに書き出すディステージ処理において、アクセス要求を、アクセス要求変換手段117−7で、仮想ネットワーク116Aのプトロコルスタックに対応した形式にパケット化(Packetizing)した上で、ストレージアクセス手段117−6から、仮想ネットワーク116Aに出力する。
また、ストレージアクセス手段117−6が仮想ネットワーク116Aから受け取ったストレージデバイス40又は50からのパケット化されたリードデータを、アクセス要求変換手段117−7で、デパケット化(De-Packetizing)してリードデータを取り出し、キャッシュメモリ117−1に格納する。なお、アクセス要求がローカルストレージ宛ての場合、ストレージアクセス手段117−6は、ストレージデバイスドライバにアクセス要求を出力しローカルストレージにアクセスする。
アクセスパタン、利用率に応じたキャッシュメモリ117−1のメモリ容量の増減制御、キャッシュメモリ117−1のディステージ処理におけるアクセスアドレス順の書き出し制御等は、前記実施形態1と同様であるため、説明を省略する。なお、仮想ストレージ117Aにおいて、ネットワーク30を介して接続される複数のストレージデバイス40と50を仮想的な1つの擬似ファイルとして扱う構成としてもよいことは勿論である。
図7では、仮想ストレージ117Aをストレージデバイス40、50等に対して共通に1つ備えた構成としているが、各ストレージに対応させて仮想ストレージをそれぞれ備えた構成としてもよいことは勿論である。
本発明によれば、複数の仮想マシンを実行可能なサーバコンピュータで少なくとも1台以上のHDDやSSD装置を内蔵するか、外部にストレージを持つコンピュータシステムに適用可能である。
実施形態2によれば、サーバシステム外のネットワークを介して接続するストレージ(ネットワークストレージ)を仮想化した、仮想化ネットワークストレージにアクセスを行うに際して、仮想マシン上の特定アプリケーションの負荷が増加(ピークの発生)した際に、ボトルネックとなりやすいストレージのキャッシュメモリ容量を動的に増減し、これらのピークへの対応を可能とし、仮想化ネットワークストレージへの負荷等により生じるアクセス性能の低下を改善可能としている。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。