次に、本発明の実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するためのものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
なお、以下の説明において、保存対象を示す用語として「データ」を用いる。ただし、保存対象は、個別のデータに限定されない。保存対象は、データの集合(例えば、配列、構造体、ファイル、フォルダ、又は、記憶装置を論理的に分割した論理ユニット(又はパーティション))でもよい。以下、これらをまとめて「データ」と呼ぶ。
<第1の実施形態>
以下、図面を参照して、第1の実施形態について説明する。
[構成の説明]
まず、第1の実施形態に係る情報処理装置100の構成について、図面を参照して説明する。
図1は、本発明における第1の実施形態に係る情報処理装置100を含む情報処理システム10の構成の一例を示すブロック図である。
図1に示されているように、情報処理システム10は、情報処理装置100と、記憶装置200と、ネットワーク400とを含む。
ネットワーク400は、情報処理装置100と記憶装置200とを接続する。ネットワーク400は、限定されない。例えば、ネットワーク400は、情報処理装置100と記憶装置200とを接続する専用ネットワーク(例えば、Storage Area Network(SAN))でもよい。あるいは、ネットワーク400は、汎用の通信網(例えば、Loca Area Network(LAN)、インターネット、又は、電話回線)でもよい。
記憶装置200は、情報処理装置100から受信したデータを保存し、保存したデータを情報処理装置100に送信する。記憶装置200は、限定されない。例えば、記憶装置200は、磁気ディスク装置、Solid State Drive(SSD)、光磁気ディスク装置、又は、それらの装置の組合せ(例えば、ディスクアレイ装置)である。
情報処理装置100は、記憶装置200に接続されている。図1に示されているように、複数の情報処理装置100が、記憶装置200に接続されていてもよい。ただし、一つの情報処理装置100が、記憶装置200に接続されていてもよい。
また、情報処理装置100は、一つに限らず、複数の記憶装置200に接続されていてもよい。
情報処理装置100は、仮想化基盤106と、仮想マシン101とを含む。
仮想化基盤106は、一つ又は複数の仮想マシン101に実行環境を提供する。例えば、仮想化基盤106は、仮想マシン101に対して、データを保存する記憶装置200を仮想化した記憶装置としての機能を提供する。仮想化した記憶装置は、ネットワークストレージとしての機能を備えていてもよい。例えば、仮想化した記憶装置は、複数の仮想マシン101からアクセス可能であってもよい。
さらに、仮想化基盤106は、仮想マシン101に対して他の機能を提供してもよい。例えば、仮想化基盤106は、仮想マシン101に対して、仮想化した通信機能を提供してもよい。
仮想化基盤106は、図1に示されていないプロセッサ及びメモリなどのハードウェアと、所定のソフトウェアとを用いて実現される。
仮想マシン101は、仮想化基盤106において、一般的なコンピュータとしての機能を実現する。例えば、仮想マシン101は、図示していない所定のオペレーティングシステムを実行し、そのオペレーティングシステム上において各種のアプリケーションを実行する。仮想マシン101は、単独のアプリケーションの実行に限らず、複数のアプリケーションで構成されたジョブを実行してもよい。
さらに、仮想マシン101は、他の仮想マシン101と連携してもよい。例えば、いずれか一の仮想マシン101が、仮想化基盤106が提供する通信機能を用いて、ウィルス対策アプリケーションのメーカーからウィルスパターンファイル(セキュリティ・パッチ)を入手し、他の仮想マシン101に配布してもよい。あるいは、いずれか一の仮想マシン101が、通信機能を用いて、オペレーティングシステムのメーカーからHotfixを入手し、他の仮想マシン101に配布してもよい。
仮想マシン101は、仮想化基盤106と同様に、図1に示されていないプロセッサ及びメモリなどのハードウェアと、所定のソフトウェアとを用いて実現される。
さらに、第1の実施形態に係る情報処理装置100の構成の詳細を説明する。
まず、仮想マシン101の詳細を説明する。
仮想マシン101は、分類部103と、仮想ディスクドライバ105とを含む。
分類部103は、仮想化基盤106に保存を依頼するデータを、分類する。例えば、仮想マシン101が、新たなファイルを作成した場合、仮想マシン101は、作成したファイルを保存する。この場合、分類部103は、ファイルを分類する。
あるいは、仮想マシン101が、他の装置から取得したファイルを他の仮想マシン101に配布するために、ネットワークストレージ機能を備えた仮想的な記憶装置にファイルを保存する。この場合も、分類部103は、ファイルを分類する。
なお、分類部103は、仮想マシン101が保存する全てのデータを分類してもよいし、所定の種類のデータを分類してもよい。
分類の詳細としては、分類部103は、保存するデータを、複数の仮想マシン101が使用するデータ、又は、その仮想マシン101が単独で使用するデータに分類する。
以下、複数の仮想マシン101が使用するデータを、「多重使用データ」と呼ぶ。複数の仮想マシン101は、一つの情報処理装置100において動作する仮想マシン101に限らない。複数の仮想マシン101は、複数の情報処理装置100において動作する仮想マシン101でもよい。
また、仮想マシン101が単独で使用するデータを、「単独使用データ」と呼ぶ。
多重使用データの一例は、オペレーティングシステムが用いるファイル、オペレーティングシステムの上で動作するアプリケーションが用いるファイル、又はアプリケーションが利用するライブラリである。多重使用ファイルのより具体的な一例は、セキュリティ・パッチ及びHotfixである。
単独使用データの一例は、仮想マシン101の動作状態を保存するログファイルである。
分類部103は、所定のルールを用いてデータを分類する。
図9は、第1の実施形態に係る分類ルールの一例を示す図である。図9は、ファイルを分類の単位とした場合の例である。
「多重使用ファイル」が、多重使用データと判定されるファイルのルールである。[フォルダ]に示されているフォルダに含まるファイルは、多重使用データと判定される。[拡張子]に示されている拡張子を含むファイルは、多重使用データと判定される。
「単独使用ファイル」が、単独使用データと判定されるファイルのルールである。[フォルダ]に示されているフォルダに含まるファイルは、単独使用データと判定される。[拡張子]に示されている拡張子を含むファイルは、単独使用データと判定される。
分類部103は、ファイルに関する上記以外の情報を用いてもよい。例えば、属性が読み取り専用のファイルは、多くから参照されるファイルである場合が多い。そこで、分類部103は、読み取り専用の属性のファイルを多重使用ファイルに分類してもよい。
このように、分類部103は、ファイルが保存されている位置(例えば、フォルダ)、ファイルの名称(例えば、拡張子)、及び/又は、属性(例えば、読み取り専用の属性)を用いてファイルを分類してもよい。
図1を参照した説明に戻る。
分類部103は、分類した結果をデータに付与してもよい。分類結果の付与の具体的なやり方は、データの所定の位置に結果を含ませることである。
データに結果を付与する場合、分類部103は、直接的にデータに分類した結果を付与してもよく、次に説明する仮想ディスクドライバ105に付与を依頼してもよい。
仮想ディスクドライバ105は、仮想マシン101に対して、仮想化基盤106が提供する仮想化した記憶装置に対するデータの仲介機能(データを送信する機能とデータを受信する機能)を提供する。さらに、仮想ディスクドライバ105は、分類部103が分類した結果とともにデータを仮想化基盤106に送信する。データが分類結果を含む場合、仮想ディスクドライバ105は、データを仮想化基盤106に送信する。データが分類結果を含まない場合、仮想ディスクドライバ105は、分類結果とデータとを、仮想化基盤106に送信する。
仮想化した記憶装置とは、仮想化基盤106が記憶装置200及びキャッシュ107を仮想化して、仮想マシン101に提供する記憶装置である。
次に、仮想化基盤106の詳細を説明する。
仮想化基盤106は、データ保存部120と、キャッシュ107と、送受信キュー109と、多重化部108とを含む。
キャッシュ107は、仮想マシン101から保存を依頼されたデータの少なくとも一部を保存する。キャッシュ107は、仮想化基盤106が動作する情報処理装置100のメモリを用いて構成される。キャッシュ107は、複数の仮想マシン101からアクセス可能である。キャッシュ107は、複数の仮想マシン101から共有可能な領域を備えている共有キャッシュである。
仮想マシン101で動作するアプリケーションなどからのキャッシュ107へのアクセスは、記憶装置200へのアクセスに対して高速である。一般的に、キャッシュ107に対するアクセス時間は、記憶装置200に対するアクセス時間に比べ、数十分の一から数百分の一である。そのため、キャッシュ107へのアクセスにおける待ち合わせが発生しても、待ち合わせ時間は短い。その結果、キャッシュ107へのアクセスは、記憶装置200へのアクセスに比べ、競合が発生しにくい。
以下の説明において、キャッシュ107は、キャッシュ107におけるデータを管理する機能を含む。例えば、以下の説明において、キャッシュ107は、保存しているデータを記憶装置200に書き出す処理を実行する。ただし、これは、第1の実施形態を限定するものではない。例えば、情報処理装置100は、図示しないキャッシュ107を制御するキャッシュ制御部を備えていてもよい。この場合、キャッシュ制御部が、キャッシュ107におけるデータの移動などを制御する。
キャッシュ107におけるデータの構造は、限定されない。キャッシュ107におけるデータの構造は、仮想化基盤106の仕様に沿って決定されればよい。
なお、キャッシュ107に保存されたデータは、一般的に、バックグラウンドで動作する保存処理が、所定の周期、又は、所定のタイミングで、所定のキャッシュ・アルゴリズムを用いて記憶装置200に書き込む。情報処理装置100は、一般的なキャッシュ・アルゴリズムを用いればよい。キャッシュ・アルゴリズムは、例えば、Least Recently Used(LRU)、又は、Least Frequently Used(LFU)である。
なお、キャッシュ107は、キャッシュ107における空き領域が所定の量より少なくなるまで、記憶装置200に書き出したデータを保持してもよい。
送受信キュー109は、記憶装置200に保存するデータを送信し、記憶装置200から保存しているデータを受信するキューである。送受信キュー109は、記憶装置200と情報処理装置100との間における処理の時間的な差を吸収するため、データの先入れ先出し処理を実行する。なお、送受信キュー109は、データの先入れ先出し処理に加え、優先度に基づいた処理を実行してもよい。
データ保存部120は、仮想マシン101から、分類結果とともにデータを受信すると、分類結果を基にデータをキャッシュ107又は記憶装置200に保存する。
具体的には、データ保存部120は、次のように動作する。
「多重使用データ」は、複数の仮想マシン101から同時並行的にアクセスされる。記憶装置200への同時並行的なアクセスを避けるため、データ保存部120は、多重使用データに分類されたデータをキャッシュ107(共有キャッシュ)に保存する。
「単独使用データ」は、仮想マシン101から同時並行的にはアクセスされない。そこで、「単独使用データ」の場合、データ保存部120は、送受信キュー109を介して、単独使用データに分類されたデータを記憶装置200に保存する。
キャッシュ107は、メモリを用いて構成されている。メモリは、情報処理装置100の電源断などでデータが消失する可能性がある。信頼性を向上するためには、キャッシュ107に保存されているデータは、望ましくは、他の情報処理装置100などとで多重化された方がよい。
また、複数の装置がデータを共有する場合、一般的なシステムでは、共有されるデータは、複数の装置からアクセス可能な記憶装置に保存される。この場合、複数の装置が、その記憶装置にアクセスする。その結果、記憶装置への同時並行的なアクセスが発生する可能性がある。
しかし、他の情報処理装置100がキャッシュ107にそのデータを保存すると、他の情報処理装置100において動作する仮想マシン101は、そのデータへのアクセスとして、キャッシュ107へのアクセスを実行する。その結果、他の情報処理装置100から記憶装置200へのアクセスが低減される。
そこで、多重化部108は、他の情報処理装置100にデータの保存を依頼して、キャッシュ107に保存したデータの多重化を実行する。多重化部108は、図示しない所定の通信網を介して他の情報処理装置100の多重化部108との通信を実現している。
多重化部108は、キャッシュ107にデータが保存されると、他の情報処理装置100に対して、そのデータを他の情報処理装置100のキャッシュ107に保存することを依頼する。
多重化部108は、キャッシュ107に保存された全てのデータではなく、一部のデータを多重化してもよい。例えば、仮想マシン101は、処理速度を関係で、その仮想マシン101が単独で一時的に使用するデータをキャッシュ107に保存する場合がある。この場合、多重化部108は、そのデータを多重化しなくてもよい。
あるいは、多重化部108は、所定の基準を基に、保存を依頼する情報処理装置100を選択してもよい。例えば、多重化部108は、データを作成した仮想マシン101、又は、仮想マシン101において動作するジョブがデータを共有する情報処理装置100に対して、多重化を依頼してもよい。
さらに、多重化部108は、保存を依頼するデータを管理するための情報を保持してもよい。例えば、他の情報処理装置100が、所定の処理を終了するまで、多重化の依頼に応答できない場合がある。そこで、多重化部108は、多重化の依頼先となる情報処理装置100毎に、データの多重化を依頼するための管理情報(例えば、リスト)を作成し、管理情報に沿って多重化を依頼してもよい。
多重化部108は、他の情報処理装置100から、データのキャッシュ107への保存の依頼を受信すると、依頼元の情報処理装置100と関連付けてそのデータをキャッシュ107に保存する。多重化部108は、依頼されたデータと依頼元の情報処理装置100とを関連付けた情報を保持する。
既に説明したとおり、他の情報処理装置100がキャッシュ107にデータを保存すると、他の情報処理装置100において動作する仮想マシン101からそのデータへのアクセスは、キャッシュ107へのアクセスとなる。その結果、他の情報処理装置100から記憶装置200へのアクセスが、低減される。
さらに、多重化部108は、キャッシュ107に保存したデータを記憶装置200に書き出した場合、保存を依頼した他の情報処理装置100に、データを記憶装置200に保存したことを通知してもよい。その際、多重化部108は、記憶装置200に書き出したデータについて、他の情報処理装置100に、データの削除を依頼してもよい。つまり、多重化部108は、記憶装置200に書き出したデータの多重化をやめてもよい。この場合、他の情報処理装置100におけるキャッシュ107の使用可能容量が、増加する。なお、他の情報処理装置100において動作する仮想マシン101がそのデータを使用中の場合、他の情報処理装置100は、その仮想マシン101がデータの使用を終了するまで、キャッシュ107にデータを保存してもよい。
多重化部108は、キャッシュ107に保存したデータの保存が必要なくなった場合(例えば、そのデータを使用したジョブ又はアプリケーションの終了)、データの保存を依頼した他の情報処理装置100に、保存したデータの削除を依頼する。他の情報処理装置100の多重化部108は、削除の依頼を受けたデータを削除する。ただしこの場合も、他の情報処理装置100において動作する仮想マシン101がそのデータを使用中の場合、他の情報処理装置100は、その仮想マシン101がデータの使用を終了するまで、キャッシュ107にデータを保存してもよい。
[動作の説明]
次に、第1の実施形態に係る情報処理装置100の動作について、図面を参照して説明する。
図2は、第1の実施形態に係る仮想マシン101におけるデータの書き込み動作の一例を示すフロー図である。
仮想マシン101においてデータの書き込みが発生した場合、分類部103は、所定の分類ルール(例えば、図9に示されている分類ルール)に基づいて、データを、多重使用データ又は単独使用データに分類する(ステップS321)。
データが多重使用データの場合(ステップS322でYes)、分類部103は、データに「多重使用データ」を示す分類結果を付与する(ステップS323)。
データが単独使用データの場合(ステップS322でNo)、分類部103は、データに「単独使用データ」を示す分類結果を付与する(ステップS324)。
分類部103が分類結果を付与するやり方は、限定されない。例えば、情報処理装置100は、仮想マシン101が仮想化基盤106に送信するデータにおいて未使用の領域に、分類結果として使用する領域(例えば、フラグ)を確保してもよい。あるいは、情報処理装置100は、データの形式を拡張して、新たな領域を追加してもよい。
なお、仮想マシン101は、分類結果をデータに付与せず、別情報として動作してもよい。例えば、分類部103は、分類結果とデータとを仮想ディスクドライバ105に渡してもよい。
仮想ディスクドライバ105は、仮想化基盤106に、分類結果とデータとを送信し、データの保存を依頼する(ステップS325)。
図3は、第1の実施形態に係るデータ保存部120におけるデータを保存する動作の一例を示すフロー図である。
仮想化基盤106のデータ保存部120は、仮想マシン101からデータの保存の依頼を受けると、データとともに送信された分類結果を確認する(ステップS331)。
分類結果が多重使用データの場合(ステップS332でYes)、データ保存部120は、データをキャッシュ107に保存する。
分類結果が単独使用データの場合(ステップS332でNo)、データ保存部120は、データを送受信キュー109に登録する(ステップS334)。
送受信キュー109は、登録されたデータを記憶装置200に保存する(ステップS335)。
図4は、第1の実施形態に係るキャッシュ107におけるデータを保存する動作の一例を示すフロー図である。図4に示されている動作において、キャッシュ107は、データの重複を回避する。キャッシュ107は、重複回避のため、ハッシュ値を用いる。なお、キャッシュ107は、重複回避のために別のやり方を用いてもよい。
キャッシュ107は、データ保存部120から保存するためのデータを受け取ると以下の動作を実行する(ステップS341)。
キャッシュ107は、受信したデータが、既にキャッシュ107に保存済みのデータであるか否かを確認する(ステップS342)。より詳細には、キャッシュ107は、次のような確認を実行する。まず、キャッシュ107は、保存を依頼されたデータ(依頼データ)のハッシュ値を算出する。そして、キャッシュ107は、キャッシュ107に保存されているデータ(保存済みのデータ)のハッシュ値と、算出した依頼データのハッシュ値とを比較する。
データのハッシュ値が一致した場合、キャッシュ107は、保存済みのデータと依頼データと比較する。
保存済みデータと依頼データとが一致した場合、キャッシュ107は、保存済みデータがあると判定する。
ハッシュ値が一致しない場合又はデータが一致しない場合、キャッシュ107は、保存済みのデータがないと判定する。
データが保存されている場合(ステップS342でYes)、キャッシュ107は、処理を終了する。なお、構造体のように、データが複数の内容を含み、キャッシュ107が一部の内容が一致した場合に一致と判定する場合、キャッシュ107は、受信したデータを用いて、保存済みのデータを更新する(ステップS343)。
データが保存されていない場合(ステップS342でNo)、キャッシュ107は、データを保存できるか否かを確認する(ステップS344)。具体的には、キャッシュ107は、データを保存するための空き領域がキャッシュ107にあるか否かを確認する。
保存する空き領域がない場合(ステップS344でNo)、キャッシュ107は、所定の手法に沿って、キャッシュ107に保存されているデータの一部を記憶装置200に書き出す(ステップS345)。キャッシュ107は、所定の手法として、LRU又はLFUなど、バックグラウンドで動作するキャッシュ・アルゴリズムと同じ手法を用いればよい。そして、キャッシュ107は、書き出したデータの領域を開放する。そして、キャッシュ107は、ステップS344に戻る。つまり、キャッシュ107は、受信したデータを保存できるまで、領域の開放を繰り返す。
保存する空き領域がある場合(ステップS344でYes)、キャッシュ107は、受信したデータを保存する(ステップS346)。
キャッシュ107は、適宜、保存するデータに関する管理情報を更新する。
なお、キャッシュ107が重複の回避を管理しない場合、キャッシュ107は、ステップS342及びステップS343を含まなくてもよい。
図8は、第1の実施形態に係るキャッシュ107が保存するデータを管理する情報の一例を示す図である。
図8に示されている管理情報は、キャッシュ107が所定のデータのブロックを用いてデータを管理する場合の管理情報である。管理情報は、キャッシュ107に保存されてもよく、図示しない情報処理装置100における他のメモリに保存されてもよい。
管理情報は、ブロック識別子と、依頼先識別子と、先頭アドレスとを含む。さらに、管理情報は、保存するデータに関する情報の組を少なくとも一つ含む。情報の組は、次アドレスと、データアドレスと、フラグと、依頼元識別子と、ハッシュ値とを含む。
ただし、図8に示されている管理情報及び情報の組は、例示である。管理情報及び情報の組は、他の情報を含んでもよい。管理情報及び情報の組は、情報の一部を含まなくてもよい。管理情報及び情報の組は、キャッシュ107の管理のやり方に沿って決定される。
ブロック識別子は、ブロックを一意に識別するための識別子(管理情報の識別子)である。ブロック識別子は、他の情報を含んでもよい。例えば、ブロックに種別がある場合、ブロック識別子は、種別を含んでもよい。
依頼先識別子は、データを保存しているキャッシュ107を含む情報処理装置100の識別子である。他の情報処理装置100の多重化部108から多重化を依頼されたデータの場合、キャッシュ107を含む情報処理装置100は、依頼先となる。そのため、図8は、キャッシュ107を含む情報処理装置100の識別子を「依頼先識別子」と表現している。
先頭アドレスは、最初の情報の組が保存されているアドレスである。なお、図8に示されている管理情報において、組の大きさは、一定である。そのため、先頭アドレスは、最初の組の開始アドレスを保持する。組の大きさが変化する場合、先頭アドレスは、最初の組の開始アドレスに加え、組に長さを含んでもよい。ただし、情報の組が、長さを含んでもよい。
次アドレスは、次の組のアドレスである。次アドレスは、先頭アドレスと同様に、組の長さを含んでもよい。
次の組がない場合、次アドレスは、次の組がないことを示す情報(例えば、自分のアドレス、又は、ブランク)を保持する。
データアドレスは、キャッシュ107におけるデータの保存アドレスである。
フラグは、キャッシュ107に保存されているデータが記憶装置200に保存されたか否かを示す情報である。仮想マシン101からの依頼を基にキャッシュ107に保存されたデータのフラグの初期状態は、「未保存」である。キャッシュ107に保存されたデータが記憶装置200に保存されると、フラグは、「未保存」から「保存済み」に変更される。なお、キャッシュ107に保存されたデータが記憶装置200から読み出したデータの場合、フラグの初期値は「保存済み」である。また、キャッシュ107において「保存済み」のデータを変更した場合、フラグは、「未保存」に変更される。
フラグは、キャッシュ107におけるデータと、記憶装置200におけるデータとが一致しているか否かを示す情報である。
依頼元識別子は、データの保存を依頼した情報処理装置100の識別子である。自装置の仮想マシン101のデータの場合、依頼元識別子は、自装置の識別子となる。他の情報処理装置100の多重化部108から保存を依頼されたデータの場合、依頼元識別子は、依頼してきた情報処理装置100の識別子である。
依頼元識別子は、他の情報を含んでもよい。例えば、依頼元識別子は、情報処理装置100の識別子に加え、仮想マシン101の識別子を含んでもよい。
ハッシュ値は、保存されているデータのハッシュ値である。
図5は、第1の実施形態に係るキャッシュ107におけるデータの書き出しの動作の一例を示すフロー図である。
キャッシュ107は、バックグラウンドの動作として所定の周期、又は、所定のタイミングにおいて、次に説明する動作を実行する。さらに、キャッシュ107は、データ保存部120からデータの保存を依頼されたときに保存する領域がない場合にも、ステップS353以降の動作を実行して領域を確保する。
キャッシュ107は、キャッシュ107において領域の開放が必要か否かを確認する(ステップS351)。領域の開放が必要か否かの判定条件は、キャッシュ107を管理するやり方に沿って決定されればよい。例えば、開放が必要な場合とは、キャッシュ107の空き領域が、所定の閾値より少ない場合である。あるいは、開放が必要な場合とは、キャッシュ107に保存されているデータに対して、所定の時間を越えてアクセスがない場合である。
領域の開放が必要でない場合(ステップS352でNo)、キャッシュ107は、動作を終了する。
領域の開放が必要な場合(ステップS352でYes)、キャッシュ107は、記憶装置200に書き出すデータを選択する(ステップS353)。キャッシュ107は、所定のキャッシュ・アルゴリズム(例えば、LRU又はLFU)を用いてデータを選択する。
キャッシュ107は、選択したデータを記憶装置200に書き出す。具体的には、キャッシュ107は、選択してデータを送受信キュー109に追加する(ステップS354)。
キャッシュ107は、データが送受信キュー109から記憶装置200に保存されると、選択したデータ(書き出したデータ)の領域を開放する(ステップS355)。なお、キャッシュ107は、データを送受信キュー109に追加したときに、領域を開放してもよい。
なお、キャッシュ107は、適宜、キャッシュ107に保存するデータに関する管理情報を更新する。
さらに、キャッシュ107は、送受信キュー109の状態を基づいて、動作を変更してもよい。
例えば、キャッシュ107は、送受信キュー109に積まれたデータ量に応じて、送受信キュー109に追加するデータ量を変更してもよい。具体的には、キャッシュ107は、送受信キュー109に積まれたデータ量が所定の閾値より少ない場合に追加するデータ量を、送受信キュー109に積まれたデータ量がその閾値より多い場合に比べ、多くしてもよい。
図6は、第1の実施形態に係る多重化部108における多重化の依頼を送信する動作の一例を示すフロー図である。
多重化部108は、データ保存部120において、多重使用データと分類されたデータがキャッシュ107に保存されたか否かを確認する(ステップS361)。ここにおけるデータの保存は、データの追加及びデータの更新を含む。
データが保存されていない場合(ステップS361でNo)、多重化部108は、処理を終了する。
データが保存された場合(ステップS361でYes)、多重化部108は、他の情報処理装置100の多重化部108に、多重使用データと分類されてキャッシュ107に保存されたデータの保存を依頼する(ステップS362)。依頼の際、多重化部108は、データとともに情報処理装置100の識別子を送信する。
図7は、第1の実施形態に係る多重化部108における多重化の依頼を受信した際の動作の一例を示すフロー図である。
多重化部108は、他の情報処理装置100の多重化部108から依頼を受信する(ステップS371)。
その依頼を基に、多重化部108は、データをキャッシュ107に保存する(ステップS372)。多重化部108は、データとともに受け取った他の情報処理装置100の識別子をデータと関連付けて保存する。
なお、情報処理装置100は、信頼性を向上させるため、他の情報処理装置100から受け取りキャッシュ107に保存したデータを記憶装置200にも保存してよい。なお、保存を依頼した情報処理装置100においてデータの多重化が不要となった場合、多重化部108は、他の情報処理装置100から保存を依頼されたデータを、キャッシュ107(及び、記憶装置200)から削除する。
[効果の説明]
次に第1の実施形態に係る情報処理装置100に効果を説明する。
第1の実施形態に係る情報処理装置100は、記憶装置200への同時並行的なアクセスの発生を低減するとの効果を得ることができる。
その理由は、次のとおりである。
情報処理装置100は、記憶装置200に接続されている。情報処理装置100は、仮想マシン101と、仮想化基盤106とを含む。仮想マシン101は、分類部103を含む。分類部103は、データを、複数の仮想マシン101が使用する多重使用データ、又は、一の仮想マシン101が使用する単独使用データに分類する。仮想化基盤106は、キャッシュ107と、データ保存部120とを含む。キャッシュ107は、データを保存する。データ保存部120は、多重使用データの場合にデータをキャッシュ107に保存し、単独使用データの場合にデータを記憶装置200に保存する。
仮想マシン101は、さらに、仮想ディスクドライバ105を含む。仮想ディスクドライバ105は、データを仲介する。具体的には、仮想ディスクドライバ105は、分類の結果とデータとを仮想化基盤106に送信する。
仮想化基盤106は、さらに、送受信キュー109を含む。送受信キュー109は、データを記憶装置200に送信する。具体的には、送受信キュー109は、記憶装置200に同期してデータを送信する。
データ保存部120は、分類部103の分類結果を基に、複数の仮想マシン101からアクセスされるデータ(多重使用データ)をキャッシュ107に保存する。そのため、複数の仮想マシン101からそのデータへのアクセスは、キャッシュ107へのアクセスとなる。その結果、記憶装置200への同時並行的なアクセスの発生は、低減される。
さらに、情報処理装置100は、キャッシュ107に保存されたデータの信頼性を向上するとの効果を奏する。
その理由は、多重化部108が、他の情報処理装置100に、キャッシュ107に保存されたデータの保存を依頼するためである。
さらに、他の情報処理装置100は、上記の多重化部108の動作を基にデータをキャッシュ107に保存する。そのため、他の情報処理装置100におけるそのデータへのアクセスは、記憶装置200へのアクセスではなく、他の情報処理装置100のキャッシュ107へのアクセスとなる。その結果、情報処理装置100は、さらに記憶装置200へのアクセスを低減するとの効果を奏することができる。
また、データ保存部120は、複数の仮想マシン101からアクセスされるデータをキャッシュ107に保存する。データ保存部120は、一つの仮想マシン101からアクセスされるデータを記憶装置200に保存する。そのため、仮想マシン101の全てのデータをキャッシュ107に保存する場合に比べ、情報処理装置100は、キャッシュ107において必要される容量を削減できる。
[実施形態の概要]
ここまで説明した仮想マシン101及び仮想化基盤106に含まれる構成の位置は、一例である。これらの構成の位置は、変更となってもよい。例えば、データ保存部120は、各仮想マシン101に含まれていてもよい。
図面を参照して第1の実施形態に係る情報処理装置100の概要を説明する。
図10は、第1の実施形態に係る情報処理装置100の概要の一例である情報処理装置150の構成を示すブロック図である。
情報処理装置150は、記憶装置200に接続されている。情報処理装置150は、キャッシュ107と、分類部103と、データ保存部120とを含む。キャッシュ107は、データを保存する。分類部103は、データを、複数の仮想マシン101が使用する多重使用データ、又は、一の仮想マシン101が使用する単独使用データに分類する。データ保存部120は、多重使用データの場合にデータをキャッシュ107に保存し、単独使用データの場合にデータを記憶装置200に保存する。
このように構成された情報処理装置150は、情報処理装置100と同様の効果を得ることができる。
その理由は、情報処理装置150の各構成が、情報処理装置100の構成と同様に動作するためである。
なお、情報処理装置150は、本発明の実施形態における最小構成である。
[ハードウェア構成]
次に、情報処理装置100及び150のハードウェア構成について、情報処理装置100を用いて説明する。
例えば、情報処理装置100の各構成部は、ハードウェア回路で構成されてもよい。
あるいは、情報処理装置100において、各構成部は、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
あるいは、情報処理装置100において、複数の構成部は、1つのハードウェアで構成されてもよい。
あるいは、情報処理装置100は、プロセッサと、メモリとを含むコンピュータ装置として実現されてもよい。プロセッサは、例えば、Central Processing Unit(CPU)、又は、Micro Processing Unit(MPU)である。メモリは、例えば、Read Only Memory(ROM)と、Random Access Memory(RAM)である。
情報処理装置100は、上記構成に加え、さらに、入出力接続回路(IOC:Input and Output Circuit)を含むコンピュータ装置として実現されてもよい。情報処理装置100は、上記構成に加え、さらに、ネットワークインターフェース回路(NIC:Network Interface Circuit)を含むコンピュータ装置として実現されてもよい。
図11は、第1の実施形態に係る情報処理装置100のハードウェア構成の一例である情報処理装置600の構成を示すブロック図である。
情報処理装置600は、CPU610と、ROM620と、RAM630と、内部記憶装置640と、IOC650と、NIC680とを含み、コンピュータ装置を構成している。
CPU610は、ROM620からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、RAM630と、内部記憶装置640と、IOC650と、NIC680とを制御する。そして、CPU610を含むコンピュータは、これらの構成を制御し、図1に示されている、仮想マシン101と、仮想化基盤106としての各機能を実現する。
CPU610は、各機能を実現する際に、RAM630又は内部記憶装置640を、プログラムの一時記憶媒体として使用してもよい。
また、CPU610は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、CPU610は、NIC680を介して、図示しない外部の装置からプログラムを受け取り、RAM630又は内部記憶装置640に保存して、保存したプログラムを基に動作してもよい。
ROM620は、CPU610が実行するプログラム及び固定的なデータを記憶する。ROM620は、例えば、P-ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D-RAM(Synamic-RAM)である。RAM630の一部は、キャッシュ107として動作する。
内部記憶装置640は、情報処理装置600が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置640は、CPU610の一時記憶装置として動作してもよい。内部記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD又はディスクアレイ装置である。
ここで、ROM620と内部記憶装置640は、不揮発性(non-transitory)の記憶媒体である。一方、RAM630は、揮発性(transitory)の記憶媒体である。そして、CPU610は、ROM620、内部記憶装置640、又は、RAM630に記憶されているプログラムを基に動作可能である。つまり、CPU610は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
IOC650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IOC650は、例えば、IOインターフェースカード又はUSB(Universal Serial Bus)カードである。さらに、IOC650は、USBのような有線に限らず、無線を用いてもよい。
入力機器660は、情報処理装置600の操作者からの入力指示を受け取る機器である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、情報処理装置600の操作者に情報を表示する機器である。表示機器670は、例えば、液晶ディスプレイである。
NIC680は、ネットワークを介した、図示しない外部の装置とのデータのやり取りを中継する。NIC680は、例えば、LANカードである。さらに、NIC680は、有線に限らず、無線を用いてもよい。NIC680は、送受信キュー109の一部として動作してもよい。
このように構成された情報処理装置600は、情報処理装置100と同様の効果を得ることができる。
その理由は、情報処理装置600のCPU610が、プログラムに基づいて情報処理装置100における各構成と同様の機能を実現できるためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。