(57)【特許請求の範囲】
【請求項１】
予め設定されたブロック単位でデータの読み書きを行うローカルストレージであって、データの読み出しまたは書き込みが完了したときに、データの読み出しが完了したことを表す信号を出力するローカルストレージを具備し、利用するデータを蓄積するストレージサーバに接続された情報処理装置であって、
前記ローカルストレージに対してデータの読み書きを要求するストレージアクセス制御手段と、
前記ストレージサーバ内に、前記ローカルストレージの各ブロックに対応するブロック対応領域を仮想的に設定し、前記ローカルストレージの位置情報と、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報とを関連付けて記憶する手段と、
前記ストレージアクセス制御手段が行う、前記ローカルストレージに対するデータの読み出しの要求を受け入れて、前記ローカルストレージ内の、当該要求に係るブロックにデータが格納されていないときには、当該要求に係るブロックに格納されるべきデータを、前記ストレージサーバから取得して前記ストレージアクセス制御手段に出力する擬装処理を行うとともに、前記ローカルストレージの、前記要求に係るブロックに当該取得したデータを格納する仮想化手段と、
を有し、
前記擬装処理においては、前記ローカルストレージのブロックの位置情報を受けて、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報を取得して、前記要求に係るブロックに対応する、ストレージサーバ内のブロック対応領域からデータを取得し、
前記仮想化手段は、前記擬装処理を行ったときには、前記ストレージアクセス制御手段からの要求の有無に関わらず、ローカルストレージからデータの読み出し処理を実行して、ローカルストレージに対して前記データの読み出しが完了したことを表す信号を出力させる情報処理装置。
【請求項２】
請求項１記載の情報処理装置であって、
前記仮想化手段は、前記ストレージアクセス制御手段からの要求がない間は、前記ローカルストレージの各ブロックのうち、データの格納が行われていない空ブロックの各々について、当該空ブロックに格納するべきデータを、ストレージサーバから取得して、当該対応する空ブロックに取得したデータを書込む処理を行っており、
前記仮想化手段は、最後に前記ストレージアクセス制御手段から要求されたブロックに近い空ブロックから所定の順に空ブロックを選択し、前記ストレージサーバの、当該選択した空ブロックに対応するブロック対応領域に格納されているデータを取得して、当該対応する空ブロックに取得したデータを書込む情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置であって、
前記仮想化手段は、前記ローカルストレージにデータの格納が行われていない空ブロックがなくなったときには、以降の動作を行わないよう自己を制御する情報処理装置。
【請求項４】
利用するデータを蓄積するストレージサーバに接続され、予め設定されたブロック単位でデータの読み書きを行うローカルストレージであって、データの読み出しまたは書き込みが完了したときにデータの読み出しが完了したことを表す信号を出力するローカルストレージを備えるコンピュータであって、前記ローカルストレージに対してデータの読み書きを要求するストレージアクセス制御手段として当該コンピュータを機能させるシステムプログラムを実行するコンピュータを、
前記ストレージサーバ内に、前記ローカルストレージの各ブロックに対応するブロック対応領域を仮想的に設定し、前記ローカルストレージの位置情報と、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報とを関連付けて記憶する手段と、
前記ストレージアクセス制御手段が行う、前記ローカルストレージに対するデータの読み出しの要求を受け入れる手段と、
前記ローカルストレージ内の、当該要求に係るブロックにデータが格納されていないときには、前記受け入れた要求に係るブロックに格納されるべきデータを、前記ストレージサーバから取得して前記ストレージアクセス制御手段に出力する擬装処理を行うとともに、前記ローカルストレージの、前記要求に係るブロックに当該取得したデータを格納する仮想化手段と、
として機能させ、
前記擬装処理においては、前記ローカルストレージのブロックの位置情報を受けて、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報を取得して、前記要求に係るブロックに対応する、ストレージサーバ内のブロック対応領域からデータを取得させ、
前記仮想化手段として機能させる際に、前記擬装処理を行ったときには、前記ストレージアクセス制御手段からの要求の有無に関わらず、ローカルストレージからデータの読み出し処理を実行させて、ローカルストレージに対して前記データの読み出しが完了したことを表す信号を出力させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラム
【背景技術】
【０００２】
コンピュータハードウェアをソフトウェア的に仮想化して、複数のオペレーティングシステムを並列的に動作させたり、あるいはオペレーティングシステム側からハードウェアへのアクセスを管理する仮想化システムが存在する。例えば、特許文献１には、コンピュータのメモリ装置へのアクセスのトレースを取得するトレーサが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１９７２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の仮想化システムでは、ストレージデバイスへのアクセスも仮想化するため、現実のストレージデバイス内のデータ格納ブロックを特定する論理ブロックアドレス（ＬＢＡ）とは異なる仮想化されたアドレスが設定され、仮想化システム上で動作するオペレーティングシステムは、この仮想化されたアドレスによりデータアクセスを行い、仮想化システムにおいてこの仮想化されたアドレスを実際の論理ブロックアドレスに変換してストレージデバイスへのアクセスを行うこととしていた。このため、従来の仮想化システムでは、仮想化システムを後から取り去るといったことができず、運用の自由度が制限されるという問題点があった。
【０００５】
また仮に、現実のストレージデバイス内のデータ格納ブロックを特定する論理ブロックアドレス（ＬＢＡ）と同じ仮想化されたアドレスが設定された場合であっても、従来の仮想化システムでは、現実のストレージデバイスとは異なる挙動を示す、仮想化されたデバイスとしてＯＳ側に認識させるので、仮想化システムを後から取り去るといったことができなかった。
本発明は上記実情に鑑みて為されたもので、運用の自由度を向上できる情報処理装置、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００６】
上記従来例の問題点を解決する本発明は、予め設定されたブロック単位でデータの読み書きを行うローカルストレージを具備し、利用するデータを蓄積するストレージサーバに接続された情報処理装置であって、前記ローカルストレージに対してデータの読み書きを要求するストレージアクセス制御手段と、前記ストレージアクセス制御手段が行う、前記ローカルストレージに対するデータの読み出しの要求を受け入れて、前記ローカルストレージ内の、当該要求に係るブロックにデータが格納されていないときには、当該要求に係るブロックに格納されるべきデータを、前記ストレージサーバから取得して前記ストレージアクセス制御手段に出力する擬装処理を行うとともに、前記ローカルストレージの、前記要求に係るブロックに当該取得したデータを格納する仮想化手段と、を有し、前記擬装処理においては、前記ストレージサーバ内に、前記ローカルストレージの各ブロックに対応するブロック対応領域を仮想的に設定し、前記ローカルストレージのブロックの位置情報を受けて、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報を用いて、前記要求に係るブロックに対応する、ストレージサーバ内のブロック対応領域からデータを取得することとしたものである。
【０００７】
またここで前記仮想化手段は、前記擬装処理を行ったときには、前記ストレージアクセス制御手段からの要求の有無に関わらず、ローカルストレージからデータの読み出し処理を実行することとしてもよい。
【０００８】
さらに前記仮想化手段は、前記ストレージアクセス制御手段からの要求がない間は、前記ローカルストレージの各ブロックのうち、データの格納が行われていない空ブロックの各々について、当該空ブロックに格納するべきデータを、ストレージサーバから取得して、当該対応する空ブロックに取得したデータを書込む処理を行っており、前記仮想化手段は、最後に前記ストレージアクセス制御手段から要求されたブロックに近い空ブロックから所定の順に空ブロックを選択し、前記ストレージサーバの、当該選択した空ブロックに対応するブロック対応領域に格納されているデータを取得して、当該対応する空ブロックに取得したデータを書込むこととしてもよい。
【０００９】
また前記仮想化手段は、前記ローカルストレージにデータの格納が行われていない空ブロックがなくなったときには、以降の動作を行わないよう自己を制御するようにしてもよい。
【００１０】
さらに本発明の一態様に係るプログラムは、利用するデータを蓄積するストレージサーバに接続され、予め設定されたブロック単位でデータの読み書きを行うローカルストレージを備えるコンピュータであって、前記ローカルストレージに対してデータの読み書きを要求するストレージアクセス制御手段として当該コンピュータを機能させるシステムプログラムを実行するコンピュータを、前記ストレージアクセス制御手段が行う、前記ローカルストレージに対するデータの読み出しの要求を受け入れる手段と、前記ローカルストレージ内の、当該要求に係るブロックにデータが格納されていないときには、前記受け入れた要求に係るブロックに格納されるべきデータを、前記ストレージサーバから取得して前記ストレージアクセス制御手段に出力する擬装処理を行うとともに、前記ローカルストレージの、前記要求に係るブロックに当該取得したデータを格納する仮想化手段と、として機能させ、前記擬装処理においては、前記ストレージサーバ内に、前記ローカルストレージの各ブロックに対応するブロック対応領域を仮想的に設定し、前記ローカルストレージのブロックの位置情報を受けて、当該位置情報で特定されるブロックに対応する、前記ブロック対応領域を特定する対応領域特定情報を用いて、前記要求に係るブロックに対応する、ストレージサーバ内のブロック対応領域からデータを取得させることとしたものである。
【発明の効果】
【００１１】
本発明によると、仮想化システムを後から取り去ることも可能となり、運用の自由度が向上できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る情報処理装置の構成例と接続例とを表すブロック図である。
【図２】本発明の実施の形態に係る情報処理装置の例を表す機能ブロック図である。
【図３】本発明の実施の形態に係る情報処理装置が管理する対応情報と書込有無情報の例を表す説明図である。
【図４】本発明の実施の形態に係る情報処理装置の複写の処理例を表すフローチャート図である。
【図５】本発明の実施の形態に係る情報処理装置によるデータ読み出し動作の例を表すフローチャート図である。
【発明を実施するための形態】
【００１３】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理装置１は、図１に例示するように、制御部１１と、メモリ部１２と、ローカルストレージとしてのストレージ部１３と、操作部１４と、表示部１５と、通信部１６と、不揮発記憶部１７とを含んで構成され、ネットワーク等の通信手段を介してストレージサーバ２に通信可能に接続されている。
【００１４】
本実施の形態ではストレージ部１３は、ブロック（セクタ）単位で読み書きが行われる一般的なデバイスであり、例えばハードディスクドライブやＳＳＤ（Solid State Drive）等により構成される。一般にストレージ部１３は、データの読み出しまたは書き込みが完了すると、データの読み出しまたは書き込みが完了したことを表す割込信号（int）を制御部１１に対して出力する。
【００１５】
制御部１１は、ＣＰＵ等のプログラム制御デバイスであり、メモリ部１２に格納されたプログラムに従って動作する。本実施の形態では、この制御部１１は、ハイパーバイザとしてのプログラムを実行して、本発明の取得手段と仮想化手段としての機能（以下「仮想化部の機能」と呼ぶ）を実現するほか、オペレーティングシステム（ＯＳ）としてのプログラムを実行してオペレーティングシステムの動作を行っている。さらにこの制御部１１は、ＯＳの機能を利用するアプリケーションプログラム等を実行している。
【００１６】
本実施の形態において制御部１１は、起動時に、仮想化部の機能を実現するプログラムを取得してメモリ部１２に格納し、その処理を開始する。このために制御部１１は、まず、仮想化部の機能を実現するプログラムを取得して実行開始し、次いでオペレーティングシステムとしてのプログラムを取得するように機能する。
【００１７】
また制御部１１は、この仮想化部の機能を実現するプログラムを実行することで、次のように動作する。すなわち制御部１１は、仮想化部の機能として、ストレージサーバ２内にストレージ部１３の各ブロックに対応するブロック対応領域を仮想的に設定し、ストレージ部１３のブロックの位置情報（論理ブロックアドレス：ＬＢＡ）と、当該位置情報で特定されるブロックに対応する、ブロック対応領域を特定する対応領域特定情報とを関連付けて対応情報として記憶しておく。
【００１８】
また、仮想化部として動作する制御部１１は、ＯＳとしての機能を実行するプログラムの処理により、ストレージ部１３に対するデータの読み出しの要求が発生すると、ストレージ部１３内の、当該要求に係るブロックにデータが格納されているか否かを判断し、データが格納されていないときには、記憶している対応情報を参照して、当該要求に係るブロックに対応するブロック対応領域を特定し、ストレージサーバ２の当該特定したブロック対応領域からデータを取得する。つまり仮想化部として動作する制御部１１は、ストレージ部１３に対するデータの読み出しの要求が発生したときに、当該要求に係るブロックにデータが格納されていないときには、当該ブロックに格納するべきデータをストレージサーバ２から取得することとなる。そして仮想化部として動作する制御部１１は、当該取得したデータをＯＳに対して出力する擬装処理を行うとともに、ストレージ部１３の、要求に係るブロックに、当該取得したデータを格納する処理を行う。この制御部１１による仮想化部としての動作については、後に詳しく述べる。
【００１９】
メモリ部１２は、ＲＯＭ（Read Only Memory）等の不揮発性のメモリデバイスやＲＡＭ（Random Access Memory）を含んで構成される。このメモリ部１２は制御部１１により実行される各種プログラムを記憶している。本実施の形態において、プログラムは、コンピュータ可読かつ非一時的な記憶媒体に格納されて提供され、このメモリ部１２に格納されたものでよい。
【００２０】
本実施の形態の一例においては、仮想化部の機能を実現するプログラムは、不揮発性のメモリデバイスに格納され、情報処理装置１の電源投入時には、ストレージ部１３へのアクセスやストレージサーバ２へのアクセスを要することなく、実行可能となっているようにしておく。
【００２１】
さらに本実施の別の一例では、仮想化のプログラムがネットワーク等の通信手段を介してアクセス可能なディスクデバイスに格納されており、いわゆるネットワークブートによってメモリ部１２に読み込まれて実行されるようになっていてもよい。このようなネットワークブートの処理については広く知られているので、ここでの詳しい説明を省略する。
【００２２】
操作部１４は、キーボードやマウス等であり、利用者の操作を受け入れて、当該操作の内容を表す情報を、制御部１１に対して出力する。表示部１５は、ディスプレイ等であり、制御部１１から入力される指示に従い、情報を表示出力する。
【００２３】
通信部１６は、ネットワークインタフェース等であり、制御部１１から入力される指示に従い、種々のデータや要求を送受信する。具体的にこの通信部１６は、仮想化部として機能する制御部１１から入力される指示に従い、ストレージサーバ２に対してデータの読み出しの要求を送出する。またこの通信部１６は、当該要求に応じてストレージサーバ２から受信されるデータを、制御部１１に出力する。なお、情報処理装置１がＤＭＡ機能を有している場合は、この通信部１６は、受信したデータを、制御部１１を通さずに、メモリ部１２に直接格納してもよい。
【００２４】
さらに本実施の形態において通信部１６は、オペレーティングシステムとして機能する制御部１１から入力される指示に従い、ネットワークを介して接続される各種サーバ装置（例えばウェブサーバ等）や、プリンタ等のデバイスとの間でデータを送受する。
不揮発記憶部１７は、情報処理装置１の再起動時や電源遮断時においてもその記憶内容を保持する記憶手段であり、具体的には、ストレージ部１３とは異なるハードディスクドライブ等のディスクドライブ装置によって構成されてもよい。また、この不揮発記憶部１７は、ストレージ部１３の一部領域であって、ＯＳが使用しない領域（ＯＳから隠蔽されたパーティション等）であってもよい。この場合ストレージ部１３は、不揮発記憶部１７を一部に含むこととなる。
【００２５】
ストレージサーバ２は、例えばネットワークストレージデバイスであり、ハードディスクドライブ等のディスクデバイスを含んで構成される。本実施の形態の一例においてこのストレージサーバ２のディスクデバイスには、情報処理装置１のローカルストレージであるストレージ部１３と同サイズの仮想的なディスクドライブが設定されて記憶されている。このような仮想的なディスクドライブは広く知られている（例えばunix系オペレーティングシステムにおけるddコマンドで作成できるファイル等）のでここでの詳しい説明を省略する。
【００２６】
次に本実施の形態の制御部１１の動作について説明する。本実施の形態では、この制御部１１は、図２に例示するように、機能的には、オペレーティングシステムとしての機能を実現するＯＳ機能部３０と、仮想化部の機能を実現する仮想化機能部４０とを含んで構成される。また、この仮想化機能部４０は、対応情報管理部４１と、アクセス検出部４２と、判断部４３と、擬装処理部４４と、仕上処理部４５と、ローカルアクセス部４６と、複写処理部４７と、機能停止制御部４８と、を基本的に含んで構成される。
ここでＯＳ機能部３０は、ユーザの操作部１４からの操作に応じて動作し、表示部１５等に情報を表示するアプリケーションプログラムの動作を管理しており、アプリケーションプログラムからの要求を受けてストレージ部１３へのアクセス等を行うものである。
【００２７】
対応情報管理部４１は、ストレージ部１３のブロックの位置情報（具体的にはＬＢＡ）に関連付けて、当該位置情報で特定されるブロックに対応する、ストレージサーバ２に設定された仮想的なディスクドライブ内のブロック対応領域を特定する対応領域特定情報（Ｒ）を関連付けて対応情報として不揮発記憶部１７に記憶する（図３）。また本実施の形態では、ストレージ部１３のブロックの位置情報ごとに、当該位置情報で特定されたブロックに対してデータを書込んだか否かを表す情報（書込有無情報（Ｗ））を関連付けて不揮発記憶部１７に記憶しているものとする。
【００２８】
アクセス検出部４２は、ＯＳ機能部３０により発行される、データの読出命令または書込命令を検出する。この読出命令または書込命令には、ストレージ部１３のブロックの位置情報が含まれる。ここでアクセス検出部４２が、書込命令を検出しているときには、ＯＳ機能部３０は当該書込命令とともに書込の対象となるデータも併せて出力している。
【００２９】
判断部４３は、アクセス検出部４２が検出した命令に応じて、処理方法を決定する。具体的にこの判断部４３は、アクセス検出部４２が検出した命令が書込命令であれば、当該書込命令に含まれ、あるいは当該書込命令とともにＯＳ機能部３０が出力する、ストレージ部１３のブロックの位置情報と、書込の対象となるデータとを、書込の指示とともにローカルアクセス部４６に出力する。
【００３０】
またこの判断部４３は、アクセス検出部４２が検出した命令が読出命令であるときには、当該読出命令に含まれる、ストレージ部１３のブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）を取得する。判断部４３は、ここで書込有無情報（Ｗ）が、ブロックに対してデータを書き込んだことを表すものとなっているときには、アクセス検出部４２が検出した読出命令に含まれる、ストレージ部１３のブロックの位置情報を、読出しの指示とともにローカルアクセス部４６に出力する。
【００３１】
判断部４３は、さらに、取得した書込有無情報（Ｗ）が、ブロックに対してデータを書き込んでいないことを表すものとなっているとき（当該ブロックが空ブロックである場合）には、アクセス検出部４２が検出した読出命令に含まれる、ストレージ部１３のブロックの位置情報に関連付けて不揮発記憶部１７に格納されている対応領域特定情報（Ｒ）を参照し、ＯＳ機能部３０から受け入れたストレージ部１３のブロックの位置情報と、当該対応領域特定情報（Ｒ）と、読出しの指示とを擬装処理部４４に出力する。
【００３２】
擬装処理部４４は、判断部４３から対応領域特定情報（Ｒ）と、読出しの指示との入力を受け入れると、通信部１６を介してストレージサーバ２にアクセスし、ストレージサーバ２に格納されている仮想ディスクドライブ内の対応領域特定情報で特定される領域からデータを取得する。擬装処理部４４は、当該取得したデータをＯＳ機能部３０に対して出力するとともに、仕上処理部４５に対して処理を要求する。
【００３３】
さらにこの擬装処理部４４は、取得したデータを、判断部４３から受け入れたブロックの位置情報で特定されるストレージ部１３内のブロックに書き込む。そして擬装処理部４４は、当該データを書き込んだブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新する。
【００３４】
仕上処理部４５は、擬装処理部４４から処理の要求を受け入れると、ストレージ部１３の任意のブロックからデータを読み出す。このデータの読み出しはダミーの処理であり、ＯＳ機能部３０からのデータ読み出しの要求とは関わりなく（要求の有無に関わらず）行われる。上記任意のブロックは、予め定められたブロックのデータを読み出すこととしてもよいし、仮想化機能部４０により最後にアクセスされたブロックまたはそれに隣接するブロックのデータを読み出すこととしてもよい。仕上処理部４５がこのデータ読み出しを行うことにより、ストレージ部１３からはデータの読み出しが完了したことを表す割込信号が制御部１１に対して出力されることとなる。
【００３５】
ローカルアクセス部４６は、判断部４３からストレージ部１３のブロックの位置情報と、書込の対象となるデータと、書込の指示との入力を受けると、当該位置情報で特定されるブロックに対して、受け入れたデータを書き込むよう、ストレージ部１３に対して指示する。
【００３６】
なお、ローカルアクセス部４６はこのとき、ストレージ部１３に対する別のアクセスが発生している場合には、当該アクセスの終了まで待ってから受け入れたデータを書き込むよう、ストレージ部１３に対して指示を行うこととしてもよいし、複数のアクセスを並列して処理可能な場合（Native Command Queuing:NCQ機能を有している場合等）は、それぞれを並列して処理してもよい。このアクセスの終了を待っている間、ローカルアクセス部４６は、ストレージ部１３の状況に関る情報を、ＯＳ機能部３０に対してアクセスが行われていないかのように擬装してもよい。つまりＯＳ機能部３０からは、データの書き込みが完了しているかのように擬装することとしてもよい。
【００３７】
またこのローカルアクセス部４６は、判断部４３からストレージ部１３のブロックの位置情報と、読出しの指示との入力を受けると、ストレージ部１３の当該位置情報で特定されるブロックからデータを読み出して、ＯＳ機能部３０へ出力する。このときには、ストレージ部１３は、当該データの読み出しが完了したときに、データの読み出しが完了したことを表す割込信号を制御部１１に対して出力することとなる。
【００３８】
複写処理部４７は、不揮発記憶部１７に格納されている書込有無情報（Ｗ）を参照し、データを書き込んでいないことを表すものとなっている書込有無情報に関連付けられているブロック（空ブロック）の位置情報を抽出する。そしてこの複写処理部４７は、抽出した空ブロックの位置情報のうちから所定の規則に従って位置情報を一つ選択する。そして複写処理部４７は、当該位置情報に関連付けて不揮発記憶部１７に格納されている対応領域特定情報（Ｒ）を読み出す。複写処理部４７は通信部１６を介してストレージサーバ２にアクセスし、ストレージサーバ２に格納されている仮想ディスクドライブ内の当該読み出した対応領域特定情報で特定される領域からデータを取得し、選択した位置情報で特定されるブロックに当該取得したデータを書き込むよう、ストレージ部１３に指示する。
【００３９】
複写処理部４７は、そして、当該データを書き込んだブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新する。
【００４０】
さらに、この複写処理部４７は、不揮発記憶部１７に格納されている書込有無情報（Ｗ）を参照し、データを書き込んでいないことを表す情報に関連付けられたブロック（空ブロック）がない場合（すべてのブロックに対してデータを書き込んだ場合）には、機能停止制御部４８に対して機能停止を指示する。
【００４１】
本実施の形態の一例において、この複写処理部４７は、ＯＳ機能部３０からストレージ部１３に対する読み出しや書き込みの命令の入力がないときに、上記動作を行うようにしてもよい。また複写処理部４７は、空ブロックの位置情報からデータ取得の対象とするブロックの位置情報を選択する上記所定の規則として、例えば、制御部１１が最後にアクセスしたストレージ部１３のブロック（物理的にストレージ部１３から読み出しまたはストレージ部１３への書き込みを行ったブロック、以下最終アクセスブロックと呼ぶ）の位置情報に近い空ブロックから所定の順（例えば最終アクセスブロックの位置情報（ＬＢＡ）より大きい値の位置情報（ＬＢＡ）により特定されるブロックであって、最終アクセスブロックから近い順）に選択することとしてもよい。
【００４２】
機能停止制御部４８は、脱仮想化（devirtualization）を実現する。本実施の形態の一例では、この機能停止制御部４８は、判断部４３から機能停止を指示されると、ランタイムに（ＯＳ機能部３０の動作を停止させずに）仮想化機能部４０としての処理を停止する。この脱仮想化の処理については広く知られた処理があるのでその詳しい説明を省略するが、例えばＯＳ機能部３０からストレージ部１３に対する読み出しや書き込みの命令の入力がないタイミングで、ＯＳ機能部３０からストレージ部１３への命令が直接出力されるように設定を変更する。つまり、仮想化の動作におけるＯＳ機能部３０からのアクセスの捕捉を行わないよう制御する。
【００４３】
その後、機能停止制御部４８は、仮想化機能部４０としての処理を停止する。具体的に仮想化機能部４０は、これまでに説明した処理を行うモジュールのほか、ＯＳ機能部３０からのメモリアクセスを仮想化するメモリ管理処理モジュールや、特権命令を含む制御部１１の命令を仮想化する命令処理モジュールも含んでいる。機能停止制御部４８は、そこでこれらメモリ管理処理モジュールの動作や、命令処理モジュールの動作を停止させる。なお、メモリ管理モジュールの動作をここで停止できるようにしておくためには、予め仮想化機能部４０により仮想化されたメモリの内容が、物理的なメモリ部１２の記憶内容と同一となっている（それぞれの記憶領域同士が恒等写像の関係にあるようになっている）ように管理しておく。
【００４４】
機能停止制御部４８は、ランタイムに（再起動せずに）、仮想化機能部４０としての処理を停止してもよく、または情報処理装置１の再起動後に仮想化機能部４０のプログラムが実行されずにＯＳ機能部３０としてのプログラムが実行されることとなるよう、初期設定を書き換えることとしてもよい。また、ランタイムに停止するか再起動により停止するか、もしくはその両方を選択可能となっていてもよい。
【００４５】
このような機能停止制御部４８により、ストレージ部１３にデータの格納が行われていない空ブロックがなくなったとき、以降の動作を行わないよう仮想化機能部４０を制御することが可能となる。
【００４６】
なお、仮想化機能部４０は、その擬装処理部４４や複写処理部４７等の動作の過程において、通信部１６を介して通信を行うに先立ち、通信部１６が初期化されていないとき（通信部１６に対するネットワークアドレスの割り当て等が完了していないとき）には、仮想化機能部４０は通信部１６を初期化する動作を行う。この初期化の動作は、一般的なネットワークインタフェースの起動時の処理と同様であるので、ここでの詳しい説明を省略するが、本来であればストレージ部１３に格納されているべきデータを必要とする場合には一時的に、事前に定められている設定（固定のネットワークアドレスにより初期化するべき旨の設定であっても、ＤＨＣＰ（Dynamic Host Configuration Protocol）によりネットワークアドレスを取得するなどして初期化するべき旨の設定であってもよい）により通信部１６を初期化し、必要なデータを、当該データが格納されているべきストレージ部１３のブロックに対応するストレージサーバ２の領域から取得することとすればよい。その後、仮想化機能部４０は、当該取得したデータに従って、通信部１６を再度初期化する。このとき仮想化機能部４０は、当該取得したデータを、本来格納されているべきストレージ部１３のブロック内に書き込んで、不揮発記憶部１７に格納した、当該ブロックの位置情報に関連付けられている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新してもよい。
【００４７】
この動作により仮想化機能部４０は、電源投入後、ＯＳ機能部３０としての機能を実現するプログラム（ＯＳのプログラム）についても、ストレージサーバ２から取得してストレージ部１３に書き込むことが可能となる。この際には、仮想化機能部４０は、初期プログラムローダ（ＩＰＬ）等、ＯＳのプログラムの読み込みを行う処理において発生する、ストレージ部１３への読み出し指示に応じて、当該指示による読み出しの対象となるストレージ部１３のブロックの位置情報に対応するストレージサーバ２の領域からデータ（ＯＳのプログラムデータ）を取得し、ストレージ部１３の対応するブロックに書き込むとともに、制御部１１による実行の用に供することとなる。この際にも仮想化機能部４０は、不揮発記憶部１７に格納した、当該データを書き込んだブロックの位置情報に関連付けられている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新していく。
【００４８】
本実施の形態の情報処理装置１は以上の構成を備えており、次のように動作する。当初、本実施の形態の情報処理装置１のストレージ部１３には、データが記録されていない状態となっているものとする（あるいは、仮想化機能部４０としてのプログラムが格納された状態であってもよい）。
【００４９】
情報処理装置１は、電源が投入される（起動される）と、仮想化機能部４０としてのプログラムを取得してメモリ部１２に格納し、当該処理の実行を開始させる。この仮想化機能部４０としてのプログラムは、例えばネットワークブートの処理により、ネットワークを介して接続されるディスクデバイス等から取得される。
【００５０】
仮想化機能部４０としての処理を開始した情報処理装置１は、ＯＳ機能部３０としてのプログラムの取得を行う。このＯＳ機能部３０としてのプログラムも、ネットワークブートの処理により取得することとしてもよいし、本来であればストレージ部１３にＯＳ機能部３０としてのプログラムが格納された状態にあるものであれば、仮想化機能部４０によりストレージ部１３の当該ＯＳ機能部３０としてのプログラムが格納されているべきブロックに対応する、ストレージサーバ２の領域からデータを読み出させることでＯＳ機能部３０としてのプログラムを取得させてもよい。
【００５１】
なお、本実施の形態の一例において、情報処理装置１は、そのストレージ部１３のブロックの位置情報（論理ブロックアドレス：ＬＢＡ）と、当該位置情報で特定されるブロックに対応する、ストレージサーバ２におけるブロック対応領域を特定する対応領域特定情報とを関連付けて対応情報として不揮発記憶部１７に記憶しておくものとしているが、この対応情報は例えば次のようにして生成できる。
【００５２】
本実施の形態の一例では、ストレージ部１３のブロックを特定する位置情報はＬＢＡであり、各ブロックに対応する、ストレージサーバ２内の仮想ディスクドライブ内のブロック対応領域を特定する対応領域特定情報は、当該仮想ディスクドライブのＬＢＡである。このときストレージ部１３のブロックを特定するＬＢＡ値Ａlocalと、対応領域特定情報のＬＢＡ値Ａserverとの間に次の関係が成立するように、予めストレージサーバ２の仮想ディスクドライブ内にデータを書き込んでおくこととすればよい：
Ａserver＝Ａlocal＋Ｏｆｆｓｅｔ（α）    …（１）
ここでＯｆｆｓｅｔ（α）は、オフセット値を返す関数であり、例えばＯｆｆｓｅｔ（α）＝０であってもよい。
【００５３】
仮想化機能部４０としての処理を行う情報処理装置１は、上記関係に基づいて、ストレージ部１３のブロックの位置情報と、当該位置情報で特定されるブロックに対応する、ストレージサーバ２におけるブロック対応領域を特定する対応領域特定情報とを関連付けた対応情報を生成して不揮発記憶部１７に格納する。
【００５４】
また情報処理装置１は、ストレージ部１３のブロックの位置情報に対応付けた書込有無情報（Ｗ）を不揮発記憶部１７に格納する。初期的にはこの書込有無情報はいずれも書き込みされていないことを表す情報となっている（ストレージ部１３に仮想化機能部４０としてのプログラムが格納されているときには、当該プログラムが格納されているブロックの位置情報に対応する書込有無情報についてはデータが書き込まれていることを表す情報に設定しておいてもよい）。
【００５５】
その後、情報処理装置１はＯＳ機能部３０としての動作を開始するが、ＯＳ機能部３０の動作として、ストレージ部１３へのアクセスが行われていない間は、情報処理装置１は、ストレージサーバ２からストレージ部１３へのデータの複写の処理を実行する。具体的に情報処理装置１は、図４に例示するように、不揮発記憶部１７に格納されている書込有無情報（Ｗ）を参照し、データを書き込んでいないことを表すものとなっている書込有無情報に関連付けられているブロック（空ブロック）の位置情報を抽出する（Ｓ１１）。そして情報処理装置１は、抽出した空ブロックの位置情報のうちから所定の規則に従って位置情報を一つ選択する（Ｓ１２）。ここで所定の規則は既に述べたように、直前に実際にアクセスされたブロックに最も近いブロックを選択することとすればよいが、初期化直後のように最初のアクセスである場合は、抽出した位置情報（ＬＢＡ）のうち、最も小さいＬＢＡ値となっているものを選択すればよい。
【００５６】
情報処理装置１は、当該選択した位置情報に関連付けて不揮発記憶部１７に格納されている対応領域特定情報（Ｒ）を読み出し、次いでストレージサーバ２にアクセスし、ストレージサーバ２に格納されている仮想ディスクドライブ内の当該読み出した対応領域特定情報で特定される領域からデータを取得する（Ｓ１３）。そして情報処理装置１は、選択した位置情報で特定されるストレージ部１３のブロックに当該取得したデータを書き込む（Ｓ１４）。
【００５７】
また情報処理装置１は、当該データを書き込んだブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新する（Ｓ１５）。情報処理装置１は、ＯＳ機能部３０の動作として、ストレージ部１３へのアクセスが行われていない間、このデータの複写の処理を繰り返し実行する。
なお、処理Ｓ１１にて空ブロックが抽出されなくなったとき（空ブロックがなくなったとき）には、情報処理装置１は、以降のデータの複写の処理を中止するとともに、脱仮想化の処理を行ってもよい。
【００５８】
また、情報処理装置１がＯＳ機能部３０の動作として、ストレージ部１３への書込命令を発行すると、情報処理装置１は仮想化機能部４０としての機能として、ＯＳ機能部３０の命令により書込先として指定されたストレージ部１３のブロックに対してＯＳ機能部３０が指定するデータを書き込む。
【００５９】
さらに、情報処理装置１がＯＳ機能部３０の動作として、ストレージ部１３からのデータ読出命令を発行すると、情報処理装置１は、図５に例示するように、仮想化機能部４０としての機能として、ＯＳ機能部３０の命令により指定されたデータの読み出し元であるストレージ部１３のブロックの位置情報を参照する（Ｓ２１）。
【００６０】
情報処理装置１は、当該参照したストレージ部１３のブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）が、ブロックに対してデータを書き込んだことを表すものとなっているか否かを調べる（Ｓ２２）。ここで書込有無情報（Ｗ）が、ブロックに対してデータを書き込んだことを表すものとなっているとき（Yesのとき）には、情報処理装置１は、ストレージ部１３の当該位置情報で特定されるブロックからデータを読み出して、ＯＳ機能部３０としての処理に当該読み出したデータを受け渡す（Ｓ２３）。
【００６１】
一方処理Ｓ２２において、書込有無情報（Ｗ）が、ブロックに対してデータを書き込んだことを表すものとなっていないとき（Noのとき）には、情報処理装置１は、参照したストレージ部１３のブロックの位置情報に関連付けて不揮発記憶部１７に格納されている対応領域特定情報（Ｒ）を取得する（Ｓ２４）。
【００６２】
情報処理装置１は、そして、通信部１６を介してストレージサーバ２にアクセスし、ストレージサーバ２に格納されている仮想ディスクドライブ内にあって、処理Ｓ２４で取得した対応領域特定情報で特定される領域からデータを取得する（Ｓ２５）。そして情報処理装置１は、当該取得したデータをＯＳ機能部３０としての処理に受け渡す（Ｓ２６）。
【００６３】
またこのとき情報処理装置１は、取得したデータを、処理Ｓ２１で参照したブロックの位置情報で特定されるストレージ部１３内のブロックに書き込む（Ｓ２７）。そして情報処理装置１は、当該データを書き込んだブロックの位置情報に関連付けて不揮発記憶部１７に格納されている書込有無情報（Ｗ）を、データを書き込んだことを表す情報に書き換えて更新する（Ｓ２８）。なお、処理Ｓ２６からＳ２８の実行順序は、ここでの例に限られず、処理Ｓ２７，Ｓ２８の実行後に処理Ｓ２６を実行する順であってもよい。
【００６４】
さらに情報処理装置１は、ストレージ部１３の任意のブロックからＯＳ機能部３０からのデータ読み出しの要求とは関わりなく（要求の有無に関わらず）データを読み出す（Ｓ２９）。これにより、情報処理装置１はストレージ部１３から制御部１１へと割込信号を発生させ、ＯＳ機能部３０としての処理において、データの読み出しが完了したことを検出できるようにする。
【００６５】
なお、処理Ｓ２９では、ダミーのデータの読み出しを行わせる処理でなくとも読み出し完了を表すものと同種の割込信号をストレージ部１３に発生させることのできる処理であれば、いかなる処理を行ってもよい。例えば、特定の設定処理を行うことで同じ割込信号を発生させることのできる場合がある。
【００６６】
さらに本実施の形態のここまでの説明では、仮想化機能部４０の動作として、制御部１１がストレージサーバ２からデータを取得するとき、ストレージサーバ２からのデータの取得が完了してから、ストレージ部１３に割込信号を発生させることとしているが、本実施の形態はこれに限られない。
【００６７】
例えば、制御部１１は、ストレージサーバ２からデータを取得する必要が発生したとき（図５の処理Ｓ２５に先立って）、ストレージ部１３に割込信号を発生させる動作（例えば処理Ｓ２９の動作）を行わせてもよい。このときには、ＯＳ機能部３０が受け渡されたデータを参照しようとしたときに、制御部１１は処理中であることを表す信号（ビジー・ウエイト）を発生させて、ＯＳ機能部３０に対してデータの取り出しを待機させるようにしてもよい。
【００６８】
またここまでの説明において、情報処理装置１がストレージ部１３のブロックに対応する、ストレージサーバ２の仮想ディスクドライブ内の対応領域特定情報を取得する処理では、ストレージ部１３のブロックの位置情報ごとに対応領域特定情報を関連付けた対応情報を予め不揮発記憶部１７に格納して、当該対応情報を参照するようにしていたが、これに代えて、例えば上記（１）式の演算によりストレージ部１３のブロックの位置情報に対応する対応領域特定情報を得るようにしてもよい。
【００６９】
さらに、以上の説明では、ストレージ部１３のブロックの位置情報（論理ブロックアドレス：ＬＢＡ）と、当該位置情報で特定されるブロックに対応する、ブロック対応領域を特定する対応領域特定情報とを関連付けた対応情報を、情報処理装置１において記憶しておくものとしたが、本実施の形態はこれに限られない。
【００７０】
すなわち、この対応情報は、ストレージサーバ２に格納されていてもよい。この場合、制御部１１は、ＯＳとしての機能を実行するプログラムの処理により、ストレージ部１３に対するデータの読み出しの要求が発生すると、ストレージ部１３内の、当該要求に係るブロックにデータが格納されているか否かを判断し、データが格納されていないときには、当該要求に係るブロックに格納されるべきデータをストレージサーバ２に要求する。
【００７１】
そしてこの例では、ストレージサーバ２が、情報処理装置１から受け入れた上記要求に応答して、ストレージサーバ２が記憶する対応情報を参照して、要求に係るブロックに対応するブロック対応領域を特定し、ストレージサーバ２の当該特定したブロック対応領域内からデータを取得して情報処理装置１へ送出する。
【００７２】
そして情報処理装置１は、ストレージサーバ２から先の要求に係るブロックに格納されるべきデータを受け入れて、当該要求に係るブロックに、当該受け入れたデータを格納することとなる。
【００７３】
本実施の形態によると、仮想化機能部４０が、現実のストレージデバイスであるストレージ部１３をそのまま擬装してＯＳ側にアクセスさせることとなり、仮想化システムを後から取り去ることも可能となり、運用の自由度を向上できる。
【符号の説明】
【００７４】
１  情報処理装置、２  ストレージサーバ、１１  制御部、１２  メモリ部、１３  ストレージ部、１４  操作部、１５  表示部、１６  通信部、１７  不揮発記憶部、３０  ＯＳ機能部、４０  仮想化機能部、４１  対応情報管理部、４２  アクセス検出部、４３  判断部、４４  擬装処理部、４５  仕上処理部、４６  ローカルアクセス部、４７  複写処理部、４８  機能停止制御部。
【図１】
0006506976.tif 000002
【図２】
0006506976.tif 000003
【図３】
0006506976.tif 000004
【図４】
0006506976.tif 000005
【図５】
0006506976.tif 000006