(57)【要約】【課題】ネットワークブートにおけるＯＳの起動時間を低減する。【解決手段】端末装置がネットワークを介してＯＳを起動するネットワークブートシステムのサーバ装置は、端末装置とネットワークを介して接続され、端末装置にブートローダーを提供し、ブートローダーは、記憶装置を仮想記憶装置として接続して通信するとともに、ＯＳを端末装置に読み込むための起動情報を取得する取得処理であって、キャッシュ記憶部に起動情報が記憶されている場合に、キャッシュ記憶部から起動情報を取得し、キャッシュ記憶部に起動情報が記憶されていない場合に、仮想記憶装置から起動情報を取得する取得処理と、仮想記憶装置から起動情報を取得した場合に、取得した起動情報をキャッシュ記憶部に記憶させるキャッシュ記憶処理と、起動情報に基づいて、ＯＳを端末装置に読み込んで、ＯＳを起動する起動処理と、を端末装置に実行させる。【選択図】図１
2014182706.tif 000002
【特許請求の範囲】
【請求項１】
端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムが備えるサーバ装置であって、
前記記憶装置から読み出した情報を記憶するキャッシュ記憶部を備える前記端末装置とネットワークを介して接続され、前記端末装置からの要求に応じて、前記端末装置にブートローダーを供給し、
前記ブートローダーは、
前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得処理であって、前記キャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得処理と、
前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶処理と、
前記起動情報に基づいて、前記仮想記憶装置から前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動処理と、
を前記端末装置に実行させる
ことを特徴とするサーバ装置。
【請求項２】
前記ブートローダーは、
前記取得処理において、前記キャッシュ記憶部に前記起動情報が記憶されているか否かを、前記仮想記憶装置が前記起動情報を記憶している領域が有する複数の単位領域それぞれに対して示すキャッシュマップ情報に基づいて、前記起動情報に対応する前記単位領域ごとに、前記キャッシュ記憶部に前記起動情報が記憶されているか否かを判定し、
前記起動情報に対応する前記単位領域に記憶されている情報を示す起動単位情報が前記キャッシュ記憶部に記憶されている場合に、前記キャッシュ記憶部が記憶する前記起動単位情報を前記起動情報として取得し、
前記起動単位情報が前記キャッシュ記憶部に記憶されていない場合に、前記仮想記憶装置が記憶する前記起動単位情報を前記起動情報として取得し、
キャッシュ記憶処理において、前記仮想記憶装置から前記起動単位情報を取得した場合に、取得した前記起動単位情報を前記キャッシュ記憶部に記憶させるとともに、前記キャッシュマップ情報のうちの、取得した前記起動単位情報に対応する情報を変更する
ことを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記端末装置は、
前記仮想記憶装置がオペレーティングシステムを記憶しているオペレーティングシステム領域に対応し、前記オペレーティングシステム領域に記憶されている情報が前記キャッシュ記憶部に記憶されているか否かを、前記オペレーティングシステム領域が有する複数の前記単位領域それぞれに対して示す前記キャッシュマップ情報を記憶するマップ記憶部を備え、
前記ブートローダーは、
前記起動処理において、前記オペレーティングシステムを前記仮想記憶装置から読み込むフィルタドライバを前記起動情報として取得する処理を含み、
前記フィルタドライバは、
前記キャッシュマップ情報に基づいて、前記オペレーティングシステムに対応する前記単位領域に記憶されている情報を示すシステム単位情報が前記キャッシュ記憶部に記憶されているか否かを判定する処理と、
前記システム単位情報が前記キャッシュ記憶部に記憶されていると判定した場合に、前記キャッシュ記憶部が記憶する前記システム単位情報を前記オペレーティングシステムとして読み込む処理と、
前記システム単位情報が前記キャッシュ記憶部に記憶されていないと判定した場合に、前記仮想記憶装置が記憶する前記システム単位情報を前記オペレーティングシステムとして取得する処理と、
前記仮想記憶装置から前記システム単位情報を読み込んだ場合に、読み込んだ前記システム単位情報を前記キャッシュ記憶部に記憶させるとともに、前記キャッシュマップ情報のうちの、取得した前記システム単位情報に対応する情報を変更する処理と
を前記端末装置に実行させる
ことを特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記仮想記憶装置は、前記単位領域に記憶されている情報が更新されたか否かを示す差分マップ情報と前記オペレーティングシステムのバージョンを示すバージョン識別情報とを関連付けて記憶しており、
前記オペレーティングシステム領域は、前記起動情報を記憶している領域を含み、
前記ブートローダーは、
前記取得処理において、前記差分マップ情報と前記バージョン識別情報とを前記仮想記憶装置から取得し、取得した前記バージョン識別情報に基づいて、前記オペレーティングシステムが更新されているか否かを判定し、前記オペレーティングシステムが更新されていると判定した場合には、前記仮想記憶装置が記憶する前記起動情報を取得し、
前記フィルタドライバは、
前記オペレーティングシステムが更新されていると判定された場合に、前記差分マップ情報に基づいて、前記キャッシュマップ情報を更新し、更新した前記キャッシュマップ情報に基づいて、前記オペレーティングシステムを前記仮想記憶装置から読み込む
ことを特徴とする請求項３に記載のサーバ装置。
【請求項５】
端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムであって、
ネットワークを介して、前記端末装置と接続され、前記端末装置からの要求に応じて、前記端末装置にブートローダーを供給するサーバ装置を備え、
前記端末装置は、
前記記憶装置から読み出した情報を記憶するキャッシュ記憶部を備え、
前記サーバ装置から供給されたブートローダーは、
前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する処理であって、前記キャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記記憶装置から前記起動情報を取得する取得処理と、
前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶処理と、
前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動処理と、
を前記端末装置に実行させる
ことを特徴とするネットワークブートシステム。
【請求項６】
端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置と、サーバ装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムのネットワークブート方法であって、
前記サーバ装置が、前記端末装置からの要求に応じて、前記端末装置にブートローダーを、ネットワークを介して供給する供給ステップと、
前記端末装置が、前記サーバ装置から供給された前記ブートローダーにしたがって、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得ステップであって、前記仮想記憶装置から読み出した情報を記憶するキャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得ステップと、
前記端末装置が、前記ブートローダーにしたがって、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶ステップと、
前記端末装置が、前記ブートローダーにしたがって、前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動ステップと、
を含むことを特徴とするネットワークブート方法。
【請求項７】
端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置がネットワークを介して前記記憶装置が記憶するオペレーティングシステムを起動するネットワークブートシステムの端末装置としてのコンピュータに、
前記端末装置が、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得ステップであって、前記仮想記憶装置から読み出した情報を記憶するキャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得ステップと、
前記端末装置が、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶ステップと、
前記端末装置が、前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置、ネットワークブートシステム、ネットワークブート方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワークを介してオペレーティングシステム（以下、ＯＳ（オーエス）という）を起動するネットワークブートを用いたシステム（以下、ネットワークブートシステムという）が知られている。このようなネットワークブートシステムは、ネットワークブートによりＯＳを起動するクライアント端末などの端末装置と、端末装置が起動するＯＳを記憶するサーバ装置とを備えている。このようなネットワークブートシステムでは、端末装置は、起動する際に、ネットワークを介してサーバ装置からＯＳを端末装置上に読み込んで、ＯＳを起動する。
なお、このようなネットワークブートシステムに関連した技術として、例えば、特許文献１に記載の技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２３１４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上述のようなネットワークブートシステムでは、起動の際に毎回、ＯＳを読み込む必要があるため、例えば、複数台の端末装置が起動する場合には、ネットワークの負荷が増大して起動に時間がかかることがあるという問題がある。
このような問題に対して、例えば、特許文献１には、処理に応じて、独立したネットワークを用いることで、ネットワークの負荷を改善する技術が記載されている。しかしながら、特許文献１に記載の技術では、ＯＳの読み込み自体の処理を軽減するものではなく、例えば、端末装置の台数が多い場合には、依然としてＯＳの起動に時間がかかることがある。
【０００５】
本発明は、上記問題を解決すべくなされたもので、その目的は、ネットワークブートにおけるＯＳの起動時間を低減することができるサーバ装置、ネットワークブートシステム、ネットワークブート方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明の一態様は、端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムが備えるサーバ装置であって、前記記憶装置から読み出した情報を記憶するキャッシュ記憶部を備える前記端末装置とネットワークを介して接続され、前記端末装置からの要求に応じて、前記端末装置にブートローダーを供給し、前記ブートローダーは、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得処理であって、前記キャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得処理と、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶処理と、前記起動情報に基づいて、前記仮想記憶装置から前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動処理と、を前記端末装置に実行させることを特徴とするサーバ装置である。
【０００７】
また、本発明の一態様は、上記のサーバ装置において、前記ブートローダーは、前記取得処理において、前記キャッシュ記憶部に前記起動情報が記憶されているか否かを、前記仮想記憶装置が前記起動情報を記憶している領域が有する複数の単位領域それぞれに対して示すキャッシュマップ情報に基づいて、前記起動情報に対応する前記単位領域ごとに、前記キャッシュ記憶部に前記起動情報が記憶されているか否かを判定し、前記起動情報に対応する前記単位領域に記憶されている情報を示す起動単位情報が前記キャッシュ記憶部に記憶されている場合に、前記キャッシュ記憶部が記憶する前記起動単位情報を前記起動情報として取得し、前記起動単位情報が前記キャッシュ記憶部に記憶されていない場合に、前記仮想記憶装置が記憶する前記起動単位情報を前記起動情報として取得し、キャッシュ記憶処理において、前記仮想記憶装置から前記起動単位情報を取得した場合に、取得した前記起動単位情報を前記キャッシュ記憶部に記憶させるとともに、前記キャッシュマップ情報のうちの、取得した前記起動単位情報に対応する情報を変更することを特徴とする。
【０００８】
また、本発明の一態様は、上記のサーバ装置において、前記端末装置は、前記仮想記憶装置がオペレーティングシステムを記憶しているオペレーティングシステム領域に対応し、前記オペレーティングシステム領域に記憶されている情報が前記キャッシュ記憶部に記憶されているか否かを、前記オペレーティングシステム領域が有する複数の前記単位領域それぞれに対して示す前記キャッシュマップ情報を記憶するマップ記憶部を備え、前記ブートローダーは、前記起動処理において、前記オペレーティングシステムを前記仮想記憶装置から読み込むフィルタドライバを前記起動情報として取得する処理を含み、前記フィルタドライバは、前記キャッシュマップ情報に基づいて、前記オペレーティングシステムに対応する前記単位領域に記憶されている情報を示すシステム単位情報が前記キャッシュ記憶部に記憶されているか否かを判定する処理と、前記システム単位情報が前記キャッシュ記憶部に記憶されていると判定した場合に、前記キャッシュ記憶部が記憶する前記システム単位情報を前記オペレーティングシステムとして読み込む処理と、前記システム単位情報が前記キャッシュ記憶部に記憶されていないと判定した場合に、前記仮想記憶装置が記憶する前記システム単位情報を前記オペレーティングシステムとして取得する処理と、前記仮想記憶装置から前記システム単位情報を読み込んだ場合に、読み込んだ前記システム単位情報を前記キャッシュ記憶部に記憶させるとともに、前記キャッシュマップ情報のうちの、取得した前記システム単位情報に対応する情報を変更する処理とを前記端末装置に実行させることを特徴とする。
【０００９】
また、本発明の一態様は、上記のサーバ装置において、前記仮想記憶装置は、前記単位領域に記憶されている情報が更新されたか否かを示す差分マップ情報と前記オペレーティングシステムのバージョンを示すバージョン識別情報とを関連付けて記憶しており、前記オペレーティングシステム領域は、前記起動情報を記憶している領域を含み、前記ブートローダーは、前記取得処理において、前記差分マップ情報と前記バージョン識別情報とを前記仮想記憶装置から取得し、取得した前記バージョン識別情報に基づいて、前記オペレーティングシステムが更新されているか否かを判定し、前記オペレーティングシステムが更新されていると判定した場合には、前記仮想記憶装置が記憶する前記起動情報を取得し、前記フィルタドライバは、前記オペレーティングシステムが更新されていると判定された場合に、前記差分マップ情報に基づいて、前記キャッシュマップ情報を更新し、更新した前記キャッシュマップ情報に基づいて、前記オペレーティングシステムを前記仮想記憶装置から読み込むことを特徴とする。
【００１０】
また、本発明の一態様は、端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムであって、ネットワークを介して、前記端末装置と接続され、前記端末装置からの要求に応じて、前記端末装置にブートローダーを供給するサーバ装置を備え、前記端末装置は、前記記憶装置から読み出した情報を記憶するキャッシュ記憶部を備え、前記サーバ装置から供給されたブートローダーは、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する処理であって、前記キャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記記憶装置から前記起動情報を取得する取得処理と、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶処理と、前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動処理と、を前記端末装置に実行させることを特徴とするネットワークブートシステムである。
【００１１】
また、本発明の一態様は、端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置と、サーバ装置とがネットワークを介して接続され、前記端末装置が前記ネットワークを介して前記オペレーティングシステムを起動するネットワークブートシステムのネットワークブート方法であって、前記サーバ装置が、前記端末装置からの要求に応じて、前記端末装置にブートローダーを、ネットワークを介して供給する供給ステップと、前記端末装置が、前記サーバ装置から供給された前記ブートローダーにしたがって、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得ステップであって、前記仮想記憶装置から読み出した情報を記憶するキャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得ステップと、前記端末装置が、前記ブートローダーにしたがって、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶ステップと、前記端末装置が、前記ブートローダーにしたがって、前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動ステップと、を含むことを特徴とするネットワークブート方法である。
【００１２】
また、本発明の一態様は、端末装置と、前記端末装置上で動作するオペレーティングシステムを記憶する記憶装置とがネットワークを介して接続され、前記端末装置がネットワークを介して前記記憶装置が記憶するオペレーティングシステムを起動するネットワークブートシステムの端末装置としてのコンピュータに、前記端末装置が、前記記憶装置を仮想記憶装置として接続して通信するとともに、前記オペレーティングシステムを前記端末装置に読み込むための情報を示す起動情報を取得する取得ステップであって、前記仮想記憶装置から読み出した情報を記憶するキャッシュ記憶部に前記起動情報が記憶されている場合に、前記キャッシュ記憶部から前記起動情報を取得し、前記キャッシュ記憶部に前記起動情報が記憶されていない場合に、前記仮想記憶装置から前記起動情報を取得する取得ステップと、前記端末装置が、前記仮想記憶装置から前記起動情報を取得した場合に、取得した前記起動情報を前記キャッシュ記憶部に記憶させるキャッシュ記憶ステップと、前記端末装置が、前記起動情報に基づいて、前記オペレーティングシステムを前記端末装置に読み込んで、前記オペレーティングシステムを起動する起動ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１３】
本発明によれば、ネットワークブートにおけるオペレーティングシステムの起動時間を低減することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態によるネットワークブートシステムの一例を示す機能ブロック図である。
【図２】本実施形態におけるキャッシュ記憶部のデータ構成の一例を示す図である。
【図３】本実施形態におけるキャッシュマップ情報のデータ構成の一例を示す図である。
【図４】本実施形態における仮想ディスクのデータ構成の一例を示す図である。
【図５】本実施形態におけるネットワークブートシステムに用いるブートローダーのモジュール構成の一例を示すブロック図である。
【図６】本実施形態におけるネットワークブートの処理手順の一例を示すシーケンス図である。
【図７】第１の実施形態におけるブートローダーによるデータ取得処理の一例を示すフローチャートである。
【図８】第１の実施形態におけるフィルタドライバによるデータ取得処理の一例を示すフローチャートである。
【図９】第１の実施形態におけるキャッシュ処理の一例を示す第１の図である。
【図１０】第１の実施形態におけるキャッシュ処理の一例を示す第２の図である。
【図１１】第１の実施形態におけるキャッシュ処理の一例を示す第３の図である。
【図１２】第１の実施形態におけるキャッシュ処理の一例を示す第４の図である。
【図１３】第１の実施形態におけるキャッシュ処理の一例を示す第５の図である。
【図１４】第１の実施形態におけるキャッシュマップ情報のマージ処理の一例を示す図である。
【図１５】第２の実施形態におけるブートローダーによるデータ取得処理の一例を示すフローチャートである。
【図１６】第３の実施形態におけるブートローダーによるデータ取得処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態によるネットワークブートシステムにつて、図面を参照して説明する。
図１は、本実施形態によるネットワークブートシステム１の一例を示す機能ブロック図である。
【００１６】
この図において、ネットワークブートシステム１は、ブート端末２と、ブートサーバ３と、記憶装置４とを備えており、ブート端末２と、ブートサーバ３と、記憶装置４とは、ネットワーク５を介して接続されている。
ネットワークブートシステム１は、ブート端末２がネットワーク５を介してオペレーティングシステム（以下、ＯＳという）を起動するネットワークブートを実行するシステムである。
また、本実施形態では、一例として、ブート端末２が、ＯＳとして、Ｗｉｎｄｏｗｓ（登録商標）を起動する場合の例を説明する。
【００１７】
ブート端末２（端末装置）は、例えば、クライアント端末などのコンピュータ装置であり、ネットワーク５を介して、記憶装置４からＯＳを読み込み（ダウンロードし）、ＯＳを起動する。ブート端末２は、ローカルディスク２０と、制御部２３とを備えている。
なお、図１において、１台のブート端末２がブートサーバ３及び記憶装置４に接続する一例について説明しているが、複数台のブート端末２がネットワーク５を介して、ブートサーバ３及び記憶装置４に接続されてもよい。
【００１８】
制御部２３は、例えば、ＣＰＵ（Central Processing Unit）などを含むプロセッサであり、ブート端末２を統括的に制御する。制御部２３は、後述するブートローダー１０（図５）、フィルタドライバ（不図示）などのプログラムを例えば、ＲＡＭ（Random Access Memory）などの物理メモリ（不図示）に読み込むとことにより、ブートローダー１０やフィルタドライバなどの仮想の処理部として機能する。
【００１９】
ローカルディスク２０は、例えば、ハードディスクなどの記憶装置であり、マップ記憶部２２とキャッシュ記憶部２１とを備えている。
【００２０】
キャッシュ記憶部２１は、記憶装置４（仮想ディスク４０）からブート端末２に読み込んだ情報をセクタ単位で記憶する。キャッシュ記憶部２１は、前回にＯＳを起動した際に使用したＯＳのバージョン（又はリビジョン）を識別する識別情報（前回起動バージョン識別情報）と、記憶装置４から読み出した情報（キャッシュデータ）とを関連付けて記憶している。このキャッシュ記憶部２１が記憶する情報は、再度、記憶装置４（仮想ディスク４０）から同一の情報（同一セクタに記憶されている情報）を取得する場合に、キャッシュデータとして利用される。ここで、図２を参照して、キャッシュ記憶部２１が記憶するデータ構成について説明する。
【００２１】
図２は、本実施形態におけるキャッシュ記憶部２１のデータ構成の一例を示す図である。
この図において、キャッシュ記憶部２１は、キャッシュヘッダ領域２１Ａと、キャッシュデータブロック領域２１Ｂとを有している。
キャッシュヘッダ領域２１Ａは、「メインバージョン情報」及び「サブバージョン情報」を記憶する。この「メインバージョン情報」及び「サブバージョン情報」は、ＯＳのバージョン（又はリビジョン）を識別するための識別情報であり、ここで示すバージョンの識別情報は、ブート端末２が前回起動した際のＯＳのバーションを示している。すなわち、キャッシュヘッダ領域２１Ａには、ブート端末２が起動するごとに、記憶装置４（後述する仮想ディスク４０）から読み出されたＯＳのバージョンを示す「メインバージョン情報」及び「サブバージョン情報」が記憶される。
また、キャッシュデータブロック領域２１Ｂは、ＯＳを起動する際に記憶装置４（後述する仮想ディスク４０）から読み出す情報をキャッシュデータとして記憶する。キャッシュデータブロック領域２１Ｂは、例えば、後述する仮想ディスク４０のＯＳ領域４１（図４）と同一の容量を有し、仮想ディスク４０のＯＳ領域４１に記憶されている情報をセクタ単位で記憶できるように構成されている。
【００２２】
図１に戻り、マップ記憶部２２は、後述するキャッシュ処理を実行する際に利用されるキャッシュマップ情報を記憶する。ここで、キャッシュマップ情報とは、記憶装置４（後述する仮想ディスク４０）が有する複数のセクタ（複数の単位領域）それぞれに記憶されている情報（データ）がキャッシュ記憶部２１に記憶されているか否かを示す情報である。キャッシュマップ情報は、例えば、記憶装置４（後述する仮想ディスク４０）が有する複数のセクタのそれぞれに対応付けられたビットマップ情報である。ここで、図３を参照して、マップ記憶部２２が記憶するキャッシュマップ情報のデータ構成について説明する。
【００２３】
図３は、本実施形態におけるキャッシュマップ情報のデータ構成の一例を示す図である。
図３に示すように、ビットマップ情報は、複数のビット情報を有するビットマップ情報である。このビットマップ情報の各ビット情報は、マップ記憶部２２が記憶しているキャッシュマップ情報を示している。図３に示すように、キャッシュマップ情報は、仮想ディスク４０のＯＳ領域４１（図４）が有する各セクタに対応するビット情報を有している。ここで、ビット情報の値が“１”である場合に、このビット情報に対応するセクタが記憶する情報が、既にキャッシュ記憶部２１に記憶されていることを示している。また、ビット情報の値が“０”である場合に、このビット情報に対応するセクタが記憶する情報が、キャッシュ記憶部２１に記憶していないことを示している。
このように、キャッシュマップ情報は、仮想ディスク４０のＯＳ領域４１（図４）の各セクタのデータがキャッシュ記憶部２１に記憶されている場合に、“１”を示し、キャッシュ記憶部２１に記憶されていない場合に、“０”を示す。
【００２４】
再び、図１に戻り、ブートサーバ３（サーバ装置）は、ネットワークブートを実施するためのサーバ装置であり、例えば、ＤＨＣＰ（Dynamic Host Configuration Protocol）サーバ３１、ＰＸＥ（Preboot Execution Environment）サーバ３２、及びＴＦＴＰ（Trivial File Transfer Protocol）サーバ３３などのコンピュータ装置を含んでいる。
ＤＨＣＰサーバ３１は、ブート端末２がネットワーク５に接続する際に必要な情報を自動的に割り当てる。
ＰＸＥサーバ３２は、ブート端末２の起動する際に、ブート端末２がマウントする仮想ディスク４０などを取得するためのサーバ装置である。
【００２５】
ＴＦＴＰサーバ３３は、ネットワークブートに必要な、ブートローダー１０をブート端末２に供給するサーバ装置である。ＴＦＴＰサーバ３３は、ブート端末２とネットワーク５を介して接続され、ブート端末２からの要求に応じて、ブート端末２にブートローダー１０を供給する。また、ＴＦＴＰサーバ３３は、ＢＬ供給部３４を備えており、ＢＬ供給部３４は、後述するブートモジュール１１、及びｉＳＣＳＩ（Internet Small Computer System Interface）通信モジュール３０をブートローダー１０として、ブート端末２に供給する。
【００２６】
記憶装置４は、例えば、ｉＳＣＳＩストレージ装置であり、ネットワーク５を介してブート端末２と接続され、ブート端末２が起動するＯＳをディスクイメージデータとして記憶している。記憶装置４は、仮想ディスク４０（仮想記憶装置）を有しており、ブート端末２の仮想ディスクとして機能する。ここで、図４を参照して、仮想ディスク４０のデータ構成の一例について説明する。
【００２７】
図４は、本実施形態における仮想ディスク４０のデータ構成の一例を示す図である。
図４（ａ）に示すように、仮想ディスク４０は、ＯＳ領域４１（ＯＳイメージパーティション）と、差分管理領域４２（差分パーティション）とを備えている。
ＯＳ領域４１において、「ＯＳイメージ」は、ＯＳを含みディスクイメージデータ示しており、「未使用」は、未使用の領域を示している。
また、差分管理領域４２は、ＯＳの更新情報を管理する領域であり、「Ｖｅｒ管理情報」と複数の「差分情報」（各バージョンの差分情報）とを記憶している。
【００２８】
また、「Ｖｅｒ管理情報」は、図４（ｂ）に示すように、「メインバージョン情報」と、「現在バージョン情報」と、「各バージョンのオフセット情報」とを有している。すなわち、差分管理領域４２は、「メインバージョン情報」と、「現在バージョン情報」と、「各バージョンのオフセット情報」とを関連付けて、「Ｖｅｒ管理情報」として記憶している。ここで、「現在バージョン情報」は、現在のサブバージョンを示しており、「各バージョンのオフセット情報」は、複数の「差分情報」（各バージョンの差分情報）のそれぞれに対応する仮想ディスク４０の位置（差分情報の先頭位置）を示している。
【００２９】
また、複数の「差分情報」（各バージョンの差分情報）のそれぞれには、図４（ｃ）に示すように、「サブバージョン情報」と「差分マップ情報」とを有している。すなわち、差分管理領域４２は、「サブバージョン情報」と「差分マップ情報」と関連付けた「差分情報」として記憶している。なお、「差分マップ情報」は、ＯＳ領域４１の各セクタ（単位領域）に記憶されている情報が更新されたか否かを示すビットマップ情報であり、例えば、図３に示す、キャッシュマップ情報と同様の構成をしている。ただし、「差分マップ情報」では、ビット情報の値が“１”である場合に、このビット情報に対応するセクタが記憶する情報が、ＯＳのバージョン変更（更新）によって、変更されていることを示している。また、ビット情報の値が“０”である場合に、このビット情報に対応するセクタが記憶する情報が、ＯＳのバージョン変更（更新）によって、変更されていないことを示している。
なお、図４に示す例では、差分管理領域４２は、「差分情報」として、「Ｖｅｒ１」〜「ＶｅｒＮ」のＮ回分のバージョン変更の差分を管理できるように構成されている。
【００３０】
次に、本実施形態におけるブート端末２がネットワークブートを行う際のモジュール構成について説明する。
図５は、本実施形態におけるネットワークブートシステム１に用いるブートローダー１０のモジュール構成の一例を示すブロック図である。
この図において、ブート端末２は、ブートローダー１０と、ローカルディスク２０とを備え、ネットワーク５を介して仮想ディスク４０に接続されている。
この図において、図１〜図４に示す構成と同一の構成については同一の符号を付し、その説明を省略する。
【００３１】
ブートローダー１０は、ブート端末２をネットワークブートで起動する際に、ＴＦＴＰサーバ３３から供給されるモジュール（プログラム）であり、ここでは、制御部２３と物理メモリ（不図示）に読み込んだプログラムとで実現される処理部である。
ブートローダー１０は、記憶装置４を仮想ディスク４０として接続して通信するとともに、ＯＳをブート端末２に読み込むための情報を示す起動情報を取得する取得処理をブート端末２に実行させる。ここで、起動情報には、例えば、ＭＢＲ（Master Boot Record）、ブートセクタ、ブートマネージャなどの情報、及びＯＳ用のドライバ（例えば、Ｗｉｎｄｏｗｓ（登録商標）ドライバ）などが含まれる。
【００３２】
また、ブートローダー１０は、上述の取得処理の際に、例えば、キャッシュ記憶部２１に起動情報が記憶されている場合に、キャッシュ記憶部２１から起動情報を取得し、キャッシュ記憶部２１に起動情報が記憶されていない場合に、仮想ディスク４０から起動情報を取得する。
【００３３】
具体的に、ブートローダー１０は、マップ記憶部２２が記憶するキャッシュマップ情報に基づいて、起動情報に対応するセクタ単位の情報（起動単位情報）がキャッシュ記憶部２１に既に記憶されているか否かを、セクタごとに判定する。ブートローダー１０は、このセクタ単位の情報がキャッシュ記憶部２１に既に記憶されていると判定した場合に、キャッシュ記憶部２１が記憶する情報をセクタ単位の情報として取得する。また、ブートローダー１０は、このセクタ単位の情報がキャッシュ記憶部２１に記憶されていないと判定した場合に、ネットワーク５を介して、対応するセクタ単位の情報を仮想ディスク４０から取得する。ここで、「セクタ単位の情報」とは、起動情報に対応するセクタに記憶されているデータ（情報）を示す。
【００３４】
また、ブートローダー１０は、仮想ディスク４０から起動情報を取得した場合に、取得した起動情報をキャッシュ記憶部２１に記憶させるキャッシュ記憶処理をブート端末２に実行させる。例えば、ブートローダー１０は、起動情報に対応するセクタ単位の情報のうちの、仮想ディスク４０から取得したセクタ単位の情報を、キャッシュ記憶部２１に記憶させるともに、マップ記憶部２２が記憶するキャッシュマップ情報のうちの、取得したセクタ単位の情報に対応するビット情報の値を“１”に変更する。
このように、ブートローダー１０は、仮想ディスク４０から起動情報を読み込む（取得する）際に、キャッシュ処理を実行する。
【００３５】
また、ブートローダー１０は、取得した起動情報に基づいて、仮想ディスク４０のＯＳ領域４１からＯＳをブート端末２に読み込んで、ＯＳを起動する起動処理をブート端末２に実行させる。
また、ブートローダー１０は、起動処理において、ＯＳを仮想ディスク４０から読み込むフィルタドライバを起動情報として取得する処理を含んでいる。このフィルタドライバの詳細については、後述する。
【００３６】
また、ブートローダー１０は、ブートモジュール１１と、ｉＳＣＳＩ通信モジュール３０とを有している。例えば、ブートサーバ３のＴＦＴＰサーバ３３は、ブートモジュール１１と、ｉＳＣＳＩ通信モジュール３０とをブートローダー１０としてネットワーク５を介してブート端末２に供給する。
【００３７】
ブートモジュール１１は、ブート端末２にｉＳＣＳＩ通信モジュール３０を読み込ませる処理を実行する。
ｉＳＣＳＩ通信モジュール３０は、上述した取得処理、キャッシュ記憶処理、及び起動処理を実行する。また、ｉＳＣＳＩ通信モジュール３０は、キャッシュモジュール１２と仮想ディスクモジュール１３とを有している。
【００３８】
キャッシュモジュール１２は、取得処理、及びキャッシュ記憶処理におけるマップ記憶部２２及びキャッシュ記憶部２１に対する制御（キャッシュ制御）を主に実行する。また、仮想ディスクモジュール１３は、例えば、ｉＳＣＳＩインターフェースの制御を行って、仮想ディスク４０へのアクセス（通信）を制御する。
なお、本実施形態におけるネットワークブートシステム１は、このｉＳＣＳＩ通信モジュール３０が起動することにより、仮想ディスク４０からの読み込みに対して上述したキャッシュ制御が動作する。これにより、本実施形態におけるネットワークブートシステム１は、ブート端末２を起動する際に、ネットワークの負荷を軽減することができる。
【００３９】
次に、本実施形態におけるネットワークブートシステム１の動作について図面を参照して説明する。
図６は、本実施形態におけるネットワークブートの処理手順の一例を示すシーケンス図である。
【００４０】
この図において、ブート端末２に電源が投入されると、ブート端末２は、まず、ブートサーバ３のＤＨＣＰサーバ３１に“ＤＨＣＰ  Ｄｉｓｃｏｖｅｒ”を出力する（ステップＳ１０１）。
この“ＤＨＣＰ  Ｄｉｓｃｏｖｅｒ”は、ブート端末２がＤＨＣＰサーバ３１を発見するためのメッセージであり、このメッセージに対して、ＤＨＣＰサーバ３１は、“ＤＨＣＰ  Ｏｆｆｅｒ”として、ネットワーク５に接続するための設定値の候補をブート端末２に出力すする（ステップＳ１０２）。
【００４１】
次に、ブート端末２は、“ＤＨＣＰ  Ｒｅｑｕｅｓｔ”（設定値の取得依頼）をＤＨＣＰサーバ３１に出力する（ステップＳ１０３）。
これに対して、ＤＨＣＰサーバ３１は、設定値の取得が正常に終了したことを示すメッセージとして“ＤＨＣＰ  Ａｃｋ”をブート端末２に出力する（ステップＳ１０４）。
【００４２】
次に、ブート端末２は、“ＤＨＣＰ  Ｒｅｑｕｅｓｔ”をＰＸＥサーバ３２に出力する（ステップＳ１０５）。ここでは、ブート端末２は、例えば、ＴＦＴＰサーバ３３の情報などをＰＸＥサーバ３２に要求する。
これに対して、ＰＸＥサーバ３２は、要求されたＴＦＴＰサーバ３３の情報などを“ＤＨＣＰ  Ａｃｋ”としてブート端末２に出力する（ステップＳ１０６）。
【００４３】
次に、ブート端末２は、ブートローダー１０のブートモジュール１１を要求する“ＴＦＴＰ  Ｒｅａｄ  Ｒｅｑｕｅｓｔ”をＴＦＴＰサーバ３３に出力する（ステップＳ１０７）。
これに対して、ＴＦＴＰサーバ３３は、要求されたブートモジュール１１をブート端末２に供給する（ステップＳ１０８）。すなわち、ＴＦＴＰサーバ３３のＢＬ供給部３４が、ネットワーク５を介して、ブートモジュール１１をブート端末２に供給し、ブート端末２は、ブートモジュール１１を読み込む（ダウンロードする）。これにより、ブート端末２は、ブートモジュール１１を起動する。
【００４４】
次に、ブート端末２は、ブートローダー１０のｉＳＣＳＩ通信モジュール３０を要求する“ＴＦＴＰ  Ｒｅａｄ  Ｒｅｑｕｅｓｔ”をＴＦＴＰサーバ３３に出力する（ステップＳ１０９）。すなわち、ブートローダー１０が起動され、ブートモジュール１１にしたがって、ブート端末２は、ブートローダー１０のｉＳＣＳＩ通信モジュール３０を要求する。
これに対して、ＴＦＴＰサーバ３３は、要求されたｉＳＣＳＩ通信モジュール３０をブート端末２に供給する（ステップＳ１１０）。すなわち、ＴＦＴＰサーバ３３のＢＬ供給部３４が、ネットワーク５を介して、ｉＳＣＳＩ通信モジュール３０をブート端末２に供給し、ブート端末２は、ｉＳＣＳＩ通信モジュール３０を読み込む（ダウンロードする）。これにより、ブート端末２は、ｉＳＣＳＩ通信モジュール３０を起動する。
【００４５】
次に、ブート端末２は、ｉＳＣＳＩ通信モジュール３０にしたがって、記憶装置４との間に、ｉＳＣＳＩインターフェースのセッションを確立する（ステップＳ１１１）。これにより、ブート端末２は、記憶装置４を仮想ディスク４０としてマウントする。
【００４６】
次に、ブート端末２は、ブートモジュール１１、及びｉＳＣＳＩ通信モジュール３０にしたがって、ＭＢＲ、ブートセクタ、及びブートマネージャを記憶装置４からロードする（ステップＳ１１２）。なお、ブートモジュール１１は、ｉＳＣＳＩ通信モジュール３０を呼び出して、ｉＳＣＳＩ通信モジュール３０に、ＭＢＲ、ブートセクタ、及びブートマネージャを記憶装置４からロードさせる。すなわち、ブートローダー１０は、ＯＳをブート端末２に読み込むための情報である起動情報として、ＭＢＲ、ブートセクタ、及びブートマネージャを仮想ディスク４０から読み込む。
【００４７】
なお、ブートローダー１０は、このステップＳ１１２の処理において、ＭＢＲ、ブートセクタ、及びブートマネージャを仮想ディスク４０から読み込む際に、上述した取得処理、及びキャッシュ記憶処理によるキャッシュ処理を実行する。すなわち、ブートローダー１０は、取得処理において、キャッシュ記憶部２１に起動情報が記憶されているか否かを、マップ記憶部２２が記憶するキャッシュマップ情報に基づいて、起動情報に対応するセクタごとに、キャッシュ記憶部２１に起動情報が記憶されているか否かを判定する。ブートローダー１０は、起動情報に対応するセクタに記憶されているデータ（起動単位情報）がキャッシュ記憶部２１に記憶されている場合に、キャッシュ記憶部２１が記憶するデータを起動情報として取得する。また、ブートローダー１０は、起動情報に対応するセクタに記憶されているデータがキャッシュ記憶部２１に記憶されていない場合に、仮想ディスク４０が記憶するデータを起動情報として取得する。また、ブートローダー１０は、キャッシュ記憶処理において、仮想ディスク４０からデータを取得した場合に、取得したデータをキャッシュ記憶部２１に記憶させるとともに、キャッシュマップ情報のうちの、取得したデータ（セクタ）に対応するビット情報の値を“１”に変更する。
【００４８】
次に、ブート端末２は、取得したＭＢＲ、ブートセクタ、及びブートマネージャに基づいて、ＯＳ用ドライバを仮想ディスク４０からロードする（ステップＳ１１３）。なお、起動情報は、ＯＳ用ドライバを含み、ブートローダー１０は、ＯＳ用ドライバを仮想ディスク４０から読み込む際に、ステップＳ１１２の処理と同様に、キャッシュ処理を実行する。
【００４９】
なお、図６において、ステップＳ１０９〜ステップＳ１１３までの処理が、ブートローダー１０による処理（ブートローダー処理ＯＰ１）対応し、ステップＳ１０９〜ステップＳ１１２までの処理が、ブートモジュール１１による処理（ブートモジュール処理ＯＰ１１）に対応する。また、ステップＳ１１１〜ステップＳ１１３までの処理が、ｉＳＣＳＩ通信モジュール３０による処理（ｉＳＣＳＩ通信モジュール処理ＯＰ１２）対応する。
ブートモジュール１１にしたがって、
【００５０】
次に、ブート端末２は、読み込んだＯＳ用ドライバにより、ＯＳ及びフィルタドライバを起動し、仮想ディスク４０をマウントし（ステップＳ１１４）、仮想ディスク４０から、ＯＳの各種ファイルを取得し、ＯＳを起動する（ステップＳ１１５）。なお、ステップＳ１１４以降の処理が、ＯＳによる処理（ＯＳ処理ＯＰ２）及びフィルタドライバによる処理（ＯＰ２１）に対応する。フィルタドライバは、ステップＳ１１４以降において、仮想ディスク４０から読み出すデータに対して、キャッシュ処理を実行する。このキャッシュ処理については、後述する。
なお、図６において、期間Ｔ１は、ブートローダー１０によるキャッシュ処理が実行される期間を示し、期間Ｔ２は、フィルタドライバによるキャッシュ処理が実行される期間を示しめしている。
【００５１】
次に、図面を参照して、本実施形態におけるキャッシュ処理について詳細に説明する。
［第１の実施形態］
本実施形態では、ブートローダー１０及びフィルタドライバによる擬似差分キャッシュ処理の一例について説明する。
まず、図７を参照して、ブートローダー１０によるキャッシュ処理について説明する。
＜ブートローダー１０のキャッシュ処理＞
図７は、第１の実施形態におけるブートローダー１０によるデータ取得処理の一例を示すフローチャートである。
【００５２】
図７に示す例は、上述した期間Ｔ１において、ブート端末２が仮想ディスク４０からデータを読み出す場合を示しており、ブートローダー１０は、まず、仮想ディスク４０からＯＳのバージョン情報を取得する（ステップＳ２０１）。ブートローダー１０は、仮想ディスク４０の差分管理領域４２から、上述した「メインバージョン情報」及び「現在バージョン情報」をＯＳのバージョン情報として取得する。なお、「現在バージョン情報」は、現在のサブバージョン情報を示している。
【００５３】
次に、ブートローダー１０は、バージョン情報が更新されているか否かを判定する（ステップＳ２０２）。すなわち、ブートローダー１０は、仮想ディスク４０から取得したＯＳのバージョン情報と、キャッシュ記憶部２１のキャッシュヘッダ領域２１Ａに記憶されているバージョン情報（「メインバージョン情報」及び「サブバージョン情報」）とが一致するか否かを判定する。ブートローダー１０は、バージョン情報が一致する場合（ステップＳ２０２：ＮＯ）に、処理をステップＳ２０３に進め、バージョン情報が一致しない場合（ステップＳ２０２：ＹＥＳ）に、処理をステップＳ２０８に進める。
【００５４】
次に、ステップＳ２０３において、ブートローダー１０は、キャッシュデータかあるか否かを判定する。すなわち、ブートローダー１０は、マップ記憶部２２が記憶するキャッシュマップ情報に基づいて、取得するデータに対応するセクタ単位の情報がキャッシュ記憶部２１に既に記憶されているか否かを、セクタごとに判定する。ブートローダー１０は、セクタ単位の情報がキャッシュ記憶部２１に記憶されていない場合（ステップＳ２０３：ＮＯ）に、処理をステップＳ２０４に進める。また、ブートローダー１０は、セクタ単位の情報がキャッシュ記憶部２１に記憶されている場合（ステップＳ２０３：ＹＥＳ）に、処理をステップＳ２０６に進める。
【００５５】
次に、ステップＳ２０４において、ブートローダー１０は、キャッシュされているデータがないので、セクタ単位の情報を仮想ディスク４０から取得する。そして、ブートローダー１０は、仮想ディスク４０から取得したセクタ単位の情報をキャッシュ記憶部２１のキャッシュブデータロック領域２１Ｂの対応するセクタに記憶させる。
【００５６】
次に、ブートローダー１０は、キャッシュマップ情報を更新する（ステップＳ２０５）。すなわち、ブートローダー１０は、マップ記憶部２２が記憶するキャッシュマップ情報のうちの、取得したセクタ単位の情報に対応するビット情報の値を“１”に変更する。
【００５７】
次に、ブートローダー１０は、次の取得データ（セクタ単位の情報）があるか否かを判定する（ステップＳ２０７）。ブートローダー１０は、次の取得データ（セクタ単位の情報）がある場合（ステップＳ２０７：ＹＥＳ）に、処理をステップＳ２０３に戻し、次の取得データ（セクタ単位の情報）がない場合（ステップＳ２０７：ＮＯ）に、データ取得処理を終了する。
【００５８】
また、ステップＳ２０６において、ブートローダー１０は、キャッシュされているデータがあるので、キャッシュ記憶部２１のキャッシュブデータロック領域２１Ｂからセクタ単位の情報を取得し、処理をステップＳ２０７に進める。
【００５９】
また、ステップＳ２０８において、バージョン情報が更新されているので、ブートローダー１０は、全データを仮想ディスク４０から取得し、データ取得処理を終了する。
【００６０】
まず、図８を参照して、フィルタドライバによるキャッシュ処理について説明する。
＜フィルタドライバのキャッシュ処理＞
図８は、第１の実施形態におけるフィルタドライバによるデータ取得処理の一例を示すフローチャートである。
【００６１】
図８に示す例は、上述した期間Ｔ２において、ブート端末２が仮想ディスク４０からデータを読み出す場合を示しており、フィルタドライバは、まず、仮想ディスク４０からＯＳのバージョン情報を取得する（ステップＳ３０１）。フィルタドライバは、仮想ディスク４０の差分管理領域４２から、上述した「メインバージョン情報」及び「現在バージョン情報」をＯＳのバージョン情報として取得する。なお、「現在バージョン情報」は、現在のサブバージョン情報を示している。
【００６２】
次に、フィルタドライバは、バージョン情報が更新されているか否かを判定する（ステップＳ３０２）。すなわち、フィルタドライバは、仮想ディスク４０から取得したＯＳのバージョン情報と、キャッシュ記憶部２１のキャッシュヘッダ領域２１Ａに記憶されているバージョン情報（「メインバージョン情報」及び「サブバージョン情報」）とが一致するか否かを判定する。フィルタドライバは、バージョン情報が一致する場合（ステップＳ３０２：ＮＯ）に、処理をステップＳ３０３に進め、バージョン情報が一致しない場合（ステップＳ３０２：ＹＥＳ）に、処理をステップＳ３０８に進める。
【００６３】
続く、ステップＳ３０３〜ステップＳ３０７の処理は、データを取得する対象が上述した起動情報を含むＯＳ領域４１全体に拡張され、ブートローダー１０の代わりに、フィルタドライバが実行する点を除いて、図７に示すステップＳ２０３〜ステップＳ２０７の処理と同様であるので、説明を省略する。
【００６４】
また、ステップＳ３０８において、フィルタドライバは、差分マップ情報を取得する。すなわち、フィルタドライバは、「現在バージョン情報」に対応する差分マップ情報を、仮想ディスク４０の差分管理領域４２から取得する。
【００６５】
次に、フィルタドライバは、キャッシュマップ情報をマージする（ステップＳ３０９）。フィルタドライバは、差分マップ情報に基づいて、キャッシュマップ情報を更新する。すなわち、フィルタドライバは、取得した差分マップ情報と、マップ記憶部２２が記憶するキャッシュマップ情報とをマージしたキャッシュマップ情報を生成し、キャッシュマップ情報を更新する。
【００６６】
次に、フィルタドライバは、バージョン情報を変更する（ステップＳ３１０）。すなわち、フィルタドライバは、キャッシュ記憶部２１のキャッシュヘッダ領域２１Ａに記憶されているバージョン情報を、仮想ディスク４０の差分管理領域４２から取得したバージョン情報に変更し、処理をステップＳ３０３に進める。これにより、フィルタドライバは、差分マップに対応したキャッシュマップ情報に基づいて、キャッシュ処理を実行する。
【００６７】
次に、図９〜図１４を参照して、ブートローダー１０及びフィルタドライバによる擬似差分キャッシュ処理の一例について説明する。
図９〜図１１は、第１の実施形態におけるキャッシュ処理の一例を示す図である。
図９〜図１１において、ブート端末２が初期状態からの１回目の起動から３回目の起動までのマップ記憶部２２が記憶するキャッシュマップ情報の遷移を示している。
【００６８】
図９に示す例は、ブート端末２が初期状態からの１回目の起動をする場合のキャッシュマップ情報の遷移を示している。
図９（ａ）は、起動前及び１回目の起動において、ブートローダー１０の処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、ブートローダー１０は、キャッシュマップ情報が存在しないため、全データを仮想ディスク４０から取得する。なお、ブートローダー１０は、データを仮想ディスク４０から取得する際に、キャッシュ記憶処理を実行しない。
【００６９】
次に、図９（ｂ）は、１回目の起動において、フィルタドライバがキャッシュマップ情報を生成した状態を示している。この場合、まだ、フィルタドライバは、データを取得していないため、キャッシュマップ情報のビット情報の値は、全て“０”である。
次に、図９（ｃ）は、１回目の起動において、フィルタドライバの処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、フィルタドライバが取得したデータに対応するビット情報の値が“０”から“１”に遷移している。
【００７０】
なお、図９〜図１３において、キャッシュマップ情報の領域Ｄ１は、ブートローダー１０が仮想ディスク４０から取得するデータの領域を示しており、領域Ｄ２は、フィルタドライバが仮想ディスク４０から取得するデータの領域を示している。
【００７１】
次に、図１０に示す例は、ブート端末２が初期状態からの２回目の起動をする場合のキャッシュマップ情報の遷移を示している。
図１０（ａ）は、２回目の起動前におけるキャッシュマップ情報の状態を示している。なお、領域Ｄ１と領域Ｄ２とでは、共通の領域Ｄ３が存在するため、領域Ｄ１は、ビット情報の値は、“０”と“１”とが混在し、ブートローダー１０は、キャッシュマップ情報に基づいて、仮想ディスク４０、又はキャッシュ記憶部２１からデータを取得する。なお、ブートローダー１０は、データを仮想ディスク４０から取得する際に、キャッシュ記憶処理を実行し、取得したデータに対応するビット情報を“１”に変更する。
【００７２】
次に、図１０（ｂ）は、２回目の起動において、ブートローダー１０の処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、キャッシュマップ情報は、領域Ｄ１のうちの、領域Ｄ３を除くビット情報の値が“０”から“１”に遷移している。
【００７３】
次に、図１０（ｃ）は、２回目の起動において、フィルタドライバの処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、フィルタドライバは、キャッシュ記憶部２１からデータを取得する。
【００７４】
次に、図１１に示す例は、ブート端末２が初期状態からの３回目の起動をする場合のキャッシュマップ情報の遷移を示している。
図１１（ａ）は、３回目の起動前におけるキャッシュマップ情報の状態を示している。なお、領域Ｄ１は、２回目の起動において、すでに仮想ディスク４０からデータが取得されているので、ブートローダー１０は、キャッシュマップ情報に基づいて、キャッシュ記憶部２１からデータを取得する。
【００７５】
次に、図１１（ｂ）は、３回目の起動において、ブートローダー１０の処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、キャッシュマップ情報の状態は、図１１（ａ）と同様の状態となる。
【００７６】
次に、図１１（ｃ）は、３回目の起動において、フィルタドライバの処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、フィルタドライバは、キャッシュ記憶部２１からデータを取得する。
【００７７】
図１２、及び図１３は、第１の実施形態におけるキャッシュ処理の別の一例を示す図である。
図１２、及び図１３において、ＯＳのメンテナンスが実行され、バージョン情報が更新された場合におけるブート端末２の１回目の起動と２回目の起動とのキャッシュマップ情報の遷移を示している。なお、図１２、及び図１３において、領域Ｄ１と領域Ｄ２とは、図９〜図１３と同様である。
【００７８】
図１２に示す例は、バージョン情報が更新された場合において、ブート端末２が１回目の起動をする場合のキャッシュマップ情報の遷移を示している。
図１２（ａ）は、仮想ディスク４０（差分管理領域４２）が記憶するバージョン情報及び差分マップ情報の状態を示している。図１２（ａ）に示す例では、仮想ディスク４０が記憶するバージョン情報が「Ｒｅｖ２」である。
【００７９】
また、図１２（ｂ）は、ＯＳのメンテナンス後の１回目の起動前において、ブート端末２が最後に起動したバージョン情報、及びキャッシュマップ情報の状態を示している。
図１２（ｂ）に示す例では、ブート端末２が最後に起動したバージョン情報が「Ｒｅｖ１」である。
【００８０】
次に、図１２（ｃ）は、ＯＳのメンテナンス後の１回目の起動において、ブートローダー１０の処理が終了した場合のキャッシュマップ情報の状態を示している。ブートローダー１０は、ＯＳのバージョン情報が更新されているため、全データを仮想ディスク４０から取得する。なお、ブートローダー１０は、データを仮想ディスク４０から取得する際に、キャッシュ記憶処理を実行しない。
【００８１】
次に、図１２（ｄ）は、ＯＳのメンテナンス後の１回目の起動において、フィルタドライバがキャッシュマップ情報を更新した状態を示している。この場合、差分マップ情報とキャッシュマップ情報とをマージして、キャッシュマップ情報を更新する。また、フィルタドライバは、キャッシュ記憶部２１のキャッシュヘッダ領域２１Ａに記憶されているバージョン情報を、仮想ディスク４０の差分管理領域４２から取得したバージョン情報に変更する。図１２（ｄ）に示す例では、バージョン情報が「Ｒｅｖ１」から「Ｒｅｖ２」に遷移しており、キャッシュマップ情報が差分マップ情報を考慮した状態に遷移している。
【００８２】
次に、図１２（ｅ）は、ＯＳのメンテナンス後の１回目の起動において、フィルタドライバの処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、フィルタドライバが取得したデータに対応するビット情報の値が“０”から“１”に遷移している。
【００８３】
また、図１３（ａ）は、ＯＳのメンテナンス後の２回目の起動前におけるキャッシュマップ情報の状態を示している。ブートローダー１０は、キャッシュマップ情報に基づいて、仮想ディスク４０、又はキャッシュ記憶部２１からデータを取得する。なお、ブートローダー１０は、データを仮想ディスク４０から取得する際に、キャッシュ記憶処理を実行し、取得したデータに対応するビット情報を“１”に変更する。
【００８４】
次に、図１３（ｂ）は、ＯＳのメンテナンス後の２回目の起動において、ブートローダー１０の処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、キャッシュマップ情報は、領域Ｄ１のうちの、領域Ｄ２と共通でないビット情報の値が“０”から“１”に遷移している。
【００８５】
次に、図１３（ｃ）は、ＯＳのメンテナンス後の２回目の起動において、フィルタドライバの処理が終了した場合のキャッシュマップ情報の状態を示している。この場合、フィルタドライバは、キャッシュ記憶部２１からデータを取得する。
なお、ＯＳのメンテナンス後の３回目の起動は、図１１に示す場合と同様であるので、ここでは説明を省略する。
【００８６】
次に、図１４を参照して、フィルタドライバによるキャッシュマップ情報の更新処理について説明する。
図１４は、第１の実施形態におけるキャッシュマップ情報のマージ処理の一例を示す図である。
【００８７】
図１４（ａ）は、「Ｒｅｖ１」のキャッシュマップ情報を示している。
フィルタドライバは、図１４（ａ）に示すキャッシュマップ情報を反転して、図１４（ｂ）に示す反転キャッシュマップ情報を生成する。
次に、フィルタドライバは、図１４（ｂ）に示す反転キャッシュマップ情報と、図１４（ｃ）に示す「Ｒｅｖ２」の差分マップ情報との論理和演算を行い、図１４（ｄ）に示す、更新後の反転キャッシュマップ情報を生成する。
次に、フィルタドライバは、図１４（ｄ）に示す更新後の反転キャッシュマップ情報を反転して、図１４（ｅ）に示す更新後のキャッシュマップ情報を生成する。
なお、フィルタドライバは、複数回のバージョン変更に対応する場合は、複数の差分マップ情報との論理和演算を行う。
【００８８】
フィルタドライバは、差分マップ情報に基づいて、キャッシュマップ情報（ＶｅｒＮ）からキャッシュマップ情報（ＶｅｒＭ）に更新する場合には、下記の式（１）により、キャッシュマップ情報をマージする。
【００８９】
キャッシュマップ情報（ＶｅｒＭ）＝
ＮＯＴ（ＮＯＴ（キャッシュマップ情報（ＶｅｒＮ））  ＯＲ
差分マップ情報（ＶｅｒＮ＋１）  ＯＲ
差分マップ情報（ＶｅｒＮ＋２）  ＯＲ  ・・・
差分マップ情報（ＶｅｒＭ））  ・・・  （１）
【００９０】
以上説明したように、本実施形態におけるブートサーバ３（サーバ装置）は、記憶装置４から読み出した情報を記憶するキャッシュ記憶部２１を備えるブート端末２（端末装置）とネットワーク５を介して接続される。ブートサーバ３は、ブート端末２からの要求に応じて、ブート端末２にブートローダー１０を供給する。ブートローダー１０は、記憶装置４を仮想ディスク４０として接続して通信するとともに、ＯＳをブート端末２に読み込むための情報を示す起動情報を取得する取得処理と、キャッシュ記憶処理と、ＯＳを起動する起動処理とをブート端末２に実行させる。ここで、起動情報は、例えば、ＭＢＲ、ブートセクタ、ブートマネージャなどの情報、及びＯＳ用のドライバであり、フィルタドライバも含まれる。また、ブートローダー１０は、取得処理として、キャッシュ記憶部２１に起動情報が記憶されている場合に、キャッシュ記憶部２１から起動情報を取得し、キャッシュ記憶部２１に起動情報が記憶されていない場合に、仮想ディスク４０から起動情報を取得する。また、ブートローダー１０は、キャッシュ記憶処理として、仮想ディスク４０から起動情報を取得した場合に、取得した起動情報をキャッシュ記憶部２１に記憶させる。そして、ブートローダー１０は、起動処理として、起動情報に基づいて、仮想ディスク４０からＯＳをブート端末２に読み込んで、ＯＳを起動する。
また、本実施形態におけるネットワークブートシステム１は、ブート端末２からの要求に応じて、ブート端末２にブートローダー１０を供給するブートサーバ３を備えている。
【００９１】
これにより、キャッシュ記憶部２１に起動情報が記憶されている場合に、ブート端末２は、キャッシュ記憶部２１から起動情報を取得するので、ブートサーバ３は、ブート端末２がＯＳを起動する際に、ネットワーク５の負荷を低減（軽減）することができる。そのため、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、ネットワークブートにおけるＯＳの起動時間を低減することができる。
例えば、複数台のブート端末２が起動する場合であっても、ブート端末２が起動する際に毎回、ＯＳを読み込む必要がなくなるため、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、ネットワーク５の負荷を低減して、ＯＳの起動時間を低減することができる。
【００９２】
また、本実施形態において、ブートローダー１０は、取得処理において、キャッシュマップ情報に基づいて、起動情報に対応するセクタごとに判定する。ここで、キャッシュマップ情報は、キャッシュ記憶部２１に起動情報が記憶されているか否かを、仮想ディスク４０が起動情報を記憶している領域が有する複数のセクタ（単位領域）それぞれに対して示す情報である。ブートローダー１０は、起動情報に対応するセクタに記憶されている情報を示すセクタ単位の情報（起動単位情報）がキャッシュ記憶部２１に記憶されている場合に、キャッシュ記憶部２１が記憶するセクタ単位の情報を起動情報として取得する。また、ブートローダー１０は、セクタ単位の情報がキャッシュ記憶部２１に記憶されていない場合に、仮想ディスク４０が記憶するセクタ単位の情報を起動情報として取得する。そして、ブートローダー１０は、キャッシュ記憶処理において、仮想ディスク４０からセクタ単位の情報を取得した場合に、取得したセクタ単位の情報をキャッシュ記憶部２１に記憶させるとともに、キャッシュマップ情報のうちの、取得したセクタ単位の情報に対応する情報を変更する。
これにより、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、起動情報をセクタ単位で、キャッシュ記憶部２１から取得できるので、起動情報の一部分がキャッシュ記憶部２１に記憶されている場合であっても、ネットワーク５の負荷を低減（軽減）することができる。
【００９３】
また、本実施形態において、ブート端末２は、マップ記憶部２２を備えている。マップ記憶部２２は、仮想ディスク４０がＯＳを記憶しているＯＳ領域４１に対応し、ＯＳ領域４１に記憶されている情報がキャッシュ記憶部２１に記憶されているか否かを、ＯＳ領域４１が有する複数のセクタそれぞれに対して示すキャッシュマップ情報を記憶する。また、ブートローダー１０は、起動処理において、ＯＳを仮想ディスク４０から読み込むフィルタドライバを起動情報として取得する処理を含む。フィルタドライバは、キャッシュマップ情報に基づいて、ＯＳに対応するセクタに記憶されている情報を示すセクタ単位のデータ（システム単位情報）がキャッシュ記憶部２１に記憶されているか否かを判定する処理をブート端末２に実行させる。フィルタドライバは、セクタ単位のデータがキャッシュ記憶部２１に記憶されていると判定した場合に、キャッシュ記憶部２１が記憶するセクタ単位のデータをＯＳとして読み込む処理をブート端末２に実行させる。フィルタドライバは、セクタ単位のデータがキャッシュ記憶部２１に記憶されていないと判定した場合に、仮想ディスク４０が記憶するセクタ単位のデータをＯＳとして取得する処理をブート端末２に実行させる。そして、フィルタドライバは、仮想ディスク４０からセクタ単位のデータを読み込んだ場合に、読み込んだセクタ単位のデータをキャッシュ記憶部２１に記憶させるとともに、キャッシュマップ情報のうちの、取得したセクタ単位のデータに対応する情報を変更する処理をブート端末２に実行させる。
【００９４】
これにより、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、ブートローダー１０による起動情報の読み込みの他に、フィルタドライバが起動された後のＯＳの読み込みについても、ネットワーク５の負荷を低減（軽減）することができる。
【００９５】
また、本実施形態において、仮想ディスク４０は、セクタに記憶されている情報が更新されたか否かを示す差分マップ情報とＯＳのバージョンを示すバージョン識別情報とを関連付けて記憶している。また、ＯＳ領域は、起動情報を記憶している領域を含む。ブートローダー１０は、取得処理において、差分マップ情報とバージョン識別情報とを仮想ディスク４０から取得し、取得したバージョン識別情報に基づいて、ＯＳが更新されているか否かを判定し、ＯＳが更新されていると判定した場合には、仮想ディスク４０が記憶する起動情報を取得する。そして、フィルタドライバは、ＯＳが更新されていると判定された場合に、差分マップ情報に基づいて、キャッシュマップ情報を更新し、更新したキャッシュマップ情報に基づいて、ＯＳを仮想ディスク４０から読み込む。
これにより、ＯＳのバージョンが更新（変更）された場合に、差分データを仮想ディスク４０から取得することが可能になるので、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、ＯＳのバージョンが更新（変更）された場合であっても、ネットワーク５の負荷を低減（軽減）することができる。
なお、本実施形態では、ブートローダー１０が差分マップ情報に基づくキャッシュマップ情報の更新処理を行わないので、ブートローダー１０が使用するハード資産（例えば、ＲＡＭ容量）を低減することができる。
【００９６】
なお、本実施形態において、キャッシュ処理をＯＳのバージョンを差分マップ情報に対応する例を説明したが、ブート端末２のキャッシュヘッダ領域２１Ａが記憶するバージョン情報と、仮想ディスク４０が記憶するＯＳの「メインバージョン情報」と「現在バージョン情報」との比較結果によって、下記の４つの場合が考えられる。
【００９７】
＜ケース１：ブート端末２が既に最新のバージョンを読み込んでいる場合＞
仮想ディスク４０が記憶するＯＳの「メインバージョン情報」及び「現在バージョン情報」と、キャッシュヘッダ領域２１Ａが記憶する「メインバージョン情報」及び「サブバージョン情報」とが、完全に一致している場合が、このケースである。
この場合は、ブートローダー１０及びフィルタドライバは、キャッシュマップ情報に基づいて、仮想ディスク４０、又はキャッシュ記憶部２１からデータを取得する。
【００９８】
＜ケース２：ブート端末２が最後に起動したバージョンを、仮想ディスク４０が保持していない場合＞
「メインバージョン情報」は一致しているが、「サブバージョン情報」が、仮想ディスク４０が記憶する複数の「サブバーション情報」のいずれにも一致していない場合が、このケースである。
この場合、ブートローダー１０及びフィルタドライバは、キャッシュマップの全ビット情報の値を“０”に変更した上で、データの取得を行う。また、フィルタドライバは、キャッシュヘッダ領域２１Ａの「サブバージョン情報」を「現在バージョン情報」に変更する。
【００９９】
＜ケース３：ブート端末２がキャッシュしていない場合＞
「メインバージョン情報」及び「サブバージョン情報」の両方に一致するものがない場合がこのケースである。
この場合、ブートローダー１０及びフィルタドライバは、キャッシュマップの全ビット情報の値を“０”に変更した上で、データの取得を行う。また、フィルタドライバは、キャッシュヘッダ領域２１Ａの「メインバージョン情報」及び「サブバージョン情報」を仮想ディスク４０の「メインバージョン情報」及び「現在バージョン情報」に変更する。
【０１００】
＜ケース４：ブート端末２が古いバージョンをキャッシュしている場合＞
「メインバージョン情報」は一致しているが、「サブバージョン情報」が、仮想ディスク４０が記憶する古い「サブバーション情報」に一致している場合が、このケースである。
この場合、ブートローダー１０及びフィルタドライバは、差分マップ情報に基づいてキャッシュマップ情報を更新して、更新したキャッシュマップ情報に基づいて、仮想ディスク４０、又はキャッシュ記憶部２１からデータを取得する。また、フィルタドライバは、キャッシュヘッダ領域２１Ａの「サブバージョン情報」を「現在バージョン情報」に変更する。
【０１０１】
次に、図面を参照して、第２の実施形態におけるキャッシュ処理について詳細に説明する。
［第２の実施形態］
本実施形態では、ブートローダー１０が、差分キャッシュ処理を行わない場合の一例について説明する。
まず、図１５を参照して、ブートローダー１０によるキャッシュ処理について説明する。
図１５は、第２の実施形態におけるブートローダー１０によるデータ取得処理の一例を示すフローチャートである。
【０１０２】
この図において、ステップＳ４０１〜ステップＳ４０７の処理は、図７に示す第１の実施形態におけるステップＳ２０１〜ステップＳ２０７の処理と同様であるので、説明を省略する。
ステップＳ４０８において、バージョン情報が更新されているので、本実施形態におけるブートローダー１０は、キャッシュマップ情報をクリアする。すなわち、ブートローダー１０は、キャッシュマップ情報の全ビット情報を“０”に変更する。
【０１０３】
次に、ブートローダー１０は、全データを仮想ディスク４０から取得する（ステップＳ４０９）。そして、ブートローダー１０は、仮想ディスク４０から取得したセクタ単位の情報をキャッシュ記憶部２１のキャッシュブデータロック領域２１Ｂの対応するセクタに記憶させる。
次に、ブートローダー１０は、マップ記憶部２２が記憶するキャッシュマップ情報のうちの、取得したセクタ単位の情報に対応するビット情報の値を“１”に変更し（ステップＳ４１０）、処理を終了する。
【０１０４】
なお、フィルタドライバによるキャッシュ処理についても、ブートローダー１０の第１の実施形態と同様に差分キャッシュ処理に対応させてもよいし、図１５に示すブートローダー１０と同様の処理を実行して、差分キャッシュ処理に対応させなくてもよい。
【０１０５】
以上説明したように、本実施形態におけるブートローダー１０は、バージョン情報が更新されている場合に、キャッシュマップ情報の全ビット情報を“０”に変更して、全データを仮想ディスク４０から取得する。
これにより、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、差分データに基づいてキャッシュマップ情報をマージする必要がないので、簡易な手段によりＯＳのバージョン変更に対応させることができる。
【０１０６】
次に、図面を参照して、第３の実施形態におけるキャッシュ処理について詳細に説明する。
［第３の実施形態］
本実施形態では、ブートローダー１０が、フィルタドライバと同様の差分キャッシュ処理を行う場合の一例について説明する。
まず、図１６を参照して、ブートローダー１０によるキャッシュ処理について説明する。
図１６は、第３の実施形態におけるブートローダー１０によるデータ取得処理の一例を示すフローチャートである。
【０１０７】
この図において、ステップＳ５０１〜ステップＳ５０７の処理は、図７に示す第１の実施形態におけるステップＳ２０１〜ステップＳ２０７の処理と同様であるので、説明を省略する。
また、ステップＳ５０８〜ステップＳ５１０の処理は、図８に示すフィルタドライバによるステップＳ３０８〜ステップＳ３１０の処理と同様である。
【０１０８】
以上説明したように、本実施形態におけるブートローダー１０は、バージョン情報が更新されている場合に、フィルタドライバと同様に、取得した差分マップ情報と、マップ記憶部２２が記憶するキャッシュマップ情報とをマージしたキャッシュマップ情報を生成し、キャッシュマップ情報を更新する。
これにより、ＯＳのバージョンが更新（変更）された場合に、差分データを仮想ディスク４０から取得することが可能になるので、本実施形態におけるブートサーバ３及びネットワークブートシステム１は、ＯＳのバージョンが更新（変更）された場合であっても、ネットワーク５の負荷を低減（軽減）することができる。
【０１０９】
なお、本発明は、上記の各実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更可能である。
例えば、上記の各実施形態において、キャッシュマップ情報は、ブートローダー１０とフィルタドライバとで共通の情報として説明したが、ブートローダー１０とフィルタドライバとが、異なるキャッシュマップ情報を利用する形態であってもよい。
また、上記の各実施形態において、キャッシュマップ情報を記憶するマップ記憶部２２をローカルディスク２０に備える場合について説明したが、ネットワーク５を介して接続された外部のサーバ装置がマップ記憶部２２を備えてもよい。なお、この場合、ブート端末２内のＲＡＭなどの物理メモリに、外部のサーバ装置からキャッシュマップ情報を読み出して利用してもよい。
【０１１０】
また、上記の各実施形態において、ブートサーバ３は、ＤＨＣＰサーバ３１、ＰＸＥサーバ３２、及びＴＦＴＰサーバ３３を備える場合について説明したが、それぞれを個別のサーバ装置として構成してもよい。
また、上記の各実施形態において、ｉＳＣＳＩ通信インターフェースを用いて、仮想ディスク４０を実現する場合について説明したが、これに限定されるものではなく、ネットワーク５を介して仮想記憶装置が実現できるインターフェース方式であれば、他のインターフェース方式であってもよい。
【０１１１】
なお、本発明におけるブート端末２、又はブートサーバ３の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したブート端末２、又はブートサーバ３における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやＷＡＮ、ＬＡＮ、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、ＣＤ−ＲＯＭ等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後にブート端末２、又はブートサーバ３で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【０１１２】
また、上述した機能の一部または全部を、ＬＳＩ（Large Scale Integration）等の集積回路として実現してもよい。上述した各機能は個別にプロセッサ化してもよいし、一部、または全部を集積してプロセッサ化してもよい。また、集積回路化の手法はＬＳＩに限らず専用回路、または汎用プロセッサで実現してもよい。また、半導体技術の進歩によりＬＳＩに代替する集積回路化の技術が出現した場合、当該技術による集積回路を用いてもよい。
【符号の説明】
【０１１３】
１  ネットワークブートシステム
２  ブート端末
３  ブートサーバ
４  記憶装置
５  ネットワーク
１０  ブートローダー
１１  ブートモジュール
１２  キャッシュモジュール
１３  仮想ディスクモジュール
２０  ローカルディスク
２１  キャッシュ記憶部
２２  マップ記憶部
３０  ｉＳＣＳＩ通信モジュール
３１  ＤＨＣＰサーバ
３２  ＰＸＥサーバ
３３  ＴＦＴＰサーバ
３４  ＢＬ供給部
４０  仮想ディスク
４１  ＯＳ領域
４２  差分管理領域
【図１】
2014182706.tif 000003
【図２】
2014182706.tif 000004
【図３】
2014182706.tif 000005
【図４】
2014182706.tif 000006
【図５】
2014182706.tif 000007
【図６】
2014182706.tif 000008
【図７】
2014182706.tif 000009
【図８】
2014182706.tif 000010
【図９】
2014182706.tif 000011
【図１０】
2014182706.tif 000012
【図１１】
2014182706.tif 000013
【図１２】
2014182706.tif 000014
【図１３】
2014182706.tif 000015
【図１４】
2014182706.tif 000016
【図１５】
2014182706.tif 000017
【図１６】
2014182706.tif 000018